chore(spec): retire the hand-written config-schema.json, whose generated replacement already exists - #7507
Conversation
…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.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
📓 Docs Drift CheckThis PR changes 1 package(s): 106 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
⛔ 7 release-owned page(s) also reference the affected code. These are read-only:
|
|
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 releases nothing. The deleted artifact was never shipped, measured from the packing side rather than from the The published tarball is identical either way, so no npm consumer can observe the removal. The precedent is this same file: PR #7436 edited Why I am not fixing it myself: the dispatch for #7437 reserves label application to the PM seat ( So this job stays red until Generated by Claude Code Generated by Claude Code |
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 hiddenSeedModemember), and its$idis still pinned atv3.0.0while the spec is v17.The correct routes already exist, and both are drift-proof by construction:
objectstack generate schema—packages/cli/src/commands/generate.ts:817-865, built live fromObjectStackDefinitionSchemaviaz.toJSONSchemapackages/spec/json-schema/**, generated bypackages/spec/scripts/build-schemas.tscheck:generatedpackages/spec/config-schema.json, hand-writtencheck:generatedhas 0 hits for itThe 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:
merge=os-regen?git check-attr -a packages/spec/config-schema.jsonpackages/spec/spec-changes.jsonprintsmerge: os-regengit grep -F 'config-schema.json'scripts/docs-audit/affected-docs.mjs:324isconfig-schemas.test.ts(plural,service-automation) — a substring false positive, excluded by searching the exact filenamenpm pack --dry-run --ignore-scriptsAlso ruled out: nothing serves the file at its declared
$idhost. The 7 repo mentions ofschema.objectstack.ioare the CLI's live$id,build-schemas.ts's generated$idbase, this file, and release history — no deploy step copies this path anywhere public.Unshipped, proven from the packing side
Not trusting the
fileslist — one fixed post-build tree, with only the file toggling: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-schemasubstring 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:.changeset/http-server-config-retired.md:18— a pending changeset, i.e. an unreleased release notepackages/spec/CHANGELOG.md:9179— the same sentence, already published historypackages/spec/src/system/http-server.zod.ts:34— a code comment narrating a past defectAll 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 forobjectstack.config.ts(viaos 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:
git rm,lsreports no such file; commit shows1 file changed, 279 deletions(-).ObjectStackDefinitionSchemareturns 53 hits inpackages/spec/src; and the artifact's own unique stringhttps://schema.objectstack.io/v3.0.0/objectstack.config.jsonwent 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 packA/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 theskip-changesetlabel 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-changesetat accept time.Generated by Claude Code