Repository navigation
fix(vetted-ops): find and write the apache-magpie status-rollup marker - #1665
Merged
Merged
Conversation
rollup-append matched only the legacy `<!-- <tracker> status rollup v1 -->` marker, so on trackers whose rollup carries `<!-- apache-magpie: status-rollup v1 -->` it missed the rollup and created a second, legacy-marker comment. Both vetted-ops and github-rollup now prefer the canonical marker, still recognise the legacy one, and always write the canonical marker for a new rollup; the spec says the same. Generated-by: Claude Opus 5
potiuk
force-pushed
the
vetted-op-tracker-rollup-marker
branch
from
October 16, 2026 06:37
b40acd2 to
80b6c21
Compare
3 tasks done
potiuk
added a commit
that referenced
this pull request
Oct 17, 2026
Hand-sync of tools/spec-loop/specs/ with the functionality that landed between d58ecb7 and 43e4c6e. Specs changed: - release-management-lifecycle: verify-rc classification as code (abd5969, #1619), vote-draft / promote / announce-draft renders (c87ad08, d5fe7fd), the per-outcome / backend / classification file split across the family, and the SKILL.md size gap closed (all ten now under 500 lines). - adoption-and-setup: the utilities first-run welcome guide and the text-file mirror fallback in the family scan (9f8c479, #1669). - meta-and-quality-tooling: the zero-token /magpie-skills Claude Code mod in magpie-utilities (861c84e, #1667). - agent-isolation-sandbox: the agent-guard --junie adapter (6c24f30, #1666) and sandbox-lint refusing a tracked .claude/settings.json (4a07965, #1675). - adapters, security-issue-lifecycle, project-agnosticism: the canonical apache-magpie status-rollup marker, preferred over and replacing the legacy tracker-named one for new rollups (ccead70, #1665). - .last-sync bumped to 43e4c6e. No spec change needed (specs already updated in the commit itself): 43e4c6e, 399ab1b, 622bfbc, 5fc6a32, a75734c, e44b44a, a93a7d1, c67e3c6, a3d9b71, ec015bb. Exempt (mechanical): 0a79a33 (dev version bump), 80a0f1f (npm pin bump in prek hooks). Generated-by: Claude Opus 5
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
vetted-op-tracker rollup-append(androllup-amend-latest/rollup-fold, which share the lookup) recognised only the legacy status-rollup marker,<!-- <tracker-name> status rollup v1 — … -->. Skills and the rest of the framework (preflight-audit's skill-marker check, theissue-syncbulk-mode classifier, skill-evals fixtures) recognise skill comments by the<!-- apache-magpie: <kind> v<N> -->marker, and adopters' rollups carry<!-- apache-magpie: status-rollup v1 -->. On those trackersrollup-appenddid not find the rollup and created a separate comment with the legacy marker. Every later pass then grew that second comment.Change
rollup_format.py(vetted-ops) and its identical copyrollup.py(github-rollup):ROLLUP_MARKER = "<!-- apache-magpie: status-rollup v1 -->"is what a new rollup starts with.CANONICAL_MARKER_RE/LEGACY_MARKER_REmatch the two marker shapes.is_rollup_bodymatches either one, andis_canonical_rollup_bodymatches only the canonical one.find_rollup_index(bodies)returns the first comment with the canonical marker, or the first legacy one when there is none. A tracker that has both keeps growing the canonical rollup.marker_line/build_new_rollup_bodystill accept the oldtracker_nameargument so existing callers keep working, but they ignore it.procedures._find_rollup(vetted-ops) andcli._find_rollup(github-rollup) now usefind_rollup_index. New rollups no longer get the tracker name in their marker.<details><summary>DATE · @actor · Label</summary>, a blank line, the body, a blank line,</details>, with the---ruler and blank lines between entries.tools/github/status-rollup.md, both tool READMEs and theissue-invalidateskill now name the canonical marker and say the legacy one is still recognised. Theissue-invalidatemeasured_tokensstamp is refreshed.github-rollup is fixed here too. Its
rollup.pyis byte-identical torollup_format.py, and skills use both tools. If only vetted-ops changed, github-rollup would not find the canonical rollups that vetted-ops creates, and would make duplicates.Tests
tools/vetted-ops: covers a new rollup getting the canonical marker; appending to legacy-marker rollups (any tracker name); the canonical rollup winning over an earlier legacy one for both append and amend; no second rollup being created next to a canonical one; fold refusing a legacy-marker rollup; marker detection cases; andfind_rollup_index.uv run pytest: 396 passed.ruff check,ruff format --checkandmypyare clean.tools/github-rollup: the same cases for the CLI and the formatter. 54 passed, and ruff and mypy are clean.tools/preflight-audit: 42 passed (unchanged; it already accepts both markers).prek run --files <changed>passes, withlycheeandworkspace-pytestskipped.Not in scope
tools/forgejo/status-rollup.mdandtools/local-trackerstill describe or write the legacy marker on their own backends. They can follow separately.rollup-foldstill refuses to fold a legacy-marker rollup into the canonical one, because folding would nest<details>blocks. Merging two rollups stays a manual step, as the spec's hard rules say.🤖 Generated with Claude Code