diff --git a/SKILL.md b/SKILL.md index d3140e9..fbf1e24 100644 --- a/SKILL.md +++ b/SKILL.md @@ -1,7 +1,7 @@ --- name: bstack description: | - The Broomva Stack — eleven irreducible primitives (P1–P11) that turn any + The Broomva Stack — twelve irreducible primitives (P1–P12) that turn any agent-driven workspace into a self-operating system, plus 28 curated skills that ship with the stack. The primitives are not optional features; they are the substrate. P1 captures every session as episodic memory. P2 gates @@ -25,7 +25,7 @@ description: | # bstack — The Broomva Stack -**Eleven irreducible primitives. Twenty-eight curated skills. One self-operating workspace.** +**Twelve irreducible primitives. Twenty-nine curated skills. One self-operating workspace.** bstack is a *portable harness metalayer* — it composes existing skills into a binding primitive contract that the agent enforces by reasoning, the doctor enforces by checking, and the bootstrap enforces by scaffolding. @@ -48,7 +48,7 @@ Then, in your agent session: ## What bstack enforces -The eleven primitives. Each closes one specific failure mode that drifts into entropy in unsupervised sessions: +The twelve primitives. Each closes one specific failure mode that drifts into entropy in unsupervised sessions: | # | Primitive | Closes | |---|---|---| @@ -63,6 +63,7 @@ The eleven primitives. Each closes one specific failure mode that drifts into en | **P9** | Branch + Worktree Janitor | squash-merge accumulation | | **P10** | Worktree Hygiene Discipline | dirty-tree drift across the PR lifecycle | | **P11** | Empirical Feedback Loop | shipping code that compiles but doesn't work | +| **P12** | Persistent Loop Discipline (`broomva/persist` skill) | long-horizon work decaying as the context window rots | Full reference: see [references/primitives.md](references/primitives.md). @@ -137,9 +138,9 @@ Report results. If any checks fail, fix them before proceeding. `scripts/doctor.sh`. Seven check sections: 1. Governance files exist (CLAUDE.md, AGENTS.md, .control/policy.yaml) -2. CLAUDE.md primitives table has all P1–P11 rows + correct count header +2. CLAUDE.md primitives table has all P1–P12 rows + correct count header 3. AGENTS.md has each primitive section (`### P1:` through `### P11:`) -4. Reflexive Trigger Rules present for P6, P7, P10, P11 (the reasoning-enforced primitives) +4. Reflexive Trigger Rules present for P6, P7, P10, P11, P12 (the reasoning-enforced primitives) 5. `.control/policy.yaml` has required blocks (`ci_watch:`, `ci_heal:`, `auto_merge:`) 6. `.claude/settings.json` wires the expected hook scripts (P1, P2, P8) 7. Each primitive's mechanism is reachable on disk @@ -213,7 +214,7 @@ This is the f₃ dynamics function at L3 of the RCS hierarchy. See [references/p ## See also -- [references/primitives.md](references/primitives.md) — full P1–P11 reference with reflexive triggers +- [references/primitives.md](references/primitives.md) — full P1–P12 reference with reflexive triggers - [references/skills-roster.md](references/skills-roster.md) — all 28 skills with install commands - [references/stack-architecture.md](references/stack-architecture.md) — layer dependency diagram - [references/quickstart.md](references/quickstart.md) — 5-minute install walkthrough diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index e45e782..d6b3211 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -22,6 +22,7 @@ declare -A SKILL_REPOS=( [control-metalayer-loop]="broomva/control-metalayer" [harness-engineering-playbook]="broomva/harness-engineering-skill" [p9]="broomva/p9" + [persist]="broomva/persist" [agent-consciousness]="broomva/control-metalayer" [knowledge-graph-memory]="broomva/control-metalayer" [prompt-library]="broomva/prompt-library" @@ -51,7 +52,7 @@ declare -A SKILL_REPOS=( ) ORDERED_SKILLS=( - agentic-control-kernel control-metalayer-loop harness-engineering-playbook p9 + agentic-control-kernel control-metalayer-loop harness-engineering-playbook p9 persist agent-consciousness knowledge-graph-memory prompt-library symphony symphony-forge autoany deep-dive-research-orchestrator skills skills-showcase @@ -66,7 +67,7 @@ skipped=0 failed=0 echo "=== bstack bootstrap ===" -echo "Installing 30 Broomva Stack skills..." +echo "Installing 31 Broomva Stack skills..." echo "" for skill in "${ORDERED_SKILLS[@]}"; do @@ -94,7 +95,7 @@ done echo "" echo "=== bstack skills install complete ===" echo " Installed: $installed | Skipped: $skipped | Failed: $failed" -echo " Total: $((installed + skipped))/30" +echo " Total: $((installed + skipped))/31" [ "$failed" -gt 0 ] && echo " Run 'bstack validate' to diagnose issues." # ─── Phase 2: scaffold missing governance files ──────────────────────────── diff --git a/scripts/doctor.sh b/scripts/doctor.sh index 1497906..8d7f8bc 100755 --- a/scripts/doctor.sh +++ b/scripts/doctor.sh @@ -82,16 +82,16 @@ done section "2. CLAUDE.md primitives table" CLAUDE="$WORKSPACE/CLAUDE.md" if [ -f "$CLAUDE" ]; then - EXPECTED_COUNT=11 - if grep -qE "^(Eleven|11) irreducible building blocks" "$CLAUDE"; then - ok "primitive count header reads Eleven/11" + EXPECTED_COUNT=12 + if grep -qE "^(Twelve|12) irreducible building blocks" "$CLAUDE"; then + ok "primitive count header reads Twelve/12" else - ACTUAL=$(grep -oE "^(One|Two|Three|Four|Five|Six|Seven|Eight|Nine|Ten|Eleven|[0-9]+) irreducible" "$CLAUDE" | head -1) - gap "primitive count header off (expected 'Eleven irreducible'; saw '$ACTUAL')" \ + ACTUAL=$(grep -oE "^(One|Two|Three|Four|Five|Six|Seven|Eight|Nine|Ten|Eleven|Twelve|[0-9]+) irreducible" "$CLAUDE" | head -1) + gap "primitive count header off (expected 'Twelve irreducible'; saw '$ACTUAL')" \ "edit CLAUDE.md → 'Bstack Core Automation Primitives' header" fi - for n in 1 2 3 4 5 6 7 8 9 10 11; do + for n in 1 2 3 4 5 6 7 8 9 10 11 12; do if grep -qE "^\| P$n \|" "$CLAUDE"; then ok "P$n row present" else @@ -116,6 +116,7 @@ declare -a P_NAMES=( "P9: Branch + Worktree Janitor" "P10: Worktree Hygiene" "P11: Empirical Feedback Loop" + "P12: Persistent Loop Discipline" ) if [ -f "$AGENTS" ]; then for entry in "${P_NAMES[@]}"; do @@ -133,7 +134,7 @@ fi section "4. AGENTS.md reflexive trigger rules" # Primitives whose discipline is enforced via agent reasoning rather than hooks. # These MUST contain a Reflexive Trigger Rule subsection. -declare -a REFLEXIVE_PRIMS=(P6 P7 P10 P11) +declare -a REFLEXIVE_PRIMS=(P6 P7 P10 P11 P12) if [ -f "$AGENTS" ]; then for prim in "${REFLEXIVE_PRIMS[@]}"; do # Look for "P{n} is a reflex" OR "Reflexive Trigger Rule" in proximity to the prim section @@ -201,8 +202,9 @@ SCRIPT_PATHS=( "skills/p9/scripts/p9.py" "scripts/skill-freshness-hook.sh" "scripts/branch-janitor.sh" + "skills/persist/scripts/persist.py" ) -SCRIPT_LABELS=(P1 P2 P6 P7 P8 P9) +SCRIPT_LABELS=(P1 P2 P6 P7 P8 P9 P12) for i in "${!SCRIPT_PATHS[@]}"; do path="${SCRIPT_PATHS[$i]}" label="${SCRIPT_LABELS[$i]}"