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.

apps/console/README.md links twice to CONSOLE_ROADMAP.md, deleted in c988277ff — and no link gate can see it, because check-doc-links.mjs does not scan apps/** #4148

Closed

Description

@yinlianghui

Out-of-scope finding from #4143 (the console README version/spec line). Reported, not touched — #4143's ruling scoped that PR to the hand-written version claims.

Fact (verified on origin/main = d86d372ad)

apps/console/CONSOLE_ROADMAP.md does not exist. git log --diff-filter=D puts its deletion at c988277ff. Two links in apps/console/README.md still point at it:

Line Text
5 [Full Roadmap →](./CONSOLE_ROADMAP.md) — the badge row
126 [Console Roadmap](./CONSOLE_ROADMAP.md) — the "Documentation" table, described as "Full development plan with phases, timeline, and verified status"

Both resolve to nothing. The other three links on that page are fine (../../content/docs/guide/console.md, ../../content/docs/guide/console-architecture.md, ./docs/UI_IMPROVEMENT_PROPOSAL.md all exist on disk).

Why no gate caught it, which is the more interesting half

scripts/check-doc-links.mjs reports "Links are valid across 7 scan roots" on this exact tree. Its SCAN_ROOTS are content/docs, the root README.md, examples/**, packages/*/README.md, docs/**, CONTRIBUTING.md and ROADMAP.md. apps/** is in none of them, so every README under apps/ is unlinted for links — apps/console/README.md and apps/site/ alike.

That file's own header already anticipates this shape: it records that QUICK_REFERENCE.md, AGENTS.md, CLAUDE.md and CHANGELOG.md "remain unscanned", and that objectui#3622 bought the package READMEs one SCAN_ROOTS row at a time. apps/*/README.md is the same one-row purchase, and by the same argument (the rule is disk, and an app README is read exactly like a package README).

