Skip to content

OpenCode GraphAgent v1.0.84

Choose a tag to compare

@github-actions github-actions released this 22 Oct 03:41
Immutable release. Only release title and notes can be modified.
dbde81a

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 coding block, or an implementation node, can declare fan_out: <plan-block-id>. That plan then returns work packages, each with an id, an instruction and a write_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.

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 review blocks now return a structured verdict with blocking required_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 refuted by 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_actions rule 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