diff --git a/evidence-registry.json b/evidence-registry.json index 53dcce7..e3b0c07 100644 --- a/evidence-registry.json +++ b/evidence-registry.json @@ -4,10 +4,179 @@ "repository": "OpenAdaptAI/.github", "repository_id": "858454062", "repository_owner_id": "132681217", - "revision": 1, - "previous_registry_head_sha256": null, - "registry_head_sha256": "sha256:3c88a4e945f1aa51ee080f05331c0d7a36b907ad288cf8a24b2fef08b1681a97", - "signer_registry": null, - "signer_registry_history": [], - "entries": [] + "revision": 2, + "previous_registry_head_sha256": "sha256:3c88a4e945f1aa51ee080f05331c0d7a36b907ad288cf8a24b2fef08b1681a97", + "registry_head_sha256": "sha256:12508b788997dcd841b7b116b512dd7c1e129192988a947952bcc2e2e8572a24", + "signer_registry": { + "schema_version": "openadapt.qualification-signer-registry-pointer/v1", + "object_path": "production-evidence/signer-registries/sha256/7a/7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6.qualification-signer-registry.json", + "object_sha256": "sha256:7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6", + "registry_identity_sha256": "sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14", + "registry_revision": 1 + }, + "signer_registry_history": [ + { + "schema_version": "openadapt.qualification-signer-registry-pointer/v1", + "object_path": "production-evidence/signer-registries/sha256/7a/7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6.qualification-signer-registry.json", + "object_sha256": "sha256:7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6", + "registry_identity_sha256": "sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14", + "registry_revision": 1 + } + ], + "entries": [ + { + "kind": "qualification-authority-state-receipt", + "object_schema_version": "openadapt.qualification-authority-state-receipt/v2", + "object_path": "production-evidence/objects/sha256/a2/a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e.qualification-authority-state-receipt.json", + "object_sha256": "sha256:a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e", + "size_bytes": 1520, + "object_media_type": "application/vnd.openadapt.qualification-authority-state-receipt+json;version=2", + "semantic_identity_sha256": "sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa", + "subject_sha256": null, + "registry_entry_sha256": "sha256:d69026ffefb99b4eeb6c27db2913684138ee23f3b8923aa8ae3379e839489401" + }, + { + "kind": "qualification-authority-state-receipt-sigstore-bundle", + "object_schema_version": "application/vnd.dev.sigstore.bundle.v0.3+json", + "object_path": "production-evidence/objects/sha256/0f/0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830.qualification-authority-state-receipt-sigstore-bundle.json", + "object_sha256": "sha256:0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830", + "size_bytes": 2809, + "object_media_type": "application/vnd.dev.sigstore.bundle.v0.3+json", + "semantic_identity_sha256": "sha256:96b1361340164f4cfc3d9f50e88868c6d36a62a085a8543ed818a4b1ba905714", + "subject_sha256": "sha256:a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e", + "registry_entry_sha256": "sha256:29397e66bbafd8e02e8fbbaceaf2d3c1d2892723cd396bb0d4abb1a443192592" + }, + { + "kind": "qualification-revocation-state-receipt", + "object_schema_version": "openadapt.qualification-revocation-state-receipt/v1", + "object_path": "production-evidence/objects/sha256/18/18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676.qualification-revocation-state-receipt.json", + "object_sha256": "sha256:18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676", + "size_bytes": 1457, + "object_media_type": "application/vnd.openadapt.qualification-revocation-state-receipt+json;version=1", + "semantic_identity_sha256": "sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457", + "subject_sha256": null, + "registry_entry_sha256": "sha256:2592f2856bbfb5e381640f050669a3dfc1b19cbc4fbf7438ce18d0df1731f722" + }, + { + "kind": "qualification-revocation-state-receipt-sigstore-bundle", + "object_schema_version": "application/vnd.dev.sigstore.bundle.v0.3+json", + "object_path": "production-evidence/objects/sha256/4e/4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f.qualification-revocation-state-receipt-sigstore-bundle.json", + "object_sha256": "sha256:4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f", + "size_bytes": 2817, + "object_media_type": "application/vnd.dev.sigstore.bundle.v0.3+json", + "semantic_identity_sha256": "sha256:fcebb8e521419ea3c6aefa97885aa7153e88821e1a20617998067e921abc4d00", + "subject_sha256": "sha256:18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676", + "registry_entry_sha256": "sha256:e4bf33edf52cf708db739746b4d99098642255380e70edc654a287c5d1aafe04" + }, + { + "kind": "qualification-evidence-decision-receipt", + "object_schema_version": "openadapt.qualification-evidence-decision-receipt/v2", + "object_path": "production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json", + "object_sha256": "sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a", + "size_bytes": 6636, + "object_media_type": "application/vnd.openadapt.qualification-evidence-decision-receipt+json;version=2", + "semantic_identity_sha256": "sha256:c18d69bdfb145139581ea6865f513179bd104cb02a64d838f93e49f96d9d3769", + "subject_sha256": null, + "registry_entry_sha256": "sha256:63d0170fb957ebd167f2650ef744d70839d0676a8cf9f8978d73aed5cffd0b27" + }, + { + "kind": "qualification-evidence-decision-receipt-sigstore-bundle", + "object_schema_version": "application/vnd.dev.sigstore.bundle.v0.3+json", + "object_path": "production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json", + "object_sha256": "sha256:09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d", + "size_bytes": 2849, + "object_media_type": "application/vnd.dev.sigstore.bundle.v0.3+json", + "semantic_identity_sha256": "sha256:21d2be624cc93f033b13eceabd7ea42b39ab6f80790c643235c80a32272545a6", + "subject_sha256": "sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a", + "registry_entry_sha256": "sha256:40e134188beb1f1dd8bf17eaa02d84b8246ae11db7b99db68efb493f2a3d7955" + }, + { + "kind": "qualification-admission", + "object_schema_version": "openadapt.qualification-admission/v4", + "object_path": "production-evidence/objects/sha256/dc/dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04.qualification-admission.json", + "object_sha256": "sha256:dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04", + "size_bytes": 8055, + "object_media_type": "application/vnd.openadapt.qualification-admission+json;version=4", + "semantic_identity_sha256": "sha256:a480d62a9c2aa5ed6061d3b0140cf908024b23e90b7535bb3c09e9da6f748e90", + "subject_sha256": null, + "registry_entry_sha256": "sha256:813040c698d3b04d39825502635f5337bcf08d5885142363fe9b16a76b4667a6" + }, + { + "kind": "qualification-admission-sigstore-bundle", + "object_schema_version": "application/vnd.dev.sigstore.bundle.v0.3+json", + "object_path": "production-evidence/objects/sha256/17/1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32.qualification-admission-sigstore-bundle.json", + "object_sha256": "sha256:1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32", + "size_bytes": 2737, + "object_media_type": "application/vnd.dev.sigstore.bundle.v0.3+json", + "semantic_identity_sha256": "sha256:5bfd1cb8d71754563173aef8a5dcffff00bf8016ec5b60553d72b69dee1cb214", + "subject_sha256": "sha256:dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04", + "registry_entry_sha256": "sha256:c0b5b8dd6fd24352f32896d24d276dc8256005d9eee2a97ac1a83fb576441da4" + }, + { + "kind": "production-acceptance-manifest", + "object_schema_version": "openadapt.production-acceptance/v3", + "object_path": "production-evidence/objects/sha256/21/211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca.production-acceptance-manifest.json", + "object_sha256": "sha256:211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca", + "size_bytes": 13633, + "object_media_type": "application/vnd.openadapt.production-acceptance+json;version=3", + "semantic_identity_sha256": "sha256:2e24dd5a8f4aefba4478952c3d2d120d8d0706cf6cc4dafd74b2f21f75ce9ea5", + "subject_sha256": null, + "registry_entry_sha256": "sha256:502cb9dffb93c654258c305841e4515e933eb647edf375b8f36ee6e3f57fab8c" + }, + { + "kind": "production-acceptance-manifest-sigstore-bundle", + "object_schema_version": "application/vnd.dev.sigstore.bundle.v0.3+json", + "object_path": "production-evidence/objects/sha256/ac/ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c.production-acceptance-manifest-sigstore-bundle.json", + "object_sha256": "sha256:ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c", + "size_bytes": 2749, + "object_media_type": "application/vnd.dev.sigstore.bundle.v0.3+json", + "semantic_identity_sha256": "sha256:1ebdadbe1754dbef6ceb987dd5a9fcf3d982c2414bd0a01e7b4c923bc46924eb", + "subject_sha256": "sha256:211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca", + "registry_entry_sha256": "sha256:15f463cf84ae49b1d5baeb053ad8e9c3a61aa4a84d1f982635e1d9bd88b17ca7" + }, + { + "kind": "production-acceptance-summary", + "object_schema_version": "openadapt.production-lifecycle-evidence-summary/v3", + "object_path": "production-evidence/objects/sha256/38/3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4.production-acceptance-summary.json", + "object_sha256": "sha256:3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4", + "size_bytes": 14497, + "object_media_type": "application/vnd.openadapt.production-lifecycle-evidence-summary+json;version=3", + "semantic_identity_sha256": "sha256:cf65d1d351869c63e88d7188d1e78727994cc3f6e76c88f5643a61d168a84445", + "subject_sha256": null, + "registry_entry_sha256": "sha256:932511112a7eb5f296b752953ac184516a47f7630643ecf70955af722e78ef68" + }, + { + "kind": "production-acceptance-summary-sigstore-bundle", + "object_schema_version": "application/vnd.dev.sigstore.bundle.v0.3+json", + "object_path": "production-evidence/objects/sha256/e9/e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb.production-acceptance-summary-sigstore-bundle.json", + "object_sha256": "sha256:e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb", + "size_bytes": 2789, + "object_media_type": "application/vnd.dev.sigstore.bundle.v0.3+json", + "semantic_identity_sha256": "sha256:1b5606b9f4c14edd37ec134a9c716a070832b8709e3c2f9c6f4186ff514b7c82", + "subject_sha256": "sha256:3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4", + "registry_entry_sha256": "sha256:7dc2fcab09f705356a22b058b9e7f078596bcdefdb697bef7315510d17931549" + }, + { + "kind": "qualification-release", + "object_schema_version": "openadapt.qualification-release/v2", + "object_path": "production-evidence/objects/sha256/79/790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82.qualification-release.json", + "object_sha256": "sha256:790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82", + "size_bytes": 7613, + "object_media_type": "application/vnd.openadapt.qualification-release+json;version=2", + "semantic_identity_sha256": "sha256:71b46fb92f831149424e7d087eb4fc754be48765bef569fa5d3130e97c2814f5", + "subject_sha256": null, + "registry_entry_sha256": "sha256:9cc63061d654347805f0f6bcae2aec428172f76399840a849c70bba8c3527c66" + }, + { + "kind": "qualification-release-sigstore-bundle", + "object_schema_version": "application/vnd.dev.sigstore.bundle.v0.3+json", + "object_path": "production-evidence/objects/sha256/48/4804e33f847a04d35304c9948ade6ac9e736b06a1a8c9ab920da0833b7423e01.qualification-release-sigstore-bundle.json", + "object_sha256": "sha256:4804e33f847a04d35304c9948ade6ac9e736b06a1a8c9ab920da0833b7423e01", + "size_bytes": 2741, + "object_media_type": "application/vnd.dev.sigstore.bundle.v0.3+json", + "semantic_identity_sha256": "sha256:40a94e162eb69b460a12354ac8622323d95fe74277f02cab2e22e9624ed06040", + "subject_sha256": "sha256:790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82", + "registry_entry_sha256": "sha256:39a37bcfc95a5cc8d81d5588240b70bda4a2bd5a29f23111562c6b7a59951cba" + } + ] } diff --git a/production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json b/production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json new file mode 100644 index 0000000..e2c3cb9 --- /dev/null +++ b/production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json @@ -0,0 +1 @@ +{"dsseEnvelope":{"payload":"eyJhdXRob3JpdHlfc3RhdGVfc2hhMjU2Ijoic2hhMjU2OmRmNTA3OTE0MWRmNjg4NzdjNGIwNmYwNWI5ZmI5ZmRmMjc5MzA3Yjc2MjllYjFmMmRjZTEyZGVmNGJkNWUyZmEiLCJleHBpcmVzX2F0IjpudWxsLCJpc3N1ZWRfYXQiOiIyMDI2LTA5LTAyVDE4OjI0OjI1WiIsImtleV9pZCI6Im9hLXB1YmxpYy10cnVzdC1lZDI1NTE5LTljZjRiY2EyMTRjMDFkNzkiLCJub3RfYmVmb3JlIjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJvYmplY3Rfa2luZCI6InF1YWxpZmljYXRpb24tZXZpZGVuY2UtZGVjaXNpb24tcmVjZWlwdCIsIm9iamVjdF9tZWRpYV90eXBlIjoiYXBwbGljYXRpb24vdm5kLm9wZW5hZGFwdC5xdWFsaWZpY2F0aW9uLWV2aWRlbmNlLWRlY2lzaW9uLXJlY2VpcHQranNvbjt2ZXJzaW9uPTIiLCJvYmplY3Rfc2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbi1yZWNlaXB0L3YyIiwib2JqZWN0X3NoYTI1NiI6InNoYTI1Njo2ZmZlNjkxZjhlNDBlMDZiNzNlMjQzOTFkMTgwNDI0ZWQ4NmJiMjg5ZGRhZTAwMWNmN2I0OWRlMmU3NDUzMTJhIiwib2JqZWN0X3NpemVfYnl0ZXMiOjY2MzYsInJlcXVlc3RfaWRfc2hhMjU2Ijoic2hhMjU2Ojg5ZjhjNjZmY2Y4YTkzOWMyYzY1YTUyODYwNTVjOTNkNWFmNTBiZTVjYjk1OTk5NTg3NWE0NjZiZDRkM2QzNWQiLCJyZXZvY2F0aW9uX3N0YXRlX3NoYTI1NiI6InNoYTI1NjoyNTBhYjQzMGU0NjdmNWU1ODRlYmQyYjE4MzI5NzZiNDIxODZiNjk4ZGE3MWQ2MjdlZTE3MjRjMmIxZGEyNDU3Iiwic2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1wdWJsaWMtdHJ1c3Qtc2lnbmluZy1zdGF0ZW1lbnQvdjEiLCJzZW1hbnRpY19pZGVudGl0eV9zaGEyNTYiOiJzaGEyNTY6YzE4ZDY5YmRmYjE0NTEzOTU4MWVhNjg2NWY1MTMxNzliZDEwNGNiMDJhNjRkODM4ZjkzZTQ5Zjk2ZDlkMzc2OSIsInNpZ25hdHVyZV9wcm9maWxlIjoic29mdHdhcmUtZWQyNTUxOS1kc3NlLXYxIiwic2lnbmVyX3JlZ2lzdHJ5X3NoYTI1NiI6InNoYTI1NjplMjQzYTIzMjQzYjI0OTg2ZWQwODgxMmUyODRhMWJkOGM0OTkzODE0MTQ5ZjAyYmNiYTc5Y2M1MjBlMTBjYTE0Iiwic2lnbmluZ19hdXRob3JpdHkiOnsiZW52aXJvbm1lbnQiOiJzeW50aGV0aWMtcXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbiIsImtleV9vcmlnaW4iOiJzb2Z0d2FyZSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInJlcG9zaXRvcnkiOiJPcGVuQWRhcHRBSS8uZ2l0aHViIiwicmVwb3NpdG9yeV9pZCI6Ijg1ODQ1NDA2MiIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiIxMzI2ODEyMTciLCJzb3VyY2VfY29tbWl0IjoiMmMxMjk3MDJkYTcxODUyMmNjMjU3OTEzMjA3YjZlZDZmM2IzM2I3YyIsIndvcmtmbG93IjoiLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1wcm9kdWN0aW9uLWV2aWRlbmNlLXNvZnR3YXJlLnltbCJ9LCJzb3VyY2VfaXNzdWVyIjp7ImVudmlyb25tZW50Ijoic3ludGhldGljLXF1YWxpZmljYXRpb24tZXZpZGVuY2UtZGVjaXNpb24iLCJyZWYiOiJyZWZzL2hlYWRzL21haW4iLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvLmdpdGh1YiIsInJlcG9zaXRvcnlfaWQiOiI4NTg0NTQwNjIiLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMTMyNjgxMjE3Iiwic291cmNlX2NvbW1pdCI6IjJjMTI5NzAyZGE3MTg1MjJjYzI1NzkxMzIwN2I2ZWQ2ZjNiMzNiN2MiLCJ3b3JrZmxvdyI6Ii5naXRodWIvd29ya2Zsb3dzL2lzc3VlLXN5bnRoZXRpYy1xdWFsaWZpY2F0aW9uLWV2aWRlbmNlLWRlY2lzaW9uLnltbCJ9fQo=","payloadType":"application/vnd.openadapt.production-public-trust-signing-statement+json;version=1","signatures":[{"keyid":"oa-public-trust-ed25519-9cf4bca214c01d79","sig":"4B2FfdCfIUwpIx+kd+GF2o5bkACWBWS55g/RHZO0sMl9tMdNhziiYEPI6HySlg1O18wsu1s9KlfkPaf1lnmuAA=="}]},"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"publicKey":{"hint":"oa-public-trust-ed25519-9cf4bca214c01d79"}}} diff --git a/production-evidence/objects/sha256/0f/0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830.qualification-authority-state-receipt-sigstore-bundle.json b/production-evidence/objects/sha256/0f/0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830.qualification-authority-state-receipt-sigstore-bundle.json new file mode 100644 index 0000000..23e41d1 --- /dev/null +++ b/production-evidence/objects/sha256/0f/0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830.qualification-authority-state-receipt-sigstore-bundle.json @@ -0,0 +1 @@ +{"dsseEnvelope":{"payload":"eyJhdXRob3JpdHlfc3RhdGVfc2hhMjU2Ijoic2hhMjU2OmRmNTA3OTE0MWRmNjg4NzdjNGIwNmYwNWI5ZmI5ZmRmMjc5MzA3Yjc2MjllYjFmMmRjZTEyZGVmNGJkNWUyZmEiLCJleHBpcmVzX2F0IjpudWxsLCJpc3N1ZWRfYXQiOiIyMDI2LTA5LTAyVDE4OjI0OjI1WiIsImtleV9pZCI6Im9hLXB1YmxpYy10cnVzdC1lZDI1NTE5LTljZjRiY2EyMTRjMDFkNzkiLCJub3RfYmVmb3JlIjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJvYmplY3Rfa2luZCI6InF1YWxpZmljYXRpb24tYXV0aG9yaXR5LXN0YXRlLXJlY2VpcHQiLCJvYmplY3RfbWVkaWFfdHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5vcGVuYWRhcHQucXVhbGlmaWNhdGlvbi1hdXRob3JpdHktc3RhdGUtcmVjZWlwdCtqc29uO3ZlcnNpb249MiIsIm9iamVjdF9zY2hlbWFfdmVyc2lvbiI6Im9wZW5hZGFwdC5xdWFsaWZpY2F0aW9uLWF1dGhvcml0eS1zdGF0ZS1yZWNlaXB0L3YyIiwib2JqZWN0X3NoYTI1NiI6InNoYTI1NjphMjJmOTgxNWVjMGY3YzU2Zjc2MjlhZWFiZmQyMWQxNGJjNmQ3MzllZmNmYjdmN2EwNzNjZTk5ODdlMTk0NzllIiwib2JqZWN0X3NpemVfYnl0ZXMiOjE1MjAsInJlcXVlc3RfaWRfc2hhMjU2Ijoic2hhMjU2OmI5ZDhiOWQ0ZTA3ZDc3M2MxMWFjNjA4ZTA1MGYyMzNiMTE2MzYzZWNkODQxMTA1MTYxY2I1Y2JmNzUwZmZjOGUiLCJyZXZvY2F0aW9uX3N0YXRlX3NoYTI1NiI6InNoYTI1NjoyNTBhYjQzMGU0NjdmNWU1ODRlYmQyYjE4MzI5NzZiNDIxODZiNjk4ZGE3MWQ2MjdlZTE3MjRjMmIxZGEyNDU3Iiwic2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1wdWJsaWMtdHJ1c3Qtc2lnbmluZy1zdGF0ZW1lbnQvdjEiLCJzZW1hbnRpY19pZGVudGl0eV9zaGEyNTYiOiJzaGEyNTY6ZGY1MDc5MTQxZGY2ODg3N2M0YjA2ZjA1YjlmYjlmZGYyNzkzMDdiNzYyOWViMWYyZGNlMTJkZWY0YmQ1ZTJmYSIsInNpZ25hdHVyZV9wcm9maWxlIjoic29mdHdhcmUtZWQyNTUxOS1kc3NlLXYxIiwic2lnbmVyX3JlZ2lzdHJ5X3NoYTI1NiI6InNoYTI1Njo3YTgxYmYzZDIxM2M3NDY3M2YzYzZiNWZhMTc5MjM0Y2JlZTUzNGM5NDMyYWFlYTZhZTA5ZTQ1NTU2MmY5NmI2Iiwic2lnbmluZ19hdXRob3JpdHkiOnsiZW52aXJvbm1lbnQiOiJzeW50aGV0aWMtcXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbiIsImtleV9vcmlnaW4iOiJzb2Z0d2FyZSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInJlcG9zaXRvcnkiOiJPcGVuQWRhcHRBSS8uZ2l0aHViIiwicmVwb3NpdG9yeV9pZCI6Ijg1ODQ1NDA2MiIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiIxMzI2ODEyMTciLCJzb3VyY2VfY29tbWl0IjoiMmMxMjk3MDJkYTcxODUyMmNjMjU3OTEzMjA3YjZlZDZmM2IzM2I3YyIsIndvcmtmbG93IjoiLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1wcm9kdWN0aW9uLWV2aWRlbmNlLXNvZnR3YXJlLnltbCJ9LCJzb3VyY2VfaXNzdWVyIjp7ImVudmlyb25tZW50IjoicXVhbGlmaWNhdGlvbi1hdXRob3JpdHktc3RhdGUiLCJyZWYiOiJyZWZzL2hlYWRzL21haW4iLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvb3BlbmFkYXB0LW9wcyIsInJlcG9zaXRvcnlfaWQiOiIxMTcyMDExMjk0IiwicmVwb3NpdG9yeV9vd25lcl9pZCI6IjEzMjY4MTIxNyIsInNvdXJjZV9jb21taXQiOiJlMzIzMjQ5ZTNhN2MxYWY5ZDc2NTEzMTJlMGFmZTFmMTJjMzhjOTc3Iiwid29ya2Zsb3ciOiIuZ2l0aHViL3dvcmtmbG93cy9xdWFsaWZpY2F0aW9uLWF1dGhvcml0eS1zdGF0ZS55bWwifX0K","payloadType":"application/vnd.openadapt.production-public-trust-signing-statement+json;version=1","signatures":[{"keyid":"oa-public-trust-ed25519-9cf4bca214c01d79","sig":"wdmPoPKf3091kjDye9E9XCnfgqlljw8M+CEW2Vr0/hC5i85AWrpMfxPOB8Ui0KvTbF70QqLgFbgLqgdwWIPaDQ=="}]},"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"publicKey":{"hint":"oa-public-trust-ed25519-9cf4bca214c01d79"}}} diff --git a/production-evidence/objects/sha256/17/1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32.qualification-admission-sigstore-bundle.json b/production-evidence/objects/sha256/17/1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32.qualification-admission-sigstore-bundle.json new file mode 100644 index 0000000..c7630e6 --- /dev/null +++ b/production-evidence/objects/sha256/17/1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32.qualification-admission-sigstore-bundle.json @@ -0,0 +1 @@ +{"dsseEnvelope":{"payload":"eyJhdXRob3JpdHlfc3RhdGVfc2hhMjU2Ijoic2hhMjU2OmRmNTA3OTE0MWRmNjg4NzdjNGIwNmYwNWI5ZmI5ZmRmMjc5MzA3Yjc2MjllYjFmMmRjZTEyZGVmNGJkNWUyZmEiLCJleHBpcmVzX2F0IjpudWxsLCJpc3N1ZWRfYXQiOiIyMDI2LTA5LTAyVDE4OjI0OjI1WiIsImtleV9pZCI6Im9hLXB1YmxpYy10cnVzdC1lZDI1NTE5LTljZjRiY2EyMTRjMDFkNzkiLCJub3RfYmVmb3JlIjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJvYmplY3Rfa2luZCI6InF1YWxpZmljYXRpb24tYWRtaXNzaW9uIiwib2JqZWN0X21lZGlhX3R5cGUiOiJhcHBsaWNhdGlvbi92bmQub3BlbmFkYXB0LnF1YWxpZmljYXRpb24tYWRtaXNzaW9uK2pzb247dmVyc2lvbj00Iiwib2JqZWN0X3NjaGVtYV92ZXJzaW9uIjoib3BlbmFkYXB0LnF1YWxpZmljYXRpb24tYWRtaXNzaW9uL3Y0Iiwib2JqZWN0X3NoYTI1NiI6InNoYTI1NjpkY2RiMzJhNzYyYWNhODdmYmIxYTdjOWRmNWQzNDY0MDNiMTY3ZWM1ODUwZDM1ZmU0N2ZkNjRkOTQyNjg0YTA0Iiwib2JqZWN0X3NpemVfYnl0ZXMiOjgwNTUsInJlcXVlc3RfaWRfc2hhMjU2Ijoic2hhMjU2OjYxZGZiZWM5YzBhMzc0Y2MyYzM0Mjc0Yzg2MDIyOGVhODNmZTM5NmZjMzkwYzMxOGI1ODRiMDA5YTU0MTc2OWMiLCJyZXZvY2F0aW9uX3N0YXRlX3NoYTI1NiI6InNoYTI1NjoyNTBhYjQzMGU0NjdmNWU1ODRlYmQyYjE4MzI5NzZiNDIxODZiNjk4ZGE3MWQ2MjdlZTE3MjRjMmIxZGEyNDU3Iiwic2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1wdWJsaWMtdHJ1c3Qtc2lnbmluZy1zdGF0ZW1lbnQvdjEiLCJzZW1hbnRpY19pZGVudGl0eV9zaGEyNTYiOiJzaGEyNTY6YTQ4MGQ2MmE5YzJhYTVlZDYwNjFkM2IwMTQwY2Y5MDgwMjRiMjNlOTBiNzUzNWJiM2MwOWU5ZGE2Zjc0OGU5MCIsInNpZ25hdHVyZV9wcm9maWxlIjoic29mdHdhcmUtZWQyNTUxOS1kc3NlLXYxIiwic2lnbmVyX3JlZ2lzdHJ5X3NoYTI1NiI6InNoYTI1NjplMjQzYTIzMjQzYjI0OTg2ZWQwODgxMmUyODRhMWJkOGM0OTkzODE0MTQ5ZjAyYmNiYTc5Y2M1MjBlMTBjYTE0Iiwic2lnbmluZ19hdXRob3JpdHkiOnsiZW52aXJvbm1lbnQiOiJzeW50aGV0aWMtcXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbiIsImtleV9vcmlnaW4iOiJzb2Z0d2FyZSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInJlcG9zaXRvcnkiOiJPcGVuQWRhcHRBSS8uZ2l0aHViIiwicmVwb3NpdG9yeV9pZCI6Ijg1ODQ1NDA2MiIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiIxMzI2ODEyMTciLCJzb3VyY2VfY29tbWl0IjoiMmMxMjk3MDJkYTcxODUyMmNjMjU3OTEzMjA3YjZlZDZmM2IzM2I3YyIsIndvcmtmbG93IjoiLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1wcm9kdWN0aW9uLWV2aWRlbmNlLXNvZnR3YXJlLnltbCJ9LCJzb3VyY2VfaXNzdWVyIjp7ImVudmlyb25tZW50IjoicXVhbGlmaWNhdGlvbi1hZG1pc3Npb24iLCJyZWYiOiJyZWZzL2hlYWRzL21haW4iLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvLmdpdGh1YiIsInJlcG9zaXRvcnlfaWQiOiI4NTg0NTQwNjIiLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMTMyNjgxMjE3Iiwic291cmNlX2NvbW1pdCI6IjJjMTI5NzAyZGE3MTg1MjJjYzI1NzkxMzIwN2I2ZWQ2ZjNiMzNiN2MiLCJ3b3JrZmxvdyI6Ii5naXRodWIvd29ya2Zsb3dzL2lzc3VlLXF1YWxpZmljYXRpb24tYWRtaXNzaW9uLnltbCJ9fQo=","payloadType":"application/vnd.openadapt.production-public-trust-signing-statement+json;version=1","signatures":[{"keyid":"oa-public-trust-ed25519-9cf4bca214c01d79","sig":"+Yx8YgUpt2BtK3dfylC1kmkUxvPx/XgFuyqAZTDGA4yz4IF0M6EYPg/semaTXiquoVF6P3FISYkMIhuz8Pc+AQ=="}]},"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"publicKey":{"hint":"oa-public-trust-ed25519-9cf4bca214c01d79"}}} diff --git a/production-evidence/objects/sha256/18/18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676.qualification-revocation-state-receipt.json b/production-evidence/objects/sha256/18/18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676.qualification-revocation-state-receipt.json new file mode 100644 index 0000000..fdc3e22 --- /dev/null +++ b/production-evidence/objects/sha256/18/18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676.qualification-revocation-state-receipt.json @@ -0,0 +1 @@ +{"algorithm":"ed25519","authority_state_sha256":"sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa","expires_at":null,"issuer":{"environment":"qualification-revocation-state","ref":"refs/heads/main","repository":"OpenAdaptAI/openadapt-ops","repository_id":"1172011294","repository_owner_id":"132681217","source_commit":"e323249e3a7c1af9d7651312e0afe1f12c38c977","workflow":".github/workflows/qualification-revocation-state.yml"},"issuer_key_id":"qa-ed25519-9cf4bca214c01d79","not_before":"2026-09-02T18:24:25Z","observed_at":"2026-09-02T18:24:25Z","previous_revocation_state_sha256":null,"revision":1,"revocation_state_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","revocations":[],"schema_version":"openadapt.qualification-revocation-state-receipt/v1","signature":"6/az5KZHqcV7weLNpPR11DnJR3f7Wfj5JgqcFddGoET+x+Q42rWH7zkgdDVJqvP+XxN09f1fHBmvkWlDvqlBBQ==","signer_registry_sha256":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","signing_statement":{"commitment_scheme":"sha256-canonical-json-lf","object_schema_version":"openadapt.qualification-revocation-state-receipt/v1","schema_version":"openadapt.qualification-evidence-signing-statement/v1","signature_domain":"OpenAdapt qualification revocation state receipt v1\u0000","unsigned_object_sha256":"sha256:f7e15c3c660e2793c8c0c4f6beafef140ee71b2a407d971d2e6af0578b2fd6d6","unsigned_size_bytes":930},"status":"current"} diff --git a/production-evidence/objects/sha256/21/211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca.production-acceptance-manifest.json b/production-evidence/objects/sha256/21/211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca.production-acceptance-manifest.json new file mode 100644 index 0000000..df7bcee --- /dev/null +++ b/production-evidence/objects/sha256/21/211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca.production-acceptance-manifest.json @@ -0,0 +1 @@ +{"acceptance_policy_sha256":"sha256:ed5ab69fe8127604ca674263cbc8c774b7cfd10754e90bfaa9b71ba573bce1d1","artifact_inventory":{"artifacts":[{"kind":"python-sdist","media_type":"application/gzip","name":"openadapt_flow-1.34.0.tar.gz","publish_destinations":["github-release","pypi"],"sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838},{"kind":"python-wheel","media_type":"application/zip","name":"openadapt_flow-1.34.0-py3-none-any.whl","publish_destinations":["github-release","pypi"],"sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194}],"claim_scope":"production_flow","schema_version":"openadapt.production-release-artifact-inventory/v1","target":"flow"},"artifact_inventory_sha256":"sha256:ec3ef7c177c493bebee3da60f170b37793832e81066e9d9ee785d5fa225a5ac5","authority_state_sha256":"sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa","campaign_summary":{"declared_attended":{"approved_repair_count":0,"authenticated_bound_decision_count":3,"blind_retry_count":0,"live_target_revalidation_count":3,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"governed_repair":{"approved_repair_count":3,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":3,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":3,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":3,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"healthy":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"idempotency_replay":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"safe_halt":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"uncertain_delivery":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":3,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0}},"claim_scope":"production_flow","expires_at":null,"issued_at":"2026-09-02T18:24:25Z","issuer":{"environment":"production-acceptance","ref":"refs/heads/main","repository":"OpenAdaptAI/openadapt-evals","repository_id":"1135998197","repository_owner_id":"132681217","source_commit":"cad5560d6b7482f2cb99b9735e0ac3c5aae714c8","workflow":".github/workflows/issue-production-acceptance.yml"},"lifecycle_policy_sha256":"sha256:6c8daa221668e0a39188d7485d997ed04396e5142dd7422e34785bf3286a40d1","not_before":"2026-09-02T18:24:25Z","publication_staging":{"assets":[{"asset_id":"534029483","kind":"python-wheel","media_type":"application/zip","name":"openadapt_flow-1.34.0-py3-none-any.whl","publish_destinations":["github-release","pypi"],"sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194,"uploader_id":"321543906","uploader_login":"openadapt-release[bot]"},{"asset_id":"534029484","kind":"python-sdist","media_type":"application/gzip","name":"openadapt_flow-1.34.0.tar.gz","publish_destinations":["github-release","pypi"],"sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838,"uploader_id":"321543906","uploader_login":"openadapt-release[bot]"}],"draft":false,"draft_release_id":"378603192","immutable_releases":{"enabled":true,"enforced_by_owner":false},"immutable_releases_sha256":"sha256:07649aafb167237fecc138f5e93b48ddce5a69f4060da7130e3c78e59fd48581","observed_at":"2026-09-02T18:24:25Z","prerelease":false,"publication_mode":"already-published-pypi","pypi_files":[{"filename":"openadapt_flow-1.34.0-py3-none-any.whl","packagetype":"bdist_wheel","sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194,"yanked":false},{"filename":"openadapt_flow-1.34.0.tar.gz","packagetype":"sdist","sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838,"yanked":false}],"release_app_bot_user_id":"321543906","release_app_id":"4730708","release_app_installation_id":"156835568","release_author_login":"openadapt-release[bot]","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","schema_version":"openadapt.production-release-staging-evidence/v1","tag":"v1.34.0","tag_ref_state":{"exists":true,"ref":"refs/tags/v1.34.0"},"tag_ref_state_sha256":"sha256:74c5665395ed98ba3fd1b3a284bab1e8089f7c79cfafb3f88548e8b1456c5782","tag_rulesets":[{"bypass_actors":[{"actor_id":"4730708","actor_type":"Integration","bypass_mode":"always"}],"conditions":{"ref_name":{"exclude":[],"include":["refs/tags/v*"]}},"enforcement":"active","name":"OpenAdapt policy: release tag creation","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","role":"creation_authority","rules":[{"type":"creation"}],"ruleset_id":"10","schema_version":"openadapt.production-release-tag-ruleset/v1","target":"tag"},{"bypass_actors":[],"conditions":{"ref_name":{"exclude":[],"include":["refs/tags/v*"]}},"enforcement":"active","name":"OpenAdapt policy: immutable release tags","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","role":"immutability","rules":[{"type":"deletion"},{"type":"non_fast_forward"},{"parameters":{"update_allows_fetch_and_merge":false},"type":"update"}],"ruleset_id":"11","schema_version":"openadapt.production-release-tag-ruleset/v1","target":"tag"}],"tag_rulesets_sha256":"sha256:b0fdf160d80ae7dc8ffd979b2ba101cee6b3e7cf139e8c5d32b5534cbc0f7f44","target_commitish":"30fc60e55778a0e0f92b9776117cafcfe2512249"},"publication_staging_sha256":"sha256:861175c196cfe9455ce5f0536b6b1eabf55a990ced03349b865643f52316dedd","qualification_admission_bundle_reference":{"kind":"qualification-admission-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/17/1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32.qualification-admission-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32","registry_entry_sha256":"sha256:c0b5b8dd6fd24352f32896d24d276dc8256005d9eee2a97ac1a83fb576441da4","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:5bfd1cb8d71754563173aef8a5dcffff00bf8016ec5b60553d72b69dee1cb214","size_bytes":2737,"subject_sha256":"sha256:dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04"},"qualification_admission_reference":{"kind":"qualification-admission","object_media_type":"application/vnd.openadapt.qualification-admission+json;version=4","object_path":"production-evidence/objects/sha256/dc/dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04.qualification-admission.json","object_schema_version":"openadapt.qualification-admission/v4","object_sha256":"sha256:dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04","registry_entry_sha256":"sha256:813040c698d3b04d39825502635f5337bcf08d5885142363fe9b16a76b4667a6","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:a480d62a9c2aa5ed6061d3b0140cf908024b23e90b7535bb3c09e9da6f748e90","size_bytes":8055,"subject_sha256":null},"qualification_evidence_decision_receipt_bundle_reference":{"kind":"qualification-evidence-decision-receipt-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d","registry_entry_sha256":"sha256:40e134188beb1f1dd8bf17eaa02d84b8246ae11db7b99db68efb493f2a3d7955","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:21d2be624cc93f033b13eceabd7ea42b39ab6f80790c643235c80a32272545a6","size_bytes":2849,"subject_sha256":"sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a"},"qualification_evidence_decision_receipt_reference":{"kind":"qualification-evidence-decision-receipt","object_media_type":"application/vnd.openadapt.qualification-evidence-decision-receipt+json;version=2","object_path":"production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json","object_schema_version":"openadapt.qualification-evidence-decision-receipt/v2","object_sha256":"sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a","registry_entry_sha256":"sha256:63d0170fb957ebd167f2650ef744d70839d0676a8cf9f8978d73aed5cffd0b27","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:c18d69bdfb145139581ea6865f513179bd104cb02a64d838f93e49f96d9d3769","size_bytes":6636,"subject_sha256":null},"release":{"artifacts":[{"kind":"python-sdist","media_type":"application/gzip","name":"openadapt_flow-1.34.0.tar.gz","publish_destinations":["github-release","pypi"],"sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838},{"kind":"python-wheel","media_type":"application/zip","name":"openadapt_flow-1.34.0-py3-none-any.whl","publish_destinations":["github-release","pypi"],"sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194}],"deployment_id":null,"deployment_sha256":null,"kind":"package","schema_version":"openadapt.production-release-candidate/v1","source_commit":"30fc60e55778a0e0f92b9776117cafcfe2512249","source_repository":"OpenAdaptAI/openadapt-flow","source_repository_id":"1291376938","tag":"v1.34.0","version":"1.34.0"},"release_identity":{"channel":"production","previous_admission_sha256":null,"schema_version":"openadapt.monotonic-production-release/v1","sequence":1},"release_sha256":"sha256:f84c03c857bda8372d39bc30afcc2986247778c34b3f93a39ec9de5dd151a289","revocation_state_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","schema_version":"openadapt.production-acceptance/v3","signer_registry_sha256":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","target":"flow","verdict":"accepted"} diff --git a/production-evidence/objects/sha256/38/3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4.production-acceptance-summary.json b/production-evidence/objects/sha256/38/3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4.production-acceptance-summary.json new file mode 100644 index 0000000..0659bdb --- /dev/null +++ b/production-evidence/objects/sha256/38/3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4.production-acceptance-summary.json @@ -0,0 +1 @@ +{"acceptance_policy_sha256":"sha256:ed5ab69fe8127604ca674263cbc8c774b7cfd10754e90bfaa9b71ba573bce1d1","artifact_inventory_sha256":"sha256:ec3ef7c177c493bebee3da60f170b37793832e81066e9d9ee785d5fa225a5ac5","authority_state_sha256":"sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa","campaign_summary":{"declared_attended":{"approved_repair_count":0,"authenticated_bound_decision_count":3,"blind_retry_count":0,"live_target_revalidation_count":3,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"governed_repair":{"approved_repair_count":3,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":3,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":3,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":3,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"healthy":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"idempotency_replay":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"safe_halt":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"uncertain_delivery":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":3,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0}},"claim_scope":"production_flow","evidence_identity_sha256":"sha256:c5362154ed3171a6d592beca0c3a9c10243988864f3ba6793d6393f356ca7715","expires_at":null,"issued_at":"2026-09-02T18:24:25Z","issuer":{"environment":"production-acceptance","ref":"refs/heads/main","repository":"OpenAdaptAI/openadapt-evals","repository_id":"1135998197","repository_owner_id":"132681217","source_commit":"cad5560d6b7482f2cb99b9735e0ac3c5aae714c8","workflow":".github/workflows/issue-production-acceptance.yml"},"lifecycle_policy_sha256":"sha256:6c8daa221668e0a39188d7485d997ed04396e5142dd7422e34785bf3286a40d1","not_before":"2026-09-02T18:24:25Z","production_acceptance_manifest_bundle_reference":{"kind":"production-acceptance-manifest-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/ac/ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c.production-acceptance-manifest-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c","registry_entry_sha256":"sha256:15f463cf84ae49b1d5baeb053ad8e9c3a61aa4a84d1f982635e1d9bd88b17ca7","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:1ebdadbe1754dbef6ceb987dd5a9fcf3d982c2414bd0a01e7b4c923bc46924eb","size_bytes":2749,"subject_sha256":"sha256:211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca"},"production_acceptance_manifest_reference":{"kind":"production-acceptance-manifest","object_media_type":"application/vnd.openadapt.production-acceptance+json;version=3","object_path":"production-evidence/objects/sha256/21/211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca.production-acceptance-manifest.json","object_schema_version":"openadapt.production-acceptance/v3","object_sha256":"sha256:211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca","registry_entry_sha256":"sha256:502cb9dffb93c654258c305841e4515e933eb647edf375b8f36ee6e3f57fab8c","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:2e24dd5a8f4aefba4478952c3d2d120d8d0706cf6cc4dafd74b2f21f75ce9ea5","size_bytes":13633,"subject_sha256":null},"publication_staging":{"assets":[{"asset_id":"534029483","kind":"python-wheel","media_type":"application/zip","name":"openadapt_flow-1.34.0-py3-none-any.whl","publish_destinations":["github-release","pypi"],"sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194,"uploader_id":"321543906","uploader_login":"openadapt-release[bot]"},{"asset_id":"534029484","kind":"python-sdist","media_type":"application/gzip","name":"openadapt_flow-1.34.0.tar.gz","publish_destinations":["github-release","pypi"],"sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838,"uploader_id":"321543906","uploader_login":"openadapt-release[bot]"}],"draft":false,"draft_release_id":"378603192","immutable_releases":{"enabled":true,"enforced_by_owner":false},"immutable_releases_sha256":"sha256:07649aafb167237fecc138f5e93b48ddce5a69f4060da7130e3c78e59fd48581","observed_at":"2026-09-02T18:24:25Z","prerelease":false,"publication_mode":"already-published-pypi","pypi_files":[{"filename":"openadapt_flow-1.34.0-py3-none-any.whl","packagetype":"bdist_wheel","sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194,"yanked":false},{"filename":"openadapt_flow-1.34.0.tar.gz","packagetype":"sdist","sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838,"yanked":false}],"release_app_bot_user_id":"321543906","release_app_id":"4730708","release_app_installation_id":"156835568","release_author_login":"openadapt-release[bot]","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","schema_version":"openadapt.production-release-staging-evidence/v1","tag":"v1.34.0","tag_ref_state":{"exists":true,"ref":"refs/tags/v1.34.0"},"tag_ref_state_sha256":"sha256:74c5665395ed98ba3fd1b3a284bab1e8089f7c79cfafb3f88548e8b1456c5782","tag_rulesets":[{"bypass_actors":[{"actor_id":"4730708","actor_type":"Integration","bypass_mode":"always"}],"conditions":{"ref_name":{"exclude":[],"include":["refs/tags/v*"]}},"enforcement":"active","name":"OpenAdapt policy: release tag creation","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","role":"creation_authority","rules":[{"type":"creation"}],"ruleset_id":"10","schema_version":"openadapt.production-release-tag-ruleset/v1","target":"tag"},{"bypass_actors":[],"conditions":{"ref_name":{"exclude":[],"include":["refs/tags/v*"]}},"enforcement":"active","name":"OpenAdapt policy: immutable release tags","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","role":"immutability","rules":[{"type":"deletion"},{"type":"non_fast_forward"},{"parameters":{"update_allows_fetch_and_merge":false},"type":"update"}],"ruleset_id":"11","schema_version":"openadapt.production-release-tag-ruleset/v1","target":"tag"}],"tag_rulesets_sha256":"sha256:b0fdf160d80ae7dc8ffd979b2ba101cee6b3e7cf139e8c5d32b5534cbc0f7f44","target_commitish":"30fc60e55778a0e0f92b9776117cafcfe2512249"},"publication_staging_sha256":"sha256:861175c196cfe9455ce5f0536b6b1eabf55a990ced03349b865643f52316dedd","qualification_admission_bundle_reference":{"kind":"qualification-admission-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/17/1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32.qualification-admission-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32","registry_entry_sha256":"sha256:c0b5b8dd6fd24352f32896d24d276dc8256005d9eee2a97ac1a83fb576441da4","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:5bfd1cb8d71754563173aef8a5dcffff00bf8016ec5b60553d72b69dee1cb214","size_bytes":2737,"subject_sha256":"sha256:dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04"},"qualification_admission_reference":{"kind":"qualification-admission","object_media_type":"application/vnd.openadapt.qualification-admission+json;version=4","object_path":"production-evidence/objects/sha256/dc/dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04.qualification-admission.json","object_schema_version":"openadapt.qualification-admission/v4","object_sha256":"sha256:dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04","registry_entry_sha256":"sha256:813040c698d3b04d39825502635f5337bcf08d5885142363fe9b16a76b4667a6","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:a480d62a9c2aa5ed6061d3b0140cf908024b23e90b7535bb3c09e9da6f748e90","size_bytes":8055,"subject_sha256":null},"qualification_evidence_decision_receipt_bundle_reference":{"kind":"qualification-evidence-decision-receipt-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d","registry_entry_sha256":"sha256:40e134188beb1f1dd8bf17eaa02d84b8246ae11db7b99db68efb493f2a3d7955","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:21d2be624cc93f033b13eceabd7ea42b39ab6f80790c643235c80a32272545a6","size_bytes":2849,"subject_sha256":"sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a"},"qualification_evidence_decision_receipt_reference":{"kind":"qualification-evidence-decision-receipt","object_media_type":"application/vnd.openadapt.qualification-evidence-decision-receipt+json;version=2","object_path":"production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json","object_schema_version":"openadapt.qualification-evidence-decision-receipt/v2","object_sha256":"sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a","registry_entry_sha256":"sha256:63d0170fb957ebd167f2650ef744d70839d0676a8cf9f8978d73aed5cffd0b27","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:c18d69bdfb145139581ea6865f513179bd104cb02a64d838f93e49f96d9d3769","size_bytes":6636,"subject_sha256":null},"release_identity":{"channel":"production","previous_admission_sha256":null,"schema_version":"openadapt.monotonic-production-release/v1","sequence":1},"release_sha256":"sha256:f84c03c857bda8372d39bc30afcc2986247778c34b3f93a39ec9de5dd151a289","revocation_state_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","schema_version":"openadapt.production-lifecycle-evidence-summary/v3","signer_registry_sha256":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","target":"flow","verdict":"accepted"} diff --git a/production-evidence/objects/sha256/48/4804e33f847a04d35304c9948ade6ac9e736b06a1a8c9ab920da0833b7423e01.qualification-release-sigstore-bundle.json b/production-evidence/objects/sha256/48/4804e33f847a04d35304c9948ade6ac9e736b06a1a8c9ab920da0833b7423e01.qualification-release-sigstore-bundle.json new file mode 100644 index 0000000..cd9f721 --- /dev/null +++ b/production-evidence/objects/sha256/48/4804e33f847a04d35304c9948ade6ac9e736b06a1a8c9ab920da0833b7423e01.qualification-release-sigstore-bundle.json @@ -0,0 +1 @@ +{"dsseEnvelope":{"payload":"eyJhdXRob3JpdHlfc3RhdGVfc2hhMjU2Ijoic2hhMjU2OmRmNTA3OTE0MWRmNjg4NzdjNGIwNmYwNWI5ZmI5ZmRmMjc5MzA3Yjc2MjllYjFmMmRjZTEyZGVmNGJkNWUyZmEiLCJleHBpcmVzX2F0IjpudWxsLCJpc3N1ZWRfYXQiOiIyMDI2LTA5LTAyVDE4OjI0OjI1WiIsImtleV9pZCI6Im9hLXB1YmxpYy10cnVzdC1lZDI1NTE5LTljZjRiY2EyMTRjMDFkNzkiLCJub3RfYmVmb3JlIjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJvYmplY3Rfa2luZCI6InF1YWxpZmljYXRpb24tcmVsZWFzZSIsIm9iamVjdF9tZWRpYV90eXBlIjoiYXBwbGljYXRpb24vdm5kLm9wZW5hZGFwdC5xdWFsaWZpY2F0aW9uLXJlbGVhc2UranNvbjt2ZXJzaW9uPTIiLCJvYmplY3Rfc2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucXVhbGlmaWNhdGlvbi1yZWxlYXNlL3YyIiwib2JqZWN0X3NoYTI1NiI6InNoYTI1Njo3OTAxMjJhMjVjODdlNDU2YzZlNDVkMjVlYmY1Y2QwMjliMjFiODUxMTI2NWIwNjJmZDkxMjliNzRhYTFkZDgyIiwib2JqZWN0X3NpemVfYnl0ZXMiOjc2MTMsInJlcXVlc3RfaWRfc2hhMjU2Ijoic2hhMjU2OjMzYWQ2NmU4ZDE2MDdlMjY1MmE1ZWI2MjUyZjQzODg2OTFiOTNlZTY2NzM1NGRhOTQwZjVhMGYwMjU1ZTBiZjkiLCJyZXZvY2F0aW9uX3N0YXRlX3NoYTI1NiI6InNoYTI1NjoyNTBhYjQzMGU0NjdmNWU1ODRlYmQyYjE4MzI5NzZiNDIxODZiNjk4ZGE3MWQ2MjdlZTE3MjRjMmIxZGEyNDU3Iiwic2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1wdWJsaWMtdHJ1c3Qtc2lnbmluZy1zdGF0ZW1lbnQvdjEiLCJzZW1hbnRpY19pZGVudGl0eV9zaGEyNTYiOiJzaGEyNTY6NzFiNDZmYjkyZjgzMTE0OTQyNGU3ZDA4N2ViNGZjNzU0YmU0ODc2NWJlZjU2OWZhNWQzMTMwZTk3YzI4MTRmNSIsInNpZ25hdHVyZV9wcm9maWxlIjoic29mdHdhcmUtZWQyNTUxOS1kc3NlLXYxIiwic2lnbmVyX3JlZ2lzdHJ5X3NoYTI1NiI6InNoYTI1NjplMjQzYTIzMjQzYjI0OTg2ZWQwODgxMmUyODRhMWJkOGM0OTkzODE0MTQ5ZjAyYmNiYTc5Y2M1MjBlMTBjYTE0Iiwic2lnbmluZ19hdXRob3JpdHkiOnsiZW52aXJvbm1lbnQiOiJzeW50aGV0aWMtcXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbiIsImtleV9vcmlnaW4iOiJzb2Z0d2FyZSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInJlcG9zaXRvcnkiOiJPcGVuQWRhcHRBSS8uZ2l0aHViIiwicmVwb3NpdG9yeV9pZCI6Ijg1ODQ1NDA2MiIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiIxMzI2ODEyMTciLCJzb3VyY2VfY29tbWl0IjoiMmMxMjk3MDJkYTcxODUyMmNjMjU3OTEzMjA3YjZlZDZmM2IzM2I3YyIsIndvcmtmbG93IjoiLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1wcm9kdWN0aW9uLWV2aWRlbmNlLXNvZnR3YXJlLnltbCJ9LCJzb3VyY2VfaXNzdWVyIjp7ImVudmlyb25tZW50IjoicHJvZHVjdGlvbi1yZWxlYXNlLWFkbWlzc2lvbiIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInJlcG9zaXRvcnkiOiJPcGVuQWRhcHRBSS8uZ2l0aHViIiwicmVwb3NpdG9yeV9pZCI6Ijg1ODQ1NDA2MiIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiIxMzI2ODEyMTciLCJzb3VyY2VfY29tbWl0IjoiMmMxMjk3MDJkYTcxODUyMmNjMjU3OTEzMjA3YjZlZDZmM2IzM2I3YyIsIndvcmtmbG93IjoiLmdpdGh1Yi93b3JrZmxvd3MvaXNzdWUtcHJvZHVjdGlvbi1yZWxlYXNlLWFkbWlzc2lvbi55bWwifX0K","payloadType":"application/vnd.openadapt.production-public-trust-signing-statement+json;version=1","signatures":[{"keyid":"oa-public-trust-ed25519-9cf4bca214c01d79","sig":"j2UY7M6WWlAZmDcG7//GsS3FfwP8qAsG2Nr471CUzvoS6gIoiGK1d7Htptyf8IXdc4ypTChSJx96N+Hy0GKrAA=="}]},"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"publicKey":{"hint":"oa-public-trust-ed25519-9cf4bca214c01d79"}}} diff --git a/production-evidence/objects/sha256/4e/4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f.qualification-revocation-state-receipt-sigstore-bundle.json b/production-evidence/objects/sha256/4e/4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f.qualification-revocation-state-receipt-sigstore-bundle.json new file mode 100644 index 0000000..3d39da8 --- /dev/null +++ b/production-evidence/objects/sha256/4e/4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f.qualification-revocation-state-receipt-sigstore-bundle.json @@ -0,0 +1 @@ +{"dsseEnvelope":{"payload":"eyJhdXRob3JpdHlfc3RhdGVfc2hhMjU2Ijoic2hhMjU2OmRmNTA3OTE0MWRmNjg4NzdjNGIwNmYwNWI5ZmI5ZmRmMjc5MzA3Yjc2MjllYjFmMmRjZTEyZGVmNGJkNWUyZmEiLCJleHBpcmVzX2F0IjpudWxsLCJpc3N1ZWRfYXQiOiIyMDI2LTA5LTAyVDE4OjI0OjI1WiIsImtleV9pZCI6Im9hLXB1YmxpYy10cnVzdC1lZDI1NTE5LTljZjRiY2EyMTRjMDFkNzkiLCJub3RfYmVmb3JlIjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJvYmplY3Rfa2luZCI6InF1YWxpZmljYXRpb24tcmV2b2NhdGlvbi1zdGF0ZS1yZWNlaXB0Iiwib2JqZWN0X21lZGlhX3R5cGUiOiJhcHBsaWNhdGlvbi92bmQub3BlbmFkYXB0LnF1YWxpZmljYXRpb24tcmV2b2NhdGlvbi1zdGF0ZS1yZWNlaXB0K2pzb247dmVyc2lvbj0xIiwib2JqZWN0X3NjaGVtYV92ZXJzaW9uIjoib3BlbmFkYXB0LnF1YWxpZmljYXRpb24tcmV2b2NhdGlvbi1zdGF0ZS1yZWNlaXB0L3YxIiwib2JqZWN0X3NoYTI1NiI6InNoYTI1NjoxODYzM2I4Y2MyNDNmNjg2NzA2NjA2MTYyYmZhMjQ5YTI5NzMzODExNTYzZjYzYjllNjhjYzdjNGEzNTA3Njc2Iiwib2JqZWN0X3NpemVfYnl0ZXMiOjE0NTcsInJlcXVlc3RfaWRfc2hhMjU2Ijoic2hhMjU2OjIwZGJjNzViNmYzMjJmMmU1ZDg3MjdlOTA0ZTRjYzA4ZDBmZTJhMWY1YjA5YTE5ZDNkN2M0ODE1YzlhOWUyZDUiLCJyZXZvY2F0aW9uX3N0YXRlX3NoYTI1NiI6InNoYTI1NjoyNTBhYjQzMGU0NjdmNWU1ODRlYmQyYjE4MzI5NzZiNDIxODZiNjk4ZGE3MWQ2MjdlZTE3MjRjMmIxZGEyNDU3Iiwic2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1wdWJsaWMtdHJ1c3Qtc2lnbmluZy1zdGF0ZW1lbnQvdjEiLCJzZW1hbnRpY19pZGVudGl0eV9zaGEyNTYiOiJzaGEyNTY6MjUwYWI0MzBlNDY3ZjVlNTg0ZWJkMmIxODMyOTc2YjQyMTg2YjY5OGRhNzFkNjI3ZWUxNzI0YzJiMWRhMjQ1NyIsInNpZ25hdHVyZV9wcm9maWxlIjoic29mdHdhcmUtZWQyNTUxOS1kc3NlLXYxIiwic2lnbmVyX3JlZ2lzdHJ5X3NoYTI1NiI6InNoYTI1NjplMjQzYTIzMjQzYjI0OTg2ZWQwODgxMmUyODRhMWJkOGM0OTkzODE0MTQ5ZjAyYmNiYTc5Y2M1MjBlMTBjYTE0Iiwic2lnbmluZ19hdXRob3JpdHkiOnsiZW52aXJvbm1lbnQiOiJzeW50aGV0aWMtcXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbiIsImtleV9vcmlnaW4iOiJzb2Z0d2FyZSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInJlcG9zaXRvcnkiOiJPcGVuQWRhcHRBSS8uZ2l0aHViIiwicmVwb3NpdG9yeV9pZCI6Ijg1ODQ1NDA2MiIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiIxMzI2ODEyMTciLCJzb3VyY2VfY29tbWl0IjoiMmMxMjk3MDJkYTcxODUyMmNjMjU3OTEzMjA3YjZlZDZmM2IzM2I3YyIsIndvcmtmbG93IjoiLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1wcm9kdWN0aW9uLWV2aWRlbmNlLXNvZnR3YXJlLnltbCJ9LCJzb3VyY2VfaXNzdWVyIjp7ImVudmlyb25tZW50IjoicXVhbGlmaWNhdGlvbi1yZXZvY2F0aW9uLXN0YXRlIiwicmVmIjoicmVmcy9oZWFkcy9tYWluIiwicmVwb3NpdG9yeSI6Ik9wZW5BZGFwdEFJL29wZW5hZGFwdC1vcHMiLCJyZXBvc2l0b3J5X2lkIjoiMTE3MjAxMTI5NCIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiIxMzI2ODEyMTciLCJzb3VyY2VfY29tbWl0IjoiZTMyMzI0OWUzYTdjMWFmOWQ3NjUxMzEyZTBhZmUxZjEyYzM4Yzk3NyIsIndvcmtmbG93IjoiLmdpdGh1Yi93b3JrZmxvd3MvcXVhbGlmaWNhdGlvbi1yZXZvY2F0aW9uLXN0YXRlLnltbCJ9fQo=","payloadType":"application/vnd.openadapt.production-public-trust-signing-statement+json;version=1","signatures":[{"keyid":"oa-public-trust-ed25519-9cf4bca214c01d79","sig":"6H/dlDXrZ0r2kihJrm8OKF7UriiNbloFiofPmckxWdhvRtXo4bttnEtqK2Fr7i7rCQ2+22RmvRbtd8Idx17bCg=="}]},"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"publicKey":{"hint":"oa-public-trust-ed25519-9cf4bca214c01d79"}}} diff --git a/production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json b/production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json new file mode 100644 index 0000000..b26db2f --- /dev/null +++ b/production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json @@ -0,0 +1 @@ +{"action_contract_sha256":"sha256:d4b8a931c16bca24cd343c786f41566357d9edcc8b0b97d3c1cb9907571dd56b","admitted_runtime_sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","algorithm":"ed25519","application_contract_sha256":"sha256:e8f70b24976d2befeaea5e54059e39b1934a211c49cba65ac41e6cfdfd70ec80","bundle_sha256":"sha256:33f8c637f3d5d9eb23b92e0fb7ba74d2713a52f7c8ed11495b30f8bbefb1f312","bundle_version":"0.0.0-synthetic","campaign_artifact_sha256":"sha256:e2f2aa6b30118864682892a08e7e151039a34e7e7f84ff027e253cf8daddff78","campaign_permit_sha256":"sha256:da4af1f21aa121a00f92d88fc129d47bbd1a027462408e6bf2adf8fe66fe4255","campaign_summary":{"classes":{"declared_attended":{"approved_repair_count":0,"authenticated_bound_decision_count":3,"blind_retry_count":0,"live_target_revalidation_count":3,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"governed_repair":{"approved_repair_count":3,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":3,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":3,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":3,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"healthy":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"idempotency_replay":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"safe_halt":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"uncertain_delivery":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":3,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0}},"minimum_trials_per_task_condition":3,"schema_version":"openadapt.qualification-evidence-decision-campaign-summary/v1","task_count":1},"decision_commitment_sha256":"sha256:e0491959b45066087d85ff35d32c6430b2f8d54f3f23750e01ac8cb7d48248f4","decision_identity_sha256":"sha256:26306ae89024e3be08e8151ef3be5c568d5f7b8b9afc7f11ad89af44a9260d36","decision_revision":1,"effect_contract_sha256":"sha256:ce11f9ac1059d29c5648a662ce8a4e8528ea3e8d844657aec8422d8b125a0698","entity_class":"record","environment_contract_sha256":"sha256:b01e155a3704b1f781937585da7f86c47adb8c86d48f032019ef41d6e9ceea57","evidence_authority_contract_sha256":"sha256:1aa7cfcb5f3df6b99372a28c305177e046487c8ec5b61111edbf1a12d3e76663","evidence_class":"remote-safe-synthetic","evidence_manifest_readback_sha256":"sha256:b0e022dba06f368a25c2f5e9a7dfbe92aece9125cb791c349b6981d056b8bf19","evidence_manifest_sha256":"sha256:3edc7613e1decd5714c8011854fb27d5d431bb085f5e47d6243926285d502bee","expires_at":null,"identity_contract_sha256":"sha256:34b008dd040d718fdc4d7b85b9311749b9865f47b4ba43bf6cd4a140bcf36c65","input_contract_sha256":"sha256:a82ba67af90f81e9a09f2db445a57f812b40a04c876396f191eb77eb53487a0f","issued_at":"2026-09-02T18:24:25Z","issuer":{"environment":"synthetic-qualification-evidence-decision","ref":"refs/heads/main","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","workflow":".github/workflows/issue-synthetic-qualification-evidence-decision.yml"},"issuer_key_id":"qa-ed25519-9cf4bca214c01d79","not_before":"2026-09-02T18:24:25Z","organization_id_sha256":"sha256:fcba879d867709da525f7f994a2642bc7a32014e324523a9d276bec54c3d296b","policy_contract_sha256":"sha256:482e3c7f10d044086283ea387f22b21c011e6c00cfc7fbf14cf82cfe2aedd1e0","revocation_state_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","schema_version":"openadapt.qualification-evidence-decision-receipt/v2","signature":"NywjiVqbWZ224vhvR0vM8eZGWFAo1tBGYxn91U9Jr0OuOJlQVIZAU2jfexgTbURXZnQzemFwbcFSPjUg4VMmBA==","signer_registry_sha256":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","signing_statement":{"commitment_scheme":"sha256-canonical-json-lf","object_schema_version":"openadapt.qualification-evidence-decision-receipt/v2","schema_version":"openadapt.qualification-evidence-signing-statement/v1","signature_domain":"OpenAdapt qualification evidence decision receipt v2\u0000","unsigned_object_sha256":"sha256:8e39eb6f36c984acaf947a032dcbeae718a704527a61ec5446c00958c4b3e2f5","unsigned_size_bytes":6106},"verdict":"ADMIT","workflow_id_sha256":"sha256:7176583f6120b7ff016363644afc47e835b2e4b438abe4050df160570f780af1","workflow_version_id_sha256":"sha256:4acf27da1f384b7967a1bb4fb463570657894cb83468e5763940d69ab9df1386"} diff --git a/production-evidence/objects/sha256/79/790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82.qualification-release.json b/production-evidence/objects/sha256/79/790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82.qualification-release.json new file mode 100644 index 0000000..7c1e990 --- /dev/null +++ b/production-evidence/objects/sha256/79/790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82.qualification-release.json @@ -0,0 +1 @@ +{"admission_id_sha256":"sha256:d2983b86d5428c892421b191f6943a63cf4f9a0b1629e324d099f5df6fa5dcda","artifact_inventory_sha256":"sha256:ec3ef7c177c493bebee3da60f170b37793832e81066e9d9ee785d5fa225a5ac5","authority_state_sha256":"sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa","claim_scope":"production_flow","evidence_class":"remote-safe-synthetic","expires_at":null,"issued_at":"2026-09-02T18:24:25Z","issuer":{"environment":"production-release-admission","ref":"refs/heads/main","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","workflow":".github/workflows/issue-production-release-admission.yml"},"not_before":"2026-09-02T18:24:25Z","production_acceptance_summary_bundle_reference":{"kind":"production-acceptance-summary-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/e9/e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb.production-acceptance-summary-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb","registry_entry_sha256":"sha256:7dc2fcab09f705356a22b058b9e7f078596bcdefdb697bef7315510d17931549","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:1b5606b9f4c14edd37ec134a9c716a070832b8709e3c2f9c6f4186ff514b7c82","size_bytes":2789,"subject_sha256":"sha256:3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4"},"production_acceptance_summary_reference":{"kind":"production-acceptance-summary","object_media_type":"application/vnd.openadapt.production-lifecycle-evidence-summary+json;version=3","object_path":"production-evidence/objects/sha256/38/3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4.production-acceptance-summary.json","object_schema_version":"openadapt.production-lifecycle-evidence-summary/v3","object_sha256":"sha256:3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4","registry_entry_sha256":"sha256:932511112a7eb5f296b752953ac184516a47f7630643ecf70955af722e78ef68","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:cf65d1d351869c63e88d7188d1e78727994cc3f6e76c88f5643a61d168a84445","size_bytes":14497,"subject_sha256":null},"publication_policy_sha256":"sha256:ed5ab69fe8127604ca674263cbc8c774b7cfd10754e90bfaa9b71ba573bce1d1","publication_staging":{"assets":[{"asset_id":"534029483","kind":"python-wheel","media_type":"application/zip","name":"openadapt_flow-1.34.0-py3-none-any.whl","publish_destinations":["github-release","pypi"],"sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194,"uploader_id":"321543906","uploader_login":"openadapt-release[bot]"},{"asset_id":"534029484","kind":"python-sdist","media_type":"application/gzip","name":"openadapt_flow-1.34.0.tar.gz","publish_destinations":["github-release","pypi"],"sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838,"uploader_id":"321543906","uploader_login":"openadapt-release[bot]"}],"draft":false,"draft_release_id":"378603192","immutable_releases":{"enabled":true,"enforced_by_owner":false},"immutable_releases_sha256":"sha256:07649aafb167237fecc138f5e93b48ddce5a69f4060da7130e3c78e59fd48581","observed_at":"2026-09-02T18:24:25Z","prerelease":false,"publication_mode":"already-published-pypi","pypi_files":[{"filename":"openadapt_flow-1.34.0-py3-none-any.whl","packagetype":"bdist_wheel","sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194,"yanked":false},{"filename":"openadapt_flow-1.34.0.tar.gz","packagetype":"sdist","sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838,"yanked":false}],"release_app_bot_user_id":"321543906","release_app_id":"4730708","release_app_installation_id":"156835568","release_author_login":"openadapt-release[bot]","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","schema_version":"openadapt.production-release-staging-evidence/v1","tag":"v1.34.0","tag_ref_state":{"exists":true,"ref":"refs/tags/v1.34.0"},"tag_ref_state_sha256":"sha256:74c5665395ed98ba3fd1b3a284bab1e8089f7c79cfafb3f88548e8b1456c5782","tag_rulesets":[{"bypass_actors":[{"actor_id":"4730708","actor_type":"Integration","bypass_mode":"always"}],"conditions":{"ref_name":{"exclude":[],"include":["refs/tags/v*"]}},"enforcement":"active","name":"OpenAdapt policy: release tag creation","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","role":"creation_authority","rules":[{"type":"creation"}],"ruleset_id":"10","schema_version":"openadapt.production-release-tag-ruleset/v1","target":"tag"},{"bypass_actors":[],"conditions":{"ref_name":{"exclude":[],"include":["refs/tags/v*"]}},"enforcement":"active","name":"OpenAdapt policy: immutable release tags","repository":"OpenAdaptAI/openadapt-flow","repository_id":"1291376938","role":"immutability","rules":[{"type":"deletion"},{"type":"non_fast_forward"},{"parameters":{"update_allows_fetch_and_merge":false},"type":"update"}],"ruleset_id":"11","schema_version":"openadapt.production-release-tag-ruleset/v1","target":"tag"}],"tag_rulesets_sha256":"sha256:b0fdf160d80ae7dc8ffd979b2ba101cee6b3e7cf139e8c5d32b5534cbc0f7f44","target_commitish":"30fc60e55778a0e0f92b9776117cafcfe2512249"},"publication_staging_sha256":"sha256:861175c196cfe9455ce5f0536b6b1eabf55a990ced03349b865643f52316dedd","release":{"artifacts":[{"kind":"python-sdist","media_type":"application/gzip","name":"openadapt_flow-1.34.0.tar.gz","publish_destinations":["github-release","pypi"],"sha256":"sha256:a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","size_bytes":20440838},{"kind":"python-wheel","media_type":"application/zip","name":"openadapt_flow-1.34.0-py3-none-any.whl","publish_destinations":["github-release","pypi"],"sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","size_bytes":1928194}],"deployment_id":null,"deployment_sha256":null,"kind":"package","schema_version":"openadapt.production-release-candidate/v1","source_commit":"30fc60e55778a0e0f92b9776117cafcfe2512249","source_repository":"OpenAdaptAI/openadapt-flow","source_repository_id":"1291376938","tag":"v1.34.0","version":"1.34.0"},"release_identity":{"channel":"production","previous_admission_sha256":null,"schema_version":"openadapt.monotonic-production-release/v1","sequence":1},"release_sha256":"sha256:f84c03c857bda8372d39bc30afcc2986247778c34b3f93a39ec9de5dd151a289","revocation_state_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","schema_version":"openadapt.qualification-release/v2","signer_registry_sha256":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","target":"flow","verdict":"accepted"} diff --git a/production-evidence/objects/sha256/a2/a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e.qualification-authority-state-receipt.json b/production-evidence/objects/sha256/a2/a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e.qualification-authority-state-receipt.json new file mode 100644 index 0000000..c47be2a --- /dev/null +++ b/production-evidence/objects/sha256/a2/a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e.qualification-authority-state-receipt.json @@ -0,0 +1 @@ +{"algorithm":"ed25519","authority_state_sha256":"sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa","evidence_authority_sha256":"sha256:1aa7cfcb5f3df6b99372a28c305177e046487c8ec5b61111edbf1a12d3e76663","expires_at":null,"issuer":{"environment":"qualification-authority-state","ref":"refs/heads/main","repository":"OpenAdaptAI/openadapt-ops","repository_id":"1172011294","repository_owner_id":"132681217","source_commit":"e323249e3a7c1af9d7651312e0afe1f12c38c977","workflow":".github/workflows/qualification-authority-state.yml"},"issuer_key_id":"qa-ed25519-9cf4bca214c01d79","not_before":"2026-09-02T18:24:25Z","observed_at":"2026-09-02T18:24:25Z","schema_version":"openadapt.qualification-authority-state-receipt/v2","signature":"BUa1NvZFvbPv7pari55YjS6C7p6U68c2Jjrh0vt9u+ZFky8Y6w/9p+55MggWJP8zwghMIT+HM1YlqH5++ciOBQ==","signer_registry_identity_sha256":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","signer_registry_revision":1,"signer_registry_sha256":"sha256:7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6","signing_statement":{"commitment_scheme":"sha256-canonical-json-lf","object_schema_version":"openadapt.qualification-authority-state-receipt/v2","schema_version":"openadapt.qualification-evidence-signing-statement/v1","signature_domain":"OpenAdapt qualification authority state receipt v2\u0000","unsigned_object_sha256":"sha256:be362f1c032e0f0ee8f8ad378efe7b84fb55ea5e9260977a2b9fc2e41dda9b17","unsigned_size_bytes":995},"status":"active"} diff --git a/production-evidence/objects/sha256/ac/ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c.production-acceptance-manifest-sigstore-bundle.json b/production-evidence/objects/sha256/ac/ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c.production-acceptance-manifest-sigstore-bundle.json new file mode 100644 index 0000000..d900ee8 --- /dev/null +++ b/production-evidence/objects/sha256/ac/ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c.production-acceptance-manifest-sigstore-bundle.json @@ -0,0 +1 @@ +{"dsseEnvelope":{"payload":"eyJhdXRob3JpdHlfc3RhdGVfc2hhMjU2Ijoic2hhMjU2OmRmNTA3OTE0MWRmNjg4NzdjNGIwNmYwNWI5ZmI5ZmRmMjc5MzA3Yjc2MjllYjFmMmRjZTEyZGVmNGJkNWUyZmEiLCJleHBpcmVzX2F0IjpudWxsLCJpc3N1ZWRfYXQiOiIyMDI2LTA5LTAyVDE4OjI0OjI1WiIsImtleV9pZCI6Im9hLXB1YmxpYy10cnVzdC1lZDI1NTE5LTljZjRiY2EyMTRjMDFkNzkiLCJub3RfYmVmb3JlIjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJvYmplY3Rfa2luZCI6InByb2R1Y3Rpb24tYWNjZXB0YW5jZS1tYW5pZmVzdCIsIm9iamVjdF9tZWRpYV90eXBlIjoiYXBwbGljYXRpb24vdm5kLm9wZW5hZGFwdC5wcm9kdWN0aW9uLWFjY2VwdGFuY2UranNvbjt2ZXJzaW9uPTMiLCJvYmplY3Rfc2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1hY2NlcHRhbmNlL3YzIiwib2JqZWN0X3NoYTI1NiI6InNoYTI1NjoyMTE2NTFkZDMwMTY5OWVhMTM5NGFmOGI4ZWMzOGQxYzljNmRmNTA0NWM4OGQ5Y2UxZWNlMDljYTc3NGMxNWNhIiwib2JqZWN0X3NpemVfYnl0ZXMiOjEzNjMzLCJyZXF1ZXN0X2lkX3NoYTI1NiI6InNoYTI1NjplZGVlYTQ2Mzc4OTk3NmQzZWQ4YTFkNTdkNTcxMDcwMjUwNmI1M2NhMzE2MTFkZTg1YTgwODk1OTU2MzdkMDQ0IiwicmV2b2NhdGlvbl9zdGF0ZV9zaGEyNTYiOiJzaGEyNTY6MjUwYWI0MzBlNDY3ZjVlNTg0ZWJkMmIxODMyOTc2YjQyMTg2YjY5OGRhNzFkNjI3ZWUxNzI0YzJiMWRhMjQ1NyIsInNjaGVtYV92ZXJzaW9uIjoib3BlbmFkYXB0LnByb2R1Y3Rpb24tcHVibGljLXRydXN0LXNpZ25pbmctc3RhdGVtZW50L3YxIiwic2VtYW50aWNfaWRlbnRpdHlfc2hhMjU2Ijoic2hhMjU2OjJlMjRkZDVhOGY0YWVmYmE0NDc4OTUyYzNkMmQxMjBkOGQwNzA2Y2Y2Y2M0ZGFmZDc0YjJmMjFmNzVjZTllYTUiLCJzaWduYXR1cmVfcHJvZmlsZSI6InNvZnR3YXJlLWVkMjU1MTktZHNzZS12MSIsInNpZ25lcl9yZWdpc3RyeV9zaGEyNTYiOiJzaGEyNTY6ZTI0M2EyMzI0M2IyNDk4NmVkMDg4MTJlMjg0YTFiZDhjNDk5MzgxNDE0OWYwMmJjYmE3OWNjNTIwZTEwY2ExNCIsInNpZ25pbmdfYXV0aG9yaXR5Ijp7ImVudmlyb25tZW50Ijoic3ludGhldGljLXF1YWxpZmljYXRpb24tZXZpZGVuY2UtZGVjaXNpb24iLCJrZXlfb3JpZ2luIjoic29mdHdhcmUiLCJyZWYiOiJyZWZzL2hlYWRzL21haW4iLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvLmdpdGh1YiIsInJlcG9zaXRvcnlfaWQiOiI4NTg0NTQwNjIiLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMTMyNjgxMjE3Iiwic291cmNlX2NvbW1pdCI6IjJjMTI5NzAyZGE3MTg1MjJjYzI1NzkxMzIwN2I2ZWQ2ZjNiMzNiN2MiLCJ3b3JrZmxvdyI6Ii5naXRodWIvd29ya2Zsb3dzL3NpZ24tcHJvZHVjdGlvbi1ldmlkZW5jZS1zb2Z0d2FyZS55bWwifSwic291cmNlX2lzc3VlciI6eyJlbnZpcm9ubWVudCI6InByb2R1Y3Rpb24tYWNjZXB0YW5jZSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInJlcG9zaXRvcnkiOiJPcGVuQWRhcHRBSS9vcGVuYWRhcHQtZXZhbHMiLCJyZXBvc2l0b3J5X2lkIjoiMTEzNTk5ODE5NyIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiIxMzI2ODEyMTciLCJzb3VyY2VfY29tbWl0IjoiY2FkNTU2MGQ2Yjc0ODJmMmNiOTliOTczNWUwYWMzYzVhYWU3MTRjOCIsIndvcmtmbG93IjoiLmdpdGh1Yi93b3JrZmxvd3MvaXNzdWUtcHJvZHVjdGlvbi1hY2NlcHRhbmNlLnltbCJ9fQo=","payloadType":"application/vnd.openadapt.production-public-trust-signing-statement+json;version=1","signatures":[{"keyid":"oa-public-trust-ed25519-9cf4bca214c01d79","sig":"Y372xGFB91tSyBUldgOPPbGgMBXWttlVwtuXmqqHRJBnqzFjzC079I/Nz8ODEcZeV7DY1AR5AWOmhJ0mUcl8Bw=="}]},"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"publicKey":{"hint":"oa-public-trust-ed25519-9cf4bca214c01d79"}}} diff --git a/production-evidence/objects/sha256/dc/dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04.qualification-admission.json b/production-evidence/objects/sha256/dc/dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04.qualification-admission.json new file mode 100644 index 0000000..f945826 --- /dev/null +++ b/production-evidence/objects/sha256/dc/dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04.qualification-admission.json @@ -0,0 +1 @@ +{"action_contract_sha256":"sha256:d4b8a931c16bca24cd343c786f41566357d9edcc8b0b97d3c1cb9907571dd56b","admission_id_sha256":"sha256:45c157898b6f07e57bf604b3323f206d677cac6c57a43238152cdb3308495e80","admitted_runtime_sha256":"sha256:56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","application_contract_sha256":"sha256:e8f70b24976d2befeaea5e54059e39b1934a211c49cba65ac41e6cfdfd70ec80","bundle_sha256":"sha256:33f8c637f3d5d9eb23b92e0fb7ba74d2713a52f7c8ed11495b30f8bbefb1f312","bundle_version":"0.0.0-synthetic","campaign_artifact_sha256":"sha256:e2f2aa6b30118864682892a08e7e151039a34e7e7f84ff027e253cf8daddff78","campaign_permit_sha256":"sha256:da4af1f21aa121a00f92d88fc129d47bbd1a027462408e6bf2adf8fe66fe4255","campaign_summary":{"declared_attended":{"approved_repair_count":0,"authenticated_bound_decision_count":3,"blind_retry_count":0,"live_target_revalidation_count":3,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"governed_repair":{"approved_repair_count":3,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":3,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":3,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":3,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"healthy":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"idempotency_replay":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"safe_halt":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":0,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0},"uncertain_delivery":{"approved_repair_count":0,"authenticated_bound_decision_count":0,"blind_retry_count":0,"live_target_revalidation_count":0,"minimum_trials_per_cell":3,"model_call_count":0,"observed_trial_count":3,"over_halt_count":0,"policy_approved_repair_count":0,"reconciliation_required_count":3,"replay_dispatch_count":0,"retained_repair_evidence_count":0,"silent_incorrect_success_count":0,"task_condition_cell_count":1,"unplanned_intervention_count":0,"unsafe_effect_count":0,"unverified_direct_action_count":0}},"decision_receipt_bundle_reference":{"kind":"qualification-evidence-decision-receipt-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d","registry_entry_sha256":"sha256:40e134188beb1f1dd8bf17eaa02d84b8246ae11db7b99db68efb493f2a3d7955","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:21d2be624cc93f033b13eceabd7ea42b39ab6f80790c643235c80a32272545a6","size_bytes":2849,"subject_sha256":"sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a"},"decision_receipt_reference":{"kind":"qualification-evidence-decision-receipt","object_media_type":"application/vnd.openadapt.qualification-evidence-decision-receipt+json;version=2","object_path":"production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json","object_schema_version":"openadapt.qualification-evidence-decision-receipt/v2","object_sha256":"sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a","registry_entry_sha256":"sha256:63d0170fb957ebd167f2650ef744d70839d0676a8cf9f8978d73aed5cffd0b27","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","schema_version":"openadapt.production-evidence-object-reference/v2","semantic_identity_sha256":"sha256:c18d69bdfb145139581ea6865f513179bd104cb02a64d838f93e49f96d9d3769","size_bytes":6636,"subject_sha256":null},"effect_contract_sha256":"sha256:ce11f9ac1059d29c5648a662ce8a4e8528ea3e8d844657aec8422d8b125a0698","entity_class":"record","environment_contract_sha256":"sha256:b01e155a3704b1f781937585da7f86c47adb8c86d48f032019ef41d6e9ceea57","evidence_authority_sha256":"sha256:1aa7cfcb5f3df6b99372a28c305177e046487c8ec5b61111edbf1a12d3e76663","evidence_class":"remote-safe-synthetic","expires_at":null,"identity_contract_sha256":"sha256:34b008dd040d718fdc4d7b85b9311749b9865f47b4ba43bf6cd4a140bcf36c65","input_contract_sha256":"sha256:a82ba67af90f81e9a09f2db445a57f812b40a04c876396f191eb77eb53487a0f","issued_at":"2026-09-02T18:24:25Z","issuer":{"environment":"qualification-admission","ref":"refs/heads/main","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","workflow":".github/workflows/issue-qualification-admission.yml"},"local_identity_opening":{"algorithm":"hmac-sha256","customer_controlled_secret_required":true,"exact_contract_match_required":true,"maximum_age_seconds":60,"required":true,"revalidation_before_actuation":true,"schema_version":"openadapt.qualification-local-identity-opening/v1"},"not_before":"2026-09-02T18:24:25Z","organization_id_sha256":"sha256:fcba879d867709da525f7f994a2642bc7a32014e324523a9d276bec54c3d296b","policy_contract_sha256":"sha256:482e3c7f10d044086283ea387f22b21c011e6c00cfc7fbf14cf82cfe2aedd1e0","revocation_state_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","schema_version":"openadapt.qualification-admission/v4","signer_registry_sha256":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","verdict":"accepted","workflow_id_sha256":"sha256:7176583f6120b7ff016363644afc47e835b2e4b438abe4050df160570f780af1","workflow_version_id_sha256":"sha256:4acf27da1f384b7967a1bb4fb463570657894cb83468e5763940d69ab9df1386"} diff --git a/production-evidence/objects/sha256/e9/e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb.production-acceptance-summary-sigstore-bundle.json b/production-evidence/objects/sha256/e9/e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb.production-acceptance-summary-sigstore-bundle.json new file mode 100644 index 0000000..5a494eb --- /dev/null +++ b/production-evidence/objects/sha256/e9/e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb.production-acceptance-summary-sigstore-bundle.json @@ -0,0 +1 @@ +{"dsseEnvelope":{"payload":"eyJhdXRob3JpdHlfc3RhdGVfc2hhMjU2Ijoic2hhMjU2OmRmNTA3OTE0MWRmNjg4NzdjNGIwNmYwNWI5ZmI5ZmRmMjc5MzA3Yjc2MjllYjFmMmRjZTEyZGVmNGJkNWUyZmEiLCJleHBpcmVzX2F0IjpudWxsLCJpc3N1ZWRfYXQiOiIyMDI2LTA5LTAyVDE4OjI0OjI1WiIsImtleV9pZCI6Im9hLXB1YmxpYy10cnVzdC1lZDI1NTE5LTljZjRiY2EyMTRjMDFkNzkiLCJub3RfYmVmb3JlIjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJvYmplY3Rfa2luZCI6InByb2R1Y3Rpb24tYWNjZXB0YW5jZS1zdW1tYXJ5Iiwib2JqZWN0X21lZGlhX3R5cGUiOiJhcHBsaWNhdGlvbi92bmQub3BlbmFkYXB0LnByb2R1Y3Rpb24tbGlmZWN5Y2xlLWV2aWRlbmNlLXN1bW1hcnkranNvbjt2ZXJzaW9uPTMiLCJvYmplY3Rfc2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1saWZlY3ljbGUtZXZpZGVuY2Utc3VtbWFyeS92MyIsIm9iamVjdF9zaGEyNTYiOiJzaGEyNTY6Mzg0OWZkNGUyY2FlMGQzYTc0OTY0MzYyZTQ4NTA4NzBiYjY4YzIzMDA3ZDVlYjgxODgwMDE1OWQzZWI3MzBkNCIsIm9iamVjdF9zaXplX2J5dGVzIjoxNDQ5NywicmVxdWVzdF9pZF9zaGEyNTYiOiJzaGEyNTY6NDNjMjMxZmEzZmFmMjIxZDJiNWUzOWYwMmM0YjI2NjNmZWY2Yjk1NTU0YzgwNjI2MDEzY2EyNmEzYTNlNWRkNSIsInJldm9jYXRpb25fc3RhdGVfc2hhMjU2Ijoic2hhMjU2OjI1MGFiNDMwZTQ2N2Y1ZTU4NGViZDJiMTgzMjk3NmI0MjE4NmI2OThkYTcxZDYyN2VlMTcyNGMyYjFkYTI0NTciLCJzY2hlbWFfdmVyc2lvbiI6Im9wZW5hZGFwdC5wcm9kdWN0aW9uLXB1YmxpYy10cnVzdC1zaWduaW5nLXN0YXRlbWVudC92MSIsInNlbWFudGljX2lkZW50aXR5X3NoYTI1NiI6InNoYTI1NjpjZjY1ZDFkMzUxODY5YzYzZTg4ZDcxODhkMWU3ODcyNzk5NGNjM2Y2ZTc2Yzg4ZjU2NDNhNjFkMTY4YTg0NDQ1Iiwic2lnbmF0dXJlX3Byb2ZpbGUiOiJzb2Z0d2FyZS1lZDI1NTE5LWRzc2UtdjEiLCJzaWduZXJfcmVnaXN0cnlfc2hhMjU2Ijoic2hhMjU2OmUyNDNhMjMyNDNiMjQ5ODZlZDA4ODEyZTI4NGExYmQ4YzQ5OTM4MTQxNDlmMDJiY2JhNzljYzUyMGUxMGNhMTQiLCJzaWduaW5nX2F1dGhvcml0eSI6eyJlbnZpcm9ubWVudCI6InN5bnRoZXRpYy1xdWFsaWZpY2F0aW9uLWV2aWRlbmNlLWRlY2lzaW9uIiwia2V5X29yaWdpbiI6InNvZnR3YXJlIiwicmVmIjoicmVmcy9oZWFkcy9tYWluIiwicmVwb3NpdG9yeSI6Ik9wZW5BZGFwdEFJLy5naXRodWIiLCJyZXBvc2l0b3J5X2lkIjoiODU4NDU0MDYyIiwicmVwb3NpdG9yeV9vd25lcl9pZCI6IjEzMjY4MTIxNyIsInNvdXJjZV9jb21taXQiOiIyYzEyOTcwMmRhNzE4NTIyY2MyNTc5MTMyMDdiNmVkNmYzYjMzYjdjIiwid29ya2Zsb3ciOiIuZ2l0aHViL3dvcmtmbG93cy9zaWduLXByb2R1Y3Rpb24tZXZpZGVuY2Utc29mdHdhcmUueW1sIn0sInNvdXJjZV9pc3N1ZXIiOnsiZW52aXJvbm1lbnQiOiJwcm9kdWN0aW9uLWFjY2VwdGFuY2UiLCJyZWYiOiJyZWZzL2hlYWRzL21haW4iLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvb3BlbmFkYXB0LWV2YWxzIiwicmVwb3NpdG9yeV9pZCI6IjExMzU5OTgxOTciLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMTMyNjgxMjE3Iiwic291cmNlX2NvbW1pdCI6ImNhZDU1NjBkNmI3NDgyZjJjYjk5Yjk3MzVlMGFjM2M1YWFlNzE0YzgiLCJ3b3JrZmxvdyI6Ii5naXRodWIvd29ya2Zsb3dzL2lzc3VlLXByb2R1Y3Rpb24tYWNjZXB0YW5jZS55bWwifX0K","payloadType":"application/vnd.openadapt.production-public-trust-signing-statement+json;version=1","signatures":[{"keyid":"oa-public-trust-ed25519-9cf4bca214c01d79","sig":"1XvTEC4Jxf10eci09PedfhRA/Lkr8pMxpPPdA9fam1M8U5nefd+U9zdPfv2fnUaB5L5bMhQ7fU+JButltWclAA=="}]},"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"publicKey":{"hint":"oa-public-trust-ed25519-9cf4bca214c01d79"}}} diff --git a/production-evidence/signer-registries/sha256/7a/7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6.qualification-signer-registry.json b/production-evidence/signer-registries/sha256/7a/7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6.qualification-signer-registry.json new file mode 100644 index 0000000..72a5ba1 --- /dev/null +++ b/production-evidence/signer-registries/sha256/7a/7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6.qualification-signer-registry.json @@ -0,0 +1 @@ +{"expires_at":null,"generated_at":"2026-09-02T18:24:25Z","revision":1,"schema_version":"openadapt.qualification-signer-registry/v2","signers":[{"algorithm":"ed25519","allowed_ref_prefixes":["refs/heads/main"],"allowed_usages":["qualification-authority-state-receipt","qualification-evidence-decision-receipt","qualification-revocation-state-receipt"],"allowed_workflows":["https://github.com/OpenAdaptAI/.github/.github/workflows/issue-synthetic-qualification-evidence-decision.yml@refs/heads/main","https://github.com/OpenAdaptAI/openadapt-ops/.github/workflows/qualification-authority-state.yml@refs/heads/main","https://github.com/OpenAdaptAI/openadapt-ops/.github/workflows/qualification-revocation-state.yml@refs/heads/main"],"key_id":"qa-ed25519-9cf4bca214c01d79","public_key":"vHPUDLG2WD2BnTLaKYnZd9GxvUKfjpd68gJ9HubIEH8","public_key_sha256":"sha256:465646ab5137f05dfba094fb05fc10e3af74a0c2e2d0fcc20814b8f1f8271170","public_key_spki_der_base64":"MCowBQYDK2VwAyEAvHPUDLG2WD2BnTLaKYnZd9GxvUKfjpd68gJ9HubIEH8=","revoked_at":null,"statement_schema_versions":["openadapt.qualification-evidence-signing-statement/v1"],"status":"active"},{"algorithm":"ed25519","allowed_environments":["synthetic-qualification-evidence-decision"],"allowed_kinds":["production-acceptance-manifest","production-acceptance-summary","production-cloud-deploy-authorization","production-cloud-deployment-result","production-current-default","production-deployment-observation","production-lifecycle-checkpoint","qualification-admission","qualification-authority-state-receipt","qualification-campaign-permit","qualification-campaign-permit-policy","qualification-campaign-permit-receipt","qualification-campaign-permit-request","qualification-evidence-decision-receipt","qualification-release","qualification-revocation-state-receipt","support-release-admission"],"allowed_ref_prefixes":["refs/heads/main"],"allowed_usages":["production-public-evidence"],"allowed_workflows":["https://github.com/OpenAdaptAI/.github/.github/workflows/sign-production-evidence-software.yml@refs/heads/main"],"key_id":"oa-public-trust-ed25519-9cf4bca214c01d79","key_origin":"software","public_key":"vHPUDLG2WD2BnTLaKYnZd9GxvUKfjpd68gJ9HubIEH8","public_key_sha256":"sha256:465646ab5137f05dfba094fb05fc10e3af74a0c2e2d0fcc20814b8f1f8271170","public_key_spki_der_base64":"MCowBQYDK2VwAyEAvHPUDLG2WD2BnTLaKYnZd9GxvUKfjpd68gJ9HubIEH8=","revoked_at":null,"signature_encoding":"raw-64-base64-rfc4648-padded","statement_schema_versions":["openadapt.production-public-trust-signing-statement/v1"],"status":"active"}]} diff --git a/production-lifecycle-admissions.json b/production-lifecycle-admissions.json index a47eb8a..7dba216 100644 --- a/production-lifecycle-admissions.json +++ b/production-lifecycle-admissions.json @@ -2,5 +2,24 @@ "$schema": "schemas/production-lifecycle-admissions.schema.json", "schema_version": "openadapt.production-lifecycle-admissions/v1", "policy_sha256": "sha256:e1444a08ce6b16736168cce027ce9d48abb2e0e246fc0cd79c0772fa8e423e11", - "admissions": [] + "admissions": [ + { + "schema_version": "openadapt.production-evidence-object-reference/v2", + "repository": "OpenAdaptAI/.github", + "repository_id": "858454062", + "repository_owner_id": "132681217", + "registry_source_commit": "6e28818a94e057cae99dcc2c76d02b9137f87076", + "registry_revision": 2, + "registry_head_sha256": "sha256:12508b788997dcd841b7b116b512dd7c1e129192988a947952bcc2e2e8572a24", + "registry_entry_sha256": "sha256:9cc63061d654347805f0f6bcae2aec428172f76399840a849c70bba8c3527c66", + "kind": "qualification-release", + "object_schema_version": "openadapt.qualification-release/v2", + "object_path": "production-evidence/objects/sha256/79/790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82.qualification-release.json", + "object_sha256": "sha256:790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82", + "size_bytes": 7613, + "object_media_type": "application/vnd.openadapt.qualification-release+json;version=2", + "semantic_identity_sha256": "sha256:71b46fb92f831149424e7d087eb4fc754be48765bef569fa5d3130e97c2814f5", + "subject_sha256": null + } + ] } diff --git a/schemas/production-lifecycle-admissions.schema.json b/schemas/production-lifecycle-admissions.schema.json index 91f224d..17599d1 100644 --- a/schemas/production-lifecycle-admissions.schema.json +++ b/schemas/production-lifecycle-admissions.schema.json @@ -9,7 +9,15 @@ "$schema": {"const": "schemas/production-lifecycle-admissions.schema.json"}, "schema_version": {"const": "openadapt.production-lifecycle-admissions/v1"}, "policy_sha256": {"$ref": "#/$defs/digest"}, - "admissions": {"type": "array", "items": {"$ref": "#/$defs/admission"}} + "admissions": { + "type": "array", + "items": { + "oneOf": [ + {"$ref": "#/$defs/admission"}, + {"$ref": "#/$defs/qualificationReleaseReference"} + ] + } + } }, "$defs": { "digest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}, @@ -95,6 +103,51 @@ "authority_source_commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"} } }, + "qualificationReleaseReference": { + "type": "object", + "additionalProperties": false, + "required": [ + "schema_version", + "repository", + "repository_id", + "repository_owner_id", + "registry_source_commit", + "registry_revision", + "registry_head_sha256", + "registry_entry_sha256", + "kind", + "object_schema_version", + "object_path", + "object_sha256", + "size_bytes", + "object_media_type", + "semantic_identity_sha256", + "subject_sha256" + ], + "properties": { + "schema_version": {"const": "openadapt.production-evidence-object-reference/v2"}, + "repository": {"const": "OpenAdaptAI/.github"}, + "repository_id": {"const": "858454062"}, + "repository_owner_id": {"const": "132681217"}, + "registry_source_commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"}, + "registry_revision": {"type": "integer", "minimum": 1}, + "registry_head_sha256": {"$ref": "#/$defs/digest"}, + "registry_entry_sha256": {"$ref": "#/$defs/digest"}, + "kind": {"const": "qualification-release"}, + "object_schema_version": {"const": "openadapt.qualification-release/v2"}, + "object_path": { + "type": "string", + "pattern": "^production-evidence/objects/sha256/[0-9a-f]{2}/[0-9a-f]{64}\\.qualification-release\\.json$" + }, + "object_sha256": {"$ref": "#/$defs/digest"}, + "size_bytes": {"type": "integer", "minimum": 1}, + "object_media_type": { + "const": "application/vnd.openadapt.qualification-release+json;version=2" + }, + "semantic_identity_sha256": {"$ref": "#/$defs/digest"}, + "subject_sha256": {"type": "null"} + } + }, "admission": { "type": "object", "additionalProperties": false, diff --git a/scripts/validate_production_lifecycle.py b/scripts/validate_production_lifecycle.py index 69af996..a4e4250 100755 --- a/scripts/validate_production_lifecycle.py +++ b/scripts/validate_production_lifecycle.py @@ -41,6 +41,7 @@ from urllib.parse import quote, urlsplit import production_trust +import public_trust_resolver import validate_evidence_registry as evidence_registry ROOT = Path(__file__).resolve().parents[1] @@ -1321,6 +1322,277 @@ def _validate_manifest( raise LifecycleError(f"admission {target_id} retained evidence is expired") +def _is_v2_release_reference(value: object) -> bool: + return ( + isinstance(value, dict) + and value.get("schema_version") == OBJECT_REFERENCE_SCHEMA + and value.get("kind") == "qualification-release" + ) + + +def _is_v2_release_object(value: object) -> bool: + return ( + isinstance(value, dict) + and value.get("schema_version") == RELEASE_ADMISSION_SCHEMA + ) + + +def _adjacent_bundle_entry( + entries: Sequence[Mapping[str, Any]], regular: Mapping[str, Any] +) -> dict[str, Any]: + for index, entry in enumerate(entries): + if entry["registry_entry_sha256"] != regular["registry_entry_sha256"]: + continue + if index + 1 >= len(entries): + raise LifecycleError( + "qualification-release has no adjacent Sigstore bundle" + ) + bundle = entries[index + 1] + if ( + bundle["kind"] != f"{regular['kind']}-sigstore-bundle" + or bundle["subject_sha256"] != regular["object_sha256"] + ): + raise LifecycleError( + "qualification-release Sigstore bundle is not adjacent" + ) + return dict(bundle) + raise LifecycleError("qualification-release is not registered") + + +def _load_registered_json( + root: Path, entry: Mapping[str, Any], label: str +) -> tuple[bytes, dict[str, Any]]: + path = root / entry["object_path"] + try: + raw = path.read_bytes() + except OSError as exc: + raise LifecycleError(f"{label} is missing: {exc}") from exc + if ( + "sha256:" + hashlib.sha256(raw).hexdigest() != entry["object_sha256"] + or len(raw) != entry["size_bytes"] + ): + raise LifecycleError(f"{label} bytes differ from the registry") + try: + value = json.loads(raw) + except json.JSONDecodeError as exc: + raise LifecycleError(f"{label} is not JSON") from exc + if not isinstance(value, dict): + raise LifecycleError(f"{label} must be a JSON object") + return raw, value + + +def _reference_from_entry( + entry: Mapping[str, Any], + *, + registry_source_commit: str, + registry_revision: int, + registry_head_sha256: str, +) -> dict[str, Any]: + return { + "schema_version": OBJECT_REFERENCE_SCHEMA, + "repository": evidence_registry.REPOSITORY, + "repository_id": evidence_registry.REPOSITORY_ID, + "repository_owner_id": evidence_registry.REPOSITORY_OWNER_ID, + "registry_source_commit": registry_source_commit, + "registry_revision": registry_revision, + "registry_head_sha256": registry_head_sha256, + **entry, + } + + +def _verify_live_pypi_files( + admission: Mapping[str, Any], + *, + package_index_project: str, + fetch: Callable[[str], bytes], +) -> None: + staging = admission["publication_staging"] + if staging.get("publication_mode") != "already-published-pypi": + return + version = admission["release"]["version"] + expected = staging.get("pypi_files") + if not isinstance(expected, list) or not expected: + raise LifecycleError("already-published-pypi staging is missing PyPI files") + metadata_url = ( + f"https://pypi.org/pypi/{quote(package_index_project, safe='')}/" + f"{quote(version, safe='')}/json" + ) + metadata = _fetch_json_object(metadata_url, "PyPI release metadata", fetch) + if metadata.get("info", {}).get("version") != version: + raise LifecycleError("PyPI release metadata version differs") + files = metadata.get("urls") + if not isinstance(files, list): + raise LifecycleError("PyPI release metadata files are invalid") + for artifact in expected: + if not isinstance(artifact, dict): + raise LifecycleError("PyPI staging file is invalid") + filename = artifact.get("filename") + matches = [ + item + for item in files + if isinstance(item, dict) + and item.get("filename") == filename + and item.get("size") == artifact.get("size_bytes") + and item.get("digests", {}).get("sha256") + == str(artifact.get("sha256", "")).removeprefix("sha256:") + and item.get("yanked") is False + ] + if len(matches) != 1: + raise LifecycleError(f"PyPI does not verify exact artifact {filename}") + + +def _validate_v2_release_admission( + item: Mapping[str, Any], + *, + index: int, + root: Path, + registry_document: Mapping[str, Any], + registry_entries: Sequence[Mapping[str, Any]], + live_targets: Mapping[str, Mapping[str, Any]], + now: datetime, + fetch: Callable[[str], bytes], +) -> dict[str, Any]: + """Validate one registered qualification-release/v2 ledger row. + + remote-safe-synthetic rows are retained and checked. They do not derive + seven-target Production. A MockMed production_acceptance flip is a + different evidence class and is not this row. + """ + + if root is None: + raise LifecycleError("v2 admissions require the repository root") + if _is_v2_release_reference(item): + try: + reference = evidence_registry.validate_reference(item) + regular = evidence_registry.require_registered( + list(registry_entries), + reference=reference, + label=f"admission {index} qualification-release", + ) + except evidence_registry.EvidenceRegistryError as exc: + raise LifecycleError(str(exc)) from exc + if ( + reference["registry_revision"] != registry_document["revision"] + or reference["registry_head_sha256"] + != registry_document["registry_head_sha256"] + ): + raise LifecycleError( + "qualification-release reference does not bind the current registry" + ) + elif _is_v2_release_object(item): + object_sha = "sha256:" + hashlib.sha256( + evidence_registry.canonical(item) + b"\n" + ).hexdigest() + matches = [ + entry + for entry in registry_entries + if entry["kind"] == "qualification-release" + and entry["object_sha256"] == object_sha + ] + if len(matches) != 1: + raise LifecycleError( + "qualification-release object is not registered by digest" + ) + regular = matches[0] + reference = _reference_from_entry( + regular, + registry_source_commit="0" * 40, + registry_revision=registry_document["revision"], + registry_head_sha256=registry_document["registry_head_sha256"], + ) + else: + raise LifecycleError(f"admission {index} is not a qualification-release/v2 row") + bundle_entry = _adjacent_bundle_entry(registry_entries, regular) + object_raw, object_value = _load_registered_json( + root, regular, f"admission {index} qualification-release" + ) + bundle_raw, _bundle_value = _load_registered_json( + root, bundle_entry, f"admission {index} qualification-release bundle" + ) + try: + admission = production_trust.validate_release(object_value, now=now) + except production_trust.TrustError as exc: + raise LifecycleError(f"admission {index} qualification-release: {exc}") from exc + if _is_v2_release_object(item) and object_value != item: + raise LifecycleError("ledger qualification-release differs from registered bytes") + target_id = admission["target"] + live_target = live_targets.get(target_id) + if live_target is None: + raise LifecycleError( + f"production admission target is not eligible: {target_id!r}" + ) + if admission["claim_scope"] != live_target["claim_scope"]: + raise LifecycleError(f"admission {target_id} claim scope differs from policy") + if admission["release"]["kind"] != live_target["release_kind"]: + raise LifecycleError(f"admission {target_id} release kind differs from policy") + pointer = registry_document.get("signer_registry") + if not isinstance(pointer, dict): + raise LifecycleError("v2 admissions require an installed signer registry") + signer_path = root / pointer["object_path"] + try: + signer_raw = signer_path.read_bytes() + except OSError as exc: + raise LifecycleError(f"signer registry is missing: {exc}") from exc + try: + signer_registry = evidence_registry.validate_signer_registry( + json.loads(signer_raw) + ) + except (json.JSONDecodeError, evidence_registry.EvidenceRegistryError) as exc: + raise LifecycleError(f"signer registry is invalid: {exc}") from exc + if signer_registry["expires_at"] is not None: + raise LifecycleError("signer registry expiry must be until-revoked") + inner_ids = { + signer["key_id"] + for signer in signer_registry["signers"] + if signer.get("key_id", "").startswith("qa-ed25519-") + } + outer_ids = { + signer["key_id"] + for signer in signer_registry["signers"] + if signer.get("key_id", "").startswith("oa-public-trust-ed25519-") + } + if "qa-ed25519-9cf4bca214c01d79" not in inner_ids: + raise LifecycleError("until-revoked signer registry is missing the inner key") + if "oa-public-trust-ed25519-9cf4bca214c01d79" not in outer_ids: + raise LifecycleError("until-revoked signer registry is missing the outer key") + bundle_reference = _reference_from_entry( + bundle_entry, + registry_source_commit=reference["registry_source_commit"], + registry_revision=reference["registry_revision"], + registry_head_sha256=reference["registry_head_sha256"], + ) + try: + public_trust_resolver.verify_registered_public_trust_pair( + object_raw=object_raw, + object_reference=reference + if _is_v2_release_reference(item) + else _reference_from_entry( + regular, + registry_source_commit=reference["registry_source_commit"], + registry_revision=reference["registry_revision"], + registry_head_sha256=reference["registry_head_sha256"], + ), + bundle_raw=bundle_raw, + bundle_reference=bundle_reference, + signer_registry_raw=signer_raw, + expected_signer_registry_sha256=admission["signer_registry_sha256"], + expected_authority_state_sha256=admission["authority_state_sha256"], + expected_revocation_state_sha256=admission["revocation_state_sha256"], + now=now, + ) + except public_trust_resolver.PublicTrustResolutionError as exc: + raise LifecycleError( + f"admission {index} public-trust verification failed: {exc}" + ) from exc + package_project = live_target["package_index_project"] + if not isinstance(package_project, str) or not package_project: + raise LifecycleError(f"admission {target_id} package project is missing") + _verify_live_pypi_files( + admission, package_index_project=package_project, fetch=fetch + ) + return admission + + def _validate_remote_summary( admission: Mapping[str, Any], release: Mapping[str, Any], @@ -1541,12 +1813,14 @@ def validate( [bytes, bytes, Mapping[str, Any], str], None ] = _verify_attestation, registry_value: object | None = None, + root: Path | None = None, ) -> dict[str, str]: """Validate the complete lifecycle state and return target to admission IDs.""" now = (now or datetime.now(timezone.utc)).astimezone(timezone.utc) policy, retained = _validate_policy(policy_value) targets = retained["targets"] + live_targets = {item["id"]: item for item in policy["targets"]} if retained["revision"] >= policy["revision"]: raise LifecycleError( "the retained admission revision must precede the live policy revision" @@ -1568,7 +1842,12 @@ def validate( admissions_value_list = admissions_doc["admissions"] if not isinstance(admissions_value_list, list): raise LifecycleError("production lifecycle admissions must be a list") + has_v2 = any( + _is_v2_release_reference(item) or _is_v2_release_object(item) + for item in admissions_value_list + ) registry_entries: list[dict[str, Any]] = [] + registry_document: dict[str, Any] | None = None if admissions_value_list: # A Production admission can only reference evidence that the central # content-addressed registry already binds by exact digest. @@ -1577,7 +1856,17 @@ def validate( "production admissions require the central evidence registry" ) try: - registry_entries = evidence_registry.validate_registry(registry_value) + if has_v2: + if root is None: + raise LifecycleError("v2 admissions require the repository root") + if not isinstance(registry_value, dict): + raise LifecycleError("evidence registry must be a JSON object") + registry_document = registry_value + registry_entries = evidence_registry.validate_registry( + registry_value, root=root + ) + else: + registry_entries = evidence_registry.validate_registry(registry_value) except evidence_registry.EvidenceRegistryError as exc: raise LifecycleError(f"evidence registry is invalid: {exc}") from exc active: dict[str, str] = {} @@ -1588,7 +1877,41 @@ def validate( tuple[dict[str, Any], dict[str, Any], datetime, datetime, datetime | None] ], ] = {} + v2_sequences: dict[str, list[int]] = {} for index, item in enumerate(admissions_value_list): + if _is_v2_release_reference(item) or _is_v2_release_object(item): + if registry_document is None or root is None: + raise LifecycleError("v2 admissions require the evidence registry") + admission = _validate_v2_release_admission( + item, + index=index, + root=root, + registry_document=registry_document, + registry_entries=registry_entries, + live_targets=live_targets, + now=now, + fetch=fetch, + ) + admission_id = admission["admission_id_sha256"] + if admission_id in admission_ids: + raise LifecycleError( + f"production admission id is duplicate: {admission_id!r}" + ) + admission_ids.add(admission_id) + target_id = admission["target"] + sequence = admission["release_identity"]["sequence"] + seen = v2_sequences.setdefault(target_id, []) + if sequence != len(seen) + 1: + raise LifecycleError( + f"admission {target_id} release sequence is not continuous" + ) + seen.append(sequence) + # remote-safe-synthetic is a real package admission. It is not + # seven-target Production and it does not flip MockMed + # production_acceptance. + if admission["evidence_class"] != "remote-safe-synthetic": + active[target_id] = admission_id + continue admission = _closed( item, { @@ -1775,6 +2098,7 @@ def validate_files(root: Path = ROOT, *, now: datetime | None = None) -> dict[st policy_sha256=_file_digest(policy_path), now=now, registry_value=registry_value, + root=root, ) diff --git a/tests/test_evidence_registry.py b/tests/test_evidence_registry.py index d60a002..b6c6b9d 100644 --- a/tests/test_evidence_registry.py +++ b/tests/test_evidence_registry.py @@ -143,7 +143,24 @@ def test_kind_map_has_17_regular_and_17_bundle_kinds(self) -> None: def test_repository_registry_is_valid_v2(self) -> None: value = json.loads((ROOT / "evidence-registry.json").read_text()) - self.assertEqual(registry.validate_registry(value, root=ROOT), []) + entries = registry.validate_registry(value, root=ROOT) + kinds = [entry["kind"] for entry in entries] + self.assertEqual(value["revision"], 2) + self.assertIsNotNone(value["signer_registry"]) + self.assertIn("qualification-release", kinds) + self.assertIn("qualification-release-sigstore-bundle", kinds) + self.assertEqual(kinds[-2:], [ + "qualification-release", + "qualification-release-sigstore-bundle", + ]) + signer_path = ROOT / value["signer_registry"]["object_path"] + signer = registry.validate_signer_registry( + json.loads(signer_path.read_text(encoding="utf-8")) + ) + self.assertIsNone(signer["expires_at"]) + key_ids = {item["key_id"] for item in signer["signers"]} + self.assertIn("qa-ed25519-9cf4bca214c01d79", key_ids) + self.assertIn("oa-public-trust-ed25519-9cf4bca214c01d79", key_ids) def test_reference_has_exact_16_keys_and_derives_raw_url(self) -> None: value = reference(entry()) diff --git a/tests/test_production_lifecycle.py b/tests/test_production_lifecycle.py index 03e3e1a..a720ea6 100644 --- a/tests/test_production_lifecycle.py +++ b/tests/test_production_lifecycle.py @@ -1100,7 +1100,10 @@ class PublishedPolicyTests(unittest.TestCase): """Bind the validator to the policy document the repository publishes.""" def test_published_policy_is_accepted(self) -> None: - self.assertEqual(lifecycle.validate_files(ROOT, now=NOW), {}) + # The Flow 1.34.0 row is issued 2026-09-02T18:24:25Z. NOW is the + # retained v1 fixture clock and is before that instant. + published_now = datetime(2026, 9, 2, 19, 0, 0, tzinfo=timezone.utc) + self.assertEqual(lifecycle.validate_files(ROOT, now=published_now), {}) def test_check_profile_accepts_the_published_repository(self) -> None: completed = subprocess.run(