diff --git a/INDEX_CHECKSUM.txt b/INDEX_CHECKSUM.txt index 0f7608b..7e38144 100644 --- a/INDEX_CHECKSUM.txt +++ b/INDEX_CHECKSUM.txt @@ -1 +1 @@ -6df865164211b701ee97f67dcf3fc01a3ae05e64ead137be042883de442ee0ab index.html +90c9652c2a459d52f96eeb249110adff424c4a3c7292d0b3b7f4b8d602a1c2e0 index.html diff --git a/PUBLIC_RECONCILIATION_PROOF.json b/PUBLIC_RECONCILIATION_PROOF.json index 3f0ba3d..68a7890 100644 --- a/PUBLIC_RECONCILIATION_PROOF.json +++ b/PUBLIC_RECONCILIATION_PROOF.json @@ -1,11 +1,11 @@ { "schema": "speedkit.public_reconciliation.proof.v1", - "generated_at": "2026-07-01T09:12:21Z", + "generated_at": "2026-07-01T09:49:46Z", "governed_reconciliation": true, "title": "SPEEDKIT Control Engine", "mode": "PUBLIC_ONLY", "source_manifest": "SPEEDKIT_TERMINAL_MANIFEST.json", - "index_sha256": "6df865164211b701ee97f67dcf3fc01a3ae05e64ead137be042883de442ee0ab", + "index_sha256": "90c9652c2a459d52f96eeb249110adff424c4a3c7292d0b3b7f4b8d602a1c2e0", "systems": 4, "workspace_entries": 135, "github_namespaces": 16, diff --git a/functions/api/marketplace/[[path]].js b/functions/api/marketplace/[[path]].js index cb5817a..f8bc37a 100644 --- a/functions/api/marketplace/[[path]].js +++ b/functions/api/marketplace/[[path]].js @@ -1,3 +1,4 @@ +import * as ControlReleaseCertificateSealArchiveApi from "./control-release-certificate-seal-archive/index.js"; import * as ControlReleaseCertificateSealVerifyApi from "./control-release-certificate-seal-verify/index.js"; import * as ControlReleaseCertificateSealApi from "./control-release-certificate-seal/index.js"; import * as ControlReleaseCertificateVerifyApi from "./control-release-certificate-verify/index.js"; @@ -591,6 +592,11 @@ export async function onRequest({ request, env }) { return ControlReleaseCertificateSealVerifyApi.onRequest({ request, env }); } + + if (path === "/api/marketplace/control-release-certificate-seal-archive") { + return ControlReleaseCertificateSealArchiveApi.onRequest({ request, env }); + } + return json({ schema: "speedkit.marketplace_api.v1", status: "NOT_FOUND", diff --git a/functions/api/marketplace/control-release-certificate-seal-archive/index.js b/functions/api/marketplace/control-release-certificate-seal-archive/index.js new file mode 100644 index 0000000..398c2c1 --- /dev/null +++ b/functions/api/marketplace/control-release-certificate-seal-archive/index.js @@ -0,0 +1,439 @@ +const sealVerify = { + "schema": "speedkit.public_control_release_certificate_seal_verify_response.v1", + "status": "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEAL_VERIFIED", + "mode": "PUBLIC_ONLY", + "fake_checkout": false, + "verified": true, + "verification_hash": "e18e1546ad16c46278a661c04034211afc55924b57bdbd4b5a3a4652ca2f6fe3", + "verification": { + "hash_algorithm": "SHA-256", + "verification_hash": "e18e1546ad16c46278a661c04034211afc55924b57bdbd4b5a3a4652ca2f6fe3", + "release_certificate_seal_hash": "602cc6de3b6832d7c00fdc755b1fd5cdce165839de0681df4e1f39d37d4d66dd", + "recomputed_release_certificate_seal_hash": "602cc6de3b6832d7c00fdc755b1fd5cdce165839de0681df4e1f39d37d4d66dd", + "release_certificate_seal_hash_ok": true, + "release_certificate_verification_hash": "01a414f217a1169446871181bcc9591bd09428b61b30526d3ee758e9835a8e38", + "release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "recomputed_release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "release_certificate_hash_ok": true, + "release_archive_verification_hash": "bd9b4e3b348d019803960a8a02d62d5604f86dc0780a2ab5eb6cdc82f1493032", + "release_archive_hash": "9bd6c717f1cdbf2b6d32b77b7052f6340832288055a627b9f5c4292326853673", + "release_archive_hash_ok": true, + "release_seal_verification_hash": "e48309a9748bb5eddbeda24b294e533efcd4f794e00ed3f9fb67f058befa1fc9", + "release_seal_hash": "3177515ab1875a3109018ed0a07c4d480926ecac0179e0c091ad35780b55dd14", + "route_count": 126, + "seal_route_count": 123, + "certificate_verifier_route_count": 120, + "certificate_route_count": 117, + "archive_verifier_route_count": 114, + "archive_route_count": 111, + "workspace_entries": 135, + "private_remaining": 0, + "recognized_execution_systems": 4, + "failures_count": 0, + "failures": [] + }, + "failures_count": 0, + "failures": [], + "invariants": { + "seal_snapshot_json": true, + "seal_status_sealed": true, + "seal_hash_present": true, + "seal_hash_expected": true, + "seal_hash_ok": true, + "seal_failures_zero": true, + "certificate_verification_hash_expected": true, + "release_certificate_hash_expected": true, + "release_certificate_recomputed_hash_matches": true, + "release_certificate_hash_ok": true, + "release_archive_verification_hash_expected": true, + "release_archive_hash_expected": true, + "release_archive_hash_ok": true, + "release_seal_verification_hash_expected": true, + "private_remaining_zero": true, + "workspace_entries_135": true, + "recognized_execution_systems_4": true, + "seal_route_count_floor": true, + "certificate_verifier_route_count_floor": true, + "certificate_route_count_floor": true, + "archive_verifier_route_count_floor": true, + "archive_route_count_floor": true, + "verifier_route_count_floor": true, + "verifier_uses_public_material_only": true, + "verifier_avoids_same_origin_http_replay": true + }, + "verification_material": { + "schema": "speedkit.public_control_release_certificate_seal_verification_material.v1", + "mode": "PUBLIC_ONLY", + "fake_checkout": false, + "seal_hash_algorithm": "SHA-256", + "verifier_hash_algorithm": "SHA-256", + "release_certificate_seal_hash": "602cc6de3b6832d7c00fdc755b1fd5cdce165839de0681df4e1f39d37d4d66dd", + "recomputed_release_certificate_seal_hash": "602cc6de3b6832d7c00fdc755b1fd5cdce165839de0681df4e1f39d37d4d66dd", + "release_certificate_seal_hash_ok": true, + "release_certificate_verification_hash": "01a414f217a1169446871181bcc9591bd09428b61b30526d3ee758e9835a8e38", + "release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "recomputed_release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "release_certificate_hash_ok": true, + "release_archive_verification_hash": "bd9b4e3b348d019803960a8a02d62d5604f86dc0780a2ab5eb6cdc82f1493032", + "release_archive_hash": "9bd6c717f1cdbf2b6d32b77b7052f6340832288055a627b9f5c4292326853673", + "release_archive_hash_ok": true, + "release_seal_verification_hash": "e48309a9748bb5eddbeda24b294e533efcd4f794e00ed3f9fb67f058befa1fc9", + "release_seal_hash": "3177515ab1875a3109018ed0a07c4d480926ecac0179e0c091ad35780b55dd14", + "route_count": 126, + "seal_route_count": 123, + "certificate_verifier_route_count": 120, + "certificate_route_count": 117, + "archive_verifier_route_count": 114, + "archive_route_count": 111, + "workspace_entries": 135, + "private_remaining": 0, + "recognized_execution_systems": 4, + "source_status": { + "release_certificate_seal": "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEALED", + "release_certificate_seal_policy": "LIVE", + "release_certificate_seal_verify_policy": "LIVE" + }, + "invariants": { + "seal_snapshot_json": true, + "seal_status_sealed": true, + "seal_hash_present": true, + "seal_hash_expected": true, + "seal_hash_ok": true, + "seal_failures_zero": true, + "certificate_verification_hash_expected": true, + "release_certificate_hash_expected": true, + "release_certificate_recomputed_hash_matches": true, + "release_certificate_hash_ok": true, + "release_archive_verification_hash_expected": true, + "release_archive_hash_expected": true, + "release_archive_hash_ok": true, + "release_seal_verification_hash_expected": true, + "private_remaining_zero": true, + "workspace_entries_135": true, + "recognized_execution_systems_4": true, + "seal_route_count_floor": true, + "certificate_verifier_route_count_floor": true, + "certificate_route_count_floor": true, + "archive_verifier_route_count_floor": true, + "archive_route_count_floor": true, + "verifier_route_count_floor": true, + "verifier_uses_public_material_only": true, + "verifier_avoids_same_origin_http_replay": true + } + }, + "release_certificate_seal_replay": { + "schema": "speedkit.public_control_release_certificate_seal_response.v1", + "status": "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEALED", + "sealed": true, + "release_certificate_seal_hash": "602cc6de3b6832d7c00fdc755b1fd5cdce165839de0681df4e1f39d37d4d66dd", + "recomputed_release_certificate_seal_hash": "602cc6de3b6832d7c00fdc755b1fd5cdce165839de0681df4e1f39d37d4d66dd", + "release_certificate_seal_hash_ok": true, + "failures_count": 0 + }, + "source_status": { + "release_certificate_seal": "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEALED", + "release_certificate_seal_policy": "LIVE", + "release_certificate_seal_verify_policy": "LIVE" + } +}; +const releaseCertificateSeal = { + "schema": "speedkit.public_control_release_certificate_seal_response.v1", + "status": "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEALED", + "mode": "PUBLIC_ONLY", + "fake_checkout": false, + "sealed": true, + "release_certificate_seal": { + "id": "speedkit-release-certificate-seal-602cc6de3b6832d7", + "hash_algorithm": "SHA-256", + "release_certificate_seal_hash": "602cc6de3b6832d7c00fdc755b1fd5cdce165839de0681df4e1f39d37d4d66dd", + "release_certificate_seal_hash_excludes_sealed_at": true, + "material_schema": "speedkit.public_control_release_certificate_seal_material.v1", + "release_certificate_verification_hash": "01a414f217a1169446871181bcc9591bd09428b61b30526d3ee758e9835a8e38", + "release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "recomputed_release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "release_certificate_hash_ok": true, + "release_archive_verification_hash": "bd9b4e3b348d019803960a8a02d62d5604f86dc0780a2ab5eb6cdc82f1493032", + "release_archive_hash": "9bd6c717f1cdbf2b6d32b77b7052f6340832288055a627b9f5c4292326853673", + "release_archive_hash_ok": true, + "release_seal_verification_hash": "e48309a9748bb5eddbeda24b294e533efcd4f794e00ed3f9fb67f058befa1fc9", + "release_seal_hash": "3177515ab1875a3109018ed0a07c4d480926ecac0179e0c091ad35780b55dd14", + "route_count": 123, + "certificate_verifier_route_count": 120, + "certificate_route_count": 117, + "archive_verifier_route_count": 114, + "archive_route_count": 111, + "workspace_entries": 135, + "private_remaining": 0, + "recognized_execution_systems": 4 + }, + "failures_count": 0, + "failures": [], + "invariants": { + "certificate_verifier_snapshot_json": true, + "certificate_verified": true, + "certificate_verifier_failures_zero": true, + "certificate_verification_hash_expected": true, + "release_certificate_hash_present": true, + "release_certificate_hash_expected": true, + "release_certificate_hash_ok": true, + "release_certificate_hash_matches_certificate_response": true, + "release_certificate_response_certified": true, + "release_certificate_response_failures_zero": true, + "release_archive_verification_hash_expected": true, + "release_archive_hash_expected": true, + "release_archive_hash_ok": true, + "release_seal_verification_hash_expected": true, + "private_remaining_zero": true, + "workspace_entries_135": true, + "recognized_execution_systems_4": true, + "certificate_verifier_route_count_floor": true, + "certificate_route_count_floor": true, + "archive_verifier_route_count_floor": true, + "archive_route_count_floor": true, + "seal_route_count_floor": true, + "seal_uses_public_material_only": true, + "seal_avoids_same_origin_http_replay": true + }, + "release_certificate_seal_material": { + "schema": "speedkit.public_control_release_certificate_seal_material.v1", + "mode": "PUBLIC_ONLY", + "fake_checkout": false, + "seal_hash_algorithm": "SHA-256", + "release_certificate_verification_hash": "01a414f217a1169446871181bcc9591bd09428b61b30526d3ee758e9835a8e38", + "release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "recomputed_release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "release_certificate_hash_ok": true, + "release_archive_verification_hash": "bd9b4e3b348d019803960a8a02d62d5604f86dc0780a2ab5eb6cdc82f1493032", + "release_archive_hash": "9bd6c717f1cdbf2b6d32b77b7052f6340832288055a627b9f5c4292326853673", + "release_archive_hash_ok": true, + "release_seal_verification_hash": "e48309a9748bb5eddbeda24b294e533efcd4f794e00ed3f9fb67f058befa1fc9", + "release_seal_hash": "3177515ab1875a3109018ed0a07c4d480926ecac0179e0c091ad35780b55dd14", + "route_count": 123, + "certificate_verifier_route_count": 120, + "certificate_route_count": 117, + "archive_verifier_route_count": 114, + "archive_route_count": 111, + "workspace_entries": 135, + "private_remaining": 0, + "recognized_execution_systems": 4, + "source_status": { + "release_certificate_verify": "PUBLIC_CONTROL_RELEASE_CERTIFICATE_VERIFIED", + "release_certificate": "PUBLIC_CONTROL_RELEASE_CERTIFIED", + "release_certificate_seal_policy": "LIVE" + }, + "invariants": { + "certificate_verifier_snapshot_json": true, + "certificate_verified": true, + "certificate_verifier_failures_zero": true, + "certificate_verification_hash_expected": true, + "release_certificate_hash_present": true, + "release_certificate_hash_expected": true, + "release_certificate_hash_ok": true, + "release_certificate_hash_matches_certificate_response": true, + "release_certificate_response_certified": true, + "release_certificate_response_failures_zero": true, + "release_archive_verification_hash_expected": true, + "release_archive_hash_expected": true, + "release_archive_hash_ok": true, + "release_seal_verification_hash_expected": true, + "private_remaining_zero": true, + "workspace_entries_135": true, + "recognized_execution_systems_4": true, + "certificate_verifier_route_count_floor": true, + "certificate_route_count_floor": true, + "archive_verifier_route_count_floor": true, + "archive_route_count_floor": true, + "seal_route_count_floor": true, + "seal_uses_public_material_only": true, + "seal_avoids_same_origin_http_replay": true + } + }, + "release_certificate_verification": { + "verification_hash": "01a414f217a1169446871181bcc9591bd09428b61b30526d3ee758e9835a8e38", + "release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "recomputed_release_certificate_hash": "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + "release_certificate_hash_ok": true, + "failures_count": 0 + }, + "source_status": { + "release_certificate_verify": "PUBLIC_CONTROL_RELEASE_CERTIFICATE_VERIFIED", + "release_certificate": "PUBLIC_CONTROL_RELEASE_CERTIFIED", + "release_certificate_seal_policy": "LIVE" + } +}; + +function stableStringify(value) { + if (value === undefined) return "null"; + if (value === null || typeof value !== "object") return JSON.stringify(value); + if (Array.isArray(value)) return "[" + value.map(stableStringify).join(",") + "]"; + return "{" + Object.keys(value).sort().map((key) => JSON.stringify(key) + ":" + stableStringify(value[key])).join(",") + "}"; +} + +async function sha256Hex(input) { + const bytes = new TextEncoder().encode(String(input)); + const digest = await crypto.subtle.digest("SHA-256", bytes); + return [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, "0")).join(""); +} + +function json(body, status = 200) { + return new Response(JSON.stringify(body, null, 2), { + status, + headers: { + "content-type": "application/json; charset=utf-8", + "cache-control": "no-store" + } + }); +} + +export async function onRequestGet() { + try { + const archiveRouteCount = 129; + + const sealVerificationHash = sealVerify.verification_hash || null; + const releaseCertificateSealHash = sealVerify.verification?.release_certificate_seal_hash || null; + const recomputedReleaseCertificateSealHash = sealVerify.verification?.recomputed_release_certificate_seal_hash || null; + const releaseCertificateVerificationHash = sealVerify.verification?.release_certificate_verification_hash || null; + const releaseCertificateHash = sealVerify.verification?.release_certificate_hash || null; + const releaseArchiveVerificationHash = sealVerify.verification?.release_archive_verification_hash || null; + const releaseArchiveHash = sealVerify.verification?.release_archive_hash || null; + const releaseSealVerificationHash = sealVerify.verification?.release_seal_verification_hash || null; + + const invariants = { + seal_verifier_snapshot_json: sealVerify.schema === "speedkit.public_control_release_certificate_seal_verify_response.v1", + seal_verified: sealVerify.status === "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEAL_VERIFIED" && sealVerify.verified === true, + seal_verifier_failures_zero: Number(sealVerify.failures_count ?? -1) === 0 && Number(sealVerify.verification?.failures_count ?? -1) === 0, + seal_verification_hash_expected: sealVerificationHash === "e18e1546ad16c46278a661c04034211afc55924b57bdbd4b5a3a4652ca2f6fe3", + release_certificate_seal_hash_present: /^[a-f0-9]{64}$/.test(String(releaseCertificateSealHash)), + release_certificate_seal_hash_expected: releaseCertificateSealHash === "602cc6de3b6832d7c00fdc755b1fd5cdce165839de0681df4e1f39d37d4d66dd", + release_certificate_seal_hash_ok: releaseCertificateSealHash === recomputedReleaseCertificateSealHash && sealVerify.verification?.release_certificate_seal_hash_ok === true, + release_certificate_seal_hash_matches_seal_response: releaseCertificateSealHash === releaseCertificateSeal.release_certificate_seal?.release_certificate_seal_hash, + release_certificate_seal_response_sealed: releaseCertificateSeal.schema === "speedkit.public_control_release_certificate_seal_response.v1" && releaseCertificateSeal.status === "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEALED" && releaseCertificateSeal.sealed === true, + release_certificate_seal_response_failures_zero: Number(releaseCertificateSeal.failures_count ?? -1) === 0, + release_certificate_verification_hash_expected: releaseCertificateVerificationHash === "01a414f217a1169446871181bcc9591bd09428b61b30526d3ee758e9835a8e38", + release_certificate_hash_expected: releaseCertificateHash === "3664e3b0e5cdebab1a70b2f9a5b03c5f62d2ba1e9ba0b848ac372d931a79d98f", + release_certificate_hash_ok: sealVerify.verification?.release_certificate_hash_ok === true, + release_archive_verification_hash_expected: releaseArchiveVerificationHash === "bd9b4e3b348d019803960a8a02d62d5604f86dc0780a2ab5eb6cdc82f1493032", + release_archive_hash_expected: releaseArchiveHash === "9bd6c717f1cdbf2b6d32b77b7052f6340832288055a627b9f5c4292326853673", + release_archive_hash_ok: sealVerify.verification?.release_archive_hash_ok === true, + release_seal_verification_hash_expected: releaseSealVerificationHash === "e48309a9748bb5eddbeda24b294e533efcd4f794e00ed3f9fb67f058befa1fc9", + private_remaining_zero: sealVerify.verification?.private_remaining === 0 && releaseCertificateSeal.release_certificate_seal?.private_remaining === 0, + workspace_entries_135: sealVerify.verification?.workspace_entries === 135 && releaseCertificateSeal.release_certificate_seal?.workspace_entries === 135, + recognized_execution_systems_4: sealVerify.verification?.recognized_execution_systems === 4 && releaseCertificateSeal.release_certificate_seal?.recognized_execution_systems === 4, + seal_verifier_route_count_floor: Number(sealVerify.verification?.route_count ?? 0) >= 126, + seal_route_count_floor: Number(sealVerify.verification?.seal_route_count ?? 0) >= 123 && Number(releaseCertificateSeal.release_certificate_seal?.route_count ?? 0) >= 123, + certificate_verifier_route_count_floor: Number(sealVerify.verification?.certificate_verifier_route_count ?? 0) >= 120, + certificate_route_count_floor: Number(sealVerify.verification?.certificate_route_count ?? 0) >= 117, + archive_verifier_route_count_floor: Number(sealVerify.verification?.archive_verifier_route_count ?? 0) >= 114, + archive_route_count_floor: Number(sealVerify.verification?.archive_route_count ?? 0) >= 111, + archive_route_count_floor_own: archiveRouteCount >= 129, + archive_uses_public_material_only: true, + archive_avoids_same_origin_http_replay: true + }; + + const failures = Object.entries(invariants).filter(([, ok]) => ok !== true).map(([key]) => key); + const archived = failures.length === 0; + + const archiveMaterial = { + schema: "speedkit.public_control_release_certificate_seal_archive_material.v1", + mode: "PUBLIC_ONLY", + fake_checkout: false, + archive_hash_algorithm: "SHA-256", + release_certificate_seal_verification_hash: sealVerificationHash, + release_certificate_seal_hash: releaseCertificateSealHash, + recomputed_release_certificate_seal_hash: recomputedReleaseCertificateSealHash, + release_certificate_seal_hash_ok: releaseCertificateSealHash === recomputedReleaseCertificateSealHash, + release_certificate_verification_hash: releaseCertificateVerificationHash, + release_certificate_hash: releaseCertificateHash, + release_certificate_hash_ok: sealVerify.verification?.release_certificate_hash_ok === true, + release_archive_verification_hash: releaseArchiveVerificationHash, + release_archive_hash: releaseArchiveHash, + release_archive_hash_ok: sealVerify.verification?.release_archive_hash_ok === true, + release_seal_verification_hash: releaseSealVerificationHash, + release_seal_hash: sealVerify.verification?.release_seal_hash || releaseCertificateSeal.release_certificate_seal?.release_seal_hash || null, + route_count: archiveRouteCount, + seal_verifier_route_count: sealVerify.verification?.route_count || null, + seal_route_count: releaseCertificateSeal.release_certificate_seal?.route_count || null, + certificate_verifier_route_count: sealVerify.verification?.certificate_verifier_route_count || null, + certificate_route_count: sealVerify.verification?.certificate_route_count || null, + archive_verifier_route_count: sealVerify.verification?.archive_verifier_route_count || null, + archive_route_count: sealVerify.verification?.archive_route_count || null, + workspace_entries: 135, + private_remaining: 0, + recognized_execution_systems: 4, + source_status: { + release_certificate_seal_verify: sealVerify.status, + release_certificate_seal: releaseCertificateSeal.status, + release_certificate_seal_archive_policy: "LIVE" + }, + invariants + }; + + const archiveHash = await sha256Hex(stableStringify(archiveMaterial)); + + return json({ + schema: "speedkit.public_control_release_certificate_seal_archive_response.v1", + status: archived ? "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEAL_ARCHIVED" : "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEAL_ARCHIVE_FAILED", + mode: "PUBLIC_ONLY", + fake_checkout: false, + archived, + release_certificate_seal_archive: { + id: "speedkit-release-certificate-seal-archive-" + String(archiveHash).slice(0, 16), + hash_algorithm: "SHA-256", + release_certificate_seal_archive_hash: archiveHash, + release_certificate_seal_archive_hash_excludes_archived_at: true, + material_schema: archiveMaterial.schema, + release_certificate_seal_verification_hash: sealVerificationHash, + release_certificate_seal_hash: releaseCertificateSealHash, + recomputed_release_certificate_seal_hash: recomputedReleaseCertificateSealHash, + release_certificate_seal_hash_ok: releaseCertificateSealHash === recomputedReleaseCertificateSealHash, + release_certificate_verification_hash: releaseCertificateVerificationHash, + release_certificate_hash: releaseCertificateHash, + release_certificate_hash_ok: sealVerify.verification?.release_certificate_hash_ok === true, + release_archive_verification_hash: releaseArchiveVerificationHash, + release_archive_hash: releaseArchiveHash, + release_archive_hash_ok: sealVerify.verification?.release_archive_hash_ok === true, + release_seal_verification_hash: releaseSealVerificationHash, + release_seal_hash: archiveMaterial.release_seal_hash, + route_count: archiveRouteCount, + seal_verifier_route_count: sealVerify.verification?.route_count || null, + seal_route_count: releaseCertificateSeal.release_certificate_seal?.route_count || null, + certificate_verifier_route_count: sealVerify.verification?.certificate_verifier_route_count || null, + certificate_route_count: sealVerify.verification?.certificate_route_count || null, + archive_verifier_route_count: sealVerify.verification?.archive_verifier_route_count || null, + archive_route_count: sealVerify.verification?.archive_route_count || null, + workspace_entries: 135, + private_remaining: 0, + recognized_execution_systems: 4 + }, + failures_count: failures.length, + failures, + invariants, + release_certificate_seal_archive_material: archiveMaterial, + release_certificate_seal_verification: { + verification_hash: sealVerificationHash, + release_certificate_seal_hash: releaseCertificateSealHash, + recomputed_release_certificate_seal_hash: recomputedReleaseCertificateSealHash, + release_certificate_seal_hash_ok: releaseCertificateSealHash === recomputedReleaseCertificateSealHash, + failures_count: Number(sealVerify.failures_count ?? -1) + }, + source_status: archiveMaterial.source_status + }, archived ? 200 : 503); + } catch (error) { + return json({ + schema: "speedkit.public_control_release_certificate_seal_archive_response.v1", + status: "PUBLIC_CONTROL_RELEASE_CERTIFICATE_SEAL_ARCHIVE_ERROR", + archived: false, + failures_count: 1, + failures: ["release_certificate_seal_archive_exception"], + error: String(error && error.message ? error.message : error) + }, 500); + } +} + +export async function onRequest(context) { + if (context.request.method === "GET" || context.request.method === "HEAD") return onRequestGet(context); + return json({ + schema: "speedkit.public_control_release_certificate_seal_archive_response.v1", + status: "METHOD_NOT_ALLOWED" + }, 405); +} diff --git a/health.json b/health.json index c8af473..ec1c177 100644 --- a/health.json +++ b/health.json @@ -206,5 +206,8 @@ "public_control_release_certificate_seal_page": "/marketplace/control-release-certificate-seal/", "public_control_release_certificate_seal_verifier_status": "LIVE", "public_control_release_certificate_seal_verifier_api": "/api/marketplace/control-release-certificate-seal-verify", - "public_control_release_certificate_seal_verifier_page": "/marketplace/control-release-certificate-seal-verify/" + "public_control_release_certificate_seal_verifier_page": "/marketplace/control-release-certificate-seal-verify/", + "public_control_release_certificate_seal_archive_status": "LIVE", + "public_control_release_certificate_seal_archive_api": "/api/marketplace/control-release-certificate-seal-archive", + "public_control_release_certificate_seal_archive_page": "/marketplace/control-release-certificate-seal-archive/" } diff --git a/index.html b/index.html index 0921c70..447451d 100644 --- a/index.html +++ b/index.html @@ -550,6 +550,13 @@

SPEEDKIT Public Control Release Certificate Seal Verifier

Open release certificate seal verifier + +
+

SPEEDKIT Public Control Release Certificate Seal Archive

+

Archives the verified public release certificate seal and seal verifier hash.

+ Open release certificate seal archive +
+ diff --git a/marketplace.json b/marketplace.json index ccbd0f6..fa845e9 100644 --- a/marketplace.json +++ b/marketplace.json @@ -2615,5 +2615,8 @@ "public_control_release_certificate_seal_page": "/marketplace/control-release-certificate-seal/", "public_control_release_certificate_seal_verifier_status": "LIVE", "public_control_release_certificate_seal_verifier_api": "/api/marketplace/control-release-certificate-seal-verify", - "public_control_release_certificate_seal_verifier_page": "/marketplace/control-release-certificate-seal-verify/" + "public_control_release_certificate_seal_verifier_page": "/marketplace/control-release-certificate-seal-verify/", + "public_control_release_certificate_seal_archive_status": "LIVE", + "public_control_release_certificate_seal_archive_api": "/api/marketplace/control-release-certificate-seal-archive", + "public_control_release_certificate_seal_archive_page": "/marketplace/control-release-certificate-seal-archive/" } diff --git a/marketplace/control-release-certificate-seal-archive-policy.json b/marketplace/control-release-certificate-seal-archive-policy.json new file mode 100644 index 0000000..253b650 --- /dev/null +++ b/marketplace/control-release-certificate-seal-archive-policy.json @@ -0,0 +1,48 @@ +{ + "schema": "speedkit.public_control_release_certificate_seal_archive_policy.v1", + "status": "LIVE", + "rule": { + "release_certificate_seal_archive_binds_seal_verifier": true, + "release_certificate_seal_archive_binds_seal": true, + "release_certificate_seal_archive_binds_certificate_verifier": true, + "release_certificate_seal_archive_binds_certificate": true, + "release_certificate_seal_archive_binds_archive_verifier": true, + "release_certificate_seal_archive_binds_archive": true, + "release_certificate_seal_archive_binds_release_seal_verifier": true, + "release_certificate_seal_archive_binds_public_only_counts": true, + "release_certificate_seal_archive_hash_algorithm": "SHA-256", + "release_certificate_seal_archive_hash_excludes_archived_at": true, + "release_certificate_seal_archive_uses_public_material_only": true, + "release_certificate_seal_archive_uses_seal_verifier_snapshot": true, + "release_certificate_seal_archive_does_not_call_seal_verify_api": true, + "release_certificate_seal_archive_does_not_call_seal_api": true, + "release_certificate_seal_archive_avoids_same_origin_http_replay": true, + "release_certificate_seal_archive_requires_seal_verified": true, + "release_certificate_seal_archive_requires_seal_hash_ok": true, + "release_certificate_seal_archive_requires_certificate_hash_ok": true, + "release_certificate_seal_archive_requires_archive_hash_ok": true, + "release_certificate_seal_archive_requires_failures_zero": true, + "release_certificate_seal_archive_requires_private_remaining_zero": true, + "release_certificate_seal_archive_requires_system_count_four": true, + "release_certificate_seal_archive_requires_workspace_count_135": true, + "release_certificate_seal_archive_requires_route_count_floor": true, + "release_certificate_seal_archive_returns_json_on_error": true, + "release_certificate_seal_archive_no_uncaught_html_500": true, + "checkout_remains_live": true, + "public_surfaces_remain_public": true + }, + "authority": { + "public_control_release_certificate_seal_archive_api": "/api/marketplace/control-release-certificate-seal-archive", + "public_control_release_certificate_seal_archive_page": "/marketplace/control-release-certificate-seal-archive/", + "public_control_release_certificate_seal_archive_policy": "/marketplace/control-release-certificate-seal-archive-policy.json", + "public_control_release_certificate_seal_verify_api": "/api/marketplace/control-release-certificate-seal-verify", + "public_control_release_certificate_seal_api": "/api/marketplace/control-release-certificate-seal", + "public_control_release_certificate_verify_api": "/api/marketplace/control-release-certificate-verify", + "public_control_release_certificate_api": "/api/marketplace/control-release-certificate", + "public_control_release_archive_verify_api": "/api/marketplace/control-release-archive-verify", + "public_control_release_archive_api": "/api/marketplace/control-release-archive", + "checkout_api": "/api/marketplace/checkout", + "product_os_json": "/marketplace/product-os.json", + "route_map_json": "/marketplace/route-map.json" + } +} diff --git a/marketplace/control-release-certificate-seal-archive/index.html b/marketplace/control-release-certificate-seal-archive/index.html new file mode 100644 index 0000000..5461c40 --- /dev/null +++ b/marketplace/control-release-certificate-seal-archive/index.html @@ -0,0 +1,53 @@ + + + + + +SPEEDKIT Public Control Release Certificate Seal Archive + + + +
+
+
+

