Releases: mrmaxsteel/mindspec
v0.7.0
Changelog
- 1895aa5 Merge pull request #77 from mrmaxsteel/install_non_priv
- 1c9d36c Merge pull request #78 from mrmaxsteel/chore/beads-1.0.2-upgrade
- 346267f Merge pull request #79 from mrmaxsteel/fix/plan-approve-hard-commit
- d04a417 Merge pull request #80 from mrmaxsteel/fix/plan-validate-zfc
- 2368436 Merge remote-tracking branch 'origin/main' into install_non_priv
- 71ebd26 fix(approve): hard-fail when plan/spec approve leaves dirty worktree
- 44b7900 fix(install): address review — walk up to existing parent, warn when INSTALL_DIR not on PATH
- 08a8e2d fix(install): default to ~/.local/bin for unprivileged installs
- 7faf530 fix(validate): address PR review — shared frontmatter helper, full-status phase derivation, metadata-path tests
- a2399cd fix(validate): remove ZFC violations from plan/spec validation and workflow
- 0bee7e0 refactor: read bd custom statuses from config instead of hardcoding; reframe bd auto-add disable as project policy
v0.6.2
What's Changed
Bug Fixes
-
Session-start hook no longer hangs — Fixed two causes of infinite hang:
io.ReadAll(os.Stdin)blocking before the session-start branch, andinstructtriggering 5.5s dolt cold starts before the protected-branch short-circuit. Session-start on main now completes in ~0.5s (was: infinite hang). (#73) -
Phase derivation between beads —
DerivePhaseFromChildrennow returnsimplement(notplan) when some beads are closed and some open but none in_progress. Eliminates the spurious warning: "stored phase 'implement' disagrees with child-derived phase 'plan'" during multi-bead workflows. (#73) -
Atomic bead claiming —
mindspec nextnow usesbd update --claim(atomic, fails if already claimed) instead of--status=in_progress. Prevents two concurrent agents from claiming the same bead. (#73) -
Dolt pre-warm respects server mode —
prewarmDoltnow checksBEADS_DOLT_SERVER_MODEenv var andmetadata.jsonbefore spawningbd dolt start. Embedded mode users skip the unnecessary server start. (#75)
Performance
- Dolt pre-warm on session start — When server mode is configured, the session-start hook fires
bd dolt startin the background (~300ms). Subsequentbdcalls connect to the running server (~50ms vs ~5.5s cold start). - Protected branch fast path — On main/master,
instructand session-start render idle guidance inline without querying beads at all. - Fewer bd calls —
DiscoverActiveSpecsnow queries only open/in_progress epics (2 calls) instead of all statuses (3+ calls).
Improvements
IsValidPhasein state package — Includes terminal states like "done" that are valid in metadata but not operating modes. Replaces ad-hocModeDonechecks.RenderIdleIfProtected— Shared function in instruct package eliminates duplication between hook.go and instruct.go.- Gitignore cleanup —
.beads/backup/and.beads/push-state.jsonadded to.beads/.gitignoreto stop pollutinggit status. (#74)
Other
Full Changelog: v0.6.1...v0.6.2
v0.6.1
Improvements
- STOP messages after
mindspec completeandmindspec plan approvenow include/clear+mindspec nexthint, giving agents clearer guidance on what to do next (#71)
Internal
- LLM test harness hardened for Haiku reliability (SingleBead, StopAfterComplete, StopDoesNotBlockApproveImpl)
- HISTORY.md updated with
/clearhint test results
v0.6.0
Highlights
Execution Layer Interface (Spec 077) — New Executor interface cleanly separates enforcement logic (what should happen) from execution (how it happens). All approve/complete/cleanup commands now accept an Executor, enabling mock-based testing without git. GitExecutor renamed to MindspecExecutor.
Location-Agnostic Commands (Spec 079) — mindspec next and mindspec complete now work from anywhere in the repo. No need to be in a specific worktree. Multi-spec prompt when ambiguous, --spec flag for explicit targeting, integer prefix resolution (e.g. --spec 079).
Epic Lifecycle Metadata (Spec 080) — Phase derivation is now metadata-first: approval commands write phase to bead metadata, eliminating drift between bead state and lifecycle phase. Removes auto-next behavior in favor of explicit per-bead claiming.
Features
- Self-Contained Beads (Spec 074) — Bead fields (spec context, acceptance criteria, branch, worktree path) populated at plan approval. Replaced
primer.gowithRenderBeadContext. Plan re-approval safeguards prevent accidental overwrites. - ADR Store Interface (Spec 075) —
Storeinterface abstracts ADR access, enabling future backend flexibility (e.g. beads-backed ADR storage). - Plan Decomposition Quality (Spec 076) — Research-backed heuristics for plan decomposition quality validation. New
validate/plan.gochecks for bead sizing, dependency structure, and acceptance criteria completeness. - Per-Bead Acceptance Criteria (Spec 078) — Plans now require explicit acceptance criteria per bead, enforced at plan approval. Validation rejects vague or missing criteria.
- Executor Docs & Tests (Spec 081) — Architecture documentation overhaul with two-layer model. Renamed
internal/specinit/tointernal/spec/. Added stop-behavior LLM tests (StopAfterComplete,StopDoesNotBlockApproveImpl).
Improvements
- Auto-claim first bead on plan approve (#56)
llm-test-fixskill for autonomous test fixing (#63)- STOP messages now include
/clear+mindspec nextguidance (#71) - Instruct templates cleaned up: removed stale auto-claims text, dead
--no-nextflag - Architecture docs rewritten with two-layer model (workflow layer + execution engine)
- README rewritten with clearer architecture framing
Bug Fixes
- Correct
--acceptanceflag forbd create(#64) - Dolt port isolation for LLM test sandbox (#57)
- SingleBead harness template syntax, phase sync, cleanup hardening (#69)
- Verify bead branch is merged before force-removing worktree
- Resolve spec from bead ID for cross-worktree operations
- Phase derivation handles beads auto-close correctly
DiscoverActiveSpecsfilters childless epics regardless of status- Complete command requires bead ID (no more implicit targeting)
Refactoring
- Go module renamed to
github.com/mrmaxsteel/mindspec(#58) internal/gitops/→internal/gitutil/(all import paths updated)internal/specinit/→internal/spec/with packagespecGitExecutor→MindspecExecutorthroughout codebase- Deleted
primer.go(220 lines) — replaced bybeadctx.go(94 lines)
Testing
- 18 LLM behavioral test scenarios, 16/18 passing on Opus
- New stop-behavior tests validate agent respects STOP instructions
- Mock executor enables unit testing approval logic without git operations
- Plan validation has 386+ lines of new test coverage
Stats
15 PRs merged · 8 specs implemented · 62 Go files changed · +5,145 / -2,558 lines
Full Changelog: v0.5.1...v0.6.0
v0.5.1
Changelog
- 22f50a0 Add llm-test Codex skill
- f7ca592 Merge bead/mindspec-3y4t.1
- f310d41 Merge bead/mindspec-3y4t.2
- 79a560a Merge bead/mindspec-7yzq.1
- c03c35b Merge bead/mindspec-9dx0.1 into spec/059-harness-coverage
- 432d08b Merge bead/mindspec-9dx0.2 into spec/059-harness-coverage
- 40754ac Merge bead/mindspec-9dx0.4 into spec/059-harness-coverage
- 78dfc7e Merge bead/mindspec-9dx0.5 into spec/059-harness-coverage
- d8b08d5 Merge bead/mindspec-9dx0.6 into spec/059-harness-coverage
- 62f080e Merge bead/mindspec-pwa1.4
- eb8b476 Merge bead/mindspec-pwa1.5
- a0e9595 Merge bead/mindspec-pwa1.6
- 633d7c5 Merge bead/mindspec-scal.1
- 605e09b Merge bead/mindspec-sx1h.1
- 2b0ea00 Merge branch 'main' into cleanup/068-lifecycle-yaml
- a445192 Merge branch 'main' into spec/065-freshness-gate-messaging
- e57b9f9 Merge branch 'main' into spec/070-sandbox-beads-isolation
- b3d0a3b Merge branch 'main' of https://github.com/mrmaxsteel/mindspec
- 8a18aab Merge branch 'spec/059-harness-coverage'
- c56c37f Merge pull request #25 from mrmaxsteel/codex/skill-llm-test
- d8935de Merge pull request #26 from mrmaxsteel/codex/fix-mindspec-bas1-main-guard
- b887b0c Merge pull request #27 from mrmaxsteel/fix/revert-skill-names-to-ms-dash
- 4004adc Merge pull request #28 from mrmaxsteel/chore/lifecycle-yaml-open-specs
- ef9c112 Merge pull request #29 from mrmaxsteel/fix/042-lifecycle-done
- e306fc7 Merge pull request #30 from mrmaxsteel/fix/056-remaining-items
- 9854227 Merge pull request #31 from mrmaxsteel/fix/056-lifecycle-done
- f56841e Merge pull request #32 from mrmaxsteel/spec/058-zero-git-lifecycle
- 589b142 Merge pull request #33 from mrmaxsteel/fix/remove-gh-from-impl-approve
- 4857cea Merge pull request #34 from mrmaxsteel/fix/harness-push-only-assertions
- 79d6701 Merge pull request #35 from mrmaxsteel/merge/059-harness-coverage
- 8e8ab82 Merge pull request #36 from mrmaxsteel/spec/060-eliminate-focus-lifecycle
- 21fc92f Merge pull request #37 from mrmaxsteel/spec/061-spec-list
- fa1fa78 Merge pull request #38 from mrmaxsteel/spec/062-lifecycle-bugs
- 8afdb70 Merge pull request #39 from mrmaxsteel/spec/063-impl-approve-auto-cd
- 71377c7 Merge pull request #40 from mrmaxsteel/spec/064-stale-lifecycle-cleanup
- a3a6363 Merge pull request #41 from mrmaxsteel/spec/065-freshness-gate-messaging
- b505579 Merge pull request #42 from mrmaxsteel/spec/066-impl-approve-no-main-commit
- 7517d0e Merge pull request #43 from mrmaxsteel/spec/067-lifecycle-test-epic-leak
- a0e740e Merge pull request #44 from mrmaxsteel/spec/067-harness-adr023-compat
- 5c5347d Merge pull request #45 from mrmaxsteel/cleanup/068-lifecycle-yaml
- ab8fc08 Merge pull request #46 from mrmaxsteel/spec/069-complete-idempotent
- a0ec328 Merge pull request #47 from mrmaxsteel/spec/070-sandbox-beads-isolation
- 9115bf1 Merge pull request #48 from mrmaxsteel/spec/071-recording-config-flag
- 8b672b0 Merge pull request #49 from mrmaxsteel/fix/skip-next-false-positives
- 2f3885d Merge pull request #50 from mrmaxsteel/fix/harness-worktree-topology
- 9402ae5 Merge pull request #51 from mrmaxsteel/fix/testing-md-update
- 2fd8300 Merge pull request #52 from mrmaxsteel/spec/072-hook-cleanup
- 5952506 Merge pull request #54 from mrmaxsteel/spec/073-llm-test-coverage
- b5aa8fd Merge pull request #55 from mrmaxsteel/fix/llm-test-improvements
- 21b2dbf Merge pull request #56 from mrmaxsteel/feat/plan-approve-auto-next
- 9b1c455 Merge pull request #57 from mrmaxsteel/fix/dolt-port-isolation
- 15ba1c9 Merge pull request #58 from mrmaxsteel/refactor/module-path
- c4d9464 Merge remote-tracking branch 'origin/main' into fix/harness-worktree-topology
- aa89b17 adr: accept ADR-0023 — eliminate focus file, beads as single state authority
- 3626908 adr: amend ADR-0023 to also eliminate lifecycle.yaml
- 719d8c1 adr: propose ADR-0023 — eliminate focus file, beads as single state authority
- 908384b adr: update ADR-0023 to use spec_num/spec_title metadata schema
- db81d87 approve: plan 058-zero-git-lifecycle
- 4685070 approve: spec 058-zero-git-lifecycle
- fabbfa2 bd init: initialize beads issue tracking
- f55daf3 bd: backup 2026-03-01 21:12
- 3ca1ebd bd: backup 2026-03-01 21:48
- b67a9ba bd: backup 2026-03-01 22:19
- 1211e99 bd: backup 2026-03-01 22:45
- 64b617b bd: backup 2026-03-01 23:32
- 66c7c3b bd: backup 2026-03-02 09:01
- e2c2a99 bd: backup 2026-03-02 09:17
- b252029 bd: backup 2026-03-02 09:37
- 364c7a3 bd: backup 2026-03-02 09:54
- 213639a bd: backup 2026-03-02 10:28
- b66b16a bd: backup 2026-03-02 10:56
- 82200ea bd: backup 2026-03-02 12:49
- b317962 bd: backup 2026-03-02 15:04
- d404b9b bd: backup 2026-03-02 22:57
- d2b6ae8 bd: backup 2026-03-02 23:15
- fac3197 bd: backup 2026-03-02 23:44
- da54a4e bd: backup 2026-03-03 08:54
- 4c25d16 bd: backup 2026-03-03 09:19
- ab64a76 bd: backup 2026-03-03 09:36
- 65f504c bd: backup 2026-03-03 09:58
- 8877839 bd: backup 2026-03-03 11:09
- 811aff2 bd: backup 2026-03-03 13:04
- 946630e bd: backup 2026-03-03 14:15
- 4d0a782 bd: backup 2026-03-03 15:04
- eafa724 bd: backup 2026-03-03 16:09
- 70cab2e bd: backup 2026-03-03 16:37
- 9c5b50c bd: backup 2026-03-03 17:06
- 0c3fce4 bd: backup 2026-03-03 18:04
- 384f712 bd: backup 2026-03-03 18:50
- 47c7693 bd: backup 2026-03-03 20:44
- a95a1cb bd: backup 2026-03-03 22:17
- 033884a bd: backup 2026-03-03 22:35
- 155ec6f bd: backup 2026-03-03 23:03
- c25ec44 bd: backup 2026-03-03 23:23
- 1221fe1 bd: backup 2026-03-03 23:39
- b66958a bd: backup 2026-03-04 00:02
- 563cac2 bd: backup 2026-03-04 00:17
- 01c9f41 bd: backup 2026-03-04 01:03
- 5d500ba bd: backup 2026-03-04 01:26
- e103646 bd: backup 2026-03-04 02:15
- 73f20ab bd: backup 2026-03-04 02:31
- ad51002 bd: backup 2026-03-04 02:46
- 5430e92 bd: backup 2026-03-04 03:32
- d1e216f bd: backup 2026-03-04 07:28
- 670c777 bd: backup 2026-03-04 08:03
- 35a0035 bd: backup 2026-03-04 08:31
- 7a2605f bd: backup 2026-03-04 10:08
- 3c7ae27 bd: backup 2026-03-04 10:24
- 9a1a588 bd: backup 2026-03-04 11:38
- 8394674 bd: backup 2026-03-04 13:46
- bbc2ed0 bd: backup 2026-03-04 14:02
- cdeb1ce bd: backup 2026-03-04 16:12
- 512fb72 bd: backup 2026-03-04 16:32
- d1cdf55 bd: backup 2026-03-04 17:00
- 20cf6bf bd: backup 2026-03-04 17:32
- 5a2...
v0.5.0
v0.5.0
Architecture: Beads as Single State Authority (ADR-0023, Spec 060)
The focus file and lifecycle.yaml have been eliminated. All workflow state is now derived from beads — the issue tracker is the single source of truth for spec phase, active work, and progress. This is the biggest internal change since v0.1.0.
- Migrate all commands (approve, next, complete, instruct, state) to beads-derived state
- Remove
focus.yamlandlifecycle.yamlreads/writes entirely - Phase derivation from epic + child bead statuses
- Clean up 12 stale lifecycle.yaml files from historical specs (Spec 064)
Zero Raw Git Lifecycle (Spec 058)
Agents no longer need raw git for the happy path — all git operations are handled by mindspec commands.
- Worktree enforcement for
nextandcomplete— commands auto-redirect to the correct worktree - Removed
--allow-mainescape hatch - Updated all CLI messages to reference
mindspeccommands instead of raw git
Hook Cleanup (Spec 072)
- Replaced guard hooks with thin-shim pre-commit + session-start hooks
- Added stale hook cleanup in
setup claude - Simplified hook architecture significantly
New Commands
mindspec spec list(Spec 061) — table and JSON output for all specs with phase statusmindspec cleanup— deferred worktree/branch cleanup after impl approve
Workflow Improvements
- Complete idempotency (Spec 069) — running
mindspec completetwice won't fail; unmerged-bead guard added tonext - Impl approve auto-cd (Spec 063) — auto-cd into spec worktree when approving
- Freshness gate messaging (Spec 065) — removed
--forcehint from error messages - Recording config flag (Spec 071) —
recording.enabledconfig, default off
Bug Fixes
- Fix bead-to-spec merge for nested worktrees (Spec 062)
- Fix
queryEpicsto return all statuses (open, in_progress, closed) - Auto-commit spec worktree in impl approve before cleanup
- Fix
DiscoverActiveSpecsfiltering childless epics regardless of status - Fix
SpecIDFromMetadataslugification to match spec ID format - Fix pre-commit hook blocking impl commits on spec/ branches
LLM Test Harness (Specs 059, 067, 073)
- Added
skip_nextandskip_completeanalyzer rules - New assertion helpers: focus fields, beads state, merge topology, commit messages
- New scenarios: BlockedBeadTransition, lifecycle test with ADR-0023 format
- Sandbox beads isolation — each sandbox gets its own dolt server on a random port (Spec 070)
- Turn-based lifecycle proximity for skip_next exemption
Full Changelog: v0.4.1...v0.5.0
v0.4.1
What's Changed
README overhaul
- Add comprehensive feature list organized by category (Lifecycle, Context Engineering, Workflow Automation, Observability, Setup & Integration)
- Add "Tested Against Real Agents" section describing the behavioral test harness
- Trim redundant sections (AgentMind Quick Start, How It Works, CLI Reference) — content lives in guides
- Fix guide links to match current docs layout (
.mindspec/docs/user/guides/) - Update project structure tree to reflect current state
- Add Codex support to feature list and setup examples
Workflow improvements
- Migrate commands to skills, add agents and copilot setup (#23)
- Fix BEGIN/END managed markers, rename
ms-*toms:*everywhere (#22) - Copilot setup no longer generates
.github/prompts/(#21) - Claude setup uses
.claude/skills/instead of.claude/commands/(#20)
Worktree-aware spec resolution (Spec 057)
SpecDir()automatically finds spec artifacts regardless of which worktree the process runs fromActiveSpecsis now worktree-aware- Removes
EffectiveSpecRoot— all callers use the new worktree-awareSpecDir
Bug fixes
- Fix
mindspec completefrom spec worktree - Fix stale focus file deadlock when worktree deleted
- Fix focus file deadlock by handling absolute paths in hook guards
- Enforce branch protection in idle mode via config
- Block file edits in idle mode instead of warning
- Make focus per-worktree so workflow guard doesn't block unrelated worktrees
- Instruct emits idle guidance on protected branches instead of erroring
Testing
- Add LLM test scenarios: BugfixBranch, MultipleActiveSpecs, StaleWorktree, CompleteFromSpecWorktree
- Deterministic behavioral tests for post-checkout hook
Full Changelog: v0.4.0...v0.4.1
v0.4.0
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- [SPEC 048-impl-approve-cleanup] Merge spec branch to main by @mrmaxsteel in #2
- chore: set merge_strategy to pr by @mrmaxsteel in #3
- [SPEC 049-hook-command] Merge spec branch to main by @mrmaxsteel in #4
- feat(049): consolidate hooks into mindspec hook CLI command by @mrmaxsteel in #5
- feat(049): hook command, workflow guards, and impl-approve preflight by @mrmaxsteel in #6
- [SPEC 050-lifecycle-autocommit] Merge spec branch to main by @mrmaxsteel in #7
- [SPEC 051-worktree-state-propagation] Merge spec branch to main by @mrmaxsteel in #8
- [SPEC 052-session-freshness-gate] Merge spec branch to main by @mrmaxsteel in #9
- [SPEC 053-drop-state-json] Merge spec branch to main by @mrmaxsteel in #10
- [SPEC 054-simplify-lifecycle-beads] Merge spec branch to main by @mrmaxsteel in #11
- fix(054): complete mode-cache → focus migration by @mrmaxsteel in #13
- [SPEC 033-security-hardening-sast-findings] Merge spec branch to main by @mrmaxsteel in #12
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- feat: clean context enforcement for bead starts (Spec 047) by @mrmaxsteel in #1
New Contributors
- @mrmaxsteel made their first contribution in #1
Full Changelog: v0.1.2...v0.2.0