Skip to content

v0.6.16

Choose a tag to compare

@github-actions github-actions released this 02 Jun 18:17
· 101 commits to main since this release
28e7b51

Tokenomics-agent verification-report follow-up (Concerns 2/3 + dogfood enforcement + multi-branch self-heal regression). Three changes, one release — all bridge directly into the v1.0 Go rewrite parity matrix.

Fixed — multi-branch self-heal contract restored

The v0.6.15 blanket default-branch skip in the post-merge hook fixed the gh pr merge --squash --delete-branch unstaged-docs case, but broke local-merge regen on main. Concrete failure mode: when agent A merges feat/agent-a locally and agent B merges feat/agent-b against the same main, the merge driver fires for docs/timeline.md with a partial working tree (B's decisions-branches/feat__agent-b.md not yet checked out), producing a timeline missing B's content. The post-merge hook was supposed to sweep — but the v0.6.15 skip made it a no-op on main, freezing the partial output.

v0.6.16 tightens the skip: instead of "skip whenever current branch == default," the hook skips only when HEAD already matches origin/<default> (the actual fast-forward / pull-up case where regen-timeline.yml server-side is authoritative). Local merges that introduce new commits not yet on origin run regen normally, so the working tree reflects the merged-in decision content.

Surfaced by three new regression tests in tests/test_merge_driver.py (two-branch, three-branch, squash-then-merge variants). All exercise real git + logmind subprocess calls — no mocks. The whole dogfood loop assumes this contract holds; without it, every concurrent-PR cycle would silently lose decisions on local merges.

Added — logmind doctor PATH-resolution probe (Concern 3)

Tokenomics-agent's 2026-06-01 recurrence had a non-obvious root cause: logmind doctor reported current for the post-merge hook, but logmind init (invoked from the user's shell, via PATH) was writing a v0.3.4 hook body. The discrepancy: doctor was running via python -m logmind (PYENV_VERSION=3.11.8 → v0.6.13), while logmind typed at the shell prompt resolved through the pyenv shim to an older active pyenv → v0.3.4.

v0.6.16 adds _probe_path_resolution() in core/doctor.py. The probe runs shutil.which("logmind") + <path> --version and compares the resolved binary's version against the currently-running version. Drift surfaces as stale with a marker showing both versions + the conflicting path, so doctor exits non-zero on PATH-conflict (Stack status: DRIFT).

Added — commit-msg hook (dogfood enforcement)

Tokenomics-session feedback "why git add instead of logmind" revealed that even with AGENTS.md guidance, agents fall back to raw git commit on substantive code changes. v0.6.16 adds a commit-msg hook installed by logmind init (alongside post-merge + post-rewrite) that warns when:

  1. Commit message's first line does NOT start with one of the exempt prefixes (logmind:, Revert , Merge , Bump version, chore(release):, fixup!, squash!)
  2. Staged diff exceeds 20 lines across code-bearing extensions (.py .go .ts .tsx .js .jsx .sh .yaml .yml .toml .rs .rb)

WARN by default. STRICT mode (exits 1, rejecting the commit) when .logmind/config.yml contains commit_msg_hook: strict: true. Bypass via git commit --no-verify for intentional overrides. The hook reads strict mode at runtime so users flip without re-installing.

Changed — AGENTS.md template bumps + strengthened framing

  • AGENTS.md.template: v5 → v6 — heading reframed to "REQUIRED for substantive commits" + new blockquote with "DO NOT run raw git add / git commit / git push" warning that references the commit-msg hook
  • AGENTS.md.slim.template: v7-pointer → v8-pointer — same strengthening with the contract sentence preserved verbatim ("logmind log replaces git add + git commit + git push")

The contract sentence stays load-bearing for tests/test_agents_consolidation.py discovery; new v0.6.16 framing is additive on top.

Validation gate

  • pytest -q green: 846 passed, 1 skipped (+17 over v0.6.15 — 3 self-heal + 9 commit-msg-hook + 5 PATH-probe).
  • After propagation: tokenomics agent's next logmind doctor should surface PATH-conflict if their pyenv shim still resolves to v0.3.4. Their next substantive git commit (without logmind log) will fire the warning. Multi-branch self-heal test guards regression for the v1.0 Go rewrite parity gate.

Go v1.0 parity carry-forward

Every v0.6.16 change is a parity item for the Go rewrite waves:

  • B2 (hooks): port _build_commit_msg_hook_body() to internal/hooks/commit_msg_body.go with byte-identical hook body
  • B3 (timeline): port the multi-branch self-heal tests to internal/timeline/merge_driver_test.go
  • B4 (templates): bump embedded AGENTS.md.template + slim variant in embed.FS
  • B6 (doctor): port _probe_path_resolution() to internal/doctor/probe_path.go
  • Phase 2 convergence: cross-binary parity test (Python v0.6.16 vs Go v1.0 timeline.md byte-identical) is a release gate