Repository navigation
OpenCode GraphAgent v1.0.84
Immutable
release. Only release title and notes can be modified.
opencode 1.0.84
Stable release from main branch. This release lets the plan decide how many implementation writers run in parallel, and makes a review ACCEPT mean that nothing blocking remains.
馃幆 Features
- Plan-driven fan-out of parallel writers (#861).
- A
codingblock, or an implementation node, can declarefan_out: <plan-block-id>. That plan then returns work packages, each with anid, aninstructionand awrite_set. - When the writer becomes ready, two or more disjoint packages run as parallel writers named
<writer>--<package>. The writer's own id becomes their implementation aggregator, so verify and review bindings stay unchanged. - How many packages exist and where they split is the planner's call. One package runs the writer as authored.
- The engine only declines parallelism it cannot prove safe: malformed or duplicate ids, empty or overlapping write sets, path traversal, or a node-ceiling breach. In that case the writer runs serially with the reason in its prompt and the log. The workflow does not fail.
- Expansion goes through the durable extend path. It is fenced against the scheduling attempt that planned it, so a parent replan or cancel that lands first wins. A crash before it commits expands again on the next round.
- Package writers get their own recovery identity, and write-set paths are canonicalized before the overlap check.
- A
The model-facing workflow schema gains fan_out on blocks and nodes. Workflows without it compile and run unchanged.
馃悰 Bug Fixes
- A review ACCEPT is checked, not trusted (#862).
- Before, the engine only checked the verdict value and the implementation fingerprint echo. An ACCEPT that still listed required actions, or that overrode a lane's blocking finding, opened the gate silently.
- Review lanes compiled from
reviewblocks now return a structured verdict with blockingrequired_actions. - Settlement now fails an ACCEPT that lists its own required actions. It also fails an ACCEPT that leaves a required action raised by a completed dependency unrefuted. The decision refutes each one in
refutedby node, index and reason, or submits REJECT. - Plain and fenced JSON evidence are read the same way as verdict gates read them. The live path and crash recovery apply the same rule.
- Persisted workflows keep working: free-text legacy lanes carry no structured actions, so only the ACCEPT with empty
required_actionsrule applies to them.
No public HTTP shape, durable event version, database schema or migration changed. Review lane and decision output schemas gained fields.
馃И Test Summary
Merged branch (main with #862, plus #861):
Opencode DAG + tool suites (test/dag, test/tool): 1,478 passed, 3 skipped, 0 failed
DAG core gate (test:dag-core): all behavior and coverage floors passed
Core command guide suite: 26 passed, 0 failed
Opencode typecheck: passed
Lint: 4,673 warnings, 0 errors (cap 4,675)
Local runs used a newer Bun, Node and Go than the repository pins. The pinned toolchain ran in CI on each pull request head.
The new regressions cover:
- Fan-out: compiler output and validation, expansion through the real scheduler loop, a single package, overlapping and dot-segment write sets, a node-ceiling breach, recovery identity, and a stale extend fence.
- ACCEPT consistency: own required actions, unrefuted and refuted lane actions, fenced evidence, legacy free-text lanes, and the live spawn and crash-recovery settlement paths.
馃攳 Verification
- Both changes landed through pull requests with merge commits, and the required native checks passed on their heads. The checks are Typecheck, Unit Tests (linux) and both E2E platforms.
- Automated review findings on both pull requests were fixed before merge: recovery identity, path canonicalization, a stale-attempt fence, fenced evidence, and test harness use.
- Fan-out was also exercised end to end against a live model on an isolated server and a throwaway repository. The plan produced three packages, three writers ran in parallel, the aggregator joined six files under one fingerprint, verify passed, review accepted, and the workflow completed.
- Left out of this release: anchoring "material" findings to a structured acceptance-criteria list, and whether ACCEPT may proceed when a review lane failed.
Full changelog: graphagent-v1.0.83...graphagent-v1.0.84