Repository navigation
fix(adjudicate): bind OmniRoute transport and disclosure - #992
Merged
seathatflowsinourveins merged 4 commits intoOct 11, 2026
Merged
Conversation
Thread the opt-in provider and loopback endpoint through both role calls, the existing command/attempt APIs and keyless home setup. Preserve native defaults and common cross-family provenance. Cover lost provider dispatch with a failing-before regression and fake-CLI isolation controls.
…erun on its change The CC's 2026-10-10T23:17Z ruling for #992 extends the 07:51Z disclosure ruling (docs/decisions/2026-10-10-codex-lane-omniroute.md:4-9) to adjudication. 1. Disclosure on the record. Every OmniRoute Codex judgment record, a failed or leaked call's included, carries provider=omniroute, the canonical provider_base_url and the exact pass_through=not_attested (...) text at the top level, outside provenance, so both families' provenance stays equal for assemble_layer. These are the three fields codex_lane.lane_provenance adds for OmniRoute (codex_lane.py:1168-1171 at a7c15bd). A native record carries none of them (the 09:38Z native contract, docs/decisions/2026-10-10-codex-lane-omniroute.md:11-13). 2. Resume. A change of transport, endpoint or disclosure reruns a judgment, the rule codex_lane follows (decision record :34-35; tools/sota-convergence/README.md:1498 at a7c15bd). 3. The P3s from the CC's read of 3251a96: - A native run refuses --omniroute-base-url (exit 2), as codex_lane.py:1242-1244 does. - lane-provenance.json is re-serialised with json.dumps(indent=1)+"\n"; main's rows stay byte-identical. The registry is append-only, so it gains one row for this adjudicate.py; no registered row changes. 4. Regressions, offline against the fake codex (no model call), fail on 3251a96 and pass here: the disclosure on both orders' records, the resume sequence, and the native base-URL refusal. A guard pins the disclosure outside provenance through assemble. The evidence rows of the three changed files were re-registered with host_receipts.register_file (docs/lanes.md hot-file protocol). Co-Authored-By: Claude Opus 5.5 <[email protected]>
Apply the CC's 2026-10-11T00:19Z ruling to counted judge/refuter judgments. Partial transport metadata requires provider=omniroute and the exact not_attested disclosure. Reuse codex_lane.omniroute_endpoint and require its canonical result. Dropped judgments retain the existing split behavior. Accepted OmniRoute judgments carry provider and pass_through in the assembled verdict's disclosure block, outside the common family provenance. Native serialization retains its existing contract. Document the codex provider flags and resume conditions; append the current code tuple and refresh the four owned evidence rows. Primary sources: Native Agent Stack@a7c15bd051088d0493d58bd84a3c8c35dcde6624, docs/decisions/2026-10-10-codex-lane-omniroute.md:4-13 and tools/sota-convergence/codex_lane.py:147-170,1161-1174; baseline adjudicator at fc86624, usable_judgment:697-744 and assemble_layer:1527-1601. The transport disclosure cites OmniRoute@c1e30b7676975feb298b49eff6ff58923c04b89e, chatCore.ts:3156, systemPrompt.ts:210-217/278-283 and strategySelector.ts:234-249. Corrected offline regressions on fc86624: 3 tests, 23 assertion failures, zero errors; native serialization passes. Fixed: 3 tests pass. Required adjudicate, codex_lane, lane_packets, record_verdicts and vendoring modules: 488 tests pass with two optional jsonschema skips. FULL scripts/validate.py and evidence_manifest.py --check pass. No live provider/model call.
This was referenced Oct 11, 2026
Write runner-selected transport into OmniRoute stage events under their existing digests. Validate it before counting votes or resuming, require matching exact disclosure and stage identities, and check it in fresh and summary audits. Keep native event bytes and judgment fields unchanged. Cover complete disclosure deletion, transport changes, legacy reruns, binding integrity and native compatibility with failing-first regressions. Append current provenance and natively register the correction evidence.
seathatflowsinourveins
deleted the
codex/ns2604-adjudicate-omniroute-20261010
branch
October 11, 2026 06:59
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.
Scope
Codex adjudication can use the verdict lane's explicit keyless OmniRoute transport for both judge and refuter. Saved OmniRoute judgments carry the validated canonical endpoint and exact not-attested disclosure outside common family provenance; assembly requires that disclosure and carries it into the verdict.
The final correction closes the complete-field deletion case: removing all three transport fields previously let OmniRoute votes count without disclosure and let native resume reuse them. The runner now retains its selected transport in each OmniRoute stage's event stream, covered by the existing event hash. Assembly verifies that independent binding before counting a vote; resume compares the bound saved transport with the requested transport. Deletion refuses both affected votes, and native resume makes four new calls.
a7c15bd051088d0493d58bd84a3c8c35dcde6624.6fd41e574cf708c8858a5fe1d63726c450cd2f92.lane:foundation.tools/sota-convergence/adjudicate.py, its README and append-only provenance registry;tests/test_adjudicate.py; the dated binding decision/evidence;manifests/evidence.json.cb68e66f3e2e47b1f6ffd6e28898cbcbdb554002; no rebase.Native event bytes and judgment fields retain their existing contract. Transport stays outside family provenance. The frame loader verifies the recorded digest before parsing transport from the same bytes, requires exact keys/version/disclosure and a canonical keyless loopback endpoint, and refuses duplicate/malformed frames or disagreement between judge and refuter. Fresh audit and summary also check the configured transport.
SOTA sources
cb68e66f3e2e47b1f6ffd6e28898cbcbdb554002:usable_judgment:708–720,743–746,codex_events_issue:759–779,run_codex_call:824–842, resume:930–934, retained stage digests:1079–1081and assembly:1581–1584. Reuse the existing event hash as the independent binding.092d3acd6bec3e3a14bdc7e7a2810ab628ab759d:ThreadEvent,ThreadStartedEventandTurnCompletedEventdefine the client stream. The added frame is parent-owned retention metadata, outside the unchanged client protocol; it records selected transport, not upstream family attestation.cbc944f4bc59639a444dd971c737788ba2283a91:Doc/library/json.rst, standardjson.dumps/json.loads, andhashlib.sha256verify retained bytes through the existing event digest. No parser or provider SDK is forked.2026-10-10-codex-lane-omniroute.mddecision and OmniRoutec1e30b7676975feb298b49eff6ff58923c04b89eprovide endpoint validation and the exact disclosure.chatCore.ts:3156,systemPrompt.ts:210–217,278–283andstrategySelector.ts:234–249establish the documented mutation limits; deployed gateway settings are unreadable under the authorized policy.Evidence-class table
judgment_record,assemble_layerandadjudication_provenancebodies remain byte-identical to parent.6fd41e57; source/tests/locks and HEAD stayed fixed.python3 scripts/validate.py: 11,424 hashed files, 70 components, 4 profiles, 239 receipts.Local commands run
Source SHA256:
9da98fd37870a56c25d1dc40a34636b540a6f1cfcca74e994c036eda2967797d; tests SHA256:3974779b52fe2856ab35135c3a03dea23f93bda5415f5f8e43f062deb18eea3f. Focused RED/GREEN log hashes:24e5365c9036b755d5d87c3da59fe3b49d1e491efb52a27a125f9d2d3b41cf56/07fd2d2f2f91f63e538225a157a956eb87f19b08a227bd16f94f446153e43bc9. Reproducer bytes SHA256:c8ff6893a69724bc7824436975b6ae7a10fe78e2f821826133fe0a692737c96b; its final GREEN log SHA256:b1e839537c6691c69b6842d8ea6b2fd5fbf19bae0612c1d0fb3092623ed85387.Module counts: adjudicate 130, Codex lane 98, lane packets 126, record verdicts 125 and vendoring 14. The two skips are existing optional guards reporting
jsonschema is not installed; the transport binding and native compatibility tests execute and pass. Native bundle log SHA256:b9d45ce60291311142dbf0713fe15feba5bc8e84ba9f7bfdea851ff8f99ea75d; qualification report SHA256:af6312993c24431b4c7287f895efbe75448aed54dae0767b22038ec0b3a16d14.Privacy count: 0. Native diff/identity, final body/commit and pre-push checks are distinct from the functional tests. One intermediate focused run caught an uninitialized transport variable; its error logs remain retained separately from the corrected passing runs.
Decision record
docs/decisions/2026-10-11-adjudication-omniroute-transport-binding.md, with structured source identities and RED/GREEN evidence intools/sota-convergence/evidence/adjudicate-omniroute-transport-binding-20261011.json. Existing endpoint/disclosure rationale remains indocs/decisions/2026-10-10-codex-lane-omniroute.md.Legacy OmniRoute records declaring transport but lacking the binding are stale and rerun. An older record that already lost all transport fields and its independent binding cannot be retrospectively identified from that file alone; the changed code provenance invalidates its resume. The existing retained-event digest is the trust boundary, with no new signature over arbitrary replacement of both events and their recorded digest. The separate combined-landing native-cwd integration finding still requires its own CC cue.
Host evidence
No host receipt or platform-status change.
Checklist