Skip to content

fix(adjudicate): bind OmniRoute transport and disclosure - #992

Merged
seathatflowsinourveins merged 4 commits into
mainfrom
codex/ns2604-adjudicate-omniroute-20261010
Oct 11, 2026
Merged

seathatflowsinourveins merged 4 commits into
mainfrom
codex/ns2604-adjudicate-omniroute-20261010

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 10, 2026 •

Copy link
Copy Markdown
Collaborator

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.

  • Base commit: a7c15bd051088d0493d58bd84a3c8c35dcde6624.
  • Final head: 6fd41e574cf708c8858a5fe1d63726c450cd2f92.
  • Lane: lane:foundation.
  • Owned paths: tools/sota-convergence/adjudicate.py, its README and append-only provenance registry; tests/test_adjudicate.py; the dated binding decision/evidence; manifests/evidence.json.
  • One forward correction on 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

Evidence-class table

Claim Evidence class Command / receipt
Complete disclosure deletion is refused in both presentation orders and both unanimous votes synthetic Exact parent source compiled unchanged: focused 8 tests / 11 assertion failures / 0 errors. Same final tests: 8 pass.
Supplied two-case reproducer is corrected synthetic Unmodified reproducer: parent 2 assertion failures / 0 errors; final source 2 pass. Complete stdout retained.
Changing transport reruns both judge/refuter pairs; unchanged native resume makes no new calls synthetic Existing runner/fixture seam: calls 4 → 8 → 8, including stale unframed OmniRoute controls.
Native event bytes, serialized artifacts and common family contract remain compatible synthetic Native controls pass; judgment_record, assemble_layer and adjudication_provenance bodies remain byte-identical to parent.
Required modules work at the exact final commit local_integration 493 tests / 0 failures / 0 errors / 2 skips in one five-module bundle at 6fd41e57; source/tests/locks and HEAD stayed fixed.
Published manifests are coherent local_integration FULL final-head python3 scripts/validate.py: 11,424 hashed files, 70 components, 4 profiles, 239 receipts.
Gateway prompt preservation or upstream family identity source_review Unmeasured; exact not-attested disclosure retained. No live provider/model call.

Local commands run

# Exact cb68e66f source, compiled in memory with unchanged local fixture interfaces
focused: 8 tests / 11 assertion failures / 0 errors
supplied unmodified reproducer: 2 tests / 2 assertion failures / 0 errors

# Corrected frozen source and the same test selections
focused: 8 tests / 0 failures / 0 errors
supplied unmodified reproducer: 2 tests / 0 failures / 0 errors

<test-python> -m unittest -v tests.test_adjudicate tests.test_codex_lane tests.test_lane_packets tests.test_record_verdicts tests.test_verdict_lane_vendoring
493 tests / 0 failures / 0 errors / 2 skips; exit 0

python3 scripts/validate.py
passed: 11424 hashed files, 70 components, 4 profiles, 239 receipts

gitleaks git --redact=100 --log-opts=a7c15bd051088d0493d58bd84a3c8c35dcde6624..6fd41e574cf708c8858a5fe1d63726c450cd2f92 --report-format=json --report-path=<report> .
exit 0; findings 0; PR range only

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 in tools/sota-convergence/evidence/adjudicate-omniroute-transport-binding-20261011.json. Existing endpoint/disclosure rationale remains in docs/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

  • Workflow pin and permission requirements remain satisfied; no workflow changes in this PR.
  • No secret printed, logged or committed; no new required secret.
  • No new paid hosting, subscription or billing surface.
  • Peer-owned files and worktrees preserved.
  • Old provenance rows retained; current tuple appended and owned hashes registered natively.
  • Native and OmniRoute contracts tested offline; no live provider/model call.

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.
@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 10, 2026
…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.
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 seathatflowsinourveins changed the title fix(adjudicate): reuse OmniRoute for judge and refuter fix(adjudicate): bind OmniRoute transport and disclosure Oct 11, 2026
@seathatflowsinourveins
seathatflowsinourveins merged commit 9b3a39c into main Oct 11, 2026
35 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the codex/ns2604-adjudicate-omniroute-20261010 branch October 11, 2026 06:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant