chore(main): release 7.181.2 - #2778
Merged
zaxbysauce merged 1 commit intoSep 14, 2026
Merged
Conversation
3 tasks
Contributor
Author
Drift check reportFound 2 drift finding(s): 0 error, 0 warning, 2 notice. required-check-contract (2)
|
github-actions
Bot
force-pushed
the
release-please--branches--main--components--opencode-swarm
branch
from
September 14, 2026 20:53
e64eda0 to
20fe253
Compare
github-actions
Bot
force-pushed
the
release-please--branches--main--components--opencode-swarm
branch
from
September 14, 2026 21:18
20fe253 to
0ce3531
Compare
zaxbysauce
enabled auto-merge
September 14, 2026 21:33
Contributor
Author
|
🤖 Created releases: 🌻 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR-review consolidated micro prompt ordering
What changed
PR-review base and micro lanes with explicit
owned_workflow_lanesnow apply the controller-owned explorer output contract before the PR workflow contract. Operator-authored[CANDIDATE]markers remain rejected with the existing diagnostic.Why
The PR workflow contract names the owned obligations using controller-generated
[CANDIDATE]and[CLEAN]markers. Applying the explorer validator afterward incorrectly classified those controller markers as operator prompt content and blocked valid consolidated micro dispatches.Migration steps
None.
Breaking changes
None.
Known caveats
Ordinary
workflow_lane-only lanes retain the existing contract-first ordering.Stop test_runner's dead-end scope advice and score TESTED SKIPPED as retryable, not failed
Issue: #2756
What changed
test_runnerremediation text (src/tools/test-runner.ts): the guard that rejectsscope:"convention"/"graph"/"impact"withoutfiles/targetsno longer recommendsscope:"all"— the exact scope its sibling guard blocks for agent use (env-gatedSWARM_ALLOW_FULL_SUITE) and thetest_engineerprompt prohibits. Themessagefield now directs the caller to pass a non-emptyfilesarray (ortargetsfor framework-native names) with a concrete example, and both response fields (messageanderror) enumerate every scope the guard covers. Both guards' rejection semantics are unchanged.src/hooks/delegation-gate.ts): a[TESTED] | task-N | SKIPPED | ...structured verdict (tests were NOT run — prohibited scope, framework detection none, missing test file) no longer emitsstage_b_failed. The task stays in its Stage B eligible state (reviewer_run/pre_check_passed), the reviewer's APPROVED gate proof is preserved, and thestageBCompletionentry is untouched, so the architect can re-dispatch the test gate instead of forcing a coder rework of correct code. A warn log records the skip for the orchestrator. GenuineFAILverdicts andREVIEWEDrejections keep the existingstage_b_failed→rework_requiredsemantics.src/background/stage-b-gates.ts):structuredStageBVerdictnow returns'skip'for TESTED SKIPPED;ingestBackgroundStageBCompletionconsumes the record with the newskipped: trueresult flag and fires no transition and no proof clearing.StageBIngestionResultgains the optionalskippedfield.src/background/completion-observer.ts): a skipped ingestion publishesskipped (tests not run) — re-dispatch the test gate; reviewer proof preserved; task remains Stage B eligibleinstead of the genericingestion failed, so operators can distinguish a retryable skip from a hard failure.Why
An agent that followed the tool's own advice (
scope:"all") could not succeed — the recommended scope is blocked — and models without a naturalfiles:habit (observed: Kimi K2.7 Code, 10–11 identical calls) looped until the repetition breaker fired. The prompt's SKIP CONDITION 1 then legitimately produced a[TESTED] ... SKIPPEDverdict, which the gate scored as a code failure:rework_requiredplus deletion of the reviewer's approval for code that was correct and passing (python -m pytestgreen). Together with #2755 (no autonomous exit fromrework_required, fixed by PR #2760's audited recovery tool), a single tool-argument mistake stranded tasks that only a human could free. This fix removes the wrongful entry: tests-not-run is retryable state, not failure.Tests
tests/unit/tools/test-runner-scope-advice.test.ts— guard-2 response fields direct to files/targets, enumerate all three guarded scopes, and never recommend the blocked scope; guard-1 block characterized as unchanged.tests/unit/hooks/delegation-gate-stage-b-skipped.test.ts— SKIPPED leaves statereviewer_runwith durable reviewer proof and the reviewer completion entry intact; FAIL and REVIEWED REJECTED still gorework_requiredwith proof cleared.tests/unit/background/stage-b-gates-skipped-verdict.test.ts— SKIPPED ingest returnsskipped: true, no state mutation, proof preserved; FAIL and unparseable output keep the fail-closed rejection.Restart preserves tightened runtime policy and reconciles interrupted work
What changed
/swarm qa-gates override) are now durable runtime policy: a new project-DB table(
qa_gate_session_override, full durability class) is writtendurable-first by the command and restored by
rehydrateState, so a hostrestart preserves the effective tightened gates instead of silently
reverting to the spec-level profile. The override row is deleted in
lockstep with the session (explicit end, 2-hour stale sweep,
/swarm reset-session), and a session with no tightened gates keeps norow.
get_qa_gate_profiletool now also reports the calling session'soverrides and the effective gates (profile merged with those
overrides), so an agent can inspect effective runtime policy after a
restart through the registered surface.
delegationActive: true) now reconciles to a bounded, owner-namedoutcome instead of expiring silently: a durable artifact
(
.swarm/session/restart-reconciliation.json, 50-entry FIFO deduped bysession+task) plus a one-shot advisory on the restored session, both
naming the owning session, agent, and task and classifying the outcome as
interrupted/UNKNOWN — absence is never treated as success. Ephemeral
authority still expires exactly as before; only the silence was a defect.
docs/restart-reconciliation.md): thedurable-vs-ephemeral field classification for the restart boundary, the
operator-visible reconciliation states, the restart/inspect runbook, and
the human-resolution rule for external effects.
Why
Issue #2668 (Workstream D slot D15): restart needed to preserve durable
workflow and QA policy while discarding ephemeral execution authority, and
the previously silent expiry of interrupted work left "was interrupted
mid-execution" indistinguishable from "was idle" — an operator could not
tell uncertain from clean, and a valid tightened policy was lost on every
restart.
Tests
tests/unit/db/qa-gate-session-override.test.ts— service contract:ratchet-only merge, fail-closed malformed rows, clear idempotency,
empty-overrides invariant, absent-DB read-only behavior.
tests/unit/session/restart-policy-reconciliation.test.ts— boundarycontract: override survives rehydrate (and a double restart), new sessions
start clean, fail-open restore, owner-named reconciliation artifact +
advisory, dedupe, bounded cap, both teardown paths delete the durable row.
tests/unit/tools/get-qa-gate-profile-effective.test.ts— effective-gatestool surface (executor + registered schema fields).
tests/unit/execute-journey/j08-restart-policy.test.ts— registered-hostjourney: boot A tightens through the real command and dies mid-execution;
boot B (fresh
server()over the same durable artifacts) preserves thetightened effective gates via
get_qa_gate_profileand records theowner-named reconciliation.
🤖 I have created a release beep boop
7.181.2 (2026-09-14)
Bug Fixes
This PR was generated with Release Please. See documentation.