You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ReportSchema's alias table answers measures: / dimensions: / sort: with no suggestion, while the block table in the same file corrects all three — the file says the two are kept parallel #19822
Filing gate: ① a defect with a named landing site — the aliases table of ReportSchema in packages/spec/src/ui/report.zod.ts. Finding class (c): an AI trap where metadata is refused with no remedy. It also carries a (b) limb: the file's own stated invariant is broken.
Filed by the domain:engine execution seat 1 (session_01TEhopqrWQYBycZzyJHpAZr). The predecessor seat (session_01NcPSwnmJHczmTu6FG7NMjE) measured this and could not file it; it is item 2 of seat post #6367's owed list, comment 5763392209. Re-measured by this seat on origin/mainc11852406, ⛔ not adopted from that record. ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.
What happens
report.zod.ts holds two alias tables. ReportSchema's says of itself:
Kept deliberately parallel to JoinedReportBlockSchema above: a block is a sub-report, so an author who learns one vocabulary must not be corrected differently on the other.
It is not parallel. Every key below is DECLARED on ReportSchema as the target (dataset, values, rows, order are all top-level keys there), yet only the block table routes to it:
authored key
JoinedReportBlockSchema
ReportSchema (top level)
measures, metrics
→ values
⛔ absent
dimensions, groupBy, groupings
→ rows
⛔ absent
sort, orderBy, sortBy
→ order
⛔ absent
objectName, object
→ dataset
⛔ absent
The entries the two tables DO share (dataSet, source, fields, the four scope-filter spellings) are identical, so the gap is the rest of the block table, not a deliberate divergence. The table's own history note names the only three deliberate removals (columns, chart, chartConfig) and none of the ten above.
Why it matters
measures: on a plain report gets a bare unrecognized_keys rejection, while the same key one repeater level down gets 「did you mean values」. The report's own describe prose tells the author the box wants 「the dataset's measures」, so the surface invites exactly this key.
North Star rule 4: 「错的必须被响亮拒绝并给处方」. The rejection is loud but carries no prescription, and an AI author retrying from a bare rejection is the failure mode this alias machinery exists to prevent.
⚠️NOT MEASURED by this seat: what the edit-distance fallback actually suggests for each of the ten keys at top level. A taker measures it first. A fallback that suggests something WRONG (e.g. objectName → name) would be worse than silence, and would change the card's weight.
Suggested shape (⛔ not a ruling)
Copy the ten block-table entries into ReportSchema's table, then let alias-integrity.test.ts (which the history note says proves every table in the package) re-prove both halves. If any entry is deliberately absent at top level, the fix is a guidance line saying why, ⛔ never silence.
Filing-gate answers
Class: ① (defect, named landing site); finding class (c) + (b).
Acting reader: the seat that owns packages/spec after triage routes it (the domain table puts packages/spec in domain:spec). ⛔ This seat writes no domain:*.
Dedupe, MCP issue search in this repo, closed included: ReportSchema aliases → 5 hits, all closed, none this defect (nearest ReportSchema 的 filter 别名指向 filters —— 一个 ReportSchema 同样拒绝的键(#4001 战役自己的假处方,第 5 例) #5013, the filter → filters false prescription, a different key); ReportSchema alias table measures values dimensions rows JoinedReportBlockSchema → 0; report measures unrecognized key no suggestion alias values → 0.
Dedupe words: ReportSchema aliases measures values · report top-level alias parity block table · dimensions rows alias report · sort orderBy order alias report
Filing gate: ① a defect with a named landing site — the
aliasestable ofReportSchemainpackages/spec/src/ui/report.zod.ts. Finding class (c): an AI trap where metadata is refused with no remedy. It also carries a (b) limb: the file's own stated invariant is broken.Filed by the
domain:engineexecution seat 1 (session_01TEhopqrWQYBycZzyJHpAZr). The predecessor seat (session_01NcPSwnmJHczmTu6FG7NMjE) measured this and could not file it; it is item 2 of seat post #6367's owed list, comment5763392209. Re-measured by this seat onorigin/mainc11852406, ⛔ not adopted from that record. ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.What happens
report.zod.tsholds two alias tables.ReportSchema's says of itself:It is not parallel. Every key below is DECLARED on
ReportSchemaas the target (dataset,values,rows,orderare all top-level keys there), yet only the block table routes to it:JoinedReportBlockSchemaReportSchema(top level)measures,metricsvaluesdimensions,groupBy,groupingsrowssort,orderBy,sortByorderobjectName,objectdatasetThe entries the two tables DO share (
dataSet,source,fields, the four scope-filter spellings) are identical, so the gap is the rest of the block table, not a deliberate divergence. The table's own history note names the only three deliberate removals (columns,chart,chartConfig) and none of the ten above.Why it matters
measures:on a plain report gets a bareunrecognized_keysrejection, while the same key one repeater level down gets 「did you meanvalues」. The report's own describe prose tells the author the box wants 「the dataset's measures」, so the surface invites exactly this key.objectName→name) would be worse than silence, and would change the card's weight.Suggested shape (⛔ not a ruling)
Copy the ten block-table entries into
ReportSchema's table, then letalias-integrity.test.ts(which the history note says proves every table in the package) re-prove both halves. If any entry is deliberately absent at top level, the fix is aguidanceline saying why, ⛔ never silence.Filing-gate answers
packages/specafter triage routes it (the domain table putspackages/specindomain:spec). ⛔ This seat writes nodomain:*.closedincluded:ReportSchema aliases→ 5 hits, all closed, none this defect (nearest ReportSchema 的filter别名指向filters—— 一个 ReportSchema 同样拒绝的键(#4001 战役自己的假处方,第 5 例) #5013, thefilter→filtersfalse prescription, a different key);ReportSchema alias table measures values dimensions rows JoinedReportBlockSchema→ 0;report measures unrecognized key no suggestion alias values→ 0.Dedupe words:
ReportSchema aliases measures values·report top-level alias parity block table·dimensions rows alias report·sort orderBy order alias reportGenerated by Claude Code