fix: status reports between milestones; milestone evidence resolves a closed milestone (#262) - #274
Merged
radiusred-cody[bot] merged 3 commits intoSep 6, 2026
Conversation
…milestone (#262) statusReport returned early on an empty open-milestone listing, above the two advisory checks that close it. Both are milestone-independent — the contract-drift check compares the hub's roles/ against the contracts embedded in the binary, the other reads the repo's own delete-branch setting — and the quiet period between milestones is exactly when an operator reconciles a fork against a new release. The board (the milestones and the gates raised across them) moves into milestoneBoard, so the no-open-milestones line replaces it and the report continues. Adopts #253. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Zu94NTC5DJskcpMTSofzr
…ys so (#262) The verb resolved its milestone through the open-milestone listing, so a reviewer checking a shipped record was refused NOT_FOUND on M11. It now reads MilestoneIssues — the state=all listing already in the Tracker interface — under the same M<n>: title rule, and prints a note naming a closed milestone before the citation report: link rot in a finished record is what the verb is most useful for. A number in neither state is still NOT_FOUND, with the detail no longer saying "open". milestone close and status keep their open-only reads. The walk splits into milestoneEvidenceReport so the resolution is testable. Adopts #250. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Zu94NTC5DJskcpMTSofzr
…nd the introduction (#262) SPEC §6's status row says the two advisory notes print regardless of open milestones, and its milestone evidence row says a closed milestone resolves and is reported as closed, with close and status keeping their open-only reads. The introduction's NOT_FOUND line for the verb follows. The CHANGELOG entry covers both captures. Neither roles/qa.md nor roles/coordinator.md claims the verb needs an open milestone — both only name it — so no contract changes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Zu94NTC5DJskcpMTSofzr
There was a problem hiding this comment.
Approved. I reviewed the diff before the PR body, checked task #262, milestone #254 M13-R9, captures #253/#250, and the recorded decisions. The implementation matches the requirement: status only suppresses the board/gates section when no milestone is open, and milestone evidence resolves state=all while status and close stay open-only. Tests, docs/contracts, changelog, commit record, local Go checks, and live read-only evidence probes all passed. No findings.
radiusred-cody
Bot
deleted the
task/262-captures-riding-the-release-status-drift
branch
September 6, 2026 11:57
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What this does
M13-R9: the two open captures that ride the release, both small and independent of the rest of the milestone.
statusreports between milestones (#253).statusReportreturned early on an empty open-milestone listing, above the two advisory checks that close the function — so a hub with nothing open printedno open milestones in <hub>and nothing else, whileroles diffshowed a drifted contract. Both checks are milestone-independent: the drift report compares the hub'sroles/against the contracts embedded in the binary and touches no network, and the branch-setting note reads the repo. The board — every open milestone with its tasks, then thegates raised:section — moves intomilestoneBoard, so the no-open-milestones line replaces it and the report continues to both notes. With no milestones read, there are no gates to have looked for, so nogates raised: noneline is asserted either.milestone evidence <n>after a close (#250). The verb resolved throughOpenMilestones, so checky's review of PR #248 was refusedNOT_FOUNDon M11's shipped record. It now resolves fromMilestoneIssues— the state=all listing already in theTrackerinterface, used bymilestone new's numbering — under the sameM<n>:title rule, and prints anote:line naming a closed milestone before the citation report. Link rot in a finished record is what a maintainer reads the verb for.refused[NOT_FOUND]now means no milestone carries that number in either state; its detail no longer says "open".milestone close(planClose) andstatusReportkeep theirOpenMilestonesreads untouched.No
Trackermethod was added or changed, so nothing here collides with #260 in the same package.Verified against the live hub
Built from this branch, run in the hub:
milestone evidence 11(M11, closed) →note: milestone M11 (radiusred/gh-codecrew#233) is closed — checking the record as it stands, thenrequirements counted: M11-R1, M11-R2, M11-R3 (3)andall 11 cited links resolve across 6 issues — evidence is reachable. This is the exact call that was refused on Backlog capture: milestone evidence refuses NOT_FOUND on a closed milestone #250.milestone evidence 99→codecrew: refused[NOT_FOUND]: no milestone M99 in radiusred/gh-codecrew.status→ the board for M13, then the delete-branch-on-merge note, unchanged.Tests
internal/cli/status_test.goroles/coordinator.mdin the hub dir + the repo not deleting branches → both notes print and nogates raisedline does;internal/cli/evidence_test.gorefused[NOT_FOUND], with no "open" in the detail.The evidence fake serves
MilestoneIssuesand returns an empty board fromOpenMilestones, so a regression to the open-only listing fails rather than passing quietly.go test ./...,go vet ./...andgofmt -l .are clean.Docs
statusrow (the line replaces the board and the gates section; both notes still print) and themilestone evidencerow (a closed milestone resolves and is reported as closed;closeandstatusstay open-only).docs/introduction.md: the verb'sNOT_FOUNDline. No refusal code was added or removed, so no count changes.roles/qa.mdandroles/coordinator.mdwere read and left alone: neither claims evidence needs an open milestone — qa.md names it as QA's first act, coordinator.md as the first step of the milestone end, both of which sit before the close — so there was nothing stale to fix and no contract drift is introduced for adopters.CHANGELOG.md: one### …entry under## [Unreleased]covering both.Requirements
M13-R9 — in full.
Decisions recorded
MilestoneIssuesplus oneTaskread, rather than a new tracker method or a widened type; trade-off, and what was rejected.No deviations. No ask-the-human points.
Closes #262
Closes #253
Closes #250
🤖 Generated with Claude Code
https://claude.ai/code/session_017Zu94NTC5DJskcpMTSofzr