You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
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
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
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.
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.
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.mdSCAN_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.
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/tenantpath 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.
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.
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.
Activity
claude commentedon Aug 10, 2026
Triage:
finding(in-repo objectui card — pm-state only, nodomain:*per whole-repo-seat routing).Premise check (read on objectui
origin/main@6b6721c, not a worktree): live.apps/console/CONSOLE_ROADMAP.mdis absent on main (git cat-file -efails);apps/console/README.md:5and:126both still link./CONSOLE_ROADMAP.md;scripts/check-doc-links.mjsscan roots do not includeapps/**, 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.mdSCAN_ROOTSrow and pay what it turns red). Held asfindinguntil graded; the grading round should treat theSCAN_ROOTSwidening 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
yinlianghui commentedon Aug 10, 2026
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.mdis in the unscanned set this issue lists (QUICK_REFERENCE.md,AGENTS.md,CLAUDE.md,CHANGELOG.md). Confirmed still true on43b2e4565:pnpm docs:check-linksreportsLinks are valid across 7 scan rootswhile 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'sapps/serverandpackages/tenantpath claims were both dead, so the file had already drifted; only the links escaped by luck.Two notes for whoever sizes the
SCAN_ROOTSchange:apps/*/README.md, and probably cheaper: they are a fixed, short list rather than a glob over a directory that grows. Samediskrule.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 aSCAN_ROOTSrow makes it redundant, rather than left as a second implementation.Generated by Claude Code
yinlianghui commentedon Aug 10, 2026
Claim: PM loop round 6 (rolling slot refill)
Session:
session_017Qqyix2QcnpUC9XeYVDzx3· Branch:claude/issue-4148-doclinks-scan-roots· Worktree:objectui-issue-4148File 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), andscripts/__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 onclaude/issue-4149-quick-reference-dead-commandsif it has not merged at start; disjoint from #7100/#3811/#4154/#4160 in flight.Container & model: S,
mode:subagent,model: opusDirection (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
yinlianghui commentedon Aug 10, 2026
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
*.mdrow 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
docs(links): scan the app READMEs and the rest of the repo root (obje…