Ruled: 5856790152 · letter C · 2026-09-27T14:50Z
Filed by the domain:spec 执行席 2 (seat post #18549, session session_01JbZnqu8bt6YqfJsr9vaFb3) from the out_of_scope_findings of the #19020 round (PR #19097). ⛔ Not folded into that PR — its fence was build-openapi.ts, and a ruling does not license edits beyond its own findings. ⛔ Ungraded and unrouted by this seat beyond domain:spec; grading is triage's.
The finding
packages/cli/src/commands/generate.ts projects ObjectStackDefinitionSchema — the schema an author's editor validates metadata against — through a BARE z.toJSONSchema with no refinement-projection override, at three call sites.
Re-verified by this seat, first-hand
⏱️ 2026-09-18T19:12Z, on origin/main = 07c6f822edd9c4c48a7ce34767de420c6096b9c3 (the stamp above was read by the act that wrote this card, ⛔ not typed from memory):
3050: jsonSchema = z.toJSONSchema(ObjectStackDefinitionSchema, {
3057: jsonSchema = z.toJSONSchema(ObjectStackDefinitionSchema, {
3064: jsonSchema = z.toJSONSchema(ObjectStackDefinitionSchema, {
Lit control for that reading: the same git show of the file returns 3180 lines, so the grep reached a real file rather than an empty one. ⚠️ Note :3029 carries a comment beginning 「Before this, the call below was the ONE toJSONSchema call site in the …」 — whoever takes this should read that comment before assuming the three sites are independent.
⚠️ The size and census numbers below are the #19020 dev's, RELAYED — ⛔ this seat did NOT re-run them
- bare 1,430,616 bytes vs override-projected 1,452,594 bytes (input direction,
unrepresentable: any)
- census over that graph: 39 dropped / 7 PROJECTED / 1 undecidable
- the seven the override emits and the CLI's file does not:
jobs.element.schedule.options[0].expression.options[0].in and .options[1]
objects.element.titleFormat.options[0].in and .options[1]
sharingRules.element.condition.options[0].in, .options[1] and .options[1].source
⚠️ Radius the dev declared, verbatim in substance: measured on the projection the CLI code calls, reconstructed from packages/spec/src/stack.zod.ts — it did not run the CLI end to end. ⇒ whoever takes this re-derives against the real command, ⛔ not against the reconstruction.
Why it is class (c)
An author — or an AI — points an editor at the generated JSON Schema, writes metadata, gets a green, and the runtime then refuses it. The failure is silent at authoring time and loud only later, which is the inversion this project exists to prevent. The published declaration being MORE permissive than what runs is the direction 「声明即强制」 forbids.
Relationship to #18670 — ⛔ NOT a duplicate, and this seat is not folding them
#18670 is the same MECHANISM (a .refine() cannot reach a projected JSON Schema) on the packages/spec/json-schema/** surface, and it is in the decision box awaiting a ruling between A/B/C. This card is a different producer and a different published surface — the CLI's os generate output. ⚠️ Under the charter line 「同文件同缺陷 = 同一发现」 these are not the same file and not the same defect site, so they are filed apart; but the two should be read together, because a ruling on #18670 probably decides this one's shape too. ⛔ This seat states that and does not decide it.
⭐ Worth recording for the taker: PR #19097 (card #19020) has just routed packages/spec/scripts/build-openapi.ts through the one choke point projectPublishedJsonSchema, and added a tree-wide pin that reds on any new direct z.toJSONSchema( in packages/spec/scripts/. That pin's radius is packages/spec/scripts/ only — packages/cli/ is necessarily outside it, which is why this card is not closed by that PR.
查重词
cli generate json schema override-less · ObjectStackDefinitionSchema published projection · author-facing schema wider than runtime · os generate refinement dropped · editor accepts what the platform refuses
⛔ 本席按章程不查重(「立卡者不查重、只附 3–5 查重词」),以上是查重词而不是查重结论。
Generated by Claude Code
Ruled: 5856790152 · letter C · 2026-09-27T14:50Z
Filed by the
domain:spec执行席 2 (seat post #18549, sessionsession_01JbZnqu8bt6YqfJsr9vaFb3) from theout_of_scope_findingsof the #19020 round (PR #19097). ⛔ Not folded into that PR — its fence wasbuild-openapi.ts, and a ruling does not license edits beyond its own findings. ⛔ Ungraded and unrouted by this seat beyonddomain:spec; grading is triage's.The finding
packages/cli/src/commands/generate.tsprojectsObjectStackDefinitionSchema— the schema an author's editor validates metadata against — through a BAREz.toJSONSchemawith no refinement-projection override, at three call sites.Re-verified by this seat, first-hand
⏱️ 2026-09-18T19:12Z, on
origin/main=07c6f822edd9c4c48a7ce34767de420c6096b9c3(the stamp above was read by the act that wrote this card, ⛔ not typed from memory):Lit control for that reading: the same⚠️ Note
git showof the file returns 3180 lines, so the grep reached a real file rather than an empty one.:3029carries a comment beginning 「Before this, the call below was the ONEtoJSONSchemacall site in the …」 — whoever takes this should read that comment before assuming the three sites are independent.unrepresentable: any)jobs.element.schedule.options[0].expression.options[0].inand.options[1]objects.element.titleFormat.options[0].inand.options[1]sharingRules.element.condition.options[0].in,.options[1]and.options[1].sourcepackages/spec/src/stack.zod.ts— it did not run the CLI end to end. ⇒ whoever takes this re-derives against the real command, ⛔ not against the reconstruction.Why it is class (c)
An author — or an AI — points an editor at the generated JSON Schema, writes metadata, gets a green, and the runtime then refuses it. The failure is silent at authoring time and loud only later, which is the inversion this project exists to prevent. The published declaration being MORE permissive than what runs is the direction 「声明即强制」 forbids.
Relationship to #18670 — ⛔ NOT a duplicate, and this seat is not folding them
#18670 is the same MECHANISM (a⚠️ Under the charter line 「同文件同缺陷 = 同一发现」 these are not the same file and not the same defect site, so they are filed apart; but the two should be read together, because a ruling on #18670 probably decides this one's shape too. ⛔ This seat states that and does not decide it.
.refine()cannot reach a projected JSON Schema) on thepackages/spec/json-schema/**surface, and it is in the decision box awaiting a ruling between A/B/C. This card is a different producer and a different published surface — the CLI'sos generateoutput.⭐ Worth recording for the taker: PR #19097 (card #19020) has just routed
packages/spec/scripts/build-openapi.tsthrough the one choke pointprojectPublishedJsonSchema, and added a tree-wide pin that reds on any new directz.toJSONSchema(inpackages/spec/scripts/. That pin's radius ispackages/spec/scripts/only —packages/cli/is necessarily outside it, which is why this card is not closed by that PR.查重词
cli generate json schema override-less·ObjectStackDefinitionSchema published projection·author-facing schema wider than runtime·os generate refinement dropped·editor accepts what the platform refuses⛔ 本席按章程不查重(「立卡者不查重、只附 3–5 查重词」),以上是查重词而不是查重结论。
Generated by Claude Code