Repository navigation
Retire the tracker from the repository's text: every root doc's tag line, docs/index.md, docs/tags.md and CLAUDE.md still send readers to mcp__tracker__list — the status query is a GitHub label query, stated once in docs/index.md - #601
Merged
Conversation
…ine, docs/index.md, docs/tags.md and CLAUDE.md still send readers to mcp__tracker__list — the status query is a GitHub label query, stated once in docs/index.md (#601) * Retire the tracker from the repository's text: every root doc's tag line, docs/index.md, docs/tags.md and CLAUDE.md still send readers to mcp__tracker__list — the status query is a GitHub label query, stated once in docs/index.md Closes #599 * review: Retire the tracker from the repository's text: every root doc's tag line, docs/index.md, docs/tags.md and CLAUDE.md still send readers to mcp__tracker__list — the status query is a GitHub label query, stated once in docs/index.md * coverage: Retire the tracker from the repository's text: every root doc's tag line, docs/index.md, docs/tags.md and CLAUDE.md still send readers to mcp__tracker__list — the status query is a GitHub label query, stated once in docs/index.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plan
The plan file is outside the checkout and the tool guard blocks it, so the plan is this message, as the step requires.
Normative check: CONSISTENT. I relied on
docs/org/normative.md§ The header ("The query is the project's own — agh issue list --labelinvocation on a GitHub-tracked project — and its exact spelling is stated once, indocs/index.md") and § "docs/index.mdis the map" ("The index also names the project's status query").docs/normative.md§ Where a gap is recorded still says "Items live in this project'strackerMCP server. GitHub Issues is the public inbound surface: an issue filed there is imported and becomes a tracker item". That root doc defers every rule to the vendored one it now contradicts, so this plan amends that section. That is a root-doc amendment: #599 must carry thenormativelabel. I did not apply it because this planning session is read-only.docs/org/normative.md§ A specification states the end state bans inline markers; this plan renumbers the existing CLAUDE.md-sanctioned markers and adds none.Context
The tracker's items moved to GitHub issues on 2026-10-03 (
docs/archive/tracker-ids.mdmaps IDs). The repository text still sends readers tomcp__tracker__list, and the status query is spelled in 31 places. The fix: spell the GitHub label query once indocs/index.md, make every other mention point there, and add a sweep so the tracker spelling cannot return.Verified facts the plan rests on:
gh issue list --label <label> --state openreturns an empty list with exit 0 for a label that does not exist, so docs whose label was never created need no label work.compiler/cmd/promise/resources/language-guide.mdis an untracked build copy ofdocs/language-guide.md(tools/build/common/resources.go:28). Editing the doc is enough.~thismethod satisfies a shared-receiver requirement, so a shared (read-only) borrow of the view mutates through it #559 are all open (the fourtracked as T…markers map to them indocs/archive/tracker-ids.md)..mcp.jsonandCLAUDE.local.mdare untracked.Changes
PASS 1 — the query has one home.
docs/index.md"The status query" paragraph (lines 10–14): replace "This project records items in itstrackerMCP server, so the query is:" and the fencedmcp__tracker__list --tag <basename>with "This project records items as GitHub issues, and a document's tag is a label there, so the query is:" followed by one fenced line,gh issue list --label <basename> --state open # --label large-integers, for large-integers.md. Line 59: thetags.mdentry's "for thetrackerMCP server" becomes "for this repository's GitHub issue labels".grep -l 'mcp__tracker__list --tag' docs/*.mdlists; 30 today) becomes:> **Tag:** \` — remaining work to complete this document: the query named in docs/index.md. A mechanicalsedon line 3 of each file. The relative link resolves fromdocs/, socheckDocLinkspasses. This matches the shapedocs/org/normative.md§ The header gives (<the project's query>` is a reference, not a spelling).PASS 2 — tags, CLAUDE.md, normative.md say issues and labels.
docs/tags.md:59§ Document: "it is the set of open items carrying the doc's tag.mcp__tracker__list --tag <doc>is the doc's status section" becomes "it is the set of open issues carrying the doc's label; the query named in index.md is the doc's status section". Nothing else in the file names the tracker.CLAUDE.md§ Documentation (lines 427–450): "open tracker items carrying it" → "open issues carrying it as a label"; the example tag line → the PASS 1 form; "progress lives in the tracker, andmcp__tracker__list --tag <doc>is" → "progress lives in GitHub issues, and the label query stated once indocs/index.mdis"; "close the tracker item" → "close the issue"; "file it with that doc's tag" → "file an issue carrying that doc's label"; "name its tracker item" → "name its issue (tracked as #NNN)"; the grep becomesgrep -rn 'tracked as #' docs/*.md.docs/normative.md§ Where a gap is recorded, first two sentences: "Items are GitHub issues on promise-language/promise, and a document's tag is a label there; the open issues carrying it are what the query returns." The sentence that follows (query spelled once in index.md) stays. The § What a gap is filed as table stays:bug/taskare GitHub labels too and name no tracker.docs/creating-modules.md:510,632,656("File a bug in thetrackerMCP server", "File tasks in the tracker", "all filed in tracker") and.claude/skills/cut-release/SKILL.md:29,39,43,59,61("file a tracker bug", "Reference tracker IDs", "annotate tracker items") become "file a GitHub issue" / "reference issue numbers" / "close or annotate the issues". Same class of pointer, word-level edits.PASS 3 — markers name issues.
docs/runtime-architecture.md:12T1721 →#335;docs/standard-library.md:1102T1736 →#340; and the two the item did not list but the new grep must not miss:docs/standard-library.md:66T1569 →#286,docs/language-design.md:1059T2185 →#559. Spelling:tracked as #335. After landing, comment on #338 that its sweep's grep is nowtracked as #.PASS 4 — the sweep.
tools/build/common/structural.go: addCheckTrackerPointers(root string) error, built on the existingscanTracked(root, "*", scope, flag)(line 230).scopeadmits every tracked path except those underdocs/archive/anddocs/org/.flagreturns the line numbers containing the needle, which is built as"mcp__" + "tracker__"so the sweep's own source and tests do not trip it. The error names eachpath:lineand says items are GitHub issues and the status query is the one stated indocs/index.md(Retire the tracker from the repository's text: every root doc's tag line, docs/index.md, docs/tags.md and CLAUDE.md still send readers to mcp__tracker__list — the status query is a GitHub label query, stated once in docs/index.md #599). Register it as{"tracker-pointers", CheckTrackerPointers}instructuralChecks(line 310), and change the "All four run" comment at line 329 to five.tools/build/common/structural_test.go: add the entry toTestStructuralChecks_PinsTheSet(line 883, deliberately a duplicated list).TestRunStructuralChecks_ThisTreeIsClean(line 810) iterates the registry, so the real tree is covered automatically — which is why PASS 4 lands with PASSES 1–3, not before.docs/build-tools.md§ The structural sweeps (line 395 table): add thetracker-pointersrow; "the four in" at line 620 becomes five.Tests
structural_test.gousing the existing temp-repo helper (git init+git add -A, asdocscheck_test.go:20–46does): a tracked.mdcontaining the needle is reported aspath:line; the same text underdocs/archive/anddocs/org/passes; an untracked file is ignored; a tracked-but-deleted file is skipped (mirrorTestCheckTestSleeps_SkipsTrackedButAbsent); a non-git root returns the "list tracked" error (mirrorTestCheckTestSleeps_ErrorsWhenGitCannotList); two hits in one file give two lines.cd tools/build && go test ./common/ -count=1(coversPinsTheSetandThisTreeIsClean), thenbin/verify, which runscheck structureand the docs link/index checks over the edited tree.git ls-files | grep -v '^docs/archive/' | grep -v '^docs/org/' | xargs grep -l mcp__tracker, andgrep -rn 'tracked as T[0-9]' docs/*.md.grep -rn 'tracked as #' docs/*.mdmust list exactly four lines.Deliberately not doing
.mcp.json,CLAUDE.local.md, and arena provisioning: untracked, and the item names them as a separate change.T1234citations in code comments, commit messages, and parenthetical doc citations such as(T1685): out of scope per the item;docs/archive/tracker-ids.mdresolves them.docs/gate-system.md's description of the tracker as the gate scheduler and dispatcher (lines 7–284): that is a design question about what dispatches periodic and platform gates after retirement, not a pointer to a query. It needs its own issue, which I could not file from this read-only session: "docs/gate-system.md still names the tracker MCP server as the coordinator for periodic/platform gate dispatch and exceptions; decide the replacement or retire those sections (Delete the gate-exception mechanism: nothing grants exceptions, nothing consults them, and docs/gate-system.md describes a fail-closed query that no binary makes #551 already removes the exception mechanism)", labelsdocs,gate-system.docs/index.md:97("All open items migrated to the tracker" on the archived roadmap): history of an archived doc, resolved bytracker-ids.md.docs/org/normative.md§ Lifecycle makes label creation part of ratification.Passes
docs/index.mdstatesgh issue list --label <basename> --state openonce; every root doc's tag line points at it.docs/tags.md,CLAUDE.md§ Documentation,docs/normative.md§ Where a gap is recorded,docs/creating-modules.md, cut-release skill say issues and labels.tracked as T…markers becometracked as #335,#340,#286,#559.tracker-pointerssweep instructural.go+ tests +docs/build-tools.mdrow and counts.Two actions this session could not take and the executor must: add the
normativelabel to #599, and file the gate-system follow-up issue described above.Review
Everything I can check without the verify result is done. Interim status while it runs:
docs/index.md,docs/tags.md,CLAUDE.md, the fourtracked asmarkers, and the newtracker-pointerssweep. Its tests pass and would fail on revert.Waiting on the fresh
bin/verifyrun over the final tree before writing the review.Coverage
Tools rebuilt in four seconds and verify is now running on the final tree. The only thing left is its verdict, which will wake me when it lands.
Gate
integrationmeasuredtruemeasurement:
thresholds:
Closes #599