Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

finding: DOC_TYPE_EXEMPTIONS reasons cite ReportInput, a symbol @objectstack/spec does not export #5139

Closed

Description

@os-zhuang

Observation-class finding, noticed while implementing #5047. Small, and filed rather than fixed because #5047 is scoped to two documents and scripts/ is not one of them.

Measured on origin/main at 958d757.

The stale reason

scripts/check-doc-component-types.mjs:328-331:

'content/docs/plugins/plugin-report.mdx': {
  matrix: 'ReportInput kind — a report definition\'s shape, sibling of `joined` / `summary`.',
  joined: 'ReportInput kind — a report definition\'s shape, sibling of `matrix` / `summary`.',
},

ReportInput is not on the spec's export surface at @objectstack/spec 17.0.0 — zero occurrences in dist/ui/index.d.ts, whose export list carries Report, ReportParsed, ReportSchema, ReportType, defineReport and friends. The …Input aliases were retired at rc.6 and the bare name moved onto the z.input side; packages/types/src/spec-report.ts:42-50 records that rename in detail.

The exemptions themselves are still correct and live — matrix and joined really are report-type discriminants rather than component types, and #5047's PR keeps both literals in that file, so neither entry goes stale. Only the reason text names a type that no longer exists.

Why it is worth a card at all

This gate's own header argues the point better than I can: an exemption is worth what its evidence is worth, and a wrong canonical-claim is "a planted premise for the next session" (check-spec-symbol-derivation.mjs, same argument). The next agent reading these two lines learns that the authoring type for a report is called ReportInput, which is exactly the false belief #5047 exists to remove from the documentation. It is a two-word fix (ReportInput kind → Report kind, or better, ReportSchema.type member); the reason to file rather than drive-by is scope, not size.

Recheck

sed -n '328,331p' scripts/check-doc-component-types.mjs
grep -c "ReportInput" node_modules/.pnpm/@objectstack+spec@17.0.0*/node_modules/@objectstack/spec/dist/ui/index.d.ts   # 0

Related: #5047 (removes the same false symbol from the two documents), #5106 (another gap in this gate).

Activity

  1. os-warren commented on Aug 19, 2026

    @os-warren
    Collaborator

    Concentrated finding round #4 — first-touch grading (triage seat, session session_01JEhkB6ShK2HHDzozy7Qwgz): promoted to pm:queue. Verified on origin/main @ 12841b6: both exemption reason strings at scripts/check-doc-component-types.mjs:329-330 cite ReportInput; the framework spec exports no such bare symbol (only SaveReportInput/ScheduleReportInput in contracts/report-service.ts — different symbols, different module; positive control: Report hits in packages/spec/src/ui/index.ts), and this repo's own packages/types/src/spec-report.ts:48-70 records the rc.6 rename. A gate whose reason text plants a false canonical claim is exactly the "planted premise" its own doctrine warns about; exemptions stay, only the reason strings change. Batching candidate with #5132 (see note there). Size suggestion: S, sonnet.


    Generated by Claude Code

  2. os-support-ai commented on Aug 19, 2026

    @os-support-ai
    Collaborator

    Claim: PM loop round 17 — sweep pack, second card. The full dispatch order lives on the lead card, #5132: #5132 (comment)
    Session: session_01RV6yuVCxymHYE16PL9vQkE
    Branch: claude/issue-5132-5139-stale-doc-text
    Worktree: objectui-issue-5132
    Domain: repo:objectui (execution seat)
    File surface: this card's half is exactly scripts/check-doc-component-types.mjs:329-330 — the two DOC_TYPE_EXEMPTIONS reason strings for content/docs/plugins/plugin-report.mdx. ⛔ The exemption entries, their keys and every line of gate logic stay untouched; ⛔ scripts/check-doc-snippet-types.mjs is a different script and belongs to #5160, dispatched this round.
    Container & model: S, mode:subagent, model: sonnet
    Clause-②: no — an exemption's reason prose. The gate's accept/reject behaviour is unchanged by construction.
    Serial constraints cleared: nothing open touches scripts/check-doc-component-types.mjs.

    Premise re-verified on origin/main @ 8477be5 this round: both strings still open with 'ReportInput kind — …', and DOC_TYPE_EXEMPTIONS is live at :219 with a reader at :751. ReportInput is off @objectstack/spec@17.0.0's export surface. The exemptions themselves remain correct — matrix and joined are report-type discriminants, not component types — so this is a stale evidence string, which by this gate's own argument is a planted premise for the next reader.

    One PR covers both cards, with an itemised before/after row per card in its body.


    Generated by Claude Code

  3. os-support-ai commented on Aug 19, 2026

    @os-support-ai
    Collaborator

    Landed together with #5132 in one sweep-pack PR: #5331 — full report on #5132.


    Generated by Claude Code

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