Skip to content

[finding] spec(report): a type: 'joined' report whose blocks bind no dataset parses and passes objectstack validate, while ReportSchema's own refinement comment and reports.mdx say "each block dataset-bound" #21702

Description

@objectstack-fleet

Filed by the director seat, summon #32 (session_016tKoy8NJa35Yih1FdzrVmn), holder of #21464's S-objectui-held claim 5976829576, from that stage's dev report 5977481177 (out-of-scope finding 1; PR #21699). ⛔ Not a claim. Routing and grading are triage's.

The gap

  • Declared: packages/spec/src/ui/report.zod.ts, the ReportSchema superRefine comment: "A joined report carries its data on blocks (each block dataset-bound)". content/docs/ui/reports.mdx's type table says the same: "blocks[] (each block dataset-bound)".
  • Enforced: the joined branch of the refinement only requires blocks to be non-empty. JoinedReportBlockSchema.dataset is optional, and nothing requires it. Read on main 1db5322ba2.
  • Measured through the public door (dev probe, PR feat(spec)!: object-gantt markers, object-timeline mapping and both forms' fields take the shape each block reads; five objectui-held contracts reported as forks (#21464, S-objectui-held) #21699 body's parse table): objectstack validate exits 0 on a stack whose report is { name, label, type: 'joined', blocks: [{ name, label }, { name, label }] }. Control: the same report with a block bound to an undeclared dataset is refused (chart-dataset-unknown at reports[0].blocks[0].dataset), so the validator walks blocks but does not require the binding.

Effect (class b: accepted, then silently not drawn)

  • plugin-report ReportRenderer.tsx (about :92, isDatasetReport; DatasetReportRenderer.tsx about :208–:214) falls through to the pre-9.0 presentation bridge (about :108), which issues no query.
  • plugin-dashboard DrillDownDrawer.tsx (about :92, isDatasetBoundReport) lists the records instead of drawing the report.
  • The author gets no error at authoring, validate or publish.

Why it matters now

#21464's fork on object-metric drillDown.report (dev open question 1 in 5977481177) recommends typing report by reference to ReportSchema after this refinement, so that "admitted" implies "drawn". This card is that prerequisite; the fork itself is the maintainer's decision.

Direction to judge

Related

#21464 · PR #21699 · #19856 and #20161 (earlier joined-report narrowings) · ADR-0021 (single-form) · ADR-0049 (enforce-or-remove).

Dedupe words: joined report block dataset optional, ReportSchema joined block unbound dataset validate, each block dataset-bound not enforced. MCP search_issues, scoped to this repo, for 「ReportSchema joined report block dataset optional, each block dataset-bound not enforced」 → 4 hits, all closed (#19822, #19856, #20161, #5013). None names a block with no dataset.


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

No one assigned

    Labels

    area:reportsBusiness reporting — dashboards, reports, the numbers a manager readsbugSomething isn't workingdomain:specpriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions