Releases: broomva/bstack
v0.27.1 — fix: L3 rate gate counts mutations, not creations — unblocks the initial bootstrap commit (BRO-1435)
fix: L3 rate gate counts mutations, not creations — unblocks the initial bootstrap commit (BRO-1435)
Found via live dogfooding (P11) of the v0.27.0 autonomous-loop demo: bstack bootstrap activates the L3 rate gate, then the user's very first git commit of the freshly-scaffolded governance is blocked — the gate counted the 5 newly-created L3 files as 5 L3 mutations (5/1 EXCEEDED). Creation is not mutation: there is no prior governance state to destabilize.
Fixed
scripts/l3-rate-gate.sh— staged count: a staged L3 path counts as a mutation only if it already exists atHEAD(git cat-file -e HEAD:<path>). Newly-created L3 files (and the first-ever commit, whereHEADis absent) are exempt.scripts/l3-rate-gate.sh— committed count: usesgit log --diff-filter=Mso commits that added L3 files (e.g. the bootstrap scaffold) don't consume the per-window budget; only commits that modified them do. Also switched the counter fromwc -lon aformat:stream togrep -c ., fixing a latent off-by-one (a single committed L3 mutation previously counted as 0).- The pre-commit template calls the script (no duplicated logic), so this fixes both
bstack bootstrapDay-1 UX and every deployed.githooks/pre-commit.
Added
tests/l3-rate-gate.test.sh— 4 hermetic cases: (A) creating 5 L3 files is exempt, (B) 1 modification is within budget, (C) a 2nd modification in the same window is blocked, (D) non-governance changes are ignored. 4/4 pass.
Notes
- The gate's actual purpose is preserved: governance modifications are still rate-limited to one per
τ_a₃window (verified by case C). Only creation is exempt. - Primitive count unchanged (20).
VERSION0.27.0 → 0.27.1.
v0.27.0 — fix: ship + deploy the dangling P1/P2/P6/P7 hook scripts; scaffold METALAYER + schemas; document the two-flow bootstrap (BRO-1431)
fix: ship + deploy the dangling P1/P2/P6/P7 hook scripts; scaffold METALAYER + schemas; document the two-flow bootstrap (BRO-1431)
Surfaced by building a from-scratch RCS/RSI template (rcs-template) as a gap-discovery probe for bstack's own bootstrap. Found a real safety bug plus two scaffold omissions, and the absence of a generative flow.
Fixed
- Dangling hook scripts (safety bug).
settings.json.snippetwired the P1 (conversation-bridge), P2 (control-gate), P6 (knowledge-catalog-refresh), and P7 (skill-freshness) hooks at${BROOMVA_WORKSPACE}/scripts/*.sh, but bstack shipped none of those scripts and bootstrap never copied them. Result: every workspace bootstrapped anywhere but the bstack origin had a non-functional control gate (P2) — the safety shield silently no-op'd because Claude Code invoked a script that did not exist.doctor §7detected the gap but nothing closed it. Now bstack ships all four (scripts/{control-gate,skill-freshness,conversation-bridge,knowledge-catalog-refresh}-hook.sh, self-contained +$CLAUDE_PROJECT_DIR-portable) and deploys them into$WORKSPACE/scripts/—bootstrapPhase 3.1 andrepair'sdeploy_workspace_hooks(idempotent, never overwrites). Dogfood proof: on a fresh workspace with no bstack on PATH, the deployed control-gate blocksgit push --force(exit 2) and allowsgit status(exit 0).
Added
bootstrapPhase 2 now scaffoldsMETALAYER.md+schemas/{state,action,trace,evaluator,egri-event}.schema.json(the control-systems manifest + typed interfaces). Templates added underassets/templates/+assets/templates/schemas/. Previously only CLAUDE/AGENTS/policy/arcs scaffolded; the manifest and typed contract were omitted.- Two-flow bootstrap doc (SKILL.md). Names and sequences the structured flow (deterministic scaffold — the lossless floor, no LLM) → generative flow (agent-authored, workspace-tailored setup — bespoke, to-the-ceiling) → verify (
bstack doctorgates both). Mirrors the P18 Audience Category-B-projection vs Category-C-generative split, applied to workspace setup. Invariant: never wire a hook whose script isn't deployed.
Notes
- Primitive count unchanged (20). This is a bootstrap correctness + completeness fix, not a new P-row.
- Hook-resolution is now consistent for the workspace-resolved hooks (all four deployed into
$WORKSPACE/scripts/, self-contained on a fresh clone); the L0/L1 audit hooks remain$BSTACK_REPO-referenced (already resolving). VERSION0.26.0 → 0.27.0.
v0.25.0 — feat: doctor advisory + repair backfill for the Development Philosophy section (BRO-1409)
feat: doctor advisory + repair backfill for the Development Philosophy section (BRO-1409)
Follow-up to 0.24.0 (BRO-1406). The scaffold's idempotent-never-overwrite policy means newly-templated content never reaches existing workspaces — so the Development Philosophy section shipped only to new installs. This closes that gap for the section: bstack doctor surfaces it and bstack repair backfills it.
Changed
scripts/doctor.sh— new §4b advisory: ifAGENTS.mdlacks## Development Philosophy, print an[info]nudge to runbstack repair. Informational only — a pre-0.24.0 workspace legitimately lacks it; it is not a GAP and does not fail--strict(mirrors the §12 Pillars / §13 dogfood convention).scripts/repair.sh— newbackfill_philosophy_section(): extracts the section verbatim from the template (heading →## Bstack Core Automation Primitivesanchor, exclusive) via files only (no shell interpolation of content), and inserts it before the target's own anchor line in bothAGENTS.mdandCLAUDE.md. Runs before the "fully bstack-compliant" early-exit (same pattern as the hook merge), since the advisory is not a GAP. Idempotent (skips if present) and non-destructive (insert-only; skips with a warning if the anchor is absent). Honors--dry-run/--apply-all.tests/philosophy-backfill.test.sh— new: backfill + position + content-integrity + idempotency +--dry-run+ missing-anchor + doctor-advisory (13 assertions).references/new-workspace-flow.md— documents §4b + the repair backfill.
Notes
- Primitive count unchanged (20). Governance-substrate tooling, not a P-row.
- Backfill targets content gaps the never-overwrite scaffold skips — a general pattern (the hook merge does the same for
.claude/settings.json). VERSION0.24.0 → 0.25.0.
v0.24.0 — feat: scaffold a Development Philosophy section into AGENTS.md/CLAUDE.md on install (BRO-1406)
feat: scaffold a Development Philosophy section into AGENTS.md/CLAUDE.md on install (BRO-1406)
bstack bootstrap now scaffolds a Development Philosophy section into a new workspace's AGENTS.md (full section) and CLAUDE.md (anchor). It states four guiding principles — Think Before Coding · Simplicity First · Surgical Changes · Goal-Driven Execution — and backs each with the primitive(s) that hold it: Think→P14+P15, Simplicity→P20, Surgical→P14+P20, Goal-Driven→P11+P19, with a note that enforcement strength varies (P14/P15 are hard predicates; P20 is a judgment gate). Previously the scaffold deployed the primitive contract without this stated intent.
Changed
assets/templates/AGENTS.md.template— new## Development Philosophysection between Self-Meta Definition and the primitives table (so the why frames the how): 4-principle → backing-primitive table, the binding Ritual-vs-Substance rule, and an explicit invitation to extend it with project-specific principles.assets/templates/CLAUDE.md.template— short philosophy anchor after Identity, linking toAGENTS.md#development-philosophy.references/new-workspace-flow.md— deployed-files table note updated to describe the philosophy section.
Notes
- No code change in
scripts/bootstrap.sh— Phase 2 (scaffold_governance_file) copies whatever the templates hold. Idempotent-never-overwrite: new installs get the section automatically; existing workspaces are unaffected (backfill is the deferredbstack doctor/repairnext step). - Not a new primitive. Primitive count stays 20. This is governance-substrate content, not a P-row — respects the L3 stability budget (λ₃≈0.006).
- Companion KG artifact (workspace repo, not this repo):
research/entities/tool/karpathy-claude-md-guidelines.mddocuments the lineage + the principle→primitive mapping. VERSION0.23.2 → 0.24.0.- Deferred: (1) a
bstack doctorcheck that lints for the section (makes it contract-enforced + letsrepairbackfill existing workspaces); (2) dogfood into bstack's own root governance +~/broomva.
v0.23.2 — docs: README sync to current contract + bench surfaced + P11 cross-reference (BRO-1376)
docs: README sync to current contract + bench surfaced + P11 cross-reference (BRO-1376)
Closes a documentation-reconciliation gap surfaced by a post-ship audit of BRO-1205 (bench MVP) + BRO-1211 (Databricks live mode). The canonical surfaces (SKILL.md, references/provider-standards.md, CHANGELOG, spec, KG research entities) were already current; the public README.md was frozen at the P11 era and violated the CLAUDE.md Self-Documenting Standards rule #3 (counts must match SKILL.md as the authoritative source). bstack doctor does not lint the README, so the rot was not CI-enforced.
- CHANGED
README.md— synced to the current contract:- "Eleven irreducible primitives" → twenty; primitive table extended P1–P11 → full P1–P20 (wording from SKILL.md's enforcement table).
- "28 curated skills" → 30 (matches SKILL.md authoritative count) across intro, Stack-layers header, and bootstrap description.
- Commands section: was six (bootstrap/doctor/repair/status/validate/revamp); now also documents
bench,wave,crystallize,metrics,skillsunder an "Orchestration & observability" subsection.benchlinks toreferences/provider-standards.md. - Reasoning-enforced primitive set corrected (P6, P9–P20) vs mechanism-enforced (P1, P2, P4, P5, P7, P8); closing narrative "eleven" → "twenty".
- CHANGED
references/primitives.md— P11 Empirical Feedback Loop section now listsbstack benchas the dedicated P11 measurement substrate (table row + paragraph), cross-referencingprovider-standards.mdand the bench spec. - NOTE Out of scope (separate audit): the deeper skill-count reconciliation (SKILL.md says 30 curated;
companion-skills.yamllists 65 full roster incl. optional). README follows SKILL.md per rule #1.
No code, no behavior change. Companion KG artifact (workspace repo, not this repo): research/entities/pattern/openai-compatible-provider-abstraction.md documents the provider-abstraction architecture that BRO-1211 introduced.
v0.23.0 — fix+feat: gitignore-aware, public-repo-aware, non-destructive bootstrap (issue #67)
fix+feat: gitignore-aware, public-repo-aware, non-destructive bootstrap (issue #67)
Found dogfooding v0.22.0 on existing real repos (stimulus, broomva.tech): bootstrap is built for fresh workspaces and did two unsafe things + lacked one needed capability on repos with their own hooks/CI/gitignore.
Fixed
install-l3-stability.shno longer clobbers a TRACKED.githooks/pre-commit. On a repo with a committed pre-commit (e.g. broomva.tech's multimedia-asset validator), bootstrap overwrote it with the bstack L3 rate-gate hook — moving the original to.pre-commit.local— even whencore.hooksPath≠.githooks, so the bstack hook never even fired. Now: if the hook is git-tracked, skip + warn (the committed hook is authoritative;--forcestill allows the move-aside). An untracked hook is still preserved as.pre-commit.localas before.
Added
bootstrap.shPhase 2.6 — gitignore reconciliation + public-repo advisory. Reconciles.gitignoreagainst the committable-vs-machine-local manifest:- machine-local telemetry (
.control/audit/*.jsonl) → auto-added to.gitignoreif missing. - committable substrate (
.control/arcs.yaml,rcs-parameters.toml,policy.yaml) → warns if gitignored (a coverage gap — the loop won't survive a fresh clone), never auto-un-ignores (publishing a maybe-private file is the human's call). - public-repo advisory (via
gh repo view --json visibility, graceful if absent): on a PUBLIC remote, surfaces that scaffolded governance is committable-and-public so the operator reviews for secrets before pushing.
- machine-local telemetry (
tests/gitignore-aware-bootstrap.test.sh— 5 assertions covering both fixes (tracked-hook preserved, untracked-hook sidecar still works, audit-glob added, committable-ignored warning). 5/5.
Notes
- Additive + non-blocking: Phase 2.6 skips gracefully on a non-git workspace; canary 14/14 unaffected.
- The manual handling on stimulus (#1811) + broomva.tech (broomva.tech#211) is the spec this automates.
VERSION0.22.0 → 0.23.0.
v0.21.10 — revert: --full-depth no longer needed after broomva/skills restructure
revert: --full-depth no longer needed after broomva/skills restructure
Companion to broomva/skills PR #11 (merge ab2d05b), which removed the root SKILL.md from broomva/skills to align with the anthropics/skills ecosystem-canonical monorepo shape (best practice per agentskills.io).
With the root SKILL.md gone, the npx skills CLI's default search descends into skills/<name>/ automatically — --full-depth is no longer required.
Reverted
references/skills-roster.md— dropped--full-depthfrom 26--skillinstall commandsscripts/skill-graduate.sh— dropped--full-depthfrom the 4 generated install commands (commit msg, monorepo PR body, redirect-stub README, stub PR body). Future graduations now emit the canonical command form.VERSION0.21.9 → 0.21.10
Net effect across the 0.21.x line
| Release | What it did |
|---|---|
| 0.21.9 | Added --full-depth as a workaround for the root-SKILL.md shadowing (post-dogfood) |
| 0.21.10 | Removed --full-depth after the broomva/skills restructure eliminated the root cause |
The roster's npx skills add broomva/skills --skill <name> commands are now both correct AND minimal — matching the form used by all other monorepos in the ecosystem.
20/20 tests (graduate + audit) still pass.
v0.21.6 — Phase 4f orcahand migration + dedup (final Tier-2 migration)
Phase 4f orcahand migration + dedup (final Tier-2 migration)
The last Tier-2 migration. orcahand consolidated to broomva/skills Tier-2 monorepo (broomva/skills PR #9 merge df4fb13), resolving the Phase-0 contested dedup case.
broomva/orcahand and broomva/orcahand-skill were true duplicates (both 180K, identical SKILL.md + assets/ + references/ + schemas/ + scripts/, both name: orcahand). Per user decision: migrate the canonical (.agents-symlinked) broomva/orcahand → skills/orcahand/; archive BOTH source repos with redirect-stubs.
Source repos deprecated (both, 6mo window until 2026-11-26)
Files changed
references/companion-skills.yaml— 1 NEW entry (orcahand); 63 → 64 totalVERSION—0.21.5→0.21.6CHANGELOG.md— this entry
Migration complete
47 skills now in broomva/skills monorepo. All Tier-2 candidates from the inventory doc are migrated, except broomva/mirage (no remote on GitHub — flagged as an anomaly, not actionable). The skills-monorepo migration arc (Phases 2–4f) is complete.
v0.21.5 — Phase 4e neuroscience migration (TRIBE v2 family)
Phase 4e neuroscience migration (TRIBE v2 family)
3 standalone-repo neuroscience skills migrated to broomva/skills Tier-2 monorepo (broomva/skills PR #8 merge ca7de88):
tribe-v2-agent-alignment— cortical alignment benchmarking for AI encoderstribe-v2-bci-applied— applied BCI + neuro-informed content optimizationtribe-v2-neuroscience— in-silico fMRI prediction
All NEW registry entries (none were previously registered).
Finding: _shared/ is demand-driven
The strategy doc anticipated a _shared/tribe-v2/ directory. On inspection, the 3 skills have DISJOINT reference sets (arcan-integration / cortical-region-atlas / brain-regions — no file overlap). No _shared/ extraction warranted. This validates the principle: _shared/<category>/ is created only when concrete shared content exists, never speculatively.
Source repos deprecated (6mo window until 2026-11-26)
- broomva/tribe-v2-agent-alignment PR #1 (merge
7bca620) - broomva/tribe-v2-bci-applied PR #1 (merge
1e3ea14) - broomva/tribe-v2-neuroscience PR #1 (merge
64165b7)
Files changed
references/companion-skills.yaml— 3 NEW entries (60 → 63 total)VERSION—0.21.4→0.21.5CHANGELOG.md— this entry
Cumulative monorepo state: 46 skills
v0.21.4 — Phase 4d specialty domain migration (largest batch)
Phase 4d specialty domain migration (largest batch)
17 standalone-repo skills migrated to broomva/skills Tier-2 monorepo (broomva/skills PR #7 merge 1be5fd9). 2 renamed during migration to drop -skill suffix per ecosystem norm.
By sub-category:
Hardware, robotics, physical (6): bitnet, capx-agentic-robotics, openrocket-sim, sdr-satellite, ocean-genomics, microgrid-agent
Compute & remote infrastructure (4): colab-remote, remote-gpu, claude-code-channels, claude-remote-sessions
Audio, voice, media (2, both renamed): omnivoice (from omnivoice-skill), livecoding
Advisory & consulting (3, one renamed): phronesis, procurer, alkosto-wait-optimizer (from alkosto-wait-optimizer-skill)
Health & body (2): health, founder-mode-oncology (Phase-0 contested case lean accepted)
Source repos deprecated (17 redirect-stubs merged 2026-05-26)
bitnet · livecoding · openrocket-sim · sdr-satellite · capx-agentic-robotics · ocean-genomics · phronesis · procurer · alkosto-wait-optimizer-skill · omnivoice-skill · microgrid-agent · claude-code-channels · claude-remote-sessions · colab-remote · remote-gpu · health · founder-mode-oncology — all archived after 6mo deprecation (2026-11-26).
Excluded from this batch
broomva/mirage— repository does not exist on GitHub (anomaly flagged in inventory § 8)broomva/orcahand— Phase-0 contested dedup decision betweenbroomva/orcahand(runtime) andbroomva/orcahand-skill(duplicate); deferred to Phase 4f
Files changed
references/companion-skills.yaml— 16 NEW entries + 1 entry rewritten (alkosto-wait-optimizer)references/skills-roster.md— install commands updatedVERSION—0.21.3→0.21.4CHANGELOG.md— this entry
Total registry size
44 → 60 entries (+16 net)
Cumulative monorepo state
43 skills under broomva/skills/skills/:
- 2 workflow & lifecycle
- 9 strategy & decision intelligence
- 9 content & media
- 3 research & intelligence
- 3 finance
- 6 hardware/robotics/physical
- 4 compute & remote
- 2 audio/voice/media
- 3 advisory/consulting
- 2 health & body