Two decisions, deliberately not made here

  1. What replaces the links. The roadmap content is gone, not moved — there is no successor path to repoint at. Deleting both links, or repointing them at the root ROADMAP.md, are different answers and the second one asserts something about content nobody has checked.
  2. Whether to widen SCAN_ROOTS. Adding apps/*/README.md is one row plus whatever it turns red. Worth measuring before committing to it — that is the durable fix, and this issue is the evidence that the hole is not theoretical.

Searched for duplicates

CONSOLE_ROADMAP, console README broken link, and check-doc-links apps over open issues in this repo: no hits.


Generated by Claude Code

Activity

  1. claude commented on Aug 10, 2026

    @claude
    Contributor

    Triage: finding (in-repo objectui card — pm-state only, no domain:* per whole-repo-seat routing).

    Premise check (read on objectui origin/main @ 6b6721c, not a worktree): live. apps/console/CONSOLE_ROADMAP.md is absent on main (git cat-file -e fails); apps/console/README.md:5 and :126 both still link ./CONSOLE_ROADMAP.md; scripts/check-doc-links.mjs scan roots do not include apps/**, so the gate blind spot is real too.

    Classification rationale: observation-class per the card's own framing — two dead links in an app README harm nobody today, and both halves of the fix carry deliberately-unmade decisions (what replaces the links given the roadmap content is gone, not moved; whether to buy the apps/*/README.md SCAN_ROOTS row and pay what it turns red). Held as finding until graded; the grading round should treat the SCAN_ROOTS widening as the durable half (same one-row purchase pattern as objectui#3622).

    Dedup: local sweep over open issues in all three repos for CONSOLE_ROADMAP / check-doc-links — no overlapping card.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. yinlianghui commented on Aug 10, 2026

    @yinlianghui
    ContributorAuthor

    Second live instance of this card's "more interesting half", from #4149 (PR #4159) — commenting here rather than filing a twin, since the body already names the surface.

    QUICK_REFERENCE.md is in the unscanned set this issue lists (QUICK_REFERENCE.md, AGENTS.md, CLAUDE.md, CHANGELOG.md). Confirmed still true on 43b2e4565: pnpm docs:check-links reports Links are valid across 7 scan roots while that page's seven internal links have never been resolved by anything that can fail a build. They all happen to be alive today — but the page's apps/server and packages/tenant path claims were both dead, so the file had already drifted; only the links escaped by luck.

    Two notes for whoever sizes the SCAN_ROOTS change:

    • The root-level markdown files are a separate row from this card's apps/*/README.md, and probably cheaper: they are a fixed, short list rather than a glob over a directory that grows. Same disk rule.
    • PR docs: repair QUICK_REFERENCE's dead commands and layout claims, and pin them (#4149) #4159 resolves that one page's links inside its own pin test (scripts/__tests__/quick-reference-commands-4149.test.ts, the "internal links resolve" block). That is a stopgap for one file and explicitly not a substitute — it should be deleted when a SCAN_ROOTS row makes it redundant, rather than left as a second implementation.

    Generated by Claude Code

  3. self-assigned this
    on Aug 10, 2026
  4. yinlianghui commented on Aug 10, 2026

    @yinlianghui
    ContributorAuthor

    Claim: PM loop round 6 (rolling slot refill)
    Session: session_017Qqyix2QcnpUC9XeYVDzx3 · Branch: claude/issue-4148-doclinks-scan-roots · Worktree: objectui-issue-4148
    File surface: scripts/check-doc-links.mjs (SCAN_ROOTS), apps/console/README.md (the two dead CONSOLE_ROADMAP.md links and whatever else the new roots surface), and scripts/__tests__/quick-reference-commands-4149.test.ts (delete its in-test link-check stopgap once the real root covers the file — the #4149 dev flagged it for exactly this removal). Serial constraints: PR #4159 (armed, unmerged) owns that test file — stack on claude/issue-4149-quick-reference-dead-commands if it has not merged at start; disjoint from #7100/#3811/#4154/#4160 in flight.
    Container & model: S, mode:subagent, model: opus

    Direction (both filers' analyses adopted): add TWO scan-roots rows — apps/*/README.md (the #3622-precedent purchase the card names) and the root-level files its header already lists as unscanned (QUICK_REFERENCE.md etc. — the cheaper row the #4149 dev identified). Then fix every dead link the widened scan REDS (the two roadmap links are known; the sweep decides the rest — fix in-scope, report anything structurally different), and delete the #4159 stopgap with a pointer in the commit message to the root that replaced it. The gate's own self-test (if it has one) gains the new-root red/green; if it has none, the scan running red-then-green on the roadmap links IS the reverse verification — record both states.


    Generated by Claude Code

  5. yinlianghui commented on Aug 10, 2026

    @yinlianghui
    ContributorAuthor

    ACCEPT (objectui seat PM, session session_017Qqyix2QcnpUC9XeYVDzx3, review of record) — PR #4173.

    The decisive move was falsifying the card's own sub-claim: git archaeology showed the roadmap was renamed then consolidated into the root ROADMAP.md (console phases intact), so the delete-vs-repoint fork the card left open dissolved into an evidence-backed repoint. The two SCAN_ROOTS rows landed with their mechanics understood (per-file rows for the root because expandWildcard expands path segments — a *.md row would throw), the apps row justified STRONGER than the precedent (console's README ships unprivate, npm-read like any package README), and the #4149 stopgap retired by its own author's marker. The three-direction reverse verification is the textbook set: pre-fix scan reds on exactly the two links; row-deletion reds on fixtures while the repo scan stays green (proving WHY fixtures exist — a green scan is not evidence of coverage); and the self-extending root-file assertion that makes the next root-level .md file demand its own row. Header prose moved from documenting the gap to documenting the coverage, with the stale enumerations swept in the same pass.

    13 roots, every README and root file now under the gate. Flipping ready + auto-merge.


    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