Skip to content

chore(spec): retire the hand-written config-schema.json, whose generated replacement already exists - #7507

Merged
os-help merged 1 commit into
mainfrom
claude/issue-7437-retire-config-schema-json
Aug 11, 2026
Merged

chore(spec): retire the hand-written config-schema.json, whose generated replacement already exists#7507
os-help merged 1 commit into
mainfrom
claude/issue-7437-retire-config-schema-json

Conversation

@os-help

@os-help os-help commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Fixes #7437

Deletes packages/spec/config-schema.json, per the maintainer ruling of 2026-08-11 (option A on the card; B — regenerate + gate — and C — hand-align — are settled and closed). The whole diff is one deletion, 279 lines. No enum was aligned on the way out.

Why delete rather than fix

The artifact was hand-written while claiming, in its own top-level description, to be "Generated from ObjectStackDefinitionSchema". That false provenance is plausibly why nobody re-derived it as the vocabularies moved — it reads as already-generated. Nothing guarded it, so it drifted on every enum it carried (ownership, fixed by #7436; 6 phantom field types; a hidden SeedMode member), and its $id is still pinned at v3.0.0 while the spec is v17.

The correct routes already exist, and both are drift-proof by construction:

Route Path Guarded by
Config schema for IDE autocomplete objectstack generate schemapackages/cli/src/commands/generate.ts:817-865, built live from ObjectStackDefinitionSchema via z.toJSONSchema cannot drift — derived at run time
Published per-schema JSON Schemas packages/spec/json-schema/**, generated by packages/spec/scripts/build-schemas.ts check:generated
This artifact (deleted) packages/spec/config-schema.json, hand-written nothing — check:generated has 0 hits for it

The delete lands and stays landed — measured before deleting

This lane's #7303 was a ruled delete that could not land because a generator recreated the file, so all three mechanism checks were re-run here rather than assumed:

Check Command Reading
Routed merge=os-regen? git check-attr -a packages/spec/config-schema.json no — empty output. Positive control: the same command on packages/spec/spec-changes.json prints merge: os-regen
Any generator writes this path? exact-filename git grep -F 'config-schema.json' no — 3 hits, all prose (below). The apparent hit at scripts/docs-audit/affected-docs.mjs:324 is config-schemas.test.ts (plural, service-automation) — a substring false positive, excluded by searching the exact filename
Shipped? npm pack --dry-run --ignore-scripts no — see the A/B below

Also ruled out: nothing serves the file at its declared $id host. The 7 repo mentions of schema.objectstack.io are the CLI's live $id, build-schemas.ts's generated $id base, this file, and release history — no deploy step copies this path anywhere public.

Unshipped, proven from the packing side

Not trusting the files list — one fixed post-build tree, with only the file toggling:

WITHOUT (HEAD, file deleted):  entryCount=2030   config-schema matches=0
WITH    (file restored)     :  entryCount=2030   config-schema matches=0
diff of the two packed file lists → identical

Same count, same 2030 paths, both times zero matching config-schema. No npm consumer can observe this removal.

The ruling's "prose mentions" clause has no referent — nothing else was touched

The ruling says "Remove the artifact plus its prose mentions; point any doc that referenced it at the generate command." Searched with the exact filename (not the config-schema substring that produces the false positive above), the complete set of surviving mentions repo-wide is three, and none is a pointer telling an author to read or fetch the file:

  1. .changeset/http-server-config-retired.md:18 — a pending changeset, i.e. an unreleased release note
  2. packages/spec/CHANGELOG.md:9179 — the same sentence, already published history
  3. packages/spec/src/system/http-server.zod.ts:34 — a code comment narrating a past defect

All three are statements about the past that remain true once the file is gone. Rewriting (1) or (2) would falsify a release record; (3) is a true historical sentence, not a reference. All three are left byte-identical.

An independent sweep for a doc that steers authors at a config JSON Schema found content/docs/api/data-flow.mdx:202, which already says "Autocomplete and validation for objectstack.config.ts (via os generate schema)" — it names the generate command and never names this file. The ruling's intended destination is therefore already in place, and no doc needed repointing.

Verification

Since nothing consumes the artifact, "CI is green" proves little here — so the evidence is direct:

  • File is gonegit rm, ls reports no such file; commit shows 1 file changed, 279 deletions(-).
  • Exact-filename sweep after the delete returns exactly the three historical mentions above. Positive controls proving the scanner is not blind: ObjectStackDefinitionSchema returns 53 hits in packages/spec/src; and the artifact's own unique string https://schema.objectstack.io/v3.0.0/objectstack.config.json went from 1 hit to 0 across the same delete.
  • pnpm --filter @objectstack/spec build — green (exit 0).
  • pnpm --filter @objectstack/spec test — green (exit 0) — 374 test files / 9802 tests passed.
  • npm pack A/B — above.

No changeset — the precedent is this same file

The artifact is unshipped, so no npm consumer can observe its removal. The governing precedent is PR #7436, merged 2026-08-10, which edited this exact file, measured it unshipped with npm pack --dry-run, and shipped under the skip-changeset label with no changeset. This PR is the same file, the same measurement, and a strictly smaller consumer surface (removal of something nobody could reach), so it follows that disposition.

⛔ The label is deliberately not applied by this PR — the dispatching PM seat applies skip-changeset at accept time.


Generated by Claude Code

…ted replacement already exists (#7437)

`packages/spec/config-schema.json` was hand-written while claiming, in its own
top-level `description`, to be "Generated from ObjectStackDefinitionSchema".
That false provenance is plausibly why nobody re-derived it as the vocabularies
moved: it reads as already-generated. Nothing guarded it — no pin test, no
gate, no consumer — so it drifted on every enum it carried (#7286 fixed one
entry; 6 phantom field types and a hidden `SeedMode` member remained), and its
`$id` is still pinned at `v3.0.0` while the spec is v17.

Deleted rather than realigned or gated, per the maintainer ruling of
2026-08-11: the correct generated route already exists. `objectstack generate
schema` (`packages/cli/src/commands/generate.ts:817-865`) builds this exact
schema live from `ObjectStackDefinitionSchema` via `z.toJSONSchema`, so it
cannot drift by construction, and `content/docs/api/data-flow.mdx:202` already
points authors at it. The published per-schema route, `packages/spec/json-schema/**`,
is generated by `packages/spec/scripts/build-schemas.ts` and gated by
`check:generated`; this artifact was a stale sibling of neither.

Nothing regenerates the path (absent from `.gitattributes`, so not routed
`merge=os-regen`; no generator writes it) and nothing ships it (absent from the
package's `files` list — `npm pack --dry-run` packs zero entries matching it),
so the delete lands and stays landed.

The three surviving mentions of the filename are left untouched by design: a
pending changeset, the same sentence in published `CHANGELOG.md`, and a code
comment in `http-server.zod.ts` narrating a past defect. All three are
statements about the past that remain true once the file is gone; rewriting the
first two would falsify a release record.

No changeset: the artifact is unshipped, so no npm consumer can observe its
removal. Same measurement and same disposition as PR #7436, which edited this
file under the `skip-changeset` label.
@vercel

vercel Bot commented Aug 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 11, 2026 4:10am

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

106 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx (via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx (via @objectstack/spec)
  • content/docs/ai/skills.mdx (via @objectstack/spec)
  • content/docs/api/client-sdk.mdx (via @objectstack/spec)
  • content/docs/api/environment-routing.mdx (via @objectstack/spec)
  • content/docs/api/error-catalog.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-client.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx (via @objectstack/spec)
  • content/docs/api/index.mdx (via @objectstack/spec)
  • content/docs/automation/approvals.mdx (via @objectstack/spec)
  • content/docs/automation/connectors.mdx (via @objectstack/spec)
  • content/docs/automation/flows.mdx (via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx (via packages/spec)
  • content/docs/automation/hooks.mdx (via @objectstack/spec)
  • content/docs/automation/index.mdx (via @objectstack/spec)
  • content/docs/automation/webhooks.mdx (via @objectstack/spec)
  • content/docs/automation/workflows.mdx (via @objectstack/spec)
  • content/docs/concepts/architecture.mdx (via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx (via packages/spec)
  • content/docs/concepts/index.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx (via packages/spec)
  • content/docs/concepts/north-star.mdx (via @objectstack/spec)
  • content/docs/data-modeling/analytics.mdx (via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx (via @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx (via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx (via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx (via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx (via @objectstack/spec)
  • content/docs/data-modeling/index.mdx (via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx (via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx (via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx (via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx (via @objectstack/spec)
  • content/docs/deployment/cli.mdx (via @objectstack/spec)
  • content/docs/deployment/tenancy-modes.mdx (via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx (via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx (via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx (via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx (via @objectstack/spec)
  • content/docs/getting-started/examples.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx (via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx (via @objectstack/spec)
  • content/docs/kernel/cluster.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx (via @objectstack/spec)
  • content/docs/kernel/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/data-service.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/email-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/examples.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx (via @objectstack/spec)
  • content/docs/kernel/services-checklist.mdx (via @objectstack/spec)
  • content/docs/kernel/services.mdx (via @objectstack/spec)
  • content/docs/permissions/authorization.mdx (via @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx (via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx (via @objectstack/spec)
  • content/docs/permissions/positions.mdx (via @objectstack/spec)
  • content/docs/permissions/rls.mdx (via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx (via @objectstack/spec)
  • content/docs/permissions/system-context.mdx (via packages/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx (via @objectstack/spec)
  • content/docs/plugins/development.mdx (via @objectstack/spec)
  • content/docs/plugins/index.mdx (via @objectstack/spec)
  • content/docs/plugins/packages.mdx (via @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx (via @objectstack/spec)
  • content/docs/protocol/diagram.mdx (via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/http-protocol.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx (via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx (via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx (via @objectstack/spec)
  • content/docs/ui/actions.mdx (via @objectstack/spec)
  • content/docs/ui/apps.mdx (via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx (via @objectstack/spec)
  • content/docs/ui/dashboards.mdx (via @objectstack/spec)
  • content/docs/ui/field-grouping-and-order.mdx (via @objectstack/spec)
  • content/docs/ui/forms.mdx (via @objectstack/spec)
  • content/docs/ui/index.mdx (via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx (via @objectstack/spec)
  • content/docs/ui/setup-app.mdx (via @objectstack/spec)
  • content/docs/ui/translations.mdx (via @objectstack/spec)
  • content/docs/ui/views.mdx (via @objectstack/spec)

7 release-owned page(s) also reference the affected code. These are read-only:

  • content/docs/releases/implementation-status.mdx (via @objectstack/spec)
  • content/docs/releases/index.mdx (via @objectstack/spec)
  • content/docs/releases/v12.mdx (via @objectstack/spec)
  • content/docs/releases/v13.mdx (via @objectstack/spec)
  • content/docs/releases/v16.mdx (via @objectstack/spec)
  • content/docs/releases/v17.mdx (via @objectstack/spec)
  • content/docs/releases/v9.mdx (via @objectstack/spec)

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

os-help commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator Author

Check Changeset is red, and this is the expected red — it needs a label I am not permitted to apply.

The gate's own message is the whole diagnosis, with no second cause in the log:

This PR adds no changeset. If it releases nothing … apply the skip-changeset label; otherwise run pnpm changeset and name the packages.

This PR releases nothing. The deleted artifact was never shipped, measured from the packing side rather than from the files list — one fixed post-build tree with only the file toggling:

WITHOUT (HEAD, file deleted):  entryCount=2030   config-schema matches=0
WITH    (file restored)     :  entryCount=2030   config-schema matches=0
diff of the two sorted packed-file lists → empty

The published tarball is identical either way, so no npm consumer can observe the removal. The precedent is this same file: PR #7436 edited packages/spec/config-schema.json, took the same npm pack measurement, and merged with no changeset under skip-changeset.

Why I am not fixing it myself: the dispatch for #7437 reserves label application to the PM seat (⛔ Do not apply any label yourself — the PM applies skip-changeset at accept time if that is the answer), which overrides the standing os-dev guidance to self-apply. Writing an empty changeset is not an alternative — the gate rejects newly added ones (#5471), and a real one would announce a removal nobody can see.

So this job stays red until skip-changeset lands, and nothing on my side changes that. Every other gate is unaffected by this failure; local evidence is pnpm --filter @objectstack/spec build exit 0 and the spec suite at 374 files / 9802 tests passed. Full report: #7437 (comment 5248896486).


Generated by Claude Code


Generated by Claude Code

@os-help os-help added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed size/m labels Aug 11, 2026 — with Claude
@os-help
os-help marked this pull request as ready for review August 11, 2026 04:36
@os-help
os-help added this pull request to the merge queue Aug 11, 2026
Merged via the queue into main with commit 1530870 Aug 11, 2026
32 of 33 checks passed
@os-help
os-help deleted the claude/issue-7437-retire-config-schema-json branch August 11, 2026 04:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[finding] packages/spec/config-schema.json is unguarded and has drifted from the acceptance faces on its two remaining enums (6 phantom field types)

2 participants