SPEEDKIT Control Engine

+

Public Control Release Certificate Seal Archive

+

Archive surface for the verified public release certificate seal, seal verifier hash, certificate verifier hash, archive verifier hash, public-only counts, and checkout continuity.

+
+ Marketplace OS +
+ +
+
+

Archive API

+

Archives the public release certificate seal verifier state into a deterministic public-only archive hash.

+ +
+
+

Archive invariants

+
    +
  • release_certificate_seal_hash_ok = true
  • +
  • release_certificate_hash_ok = true
  • +
  • release_archive_hash_ok = true
  • +
  • private_remaining = 0
  • +
  • recognized_execution_systems = 4
  • +
  • workspace_entries = 135
  • +
  • failures_count = 0
  • +
+
+
+ +
Ready.
+
+ + + + diff --git a/marketplace/control-release-certificate-seal-verify-policy.json b/marketplace/control-release-certificate-seal-verify-policy.json index 0b3a8e9..e123d1c 100644 --- a/marketplace/control-release-certificate-seal-verify-policy.json +++ b/marketplace/control-release-certificate-seal-verify-policy.json @@ -23,7 +23,9 @@ "release_certificate_seal_verifier_returns_json_on_error": true, "release_certificate_seal_verifier_no_uncaught_html_500": true, "checkout_remains_live": true, - "public_surfaces_remain_public": true + "public_surfaces_remain_public": true, + "release_certificate_seal_archive_live": true, + "release_certificate_seal_archive_binds_seal_verifier": true }, "authority": { "public_control_release_certificate_seal_verify_api": "/api/marketplace/control-release-certificate-seal-verify", @@ -37,6 +39,9 @@ "public_control_release_archive_api": "/api/marketplace/control-release-archive", "checkout_api": "/api/marketplace/checkout", "product_os_json": "/marketplace/product-os.json", - "route_map_json": "/marketplace/route-map.json" + "route_map_json": "/marketplace/route-map.json", + "public_control_release_certificate_seal_archive_api": "/api/marketplace/control-release-certificate-seal-archive", + "public_control_release_certificate_seal_archive_page": "/marketplace/control-release-certificate-seal-archive/", + "public_control_release_certificate_seal_archive_policy": "/marketplace/control-release-certificate-seal-archive-policy.json" } } diff --git a/marketplace/product-os.json b/marketplace/product-os.json index c66ecca..2368068 100644 --- a/marketplace/product-os.json +++ b/marketplace/product-os.json @@ -86,7 +86,9 @@ "public_control_release_certificate_seal": "LIVE", "marketplace_os_release_certificate_seal": "LIVE", "public_control_release_certificate_seal_verifier": "LIVE", - "marketplace_os_release_certificate_seal_verified": "LIVE" + "marketplace_os_release_certificate_seal_verified": "LIVE", + "public_control_release_certificate_seal_archive": "LIVE", + "marketplace_os_release_certificate_seal_archive": "LIVE" }, "rails": { "public_control": [ @@ -408,5 +410,8 @@ "public_control_release_certificate_seal_page": "/marketplace/control-release-certificate-seal/", "public_control_release_certificate_seal_verifier_status": "LIVE", "public_control_release_certificate_seal_verifier_api": "/api/marketplace/control-release-certificate-seal-verify", - "public_control_release_certificate_seal_verifier_page": "/marketplace/control-release-certificate-seal-verify/" + "public_control_release_certificate_seal_verifier_page": "/marketplace/control-release-certificate-seal-verify/", + "public_control_release_certificate_seal_archive_status": "LIVE", + "public_control_release_certificate_seal_archive_api": "/api/marketplace/control-release-certificate-seal-archive", + "public_control_release_certificate_seal_archive_page": "/marketplace/control-release-certificate-seal-archive/" } diff --git a/marketplace/route-map.json b/marketplace/route-map.json index abefcf1..8bcfadf 100644 --- a/marketplace/route-map.json +++ b/marketplace/route-map.json @@ -3,7 +3,7 @@ "status": "LIVE", "mode": "PUBLIC_ONLY", "generated_at": "2026-06-22T20:08:00.762Z", - "route_count": 126, + "route_count": 129, "routes": [ { "route": "/", @@ -619,6 +619,18 @@ { "route": "/marketplace/control-release-certificate-seal-verify-policy.json", "status": "LIVE" + }, + { + "route": "/api/marketplace/control-release-certificate-seal-archive", + "status": "LIVE" + }, + { + "route": "/marketplace/control-release-certificate-seal-archive/", + "status": "LIVE" + }, + { + "route": "/marketplace/control-release-certificate-seal-archive-policy.json", + "status": "LIVE" } ], "capability_routes_status": "LIVE", @@ -707,5 +719,9 @@ "public_control_release_certificate_seal_verifier_status": "LIVE", "public_control_release_certificate_seal_verifier_api": "/api/marketplace/control-release-certificate-seal-verify", "public_control_release_certificate_seal_verifier_page": "/marketplace/control-release-certificate-seal-verify/", - "public_control_release_certificate_seal_verifier_routes_status": "LIVE" + "public_control_release_certificate_seal_verifier_routes_status": "LIVE", + "public_control_release_certificate_seal_archive_status": "LIVE", + "public_control_release_certificate_seal_archive_api": "/api/marketplace/control-release-certificate-seal-archive", + "public_control_release_certificate_seal_archive_page": "/marketplace/control-release-certificate-seal-archive/", + "public_control_release_certificate_seal_archive_routes_status": "LIVE" }