Repository navigation
fix: restore role versions lost in the v2 migration, and guard the drift class - #6
Merged
Merged
Conversation
The v2 migration sourced role.md frontmatter versions from the stale index.yaml rather than from the prompt bodies, silently reverting nine roles from 1.1 to 1.0 and spray from 2.0 to 1.0. Authoritative values come from history, not inference: 73d2285 bumped 19 prompt.md files to 1.1 while touching neither index.yaml nor any README, and 24525e9 bumped spray to 2.0 in prompt.md + README.md only. The prompt files record the real content changes; the bump commits forgot the rest. spray was consumer-visible: its README and its <MASTER_PROMPT version="2.0"> body said 2.0 while resolve.sh --id spray reported 1.0. No prompt bodies changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every existing check in validate-index.sh is existence-shaped ("the
referenced file is present"). None was agreement-shaped, which is the only
kind that catches a hand-written copy going stale — and that is exactly how
the version regression shipped.
index.yaml and dist/ are generated and CI gates them with a git-diff check,
so the per-role README is the one unguarded copy of version and category
left. This check fails on main today with precisely the spray case.
Interim guard: it becomes redundant once the README metadata header is
generated too (see ROADMAP.md).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
catalog.yaml still declared name: agent-roledefinitions-submodule after the repository URL had already moved to Agent-Roles. Resolves open decision #2 in docs/REBUILD_PLAN.md. REBUILD_PLAN keeps the old name where it quotes it historically. PATCH-equivalent prerelease bump per VERSIONING.md ("metadata corrections"). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The old roadmap promoted SemantiCode variants as the current focus; the rebuild archived them under archive/semanticode/. Replaces it with what shipped, the one gap Phase 1 left, and the ordering for Phases 2-4. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Supersedes #5, which was cut from a pre-#3 base and measured against a tree that no longer exists. Everything below was re-measured against current
main.What the rebuild already fixed
Before #3, role version lived in three hand-maintained places —
index.yaml, the> **Version:**line inprompt.md, and the same line inREADME.md— and 12 roles disagreed with themselves. Generatingindex.yamlanddist/fromrole.mdfrontmatter, plus the stale-artifact git-diff gate in CI, ended that for two of the three copies. 11 of the 12 drift cases are genuinely resolved.The defect that survived, and the one the migration introduced
The migration sourced its
role.mdfrontmatter versions from the staleindex.yamlrather than from the prompt bodies. That silently reverted nine roles from 1.1 back to 1.0 (cra,qave,dice,heist,frank,psy,agora,agl,prime) andsprayfrom 2.0 to 1.0.sprayis consumer-visible: its README and its own<MASTER_PROMPT version="2.0">body say 2.0, whileindex.yamlsaid 1.0 — so./resolve.sh --id spray, the consumer-facing API, disagreed with the index onmaintoday.Nothing caught it because every check in
validate-index.shis existence-shaped ("the referenced file is present"). None was agreement-shaped ("these files say the same thing"), and a hand-written copy going stale is only ever caught by the second kind. The per-roleREADME.mdis still hand-written per REBUILD_PLAN §3.1 — the one unguarded copy left.Which value is authoritative
Determined from history, not guessed.
73d2285bumped 19prompt.mdfiles to 1.1 while touching neitherindex.yamlnor anyREADME.md;24525e9bumpedsprayto 2.0 inprompt.md+README.mdonly. The prompt files record real content changes and the bump commits simply forgot the other files — so reconciliation goes toward the prompts.Commits
fix(roles)spray2.0 in frontmatter + README, regeneratesindex.yaml.dist/is unchanged — prompt bodies don't embed the version.feat(validate)role.mdfrontmatter, on version and category.fix(catalog)catalog.yamlstill saidname: agent-roledefinitions-submoduleafter the repository URL had moved. Resolves open decision #2.2.0.0-alpha.1→2.0.0-alpha.2, PATCH-equivalent perVERSIONING.md("metadata corrections").docs(roadmap)No new workflow file — the existing
.github/workflows/validate.ymlfrom #3 already runs the improved validator.Verification
origin/maincheckout before being trusted: it failed with exactlyFAIL: spray: README says version 2.0, role.md frontmatter says 1.0. That was the point.validate-index.sh --check-crisis→OK — all checks passed.test-roles.sh→OK — all role smoke tests passed (4 warning(s))— pre-existing WARNs for psy, frank, vita, agora about crisis numbers hardcoded outsideconfig/, unchanged by this PR and targeted by Phase 2 config templating.tools/build.pyregenerates cleanly;./resolve.sh --id sprayandindex.yamlnow agree at 2.0.Prompt bodies are untouched. No persona text changed.
Where the roadmap diverges from REBUILD_PLAN
Opinions, flagged for review, not corrections:
Also outstanding from Phase 1: the final
v1.xtag has still not been pushed, and pinned submodule consumers need it before the layout moves further.🤖 Generated with Claude Code