4.2 KiB
V2 Provider Promotion Field Evidence
Date: 2026-08-12 Scope: shared-staging signed receipt promotion, production read-only verification, and the two-node control drills.
Result
The dynamic Provider promotion gate passed on two independent nodes. Both nodes reported the same immutable release, receipt, signing key, and image digest. Receipt-key revocation propagated to both nodes in 2.64 seconds, within the 60-second drill SLA. The kill switch was restored to the fail-closed state (true) after the canary.
This evidence does not authorize public traffic. The production edge container was not started, DNS and traffic were not changed, and the production readiness gate is intentionally blocked by the restored kill switch. Identity execution, support access, and destructive identity-write APIs remain disabled.
Promotion Identity
| Item | Value |
|---|---|
| release | d6a6752258a555f3a40894cdcf88917659538492 |
| Provider | ccswitch / gpt-5.6-sol |
| wire API | responses |
| fallback | disabled |
| acceptance run | provider-acceptance-41663d1022d3f656769ed757 |
| receipt | provider-receipt-de755dae13b02c79bdce5302 |
| receipt SHA-256 | 6602584347833b389c1d714a4ce08ccffdcbbc8c289657d2d9bd3bff5c6e70c7 |
| promotion bundle SHA-256 | ee7ffc871026ac56bdf2747f41484c712a037d89eef21fe1537d56b372a669ee |
| receipt signing key | provider-acceptance-2026q3 |
| AI image digest | sha256:05faf2aa67d258708387daa7007442928b8d786814f1c5e8a619db4b1ae9d8b3 |
| prompt runtime fingerprint | 1217c23e17764684531198d7c3201e18c6af19429e6773a28e0f6cada34ec87d |
The named legal approval was verified offline against the exact approved payload c3246b5b7ba5b98604acf3e7f49c3186ad79a7e77426d272c0e2745e4e230702. The approval covers 10 knowledge cards, 18 Provider results, and 31 product golden assets.
Field Evidence
| Check | Result | Local evidence SHA-256 |
|---|---|---|
| Initial two-node kill switch | passed; both nodes blocked |
c462064c9fd99b2fd02bec2b76f8a506abf07e8206bd4ed27e1135e2b8676d |
| Receipt key revocation | passed; both nodes observed receipt signing key is revoked |
ea11e27302b9852e4e9387e871fd8260bcb83129b9817443b4373f1752d91008 |
| Two-node read-only canary | passed; both nodes ready, acceptance verified, release allowed |
28300c61073cedb5ee4af2f6b1ee85cba7e24290d00b23f6a9f754a0708e5631 |
| Final fail-closed restore | passed; both nodes blocked, kill switch active |
b048ba2c03a53e8ee87e107b0cfda649eb6e7c12102892726dd2b8f24ef1d6d |
The revocation drill changed only the receipt keyring in memory on each node, restored the original bytes in a finally path, and verified the original keyring SHA-256 on both nodes as 1af246affb53f244681723ea328d49babcfdeedff24fdee48cfc50160ecf388d.
The second node restored the AI PostgreSQL dump into an isolated canary database and enforced default_transaction_read_only = on. Its AI API was bound to loopback only and reached through the WireGuard/SSH verification path; no public listener was created.
Backup and Recovery
Backup backup-20260811T152805Z completed with three PostgreSQL dumps, Contract file archive, manifest checksums, and three one-time restore databases. The restore verifier used database-owned markers contract_api_alembic_version and ai_platform_alembic_version, plus a public-table count for operations. Temporary restore databases were removed.
Code Regression
- Infra Provider/promotion and production release tests:
72 passed. - Contract Web API base-path regression:
6/6 passed. - Contract Web TypeScript typecheck: passed.
- Python compileall and
git diff --check: passed. - Production Contract and AI APIs, workers, PostgreSQL, Redis, and MinIO: healthy at closeout.
- Public
edgecontainer: absent by design.
Remaining Release Boundary
The Provider promotion evidence is closed. Formal public production launch remains a separate decision: first complete the production Web/edge and TLS/DNS cutover review, observability and rollback sign-off, and the independent support-access gates (external IdP/MFA, session binding, real-resource TOCTOU, immutable per-request audit, privacy/legal approval). Until then, keep the kill switch active and do not add or enable an identity execute API.