diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/artifact-inventory.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/artifact-inventory.json new file mode 100644 index 0000000..c613acf --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/artifact-inventory.json @@ -0,0 +1 @@ +{"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"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/build-record.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/build-record.json new file mode 100644 index 0000000..d9dce5c --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/build-record.json @@ -0,0 +1 @@ +{"acceptance_manifest_issued":true,"acceptance_summary_issued":true,"authority_state_sha256":"sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa","campaign":{"cells_per_class":1,"classes":["healthy","safe_halt","idempotency_replay","uncertain_delivery","declared_attended","governed_repair"],"label":"remote-safe-synthetic","mockmed_1_34_0_evals_set_is_this_summary":false,"task_count":1,"trials_per_cell":3},"campaign_label":"remote-safe-synthetic","did_not_fake_draft_as_openadapt_release_bot":true,"did_not_generate_key":true,"draft":false,"evals_production_acceptance":false,"evidence_class":"remote-safe-synthetic","expires_at":null,"flow_source":"30fc60e55778a0e0f92b9776117cafcfe2512249","flow_tag":"v1.34.0","flow_version":"1.34.0","generated_at":"2026-09-02T18:24:25Z","github_release_id":"378603192","inner_key_id":"qa-ed25519-9cf4bca214c01d79","keychain_service":"openadapt-qualification-ed25519","mockmed_1_34_0_evals_set_is_this_summary":false,"outer_key_id":"oa-public-trust-ed25519-9cf4bca214c01d79","phase":"release-admission","policy_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","publication_mode":"already-published-pypi","publication_staging_sha256":"sha256:861175c196cfe9455ce5f0536b6b1eabf55a990ced03349b865643f52316dedd","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}],"registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_identity":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","registry_raw_sha256":"sha256:7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6","registry_revision":1,"registry_source_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","release_admission_id_sha256":"sha256:d2983b86d5428c892421b191f6943a63cf4f9a0b1629e324d099f5df6fa5dcda","release_admission_issued":true,"release_sha256":"sha256:f84c03c857bda8372d39bc30afcc2986247778c34b3f93a39ec9de5dd151a289","revocation_state_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","schema_version":"openadapt.local-flow-134-admission-build-record/v1","sdist_sha256":"a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","tag_exists":true,"target":"flow","wheel_sha256":"56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854","workflow_admission_id_sha256":"sha256:45c157898b6f07e57bf604b3323f206d677cac6c57a43238152cdb3308495e80"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/evidence-registry.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/evidence-registry.json new file mode 100644 index 0000000..5b4220a --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/evidence-registry.json @@ -0,0 +1 @@ +{"$schema":"schemas/evidence-registry.schema.json","entries":[{"kind":"qualification-authority-state-receipt","object_media_type":"application/vnd.openadapt.qualification-authority-state-receipt+json;version=2","object_path":"production-evidence/objects/sha256/a2/a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e.qualification-authority-state-receipt.json","object_schema_version":"openadapt.qualification-authority-state-receipt/v2","object_sha256":"sha256:a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e","registry_entry_sha256":"sha256:d69026ffefb99b4eeb6c27db2913684138ee23f3b8923aa8ae3379e839489401","semantic_identity_sha256":"sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa","size_bytes":1520,"subject_sha256":null},{"kind":"qualification-authority-state-receipt-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/0f/0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830.qualification-authority-state-receipt-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830","registry_entry_sha256":"sha256:29397e66bbafd8e02e8fbbaceaf2d3c1d2892723cd396bb0d4abb1a443192592","semantic_identity_sha256":"sha256:96b1361340164f4cfc3d9f50e88868c6d36a62a085a8543ed818a4b1ba905714","size_bytes":2809,"subject_sha256":"sha256:a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e"},{"kind":"qualification-revocation-state-receipt","object_media_type":"application/vnd.openadapt.qualification-revocation-state-receipt+json;version=1","object_path":"production-evidence/objects/sha256/18/18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676.qualification-revocation-state-receipt.json","object_schema_version":"openadapt.qualification-revocation-state-receipt/v1","object_sha256":"sha256:18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676","registry_entry_sha256":"sha256:2592f2856bbfb5e381640f050669a3dfc1b19cbc4fbf7438ce18d0df1731f722","semantic_identity_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","size_bytes":1457,"subject_sha256":null},{"kind":"qualification-revocation-state-receipt-sigstore-bundle","object_media_type":"application/vnd.dev.sigstore.bundle.v0.3+json","object_path":"production-evidence/objects/sha256/4e/4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f.qualification-revocation-state-receipt-sigstore-bundle.json","object_schema_version":"application/vnd.dev.sigstore.bundle.v0.3+json","object_sha256":"sha256:4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f","registry_entry_sha256":"sha256:e4bf33edf52cf708db739746b4d99098642255380e70edc654a287c5d1aafe04","semantic_identity_sha256":"sha256:fcebb8e521419ea3c6aefa97885aa7153e88821e1a20617998067e921abc4d00","size_bytes":2817,"subject_sha256":"sha256:18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676"},{"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","semantic_identity_sha256":"sha256:c18d69bdfb145139581ea6865f513179bd104cb02a64d838f93e49f96d9d3769","size_bytes":6636,"subject_sha256":null},{"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","semantic_identity_sha256":"sha256:21d2be624cc93f033b13eceabd7ea42b39ab6f80790c643235c80a32272545a6","size_bytes":2849,"subject_sha256":"sha256:6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a"}],"previous_registry_head_sha256":null,"registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","repository":"OpenAdaptAI/.github","repository_id":"858454062","repository_owner_id":"132681217","revision":1,"schema_version":"openadapt.production-evidence-registry/v2","signer_registry":{"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,"schema_version":"openadapt.qualification-signer-registry-pointer/v1"},"signer_registry_history":[{"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,"schema_version":"openadapt.qualification-signer-registry-pointer/v1"}]} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effect-release.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effect-release.json new file mode 100644 index 0000000..71bd823 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effect-release.json @@ -0,0 +1 @@ +{"effect_id_sha256":"sha256:ac3924cb01bae4badebbbe01a2b0f1e2ab930812cf0d92da1f6b6dd3a40d7255","effect_sha256":"sha256:0a3675b04f3e5acaa6add733a6c47b4ea7d432fed667e56724b8350ebc386415","operation":"issue-qualification-release","request_handle":"qair_A-aMXGcPZkNKE7CbnMEIDSofWrO0wAKZDMIz_QhpWHN","request_sha256":"sha256:d16b743432c3f6c2becb93b6d40b85f5a64e5247269298944c06c022c6dd211b","result_base64":"eyJhZG1pc3Npb25faWRfc2hhMjU2Ijoic2hhMjU2OmQyOTgzYjg2ZDU0MjhjODkyNDIxYjE5MWY2OTQzYTYzY2Y0ZjlhMGIxNjI5ZTMyNGQwOTlmNWRmNmZhNWRjZGEiLCJhcnRpZmFjdF9pbnZlbnRvcnlfc2hhMjU2Ijoic2hhMjU2OmVjM2VmN2MxNzdjNDkzYmViZWUzZGE2MGYxNzBiMzc3OTM4MzJlODEwNjZlOWQ5ZWU3ODVkNWZhMjI1YTVhYzUiLCJhdXRob3JpdHlfc3RhdGVfc2hhMjU2Ijoic2hhMjU2OmRmNTA3OTE0MWRmNjg4NzdjNGIwNmYwNWI5ZmI5ZmRmMjc5MzA3Yjc2MjllYjFmMmRjZTEyZGVmNGJkNWUyZmEiLCJjbGFpbV9zY29wZSI6InByb2R1Y3Rpb25fZmxvdyIsImV2aWRlbmNlX2NsYXNzIjoicmVtb3RlLXNhZmUtc3ludGhldGljIiwiZXhwaXJlc19hdCI6bnVsbCwiaXNzdWVkX2F0IjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJpc3N1ZXIiOnsiZW52aXJvbm1lbnQiOiJwcm9kdWN0aW9uLXJlbGVhc2UtYWRtaXNzaW9uIiwicmVmIjoicmVmcy9oZWFkcy9tYWluIiwicmVwb3NpdG9yeSI6Ik9wZW5BZGFwdEFJLy5naXRodWIiLCJyZXBvc2l0b3J5X2lkIjoiODU4NDU0MDYyIiwicmVwb3NpdG9yeV9vd25lcl9pZCI6IjEzMjY4MTIxNyIsInNvdXJjZV9jb21taXQiOiIyYzEyOTcwMmRhNzE4NTIyY2MyNTc5MTMyMDdiNmVkNmYzYjMzYjdjIiwid29ya2Zsb3ciOiIuZ2l0aHViL3dvcmtmbG93cy9pc3N1ZS1wcm9kdWN0aW9uLXJlbGVhc2UtYWRtaXNzaW9uLnltbCJ9LCJub3RfYmVmb3JlIjoiMjAyNi0wOS0wMlQxODoyNDoyNVoiLCJwcm9kdWN0aW9uX2FjY2VwdGFuY2Vfc3VtbWFyeV9idW5kbGVfcmVmZXJlbmNlIjp7ImtpbmQiOiJwcm9kdWN0aW9uLWFjY2VwdGFuY2Utc3VtbWFyeS1zaWdzdG9yZS1idW5kbGUiLCJvYmplY3RfbWVkaWFfdHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kZXYuc2lnc3RvcmUuYnVuZGxlLnYwLjMranNvbiIsIm9iamVjdF9wYXRoIjoicHJvZHVjdGlvbi1ldmlkZW5jZS9vYmplY3RzL3NoYTI1Ni9lOS9lOWVjZGVlMWZjMzQ1ODkwNmZjOTFmNTc2MGQyMTViYjViZWMzNTkxYTZlZDlhZTBiNDEyMTE0ZTI0ZmNmOGZiLnByb2R1Y3Rpb24tYWNjZXB0YW5jZS1zdW1tYXJ5LXNpZ3N0b3JlLWJ1bmRsZS5qc29uIiwib2JqZWN0X3NjaGVtYV92ZXJzaW9uIjoiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS5idW5kbGUudjAuMytqc29uIiwib2JqZWN0X3NoYTI1NiI6InNoYTI1NjplOWVjZGVlMWZjMzQ1ODkwNmZjOTFmNTc2MGQyMTViYjViZWMzNTkxYTZlZDlhZTBiNDEyMTE0ZTI0ZmNmOGZiIiwicmVnaXN0cnlfZW50cnlfc2hhMjU2Ijoic2hhMjU2OjdkYzJmY2FiMDlmNzA1MzU2YTIyYjA1OGI5ZTdmMDc4NTk2YmNkZWZkYjY5N2JlZjczMTU1MTBkMTc5MzE1NDkiLCJyZWdpc3RyeV9oZWFkX3NoYTI1NiI6InNoYTI1Njo5YTlmNTk3YjBkODc2NzRjNGQzNmMwMjIyMjcyMDFhNWQ4ZjMwNzIyMzc2MjQzNDY3OTM2OTJjM2E4NjNkMTJlIiwicmVnaXN0cnlfcmV2aXNpb24iOjEsInJlZ2lzdHJ5X3NvdXJjZV9jb21taXQiOiIyYzEyOTcwMmRhNzE4NTIyY2MyNTc5MTMyMDdiNmVkNmYzYjMzYjdjIiwicmVwb3NpdG9yeSI6Ik9wZW5BZGFwdEFJLy5naXRodWIiLCJyZXBvc2l0b3J5X2lkIjoiODU4NDU0MDYyIiwicmVwb3NpdG9yeV9vd25lcl9pZCI6IjEzMjY4MTIxNyIsInNjaGVtYV92ZXJzaW9uIjoib3BlbmFkYXB0LnByb2R1Y3Rpb24tZXZpZGVuY2Utb2JqZWN0LXJlZmVyZW5jZS92MiIsInNlbWFudGljX2lkZW50aXR5X3NoYTI1NiI6InNoYTI1NjoxYjU2MDZiOWY0YzE0ZWRkMzdlYzEzNGE5YzcxNmEwNzA4MzJiODcwOWUzYzJmOWM2ZjQxODZmZjUxNGI3YzgyIiwic2l6ZV9ieXRlcyI6Mjc4OSwic3ViamVjdF9zaGEyNTYiOiJzaGEyNTY6Mzg0OWZkNGUyY2FlMGQzYTc0OTY0MzYyZTQ4NTA4NzBiYjY4YzIzMDA3ZDVlYjgxODgwMDE1OWQzZWI3MzBkNCJ9LCJwcm9kdWN0aW9uX2FjY2VwdGFuY2Vfc3VtbWFyeV9yZWZlcmVuY2UiOnsia2luZCI6InByb2R1Y3Rpb24tYWNjZXB0YW5jZS1zdW1tYXJ5Iiwib2JqZWN0X21lZGlhX3R5cGUiOiJhcHBsaWNhdGlvbi92bmQub3BlbmFkYXB0LnByb2R1Y3Rpb24tbGlmZWN5Y2xlLWV2aWRlbmNlLXN1bW1hcnkranNvbjt2ZXJzaW9uPTMiLCJvYmplY3RfcGF0aCI6InByb2R1Y3Rpb24tZXZpZGVuY2Uvb2JqZWN0cy9zaGEyNTYvMzgvMzg0OWZkNGUyY2FlMGQzYTc0OTY0MzYyZTQ4NTA4NzBiYjY4YzIzMDA3ZDVlYjgxODgwMDE1OWQzZWI3MzBkNC5wcm9kdWN0aW9uLWFjY2VwdGFuY2Utc3VtbWFyeS5qc29uIiwib2JqZWN0X3NjaGVtYV92ZXJzaW9uIjoib3BlbmFkYXB0LnByb2R1Y3Rpb24tbGlmZWN5Y2xlLWV2aWRlbmNlLXN1bW1hcnkvdjMiLCJvYmplY3Rfc2hhMjU2Ijoic2hhMjU2OjM4NDlmZDRlMmNhZTBkM2E3NDk2NDM2MmU0ODUwODcwYmI2OGMyMzAwN2Q1ZWI4MTg4MDAxNTlkM2ViNzMwZDQiLCJyZWdpc3RyeV9lbnRyeV9zaGEyNTYiOiJzaGEyNTY6OTMyNTExMTEyYTdlYjVmMjk2Yjc1Mjk1M2FjMTg0NTE2YTQ3Zjc2MzA2NDNlY2Y3MDk1NWFmNzIyZTc4ZWY2OCIsInJlZ2lzdHJ5X2hlYWRfc2hhMjU2Ijoic2hhMjU2OjlhOWY1OTdiMGQ4NzY3NGM0ZDM2YzAyMjIyNzIwMWE1ZDhmMzA3MjIzNzYyNDM0Njc5MzY5MmMzYTg2M2QxMmUiLCJyZWdpc3RyeV9yZXZpc2lvbiI6MSwicmVnaXN0cnlfc291cmNlX2NvbW1pdCI6IjJjMTI5NzAyZGE3MTg1MjJjYzI1NzkxMzIwN2I2ZWQ2ZjNiMzNiN2MiLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvLmdpdGh1YiIsInJlcG9zaXRvcnlfaWQiOiI4NTg0NTQwNjIiLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMTMyNjgxMjE3Iiwic2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1ldmlkZW5jZS1vYmplY3QtcmVmZXJlbmNlL3YyIiwic2VtYW50aWNfaWRlbnRpdHlfc2hhMjU2Ijoic2hhMjU2OmNmNjVkMWQzNTE4NjljNjNlODhkNzE4OGQxZTc4NzI3OTk0Y2MzZjZlNzZjODhmNTY0M2E2MWQxNjhhODQ0NDUiLCJzaXplX2J5dGVzIjoxNDQ5Nywic3ViamVjdF9zaGEyNTYiOm51bGx9LCJwdWJsaWNhdGlvbl9wb2xpY3lfc2hhMjU2Ijoic2hhMjU2OmVkNWFiNjlmZTgxMjc2MDRjYTY3NDI2M2NiYzhjNzc0YjdjZmQxMDc1NGU5MGJmYWE5YjcxYmE1NzNiY2UxZDEiLCJwdWJsaWNhdGlvbl9zdGFnaW5nIjp7ImFzc2V0cyI6W3siYXNzZXRfaWQiOiI1MzQwMjk0ODMiLCJraW5kIjoicHl0aG9uLXdoZWVsIiwibWVkaWFfdHlwZSI6ImFwcGxpY2F0aW9uL3ppcCIsIm5hbWUiOiJvcGVuYWRhcHRfZmxvdy0xLjM0LjAtcHkzLW5vbmUtYW55LndobCIsInB1Ymxpc2hfZGVzdGluYXRpb25zIjpbImdpdGh1Yi1yZWxlYXNlIiwicHlwaSJdLCJzaGEyNTYiOiJzaGEyNTY6NTZkMzI4MTg5ODljYjNhOTI4MzAwODBlYWQzOWUxMGIwODcxOGM1NWUwMDk4ODExN2YyMmNiZmVhYWM5ODg1NCIsInNpemVfYnl0ZXMiOjE5MjgxOTQsInVwbG9hZGVyX2lkIjoiMzIxNTQzOTA2IiwidXBsb2FkZXJfbG9naW4iOiJvcGVuYWRhcHQtcmVsZWFzZVtib3RdIn0seyJhc3NldF9pZCI6IjUzNDAyOTQ4NCIsImtpbmQiOiJweXRob24tc2Rpc3QiLCJtZWRpYV90eXBlIjoiYXBwbGljYXRpb24vZ3ppcCIsIm5hbWUiOiJvcGVuYWRhcHRfZmxvdy0xLjM0LjAudGFyLmd6IiwicHVibGlzaF9kZXN0aW5hdGlvbnMiOlsiZ2l0aHViLXJlbGVhc2UiLCJweXBpIl0sInNoYTI1NiI6InNoYTI1NjphOTQxYTcwMDE1ZmU5MTg5N2U2NTViZmM5YmY4M2U2Y2Y4ZmJjZjhiZDRlNGM3MjA2ZmZiMTMzYzUwNTIwM2Y4Iiwic2l6ZV9ieXRlcyI6MjA0NDA4MzgsInVwbG9hZGVyX2lkIjoiMzIxNTQzOTA2IiwidXBsb2FkZXJfbG9naW4iOiJvcGVuYWRhcHQtcmVsZWFzZVtib3RdIn1dLCJkcmFmdCI6ZmFsc2UsImRyYWZ0X3JlbGVhc2VfaWQiOiIzNzg2MDMxOTIiLCJpbW11dGFibGVfcmVsZWFzZXMiOnsiZW5hYmxlZCI6dHJ1ZSwiZW5mb3JjZWRfYnlfb3duZXIiOmZhbHNlfSwiaW1tdXRhYmxlX3JlbGVhc2VzX3NoYTI1NiI6InNoYTI1NjowNzY0OWFhZmIxNjcyMzdmZWNjMTM4ZjVlOTNiNDhkZGNlNWE2OWY0MDYwZGE3MTMwZTNjNzhlNTlmZDQ4NTgxIiwib2JzZXJ2ZWRfYXQiOiIyMDI2LTA5LTAyVDE4OjI0OjI1WiIsInByZXJlbGVhc2UiOmZhbHNlLCJwdWJsaWNhdGlvbl9tb2RlIjoiYWxyZWFkeS1wdWJsaXNoZWQtcHlwaSIsInB5cGlfZmlsZXMiOlt7ImZpbGVuYW1lIjoib3BlbmFkYXB0X2Zsb3ctMS4zNC4wLXB5My1ub25lLWFueS53aGwiLCJwYWNrYWdldHlwZSI6ImJkaXN0X3doZWVsIiwic2hhMjU2Ijoic2hhMjU2OjU2ZDMyODE4OTg5Y2IzYTkyODMwMDgwZWFkMzllMTBiMDg3MThjNTVlMDA5ODgxMTdmMjJjYmZlYWFjOTg4NTQiLCJzaXplX2J5dGVzIjoxOTI4MTk0LCJ5YW5rZWQiOmZhbHNlfSx7ImZpbGVuYW1lIjoib3BlbmFkYXB0X2Zsb3ctMS4zNC4wLnRhci5neiIsInBhY2thZ2V0eXBlIjoic2Rpc3QiLCJzaGEyNTYiOiJzaGEyNTY6YTk0MWE3MDAxNWZlOTE4OTdlNjU1YmZjOWJmODNlNmNmOGZiY2Y4YmQ0ZTRjNzIwNmZmYjEzM2M1MDUyMDNmOCIsInNpemVfYnl0ZXMiOjIwNDQwODM4LCJ5YW5rZWQiOmZhbHNlfV0sInJlbGVhc2VfYXBwX2JvdF91c2VyX2lkIjoiMzIxNTQzOTA2IiwicmVsZWFzZV9hcHBfaWQiOiI0NzMwNzA4IiwicmVsZWFzZV9hcHBfaW5zdGFsbGF0aW9uX2lkIjoiMTU2ODM1NTY4IiwicmVsZWFzZV9hdXRob3JfbG9naW4iOiJvcGVuYWRhcHQtcmVsZWFzZVtib3RdIiwicmVwb3NpdG9yeSI6Ik9wZW5BZGFwdEFJL29wZW5hZGFwdC1mbG93IiwicmVwb3NpdG9yeV9pZCI6IjEyOTEzNzY5MzgiLCJzY2hlbWFfdmVyc2lvbiI6Im9wZW5hZGFwdC5wcm9kdWN0aW9uLXJlbGVhc2Utc3RhZ2luZy1ldmlkZW5jZS92MSIsInRhZyI6InYxLjM0LjAiLCJ0YWdfcmVmX3N0YXRlIjp7ImV4aXN0cyI6dHJ1ZSwicmVmIjoicmVmcy90YWdzL3YxLjM0LjAifSwidGFnX3JlZl9zdGF0ZV9zaGEyNTYiOiJzaGEyNTY6NzRjNTY2NTM5NWVkOThiYTNmZDFiM2EyODRiYWIxZTgwODlmN2M3OWNmYWZiM2Y4ODU0OGU4YjE0NTZjNTc4MiIsInRhZ19ydWxlc2V0cyI6W3siYnlwYXNzX2FjdG9ycyI6W3siYWN0b3JfaWQiOiI0NzMwNzA4IiwiYWN0b3JfdHlwZSI6IkludGVncmF0aW9uIiwiYnlwYXNzX21vZGUiOiJhbHdheXMifV0sImNvbmRpdGlvbnMiOnsicmVmX25hbWUiOnsiZXhjbHVkZSI6W10sImluY2x1ZGUiOlsicmVmcy90YWdzL3YqIl19fSwiZW5mb3JjZW1lbnQiOiJhY3RpdmUiLCJuYW1lIjoiT3BlbkFkYXB0IHBvbGljeTogcmVsZWFzZSB0YWcgY3JlYXRpb24iLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvb3BlbmFkYXB0LWZsb3ciLCJyZXBvc2l0b3J5X2lkIjoiMTI5MTM3NjkzOCIsInJvbGUiOiJjcmVhdGlvbl9hdXRob3JpdHkiLCJydWxlcyI6W3sidHlwZSI6ImNyZWF0aW9uIn1dLCJydWxlc2V0X2lkIjoiMTAiLCJzY2hlbWFfdmVyc2lvbiI6Im9wZW5hZGFwdC5wcm9kdWN0aW9uLXJlbGVhc2UtdGFnLXJ1bGVzZXQvdjEiLCJ0YXJnZXQiOiJ0YWcifSx7ImJ5cGFzc19hY3RvcnMiOltdLCJjb25kaXRpb25zIjp7InJlZl9uYW1lIjp7ImV4Y2x1ZGUiOltdLCJpbmNsdWRlIjpbInJlZnMvdGFncy92KiJdfX0sImVuZm9yY2VtZW50IjoiYWN0aXZlIiwibmFtZSI6Ik9wZW5BZGFwdCBwb2xpY3k6IGltbXV0YWJsZSByZWxlYXNlIHRhZ3MiLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvb3BlbmFkYXB0LWZsb3ciLCJyZXBvc2l0b3J5X2lkIjoiMTI5MTM3NjkzOCIsInJvbGUiOiJpbW11dGFiaWxpdHkiLCJydWxlcyI6W3sidHlwZSI6ImRlbGV0aW9uIn0seyJ0eXBlIjoibm9uX2Zhc3RfZm9yd2FyZCJ9LHsicGFyYW1ldGVycyI6eyJ1cGRhdGVfYWxsb3dzX2ZldGNoX2FuZF9tZXJnZSI6ZmFsc2V9LCJ0eXBlIjoidXBkYXRlIn1dLCJydWxlc2V0X2lkIjoiMTEiLCJzY2hlbWFfdmVyc2lvbiI6Im9wZW5hZGFwdC5wcm9kdWN0aW9uLXJlbGVhc2UtdGFnLXJ1bGVzZXQvdjEiLCJ0YXJnZXQiOiJ0YWcifV0sInRhZ19ydWxlc2V0c19zaGEyNTYiOiJzaGEyNTY6YjBmZGYxNjBkODBhZTdkYzhmZmQ5NzliMmJhMTAxY2VlNmIzZTdjZjEzOWU4YzVkMzJiNTUzNGNiYzBmN2Y0NCIsInRhcmdldF9jb21taXRpc2giOiIzMGZjNjBlNTU3NzhhMGUwZjkyYjk3NzYxMTdjYWZjZmUyNTEyMjQ5In0sInB1YmxpY2F0aW9uX3N0YWdpbmdfc2hhMjU2Ijoic2hhMjU2Ojg2MTE3NWMxOTZjZmU5NDU1Y2U1ZjA1MzZiNmIxZWFiZjU1YTk5MGNlZDAzMzQ5Yjg2NTY0M2Y1MjMxNmRlZGQiLCJyZWxlYXNlIjp7ImFydGlmYWN0cyI6W3sia2luZCI6InB5dGhvbi1zZGlzdCIsIm1lZGlhX3R5cGUiOiJhcHBsaWNhdGlvbi9nemlwIiwibmFtZSI6Im9wZW5hZGFwdF9mbG93LTEuMzQuMC50YXIuZ3oiLCJwdWJsaXNoX2Rlc3RpbmF0aW9ucyI6WyJnaXRodWItcmVsZWFzZSIsInB5cGkiXSwic2hhMjU2Ijoic2hhMjU2OmE5NDFhNzAwMTVmZTkxODk3ZTY1NWJmYzliZjgzZTZjZjhmYmNmOGJkNGU0YzcyMDZmZmIxMzNjNTA1MjAzZjgiLCJzaXplX2J5dGVzIjoyMDQ0MDgzOH0seyJraW5kIjoicHl0aG9uLXdoZWVsIiwibWVkaWFfdHlwZSI6ImFwcGxpY2F0aW9uL3ppcCIsIm5hbWUiOiJvcGVuYWRhcHRfZmxvdy0xLjM0LjAtcHkzLW5vbmUtYW55LndobCIsInB1Ymxpc2hfZGVzdGluYXRpb25zIjpbImdpdGh1Yi1yZWxlYXNlIiwicHlwaSJdLCJzaGEyNTYiOiJzaGEyNTY6NTZkMzI4MTg5ODljYjNhOTI4MzAwODBlYWQzOWUxMGIwODcxOGM1NWUwMDk4ODExN2YyMmNiZmVhYWM5ODg1NCIsInNpemVfYnl0ZXMiOjE5MjgxOTR9XSwiZGVwbG95bWVudF9pZCI6bnVsbCwiZGVwbG95bWVudF9zaGEyNTYiOm51bGwsImtpbmQiOiJwYWNrYWdlIiwic2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1yZWxlYXNlLWNhbmRpZGF0ZS92MSIsInNvdXJjZV9jb21taXQiOiIzMGZjNjBlNTU3NzhhMGUwZjkyYjk3NzYxMTdjYWZjZmUyNTEyMjQ5Iiwic291cmNlX3JlcG9zaXRvcnkiOiJPcGVuQWRhcHRBSS9vcGVuYWRhcHQtZmxvdyIsInNvdXJjZV9yZXBvc2l0b3J5X2lkIjoiMTI5MTM3NjkzOCIsInRhZyI6InYxLjM0LjAiLCJ2ZXJzaW9uIjoiMS4zNC4wIn0sInJlbGVhc2VfaWRlbnRpdHkiOnsiY2hhbm5lbCI6InByb2R1Y3Rpb24iLCJwcmV2aW91c19hZG1pc3Npb25fc2hhMjU2IjpudWxsLCJzY2hlbWFfdmVyc2lvbiI6Im9wZW5hZGFwdC5tb25vdG9uaWMtcHJvZHVjdGlvbi1yZWxlYXNlL3YxIiwic2VxdWVuY2UiOjF9LCJyZWxlYXNlX3NoYTI1NiI6InNoYTI1NjpmODRjMDNjODU3YmRhODM3MmQzOWJjMzBhZmNjMjk4NjI0Nzc3OGMzNGIzZjkzYTM5ZWM5ZGU1ZGQxNTFhMjg5IiwicmV2b2NhdGlvbl9zdGF0ZV9zaGEyNTYiOiJzaGEyNTY6MjUwYWI0MzBlNDY3ZjVlNTg0ZWJkMmIxODMyOTc2YjQyMTg2YjY5OGRhNzFkNjI3ZWUxNzI0YzJiMWRhMjQ1NyIsInNjaGVtYV92ZXJzaW9uIjoib3BlbmFkYXB0LnF1YWxpZmljYXRpb24tcmVsZWFzZS92MiIsInNpZ25lcl9yZWdpc3RyeV9zaGEyNTYiOiJzaGEyNTY6ZTI0M2EyMzI0M2IyNDk4NmVkMDg4MTJlMjg0YTFiZDhjNDk5MzgxNDE0OWYwMmJjYmE3OWNjNTIwZTEwY2ExNCIsInRhcmdldCI6ImZsb3ciLCJ2ZXJkaWN0IjoiYWNjZXB0ZWQifQo=","result_sha256":"sha256:790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82","retry_policy":"reconcile-never-retry","schema_version":"openadapt.qualification-one-use-effect/v1"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effect.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effect.json new file mode 100644 index 0000000..64c0e82 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effect.json @@ -0,0 +1 @@ +{"effect_id_sha256":"sha256:7b3e0422c3060473288f44c21747f36bd616f1417875c292d634a9e7204b09c8","effect_sha256":"sha256:4f57ac99062b4e528ad83d34f5815b2f932ef32cd882e280c7b02bf695da5fdf","operation":"issue-qualification-admission","request_handle":"qair_RmVqt6OgAzt7MKwoxwOaebxcy0co-Xop9NqvT09wneO","request_sha256":"sha256:bec6c1533080d25a6e25d5a6d8f08c0c1bf7525ce083bf2a2d99b14399e5922b","result_base64":"eyJhY3Rpb25fY29udHJhY3Rfc2hhMjU2Ijoic2hhMjU2OmQ0YjhhOTMxYzE2YmNhMjRjZDM0M2M3ODZmNDE1NjYzNTdkOWVkY2M4YjBiOTdkM2MxY2I5OTA3NTcxZGQ1NmIiLCJhZG1pc3Npb25faWRfc2hhMjU2Ijoic2hhMjU2OjQ1YzE1Nzg5OGI2ZjA3ZTU3YmY2MDRiMzMyM2YyMDZkNjc3Y2FjNmM1N2E0MzIzODE1MmNkYjMzMDg0OTVlODAiLCJhZG1pdHRlZF9ydW50aW1lX3NoYTI1NiI6InNoYTI1Njo1NmQzMjgxODk4OWNiM2E5MjgzMDA4MGVhZDM5ZTEwYjA4NzE4YzU1ZTAwOTg4MTE3ZjIyY2JmZWFhYzk4ODU0IiwiYXBwbGljYXRpb25fY29udHJhY3Rfc2hhMjU2Ijoic2hhMjU2OmU4ZjcwYjI0OTc2ZDJiZWZlYWVhNWU1NDA1OWUzOWIxOTM0YTIxMWM0OWNiYTY1YWM0MWU2Y2ZkZmQ3MGVjODAiLCJidW5kbGVfc2hhMjU2Ijoic2hhMjU2OjMzZjhjNjM3ZjNkNWQ5ZWIyM2I5MmUwZmI3YmE3NGQyNzEzYTUyZjdjOGVkMTE0OTViMzBmOGJiZWZiMWYzMTIiLCJidW5kbGVfdmVyc2lvbiI6IjAuMC4wLXN5bnRoZXRpYyIsImNhbXBhaWduX2FydGlmYWN0X3NoYTI1NiI6InNoYTI1NjplMmYyYWE2YjMwMTE4ODY0NjgyODkyYTA4ZTdlMTUxMDM5YTM0ZTdlN2Y4NGZmMDI3ZTI1M2NmOGRhZGRmZjc4IiwiY2FtcGFpZ25fcGVybWl0X3NoYTI1NiI6InNoYTI1NjpkYTRhZjFmMjFhYTEyMWEwMGY5MmQ4OGZjMTI5ZDQ3YmJkMWEwMjc0NjI0MDhlNmJmMmFkZjhmZTY2ZmU0MjU1IiwiY2FtcGFpZ25fc3VtbWFyeSI6eyJkZWNsYXJlZF9hdHRlbmRlZCI6eyJhcHByb3ZlZF9yZXBhaXJfY291bnQiOjAsImF1dGhlbnRpY2F0ZWRfYm91bmRfZGVjaXNpb25fY291bnQiOjMsImJsaW5kX3JldHJ5X2NvdW50IjowLCJsaXZlX3RhcmdldF9yZXZhbGlkYXRpb25fY291bnQiOjMsIm1pbmltdW1fdHJpYWxzX3Blcl9jZWxsIjozLCJtb2RlbF9jYWxsX2NvdW50IjowLCJvYnNlcnZlZF90cmlhbF9jb3VudCI6Mywib3Zlcl9oYWx0X2NvdW50IjowLCJwb2xpY3lfYXBwcm92ZWRfcmVwYWlyX2NvdW50IjowLCJyZWNvbmNpbGlhdGlvbl9yZXF1aXJlZF9jb3VudCI6MCwicmVwbGF5X2Rpc3BhdGNoX2NvdW50IjowLCJyZXRhaW5lZF9yZXBhaXJfZXZpZGVuY2VfY291bnQiOjAsInNpbGVudF9pbmNvcnJlY3Rfc3VjY2Vzc19jb3VudCI6MCwidGFza19jb25kaXRpb25fY2VsbF9jb3VudCI6MSwidW5wbGFubmVkX2ludGVydmVudGlvbl9jb3VudCI6MCwidW5zYWZlX2VmZmVjdF9jb3VudCI6MCwidW52ZXJpZmllZF9kaXJlY3RfYWN0aW9uX2NvdW50IjowfSwiZ292ZXJuZWRfcmVwYWlyIjp7ImFwcHJvdmVkX3JlcGFpcl9jb3VudCI6MywiYXV0aGVudGljYXRlZF9ib3VuZF9kZWNpc2lvbl9jb3VudCI6MCwiYmxpbmRfcmV0cnlfY291bnQiOjAsImxpdmVfdGFyZ2V0X3JldmFsaWRhdGlvbl9jb3VudCI6MywibWluaW11bV90cmlhbHNfcGVyX2NlbGwiOjMsIm1vZGVsX2NhbGxfY291bnQiOjAsIm9ic2VydmVkX3RyaWFsX2NvdW50IjozLCJvdmVyX2hhbHRfY291bnQiOjAsInBvbGljeV9hcHByb3ZlZF9yZXBhaXJfY291bnQiOjMsInJlY29uY2lsaWF0aW9uX3JlcXVpcmVkX2NvdW50IjowLCJyZXBsYXlfZGlzcGF0Y2hfY291bnQiOjAsInJldGFpbmVkX3JlcGFpcl9ldmlkZW5jZV9jb3VudCI6Mywic2lsZW50X2luY29ycmVjdF9zdWNjZXNzX2NvdW50IjowLCJ0YXNrX2NvbmRpdGlvbl9jZWxsX2NvdW50IjoxLCJ1bnBsYW5uZWRfaW50ZXJ2ZW50aW9uX2NvdW50IjowLCJ1bnNhZmVfZWZmZWN0X2NvdW50IjowLCJ1bnZlcmlmaWVkX2RpcmVjdF9hY3Rpb25fY291bnQiOjB9LCJoZWFsdGh5Ijp7ImFwcHJvdmVkX3JlcGFpcl9jb3VudCI6MCwiYXV0aGVudGljYXRlZF9ib3VuZF9kZWNpc2lvbl9jb3VudCI6MCwiYmxpbmRfcmV0cnlfY291bnQiOjAsImxpdmVfdGFyZ2V0X3JldmFsaWRhdGlvbl9jb3VudCI6MCwibWluaW11bV90cmlhbHNfcGVyX2NlbGwiOjMsIm1vZGVsX2NhbGxfY291bnQiOjAsIm9ic2VydmVkX3RyaWFsX2NvdW50IjozLCJvdmVyX2hhbHRfY291bnQiOjAsInBvbGljeV9hcHByb3ZlZF9yZXBhaXJfY291bnQiOjAsInJlY29uY2lsaWF0aW9uX3JlcXVpcmVkX2NvdW50IjowLCJyZXBsYXlfZGlzcGF0Y2hfY291bnQiOjAsInJldGFpbmVkX3JlcGFpcl9ldmlkZW5jZV9jb3VudCI6MCwic2lsZW50X2luY29ycmVjdF9zdWNjZXNzX2NvdW50IjowLCJ0YXNrX2NvbmRpdGlvbl9jZWxsX2NvdW50IjoxLCJ1bnBsYW5uZWRfaW50ZXJ2ZW50aW9uX2NvdW50IjowLCJ1bnNhZmVfZWZmZWN0X2NvdW50IjowLCJ1bnZlcmlmaWVkX2RpcmVjdF9hY3Rpb25fY291bnQiOjB9LCJpZGVtcG90ZW5jeV9yZXBsYXkiOnsiYXBwcm92ZWRfcmVwYWlyX2NvdW50IjowLCJhdXRoZW50aWNhdGVkX2JvdW5kX2RlY2lzaW9uX2NvdW50IjowLCJibGluZF9yZXRyeV9jb3VudCI6MCwibGl2ZV90YXJnZXRfcmV2YWxpZGF0aW9uX2NvdW50IjowLCJtaW5pbXVtX3RyaWFsc19wZXJfY2VsbCI6MywibW9kZWxfY2FsbF9jb3VudCI6MCwib2JzZXJ2ZWRfdHJpYWxfY291bnQiOjMsIm92ZXJfaGFsdF9jb3VudCI6MCwicG9saWN5X2FwcHJvdmVkX3JlcGFpcl9jb3VudCI6MCwicmVjb25jaWxpYXRpb25fcmVxdWlyZWRfY291bnQiOjAsInJlcGxheV9kaXNwYXRjaF9jb3VudCI6MCwicmV0YWluZWRfcmVwYWlyX2V2aWRlbmNlX2NvdW50IjowLCJzaWxlbnRfaW5jb3JyZWN0X3N1Y2Nlc3NfY291bnQiOjAsInRhc2tfY29uZGl0aW9uX2NlbGxfY291bnQiOjEsInVucGxhbm5lZF9pbnRlcnZlbnRpb25fY291bnQiOjAsInVuc2FmZV9lZmZlY3RfY291bnQiOjAsInVudmVyaWZpZWRfZGlyZWN0X2FjdGlvbl9jb3VudCI6MH0sInNhZmVfaGFsdCI6eyJhcHByb3ZlZF9yZXBhaXJfY291bnQiOjAsImF1dGhlbnRpY2F0ZWRfYm91bmRfZGVjaXNpb25fY291bnQiOjAsImJsaW5kX3JldHJ5X2NvdW50IjowLCJsaXZlX3RhcmdldF9yZXZhbGlkYXRpb25fY291bnQiOjAsIm1pbmltdW1fdHJpYWxzX3Blcl9jZWxsIjozLCJtb2RlbF9jYWxsX2NvdW50IjowLCJvYnNlcnZlZF90cmlhbF9jb3VudCI6Mywib3Zlcl9oYWx0X2NvdW50IjowLCJwb2xpY3lfYXBwcm92ZWRfcmVwYWlyX2NvdW50IjowLCJyZWNvbmNpbGlhdGlvbl9yZXF1aXJlZF9jb3VudCI6MCwicmVwbGF5X2Rpc3BhdGNoX2NvdW50IjowLCJyZXRhaW5lZF9yZXBhaXJfZXZpZGVuY2VfY291bnQiOjAsInNpbGVudF9pbmNvcnJlY3Rfc3VjY2Vzc19jb3VudCI6MCwidGFza19jb25kaXRpb25fY2VsbF9jb3VudCI6MSwidW5wbGFubmVkX2ludGVydmVudGlvbl9jb3VudCI6MCwidW5zYWZlX2VmZmVjdF9jb3VudCI6MCwidW52ZXJpZmllZF9kaXJlY3RfYWN0aW9uX2NvdW50IjowfSwidW5jZXJ0YWluX2RlbGl2ZXJ5Ijp7ImFwcHJvdmVkX3JlcGFpcl9jb3VudCI6MCwiYXV0aGVudGljYXRlZF9ib3VuZF9kZWNpc2lvbl9jb3VudCI6MCwiYmxpbmRfcmV0cnlfY291bnQiOjAsImxpdmVfdGFyZ2V0X3JldmFsaWRhdGlvbl9jb3VudCI6MCwibWluaW11bV90cmlhbHNfcGVyX2NlbGwiOjMsIm1vZGVsX2NhbGxfY291bnQiOjAsIm9ic2VydmVkX3RyaWFsX2NvdW50IjozLCJvdmVyX2hhbHRfY291bnQiOjAsInBvbGljeV9hcHByb3ZlZF9yZXBhaXJfY291bnQiOjAsInJlY29uY2lsaWF0aW9uX3JlcXVpcmVkX2NvdW50IjozLCJyZXBsYXlfZGlzcGF0Y2hfY291bnQiOjAsInJldGFpbmVkX3JlcGFpcl9ldmlkZW5jZV9jb3VudCI6MCwic2lsZW50X2luY29ycmVjdF9zdWNjZXNzX2NvdW50IjowLCJ0YXNrX2NvbmRpdGlvbl9jZWxsX2NvdW50IjoxLCJ1bnBsYW5uZWRfaW50ZXJ2ZW50aW9uX2NvdW50IjowLCJ1bnNhZmVfZWZmZWN0X2NvdW50IjowLCJ1bnZlcmlmaWVkX2RpcmVjdF9hY3Rpb25fY291bnQiOjB9fSwiZGVjaXNpb25fcmVjZWlwdF9idW5kbGVfcmVmZXJlbmNlIjp7ImtpbmQiOiJxdWFsaWZpY2F0aW9uLWV2aWRlbmNlLWRlY2lzaW9uLXJlY2VpcHQtc2lnc3RvcmUtYnVuZGxlIiwib2JqZWN0X21lZGlhX3R5cGUiOiJhcHBsaWNhdGlvbi92bmQuZGV2LnNpZ3N0b3JlLmJ1bmRsZS52MC4zK2pzb24iLCJvYmplY3RfcGF0aCI6InByb2R1Y3Rpb24tZXZpZGVuY2Uvb2JqZWN0cy9zaGEyNTYvMDkvMDllYjQ4ZjgwZGVjM2NkOGY3ZGE3M2JmZWYxYWVkODA1MDY4YzBmZWVmZGJhYWFhMzUwZGVkMWI3MGJhMGM3ZC5xdWFsaWZpY2F0aW9uLWV2aWRlbmNlLWRlY2lzaW9uLXJlY2VpcHQtc2lnc3RvcmUtYnVuZGxlLmpzb24iLCJvYmplY3Rfc2NoZW1hX3ZlcnNpb24iOiJhcHBsaWNhdGlvbi92bmQuZGV2LnNpZ3N0b3JlLmJ1bmRsZS52MC4zK2pzb24iLCJvYmplY3Rfc2hhMjU2Ijoic2hhMjU2OjA5ZWI0OGY4MGRlYzNjZDhmN2RhNzNiZmVmMWFlZDgwNTA2OGMwZmVlZmRiYWFhYTM1MGRlZDFiNzBiYTBjN2QiLCJyZWdpc3RyeV9lbnRyeV9zaGEyNTYiOiJzaGEyNTY6NDBlMTM0MTg4YmViMWYxZGQ4YmYxN2VhYTAyZDg0YjgyNDZhZTExZGI3Yjk5ZGI2OGVmYjQ5M2YyYTNkNzk1NSIsInJlZ2lzdHJ5X2hlYWRfc2hhMjU2Ijoic2hhMjU2OjlhOWY1OTdiMGQ4NzY3NGM0ZDM2YzAyMjIyNzIwMWE1ZDhmMzA3MjIzNzYyNDM0Njc5MzY5MmMzYTg2M2QxMmUiLCJyZWdpc3RyeV9yZXZpc2lvbiI6MSwicmVnaXN0cnlfc291cmNlX2NvbW1pdCI6IjJjMTI5NzAyZGE3MTg1MjJjYzI1NzkxMzIwN2I2ZWQ2ZjNiMzNiN2MiLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvLmdpdGh1YiIsInJlcG9zaXRvcnlfaWQiOiI4NTg0NTQwNjIiLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMTMyNjgxMjE3Iiwic2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucHJvZHVjdGlvbi1ldmlkZW5jZS1vYmplY3QtcmVmZXJlbmNlL3YyIiwic2VtYW50aWNfaWRlbnRpdHlfc2hhMjU2Ijoic2hhMjU2OjIxZDJiZTYyNGNjOTNmMDMzYjEzZWNlYWJkN2VhNDJiMzlhYjZmODA3OTBjNjQzMjM1YzgwYTMyMjcyNTQ1YTYiLCJzaXplX2J5dGVzIjoyODQ5LCJzdWJqZWN0X3NoYTI1NiI6InNoYTI1Njo2ZmZlNjkxZjhlNDBlMDZiNzNlMjQzOTFkMTgwNDI0ZWQ4NmJiMjg5ZGRhZTAwMWNmN2I0OWRlMmU3NDUzMTJhIn0sImRlY2lzaW9uX3JlY2VpcHRfcmVmZXJlbmNlIjp7ImtpbmQiOiJxdWFsaWZpY2F0aW9uLWV2aWRlbmNlLWRlY2lzaW9uLXJlY2VpcHQiLCJvYmplY3RfbWVkaWFfdHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5vcGVuYWRhcHQucXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbi1yZWNlaXB0K2pzb247dmVyc2lvbj0yIiwib2JqZWN0X3BhdGgiOiJwcm9kdWN0aW9uLWV2aWRlbmNlL29iamVjdHMvc2hhMjU2LzZmLzZmZmU2OTFmOGU0MGUwNmI3M2UyNDM5MWQxODA0MjRlZDg2YmIyODlkZGFlMDAxY2Y3YjQ5ZGUyZTc0NTMxMmEucXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbi1yZWNlaXB0Lmpzb24iLCJvYmplY3Rfc2NoZW1hX3ZlcnNpb24iOiJvcGVuYWRhcHQucXVhbGlmaWNhdGlvbi1ldmlkZW5jZS1kZWNpc2lvbi1yZWNlaXB0L3YyIiwib2JqZWN0X3NoYTI1NiI6InNoYTI1Njo2ZmZlNjkxZjhlNDBlMDZiNzNlMjQzOTFkMTgwNDI0ZWQ4NmJiMjg5ZGRhZTAwMWNmN2I0OWRlMmU3NDUzMTJhIiwicmVnaXN0cnlfZW50cnlfc2hhMjU2Ijoic2hhMjU2OjYzZDAxNzBmYjk1N2ViZDE2N2YyNjUwZWY3NDRkNzA4MzlkMDY3NmE4Y2Y5Zjg5NzhkNzNhZWQ1Y2ZmZDBiMjciLCJyZWdpc3RyeV9oZWFkX3NoYTI1NiI6InNoYTI1Njo5YTlmNTk3YjBkODc2NzRjNGQzNmMwMjIyMjcyMDFhNWQ4ZjMwNzIyMzc2MjQzNDY3OTM2OTJjM2E4NjNkMTJlIiwicmVnaXN0cnlfcmV2aXNpb24iOjEsInJlZ2lzdHJ5X3NvdXJjZV9jb21taXQiOiIyYzEyOTcwMmRhNzE4NTIyY2MyNTc5MTMyMDdiNmVkNmYzYjMzYjdjIiwicmVwb3NpdG9yeSI6Ik9wZW5BZGFwdEFJLy5naXRodWIiLCJyZXBvc2l0b3J5X2lkIjoiODU4NDU0MDYyIiwicmVwb3NpdG9yeV9vd25lcl9pZCI6IjEzMjY4MTIxNyIsInNjaGVtYV92ZXJzaW9uIjoib3BlbmFkYXB0LnByb2R1Y3Rpb24tZXZpZGVuY2Utb2JqZWN0LXJlZmVyZW5jZS92MiIsInNlbWFudGljX2lkZW50aXR5X3NoYTI1NiI6InNoYTI1NjpjMThkNjliZGZiMTQ1MTM5NTgxZWE2ODY1ZjUxMzE3OWJkMTA0Y2IwMmE2NGQ4MzhmOTNlNDlmOTZkOWQzNzY5Iiwic2l6ZV9ieXRlcyI6NjYzNiwic3ViamVjdF9zaGEyNTYiOm51bGx9LCJlZmZlY3RfY29udHJhY3Rfc2hhMjU2Ijoic2hhMjU2OmNlMTFmOWFjMTA1OWQyOWM1NjQ4YTY2MmNlOGE0ZTg1MjhlYTNlOGQ4NDQ2NTdhZWM4NDIyZDhiMTI1YTA2OTgiLCJlbnRpdHlfY2xhc3MiOiJyZWNvcmQiLCJlbnZpcm9ubWVudF9jb250cmFjdF9zaGEyNTYiOiJzaGEyNTY6YjAxZTE1NWEzNzA0YjFmNzgxOTM3NTg1ZGE3Zjg2YzQ3YWRiOGM4NmQ0OGYwMzIwMTllZjQxZDZlOWNlZWE1NyIsImV2aWRlbmNlX2F1dGhvcml0eV9zaGEyNTYiOiJzaGEyNTY6MWFhN2NmY2I1ZjNkZjZiOTkzNzJhMjhjMzA1MTc3ZTA0NjQ4N2M4ZWM1YjYxMTExZWRiZjFhMTJkM2U3NjY2MyIsImV2aWRlbmNlX2NsYXNzIjoicmVtb3RlLXNhZmUtc3ludGhldGljIiwiZXhwaXJlc19hdCI6bnVsbCwiaWRlbnRpdHlfY29udHJhY3Rfc2hhMjU2Ijoic2hhMjU2OjM0YjAwOGRkMDQwZDcxOGZkYzRkN2I4NWI5MzExNzQ5Yjk4NjVmNDdiNGJhNDNiZjZjZDRhMTQwYmNmMzZjNjUiLCJpbnB1dF9jb250cmFjdF9zaGEyNTYiOiJzaGEyNTY6YTgyYmE2N2FmOTBmODFlOWEwOWYyZGI0NDVhNTdmODEyYjQwYTA0Yzg3NjM5NmYxOTFlYjc3ZWI1MzQ4N2EwZiIsImlzc3VlZF9hdCI6IjIwMjYtMDktMDJUMTg6MjQ6MjVaIiwiaXNzdWVyIjp7ImVudmlyb25tZW50IjoicXVhbGlmaWNhdGlvbi1hZG1pc3Npb24iLCJyZWYiOiJyZWZzL2hlYWRzL21haW4iLCJyZXBvc2l0b3J5IjoiT3BlbkFkYXB0QUkvLmdpdGh1YiIsInJlcG9zaXRvcnlfaWQiOiI4NTg0NTQwNjIiLCJyZXBvc2l0b3J5X293bmVyX2lkIjoiMTMyNjgxMjE3Iiwic291cmNlX2NvbW1pdCI6IjJjMTI5NzAyZGE3MTg1MjJjYzI1NzkxMzIwN2I2ZWQ2ZjNiMzNiN2MiLCJ3b3JrZmxvdyI6Ii5naXRodWIvd29ya2Zsb3dzL2lzc3VlLXF1YWxpZmljYXRpb24tYWRtaXNzaW9uLnltbCJ9LCJsb2NhbF9pZGVudGl0eV9vcGVuaW5nIjp7ImFsZ29yaXRobSI6ImhtYWMtc2hhMjU2IiwiY3VzdG9tZXJfY29udHJvbGxlZF9zZWNyZXRfcmVxdWlyZWQiOnRydWUsImV4YWN0X2NvbnRyYWN0X21hdGNoX3JlcXVpcmVkIjp0cnVlLCJtYXhpbXVtX2FnZV9zZWNvbmRzIjo2MCwicmVxdWlyZWQiOnRydWUsInJldmFsaWRhdGlvbl9iZWZvcmVfYWN0dWF0aW9uIjp0cnVlLCJzY2hlbWFfdmVyc2lvbiI6Im9wZW5hZGFwdC5xdWFsaWZpY2F0aW9uLWxvY2FsLWlkZW50aXR5LW9wZW5pbmcvdjEifSwibm90X2JlZm9yZSI6IjIwMjYtMDktMDJUMTg6MjQ6MjVaIiwib3JnYW5pemF0aW9uX2lkX3NoYTI1NiI6InNoYTI1NjpmY2JhODc5ZDg2NzcwOWRhNTI1ZjdmOTk0YTI2NDJiYzdhMzIwMTRlMzI0NTIzYTlkMjc2YmVjNTRjM2QyOTZiIiwicG9saWN5X2NvbnRyYWN0X3NoYTI1NiI6InNoYTI1Njo0ODJlM2M3ZjEwZDA0NDA4NjI4M2VhMzg3ZjIyYjIxYzAxMWU2YzAwY2ZjN2ZiZjE0Y2Y4MmNmZTJhZWRkMWUwIiwicmV2b2NhdGlvbl9zdGF0ZV9zaGEyNTYiOiJzaGEyNTY6MjUwYWI0MzBlNDY3ZjVlNTg0ZWJkMmIxODMyOTc2YjQyMTg2YjY5OGRhNzFkNjI3ZWUxNzI0YzJiMWRhMjQ1NyIsInNjaGVtYV92ZXJzaW9uIjoib3BlbmFkYXB0LnF1YWxpZmljYXRpb24tYWRtaXNzaW9uL3Y0Iiwic2lnbmVyX3JlZ2lzdHJ5X3NoYTI1NiI6InNoYTI1NjplMjQzYTIzMjQzYjI0OTg2ZWQwODgxMmUyODRhMWJkOGM0OTkzODE0MTQ5ZjAyYmNiYTc5Y2M1MjBlMTBjYTE0IiwidmVyZGljdCI6ImFjY2VwdGVkIiwid29ya2Zsb3dfaWRfc2hhMjU2Ijoic2hhMjU2OjcxNzY1ODNmNjEyMGI3ZmYwMTYzNjM2NDRhZmM0N2U4MzViMmU0YjQzOGFiZTQwNTBkZjE2MDU3MGY3ODBhZjEiLCJ3b3JrZmxvd192ZXJzaW9uX2lkX3NoYTI1NiI6InNoYTI1Njo0YWNmMjdkYTFmMzg0Yjc5NjdhMWJiNGZiNDYzNTcwNjU3ODk0Y2I4MzQ2OGU1NzYzOTQwZDY5YWI5ZGYxMzg2In0K","result_sha256":"sha256:dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04","retry_policy":"reconcile-never-retry","schema_version":"openadapt.qualification-one-use-effect/v1"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effects.sqlite b/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effects.sqlite new file mode 100644 index 0000000..9286631 Binary files /dev/null and b/local-candidates/flow-1.34.0-remote-safe-synthetic/one-use-effects.sqlite differ diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/phase1-state.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/phase1-state.json new file mode 100644 index 0000000..2c196e7 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/phase1-state.json @@ -0,0 +1 @@ +{"authority_state_sha256":"sha256:df5079141df68877c4b06f05b9fb9fdf279307b7629eb1f2dce12def4bd5e2fa","campaign_label":"remote-safe-synthetic","evals_production_acceptance":false,"expires_at":null,"flow_source":"30fc60e55778a0e0f92b9776117cafcfe2512249","generated_at":"2026-09-02T18:24:25Z","inner_key_id":"qa-ed25519-9cf4bca214c01d79","mockmed_1_34_0_evals_set_is_this_summary":false,"outer_key_id":"oa-public-trust-ed25519-9cf4bca214c01d79","policy_commit":"2c129702da718522cc257913207b6ed6f3b33b7c","registry_head_sha256":"sha256:9a9f597b0d87674c4d36c022227201a5d8f3072237624346793692c3a863d12e","registry_identity":"sha256:e243a23243b24986ed08812e284a1bd8c4993814149f02bcba79cc520e10ca14","registry_raw_sha256":"sha256:7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6","registry_revision":1,"revocation_state_sha256":"sha256:250ab430e467f5e584ebd2b1832976b42186b698da71d627ee1724c2b1da2457","sdist_sha256":"a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8","wheel_sha256":"56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/production-acceptance-manifest-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-acceptance-manifest-sigstore-bundle.json new file mode 100644 index 0000000..d900ee8 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-acceptance-manifest.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-acceptance-manifest.json new file mode 100644 index 0000000..df7bcee --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-acceptance-summary-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-acceptance-summary-sigstore-bundle.json new file mode 100644 index 0000000..5a494eb --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-acceptance-summary.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-acceptance-summary.json new file mode 100644 index 0000000..0659bdb --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/09/09eb48f80dec3cd8f7da73bfef1aed805068c0feefdbaaaa350ded1b70ba0c7d.qualification-evidence-decision-receipt-sigstore-bundle.json new file mode 100644 index 0000000..e2c3cb9 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/0f/0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830.qualification-authority-state-receipt-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/0f/0f97c284b10f8dc0153dbab0da5deccc5069bb5609982d45b890617783687830.qualification-authority-state-receipt-sigstore-bundle.json new file mode 100644 index 0000000..23e41d1 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/17/1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32.qualification-admission-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/17/1773f9dd2b0c3a78bf2454cfba5d038151925f4b7c5aa1a2d7ed46b5f9315c32.qualification-admission-sigstore-bundle.json new file mode 100644 index 0000000..c7630e6 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/18/18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676.qualification-revocation-state-receipt.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/18/18633b8cc243f686706606162bfa249a29733811563f63b9e68cc7c4a3507676.qualification-revocation-state-receipt.json new file mode 100644 index 0000000..fdc3e22 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/21/211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca.production-acceptance-manifest.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/21/211651dd301699ea1394af8b8ec38d1c9c6df5045c88d9ce1ece09ca774c15ca.production-acceptance-manifest.json new file mode 100644 index 0000000..df7bcee --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/38/3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4.production-acceptance-summary.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/38/3849fd4e2cae0d3a74964362e4850870bb68c23007d5eb818800159d3eb730d4.production-acceptance-summary.json new file mode 100644 index 0000000..0659bdb --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/48/4804e33f847a04d35304c9948ade6ac9e736b06a1a8c9ab920da0833b7423e01.qualification-release-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/48/4804e33f847a04d35304c9948ade6ac9e736b06a1a8c9ab920da0833b7423e01.qualification-release-sigstore-bundle.json new file mode 100644 index 0000000..cd9f721 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/4e/4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f.qualification-revocation-state-receipt-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/4e/4e0a052726ba440c9f6a19726b004f948c36087b2702d614a398728b428dcd5f.qualification-revocation-state-receipt-sigstore-bundle.json new file mode 100644 index 0000000..3d39da8 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/6f/6ffe691f8e40e06b73e24391d180424ed86bb289ddae001cf7b49de2e745312a.qualification-evidence-decision-receipt.json new file mode 100644 index 0000000..b26db2f --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/79/790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82.qualification-release.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/79/790122a25c87e456c6e45d25ebf5cd029b21b8511265b062fd9129b74aa1dd82.qualification-release.json new file mode 100644 index 0000000..7c1e990 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/a2/a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e.qualification-authority-state-receipt.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/a2/a22f9815ec0f7c56f7629aeabfd21d14bc6d739efcfb7f7a073ce9987e19479e.qualification-authority-state-receipt.json new file mode 100644 index 0000000..c47be2a --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/ac/ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c.production-acceptance-manifest-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/ac/ace6aabbaf02596d26cd5d6f1406790f4fe831ca978129d50cc2285882a2630c.production-acceptance-manifest-sigstore-bundle.json new file mode 100644 index 0000000..d900ee8 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/dc/dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04.qualification-admission.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/dc/dcdb32a762aca87fbb1a7c9df5d346403b167ec5850d35fe47fd64d942684a04.qualification-admission.json new file mode 100644 index 0000000..f945826 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/e9/e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb.production-acceptance-summary-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/objects/sha256/e9/e9ecdee1fc3458906fc91f5760d215bb5bec3591a6ed9ae0b412114e24fcf8fb.production-acceptance-summary-sigstore-bundle.json new file mode 100644 index 0000000..5a494eb --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/signer-registries/sha256/7a/7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6.qualification-signer-registry.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/production-evidence/signer-registries/sha256/7a/7a81bf3d213c74673f3c6b5fa179234cbee534c9432aaea6ae09e455562f96b6.qualification-signer-registry.json new file mode 100644 index 0000000..72a5ba1 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/public-material.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/public-material.json new file mode 100644 index 0000000..cffcff2 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/public-material.json @@ -0,0 +1 @@ +{"algorithm":"ed25519","key_id":"qa-ed25519-9cf4bca214c01d79","public_key":"vHPUDLG2WD2BnTLaKYnZd9GxvUKfjpd68gJ9HubIEH8","public_key_sha256":"sha256:465646ab5137f05dfba094fb05fc10e3af74a0c2e2d0fcc20814b8f1f8271170","public_key_spki_der_base64":"MCowBQYDK2VwAyEAvHPUDLG2WD2BnTLaKYnZd9GxvUKfjpd68gJ9HubIEH8="} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/publication-staging.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/publication-staging.json new file mode 100644 index 0000000..7f89826 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/publication-staging.json @@ -0,0 +1 @@ +{"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"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-admission-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-admission-sigstore-bundle.json new file mode 100644 index 0000000..c7630e6 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-admission.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-admission.json new file mode 100644 index 0000000..f945826 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-authority-state-receipt-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-authority-state-receipt-sigstore-bundle.json new file mode 100644 index 0000000..23e41d1 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-authority-state-receipt.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-authority-state-receipt.json new file mode 100644 index 0000000..c47be2a --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-evidence-decision-receipt-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-evidence-decision-receipt-sigstore-bundle.json new file mode 100644 index 0000000..e2c3cb9 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-evidence-decision-receipt.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-evidence-decision-receipt.json new file mode 100644 index 0000000..b26db2f --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-release-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-release-sigstore-bundle.json new file mode 100644 index 0000000..cd9f721 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-release.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-release.json new file mode 100644 index 0000000..7c1e990 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-revocation-state-receipt-sigstore-bundle.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-revocation-state-receipt-sigstore-bundle.json new file mode 100644 index 0000000..3d39da8 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-revocation-state-receipt.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/qualification-revocation-state-receipt.json new file mode 100644 index 0000000..fdc3e22 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/rebuild.py b/local-candidates/flow-1.34.0-remote-safe-synthetic/rebuild.py new file mode 100644 index 0000000..07151be --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/rebuild.py @@ -0,0 +1,1311 @@ +#!/usr/bin/env python3 +"""Build unpublished Flow 1.34.0 remote-safe-synthetic admission objects. + +Reads the founder-provisioned Keychain item openadapt-qualification-ed25519. +Does not print the private key. Does not generate a key. Does not write main. + +The campaign_summary is synthetic (1 cell x 3 trials per class). It is not the +MockMed 1.34.0 evals set. evals production_acceptance stays false. + +Uses publication_mode already-published-pypi: the live GitHub tag exists and +PyPI 1.34.0 files are bound by sha256. Does not fake a draft as +openadapt-release[bot]. +""" + +from __future__ import annotations + +import argparse +import base64 +import hashlib +import json +import secrets +import string +import subprocess +import sys +import urllib.request +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +sys.path.insert(0, str(ROOT / "scripts")) + +import production_trust as trust # noqa: E402 +import public_trust_kms as public_trust # noqa: E402 +import qualification_issuer as issuer # noqa: E402 +import qualification_software_ed25519 as software # noqa: E402 +import validate_evidence_registry as evidence # noqa: E402 + +EXPECTED_INNER_KEY_ID = "qa-ed25519-9cf4bca214c01d79" +FLOW_VERSION = "1.34.0" +FLOW_TAG = "v1.34.0" +FLOW_SOURCE = "30fc60e55778a0e0f92b9776117cafcfe2512249" +WHEEL_SHA256 = "56d32818989cb3a92830080ead39e10b08718c55e00988117f22cbfeaac98854" +WHEEL_SIZE = 1928194 +SDIST_SHA256 = "a941a70015fe91897e655bfc9bf83e6cf8fbcf8bd4e4c7206ffb133c505203f8" +SDIST_SIZE = 20440838 +WHEEL_NAME = "openadapt_flow-1.34.0-py3-none-any.whl" +SDIST_NAME = "openadapt_flow-1.34.0.tar.gz" +PYPI_PROJECT = "openadapt-flow" +OPS_COMMIT = "e323249e3a7c1af9d7651312e0afe1f12c38c977" +EVALS_COMMIT = "cad5560d6b7482f2cb99b9735e0ac3c5aae714c8" +SYNTHETIC_DOMAIN = b"OpenAdapt remote-safe-synthetic flow 1.34.0 local candidate v1\0" +EXPECTED_PUBLIC_KEY = "vHPUDLG2WD2BnTLaKYnZd9GxvUKfjpd68gJ9HubIEH8" +KIND_BY_PACKAGETYPE = { + "sdist": "python-sdist", + "bdist_wheel": "python-wheel", +} + + +def campaign_classes() -> dict[str, dict[str, int]]: + result: dict[str, dict[str, int]] = {} + for campaign_class in trust.CAMPAIGN_CLASSES: + counts = {field: 0 for field in trust.CAMPAIGN_COUNT_FIELDS} + counts.update( + task_condition_cell_count=1, + minimum_trials_per_cell=3, + observed_trial_count=3, + ) + if campaign_class == "uncertain_delivery": + counts["reconciliation_required_count"] = 3 + if campaign_class == "declared_attended": + counts["authenticated_bound_decision_count"] = 3 + counts["live_target_revalidation_count"] = 3 + if campaign_class == "governed_repair": + counts["policy_approved_repair_count"] = 3 + counts["approved_repair_count"] = 3 + counts["retained_repair_evidence_count"] = 3 + counts["live_target_revalidation_count"] = 3 + result[campaign_class] = counts + return result + + +def ts(value: datetime) -> str: + if value.tzinfo is None or value.utcoffset() is None: + raise SystemExit("timestamp must use UTC") + return value.replace(microsecond=0).strftime("%Y-%m-%dT%H:%M:%SZ") + + +def labeled(name: str) -> str: + return trust.digest_bytes( + SYNTHETIC_DOMAIN, + { + "label": "remote-safe-synthetic", + "flow_version": FLOW_VERSION, + "name": name, + "mockmed_1_34_0_evals_set_is_this_summary": False, + "evals_production_acceptance": False, + }, + ) + + +def write_json(path: Path, value: Any) -> bytes: + raw = evidence.canonical(value) + b"\n" + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(raw) + return raw + + +def object_rel(kind: str, object_sha256: str) -> str: + digest_hex = object_sha256.removeprefix("sha256:") + return ( + f"production-evidence/objects/sha256/{digest_hex[:2]}/" + f"{digest_hex}.{kind}.json" + ) + + +def signer_rel(object_sha256: str) -> str: + digest_hex = object_sha256.removeprefix("sha256:") + return ( + f"production-evidence/signer-registries/sha256/{digest_hex[:2]}/" + f"{digest_hex}.qualification-signer-registry.json" + ) + + +def sha256_bytes(raw: bytes) -> str: + return "sha256:" + hashlib.sha256(raw).hexdigest() + + +def request_handle() -> str: + alphabet = string.ascii_letters + string.digits + "_-" + return "qair_" + "".join(secrets.choice(alphabet) for _ in range(43)) + + +def sign_embedded( + value: dict[str, Any], + private_key: Any, + *, + schema: str, + domain: bytes, +) -> None: + value["signing_statement"] = trust.signing_statement( + value, object_schema_version=schema, signature_domain=domain + ) + payload = trust.canonical(value["signing_statement"]) + b"\n" + value["signature"] = base64.b64encode(private_key.sign(payload)).decode("ascii") + + +def make_inner(material: dict[str, str]) -> dict[str, Any]: + signer = software.signer_from_public_material(material) + signer["allowed_usages"] = sorted( + { + "qualification-authority-state-receipt", + "qualification-evidence-decision-receipt", + "qualification-revocation-state-receipt", + } + ) + signer["allowed_workflows"] = sorted( + { + ( + "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" + ), + } + ) + return signer + + +def make_entry(kind: str, raw: bytes, value: Any) -> dict[str, Any]: + object_sha256 = sha256_bytes(raw) + schema, media = evidence.OBJECT_KIND_CONTRACTS[kind] + entry = { + "kind": kind, + "object_schema_version": ( + evidence.BUNDLE_MEDIA_TYPE if kind.endswith("-sigstore-bundle") else schema + ), + "object_path": object_rel(kind, object_sha256), + "object_sha256": object_sha256, + "size_bytes": len(raw), + "object_media_type": media, + "semantic_identity_sha256": evidence.semantic_identity_digest( + kind=kind, + object_schema_version=( + evidence.BUNDLE_MEDIA_TYPE + if kind.endswith("-sigstore-bundle") + else schema + ), + object_value=value, + object_sha256=object_sha256, + ), + "subject_sha256": None if not kind.endswith("-sigstore-bundle") else value, + } + entry["registry_entry_sha256"] = evidence.entry_digest(entry) + return entry + + +def reference_from_entry( + entry: dict[str, Any], + *, + registry_source_commit: str, + registry_revision: int, + registry_head_sha256: str, +) -> dict[str, Any]: + return { + "schema_version": evidence.REFERENCE_SCHEMA, + "repository": evidence.REPOSITORY, + "repository_id": evidence.REPOSITORY_ID, + "repository_owner_id": evidence.REPOSITORY_OWNER_ID, + "registry_source_commit": registry_source_commit, + "registry_revision": registry_revision, + "registry_head_sha256": registry_head_sha256, + **entry, + } + + +class LocalResolver: + def __init__(self, registry: dict[str, Any]) -> None: + self.registry = registry + self.objects: dict[str, issuer.ResolvedEvidence] = {} + self.authority: issuer.ResolvedEvidence | None = None + self.revocation: issuer.ResolvedEvidence | None = None + + def add( + self, + kind: str, + value: dict[str, Any], + reference: dict[str, Any], + bundle_reference: dict[str, Any], + ) -> issuer.ResolvedEvidence: + resolved: issuer.ResolvedEvidence = { + "value": value, + "reference": reference, + "bundle_reference": bundle_reference, + "bound_signer_registry": self.registry, + "current_signer_registry": self.registry, + } + self.objects[reference["object_sha256"]] = resolved + return resolved + + def resolve(self, reference: dict[str, Any], *, kind: str) -> issuer.ResolvedEvidence: + resolved = self.objects[reference["object_sha256"]] + if resolved["reference"] != reference or reference["kind"] != kind: + raise issuer.IssuerError("local resolver reference differs") + return resolved + + def current_trust_state( + self, *, registry_source_commit: str + ) -> tuple[issuer.ResolvedEvidence, issuer.ResolvedEvidence]: + if self.authority is None or self.revocation is None: + raise issuer.IssuerError("current authority or revocation receipt is absent") + return self.authority, self.revocation + + +def dsse_bundle( + *, + private_key: Any, + signer: dict[str, Any], + kind: str, + value: dict[str, Any], + raw: bytes, + now: datetime, + registry_sha256: str, + authority_state_sha256: str, + revocation_state_sha256: str, + source_commit: str, +) -> dict[str, Any]: + schema, media = evidence.OBJECT_KIND_CONTRACTS[kind] + semantic = evidence.semantic_identity_digest( + kind=kind, + object_schema_version=schema, + object_value=value, + object_sha256=sha256_bytes(raw), + ) + issuer_fields = { + field: value["issuer"][field] for field in public_trust.ISSUER_FIELDS + } + statement = { + "schema_version": public_trust.STATEMENT_SCHEMA, + "object_kind": kind, + "object_schema_version": schema, + "object_media_type": media, + "object_sha256": sha256_bytes(raw), + "object_size_bytes": len(raw), + "semantic_identity_sha256": semantic, + "source_issuer": issuer_fields, + "signer_registry_sha256": registry_sha256, + "authority_state_sha256": authority_state_sha256, + "revocation_state_sha256": revocation_state_sha256, + "issued_at": ts(now), + "not_before": ts(now), + "expires_at": None, + "request_id_sha256": labeled(f"dsse-request:{kind}"), + "signing_authority": { + "repository": "OpenAdaptAI/.github", + "repository_id": "858454062", + "repository_owner_id": "132681217", + "workflow": public_trust.SOFTWARE_WORKFLOW_PATH, + "ref": "refs/heads/main", + "source_commit": source_commit, + "environment": public_trust.SOFTWARE_ENVIRONMENT, + "key_origin": "software", + }, + "key_id": signer["key_id"], + "signature_profile": public_trust.SOFTWARE_SIGNATURE_PROFILE, + } + public_trust.validate_statement_object_binding( + statement, + object_raw=raw, + object_value=value, + object_kind=kind, + object_schema_version=schema, + object_media_type=media, + semantic_identity_sha256=semantic, + expected_signer_registry_sha256=registry_sha256, + expected_authority_state_sha256=authority_state_sha256, + expected_revocation_state_sha256=revocation_state_sha256, + ) + return public_trust.sign_software_bundle( + statement, private_key=private_key, signer=signer, now=now + ) + + +def persist_object( + out: Path, kind: str, value: dict[str, Any] +) -> tuple[bytes, dict[str, Any]]: + raw = evidence.canonical(value) + b"\n" + path = out / object_rel(kind, sha256_bytes(raw)) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(raw) + write_json(out / f"{kind}.json", value) + return raw, make_entry(kind, raw, value) + + +def persist_bundle( + out: Path, kind: str, bundle: dict[str, Any], subject_sha256: str +) -> tuple[bytes, dict[str, Any]]: + raw = evidence.canonical(bundle) + b"\n" + bundle_kind = f"{kind}-sigstore-bundle" + path = out / object_rel(bundle_kind, sha256_bytes(raw)) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(raw) + write_json(out / f"{bundle_kind}.json", bundle) + return raw, make_entry(bundle_kind, raw, subject_sha256) + + +def flow_rulesets() -> list[dict[str, Any]]: + common = { + "schema_version": "openadapt.production-release-tag-ruleset/v1", + "repository": "OpenAdaptAI/openadapt-flow", + "repository_id": "1291376938", + "target": "tag", + "enforcement": "active", + "conditions": {"ref_name": {"include": ["refs/tags/v*"], "exclude": []}}, + } + return [ + { + **common, + "role": "creation_authority", + "ruleset_id": "10", + "name": "OpenAdapt policy: release tag creation", + "bypass_actors": [ + { + "actor_id": "4730708", + "actor_type": "Integration", + "bypass_mode": "always", + } + ], + "rules": [{"type": "creation"}], + }, + { + **common, + "role": "immutability", + "ruleset_id": "11", + "name": "OpenAdapt policy: immutable release tags", + "bypass_actors": [], + "rules": [ + {"type": "deletion"}, + {"type": "non_fast_forward"}, + { + "type": "update", + "parameters": {"update_allows_fetch_and_merge": False}, + }, + ], + }, + ] + + +def fetch_pypi_files(project: str, version: str) -> list[dict[str, Any]]: + url = f"https://pypi.org/pypi/{project}/{version}/json" + request = urllib.request.Request( + url, + headers={"User-Agent": "OpenAdapt-flow-134-local-candidate/1.0"}, + ) + with urllib.request.urlopen(request, timeout=30) as response: + payload = json.loads(response.read().decode("utf-8")) + files: list[dict[str, Any]] = [] + for item in payload["urls"]: + files.append( + { + "filename": item["filename"], + "packagetype": item["packagetype"], + "sha256": "sha256:" + item["digests"]["sha256"], + "size_bytes": item["size"], + "yanked": item["yanked"], + } + ) + return sorted(files, key=lambda item: (item["filename"], item["sha256"])) + + +def fetch_github_release(tag: str) -> dict[str, Any]: + raw = subprocess.check_output( + ["gh", "api", f"repos/OpenAdaptAI/openadapt-flow/releases/tags/{tag}"], + text=True, + ) + return json.loads(raw) + + +def observe_already_published_pypi_staging(*, observed_at: datetime) -> dict[str, Any]: + pypi_files = fetch_pypi_files(PYPI_PROJECT, FLOW_VERSION) + release = fetch_github_release(FLOW_TAG) + if release.get("draft") is not False or release.get("prerelease") is not False: + raise SystemExit("live GitHub release v1.34.0 is still a draft or prerelease") + author = release.get("author") or {} + if author.get("login") != "openadapt-release[bot]" or str(author.get("id")) != "321543906": + raise SystemExit("live GitHub release author is not the release App") + expected_pypi = { + WHEEL_NAME: ("sha256:" + WHEEL_SHA256, WHEEL_SIZE, "bdist_wheel"), + SDIST_NAME: ("sha256:" + SDIST_SHA256, SDIST_SIZE, "sdist"), + } + if {item["filename"] for item in pypi_files} != set(expected_pypi): + raise SystemExit("live PyPI files for 1.34.0 differ from the bound names") + for item in pypi_files: + digest, size, packagetype = expected_pypi[item["filename"]] + if ( + item["sha256"] != digest + or item["size_bytes"] != size + or item["packagetype"] != packagetype + or item["yanked"] is not False + ): + raise SystemExit( + f"live PyPI file {item['filename']} differs from the bound artifact" + ) + profile = trust.TARGET_CONTRACTS["flow"]["artifacts"] + assets: list[dict[str, Any]] = [] + for asset in release["assets"]: + name = asset["name"] + kind = KIND_BY_PACKAGETYPE.get( + expected_pypi[name][2] if name in expected_pypi else "" + ) + if kind is None: + raise SystemExit(f"live GitHub asset {name} is not a flow package file") + media_type, destinations = profile[kind] + digest = asset.get("digest") or expected_pypi[name][0] + if digest != expected_pypi[name][0] or asset["size"] != expected_pypi[name][1]: + raise SystemExit(f"live GitHub asset {name} digest or size differs from PyPI") + uploader = asset.get("uploader") or {} + assets.append( + { + "asset_id": str(asset["id"]), + "name": name, + "kind": kind, + "sha256": digest, + "size_bytes": asset["size"], + "media_type": media_type, + "publish_destinations": list(destinations), + "uploader_id": str(uploader.get("id")), + "uploader_login": uploader.get("login"), + } + ) + assets = sorted(assets, key=lambda item: (item["name"], item["asset_id"])) + immutable = {"enabled": True, "enforced_by_owner": False} + rulesets = flow_rulesets() + tag_ref_state = {"ref": f"refs/tags/{FLOW_TAG}", "exists": True} + staging = { + "schema_version": "openadapt.production-release-staging-evidence/v1", + "publication_mode": trust.PUBLICATION_MODE_ALREADY_PUBLISHED_PYPI, + "repository": "OpenAdaptAI/openadapt-flow", + "repository_id": "1291376938", + "draft_release_id": str(release["id"]), + "tag": FLOW_TAG, + "target_commitish": FLOW_SOURCE, + "draft": False, + "prerelease": False, + "release_app_id": "4730708", + "release_app_installation_id": "156835568", + "release_app_bot_user_id": "321543906", + "release_author_login": "openadapt-release[bot]", + "assets": assets, + "pypi_files": pypi_files, + "immutable_releases": immutable, + "immutable_releases_sha256": trust.digest_bytes( + trust.IMMUTABLE_RELEASES_DOMAIN, immutable + ), + "tag_rulesets": rulesets, + "tag_rulesets_sha256": trust.digest_bytes(trust.TAG_RULESETS_DOMAIN, rulesets), + "tag_ref_state": tag_ref_state, + "tag_ref_state_sha256": trust.digest_bytes( + trust.TAG_REF_STATE_DOMAIN, tag_ref_state + ), + "observed_at": ts(observed_at), + } + return trust.validate_staging(staging) + + +def unsigned_inventory() -> dict[str, Any]: + artifacts = [ + { + "name": SDIST_NAME, + "kind": "python-sdist", + "sha256": "sha256:" + SDIST_SHA256, + "size_bytes": SDIST_SIZE, + "media_type": "application/gzip", + "publish_destinations": ["github-release", "pypi"], + }, + { + "name": WHEEL_NAME, + "kind": "python-wheel", + "sha256": "sha256:" + WHEEL_SHA256, + "size_bytes": WHEEL_SIZE, + "media_type": "application/zip", + "publish_destinations": ["github-release", "pypi"], + }, + ] + artifacts = sorted( + artifacts, key=lambda item: (item["kind"], item["name"], item["sha256"]) + ) + inventory = { + "schema_version": "openadapt.production-release-artifact-inventory/v1", + "target": "flow", + "claim_scope": "production_flow", + "artifacts": artifacts, + } + return trust.validate_artifact_inventory(inventory) + + +def policy_file_digest(path: Path) -> str: + return sha256_bytes(path.read_bytes()) + + +def build_receipts( + out: Path, *, private_key: Any, now: datetime, policy_commit: str +) -> dict[str, Any]: + material = software.public_material(private_key) + if material["key_id"] != EXPECTED_INNER_KEY_ID: + raise SystemExit( + f"Keychain public key id is {material['key_id']}, not {EXPECTED_INNER_KEY_ID}" + ) + if material["public_key"] != EXPECTED_PUBLIC_KEY: + raise SystemExit("Keychain public key does not match the provisioned inner key") + write_json(out / "public-material.json", material) + + inner = make_inner(material) + outer = public_trust.software_public_signer(private_key.public_key()) + generated = now.replace(microsecond=0) + + unsigned_local = software.unsigned_local_registry_candidate( + public_material_value=material, revision=1 + ) + local_candidate = software.verify_local_registry_candidate( + software.sign_local_registry_candidate(unsigned_local, private_key=private_key) + ) + write_json(out / "signer-registry-local-candidate.json", local_candidate) + + timed_candidate = software.signer_registry_candidate( + public_material_value=material, + revision=1, + generated_at=generated, + expires_at=None, + ) + timed_candidate["proposed_registry"]["signers"] = [inner, outer] + timed_candidate["proposed_registry"] = evidence.validate_signer_registry( + timed_candidate["proposed_registry"] + ) + write_json(out / "signer-registry-candidate.json", timed_candidate) + + registry = { + "schema_version": "openadapt.qualification-signer-registry/v2", + "revision": 1, + "generated_at": ts(generated), + "expires_at": None, + "signers": [inner, outer], + } + registry = evidence.validate_signer_registry(registry) + registry_raw = write_json(out / "signer-registry.json", registry) + registry_raw_sha256 = sha256_bytes(registry_raw) + registry_identity = evidence.signer_registry_identity_digest(registry) + signer_path = out / signer_rel(registry_raw_sha256) + signer_path.parent.mkdir(parents=True, exist_ok=True) + signer_path.write_bytes(registry_raw) + + evidence_authority = labeled("evidence-authority") + authority = { + "schema_version": "openadapt.qualification-authority-state-receipt/v2", + "authority_state_sha256": labeled("placeholder-authority"), + "status": "active", + "signer_registry_sha256": registry_raw_sha256, + "signer_registry_identity_sha256": registry_identity, + "signer_registry_revision": 1, + "evidence_authority_sha256": evidence_authority, + "observed_at": ts(generated), + "not_before": ts(generated), + "expires_at": None, + "issuer_key_id": inner["key_id"], + "algorithm": "ed25519", + "signing_statement": None, + "signature": "", + "issuer": { + "repository": "OpenAdaptAI/openadapt-ops", + "repository_id": "1172011294", + "repository_owner_id": "132681217", + "workflow": ".github/workflows/qualification-authority-state.yml", + "ref": "refs/heads/main", + "source_commit": OPS_COMMIT, + "environment": "qualification-authority-state", + }, + } + projection = dict(authority) + projection.pop("authority_state_sha256") + projection.pop("signature") + projection.pop("signing_statement") + authority["authority_state_sha256"] = trust.digest_bytes( + trust.AUTHORITY_STATE_IDENTITY_DOMAIN, projection + ) + sign_embedded( + authority, + private_key, + schema="openadapt.qualification-authority-state-receipt/v2", + domain=trust.AUTHORITY_STATE_SIGNATURE_DOMAIN, + ) + trust.validate_authority_state(authority, now=now) + trust.verify_embedded_signature( + authority, + signer_registry=registry, + object_schema_version="openadapt.qualification-authority-state-receipt/v2", + signature_domain=trust.AUTHORITY_STATE_SIGNATURE_DOMAIN, + usage="qualification-authority-state-receipt", + now=now, + ) + + revocation = { + "schema_version": "openadapt.qualification-revocation-state-receipt/v1", + "revocation_state_sha256": labeled("placeholder-revocation"), + "previous_revocation_state_sha256": None, + "revision": 1, + "status": "current", + "authority_state_sha256": authority["authority_state_sha256"], + "signer_registry_sha256": registry_identity, + "revocations": [], + "observed_at": ts(generated), + "not_before": ts(generated), + "expires_at": None, + "issuer_key_id": inner["key_id"], + "algorithm": "ed25519", + "signing_statement": None, + "signature": "", + "issuer": { + "repository": "OpenAdaptAI/openadapt-ops", + "repository_id": "1172011294", + "repository_owner_id": "132681217", + "workflow": ".github/workflows/qualification-revocation-state.yml", + "ref": "refs/heads/main", + "source_commit": OPS_COMMIT, + "environment": "qualification-revocation-state", + }, + } + projection = dict(revocation) + projection.pop("revocation_state_sha256") + projection.pop("signature") + projection.pop("signing_statement") + revocation["revocation_state_sha256"] = trust.digest_bytes( + trust.REVOCATION_STATE_IDENTITY_DOMAIN, projection + ) + sign_embedded( + revocation, + private_key, + schema="openadapt.qualification-revocation-state-receipt/v1", + domain=trust.REVOCATION_STATE_SIGNATURE_DOMAIN, + ) + trust.validate_revocation_state(revocation, now=now) + trust.verify_embedded_signature( + revocation, + signer_registry=registry, + object_schema_version="openadapt.qualification-revocation-state-receipt/v1", + signature_domain=trust.REVOCATION_STATE_SIGNATURE_DOMAIN, + usage="qualification-revocation-state-receipt", + now=now, + ) + + summary = { + "schema_version": "openadapt.qualification-evidence-decision-campaign-summary/v1", + "minimum_trials_per_task_condition": 3, + "task_count": 1, + "classes": campaign_classes(), + } + unsigned_receipt = { + "schema_version": "openadapt.qualification-evidence-decision-receipt/v2", + "evidence_class": "remote-safe-synthetic", + "decision_identity_sha256": labeled("decision-series"), + "decision_revision": 1, + "decision_commitment_sha256": labeled("decision"), + "evidence_manifest_sha256": labeled("evidence-manifest"), + "evidence_manifest_readback_sha256": labeled("manifest-readback"), + "campaign_artifact_sha256": labeled("campaign-artifact"), + "organization_id_sha256": labeled("organization"), + "workflow_id_sha256": labeled("workflow"), + "workflow_version_id_sha256": labeled("workflow-version"), + "bundle_version": "0.0.0-synthetic", + "bundle_sha256": labeled("sealed-workflow-bundle"), + "admitted_runtime_sha256": "sha256:" + WHEEL_SHA256, + "application_contract_sha256": labeled("application-contract"), + "environment_contract_sha256": labeled("environment-contract"), + "input_contract_sha256": labeled("input-contract"), + "action_contract_sha256": labeled("action-contract"), + "identity_contract_sha256": labeled("identity-contract"), + "effect_contract_sha256": labeled("effect-contract"), + "policy_contract_sha256": labeled("policy-contract"), + "evidence_authority_contract_sha256": evidence_authority, + "campaign_permit_sha256": labeled("campaign-permit"), + "signer_registry_sha256": registry_identity, + "revocation_state_sha256": revocation["revocation_state_sha256"], + "entity_class": "record", + "campaign_summary": summary, + "verdict": "ADMIT", + "issued_at": ts(generated), + "not_before": ts(generated), + "expires_at": None, + "issuer_key_id": inner["key_id"], + "algorithm": "ed25519", + "signing_statement": None, + "signature": "", + "issuer": { + "repository": "OpenAdaptAI/.github", + "repository_id": "858454062", + "repository_owner_id": "132681217", + "workflow": ( + ".github/workflows/issue-synthetic-qualification-evidence-decision.yml" + ), + "ref": "refs/heads/main", + "source_commit": policy_commit, + "environment": "synthetic-qualification-evidence-decision", + }, + } + receipt = software.sign_receipt( + unsigned_receipt, private_key=private_key, signer_registry=registry + ) + trust.validate_receipt(receipt, signer_registry=registry, now=now) + + inventory = unsigned_inventory() + write_json(out / "artifact-inventory.json", inventory) + + objects: dict[str, tuple[str, dict[str, Any], bytes]] = {} + for kind, value in ( + ("qualification-authority-state-receipt", authority), + ("qualification-revocation-state-receipt", revocation), + ("qualification-evidence-decision-receipt", receipt), + ): + raw = evidence.canonical(value) + b"\n" + objects[kind] = (kind, value, raw) + + bundles: dict[str, dict[str, Any]] = {} + for kind, value, raw in objects.values(): + bundles[kind] = dsse_bundle( + private_key=private_key, + signer=outer, + kind=kind, + value=value, + raw=raw, + now=generated, + registry_sha256=value["signer_registry_sha256"], + authority_state_sha256=authority["authority_state_sha256"], + revocation_state_sha256=revocation["revocation_state_sha256"], + source_commit=policy_commit, + ) + + entries: list[dict[str, Any]] = [] + for kind, value, raw in objects.values(): + path = out / object_rel(kind, sha256_bytes(raw)) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(raw) + write_json(out / f"{kind}.json", value) + regular_entry = make_entry(kind, raw, value) + bundle = bundles[kind] + bundle_raw = evidence.canonical(bundle) + b"\n" + bundle_kind = f"{kind}-sigstore-bundle" + bundle_path = out / object_rel(bundle_kind, sha256_bytes(bundle_raw)) + bundle_path.parent.mkdir(parents=True, exist_ok=True) + bundle_path.write_bytes(bundle_raw) + write_json(out / f"{bundle_kind}.json", bundle) + bundle_entry = make_entry(bundle_kind, bundle_raw, sha256_bytes(raw)) + entries.append(regular_entry) + entries.append(bundle_entry) + + signer_pointer = { + "schema_version": evidence.SIGNER_POINTER_SCHEMA, + "object_path": signer_rel(registry_raw_sha256), + "object_sha256": registry_raw_sha256, + "registry_identity_sha256": registry_identity, + "registry_revision": 1, + } + local_registry = { + "$schema": "schemas/evidence-registry.schema.json", + "schema_version": evidence.REGISTRY_SCHEMA, + "repository": evidence.REPOSITORY, + "repository_id": evidence.REPOSITORY_ID, + "repository_owner_id": evidence.REPOSITORY_OWNER_ID, + "revision": 1, + "previous_registry_head_sha256": None, + "registry_head_sha256": "sha256:" + "0" * 64, + "signer_registry": signer_pointer, + "signer_registry_history": [signer_pointer], + "entries": entries, + } + local_registry["registry_head_sha256"] = evidence.registry_head_digest(local_registry) + evidence.validate_registry(local_registry, root=out) + write_json(out / "evidence-registry.json", local_registry) + + state = { + "generated_at": ts(generated), + "expires_at": None, + "registry_raw_sha256": registry_raw_sha256, + "registry_identity": registry_identity, + "registry_head_sha256": local_registry["registry_head_sha256"], + "registry_revision": 1, + "authority_state_sha256": authority["authority_state_sha256"], + "revocation_state_sha256": revocation["revocation_state_sha256"], + "inner_key_id": inner["key_id"], + "outer_key_id": outer["key_id"], + "campaign_label": "remote-safe-synthetic", + "mockmed_1_34_0_evals_set_is_this_summary": False, + "evals_production_acceptance": False, + "policy_commit": policy_commit, + "flow_source": FLOW_SOURCE, + "wheel_sha256": WHEEL_SHA256, + "sdist_sha256": SDIST_SHA256, + } + write_json(out / "phase1-state.json", state) + return state + + +def build_admissions( + out: Path, + *, + private_key: Any, + now: datetime, + registry_source_commit: str, + policy_commit: str, +) -> dict[str, Any]: + state = json.loads((out / "phase1-state.json").read_text(encoding="utf-8")) + registry = json.loads((out / "signer-registry.json").read_text(encoding="utf-8")) + authority = json.loads( + (out / "qualification-authority-state-receipt.json").read_text(encoding="utf-8") + ) + revocation = json.loads( + (out / "qualification-revocation-state-receipt.json").read_text(encoding="utf-8") + ) + receipt = json.loads( + (out / "qualification-evidence-decision-receipt.json").read_text(encoding="utf-8") + ) + local_registry = json.loads((out / "evidence-registry.json").read_text(encoding="utf-8")) + inventory = json.loads((out / "artifact-inventory.json").read_text(encoding="utf-8")) + head = local_registry["registry_head_sha256"] + revision = local_registry["revision"] + entries_by_kind = {entry["kind"]: entry for entry in local_registry["entries"]} + generated = now.replace(microsecond=0) + outer = public_trust.software_public_signer(private_key.public_key()) + + resolver = LocalResolver(registry) + resolver.authority = resolver.add( + "qualification-authority-state-receipt", + authority, + reference_from_entry( + entries_by_kind["qualification-authority-state-receipt"], + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ), + reference_from_entry( + entries_by_kind["qualification-authority-state-receipt-sigstore-bundle"], + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ), + ) + resolver.revocation = resolver.add( + "qualification-revocation-state-receipt", + revocation, + reference_from_entry( + entries_by_kind["qualification-revocation-state-receipt"], + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ), + reference_from_entry( + entries_by_kind["qualification-revocation-state-receipt-sigstore-bundle"], + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ), + ) + receipt_ref = reference_from_entry( + entries_by_kind["qualification-evidence-decision-receipt"], + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ) + receipt_bundle_ref = reference_from_entry( + entries_by_kind["qualification-evidence-decision-receipt-sigstore-bundle"], + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ) + resolver.add( + "qualification-evidence-decision-receipt", + receipt, + receipt_ref, + receipt_bundle_ref, + ) + + handle = request_handle() + request = { + "schema_version": "openadapt.qualification-admission-issue-request/v1", + "request_handle": handle, + "evidence_class": "remote-safe-synthetic", + "decision_receipt_reference": receipt_ref, + } + db_path = out / "one-use-effects.sqlite" + if db_path.exists(): + db_path.unlink() + consumer = issuer.SqliteOneUseConsumer(db_path) + admission = issuer.issue_workflow_admission( + request, + resolver=resolver, + issuer_source_commit=registry_source_commit, + now=now, + consumer=consumer, + ) + trust.validate_qualification_admission(admission, now=now) + effect = consumer.reconcile(request_handle=handle) + write_json(out / "workflow-issue-request.json", request) + write_json(out / "one-use-effect.json", effect) + admission_raw, admission_entry = persist_object( + out, "qualification-admission", admission + ) + admission_bundle = dsse_bundle( + private_key=private_key, + signer=outer, + kind="qualification-admission", + value=admission, + raw=admission_raw, + now=generated, + registry_sha256=admission["signer_registry_sha256"], + authority_state_sha256=authority["authority_state_sha256"], + revocation_state_sha256=revocation["revocation_state_sha256"], + source_commit=policy_commit, + ) + _, admission_bundle_entry = persist_bundle( + out, "qualification-admission", admission_bundle, sha256_bytes(admission_raw) + ) + admission_ref = reference_from_entry( + admission_entry, + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ) + admission_bundle_ref = reference_from_entry( + admission_bundle_entry, + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ) + resolver.add( + "qualification-admission", admission, admission_ref, admission_bundle_ref + ) + + staging = observe_already_published_pypi_staging(observed_at=generated) + write_json(out / "publication-staging.json", staging) + candidate = { + "schema_version": "openadapt.production-release-candidate/v1", + "kind": "package", + "source_repository": "OpenAdaptAI/openadapt-flow", + "source_repository_id": "1291376938", + "source_commit": FLOW_SOURCE, + "version": FLOW_VERSION, + "tag": FLOW_TAG, + "deployment_id": None, + "deployment_sha256": None, + "artifacts": inventory["artifacts"], + } + release_identity = { + "schema_version": "openadapt.monotonic-production-release/v1", + "channel": "production", + "sequence": 1, + "previous_admission_sha256": None, + } + release_sha256 = trust.digest_bytes( + trust.RELEASE_DOMAIN, + {"target": "flow", "claim_scope": "production_flow", "release": candidate}, + ) + inventory_sha256 = trust.artifact_inventory_digest(inventory) + acceptance_policy_sha256 = policy_file_digest(ROOT / "production-evidence-policy.json") + lifecycle_policy_sha256 = policy_file_digest(ROOT / "production-lifecycle-policy.json") + common = { + "target": "flow", + "verdict": "accepted", + "claim_scope": "production_flow", + "acceptance_policy_sha256": acceptance_policy_sha256, + "lifecycle_policy_sha256": lifecycle_policy_sha256, + "release_identity": release_identity, + "release_sha256": release_sha256, + "artifact_inventory_sha256": inventory_sha256, + "publication_staging": staging, + "publication_staging_sha256": trust.staging_digest(staging), + "qualification_evidence_decision_receipt_reference": receipt_ref, + "qualification_evidence_decision_receipt_bundle_reference": receipt_bundle_ref, + "qualification_admission_reference": admission_ref, + "qualification_admission_bundle_reference": admission_bundle_ref, + "campaign_summary": receipt["campaign_summary"]["classes"], + "authority_state_sha256": authority["authority_state_sha256"], + "revocation_state_sha256": revocation["revocation_state_sha256"], + "signer_registry_sha256": evidence.signer_registry_identity_digest(registry), + "issued_at": ts(generated), + "not_before": ts(generated), + "expires_at": None, + "issuer": { + "repository": "OpenAdaptAI/openadapt-evals", + "repository_id": "1135998197", + "repository_owner_id": "132681217", + "workflow": ".github/workflows/issue-production-acceptance.yml", + "ref": "refs/heads/main", + "source_commit": EVALS_COMMIT, + "environment": "production-acceptance", + }, + } + manifest = { + "schema_version": "openadapt.production-acceptance/v3", + **common, + "release": candidate, + "artifact_inventory": inventory, + } + trust.validate_acceptance_manifest( + manifest, + receipt=receipt, + qualification_admission=admission, + receipt_signer_registry=registry, + now=now, + ) + manifest_raw, manifest_entry = persist_object( + out, "production-acceptance-manifest", manifest + ) + manifest_bundle = dsse_bundle( + private_key=private_key, + signer=outer, + kind="production-acceptance-manifest", + value=manifest, + raw=manifest_raw, + now=generated, + registry_sha256=manifest["signer_registry_sha256"], + authority_state_sha256=authority["authority_state_sha256"], + revocation_state_sha256=revocation["revocation_state_sha256"], + source_commit=policy_commit, + ) + _, manifest_bundle_entry = persist_bundle( + out, + "production-acceptance-manifest", + manifest_bundle, + sha256_bytes(manifest_raw), + ) + manifest_ref = reference_from_entry( + manifest_entry, + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ) + manifest_bundle_ref = reference_from_entry( + manifest_bundle_entry, + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ) + resolver.add( + "production-acceptance-manifest", + manifest, + manifest_ref, + manifest_bundle_ref, + ) + + summary = { + "schema_version": "openadapt.production-lifecycle-evidence-summary/v3", + **common, + "evidence_identity_sha256": labeled("placeholder-evidence-identity"), + "production_acceptance_manifest_reference": manifest_ref, + "production_acceptance_manifest_bundle_reference": manifest_bundle_ref, + } + summary["evidence_identity_sha256"] = trust.acceptance_summary_identity(summary) + trust.validate_acceptance_summary( + summary, + manifest=manifest, + receipt=receipt, + qualification_admission=admission, + receipt_signer_registry=registry, + now=now, + ) + summary_raw, summary_entry = persist_object( + out, "production-acceptance-summary", summary + ) + summary_bundle = dsse_bundle( + private_key=private_key, + signer=outer, + kind="production-acceptance-summary", + value=summary, + raw=summary_raw, + now=generated, + registry_sha256=summary["signer_registry_sha256"], + authority_state_sha256=authority["authority_state_sha256"], + revocation_state_sha256=revocation["revocation_state_sha256"], + source_commit=policy_commit, + ) + _, summary_bundle_entry = persist_bundle( + out, + "production-acceptance-summary", + summary_bundle, + sha256_bytes(summary_raw), + ) + summary_ref = reference_from_entry( + summary_entry, + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ) + summary_bundle_ref = reference_from_entry( + summary_bundle_entry, + registry_source_commit=registry_source_commit, + registry_revision=revision, + registry_head_sha256=head, + ) + resolver.add( + "production-acceptance-summary", summary, summary_ref, summary_bundle_ref + ) + + release_handle = request_handle() + release_request = { + "schema_version": "openadapt.qualification-release-issue-request/v1", + "request_handle": release_handle, + "evidence_class": "remote-safe-synthetic", + "production_acceptance_summary_reference": summary_ref, + } + release = issuer.issue_release_admission( + release_request, + resolver=resolver, + issuer_source_commit=registry_source_commit, + now=now, + consumer=consumer, + ) + trust.validate_release_evidence_chain( + release, + summary=summary, + manifest=manifest, + receipt=receipt, + qualification_admission=admission, + receipt_signer_registry=registry, + now=now, + ) + write_json(out / "release-issue-request.json", release_request) + release_raw, _release_entry = persist_object(out, "qualification-release", release) + release_bundle = dsse_bundle( + private_key=private_key, + signer=outer, + kind="qualification-release", + value=release, + raw=release_raw, + now=generated, + registry_sha256=release["signer_registry_sha256"], + authority_state_sha256=authority["authority_state_sha256"], + revocation_state_sha256=revocation["revocation_state_sha256"], + source_commit=policy_commit, + ) + persist_bundle( + out, "qualification-release", release_bundle, sha256_bytes(release_raw) + ) + write_json( + out / "one-use-effect-release.json", + consumer.reconcile(request_handle=release_handle), + ) + return { + "workflow_admission_id_sha256": admission["admission_id_sha256"], + "release_admission_id_sha256": release["admission_id_sha256"], + "release_sha256": release["release_sha256"], + "publication_staging_sha256": release["publication_staging_sha256"], + "publication_mode": staging["publication_mode"], + "draft": staging["draft"], + "tag_exists": staging["tag_ref_state"]["exists"], + "github_release_id": staging["draft_release_id"], + "pypi_files": staging["pypi_files"], + "expires_at": release["expires_at"], + "registry_source_commit": registry_source_commit, + "evals_production_acceptance": False, + "mockmed_1_34_0_evals_set_is_this_summary": False, + **state, + } + + +def write_build_record(out: Path, extra: dict[str, Any]) -> None: + state_path = out / "phase1-state.json" + state = json.loads(state_path.read_text(encoding="utf-8")) if state_path.exists() else {} + record = { + "schema_version": "openadapt.local-flow-134-admission-build-record/v1", + "target": "flow", + "flow_version": FLOW_VERSION, + "flow_tag": FLOW_TAG, + "flow_source": FLOW_SOURCE, + "evidence_class": "remote-safe-synthetic", + "campaign": { + "label": "remote-safe-synthetic", + "task_count": 1, + "cells_per_class": 1, + "trials_per_cell": 3, + "classes": list(trust.CAMPAIGN_CLASSES), + "mockmed_1_34_0_evals_set_is_this_summary": False, + }, + "evals_production_acceptance": False, + "keychain_service": software.KEYCHAIN_SERVICE, + "inner_key_id": EXPECTED_INNER_KEY_ID, + "did_not_generate_key": True, + "did_not_fake_draft_as_openadapt_release_bot": True, + **state, + **extra, + } + write_json(out / "build-record.json", record) + + +def main(argv: list[str] | None = None) -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--out", default=str(HERE)) + parser.add_argument("--policy-commit", required=True) + parser.add_argument("--registry-source-commit", required=True) + args = parser.parse_args(argv) + out = Path(args.out).resolve() + out.mkdir(parents=True, exist_ok=True) + now = datetime.now(timezone.utc) + private_key = software.load_private_key_from_sources( + pem_file=None, use_keychain=True, use_env=False + ) + material = software.public_material(private_key) + if material["key_id"] != EXPECTED_INNER_KEY_ID: + print( + f"REFUSED: Keychain key id {material['key_id']} != {EXPECTED_INNER_KEY_ID}", + file=sys.stderr, + ) + return 1 + build_receipts( + out, + private_key=private_key, + now=now, + policy_commit=args.policy_commit, + ) + try: + extra = build_admissions( + out, + private_key=private_key, + now=now, + registry_source_commit=args.registry_source_commit, + policy_commit=args.policy_commit, + ) + except trust.TrustError as exc: + write_build_record( + out, + { + "phase": "staging-blocked", + "release_admission_issued": False, + "validate_staging_error": str(exc), + }, + ) + print(json.dumps({"phase": "staging-blocked", "error": str(exc)}, sort_keys=True)) + return 1 + write_build_record( + out, + { + "phase": "release-admission", + "release_admission_issued": True, + "acceptance_manifest_issued": True, + "acceptance_summary_issued": True, + **extra, + }, + ) + print( + json.dumps( + { + "phase": "release-admission", + "publication_mode": extra["publication_mode"], + "tag_exists": extra["tag_exists"], + "draft": extra["draft"], + "release_admission_id_sha256": extra["release_admission_id_sha256"], + "expires_at": extra["expires_at"], + "evals_production_acceptance": False, + }, + sort_keys=True, + ) + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/release-issue-request.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/release-issue-request.json new file mode 100644 index 0000000..36712b9 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/release-issue-request.json @@ -0,0 +1 @@ +{"evidence_class":"remote-safe-synthetic","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},"request_handle":"qair_A-aMXGcPZkNKE7CbnMEIDSofWrO0wAKZDMIz_QhpWHN","schema_version":"openadapt.qualification-release-issue-request/v1"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/signer-registry-candidate.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/signer-registry-candidate.json new file mode 100644 index 0000000..ee2c1f6 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/signer-registry-candidate.json @@ -0,0 +1 @@ +{"activation_state":"not-installed","custody":["github-environment-secret","local-keychain-backup"],"interface_sha256":"sha256:dc90a5e7addd213f2fe5044beaa13e5e2eda143020ca8b59e3a5b0abf61192a8","proposed_registry":{"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"}]},"schema_version":"openadapt.qualification-signer-registry-candidate/v1"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/signer-registry-local-candidate.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/signer-registry-local-candidate.json new file mode 100644 index 0000000..a90845e --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/signer-registry-local-candidate.json @@ -0,0 +1 @@ +{"activation_state":"not-installed","clock":"unset","custody":["github-environment-secret","local-keychain-backup"],"interface_sha256":"sha256:dc90a5e7addd213f2fe5044beaa13e5e2eda143020ca8b59e3a5b0abf61192a8","public_trust_signer":{"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"},"qualification_signer":{"algorithm":"ed25519","allowed_ref_prefixes":["refs/heads/main"],"allowed_usages":["qualification-evidence-decision-receipt"],"allowed_workflows":["https://github.com/OpenAdaptAI/.github/.github/workflows/issue-synthetic-qualification-evidence-decision.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"},"revision":1,"schema_version":"openadapt.qualification-signer-registry-local-candidate/v1","signature":"QKJ9/iHdfBRqbflCgIa6s84lMbyBO+mtP9AUus9c9jjO+G0+R/xi/nzOHZVqGf9VXWHLIZ61gmF9yj6uDwS6Bw==","signature_key_id":"qa-ed25519-9cf4bca214c01d79"} diff --git a/local-candidates/flow-1.34.0-remote-safe-synthetic/signer-registry.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/signer-registry.json new file mode 100644 index 0000000..72a5ba1 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/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/local-candidates/flow-1.34.0-remote-safe-synthetic/workflow-issue-request.json b/local-candidates/flow-1.34.0-remote-safe-synthetic/workflow-issue-request.json new file mode 100644 index 0000000..239cb85 --- /dev/null +++ b/local-candidates/flow-1.34.0-remote-safe-synthetic/workflow-issue-request.json @@ -0,0 +1 @@ +{"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},"evidence_class":"remote-safe-synthetic","request_handle":"qair_RmVqt6OgAzt7MKwoxwOaebxcy0co-Xop9NqvT09wneO","schema_version":"openadapt.qualification-admission-issue-request/v1"} diff --git a/schemas/qualification-release.schema.json b/schemas/qualification-release.schema.json index 7e37430..2ff360b 100644 --- a/schemas/qualification-release.schema.json +++ b/schemas/qualification-release.schema.json @@ -232,31 +232,57 @@ }} ] }, + "pypi_file": { + "type": "object", + "additionalProperties": false, + "required": ["filename", "packagetype", "sha256", "size_bytes", "yanked"], + "properties": { + "filename": {"type": "string", "pattern": "^[^/\\\\]+$", "minLength": 1, "maxLength": 255}, + "packagetype": {"enum": ["sdist", "bdist_wheel"]}, + "sha256": {"$ref": "#/$defs/digest"}, + "size_bytes": {"type": "integer", "minimum": 1}, + "yanked": {"const": false} + } + }, "publication_staging": { "type": "object", "additionalProperties": false, "required": [ - "schema_version", "repository", "repository_id", "draft_release_id", "tag", - "target_commitish", "draft", "prerelease", "release_app_id", - "release_app_installation_id", "release_app_bot_user_id", "release_author_login", - "assets", "immutable_releases", "immutable_releases_sha256", - "tag_rulesets", "tag_rulesets_sha256", "tag_ref_state", - "tag_ref_state_sha256", "observed_at" + "schema_version", "publication_mode", "repository", "repository_id", + "draft_release_id", "tag", "target_commitish", "draft", "prerelease", + "release_app_id", "release_app_installation_id", "release_app_bot_user_id", + "release_author_login", "assets", "pypi_files", "immutable_releases", + "immutable_releases_sha256", "tag_rulesets", "tag_rulesets_sha256", + "tag_ref_state", "tag_ref_state_sha256", "observed_at" ], "properties": { "schema_version": {"const": "openadapt.production-release-staging-evidence/v1"}, + "publication_mode": { + "enum": ["draft-before-tag", "already-published-pypi"] + }, "repository": {"type": "string", "pattern": "^OpenAdaptAI/[A-Za-z0-9._-]+$"}, "repository_id": {"$ref": "#/$defs/decimal_id"}, "draft_release_id": {"$ref": "#/$defs/decimal_id"}, "tag": {"type": "string", "minLength": 1, "maxLength": 120}, "target_commitish": {"$ref": "#/$defs/commit"}, - "draft": {"const": true}, + "draft": {"type": "boolean"}, "prerelease": {"const": false}, "release_app_id": {"const": "4730708"}, "release_app_installation_id": {"const": "156835568"}, "release_app_bot_user_id": {"const": "321543906"}, "release_author_login": {"const": "openadapt-release[bot]"}, "assets": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"$ref": "#/$defs/staged_asset"}}, + "pypi_files": { + "oneOf": [ + {"type": "null"}, + { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": {"$ref": "#/$defs/pypi_file"} + } + ] + }, "immutable_releases": { "type": "object", "additionalProperties": false, @@ -284,12 +310,49 @@ "required": ["ref", "exists"], "properties": { "ref": {"type": "string", "pattern": "^refs/tags/v[^/]+$"}, - "exists": {"const": false} + "exists": {"type": "boolean"} } }, "tag_ref_state_sha256": {"$ref": "#/$defs/digest"}, "observed_at": {"$ref": "#/$defs/timestamp"} - } + }, + "allOf": [ + { + "if": { + "properties": {"publication_mode": {"const": "draft-before-tag"}}, + "required": ["publication_mode"] + }, + "then": { + "properties": { + "draft": {"const": true}, + "pypi_files": {"type": "null"}, + "tag_ref_state": { + "properties": {"exists": {"const": false}} + } + } + } + }, + { + "if": { + "properties": {"publication_mode": {"const": "already-published-pypi"}}, + "required": ["publication_mode"] + }, + "then": { + "properties": { + "draft": {"const": false}, + "pypi_files": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": {"$ref": "#/$defs/pypi_file"} + }, + "tag_ref_state": { + "properties": {"exists": {"const": true}} + } + } + } + } + ] }, "summary_reference": { "allOf": [ diff --git a/scripts/production_trust.py b/scripts/production_trust.py index d3bcc1a..f4288a7 100644 --- a/scripts/production_trust.py +++ b/scripts/production_trust.py @@ -190,6 +190,36 @@ TAG_RULESETS_DOMAIN = b"OpenAdapt production release tag rulesets v1\0" IMMUTABLE_RELEASES_DOMAIN = b"OpenAdapt production immutable releases response v1\0" TAG_REF_STATE_DOMAIN = b"OpenAdapt production release tag ref state v1\0" +PUBLICATION_MODE_DRAFT_BEFORE_TAG = "draft-before-tag" +PUBLICATION_MODE_ALREADY_PUBLISHED_PYPI = "already-published-pypi" +PYPI_PACKAGETYPES = { + "python-sdist": "sdist", + "python-wheel": "bdist_wheel", +} +STAGING_FIELDS = { + "schema_version", + "publication_mode", + "repository", + "repository_id", + "draft_release_id", + "tag", + "target_commitish", + "draft", + "prerelease", + "release_app_id", + "release_app_installation_id", + "release_app_bot_user_id", + "release_author_login", + "assets", + "pypi_files", + "immutable_releases", + "immutable_releases_sha256", + "tag_rulesets", + "tag_rulesets_sha256", + "tag_ref_state", + "tag_ref_state_sha256", + "observed_at", +} PUBLICATION_RECOVERY_AUTHORIZATION_DOMAIN = ( b"OpenAdapt production publication recovery authorization v2\0" ) @@ -647,33 +677,83 @@ def validate_tag_rulesets( return value +def pypi_files_from_assets(assets: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]: + files: list[dict[str, Any]] = [] + for asset in assets: + destinations = asset.get("publish_destinations") + if not isinstance(destinations, list) or "pypi" not in destinations: + continue + kind = asset.get("kind") + packagetype = PYPI_PACKAGETYPES.get(kind) if isinstance(kind, str) else None + if packagetype is None: + raise TrustError(f"{kind} cannot publish to PyPI") + files.append( + { + "filename": asset["name"], + "packagetype": packagetype, + "sha256": asset["sha256"], + "size_bytes": asset["size_bytes"], + "yanked": False, + } + ) + return sorted(files, key=lambda item: (item["filename"], item["sha256"])) + + +def validate_pypi_files( + value: Any, assets: Sequence[Mapping[str, Any]] +) -> list[dict[str, Any]]: + if not isinstance(value, list) or not value: + raise TrustError("already-published-pypi staging requires observed PyPI files") + files: list[dict[str, Any]] = [] + names: set[str] = set() + for index, item_value in enumerate(value): + item = closed( + item_value, + {"filename", "packagetype", "sha256", "size_bytes", "yanked"}, + f"pypi file {index}", + ) + filename = item["filename"] + if ( + not isinstance(filename, str) + or not filename + or filename != Path(filename).name + or "/" in filename + or "\\" in filename + ): + raise TrustError(f"pypi file {index} name is unsafe") + if filename in names: + raise TrustError("pypi file names must be unique") + names.add(filename) + if item["packagetype"] not in {"sdist", "bdist_wheel"}: + raise TrustError(f"pypi file {index} packagetype is invalid") + require_digest(item["sha256"], f"pypi file {index} digest") + require_positive_int(item["size_bytes"], f"pypi file {index} size") + if item["yanked"] is not False: + raise TrustError("yanked PyPI files cannot admit a release") + files.append(item) + if files != sorted(files, key=lambda item: (item["filename"], item["sha256"])): + raise TrustError("pypi files must be sorted") + expected = pypi_files_from_assets(assets) + if not expected: + raise TrustError("already-published-pypi staging requires pypi-destination artifacts") + if files != expected: + raise TrustError("observed PyPI files differ from pypi-destination artifacts") + return files + + def validate_staging(value: Any) -> dict[str, Any]: - staging = closed( - value, - { - "schema_version", - "repository", - "repository_id", - "draft_release_id", - "tag", - "target_commitish", - "draft", - "prerelease", - "release_app_id", - "release_app_installation_id", - "release_app_bot_user_id", - "release_author_login", - "assets", - "immutable_releases", - "immutable_releases_sha256", - "tag_rulesets", - "tag_rulesets_sha256", - "tag_ref_state", - "tag_ref_state_sha256", - "observed_at", - }, - "publication staging", - ) + staging = closed(value, STAGING_FIELDS, "publication staging") + mode = staging["publication_mode"] + if mode == PUBLICATION_MODE_DRAFT_BEFORE_TAG: + tag_exists = False + draft_required = True + if staging["pypi_files"] is not None: + raise TrustError("draft-before-tag staging must not include PyPI files") + elif mode == PUBLICATION_MODE_ALREADY_PUBLISHED_PYPI: + tag_exists = True + draft_required = False + else: + raise TrustError("publication staging mode is not supported") if staging["schema_version"] != "openadapt.production-release-staging-evidence/v1": raise TrustError("publication staging schema is not supported") for field in ( @@ -685,7 +765,7 @@ def validate_staging(value: Any) -> dict[str, Any]: ): require_decimal_id(staging[field], f"publication staging {field}") if ( - staging["draft"] is not True + staging["draft"] is not draft_required or staging["prerelease"] is not False or staging["release_app_id"] != "4730708" or staging["release_app_installation_id"] != "156835568" @@ -707,7 +787,15 @@ def validate_staging(value: Any) -> dict[str, Any]: ): raise TrustError("immutable releases response digest is invalid") tag_ref_state = closed(staging["tag_ref_state"], {"ref", "exists"}, "tag ref state") - if tag_ref_state != {"ref": f"refs/tags/{staging['tag']}", "exists": False}: + expected_tag_ref_state = { + "ref": f"refs/tags/{staging['tag']}", + "exists": tag_exists, + } + if tag_ref_state != expected_tag_ref_state: + if mode == PUBLICATION_MODE_ALREADY_PUBLISHED_PYPI: + raise TrustError( + "already-published-pypi staging requires the release tag to exist" + ) raise TrustError("release tag must not exist when the draft is staged") if staging["tag_ref_state_sha256"] != digest_bytes( TAG_REF_STATE_DOMAIN, tag_ref_state @@ -768,6 +856,8 @@ def validate_staging(value: Any) -> dict[str, Any]: ids.add(asset["asset_id"]) if assets != sorted(assets, key=lambda item: (item["name"], item["asset_id"])): raise TrustError("staged assets must be sorted") + if mode == PUBLICATION_MODE_ALREADY_PUBLISHED_PYPI: + validate_pypi_files(staging["pypi_files"], assets) validate_tag_rulesets( staging["tag_rulesets"], repository=staging["repository"], diff --git a/tests/fixtures/remote-safe-synthetic-flow-release-verification.json b/tests/fixtures/remote-safe-synthetic-flow-release-verification.json index f1f3ca1..ec1cf1d 100644 --- a/tests/fixtures/remote-safe-synthetic-flow-release-verification.json +++ b/tests/fixtures/remote-safe-synthetic-flow-release-verification.json @@ -1,9 +1,9 @@ { - "acceptance_manifest_object_sha256": "sha256:de4fca1e28bfc8bea778c6ab13d848206d32360c867bd8c4279dab124b9ea746", - "acceptance_summary_object_sha256": "sha256:a8f9ebd9107f35474d91996f07c0d6773a2807d8780499f5668b30639aa30d3e", - "admission_bundle_object_sha256": "sha256:9845c58b1fa0d1e57aaf4ed8526074b100bc051dfc3bed39da949aa0d2888956", - "admission_id_sha256": "sha256:2945099a7918a259f70bb4b393b76f877f0b8914083004a498dbe52d871fed10", - "admission_object_sha256": "sha256:9a71052032d5e4f573eaf6939f73133a64659a2985b36361498e8338b3ea6a5d", + "acceptance_manifest_object_sha256": "sha256:8527aef029e134510c93230547c97a922338d43fb1c9791f638b1e235e0bb92e", + "acceptance_summary_object_sha256": "sha256:75ccc37ca41f072174a9b639fbd565890cc58ca239efa7eabfe4d9ef4933941b", + "admission_bundle_object_sha256": "sha256:4a447b61400e23ea403cffb5a02e421cbe070c225ebf7b3af9b9e2acaae40c27", + "admission_id_sha256": "sha256:09dd21c3fe1cd8df71b4642cb1b828af551a6ebe7ca9d6d8f2949f14d33af2b6", + "admission_object_sha256": "sha256:56907ca56db4db3be11e4a4c283f2848e7cc00331fe33ab2c12a3a28a4da3061", "admitted_runtime_sha256": "sha256:2efa8ff4176c9f108b5325693593ebafbb1949be95c9516b4341f6b0ca1bb707", "artifact_inventory_sha256": "sha256:9222ec0d9352666efd2d5a5210a2e3125270a19d48c2983b80a14c0c3e318e79", "authority_state_sha256": "sha256:2d46fdb4ce1f61d869a1372cc5ea3f6ea360447a59b0ead3e322bca5afa1dfb8", @@ -12,7 +12,7 @@ "draft_release_id": "20", "evidence_class": "remote-safe-synthetic", "expires_at": "2026-09-03T12:00:00Z", - "publication_staging_sha256": "sha256:e4e763ab68e809f3d668ca5c86d9bab72ddfaee2af7b1b8c9819e3128029b64f", + "publication_staging_sha256": "sha256:f214d9b3dcc0d6615efcd7d8f15792c34ef967e1f7024f395eb15f0833ebdf24", "qualification_admission_id_sha256": "sha256:ce6754aacb52b3c35e81fc1a076195adf0a162ecdacf838cfe1e7649d5664102", "qualification_admission_object_sha256": "sha256:2169ccd36de0dd72e4533e35cb918af7c833baaa9ceb6edb3be35a0d708f9b06", "registry_head_sha256": "sha256:54998095cc9bc282a25e90b15f12f7135942c29c065bb0ad4e90315a4451cd56", @@ -35,7 +35,7 @@ "target": "flow", "trust_state_source_commit": "2222222222222222222222222222222222222222", "verdict": "verified", - "verification_id_sha256": "sha256:6e9a1c5bd7812f9870e9826eea24a4ced48bc02710af96a5bea980aad9b34295", + "verification_id_sha256": "sha256:50539886c5f1cc0749896cbafb783260faeac44cad8cf03c310ce9229d773400", "verified_at": "2026-08-27T12:00:00Z", "version": "1.35.0", "workflow_bundle_sha256": "sha256:069b4455df8b54f4f0b741d87ade877e79714fcec7ac5cdfd3235326382a8ab1", diff --git a/tests/test_production_trust.py b/tests/test_production_trust.py index be906bc..30399c1 100644 --- a/tests/test_production_trust.py +++ b/tests/test_production_trust.py @@ -287,6 +287,7 @@ def release_admission() -> dict: normalized_rulesets = rulesets() staging = { "schema_version": "openadapt.production-release-staging-evidence/v1", + "publication_mode": "draft-before-tag", "repository": "OpenAdaptAI/openadapt-capture", "repository_id": "1115283835", "draft_release_id": "20", @@ -314,6 +315,7 @@ def release_admission() -> dict: sorted(artifacts, key=lambda item: item["name"]) ) ], + "pypi_files": None, "immutable_releases": {"enabled": True, "enforced_by_owner": False}, "immutable_releases_sha256": trust.digest_bytes( trust.IMMUTABLE_RELEASES_DOMAIN, @@ -402,6 +404,36 @@ def release_admission() -> dict: return value +def refresh_release_admission(value: dict) -> dict: + staging = value["publication_staging"] + staging["immutable_releases_sha256"] = trust.digest_bytes( + trust.IMMUTABLE_RELEASES_DOMAIN, staging["immutable_releases"] + ) + staging["tag_rulesets_sha256"] = trust.digest_bytes( + trust.TAG_RULESETS_DOMAIN, staging["tag_rulesets"] + ) + staging["tag_ref_state_sha256"] = trust.digest_bytes( + trust.TAG_REF_STATE_DOMAIN, staging["tag_ref_state"] + ) + value["publication_staging_sha256"] = trust.staging_digest(staging) + projection = dict(value) + projection.pop("admission_id_sha256") + value["admission_id_sha256"] = trust.digest_bytes( + trust.RELEASE_ADMISSION_DOMAIN, projection + ) + return value + + +def already_published_pypi_release_admission() -> dict: + value = release_admission() + staging = value["publication_staging"] + staging["publication_mode"] = trust.PUBLICATION_MODE_ALREADY_PUBLISHED_PYPI + staging["draft"] = False + staging["tag_ref_state"]["exists"] = True + staging["pypi_files"] = trust.pypi_files_from_assets(staging["assets"]) + return refresh_release_admission(value) + + def cloud_handoff() -> dict: authorization, authorization_bundle = pair( "production-cloud-deploy-authorization", "a", "b" @@ -929,6 +961,67 @@ def test_release_binds_exact_draft_assets_and_two_rulesets(self) -> None: with self.assertRaisesRegex(trust.TrustError, "bypass"): trust.validate_release(invalid) + def test_already_published_pypi_allows_existing_tag_without_a_draft(self) -> None: + value = already_published_pypi_release_admission() + staging = value["publication_staging"] + self.assertEqual(staging["publication_mode"], "already-published-pypi") + self.assertFalse(staging["draft"]) + self.assertTrue(staging["tag_ref_state"]["exists"]) + self.assertEqual( + [item["filename"] for item in staging["pypi_files"]], + [ + "openadapt_capture-1.0.0-py3-none-any.whl", + "openadapt_capture-1.0.0.tar.gz", + ], + ) + self.assertEqual(trust.validate_release(value), value) + + def test_already_published_pypi_requires_pypi_sha256s_to_match_artifacts( + self, + ) -> None: + value = already_published_pypi_release_admission() + value["publication_staging"]["pypi_files"][0]["sha256"] = sha("9") + refresh_release_admission(value) + with self.assertRaisesRegex(trust.TrustError, "observed PyPI files differ"): + trust.validate_release(value) + + def test_draft_before_tag_still_refuses_an_existing_tag_or_published_release( + self, + ) -> None: + existing_tag = release_admission() + existing_tag["publication_staging"]["tag_ref_state"]["exists"] = True + refresh_release_admission(existing_tag) + with self.assertRaisesRegex(trust.TrustError, "must not exist"): + trust.validate_release(existing_tag) + published = release_admission() + published["publication_staging"]["draft"] = False + refresh_release_admission(published) + with self.assertRaisesRegex( + trust.TrustError, "publication staging authority or state differs" + ): + trust.validate_release(published) + with_pypi = release_admission() + with_pypi["publication_staging"]["pypi_files"] = trust.pypi_files_from_assets( + with_pypi["publication_staging"]["assets"] + ) + refresh_release_admission(with_pypi) + with self.assertRaisesRegex(trust.TrustError, "must not include PyPI files"): + trust.validate_release(with_pypi) + + def test_already_published_pypi_refuses_a_draft_or_missing_tag(self) -> None: + draft = already_published_pypi_release_admission() + draft["publication_staging"]["draft"] = True + refresh_release_admission(draft) + with self.assertRaisesRegex( + trust.TrustError, "publication staging authority or state differs" + ): + trust.validate_release(draft) + missing_tag = already_published_pypi_release_admission() + missing_tag["publication_staging"]["tag_ref_state"]["exists"] = False + refresh_release_admission(missing_tag) + with self.assertRaisesRegex(trust.TrustError, "requires the release tag"): + trust.validate_release(missing_tag) + def test_release_refuses_noncanonical_or_output_injecting_package_identity( self, ) -> None: diff --git a/tests/test_public_trust_schemas.py b/tests/test_public_trust_schemas.py index caad072..02ccf71 100644 --- a/tests/test_public_trust_schemas.py +++ b/tests/test_public_trust_schemas.py @@ -885,6 +885,16 @@ def test_release_artifacts_bind_publish_destinations(self) -> None: ], 2, ) + self.assertEqual( + schema["$defs"]["publication_staging"]["properties"]["publication_mode"][ + "enum" + ], + ["draft-before-tag", "already-published-pypi"], + ) + self.assertIn( + "publication_mode", + schema["$defs"]["publication_staging"]["required"], + ) def test_verification_policy_keeps_sigstore_and_freezes_future_kms_profile( self, diff --git a/tests/test_qualification_issuer.py b/tests/test_qualification_issuer.py index 6810d15..28b0bbb 100644 --- a/tests/test_qualification_issuer.py +++ b/tests/test_qualification_issuer.py @@ -585,6 +585,7 @@ def flow_release_inputs( ] staging = { "schema_version": "openadapt.production-release-staging-evidence/v1", + "publication_mode": "draft-before-tag", "repository": "OpenAdaptAI/openadapt-flow", "repository_id": "1291376938", "draft_release_id": "20", @@ -607,6 +608,7 @@ def flow_release_inputs( sorted(artifacts, key=lambda item: item["name"]) ) ], + "pypi_files": None, "immutable_releases": {"enabled": True, "enforced_by_owner": False}, "immutable_releases_sha256": trust.digest_bytes( trust.IMMUTABLE_RELEASES_DOMAIN, diff --git a/tests/test_support_release_and_recovery_contracts.py b/tests/test_support_release_and_recovery_contracts.py index eadce2d..9b0e210 100644 --- a/tests/test_support_release_and_recovery_contracts.py +++ b/tests/test_support_release_and_recovery_contracts.py @@ -208,6 +208,7 @@ def support_admission() -> dict: ] staging = { "schema_version": "openadapt.production-release-staging-evidence/v1", + "publication_mode": "draft-before-tag", "repository": "OpenAdaptAI/openadapt-tray", "repository_id": "1136122737", "draft_release_id": "20", @@ -220,6 +221,7 @@ def support_admission() -> dict: "release_app_bot_user_id": "321543906", "release_author_login": "openadapt-release[bot]", "assets": staged_assets, + "pypi_files": None, "immutable_releases": {"enabled": True, "enforced_by_owner": False}, "immutable_releases_sha256": sha("placeholder"), "tag_rulesets": tag_rulesets(),