Skip to content

Checklist maintenance: three texts on cli.doctor-health-report go stale once the doctor unexamined-tree fix lands #10798

Description

@os-elon

Blocked-by: #10679 (this is follow-up work that only becomes correct after that card's PR merges — nothing to do before then).

Found while implementing #10679. Filed rather than folded into that PR: docs/qa/platform-checklist/areas/cli.json is the hot shared file of the #10663 QA-run lane, a clause edit is authoring work that also owes a revision bump plus a history entry with a ref (enforced by scripts/check-platform-checklist.mjs), and this repo already treats checklist-text corrections as their own card (#7530, #7671, #7687, #7740).

Nothing is red today. check:platform-checklist is structural — it validates ids, revisions, oracles and trap vocabulary, never whether a clause is still true — so this rots silently until a runner reads it.

What goes stale

Item cli.doctor-health-report, revision 1 (authored 2026-08-20, ref claude/new-session-0pv25p). Three texts:

  1. The EXPECTED-FAIL acceptance clause (the last one on the item). It states the defect as live — "Today it prints — the run records the verbatim lines as the failure evidence and extracts the defect card". After os doctor prints ✓ Test coverage / ✓ Deprecations about a tree it never examined (in any user app) #10679 the two lines it quotes are not printed at all; the report shows a named-reason skip instead. The clause should invert into an ordinary pass clause: in a cwd with no packages/spec/src, doctor prints neither clean bill of health and prints an informational skip naming the reason, and -v adds the resolved directory it looked for.

  2. The first acceptance clause, which enumerates the rows: "every environment check emits its own row — Node.js, pnpm, TypeScript, Dependencies, @objectstack/spec, Git, Environment files, Installed packages". The @objectstack/spec row is now conditional on the monorepo spec workspace being present, so in the scaffold this item is run against, that row is correctly absent. The enumeration needs the condition stated, or the row moved to a monorepo-cwd clause.

  3. Step 7 of the run steps (the one beginning "the expected-fail pair"), which instructs the runner to capture the two lines verbatim and to "note the sibling @objectstack/spec Not built warning row from the same monorepo-anchored path family (doctor.ts:1837)". Both captures become impossible in the scaffold; the step should instead capture the skip rows and assert the Not built row's absence.

Line anchors quoted in those texts (:1142-1143, :1160-1161, :1939, :1951, :1837) all move with the fix and need re-deriving at head as part of the same revision.

Suggested shape

One revision bump on cli.doctor-health-report covering all three, with a history entry naming #10679 as the change that inverted the expected-fail. No other item in cli.json is affected.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions