Skip to content

v3.4.1

Choose a tag to compare

@mrbro-bot mrbro-bot released this 28 Jul 16:20
· 376 commits to main since this release
e5986ad

What's new

Bug Fixes

Fixed a workflow-guard recovery bug that surfaced when Systematic was registered twice in the same OpenCode session — for example, when the published package (via user config) and the repo source (via project config) were both loaded. Both registrations had been appending receipt markers into the same shared, unnamespaced metadata array, so on restart each registration saw the other's seed during recovery, misread it as a conflicting-seed, and forced the runtime to unavailable. The guard reported guard-unavailable even when protected config was active, and both registrations failed closed.

Recovery now classifies markers collected from session parts into own, provably-foreign, or ambiguous, and each registration recovers only its own markers, filtered by registration digest, instead of treating a foreign registration's markers as a conflict. This is applied on both the main-session recovery path and the foreground-task child rollup path. Ambiguity still fails closed: if no own seed is resolvable and any marker is malformed or seedless, recovery still reports guard-unavailable rather than silently resetting the guard and risking state loss or corruption. Genuinely foreign-only marker arrays still start fresh, and the change is read-side only — the persisted marker format is unchanged and backward-compatible with existing sessions.

Documentation

The public tagline was repositioned from "structured/compound-engineering workflows" to "Compound-engineering loops for OpenCode, Pi, and Claude Code," applied uniformly across package.json, GitHub About (.github/settings.yml), the Claude Code marketplace and plugin/output-style descriptions, the README, the banner SVG, the docs site config and landing page, ARCHITECTURE.md, AGENTS.md, and the regenerated OCX registry. The pass also fixed stale harness lists that had named only OpenCode or only Claude Code, updating them to name all three shipped harnesses; runtime system-prompt prose was left unchanged.

Two new solution docs were added from the agent-browser vendoring work (v3.4.0): a best-practices doc on vendoring an npm-packaged upstream skill as a generated, drift-guarded artifact (pinned devDependency, copy from node_modules, CI drift gate, attribution version sync, Renovate postUpgradeTasks), and a test-failures doc covering an unguarded generator main() that silently repaired drift when imported by its own unit test, fixed with an import.meta.main guard. Five related docs received reciprocal cross-links.

Compare

v3.4.0...v3.4.1