diff --git a/.github/agent-policy-channels.json b/.github/agent-policy-channels.json index fee7da4..9414214 100644 --- a/.github/agent-policy-channels.json +++ b/.github/agent-policy-channels.json @@ -1,63 +1,25 @@ { "assignments": {}, "channels": { - "rollback": { + "stable": { "artifact": "ghcr.io/happyvertical/agent-policy@sha256:0a00ee6409da980809cb2037beb690dfed22f6657465d8af15a1c42ac165a2fb", "generation": 15, "policy_revision": "1.0.0", "schema": "hv-agent-policy-lock:v1", "source_commit": "6a565d68e1ae921888098b687ca3b9ababe8d038", "source_tree_sha256": "20055307d27993826db191910a5be241fabfd723c58dd81e9c099563d9dc1295" - }, - "stable": { - "artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", - "generation": 16, - "policy_revision": "1.0.0", - "schema": "hv-agent-policy-lock:v1", - "source_commit": "a129dcfc2bbe96958483199ac552cb13a9523413", - "source_tree_sha256": "94c5e3bdfe6c6e2a0adbe4b3024ce78f4976ace010a79fa09fbf0f8f446d78bc" } }, "default_channel": "stable", - "promotion": { - "canary_evidence_sha256": "e3a09da0da37cf0782fb988c9cd2d8787ed9bda52db5ed42e2aa35d4ae86ba84", - "canary_repository_ids": [ - "R_kgDOQ09NVg", - "R_kgDOQDruXg" - ], - "candidate": { - "artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", - "generation": 16, - "policy_revision": "1.0.0", - "schema": "hv-agent-policy-lock:v1", - "source_commit": "a129dcfc2bbe96958483199ac552cb13a9523413", - "source_tree_sha256": "94c5e3bdfe6c6e2a0adbe4b3024ce78f4976ace010a79fa09fbf0f8f446d78bc" - }, - "phase": "smoke", - "previous_stable": { - "artifact": "ghcr.io/happyvertical/agent-policy@sha256:0a00ee6409da980809cb2037beb690dfed22f6657465d8af15a1c42ac165a2fb", - "generation": 15, - "policy_revision": "1.0.0", - "schema": "hv-agent-policy-lock:v1", - "source_commit": "6a565d68e1ae921888098b687ca3b9ababe8d038", - "source_tree_sha256": "20055307d27993826db191910a5be241fabfd723c58dd81e9c099563d9dc1295" - }, - "smoke_repository_ids": [ - "R_kgDOOtHtPA", - "R_kgDOQ09NVg", - "R_kgDOQDruXg", - "R_kgDOQmZF0A", - "R_kgDOQmZFRQ" - ] - }, - "revision": 14, + "promotion": null, + "revision": 15, "schema": "hv-agent-policy-channels:v1", "transition": { - "action": "promote", - "artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", - "evidence_sha256": "e3a09da0da37cf0782fb988c9cd2d8787ed9bda52db5ed42e2aa35d4ae86ba84", - "from_revision": 13, - "previous_artifact": "ghcr.io/happyvertical/agent-policy@sha256:0a00ee6409da980809cb2037beb690dfed22f6657465d8af15a1c42ac165a2fb", - "to_revision": 14 + "action": "rollback", + "artifact": "ghcr.io/happyvertical/agent-policy@sha256:0a00ee6409da980809cb2037beb690dfed22f6657465d8af15a1c42ac165a2fb", + "evidence_sha256": "c48a6048ea4c6485070951a271e24574e643b7d75f2cf1e2145fdc84a7ee133d", + "from_revision": 14, + "previous_artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", + "to_revision": 15 } } diff --git a/.github/agent-policy-evidence/revision-15.bundle b/.github/agent-policy-evidence/revision-15.bundle new file mode 100644 index 0000000..2c3f8c7 --- /dev/null +++ b/.github/agent-policy-evidence/revision-15.bundle @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHVDCCBtugAwIBAgIURPbemQIm1Hb4NN2hryL7axUDkPEwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzI4MTM1ODA5WhcNMjYwNzI4MTQwODA5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvaW6yr4l5HzlzfYcslcTmqcKuBVXA6j5Y6S9SNd/HQ8hegZUERQDmULZwO5Cxf9CadUIe4XfdQnok/+45ffYJKOCBfowggX2MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUX3BvS2Mt3WVOcWNCwDm8QYLgXzIwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wcQYDVR0RAQH/BGcwZYZjaHR0cHM6Ly9naXRodWIuY29tL2hhcHB5dmVydGljYWwvLmdpdGh1Yi8uZ2l0aHViL3dvcmtmbG93cy9hZ2VudC1wb2xpY3ktcm9sbG91dC55bWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wIQYKKwYBBAGDvzABAgQTcmVwb3NpdG9yeV9kaXNwYXRjaDA2BgorBgEEAYO/MAEDBCg1ZGQ4MDExYjRmZTg1YmRkMTdkMTZlYmE4ZDE4MTY4NDIyZWMzYTQzMCIGCisGAQQBg78wAQQEFEFnZW50IFBvbGljeSBSb2xsb3V0MCMGCisGAQQBg78wAQUEFWhhcHB5dmVydGljYWwvLmdpdGh1YjAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMHMGCisGAQQBg78wAQkEZQxjaHR0cHM6Ly9naXRodWIuY29tL2hhcHB5dmVydGljYWwvLmdpdGh1Yi8uZ2l0aHViL3dvcmtmbG93cy9hZ2VudC1wb2xpY3ktcm9sbG91dC55bWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWRkODAxMWI0ZmU4NWJkZDE3ZDE2ZWJhOGQxODE2ODQyMmVjM2E0MzAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwOAYKKwYBBAGDvzABDAQqDChodHRwczovL2dpdGh1Yi5jb20vaGFwcHl2ZXJ0aWNhbC8uZ2l0aHViMDgGCisGAQQBg78wAQ0EKgwoNWRkODAxMWI0ZmU4NWJkZDE3ZDE2ZWJhOGQxODE2ODQyMmVjM2E0MzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjExMjkyNzA2MTQwMAYKKwYBBAGDvzABEAQiDCBodHRwczovL2dpdGh1Yi5jb20vaGFwcHl2ZXJ0aWNhbDAZBgorBgEEAYO/MAERBAsMCTEzMTQ4MDczNDBzBgorBgEEAYO/MAESBGUMY2h0dHBzOi8vZ2l0aHViLmNvbS9oYXBweXZlcnRpY2FsLy5naXRodWIvLmdpdGh1Yi93b3JrZmxvd3MvYWdlbnQtcG9saWN5LXJvbGxvdXQueW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVkZDgwMTFiNGZlODViZGQxN2QxNmViYThkMTgxNjg0MjJlYzNhNDMwIwYKKwYBBAGDvzABFAQVDBNyZXBvc2l0b3J5X2Rpc3BhdGNoMFwGCisGAQQBg78wARUETgxMaHR0cHM6Ly9naXRodWIuY29tL2hhcHB5dmVydGljYWwvLmdpdGh1Yi9hY3Rpb25zL3J1bnMvMzAzNjU3NTE2MDgvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzA+BgorBgEEAYO/MAEYBDAMLnJlcG86aGFwcHl2ZXJ0aWNhbC8uZ2l0aHViOnJlZjpyZWZzL2hlYWRzL21haW4wgYoGCisGAQQB1nkCBAIEfAR6AHgAdgDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAZ+pBMHBAAAEAwBHMEUCIQDeLYxoilbI2TsKmxgHYj6pvBGQOXVd0oBbMISotX7GygIgangE8wkTlQpTbL+WwIwGF9L+xlUqV/23teeH2eXBA80wCgYIKoZIzj0EAwMDZwAwZAIwWkZvVaxShazCMu3lTcmOioqQXpwrEImYebIlt0I5FjTRkNx3DcD3fsDT6ARXG2xuAjBYb+XhVq35ATzcBztxCW/21usJaT6M0YNHU96PJIy1h1u+jEMIPCaTCMroY2iixEQ="}, "tlogEntries":[{"logIndex":"2272681724", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1785247090", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQDsdC8ZsmrFZI9krecT3FNt7QFJZAzGPQjOCWvqGWgqlgIhAJs5f/K+zJCglOvw7AuD76wGe7Wk0dwdbjMnu0FZ8Ta2"}, "inclusionProof":{"logIndex":"2150777462", "rootHash":"G83ykF12EP+2FerQKQL2f4dyJQzsyfBabxjixqlMkAI=", "treeSize":"2150777591", "hashes":["mQkTOItxFdCo2L3ovCD3HiOB3lvFND0eJtwu4x3dV9U=", "SnjsMDZUNMD5p8HulkLHZbMJo0O+ekKGm9cpDH5SHPY=", "IB+kpCVoOdMUJ1OS9IQqWV1FUUnsjdF9FTMMUAcotS8=", "80RkQ2woXkUlngDaOiivkRufoSOQ6Ds/HFkQly1xq5I=", "wW+7AyZ6xbvD+UmfLhrebyEI/T3aNQtr8a4BjPIwlEI=", "Mcud41P5ahJ3QwNUlTa6O4tSWNssF5B5pqKEomyVaZw=", "+O/IlinVZD7lohj5L7neGxuJNbUdq0Tkpq2CCeM2rHY=", "SuW6epQI0fDRGcYgKs4fgEsq3GXoP+9bITm9nl8qNOc=", "mIXjSHdc+e0TQnQn7b4JMbbYKzSI/hVSVlo+LaWdtzU=", "CWWe7UHB0sfwnjaIxypFl8SOkHXNSiF6Pi0tGIlRbM0=", "eajL3Dn2pqpYYY6uWdKYjO+d5R53UPgrOMR8bG9AHzo=", "+y2KDjyJa2I45aBzk4OGlhCUNDIz7jP+JsavWAENXHc=", "6U/DFMYF6zqForDwR42B3tjamfuW+bfpNdkXBGnpxkQ=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2150777591\nG83ykF12EP+2FerQKQL2f4dyJQzsyfBabxjixqlMkAI=\n\n— rekor.sigstore.dev wNI9ajBEAiBdak1wIIb9IUxakjNK1A37SLFNkaLdWuN/0SsvCgOMZQIgapMR3e5FBkmpujJipxEMGxYO9Pg1ErQ2FhrliKJtW7M=\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzZTVjMzRjYjc5NTA4MjU2NWVlNzU1YzJiN2ZjNWMwZDJiMWQ4N2I2YTY4NTYwYWQ1MzVkN2M5OTZkMjU5OTNlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUURnZXNvai9mSG5kZ3lxekdrWDBKSFdnSE4xcjF6NnpsdzU4K0hQTXhHY0d3SWdib3Jwc1JaU1FQa0V2U2tGSEZOdncyT3JDYjkrUzI5YlN0QU5YSnZIakg4PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFdSRU5EUW5SMVowRjNTVUpCWjBsVlVsQmlaVzFSU1cweFNHSTBUazR5YUhKNVREZGhlRlZFYTFCRmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2U1RSTlZFMHhUMFJCTlZkb1kwNU5hbGwzVG5wSk5FMVVVWGRQUkVFMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVYyWVZjMmVYSTBiRFZJZW14NlpsbGpjMnhqVkcxeFkwdDFRbFpZUVRacU5WazJVemtLVTA1a0wwaFJPR2hsWjFwVlJWSlJSRzFWVEZwM1R6VkRlR1k1UTJGa1ZVbGxORmhtWkZGdWIyc3ZLelExWm1aWlNrdFBRMEptYjNkbloxZ3lUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZZTTBKMkNsTXlUWFF6VjFaUFkxZE9RM2RFYlRoUldVeG5XSHBKZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJOUldVUldVakJTUVZGSUwwSkhZM2RhV1ZwcVlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb2FHTklRalZrYlZaNVpFZHNhZ3BaVjNkMlRHMWtjR1JIYURGWmFUaDFXakpzTUdGSVZtbE1NMlIyWTIxMGJXSkhPVE5qZVRsb1dqSldkV1JETVhkaU1uaHdXVE5yZEdOdE9YTmlSemt4Q21SRE5UVmlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzUVZGRlJVc3lhREJrU0VKNlQyazRkbVJIT1hJS1dsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhkSlVWbExTM2RaUWtKQlIwUjJla0ZDUVdkUlZBcGpiVlozWWpOT2NHUkhPWGxsVmpscllWaE9kMWxZVW1waFJFRXlRbWR2Y2tKblJVVkJXVTh2VFVGRlJFSkRaekZhUjFFMFRVUkZlRmxxVW0xYVZHY3hDbGx0VW10TlZHUnJUVlJhYkZsdFJUUmFSRVUwVFZSWk5FNUVTWGxhVjAxNldWUlJlazFEU1VkRGFYTkhRVkZSUW1jM09IZEJVVkZGUmtWR2JscFhOVEFLU1VaQ2RtSkhiR3BsVTBKVFlqSjRjMkl6VmpCTlEwMUhRMmx6UjBGUlVVSm5OemgzUVZGVlJVWlhhR2hqU0VJMVpHMVdlV1JIYkdwWlYzZDJURzFrY0Fwa1IyZ3hXV3BCWkVKbmIzSkNaMFZGUVZsUEwwMUJSVWRDUVRsNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBkMWxMUzNkWlFrSkJSMFIyZWtGQ0NrTkJVWFJFUTNSdlpFaFNkMk42YjNaTU0xSjJZVEpXZFV4dFJtcGtSMngyWW01TmRWb3liREJoU0ZacFpGaE9iR050VG5aaWJsSnNZbTVSZFZreU9YUUtUVWhOUjBOcGMwZEJVVkZDWnpjNGQwRlJhMFZhVVhocVlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb2FHTklRalZrYlZaNVpFZHNhZ3BaVjNkMlRHMWtjR1JIYURGWmFUaDFXakpzTUdGSVZtbE1NMlIyWTIxMGJXSkhPVE5qZVRsb1dqSldkV1JETVhkaU1uaHdXVE5yZEdOdE9YTmlSemt4Q21SRE5UVmlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHZEhRMmx6UjBGUlVVSm5OemgzUVZGdlJVdG5kMjlPVjFKclQwUkJlRTFYU1RBS1dtMVZORTVYU210YVJFVXpXa1JGTWxwWFNtaFBSMUY0VDBSRk1rOUVVWGxOYlZacVRUSkZNRTE2UVdSQ1oyOXlRbWRGUlVGWlR5OU5RVVZNUWtFNFRRcEVWMlJ3WkVkb01WbHBNVzlpTTA0d1dsZFJkMDlCV1V0TGQxbENRa0ZIUkhaNlFVSkVRVkZ4UkVOb2IyUklVbmRqZW05MlRESmtjR1JIYURGWmFUVnFDbUl5TUhaaFIwWjNZMGhzTWxwWVNqQmhWMDVvWWtNNGRWb3liREJoU0ZacFRVUm5SME5wYzBkQlVWRkNaemM0ZDBGUk1FVkxaM2R2VGxkU2EwOUVRWGdLVFZkSk1GcHRWVFJPVjBwcldrUkZNMXBFUlRKYVYwcG9UMGRSZUU5RVJUSlBSRkY1VFcxV2FrMHlSVEJOZWtGbVFtZHZja0puUlVWQldVOHZUVUZGVHdwQ1FrVk5SRE5LYkZwdVRYWmhSMVpvV2toTmRtSlhSbkJpYWtGaFFtZHZja0puUlVWQldVOHZUVUZGVUVKQmQwMURha1Y0VFdwcmVVNTZRVEpOVkZGM0NrMUJXVXRMZDFsQ1FrRkhSSFo2UVVKRlFWRnBSRU5DYjJSSVVuZGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZIUm5kalNHd3lXbGhLTUdGWFRtZ0tZa1JCV2tKbmIzSkNaMFZGUVZsUEwwMUJSVkpDUVhOTlExUkZlazFVVVRSTlJHTjZUa1JDZWtKbmIzSkNaMFZGUVZsUEwwMUJSVk5DUjFWTldUSm9NQXBrU0VKNlQyazRkbG95YkRCaFNGWnBURzFPZG1KVE9XOVpXRUozWlZoYWJHTnVVbkJaTWtaelRIazFibUZZVW05a1YwbDJURzFrY0dSSGFERlphVGt6Q21JelNuSmFiWGgyWkROTmRsbFhaR3hpYmxGMFkwYzVjMkZYVGpWTVdFcDJZa2Q0ZG1SWVVYVmxWekZ6VVVoS2JGcHVUWFpoUjFab1draE5kbUpYUm5BS1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2ExcEVaM2ROVkVacFRrZGFiRTlFVm1sYVIxRjRUakpSZUU1dFZtbFpWR2hyVFZSbmVBcE9hbWN3VFdwS2JGbDZUbWhPUkUxM1NYZFpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWWkVRazU1V2xoQ2RtTXliREJpTTBvMVdESlNjR016UW1oa1IwNXZDazFHZDBkRGFYTkhRVkZSUW1jM09IZEJVbFZGVkdkNFRXRklVakJqU0UwMlRIazVibUZZVW05a1YwbDFXVEk1ZEV3eWFHaGpTRUkxWkcxV2VXUkhiR29LV1ZkM2RreHRaSEJrUjJneFdXazVhRmt6VW5CaU1qVjZURE5LTVdKdVRYWk5la0Y2VG1wVk0wNVVSVEpOUkdkMldWaFNNRnBYTVhka1NFMTJUVlJCVndwQ1oyOXlRbWRGUlVGWlR5OU5RVVZYUWtGblRVSnVRakZaYlhod1dYcEJLMEpuYjNKQ1owVkZRVmxQTDAxQlJWbENSRUZOVEc1S2JHTkhPRFpoUjBaM0NtTkliREphV0Vvd1lWZE9hR0pET0hWYU1td3dZVWhXYVU5dVNteGFhbkI1V2xkYWVrd3lhR3haVjFKNlRESXhhR0ZYTkhkbldXOUhRMmx6UjBGUlVVSUtNVzVyUTBKQlNVVm1RVkkyUVVoblFXUm5SR1JRVkVKeGVITmpVazF0VFZwSWFIbGFXbnBqUTI5cmNHVjFUalE0Y21ZclNHbHVTMEZNZVc1MWFtZEJRUXBCV2l0d1FrMUlRa0ZCUVVWQmQwSklUVVZWUTBsUlJHVk1XWGh2YVd4aVNUSlVjMHR0ZUdkSVdXbzJjSFpDUjFGUFdGWmtNRzlDWWsxSlUyOTBXRGRIQ25sblNXZGhibWRGT0hkclZHeFJjRlJpVEN0WGQwbDNSMFk1VEN0NGJGVnhWaTh5TTNSbFpVZ3laVmhDUVRnd2QwTm5XVWxMYjFwSmVtb3dSVUYzVFVRS1duZEJkMXBCU1hkWGExcDJWbUY0VTJoaGVrTk5kVE5zVkdOdFQybHZjVkZZY0hkeVJVbHRXV1ZpU1d4ME1FazFSbXBVVW10T2VETkVZMFF6Wm5ORVZBbzJRVkpZUnpKNGRVRnFRbGxpSzFob1ZuRXpOVUZVZW1OQ2VuUjRRMWN2TWpGMWMwcGhWRFpOTUZsT1NGVTVObEJLU1hreGFERjFLMnBGVFVsUVEyRlVDa05OY205Wk1tbHBlRVZSUFFvdExTMHRMVVZPUkNCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2c9PSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQglhkVoYJqA5No+knI7Zt1w3TBC+IAQpC0qJlWTJf3aTMCFQDO9zewMMaKFH+ZvCsJPLgHtsCCWxgPMjAyNjA3MjgxMzU4MDlaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDcyODEzNTgwOVowLwYJKoZIhvcNAQkEMSIEICn1Os/MeWYJlbM6axRMNKqoeMHmgn7BB9tgkwIU/vZDMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMDQHpf25s8vkPr6CeLW2RGz+AQkuA8BzlVm2Z9tzXOqYTgY2piQXwIVvIKRCY6/B1gIxAKlfZ1iz2IaEfkA5rit/kG2v2vJLcPEFsQME9D5RmVddf/EWtuOb14D8cADYfcromg=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"Plw0y3lQglZe51XCt/xcDSsdh7amhWCtU118mW0lmT4="}, "signature":"MEUCIQDgesoj/fHndgyqzGkX0JHWgHN1r1z6zlw58+HPMxGcGwIgborpsRZSQPkEvSkFHFNvw2OrCb9+S29bStANXJvHjH8="}} \ No newline at end of file diff --git a/.github/agent-policy-evidence/revision-15.json b/.github/agent-policy-evidence/revision-15.json new file mode 100644 index 0000000..e74d530 --- /dev/null +++ b/.github/agent-policy-evidence/revision-15.json @@ -0,0 +1,65 @@ +{ + "artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", + "errors": [], + "generation": 16, + "phase": "smoke", + "results": [ + { + "conclusion": "success", + "default_branch": "main", + "head_oid": "9ff8e4f76eb7809bf11b76de6fc8d237eb04848a", + "repository_id": "R_kgDOOtHtPA", + "run_id": 30365766333, + "selected_artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", + "selected_channel": "stable", + "started_at": "2026-07-28T13:55:00Z", + "workflow_path": ".github/workflows/agent-policy.yml" + }, + { + "conclusion": "success", + "default_branch": "main", + "head_oid": "5dd8011b4fe85bdd17d16eba8d18168422ec3a43", + "repository_id": "R_kgDOQ09NVg", + "run_id": 30365819757, + "selected_artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", + "selected_channel": "stable", + "started_at": "2026-07-28T13:55:37Z", + "workflow_path": ".github/workflows/agent-policy.yml" + }, + { + "conclusion": "success", + "default_branch": "main", + "head_oid": "36d48d9c6a761fedf5cd509412de1d716bb9e70c", + "repository_id": "R_kgDOQDruXg", + "run_id": 30365883635, + "selected_artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", + "selected_channel": "stable", + "started_at": "2026-07-28T13:56:24Z", + "workflow_path": ".github/workflows/agent-policy.yml" + }, + { + "conclusion": "failure", + "default_branch": "main", + "head_oid": "b63189b095f3b1b840f0cd004c7e11fac8ac9152", + "repository_id": "R_kgDOQmZF0A", + "run_id": 30365919444, + "selected_artifact": null, + "selected_channel": null, + "started_at": "2026-07-28T13:56:51Z", + "workflow_path": ".github/workflows/agent-policy.yml" + }, + { + "conclusion": "failure", + "default_branch": "main", + "head_oid": "89361180126ff3b3b30a42b3bd4e11fc566af1c9", + "repository_id": "R_kgDOQmZFRQ", + "run_id": 30365980413, + "selected_artifact": null, + "selected_channel": null, + "started_at": "2026-07-28T13:57:35Z", + "workflow_path": ".github/workflows/agent-policy.yml" + } + ], + "schema": "hv-agent-policy-channel-evidence:v1", + "state_revision": 14 +} diff --git a/.github/agent-policy-lock.json b/.github/agent-policy-lock.json index 24e68d4..ea4e6a5 100644 --- a/.github/agent-policy-lock.json +++ b/.github/agent-policy-lock.json @@ -1,8 +1,8 @@ { - "artifact": "ghcr.io/happyvertical/agent-policy@sha256:78e729c396768f7e5675c676caff46706b7067a6674c2e409a475a06cf6e4dda", - "generation": 16, + "artifact": "ghcr.io/happyvertical/agent-policy@sha256:0a00ee6409da980809cb2037beb690dfed22f6657465d8af15a1c42ac165a2fb", + "generation": 15, "policy_revision": "1.0.0", "schema": "hv-agent-policy-lock:v1", - "source_commit": "a129dcfc2bbe96958483199ac552cb13a9523413", - "source_tree_sha256": "94c5e3bdfe6c6e2a0adbe4b3024ce78f4976ace010a79fa09fbf0f8f446d78bc" + "source_commit": "6a565d68e1ae921888098b687ca3b9ababe8d038", + "source_tree_sha256": "20055307d27993826db191910a5be241fabfd723c58dd81e9c099563d9dc1295" } diff --git a/.github/workflows/agent-policy.yml b/.github/workflows/agent-policy.yml index 01c07ed..b8186e1 100644 --- a/.github/workflows/agent-policy.yml +++ b/.github/workflows/agent-policy.yml @@ -127,15 +127,11 @@ jobs: if test "$channels_active" = true; then if test "$TARGET_REPOSITORY_NUMERIC_ID" = 1129270614 \ && test "$EVENT_NAME" != workflow_dispatch; then - # Explicit fail-closed form. The equivalent `test A && test B || { - # ...; }` reads as if-then-else but is not one, and ShellCheck - # rejects it as SC2015 in consumers that lint this byte-canonical - # workflow (happyvertical/.github#66). - if ! test -f .github/agent-policy-channels.json \ - || ! test -f .github/agent-policy-lock.json; then + test -f .github/agent-policy-channels.json \ + && test -f .github/agent-policy-lock.json || { echo 'central policy channels cannot be removed after bootstrap' >&2 exit 1 - fi + } fi candidate=() if test "$TARGET_REPOSITORY_NUMERIC_ID" = 1129270614 \