Repository navigation
feat: harden consensus loop, codex error classification and orientation default - #241
Merged
Merged
Conversation
…on default Ten fixes from a quality, cost and performance audit: - codex: classify errors on codex's own stderr lines (prompt echo removed, ANSI stripped) so a prompt that mentions "auth" or "login" no longer turns a usage-limit error into a non-retryable auth error - runToConvergence: skip the per-round blind arbiter pass unless consensus.blindVote is set (it was never read by convergence or prompts) - runToConvergence: stop with stopReason "arbiter-revision-failed" instead of silently resubmitting the same plan when the revision leg fails - runToConvergence: record dissenting peers' issues as accepted so the next round's digest lists them as addressed; let summarizePlanDiff report real line counts instead of a fixed label - arbiter: cap each peer opinion at 3000 chars keeping head and tail, so the verdict at the end of a long review survives the cut - consensus-step: attach a bounded excerpt to a non-APPROVE voice with no parsed [category] bullets so the host arbiter can decide on it - provider.js: delete the unused opinion-envelope schema and parser - analyze: use a 360 s absolute slow gate for models seen under consensus tools so a long round does not flag the whole panel - orientation: default ON in schema, default config, runtime resolver and docs; explicit enabled:false opts out - comment fixes in result-cache and answer-floor Tests added or updated for every behavior change; docs and generated host artifacts regenerated.
Contributor
|
This PR is included in v3.29.0 🎉 Claude Code If the update still shows the old version, the marketplace re-pin is a few minutes behind; run it again shortly. Codex, Kiro, Cursor, OpenCode plugins: update deliberation from your host's plugin manager. MCP server (any host): |
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.
Summary
Ten fixes from a quality, cost and performance audit of the consensus loop, the Codex provider, the analyzer and the orientation feature.
Results quality
autherror that tells the user to log in again.excerpt: a non-APPROVE voice whose reply had no[category]bullets now carries the first and last 600 chars of its text, so the host arbiter can turn the objection into a decision instead of seeing "REQUEST_CHANGES (0 critical)" every round.enabled: falseopts out.Cost
runToConvergencewas one extra provider call per round whose result nothing read. It now runs only whenconsensus.blindVoteis set, the same key the single-shot path honors.stopReason: "arbiter-revision-failed"instead of resubmitting the same plan and buying the same dissent again.Performance and cleanup
consensus/consensus-step(120 s elsewhere), so a long review round does not flag the whole panel as slow.result-cache.js(cwd is part of the cache key) andanswer-floor.js.Cross-model review
Pre-PR consensus code review (expert
code-reviewer, panel: codex, gemini, grok, one OpenRouter delegate) converged in 3 rounds.Accepted and fixed:
resolveOrientationhelper plus tests ORC1-ORC3.Dismissed, with reasons:
revisedstarts null and the stop check sits outside the revise branch, so a unanimous APPROVE stops as arbiter-revision-failed." The loop breaks onconvergedbefore any revision code; every non-converged path assignsrevised, andokTextreturns null for blank or errored text, so an empty plan is never submitted.submitRevision, which never runs after the arbiter-revision-failed break; when a revision lands, the revision prompt is built from exactly those issues.Verification
npm run sync:checkclean.npm run check: 1181 pass. Five failures (bridge M1e, openrouter O14, dashboard-server S13, dashboard-cli C-stop and C-restart) are timing tests that fail identically on untouched master in a temp worktree on the same machine; none touches files in this change.