feat(primitives): renumber so Wait=P9 — restore skill-name↔primitive-number alignment#23
Conversation
…number alignment The productive-wait primitive returns to P9, matching the `broomva/p9` skill repo name. Skill Freshness moves to P7, Branch+Worktree Janitor moves to P8. This closes the Name (Pn) recall-key failure mode the naming rule (PR #21) was designed to prevent: under the interim P7=Wait / P8=Freshness / P9=Janitor numbering, the `broomva/p9` skill name pointed at primitive P9 (Janitor), making `feedback_p9_reflexive.md` ambiguous — was it about the skill (Wait) or the primitive number (Janitor)? The 2026-05-16 renumber restores Wait = P9 = `broomva/p9` everywhere. Stacked on PR #21 (`feat/primitive-naming-reflex`) so this PR carries both the naming rule and the alignment fix it makes possible. Changes: - SKILL.md: description-block prose + primitive table P7/P8/P9 swap + Short-name index in the naming-convention section. Added prose explaining why Wait sits at P9 (skill repo name commitment). - references/primitives.md: TOC + section bodies P7/P8/P9 swap + Short-name index. Section bodies carry legacy-path callouts pointing at the OPPOSITE direction now (~/.config/broomva/p7/ canonical, p8/ legacy for freshness; p8-janitor/ canonical, p9-janitor/ legacy for janitor). The §P9 Skill name paragraph now explains the renumber rationale + the "numeric soup" failure mode it closes. - assets/templates/settings.json.snippet: skill-freshness-hook.sh's `_bstack_primitive` annotation flipped P8 → P7. - assets/templates/policy.yaml.template: two comment headers updated to mark the ci_watch + auto_merge blocks as P9 primitives. - assets/templates/{CLAUDE,AGENTS}.md.template: no changes — these were already in the target ordering (the templates have been ahead of the workspace this whole time, which is what made the renumber possible in one PR). - scripts/doctor.sh: - Section 1-8 comment block updated for new numbering. - P_NAMES array swap (P7=Skill Freshness, P8=Janitor, P9=Wait). - REFLEXIVE_PRIMS now includes P9 (Wait, reasoning-enforced) and excludes P7 (Freshness, hook-enforced). - HOOK_LABELS skill-freshness-hook.sh label flipped P8 → P7. - SCRIPT_PATHS reordered so SCRIPT_LABELS=(P1 P2 P6 P7 P8 P9 P12) matches the new path-to-primitive mapping. - NEW Section 9 — Naming convention propagation. Lints CLAUDE.md + AGENTS.md for (a) presence of the Name (Pn) naming rule in prose and (b) a Short-name index with exactly 20 entries. Closes the silent-drift failure mode where governance edits could leave the index mismatched with the primitive count. - tests/template_lockstep.test.sh: updated explanatory comment to reflect that templates and workspace canonical now agree. Kept in WARN mode for one release cycle to ease in-place upgrades from downstream workspaces still on legacy ordering. - VERSION: 0.1.0 → 0.2.0. - CHANGELOG.md: 0.2.0 entry covering the renumber rationale, the migration path (legacy env vars + config dirs still honored), the naming-rule propagation (PR #21 carry-forward), and the doctor Section 9 extension. Workspace PR-A (companion to this PR) will follow shortly with the runtime changes (CLAUDE.md + AGENTS.md + scripts/skill-freshness-hook.sh + scripts/branch-janitor.sh) so the workspace mechanisms match these declarative bstack changes. Until PR-A lands, doctor against the workspace reports a single P9-missing-reflexive-rule gap — that's the expected coordination signal. Validation: - tests/template_lockstep.test.sh: 15/15 (canonical count = 20) - scripts/doctor.sh: 78/79 — only gap is workspace AGENTS.md P9 missing reflexive rule, which PR-A fixes. Section 9 Name (Pn) lint passes for both CLAUDE.md + AGENTS.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThis PR releases version 0.2.0, which renumbers primitives P7–P9 to align "Wait" (CI Watcher + Productive Wait) back to P9 and the ChangesPrimitive Renumbering Release
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Replaces #22 (auto-closed when its base branch
feat/primitive-naming-reflexwas deleted on the squash-merge of #21). Identical diff, rebased onto currentmainwhich contains #21's naming rule.The productive-wait primitive returns to P9, matching the
broomva/p9skill repo name. Skill Freshness moves to P7, Branch+Worktree Janitor moves to P8.This closes the Name (Pn) recall-key failure mode: under the interim
P7=Wait/P8=Freshness/P9=Janitornumbering, thebroomva/p9skill name pointed at primitive P9 (Janitor), makingfeedback_p9_reflexive.mdambiguous.broomva/p9skill — historical name)broomva/p9skill — name matches number)Changes (same as the original #22)
SKILL.md: description-block prose + primitive table P7/P8/P9 swap + Short-name index in the naming-convention section.references/primitives.md: TOC + section bodies P7/P8/P9 swap + Short-name index. Legacy-path callouts.assets/templates/settings.json.snippet: skill-freshness-hook.sh's_bstack_primitiveannotation flipped P8 → P7.assets/templates/policy.yaml.template: two comment headers updated for P9 productive-wait.scripts/doctor.sh: comment block + P_NAMES + REFLEXIVE_PRIMS + HOOK_LABELS + SCRIPT_PATHS all updated. NEW Section 9 — Naming convention propagation lints CLAUDE.md + AGENTS.md for the Name (Pn) rule + 20-entry Short-name index.tests/template_lockstep.test.sh: explanatory comment updated.VERSION: 0.1.0 → 0.2.0CHANGELOG.md: 0.2.0 entry.Test plan
tests/template_lockstep.test.sh— 15/15 passed (canonical count = 20)scripts/doctor.sh— 78/79 passed (the 1 workspace-side gap will close when workspace PR fix(0.21.9): --skill install commands require --full-depth (dogfood finding) #62 lands)broomva/workspace#62landedCompanion PR
Workspace PR:
broomva/workspace#62wires the runtime mechanisms (CLAUDE.md + AGENTS.md + scripts/skill-freshness-hook.sh + scripts/branch-janitor.sh + memory feedback files).Why a new PR
The original #22 was stacked on #21's branch. When you squash-merged #21 with
--delete-branch, GitHub auto-closed #22. The branch state was rebased locally onto the newmain, but the workspace control gate (Gate (P2)) correctly blocked the force-push to the original branch (G1: force-push policy). Pushed to a new branch + opened this fresh PR — same diff, clean base.🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation
Chores