Repository navigation
Freeze actual provider offer revision and configuration before SDK preparation - #419
Merged
Merged
Conversation
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.
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
d06647453328346f29b1b23579225ee460a4c2e8a4a673229a38f6ec87cf9317459323015bec2c92Contributor mode (select one):
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
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.
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