Skip to content

Freeze actual provider offer revision and configuration before SDK preparation - #419

Merged
adrianwebb merged 4 commits into
stagingfrom
codex/agent-provider-offer-freeze-401
Oct 11, 2026
Merged

adrianwebb merged 4 commits into
stagingfrom
codex/agent-provider-offer-freeze-401

Conversation

@adrianwebb

@adrianwebb adrianwebb commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Outcome

Campaign preparation accepted a claimed provider-offer revision without reading its owning public inventory. Read every frozen provider's original inventory, require the exact revision and configuration/digests, and reject drift before proposal creation. Criterion24 uses the existing normal SDK freeze and campaign verifiers; the21-step managed scene is unchanged.

Work authority

Contributor mode (select one):

  • Human-authored
  • Agent-assisted under human authority
  • Agent-authored under human authority

Plan

Extend the existing operator freeze and supported public provider reads. Preserve all204selected identities,260deferred obligations, original managed/component scopes, deadlines and failed observations. No new runner, provider authority, product resource or owner catalog.

Changes and commits

  • 5574ace commits focused RED before repair:10tests/9passed/1failed. The original preparation case now demonstrates that a mismatched offer revision was ignored and proposal evidence was written.
  • 18b98cf adds native owning manifest/public SDK integration and unit cases for revision/provider/configuration authority, malformed/missing inventories, denial, interruption, concurrent reads and unchanged retry.
  • c76fcfa adds one shipped comparison in the existing preflight support path. Both preparation and the existing managed freeze verifier read every exact frozen provider through providers.offers.show. Preparation checks the selected provider against that inventory before any proposal creation.

The current API inventory reports revision1. We preserve that public authority and additionally compare its original offer rows and canonical digests, so a configuration change with the same reported revision is rejected. The existing providerSupply entries must retain the original public offers array. That input extension is necessary because the old manifest held no offer bytes to compare; it reuses the owning public row representation and does not introduce another offer model or revision counter. Prospective allocation-input validation remains distinct from actual provider proof.

All original offers, including unrelated inactive entries, remain visible and compared. Only heartbeat observedAt is treated as observation metadata; each original clock is still validated and retained. Complete canonical offer fields, digest, execution-provider identity, offer identity, status, row order/count and inventory owner/revision must match. No filtering or repair of supplied observations.

Original and final public observations enter the existing preparation receipt files and normal verifier output. Missing input, foreign provider, changed revision/configuration, malformed digest/clock, omitted/duplicate/unknown rows and public read denial block progress. Three unit references and one native case join the existing component scene; no controlled failure is inserted into a normal SDK run.

Verification

Node24.12.0 with unchanged pinned development authority e4c4cad1e526f53d3549c8fc27c3e60122b20ee4.

Focused command:
node node_modules/vitest/vitest.mjs run --config ./vitest.config.ts tests/modern/guarantees/bindings.test.ts tests/modern/guarantees/preflight/campaign-freeze.test.ts tests/modern/guarantees/preflight/campaign-offers.test.ts tests/modern/guarantees/preflight/campaign-offers-native.test.ts --reporter=json --outputFile=<retained-report>

Final focused23/23passed, zero failed/skipped/todo, including the original binding-consistency suite. Native original provider-manifest production code and actual ControlPlaneClient/HTTP perform14GETs, retain10failed observations and complete concurrent unchanged retry. Upstream API inventory/revision/authentication are controlled; current runtime supply, conformance signatures, managed execution and teardown are not claimed.

Strict changed-asset/native-test TypeScript, original file/architecture checks and git diff --check pass. Initial13/14 focused result retained: an earlier newly inserted offer read obscured the pre-existing missing-profile failure; preparation preserves the original profile validation order. The subsequent14/14 passes retain all original assertions and deadlines.

Failed Verify38177496585 is retained:133files/988tests/986passed/2failed before scenes. Classification: IMPLEMENTATION_DEFECT in this delivery's integration metadata. Four new component steps lacked the mandatory explicit expect.status=passed, and the existing exact binding-list assertion still described58bindings. Commita4a6732 adds all four passing expectations and extends the exact list to include criterion24; every original assertion remains. The original binding suite is now included in the focused23/23 result. This failure provides no prerequisite or scene credit.

Verify38177935177 passed on tested merge3bbb620c367f9f6e49c531cfbad5897604d01134: fresh complete988Agent+200executing Reviewer assertions, zero fail/skip/todo, then736component steps. Independent audit reconciles736assertion receipts across118native source files; every source digest and all10selected archive assets match Git. Archive SHAaa714194cc48f14a20c62c4d32b3f1836de5a105c3b98c1e520432ed49522f9e; report SHA7a7a9f30b0f70a0c77469350e866de81ad0a89274c0bbf4563df50d834cc1e69. Artifact ZIPs11716613471/11716358970 match GitHub digests. Ordinary staging delivery and actual installed archive read-back passed. Stagingca643dc3fda822c471300ee7b0a338c1e9f32ca1 matches the tested tree794f6b7dcab2916f47e10313dbc3f4dffa32453d. Actual six-owner production installation (scripts disabled; existing native SDK override) pairs this Agent archive with verified API535/SDK405/CLI297/Deployment/Reviewer. Source/installed plans match SHA49b328219d22234f4781acf10d3ef20b321d1f6cbf0afb28940d370b07121c14:59mapped/145uncovered/204selected/260deferred/464full. Installed safe guards passed17controlled denials with unchanged input/assets; actual production tree and public CLI help passed. Diagnostic source-toolchain strict checking is separate from production-installed runtime proof. Initial missing Node declaration observation remains retained. Own installed dependencies and temporary remote branch were removed; no owned process remains. Criterion24 completion and exact receipts are in SDK401. Current provider authority and managed outcomes remain unproven; criterion4 remains pending API536. Initial submission validation38177934070 had a stale head SHA; corrected38178006094 passed, with original failed log retained.

  • I ran the narrowest relevant package verification and documented any checks that could not be run.

Risk and rollback

Acceptance-only changes. Operator manifests without original frozen offer rows now fail closed before proposal creation. Actual current inventory must be read through the supported CLI; historical/synthetic values cannot establish current campaign authority. SDK product source and its reserved managed test-first defect are untouched. Ordinary revert after a fresh protected staging fetch preserves committed RED and all failed evidence.

The first ready-state submission38179812144 failed because this description paraphrased five required checklist lines. The original template wording is now restored verbatim; all underlying checks and scoped rollback evidence remain recorded. Failed log retained. This metadata correction changes no source or native receipt.

Completion summary

Criterion24 is complete after focused proof, fresh complete native prerequisites, component scenes, exact archive audit, ordinary staging merge and actual production-installed read-back. SDK401 is30completed/147open as of2026-10-11 22:21:01UTC. No local scene, managed workday, new worktree, release, tag, deployment, external publication or runtime selection was started.

Submission checklist

  • The change is bounded to the stated work item and target repository.
  • Exact base and head refs are recorded and the branch is ready for review.
  • Verification and compatibility evidence are recorded above.
  • No plaintext secrets, credentials, machine state, or unrelated residue are included.
  • Plan, status, commits, and completion summary form a complete durable record.
  • Rollback or recovery steps are documented and executable.

@adrianwebb
adrianwebb marked this pull request as ready for review October 11, 2026 22:17
@adrianwebb
adrianwebb merged commit ca643dc into staging Oct 11, 2026
4 of 6 checks passed
@adrianwebb
adrianwebb deleted the codex/agent-provider-offer-freeze-401 branch October 11, 2026 22:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant