Skip to content

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

Description

@objectstack-fleet

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/main c11852406, ⛔ 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. objectNamename) 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 filterfilters 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


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions