Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions SKILL.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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.

Expand All @@ -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 |
|---|---|---|
Expand All @@ -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).

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
7 changes: 4 additions & 3 deletions scripts/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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 ────────────────────────────
Expand Down
18 changes: 10 additions & 8 deletions scripts/doctor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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]}"
Expand Down