diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/archive-map.json b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/archive-map.json new file mode 100644 index 0000000..f82343c --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/archive-map.json @@ -0,0 +1,655 @@ +{ + "scheme": "exact content-addressed dedup; each130 originalpath maps losslessly to its unchanged originalbytes", + "files": [ + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/mapping.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785", + "sha256": "e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f", + "sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f", + "sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c", + "sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-review.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349", + "sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/mapping.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e", + "sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_initial_dispatch.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a", + "sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/published-evidence-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290", + "sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd", + "sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf", + "sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae", + "sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e", + "sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a", + "sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/final-agreement-probes.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa", + "sha256": "d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/final481-changes-requested-review.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a", + "sha256": "faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/independent_final_probes.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43", + "sha256": "c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43" + }, + { + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/unissued-final-technical-draft.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f", + "sha256": "be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f" + }, + { + "original_path": "intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6", + "sha256": "8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6" + } + ] +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5 new file mode 100644 index 0000000..ff52810 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5 @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:43:42.851086+00:00", + "native_changed": false, + "protected_database_read": false, + "secret_read": false, + "deployment_generation": 25, + "ready_replicas": 1, + "sealed_live_deployment": { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "annotations": { + "argocd.argoproj.io/tracking-id": "informed-decision:apps/Deployment:informed-decision/informed-decision", + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover" + }, + "name": "informed-decision", + "namespace": "informed-decision", + "uid": "a588e10a-90d2-4883-975e-6dd8b8feca92" + }, + "spec": { + "progressDeadlineSeconds": 600, + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "strategy": { + "type": "Recreate" + }, + "template": { + "metadata": { + "annotations": { + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover" + }, + "labels": { + "app.kubernetes.io/component": "review", + "app.kubernetes.io/name": "informed-decision" + } + }, + "spec": { + "automountServiceAccountToken": false, + "containers": [ + { + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "name": "informed-decision", + "ports": [ + { + "containerPort": 8080, + "name": "http", + "protocol": "TCP" + }, + { + "containerPort": 8081, + "name": "workload", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "256Mi" + }, + "requests": { + "cpu": "5m", + "memory": "64Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "startupProbe": { + "failureThreshold": 12, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/data", + "name": "data" + }, + { + "mountPath": "/run/informed-decision", + "name": "runtime" + }, + { + "mountPath": "/tmp", + "name": "tmp" + }, + { + "mountPath": "/configuration", + "name": "configuration", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/policy", + "name": "caller", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/audit", + "name": "audit", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "name": "kubernetes-api", + "readOnly": true + }, + { + "mountPath": "/workload-registry", + "name": "workload-registry", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/requester", + "name": "sitting-requester", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "runAsGroup": 10001, + "runAsNonRoot": true, + "runAsUser": 10001, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "review", + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + }, + "name": "runtime" + }, + { + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + }, + "name": "tmp" + }, + { + "configMap": { + "defaultMode": 292, + "name": "informed-decision-runtime-6c221878d051" + }, + "name": "configuration" + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "audience": "flex-auth", + "expirationSeconds": 3600, + "path": "token" + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ], + "secretName": "informed-decision-audit" + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 600, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + } + ] + } + }, + { + "configMap": { + "defaultMode": 292, + "name": "informed-decision-workload-registry" + }, + "name": "workload-registry" + }, + { + "name": "sitting-requester", + "secret": { + "defaultMode": 288, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ], + "optional": false, + "secretName": "informed-decision-sitting-requester" + } + } + ] + } + } + } + }, + "candidate_deployment": { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "annotations": { + "argocd.argoproj.io/tracking-id": "informed-decision:apps/Deployment:informed-decision/informed-decision", + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover" + }, + "name": "informed-decision", + "namespace": "informed-decision", + "uid": "a588e10a-90d2-4883-975e-6dd8b8feca92" + }, + "spec": { + "progressDeadlineSeconds": 600, + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "strategy": { + "type": "Recreate" + }, + "template": { + "metadata": { + "annotations": { + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover" + }, + "labels": { + "app.kubernetes.io/component": "review", + "app.kubernetes.io/name": "informed-decision" + } + }, + "spec": { + "automountServiceAccountToken": false, + "containers": [ + { + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "name": "informed-decision", + "ports": [ + { + "containerPort": 8080, + "name": "http", + "protocol": "TCP" + }, + { + "containerPort": 8081, + "name": "workload", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "256Mi" + }, + "requests": { + "cpu": "5m", + "memory": "64Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "startupProbe": { + "failureThreshold": 12, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/data", + "name": "data" + }, + { + "mountPath": "/run/informed-decision", + "name": "runtime" + }, + { + "mountPath": "/tmp", + "name": "tmp" + }, + { + "mountPath": "/configuration", + "name": "configuration", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/policy", + "name": "caller", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/audit", + "name": "audit", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "name": "kubernetes-api", + "readOnly": true + }, + { + "mountPath": "/workload-registry", + "name": "workload-registry", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/requester", + "name": "sitting-requester", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "runAsGroup": 10001, + "runAsNonRoot": true, + "runAsUser": 10001, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "review", + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + }, + "name": "runtime" + }, + { + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + }, + "name": "tmp" + }, + { + "configMap": { + "defaultMode": 292, + "name": "informed-decision-runtime-6c221878d051" + }, + "name": "configuration" + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "audience": "flex-auth", + "expirationSeconds": 3600, + "path": "token" + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ], + "secretName": "informed-decision-audit" + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 600, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + } + ] + } + }, + { + "configMap": { + "defaultMode": 292, + "name": "informed-decision-workload-registry" + }, + "name": "workload-registry" + }, + { + "name": "sitting-requester", + "secret": { + "defaultMode": 288, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ], + "optional": false, + "secretName": "informed-decision-sitting-requester" + } + } + ] + } + } + } + }, + "sealed_dependencies": { + "configmap": { + "apiVersion": "v1", + "immutable": true, + "kind": "ConfigMap", + "metadata": { + "annotations": { + "argocd.argoproj.io/tracking-id": "informed-decision:/ConfigMap:informed-decision/informed-decision-runtime-6c221878d051", + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover" + }, + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "uid": "90113d2d-54d9-4e82-b1d3-90b49ebed2b5" + }, + "canonical_data_sha256": "8ec462d12347548f506eeebf1e3c7cc47648019c8a783804d09bcc79b0f22af6" + }, + "pvc": { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "argocd.argoproj.io/tracking-id": "informed-decision:/PersistentVolumeClaim:informed-decision/informed-decision-data", + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "rancher.io/local-path", + "volume.kubernetes.io/selected-node": "239.62.205.92.host.secureserver.net", + "volume.kubernetes.io/storage-provisioner": "rancher.io/local-path" + }, + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "name": "informed-decision-data", + "namespace": "informed-decision", + "uid": "d80b25b1-141a-441b-b205-98fa2fd98b7c" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "storageClassName": "local-path", + "volumeMode": "Filesystem", + "volumeName": "pvc-d80b25b1-141a-441b-b205-98fa2fd98b7c" + } + }, + "pvc_phase": "Bound" + }, + "argo": { + "uid": "499868f2-eabc-4df4-ae31-b89ce58d750d", + "source": { + "path": "deploy/lifecycle", + "repoURL": "https://forgejo.coulomb.social/coulomb/informed-decision.git", + "targetRevision": "c96b0c6d881e855d1d158003c6de90ef390262e2" + }, + "destination": { + "namespace": "informed-decision", + "server": "https://kubernetes.default.svc" + }, + "automated": false, + "health": { + "lastTransitionTime": "2026-10-11T07:00:42Z", + "status": "Healthy" + }, + "sync": { + "comparedTo": { + "destination": { + "namespace": "informed-decision", + "server": "https://kubernetes.default.svc" + }, + "source": { + "path": "deploy/lifecycle", + "repoURL": "https://forgejo.coulomb.social/coulomb/informed-decision.git", + "targetRevision": "c96b0c6d881e855d1d158003c6de90ef390262e2" + } + }, + "revision": "c96b0c6d881e855d1d158003c6de90ef390262e2", + "status": "OutOfSync" + } + }, + "server_dry_run_passed": true, + "admission_only_image_delta": true, + "client_diff_exit": 0, + "client_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0 new file mode 100644 index 0000000..2a0b2c8 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0 @@ -0,0 +1,150 @@ +"""Supervised receipt bookkeeping, not an authenticated approval provider.""" +import datetime +import fcntl +import hashlib +import json +import os +import re +from pathlib import Path +import stat +import uuid + +FOUNDER = {'kind': 'person', 'sub': 'uid=platform-root,ou=people,dc=netkingdom,dc=local'} +MEMO_ID = 'infd-20261011-zlib-remediation-r1' +PROPOSAL = 'INFD-WP-0009-T05/zlib85091-r1' +PHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline', + 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify') + + +def require(value, reason): + if not value: + raise ValueError(reason) + + +def sha(path): + digest = hashlib.sha256() + with Path(path).open('rb') as stream: + for block in iter(lambda: stream.read(1024**2), b''): + digest.update(block) + return digest.hexdigest() + + +def private(path, directory=False): + info = Path(path).lstat() + require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode)) + and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600) + and (directory or info.st_nlink == 1), 'private owned custody required') + + +def authority(receipt, outcome, memo_sha, source_revision, phase, now=None): + """Root must freshly verify native outcome at fixed ORIGIN outside this helper. + + Receipt files/flags are not signed grants. This function checks the exact + supervised receipt relation; existing harness/founder authority remains the + actual permission boundary. It never authenticates a caller as human. + """ + now = now or datetime.datetime.now(datetime.timezone.utc) + require(phase in PHASES, 'fixed phase required') + require(receipt.get('proposal_id') == PROPOSAL and receipt.get('memo_id') == MEMO_ID + and receipt.get('memo_version') == 1 and receipt.get('memo_sha256') == memo_sha + and receipt.get('source_revision') == source_revision + and receipt.get('activation') == 'APPROVED' + and receipt.get('authority_mode') == 'ADMINISTER' + and receipt.get('target') == 'realm:kubernetes/railiance01/informed-decision' + and receipt.get('verification_method') == 'root-fixed-origin-native-readback' + and receipt.get('runtime_authenticated_grant') is False + and receipt.get('outcome_query') == '/lifecycle/memos/' + MEMO_ID + '/outcomes?version=1', + 'exact externally verified supervised receipt required') + verified = datetime.datetime.fromisoformat(receipt['verified_at'].replace('Z', '+00:00')) + require(verified.tzinfo is not None and 0 <= (now - verified).total_seconds() <= 120, + 'fresh root native readback required before every phase') + deadline = datetime.datetime.fromisoformat('2026-10-12T23:59:59+00:00') + require(now < deadline, 'approved execution window expired') + if phase == 'release': + require((deadline-now).total_seconds() >= 1800, 'reserve thirty minutes for verification and recovery') + require(outcome.get('memo_id') == MEMO_ID and outcome.get('review', {}).get('stale') is False + and outcome['review'].get('intake_state') == 'ready', 'native review is not ready/current') + review_id = outcome['review']['memo_id'] + require(review_id == receipt.get('review_memo_id'), 'native review identity changed') + accepted = [x for x in outcome.get('dispositions', []) + if x.get('submission_state') == 'confirmed' + and x.get('disposition', {}).get('verb') == 'accept' + and x['disposition'].get('memo_version') == 1] + require(len(accepted) == 1, 'one confirmed founder acceptance required') + accepted = accepted[0]['disposition'] + require(accepted.get('actor') == FOUNDER and accepted.get('memo_id') == review_id + and accepted.get('approval_id') == receipt.get('approval_id') + and accepted.get('id') == receipt.get('disposition_id') + and accepted.get('at') == receipt.get('accepted_at'), 'exact founder disposition mismatch') + require(re.fullmatch(r'[a-f0-9-]{36}', accepted['approval_id']) is not None + and re.fullmatch(r'disp-[a-f0-9-]{36}', accepted['id']) is not None + and re.fullmatch(r'review-[a-f0-9-]{36}', review_id) is not None, + 'native disposition identifiers are malformed') + accepted_at = datetime.datetime.fromisoformat(accepted['at'].replace('Z', '+00:00')) + require(accepted_at.tzinfo is not None and accepted_at <= verified, 'acceptance time not bounded') + return {key: receipt[key] for key in ('approval_id', 'disposition_id', 'accepted_at', 'verified_at')} + + +class Journal: + def __init__(self, parent, identity): + self.parent = Path(parent) + private(self.parent, directory=True) + self.path = self.parent / 'execution-journal.json' + self.lock = os.open(self.parent / 'execution.lock', os.O_CREAT | os.O_NOFOLLOW | os.O_RDWR, 0o600) + fcntl.flock(self.lock, fcntl.LOCK_EX | fcntl.LOCK_NB) + private(self.parent / 'execution.lock') + if self.path.exists(): + private(self.path) + self.data = json.loads(self.path.read_text()) + require(self.data['identity'] == identity, 'journal case/source identity changed') + else: + self.data = {'identity': identity, 'phases': {}} + self.save() + + def save(self): + temporary = self.parent / 'execution-journal.new' + fd = os.open(temporary, os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW | os.O_WRONLY, 0o600) + try: + with os.fdopen(fd, 'w') as stream: + json.dump(self.data, stream, indent=2) + stream.write('\n') + stream.flush() + os.fsync(stream.fileno()) + os.replace(temporary, self.path) + directory = os.open(self.parent, os.O_DIRECTORY | os.O_RDONLY) + try: + os.fsync(directory) + finally: + os.close(directory) + except BaseException: + # Retain evidence rather than overwriting an uncertain durable intent. + raise + + def start(self, phase, approval): + require(phase not in self.data['phases'], 'already attempted phase; no retry') + predecessors = dict(zip(PHASES[1:8], PHASES[:7])) + predecessors['rollback-verify'] = 'rollback' + if phase in predecessors: + require(self.data['phases'].get(predecessors[phase], {}).get('state') == 'COMPLETE', + 'preceding phase is not verified complete') + if phase == 'rollback': + require('release' in self.data['phases'], 'rollback requires a recorded release attempt') + self.data['phases'][phase] = {'state': 'RUNNING', 'approval': approval, + 'attempt_id': str(uuid.uuid4()), + 'started_at': datetime.datetime.now(datetime.timezone.utc).isoformat()} + self.save() + + def note(self, phase, key, value): + require(self.data['phases'][phase]['state'] == 'RUNNING', 'phase intent missing') + self.data['phases'][phase][key] = value + self.save() + + def finish(self, phase, result): + entry = self.data['phases'][phase] + require(entry['state'] == 'RUNNING', 'phase intent missing') + entry['result'] = result + entry['state'] = 'COMPLETE' if result.get('all_checks_pass') is True else 'UNCERTAIN' + self.save() + + def close(self): + os.close(self.lock) diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369 new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369 @@ -0,0 +1,52 @@ +{ + "configmap": { + "apiVersion": "v1", + "immutable": true, + "kind": "ConfigMap", + "metadata": { + "annotations": { + "argocd.argoproj.io/tracking-id": "informed-decision:/ConfigMap:informed-decision/informed-decision-runtime-6c221878d051", + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover" + }, + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "uid": "90113d2d-54d9-4e82-b1d3-90b49ebed2b5" + }, + "canonical_data_sha256": "8ec462d12347548f506eeebf1e3c7cc47648019c8a783804d09bcc79b0f22af6" + }, + "pvc": { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "annotations": { + "argocd.argoproj.io/tracking-id": "informed-decision:/PersistentVolumeClaim:informed-decision/informed-decision-data", + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover", + "pv.kubernetes.io/bind-completed": "yes", + "pv.kubernetes.io/bound-by-controller": "yes", + "volume.beta.kubernetes.io/storage-provisioner": "rancher.io/local-path", + "volume.kubernetes.io/selected-node": "239.62.205.92.host.secureserver.net", + "volume.kubernetes.io/storage-provisioner": "rancher.io/local-path" + }, + "finalizers": [ + "kubernetes.io/pvc-protection" + ], + "name": "informed-decision-data", + "namespace": "informed-decision", + "uid": "d80b25b1-141a-441b-b205-98fa2fd98b7c" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "1Gi" + } + }, + "storageClassName": "local-path", + "volumeMode": "Filesystem", + "volumeName": "pvc-d80b25b1-141a-441b-b205-98fa2fd98b7c" + } + }, + "pvc_phase": "Bound" +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4 new file mode 100644 index 0000000..aca7f5c --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4 @@ -0,0 +1,23 @@ +# T05 zlib85091 release — preliminary, unapproved + +This is a distinct proposal/trial for existing INFD-WP-0009-T05. The actual T04 source2 acceptance does not authorize it. Previous R1 copy and R2 verify UNCERTAIN journal states remain untouched. INFD-IN-0010 remains an unpromoted general verifier residual; this new task-specific verifier is a prerequisite of active T05, not an amendment of the old approved helper. + +Exact intended image f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23 was built by admitted owner CI11534/run4 from 9b4bb25d325698ae543e7e8a8a3c3592db1f58fc. Publication is not installed acceptance. Final packet requires independent published-image scan/runtime/filesystem/source proof and fresh read-only native projection/one-object dry-run evidence. Until all final inputs and independent owner acknowledgments are frozen, execution-plan state remains preliminary and the actuator refuses before any authority, journal or native action. + +After a NEW exact confirmed founder acceptance, root freshly authenticates fixed-origin native source-version1 outcomes before each phase. Receipt files are supervised bookkeeping, not signed grants or autonomy. Wrong task, source, memo/version, stale/pending/agent disposition, old T04 acceptance or changed inputs refuse. Root retains exact approved source revision/digests and action results in supervision. Approval does not promote any agent. + +Fixed phase order: drill-backup → drill-copy → offline-verify → cleanup-offline → cutover-backup → cutover-copy → release → verify. New private native /data/private/zlib85091-r1, root .private-backups/20261011-infd-zlib-r1 and local volume infd-zlib-r1-restore-20261011 are distinct from all T04 custody. New private journal intent is fsynced RUNNING before dispatch; no attempted phase replay. Fixed output schema contains only counts, hashes, object identity and boolean results; raw errors and private content are withheld. Existing native snapshots/database/sidecars are never removed or restored over current data. + +Fresh backup inspection uses copied explicit-close SQLite helpers: live and offline clone readers are mode=ro/query_only and WAL-aware, before any Store/admin open. Immutable reader is used only for freshly closed hash-bound private snapshot with absent/zero WAL frames and stable identity/metadata/digest before/after read/copy. Main and sidecars remain retained. Schema must equal5, integrity ok, and exact snapshot/isolated clone counts match before/admin/after. The detached local clone has network none, readonly root, no service/runtime config/credential mounts; only narrowly scoped UID0 CAP_CHOWN initializer precedes UID10001 reads/admin. Original private copy is hash-stable. Cleanup removes only the disposable volume whose nonce/labels/creation metadata match this trial, before cutover. + +Each snapshot is bounded512MiB. At most two new snapshots occupy each native/offcluster custody (1GiB payload each); the disposable offcluster clone adds512MiB while present, plus16MiB sidecar/metadata reserve. New native drill phase checks free space for both; local custody checks two snapshot bounds plus reserve. Existing T04 retention consumes additional pre-existing space. EUR0 recurring infrastructure estimate; human/compute time unpriced. + +Cutover takes a fresh native backup and exact offcluster copy. Release then requires latest schema5 readonly proof, sealed Pod/Deployment/config/PVC custody and same baseline image763c/current Application sourcec96, a healthy single target92.205.62.239 node and fresh requested CPU ≤ allocatable capacity. Recreate and resources remain unchanged. Server dry-run/client diff must show only the image. Application UID/resourceVersion/source CAS dispatches manual exact final revision, initiatedBy custodian-codex, explicit prune=false and only apps/Deployment informed-decision in its namespace. No whole-Application sync, namespace/config/credential/resource change or pruning. + +Verification reads imageID/readiness/owner chain/exact configured Pod fields, schema5/integrity/metadata counts, installed policy hash and synthetic purpose refusals, health200, installed fixed zlib and exact image proof. After exact candidate Ready and verified rollout, root executes attached post-ready-native-outcomes-command.py inside the existing admitted StateHub Pod. It calls canonical lifecycle.outcomes for infd-20261011-zlib-remediation-r1 SOURCEversion1 at dispatcher fixed ORIGIN with NoRedirect/proxy disabled; existing internal token_file stays inside that Pod and no token/body/private content is exported. Root retains bounded HTTP-success metadata/observationtime and correlates verified candidate PodUID/image/source, then rechecks those identities. This actual provider/PDP-gated preservation proof is separate from installed synthetic2allow8refuse; both are required before task closure. It does not assert provider advisory emissions or new doctrine. Argo3.5.3 omits false prune in operation status: missing or exactfalse is accepted only together with this journal's COMPLETE explicitfalse request, exact source/resources/initiation, operation start after our durable attempt, bounded finish and one Synced Deployment result. True/null/string/prior/foreign/extra-resource results refuse. + +Rollback → rollback-verify is separate and permitted only after a recorded release attempt. It switches only Application source back to c96 and Deployment image763c; it never restores an old snapshot over the latest database. Recovery dispatch works even if candidate Pod is absent/unready and never depends on candidate DB inspection. Recovery verification separately requires Ready1/old image/current schema5/data-custody and exact recorded scoped completion. All phases must begin before2026-10-12T23:59:59Z; release must begin at least30minutes earlier. Beyond expiry stop and obtain a new founder decision; no automatic extension or emergency grant. A failed/uncertain attempt requires informed recovery rather than retry. + +T05 remains progress until actual installed acceptance and native rescan prove the finding absent. No Risk Engine grade is assigned. Only then may owner close T05/risk and consider finishing WP9, with existing residuals live first. + +Actual release and installed verification also require fixed private root scan receipt and retained fullreport at /tmp/security-infd-zlib-fresh-scan-{receipt,full}.json, supervised metadata binding to exact immutablef558/artifactsource9b4/scannerdigest62b1. Before journal start, fullreporthash must match, no suppression/allseverity flags true, exit0, nonempty valid fullresults contain zero findings, scan completed within4hours and now precedes DB NextUpdate. The published DB expires2026-10-11T18:59:50Z; it is not valid until release deadline. Root refreshes DB and rescans the same immutable image as routine read-only verification when needed, retaining all raw publicscan artifacts. Any new finding refuses release/closure and is retained for informed reassessment/new decision as needed, never filtered or ignored. Existing risk stays open until actual installed proof/native rescan. diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9 new file mode 100644 index 0000000..5aae51c --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9 @@ -0,0 +1,54 @@ +{ + "kind": "informed-decision.supervised-execution-source-bundle", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "files": { + "execution/actuator.py": { + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "content": "\"\"\"One fixed supervised phase; never run this during source preparation.\"\"\"\nimport argparse\nimport hashlib\nimport json\nimport os\nfrom pathlib import Path\nimport re\nimport selectors\nimport stat\nimport subprocess\nimport sys\nimport time\n\nif sys.flags.optimize:\n raise SystemExit('optimized interpreter refused')\n\nPHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline',\n 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify')\n\n\ndef require(value, reason):\n if not value:\n raise ValueError(reason)\n\n\ndef sha(path):\n digest = hashlib.sha256()\n with Path(path).open('rb') as stream:\n for block in iter(lambda: stream.read(1024**2), b''):\n digest.update(block)\n return digest.hexdigest()\n\n\ndef private(path, directory=False):\n info = Path(path).lstat()\n require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode))\n and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600)\n and (directory or info.st_nlink == 1), 'private owned custody required')\n\nROOT = Path(__file__).resolve().parent\nCASE = ROOT.parent\nOWNER = Path('/home/worsch/informed-decision')\nCUSTODIAN = Path('/home/worsch/the-custodian')\nCUSTODY = CUSTODIAN / '.private-backups/20261011-infd-zlib-r1'\nSOCKET = 'unix:///var/run/docker.sock'\nIMAGE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23'\nVOLUME = 'infd-zlib-r1-restore-20261011'\nMAX_BYTES = 512 * 1024**2\n\n\ndef run(argv, body=None, timeout=90):\n return subprocess.run(argv, input=body, text=True, capture_output=True, timeout=timeout)\n\n\ndef json_result(result):\n try:\n value = json.loads(result.stdout)\n except (ValueError, TypeError):\n raise ValueError('safe phase receipt unavailable; outcome uncertain') from None\n require(result.returncode == 0 and isinstance(value, dict) and value.get('all_checks_pass') is True,\n 'phase did not verify complete; raw output withheld; no retry')\n permitted = {'phase', 'all_checks_pass', 'raw_output_withheld', 'native_approval_verified_by_root',\n 'native_authenticated_grant', 'source_readonly_baseline', 'snapshot_readonly',\n 'snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'native_parent_private',\n 'native_uid', 'pod_name', 'pod_uid', 'live_readonly_schema_integrity_counts',\n 'live_counts_may_include_concurrent_commits', 'operation_requested', 'source_revision',\n 'resources', 'prune', 'rollout_verified', 'latest_live_database_retained',\n 'client_diff_sha256', 'native_rollout_verified', 'current_schema5_database_retained',\n 'private_copy_verified', 'installed_purpose_checks', 'policy_sha256',\n 'policy_mode', 'policy_uid', 'installed_zlib_files', 'zlib_package', 'health_statuses', 'native_provider_probe', 'recovery_verification'}\n require(set(value) <= permitted, 'unexpected output fields withheld')\n from receipt_safety import counts\n for name in ('source_readonly_baseline', 'snapshot_readonly', 'live_readonly_schema_integrity_counts'):\n if name in value:\n counts(value[name])\n for name in ('snapshot_sha256', 'client_diff_sha256'):\n if name in value:\n require(re.fullmatch(r'[a-f0-9]{64}', value[name]) is not None, 'invalid output digest withheld')\n if 'snapshot_bytes' in value:\n require(type(value['snapshot_bytes']) is int and 0 < value['snapshot_bytes'] <= MAX_BYTES,\n 'invalid output size withheld')\n if 'snapshot_file' in value:\n require(value['snapshot_file'] in ('drill.sqlite', 'cutover.sqlite'), 'invalid output file withheld')\n return value\n\n\ndef docker(argv, body=None, timeout=120):\n return run(['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET] + argv,\n body=body, timeout=timeout)\n\n\ndef remote(phase, revision, approved):\n # Fixed module imported only after main verifies every executor source hash.\n from native_program import PROGRAM\n payload = {'phase': phase, 'source_revision': revision, 'approval': approved,\n 'sealed': json.loads((CASE / 'sealed-live-deployment.json').read_text()),\n 'dependencies': json.loads((CASE / 'sealed-native-dependencies.json').read_text()),\n 'candidate': json.loads((CASE / 'candidate-deployment.json').read_text()),\n 'rollback': json.loads((CASE / 'rollback-deployment.json').read_text()),\n 'receipt_safety': (ROOT / 'receipt_safety.py').read_text(),\n 'purpose_checks': (CASE / 'check_installed.py').read_text(),\n 'installed_zlib': json.loads((CASE / 'installed-zlib-proof.json').read_text()), 'readonly': (CASE / 'sqlite_readonly.py').read_text()}\n script = PROGRAM.replace('__PAYLOAD__', repr(json.dumps(payload))).replace(\n '__GUARD__', repr((CASE / 'change_guard.py').read_text()))\n return json_result(run(['ssh', 'railiance01', 'python3 -'], script, timeout=200))\n\n\ndef copy_snapshot(phase, revision, approved, journal):\n metadata = remote(phase, revision, approved)\n backup_phase = 'drill-backup' if phase == 'drill-copy' else 'cutover-backup'\n prior = journal.data['phases'][backup_phase]['result']\n for key in ('snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'snapshot_readonly'):\n require(metadata[key] == prior[key], 'closed frozen snapshot changed')\n name = metadata['snapshot_file']\n require(name in ('drill.sqlite', 'cutover.sqlite') and 0 < metadata['snapshot_bytes'] <= MAX_BYTES,\n 'fixed bounded snapshot required')\n pod = metadata['pod_name']\n require(re.fullmatch(r'[a-z0-9]([-a-z0-9]*[a-z0-9])?', pod) is not None, 'fixed owner pod name required')\n local = CUSTODY / name\n fd = os.open(local, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW, 0o600)\n # Binary snapshot stdout goes only to a private file, never tool/chat/log output.\n # Snapshot schema/count metadata was validated before opening this destination.\n with os.fdopen(fd, 'wb') as destination:\n command = ('kubectl exec -n informed-decision ' + pod +\n ' -c informed-decision -- cat /data/private/zlib85091-r1/' + name)\n transfer = subprocess.Popen(['ssh', 'railiance01', command], stdout=subprocess.PIPE,\n stderr=subprocess.DEVNULL)\n selector = selectors.DefaultSelector()\n selector.register(transfer.stdout, selectors.EVENT_READ)\n deadline = time.monotonic() + 150\n received = 0\n try:\n while True:\n remaining = deadline - time.monotonic()\n require(remaining > 0 and selector.select(remaining), 'private transfer timed out')\n block = os.read(transfer.stdout.fileno(), 1024**2)\n if not block:\n break\n received += len(block)\n require(received <= metadata['snapshot_bytes'] and received <= MAX_BYTES,\n 'private copy exceeds frozen snapshot size')\n destination.write(block)\n transfer.wait(timeout=max(1, deadline - time.monotonic()))\n finally:\n selector.close()\n transfer.stdout.close()\n if transfer.poll() is None:\n transfer.kill()\n transfer.wait()\n destination.flush()\n os.fsync(destination.fileno())\n private(local)\n require(transfer.returncode == 0 and local.stat().st_size == metadata['snapshot_bytes']\n and sha(local) == metadata['snapshot_sha256'], 'private copy incomplete/uncertain; retain, no retry')\n # Re-read identity/hash after transfer. This is verification, not a write retry.\n after = remote(phase, revision, approved)\n require(after['pod_uid'] == metadata['pod_uid'] and after['snapshot_sha256'] == metadata['snapshot_sha256'],\n 'source identity/snapshot changed during transfer')\n return {**metadata, 'off_cluster_private_copy_verified': True, 'snapshot_contents_output': False}\n\n\ndef offline_verify(journal):\n from receipt_safety import counts\n snapshot = CUSTODY / 'drill.sqlite'\n private(snapshot)\n previous = journal.data['phases']['drill-copy']['result']\n require(sha(snapshot) == previous['snapshot_sha256'], 'protected snapshot bytes changed')\n identity = docker(['info', '--format', '{{json .Name}}'])\n require(identity.returncode == 0 and json.loads(identity.stdout) == 'bnt-lap001',\n 'local offline Docker engine identity changed')\n listed = docker(['volume', 'ls', '--format', '{{.Name}}'])\n require(listed.returncode == 0 and VOLUME not in listed.stdout.splitlines(),\n 'disposable volume absence not verified')\n nonce = journal.data['phases']['offline-verify']['attempt_id']\n labels = {'informed-decision.case': 'infd-zlib-20261011-r1',\n 'informed-decision.use': 'offline-restore-only', 'informed-decision.attempt': nonce}\n created = docker(['volume', 'create', '--driver', 'local', '--label', 'informed-decision.case=infd-zlib-20261011-r1',\n '--label', 'informed-decision.attempt=' + nonce,\n '--label', 'informed-decision.use=offline-restore-only', VOLUME])\n require(created.returncode == 0 and created.stdout.strip() == VOLUME, 'volume creation uncertain; no retry')\n inspected = docker(['volume', 'inspect', VOLUME])\n require(inspected.returncode == 0, 'new volume identity unavailable')\n volume = json.loads(inspected.stdout)\n require(len(volume) == 1 and volume[0]['Name'] == VOLUME and volume[0].get('Labels') == labels\n and volume[0].get('Driver') == 'local' and not volume[0].get('Options')\n and volume[0].get('Scope') == 'local', 'new isolated volume identity changed')\n identity = {key: volume[0][key] for key in ('Name', 'Labels', 'Driver', 'Scope', 'CreatedAt')}\n journal.note('offline-verify', 'created_volume_identity', identity)\n # One-time UID0/CAP_CHOWN initialization is isolated to the NEW named volume.\n # No host/live PVC/config/token mount exists; this detail needs packet review.\n initializer = \"\"\"import hashlib,os,stat,sys\nif sys.flags.optimize:raise RuntimeError('optimized interpreter refused')\nfolder='/restore';expected=EXPECTED\nif os.listdir(folder):raise ValueError('new empty private volume required')\nos.chmod(folder,0o700)\nfd=os.open(folder+'/review.sqlite',os.O_CREAT|os.O_EXCL|os.O_NOFOLLOW|os.O_WRONLY,0o600)\ndigest=hashlib.sha256();size=0\nwith os.fdopen(fd,'wb') as target:\n while True:\n block=sys.stdin.buffer.read(1024**2)\n if not block:break\n size+=len(block)\n if size>512*1024**2:raise ValueError('private restore size exceeds bound')\n target.write(block);digest.update(block)\n target.flush();os.fsync(target.fileno())\nif digest.hexdigest()!=expected:raise ValueError('private copied snapshot differs')\nos.chown(folder+'/review.sqlite',10001,10001);os.chown(folder,10001,10001)\nprint('{\"all_checks_pass\":true,\"private_copy_verified\":true}')\n\"\"\".replace('EXPECTED', repr(previous['snapshot_sha256']))\n with snapshot.open('rb') as source:\n argv = ['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET,\n 'run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m',\n '--user', '0:0', '--cap-drop', 'ALL', '--cap-add', 'CHOWN',\n '--security-opt', 'no-new-privileges', '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore',\n '--entrypoint', 'python', IMAGE, '-c', initializer]\n copied = subprocess.run(argv, stdin=source, text=True, capture_output=True, timeout=150)\n json_result(copied)\n options = ['run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m',\n '--user', '10001:10001', '--cap-drop', 'ALL', '--security-opt', 'no-new-privileges',\n '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore']\n readonly = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'],\n (CASE / 'sqlite_readonly.py').read_text())\n require(readonly.returncode == 0, 'offline pre-open schema/integrity gate refused; never open Store')\n checked = counts(json.loads(readonly.stdout))\n require(checked == previous['snapshot_readonly'], 'frozen snapshot/clone readonly counts differ')\n admin = docker(options + ['--entrypoint', 'informed-decision-admin', IMAGE,\n 'inspect', '--db', '/restore/review.sqlite'])\n require(admin.returncode == 0, 'offline admin result uncertain')\n admin_counts = json.loads(admin.stdout)\n require(admin_counts == {key: checked[key] for key in ('schema_version', 'lifecycle', 'outbox', 'submissions')},\n 'offline admin changed frozen snapshot counters')\n # Admin Store construction must not silently alter schema/integrity/counters.\n post = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'],\n (CASE / 'sqlite_readonly.py').read_text())\n require(post.returncode == 0, 'offline post-admin readonly integrity gate refused')\n post_checked = counts(json.loads(post.stdout))\n require(post_checked == checked == previous['snapshot_readonly'],\n 'offline admin altered frozen snapshot proof')\n private(snapshot)\n require(sha(snapshot) == previous['snapshot_sha256'], 'original protected snapshot changed during drill')\n return {'all_checks_pass': True, 'offline_volume': VOLUME, 'offline_readonly': checked,\n 'offline_post_admin_readonly': post_checked, 'original_snapshot_hash_unchanged': True,\n 'created_volume_identity': identity,\n 'admin_counts': admin_counts, 'network': 'none', 'runtime_tokens_or_config_mounted': False,\n 'service_entrypoint_started': False, 'original_snapshot_retained': True}\n\n\ndef cleanup_offline(journal):\n inspected = docker(['volume', 'inspect', VOLUME])\n require(inspected.returncode == 0, 'owned disposable volume identity unverified')\n value = json.loads(inspected.stdout)\n expected = journal.data['phases']['offline-verify']['result']['created_volume_identity']\n require(len(value) == 1 and {key: value[0].get(key) for key in expected} == expected\n and not value[0].get('Options'), 'volume ownership/recreation changed')\n removed = docker(['volume', 'rm', VOLUME])\n require(removed.returncode == 0 and removed.stdout.strip() == VOLUME\n and docker(['volume', 'inspect', VOLUME]).returncode != 0,\n 'cleanup outcome ambiguous; do not retry')\n return {'all_checks_pass': True, 'only_disposable_offline_volume_removed': VOLUME,\n 'native_and_offcluster_original_snapshots_retained': True}\n\n\ndef main():\n parser = argparse.ArgumentParser(description=__doc__)\n parser.add_argument('--phase', choices=PHASES, required=True)\n parser.add_argument('--root-authority-receipt', type=Path, required=True)\n parser.add_argument('--root-native-outcome', type=Path, required=True)\n parser.add_argument('--source-revision', required=True)\n parser.add_argument('--root-fresh-scan-receipt', type=Path, required=True)\n args = parser.parse_args()\n require(args.root_authority_receipt == Path('/tmp/security-infd-zlib-root-authority.json')\n and args.root_native_outcome == Path('/tmp/security-infd-zlib-native-outcome-latest.json'),\n 'fixed supervised receipt paths required')\n require(re.fullmatch(r'[0-9a-f]{40}', args.source_revision) is not None, 'exact source commit required')\n # Verify all prepared executor/input bytes before reading authority or dispatching.\n plan = json.loads((ROOT / 'execution-plan.json').read_text())\n require(plan.get('state') == 'prepared-unapproved' and plan.get('published_artifact_verified') is True, 'unfrozen proposal cannot execute')\n require(set(plan['executor_files']) == {'actuator.py', 'authority_journal.py', 'native_program.py', 'receipt_safety.py'},\n 'fixed executor sources required')\n require(set(plan['owner_source_files']) == {'deploy/lifecycle/admission.candidate.json',\n 'deploy/lifecycle/service.candidate.json',\n 'deploy/lifecycle/kustomization.yaml',\n 'deploy/lifecycle/registries.candidate.json'},\n 'fixed owner image sources required')\n for relative, digest in plan['executor_files'].items():\n target = ROOT / relative\n require(not target.is_symlink() and sha(target) == digest, 'executor source bytes changed')\n for relative, digest in plan['case_files'].items():\n require(not Path(relative).is_absolute() and '..' not in Path(relative).parts,\n 'case source path escaped')\n target = CASE / relative\n require(not target.is_symlink() and sha(target) == digest, 'case source bytes changed')\n for relative, digest in plan['owner_source_files'].items():\n target = OWNER / relative\n require(not target.is_symlink() and sha(target) == digest, 'owner image-only source changed')\n committed = subprocess.run(['git', '-C', str(OWNER), 'show', args.source_revision + ':' + relative],\n capture_output=True)\n require(committed.returncode == 0 and hashlib.sha256(committed.stdout).hexdigest() == digest,\n 'committed owner render source differs from approved inputs')\n head = run(['git', '-C', str(OWNER), 'rev-parse', 'HEAD'])\n require(head.returncode == 0 and head.stdout.strip() == args.source_revision, 'owner source HEAD differs')\n from authority_journal import Journal, authority, fresh_scan\n private(args.root_authority_receipt)\n private(args.root_native_outcome)\n receipt = json.loads(args.root_authority_receipt.read_text())\n require(receipt.get('native_outcome_sha256') == sha(args.root_native_outcome), 'native outcome bytes changed')\n require(receipt.get('executor_plan_sha256') == sha(ROOT / 'execution-plan.json'),\n 'root verified executor plan differs')\n approved = authority(receipt, json.loads(args.root_native_outcome.read_text()), sha(CASE / 'memo.json'),\n args.source_revision, args.phase)\n if args.phase in ('release', 'verify'):\n require(args.root_fresh_scan_receipt == Path('/tmp/security-infd-zlib-fresh-scan-receipt.json'), 'fixed fresh scan receipt path required')\n private(args.root_fresh_scan_receipt)\n scan_receipt=json.loads(args.root_fresh_scan_receipt.read_text())\n report_path=Path('/tmp/security-infd-zlib-fresh-scan-full.json');private(report_path)\n require(sha(report_path)==scan_receipt.get('full_report_sha256'), 'fresh scan report bytes changed')\n fresh_scan(scan_receipt,json.loads(report_path.read_text()))\n parent = CUSTODY.parent\n private(parent, directory=True)\n ignored = run(['git', '-C', str(CUSTODIAN), 'check-ignore', '--no-index', str(CUSTODY / 'drill.sqlite')])\n require(ignored.returncode == 0, 'offcluster custody is not ignored')\n if not CUSTODY.exists():\n require(args.phase == 'drill-backup', 'first approved phase must create unique private custody')\n os.mkdir(CUSTODY, 0o700)\n private(CUSTODY, directory=True)\n capacity = os.statvfs(CUSTODY)\n require(capacity.f_bavail * capacity.f_frsize >= 2 * MAX_BYTES + 16 * 1024**2,\n 'independent protected custody headroom insufficient')\n os.makedirs(CUSTODY / 'empty-docker-config', mode=0o700, exist_ok=True)\n private(CUSTODY / 'empty-docker-config', directory=True)\n require(not list((CUSTODY / 'empty-docker-config').iterdir()), 'public Docker read config must stay empty')\n journal = Journal(CUSTODY, {'proposal': plan['proposal_id'], 'source_revision': args.source_revision,\n 'memo_sha256': sha(CASE / 'memo.json'), 'plan_sha256': sha(ROOT / 'execution-plan.json')})\n try:\n journal.start(args.phase, approved) # fsynced RUNNING before any phase effect.\n if args.phase in ('drill-copy', 'cutover-copy'):\n result = copy_snapshot(args.phase, args.source_revision, approved, journal)\n elif args.phase == 'offline-verify':\n result = offline_verify(journal)\n elif args.phase == 'cleanup-offline':\n result = cleanup_offline(journal)\n else:\n result = remote(args.phase, args.source_revision, approved, operation_intent=journal.data['phases'].get('rollback' if args.phase == 'rollback-verify' else 'release') if args.phase in ('verify', 'rollback-verify') else None)\n journal.finish(args.phase, result)\n print(json.dumps(result)) # Only count/hash/identity receipts, never snapshot bytes.\n except BaseException as error:\n safe = {'all_checks_pass': False, 'phase': args.phase, 'failure_class': type(error).__name__,\n 'failure': 'fixed phase outcome uncertain; original evidence retained; no retry',\n 'raw_output_withheld': True}\n if journal.data['phases'].get(args.phase, {}).get('state') == 'RUNNING':\n journal.finish(args.phase, safe)\n print(json.dumps(safe))\n raise SystemExit(1) from None\n finally:\n journal.close()\n\n\nif __name__ == '__main__':\n try:\n main()\n except Exception:\n raise SystemExit('supervised execution refused before phase; raw output withheld') from None\n" + }, + "execution/authority_journal.py": { + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "content": "\"\"\"Supervised receipt bookkeeping, not an authenticated approval provider.\"\"\"\nimport datetime\nimport fcntl\nimport hashlib\nimport json\nimport os\nimport re\nfrom pathlib import Path\nimport stat\nimport uuid\n\nFOUNDER = {'kind': 'person', 'sub': 'uid=platform-root,ou=people,dc=netkingdom,dc=local'}\nMEMO_ID = 'infd-20261011-zlib-remediation-r1'\nPROPOSAL = 'INFD-WP-0009-T05/zlib85091-r1'\nPHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline',\n 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify')\n\n\ndef require(value, reason):\n if not value:\n raise ValueError(reason)\n\n\ndef sha(path):\n digest = hashlib.sha256()\n with Path(path).open('rb') as stream:\n for block in iter(lambda: stream.read(1024**2), b''):\n digest.update(block)\n return digest.hexdigest()\n\n\ndef private(path, directory=False):\n info = Path(path).lstat()\n require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode))\n and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600)\n and (directory or info.st_nlink == 1), 'private owned custody required')\n\n\ndef authority(receipt, outcome, memo_sha, source_revision, phase, now=None):\n \"\"\"Root must freshly verify native outcome at fixed ORIGIN outside this helper.\n\n Receipt files/flags are not signed grants. This function checks the exact\n supervised receipt relation; existing harness/founder authority remains the\n actual permission boundary. It never authenticates a caller as human.\n \"\"\"\n now = now or datetime.datetime.now(datetime.timezone.utc)\n require(phase in PHASES, 'fixed phase required')\n require(receipt.get('proposal_id') == PROPOSAL and receipt.get('memo_id') == MEMO_ID\n and receipt.get('memo_version') == 1 and receipt.get('memo_sha256') == memo_sha\n and receipt.get('source_revision') == source_revision\n and receipt.get('activation') == 'APPROVED'\n and receipt.get('authority_mode') == 'ADMINISTER'\n and receipt.get('target') == 'realm:kubernetes/railiance01/informed-decision'\n and receipt.get('verification_method') == 'root-fixed-origin-native-readback'\n and receipt.get('runtime_authenticated_grant') is False\n and receipt.get('outcome_query') == '/lifecycle/memos/' + MEMO_ID + '/outcomes?version=1',\n 'exact externally verified supervised receipt required')\n verified = datetime.datetime.fromisoformat(receipt['verified_at'].replace('Z', '+00:00'))\n require(verified.tzinfo is not None and 0 <= (now - verified).total_seconds() <= 120,\n 'fresh root native readback required before every phase')\n deadline = datetime.datetime.fromisoformat('2026-10-12T23:59:59+00:00')\n require(now < deadline, 'approved execution window expired')\n if phase == 'release':\n require((deadline-now).total_seconds() >= 1800, 'reserve thirty minutes for verification and recovery')\n require(outcome.get('memo_id') == MEMO_ID and outcome.get('review', {}).get('stale') is False\n and outcome['review'].get('intake_state') == 'ready', 'native review is not ready/current')\n review_id = outcome['review']['memo_id']\n require(review_id == receipt.get('review_memo_id'), 'native review identity changed')\n accepted = [x for x in outcome.get('dispositions', [])\n if x.get('submission_state') == 'confirmed'\n and x.get('disposition', {}).get('verb') == 'accept'\n and x['disposition'].get('memo_version') == 1]\n require(len(accepted) == 1, 'one confirmed founder acceptance required')\n accepted = accepted[0]['disposition']\n require(accepted.get('actor') == FOUNDER and accepted.get('memo_id') == review_id\n and accepted.get('approval_id') == receipt.get('approval_id')\n and accepted.get('id') == receipt.get('disposition_id')\n and accepted.get('at') == receipt.get('accepted_at'), 'exact founder disposition mismatch')\n require(re.fullmatch(r'[a-f0-9-]{36}', accepted['approval_id']) is not None\n and re.fullmatch(r'disp-[a-f0-9-]{36}', accepted['id']) is not None\n and re.fullmatch(r'review-[a-f0-9-]{36}', review_id) is not None,\n 'native disposition identifiers are malformed')\n accepted_at = datetime.datetime.fromisoformat(accepted['at'].replace('Z', '+00:00'))\n require(accepted_at.tzinfo is not None and accepted_at <= verified, 'acceptance time not bounded')\n return {key: receipt[key] for key in ('approval_id', 'disposition_id', 'accepted_at', 'verified_at')}\n\n\ndef fresh_scan(receipt, report, now=None):\n \"\"\"Root supervised scan bookkeeping; actual scanner proof stays retained.\"\"\"\n now=now or datetime.datetime.now(datetime.timezone.utc)\n require(receipt.get('image')=='forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23'\n and receipt.get('artifact_source_revision')=='9b4bb25d325698ae543e7e8a8a3c3592db1f58fc'\n and receipt.get('scanner')=='aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969'\n and receipt.get('no_suppression') is True and receipt.get('full_allseverity_scan') is True\n and receipt.get('exit_code')==0,'exact full immutable artifact scan required')\n scanned=datetime.datetime.fromisoformat(receipt['completed_at'].replace('Z','+00:00'))\n metadata=receipt['db_metadata'];updated=datetime.datetime.fromisoformat(metadata['UpdatedAt'].replace('Z','+00:00'));next_update=datetime.datetime.fromisoformat(metadata['NextUpdate'].replace('Z','+00:00'))\n require(all(t.tzinfo is not None for t in (scanned,updated,next_update))\n and updated<=scanned<=now0 and size<=512*1024**2 and free>=size*(2 if action==\\'drill-backup\\' else 1)+16*1024**2,\\'bounded native snapshot capacity required\\')\\n if action==\\'drill-backup\\':\\n require(not os.path.lexists(folder),\\'native case directory must be unique\\')\\n os.mkdir(folder,0o700);os.chmod(folder,0o700)\\n private(folder,True)\\n filename=\\'drill.sqlite\\' if action==\\'drill-backup\\' else \\'cutover.sqlite\\';output=folder+\\'/\\'+filename\\n require(not os.path.lexists(output),\\'snapshot output must be unique\\')\\n admin=subprocess.run([\\'informed-decision-admin\\',\\'backup\\',\\'--db\\',db,\\'--output\\',output],capture_output=True,text=True,timeout=120)\\n require(admin.returncode==0 and json.loads(admin.stdout)=={\\'status\\':\\'backed_up\\',\\'consistent_snapshot\\':True},\\'backup completion not verified; do not retry\\')\\n private(output)\\n for suffix in (\\'-wal\\',):\\n require(not os.path.exists(output+suffix) or os.stat(output+suffix).st_size==0,\\'snapshot has WAL frames; immutable read refused\\')\\n digest=hashlib.sha256()\\n with open(output,\\'rb\\') as stream:\\n for block in iter(lambda:stream.read(1024**2),b\\'\\'):digest.update(block)\\n frozen_digest=digest.hexdigest()\\n snapshot=counts(inspect_closed_snapshot(output,frozen_digest))\\n size=os.stat(output).st_size;require(0 10**12\n for number in value[group].values()):\n raise ValueError('count-only receipt values refused')\n return value\n" + }, + "execution/test_execution.py": { + "sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "content": "\"\"\"Synthetic custody/transport tests. No native data, Docker or cluster action.\"\"\"\nimport copy\nimport datetime\nimport io\nimport json\nimport os\nfrom pathlib import Path\nimport subprocess\nimport sys\nimport tempfile\nimport unittest\nfrom unittest.mock import patch\nfrom contextlib import redirect_stdout\n\nimport actuator\nfrom authority_journal import Journal, authority, fresh_scan\nfrom native_program import PROGRAM\nfrom receipt_safety import counts\n\nCASE = Path(__file__).resolve().parent.parent\nNOW = datetime.datetime(2026, 10, 11, 2, 0, tzinfo=datetime.timezone.utc)\nREVISION = 'e' * 40\nCOUNT = {'schema_version': 5, 'integrity': 'ok', 'read_only_pre_open': True, 'store_constructed': False,\n 'lifecycle': {'records': 3, 'events': 8, 'pending': 1},\n 'outbox': {'pending': 2, 'delivered': 10}, 'submissions': {'confirmed': 1, 'unresolved': 1}}\n\n\ndef accepted():\n approval = '11111111-1111-4111-8111-111111111111'\n review = 'review-22222222-2222-4222-8222-222222222222'\n disposition = 'disp-33333333-3333-4333-8333-333333333333'\n receipt = {'proposal_id': 'INFD-WP-0009-T05/zlib85091-r1',\n 'memo_id': 'infd-20261011-zlib-remediation-r1', 'memo_version': 1,\n 'memo_sha256': 'a' * 64, 'source_revision': REVISION, 'activation': 'APPROVED',\n 'authority_mode': 'ADMINISTER', 'target': 'realm:kubernetes/railiance01/informed-decision',\n 'verification_method': 'root-fixed-origin-native-readback', 'runtime_authenticated_grant': False, 'outcome_query': '/lifecycle/memos/infd-20261011-zlib-remediation-r1/outcomes?version=1',\n 'verified_at': '2026-10-11T02:00:00Z', 'accepted_at': '2026-10-11T01:59:00Z',\n 'review_memo_id': review, 'approval_id': approval, 'disposition_id': disposition}\n outcome = {'memo_id': receipt['memo_id'], 'review': {'memo_id': review, 'stale': False, 'intake_state': 'ready'},\n 'dispositions': [{'approval_id': None, 'submission_state': 'confirmed',\n 'disposition': {'verb': 'accept', 'memo_version': 1, 'memo_id': review,\n 'approval_id': approval, 'id': disposition,\n 'actor': {'kind': 'person', 'sub': 'uid=platform-root,ou=people,dc=netkingdom,dc=local'},\n 'at': receipt['accepted_at']}}]}\n return receipt, outcome\n\n\nclass AuthorityAndCustody(unittest.TestCase):\n def test_exact_nested_founder_receipt_not_top_level_approval(self):\n receipt, outcome = accepted()\n result = authority(receipt, outcome, 'a' * 64, REVISION, 'drill-copy', NOW)\n self.assertEqual(result['approval_id'], receipt['approval_id'])\n\n def test_pending_stale_wrong_actor_version_and_binding_refuse(self):\n mutations = [lambda r, o: r.update(activation='PENDING'),\n lambda r, o: r.update(memo_sha256='changed'),\n lambda r, o: r.update(source_revision='changed'),\n lambda r, o: r.update(target='other'),\n lambda r, o: r.update(verified_at='2026-10-11T01:00:00Z'),\n lambda r, o: r.update(verification_method='caller-asserted'),\n lambda r, o: r.update(runtime_authenticated_grant=True),\n lambda r, o: o['review'].update(stale=True),\n lambda r, o: o['review'].update(intake_state='pending'),\n lambda r, o: o['dispositions'][0].update(submission_state='unresolved'),\n lambda r, o: o['dispositions'][0]['disposition'].update(memo_version=3),\n lambda r, o: o['dispositions'][0]['disposition'].update(actor={'kind': 'agent', 'sub': 'platform-root'}),\n lambda r, o: o['dispositions'].append(copy.deepcopy(o['dispositions'][0]))]\n for mutate in mutations:\n with self.subTest(mutate=mutate):\n r, o = accepted()\n mutate(r, o)\n with self.assertRaises(ValueError):\n authority(r, o, 'a' * 64, REVISION, 'release', NOW)\n\n def test_expired_window_and_unknown_phase_refuse(self):\n r, o = accepted()\n with self.assertRaises(ValueError):\n authority(r, o, 'a' * 64, REVISION, 'arbitrary', NOW)\n late = datetime.datetime(2026, 10, 13, tzinfo=datetime.timezone.utc)\n r['verified_at'] = late.isoformat()\n with self.assertRaises(ValueError):\n authority(r, o, 'a' * 64, REVISION, 'rollback', late)\n\n def test_durable_intent_precedes_dispatch_and_never_retries(self):\n with tempfile.TemporaryDirectory() as directory:\n parent = Path(directory)\n os.chmod(parent, 0o700)\n journal = Journal(parent, {'case': 'fixture'})\n journal.start('drill-backup', {'approval_id': 'fixture'})\n self.assertEqual(json.loads(journal.path.read_text())['phases']['drill-backup']['state'], 'RUNNING')\n journal.close() # simulated crash before result\n recovered = Journal(parent, {'case': 'fixture'})\n with self.assertRaises(ValueError):\n recovered.start('drill-backup', {})\n with self.assertRaises(ValueError):\n recovered.start('drill-backup', {})\n recovered.close()\n\n def test_phase_order_and_uncertain_release_allows_only_distinct_recovery(self):\n with tempfile.TemporaryDirectory() as directory:\n os.chmod(directory, 0o700)\n j = Journal(directory, {'case': 'fixture'})\n with self.assertRaises(ValueError):\n j.start('release', {})\n for phase in actuator.PHASES[:6]:\n j.start(phase, {})\n j.finish(phase, {'all_checks_pass': True})\n j.start('release', {})\n j.finish('release', {'all_checks_pass': False})\n with self.assertRaises(ValueError):\n j.start('release', {})\n with self.assertRaises(ValueError):\n j.start('verify', {})\n j.start('rollback', {})\n j.finish('rollback', {'all_checks_pass': True})\n j.close()\n\n def test_secret_or_unknown_child_output_is_withheld(self):\n for body in ('not-json', '{\"all_checks_pass\":true,\"token\":\"private-value\"}',\n '{\"all_checks_pass\":true,\"snapshot_readonly\":{\"schema_version\":5}}'):\n with self.assertRaises(ValueError):\n actuator.json_result(subprocess.CompletedProcess([], 0, body, ''))\n wrong = copy.deepcopy(COUNT)\n wrong['outbox'] = {'private-row-value': 1}\n with self.assertRaises(ValueError):\n counts(wrong)\n counts(COUNT) # blocked/unresolved counts are not required to be zero.\n\n def test_binary_copy_is_bounded_private_and_never_echoed(self):\n blob = b'synthetic private fixture bytes'\n digest = __import__('hashlib').sha256(blob).hexdigest()\n metadata = {'all_checks_pass': True, 'snapshot_file': 'drill.sqlite', 'snapshot_bytes': len(blob),\n 'snapshot_sha256': digest, 'snapshot_readonly': COUNT,\n 'pod_name': 'fixture-pod', 'pod_uid': 'fixture-uid'}\n journal = type('FixtureJournal', (), {'data': {'phases': {'drill-backup': {'result': metadata}}}})()\n real_popen = subprocess.Popen\n for extra in (b'', b'oversized'):\n with self.subTest(extra=extra), tempfile.TemporaryDirectory() as folder:\n os.chmod(folder, 0o700)\n output = io.StringIO()\n\n def child(*args, **kwargs):\n return real_popen([sys.executable, '-c', 'import sys;sys.stdout.buffer.write(' + repr(blob + extra) + ')'],\n stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)\n\n with patch.object(actuator, 'CUSTODY', Path(folder)), patch.object(actuator, 'remote', return_value=metadata), \\\n patch('subprocess.Popen', side_effect=child), redirect_stdout(output):\n if extra:\n with self.assertRaises(ValueError):\n actuator.copy_snapshot('drill-copy', REVISION, {}, journal)\n else:\n result = actuator.copy_snapshot('drill-copy', REVISION, {}, journal)\n self.assertTrue(result['off_cluster_private_copy_verified'])\n self.assertEqual((Path(folder) / 'drill.sqlite').read_bytes(), blob)\n self.assertEqual(output.getvalue(), '')\n self.assertEqual((Path(folder) / 'drill.sqlite').stat().st_mode & 0o777, 0o600)\n\n def test_recreated_offline_volume_cannot_be_deleted(self):\n identity = {'Name': actuator.VOLUME, 'Labels': {'nonce': 'old'}, 'CreatedAt': 'old'}\n journal = type('FixtureJournal', (), {'data': {'phases': {\n 'offline-verify': {'result': {'created_volume_identity': identity}}}}})()\n inspected = [{**identity, 'CreatedAt': 'recreated'}]\n with patch.object(actuator, 'docker', return_value=subprocess.CompletedProcess([], 0, json.dumps(inspected), '')) as mocked:\n with self.assertRaises(ValueError):\n actuator.cleanup_offline(journal)\n self.assertEqual(mocked.call_count, 1)\n\n def test_offline_post_admin_integrity_and_original_hash_are_rechecked(self):\n for defect in ('none', 'post-integrity', 'original-hash'):\n with self.subTest(defect=defect), tempfile.TemporaryDirectory() as directory:\n folder=Path(directory);os.chmod(folder,0o700)\n snapshot=folder/'drill.sqlite';snapshot.write_bytes(b'private synthetic snapshot');os.chmod(snapshot,0o600)\n digest=actuator.sha(snapshot)\n prior={'snapshot_sha256':digest,'snapshot_readonly':COUNT}\n journal=type('FixtureJournal',(),{'data':{'phases':{'drill-copy':{'result':prior},'offline-verify':{'attempt_id':'nonce'}}},'note':lambda *args:None})()\n reads=[]\n volume={'Name':actuator.VOLUME,'Labels':{'informed-decision.case':'infd-zlib-20261011-r1','informed-decision.use':'offline-restore-only','informed-decision.attempt':'nonce'},'Driver':'local','Scope':'local','CreatedAt':'fixture','Options':None}\n def docker(argv, body=None, **kwargs):\n if argv[0]=='info':body=json.dumps('bnt-lap001')\n elif argv[:2]==['volume','ls']:body=''\n elif argv[:2]==['volume','create']:body=actuator.VOLUME\n elif argv[:2]==['volume','inspect']:body=json.dumps([volume])\n elif 'informed-decision-admin' in argv:\n body=json.dumps({key:COUNT[key] for key in ('schema_version','lifecycle','outbox','submissions')})\n if defect=='original-hash':snapshot.write_bytes(b'changed synthetic original')\n elif '--entrypoint' in argv and 'python' in argv:\n reads.append(argv);proof=copy.deepcopy(COUNT)\n if len(reads)==2 and defect=='post-integrity':proof['integrity']='corrupt'\n body=json.dumps(proof)\n else:raise AssertionError('unexpected offline command')\n return subprocess.CompletedProcess(argv,0,body,'')\n with patch.object(actuator,'CUSTODY',folder),patch.object(actuator,'CASE',CASE),patch.object(actuator,'docker',side_effect=docker),patch('subprocess.run',return_value=subprocess.CompletedProcess([],0,'{\"all_checks_pass\":true,\"private_copy_verified\":true}','')):\n if defect=='none':\n result=actuator.offline_verify(journal)\n self.assertEqual(result['offline_post_admin_readonly'],COUNT)\n self.assertTrue(result['original_snapshot_hash_unchanged'])\n else:\n with self.assertRaises(ValueError):actuator.offline_verify(journal)\n self.assertEqual(len(reads),2)\n\n def test_fresh_full_scan_db_expiry_and_new_findings_refuse(self):\n receipt={'image':actuator.IMAGE,'artifact_source_revision':'9b4bb25d325698ae543e7e8a8a3c3592db1f58fc','scanner':'aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969','no_suppression':True,'full_allseverity_scan':True,'exit_code':0,'completed_at':'2026-10-11T01:59:00Z','db_metadata':{'UpdatedAt':'2026-10-10T19:00:00Z','NextUpdate':'2026-10-11T19:00:00Z','Version':2},'db_sha256':'a'*64,'full_report_sha256':'b'*64}\n report={'Results':[{'Vulnerabilities':None}]}\n self.assertEqual(fresh_scan(receipt,report,NOW)['allseverity_findings'],0)\n mutations=[lambda r,p:r.update(no_suppression=False),lambda r,p:r.update(image='foreign'),lambda r,p:r.update(scanner='other'),lambda r,p:r.update(completed_at='2026-10-10T21:00:00Z'),lambda r,p:r['db_metadata'].update(NextUpdate='2026-10-11T01:59:00Z'),lambda r,p:p['Results'][0].update(Vulnerabilities=[{'Severity':'LOW'}]),lambda r,p:p.update(Results=[])]\n for mutate in mutations:\n r,p=copy.deepcopy(receipt),copy.deepcopy(report);mutate(r,p)\n with self.assertRaises(ValueError):fresh_scan(r,p,NOW)\n\n\nclass FixedNativeProgram(unittest.TestCase):\n def fixture(self):\n sealed = json.loads((CASE / 'sealed-live-deployment.json').read_text())\n live = copy.deepcopy(sealed)\n live['metadata'].update(generation=42)\n live['status'] = {'readyReplicas': 1, 'updatedReplicas': 1, 'observedGeneration': 42}\n dependencies = json.loads((CASE / 'sealed-native-dependencies.json').read_text())\n cm = copy.deepcopy(dependencies['configmap'])\n cm.pop('canonical_data_sha256')\n service = json.loads((CASE / 'candidate-deployment.json').read_text())\n source_service = json.loads((Path('/home/worsch/informed-decision/deploy/lifecycle/service.candidate.json')).read_text())\n cm['data'] = next(x for x in source_service['items'] if x['kind'] == 'ConfigMap')['data']\n pvc = copy.deepcopy(dependencies['pvc'])\n pvc['status'] = {'phase': 'Bound'}\n app = {'metadata': {'uid': '499868f2-eabc-4df4-ae31-b89ce58d750d', 'resourceVersion': '17'},\n 'spec': {'source': {'repoURL': 'https://forgejo.coulomb.social/coulomb/informed-decision.git',\n 'path': 'deploy/lifecycle', 'targetRevision': 'c96b0c6d881e855d1d158003c6de90ef390262e2'},\n 'destination': {'namespace': 'informed-decision', 'server': 'https://kubernetes.default.svc'}}}\n objects = {'deployment': live, 'configmap': cm, 'pvc': pvc, 'application': app}\n payload = {'phase': 'release', 'source_revision': REVISION, 'approval': {}, 'sealed': sealed,\n 'dependencies': dependencies, 'candidate': service,\n 'rollback': json.loads((CASE / 'rollback-deployment.json').read_text()),\n 'readonly': (CASE / 'sqlite_readonly.py').read_text(),'purpose_checks':(CASE/'check_installed.py').read_text(),\n 'installed_zlib': json.loads((CASE / 'installed-zlib-proof.json').read_text()), 'receipt_safety': (Path(__file__).parent / 'receipt_safety.py').read_text()}\n return objects, payload\n\n def execute_fake(self, objects, payload, ambiguous=False, schema_refused=False):\n writes = []\n calls = []\n\n def fake(argv, input=None, **kwargs):\n calls.append(argv)\n if argv[:2] == ['kubectl', 'get']:\n kind = argv[2]\n if kind in objects:\n body = objects[kind]\n elif kind == 'pods':\n body = {'items': [{'metadata': {'name': 'fixture-pod', 'uid': 'c4cb1550-feda-4097-9de4-d891a657b662',\n 'ownerReferences': [{'kind': 'ReplicaSet', 'name': 'fixture-rs', 'uid': 'rs-uid'}]},\n 'spec': objects['deployment']['spec']['template']['spec'],\n 'status': {'phase': 'Running', 'containerStatuses': [{'name':'informed-decision','ready': True,'imageID':objects['deployment']['spec']['template']['spec']['containers'][0]['image']}] }}]}\n elif kind == 'replicaset':\n body = {'metadata': {'uid': 'rs-uid', 'ownerReferences': [\n {'kind': 'Deployment', 'uid': payload['sealed']['metadata']['uid']}]}}\n elif kind == 'nodes':\n body = {'items': [{'metadata': {'name': 'fixture-node'}, 'status': {\n 'addresses': [{'address': '92.205.62.239'}], 'allocatable': {'cpu': '4'},\n 'conditions': [{'type': key, 'status': 'True' if key == 'Ready' else 'False'}\n for key in ('Ready', 'MemoryPressure', 'DiskPressure', 'PIDPressure')]}}]}\n else:\n raise AssertionError('unexpected fixed metadata route')\n return subprocess.CompletedProcess(argv, 0, json.dumps(body), '')\n if argv[:2] == ['kubectl', 'exec']:\n if schema_refused:\n return subprocess.CompletedProcess(argv, 1, '', 'withheld')\n return subprocess.CompletedProcess(argv, 0, json.dumps({\n 'all_checks_pass': True, 'live_readonly_schema_integrity_counts': COUNT}), '')\n if argv[:2] == ['kubectl', 'apply']:\n admitted = copy.deepcopy(payload['sealed'])\n admitted['spec']['template']['spec']['containers'][0]['image'] = (actuator.IMAGE if payload['phase']=='release' else payload['sealed']['spec']['template']['spec']['containers'][0]['image'])\n return subprocess.CompletedProcess(argv, 0, json.dumps(admitted), '')\n if argv[:2] == ['kubectl', 'describe']:\n return subprocess.CompletedProcess(argv, 0, 'Allocated resources:\\n cpu 3460m (86%)\\n', '')\n if argv[:2] == ['kubectl', 'diff']:\n return subprocess.CompletedProcess(argv, 1, '-image: base\\n+image: candidate\\n', '')\n if argv[:2] == ['kubectl', 'patch']:\n if '--dry-run=server' not in argv:\n writes.append(json.loads(input))\n if ambiguous:\n return subprocess.CompletedProcess(argv, 1, '', 'withheld')\n return subprocess.CompletedProcess(argv, 0, 'application.argoproj.io/informed-decision\\n', '')\n raise AssertionError('unexpected command')\n\n source = PROGRAM.replace('__PAYLOAD__', repr(json.dumps(payload))).replace(\n '__GUARD__', repr((CASE / 'change_guard.py').read_text()))\n output = io.StringIO()\n with patch('subprocess.run', side_effect=fake), redirect_stdout(output):\n try:\n exec(compile(source, 'fixed-native-fixture', 'exec'), {'__name__': '__fixture__'})\n except (ValueError, SystemExit):\n pass\n receipt = json.loads(output.getvalue()) if output.getvalue() else {'all_checks_pass': False}\n return receipt, writes, calls\n\n def test_only_existing_application_operation_and_deployment_are_requested(self):\n objects, payload = self.fixture()\n receipt, writes, calls = self.execute_fake(objects, payload)\n self.assertTrue(receipt['all_checks_pass'])\n self.assertFalse(receipt['rollout_verified'])\n self.assertEqual(len(writes), 1)\n operation = writes[0][-1]['value']\n self.assertFalse(operation['sync']['prune'])\n self.assertEqual(operation['sync']['resources'], [\n {'group': 'apps', 'kind': 'Deployment', 'name': 'informed-decision', 'namespace': 'informed-decision'}])\n self.assertTrue(any('--dry-run=server' in argv and argv[:2] == ['kubectl', 'patch'] for argv in calls))\n self.assertEqual(writes[0][0]['path'], '/metadata/uid')\n\n def test_source_overrides_automation_and_custody_drift_stop_before_write(self):\n mutations = [lambda o: o['application']['metadata'].update(uid='recreated'),\n lambda o: o['application']['spec'].update(syncPolicy={'automated': {}}),\n lambda o: o['application']['spec']['source'].update(kustomize={'images': ['other']}),\n lambda o: o['application']['spec'].update(sources=[{}]),\n lambda o: o['configmap']['metadata'].update(uid='recreated'),\n lambda o: o['pvc']['spec'].update(volumeName='replaced'),\n lambda o: o['deployment']['status'].update(readyReplicas=0)]\n for mutate in mutations:\n with self.subTest(mutate=mutate):\n objects, payload = self.fixture()\n mutate(objects)\n receipt, writes, calls = self.execute_fake(objects, payload)\n self.assertFalse(receipt['all_checks_pass'])\n self.assertEqual(writes, [])\n\n def test_preopen_schema_refusal_prevents_image_operation(self):\n objects, payload = self.fixture()\n receipt, writes, calls = self.execute_fake(objects, payload, schema_refused=True)\n self.assertFalse(receipt['all_checks_pass'])\n self.assertEqual(writes, [])\n\n\n def test_rollback_unready_candidate_never_reads_pod_or_database(self):\n objects, payload = self.fixture()\n payload['phase'] = 'rollback'\n objects['deployment']['status'].update(readyReplicas=0, updatedReplicas=0)\n objects['deployment']['spec']['template']['spec']['containers'][0]['image'] = actuator.IMAGE\n objects['application']['spec']['source']['targetRevision'] = REVISION\n receipt, writes, calls = self.execute_fake(objects, payload, schema_refused=True)\n self.assertTrue(receipt['all_checks_pass'])\n self.assertFalse(receipt['rollout_verified'])\n self.assertEqual(len(writes), 1)\n self.assertFalse(any(argv[:2] == ['kubectl', 'exec'] or argv[:3] == ['kubectl', 'get', 'pods'] for argv in calls))\n self.assertEqual(writes[0][-1]['value']['sync']['revision'], 'c96b0c6d881e855d1d158003c6de90ef390262e2')\n\n def test_rollback_still_refuses_custody_or_nonpair_image_drift(self):\n for defect in ('cm', 'pvc', 'image'):\n with self.subTest(defect=defect):\n objects, payload = self.fixture();payload['phase'] = 'rollback'\n objects['deployment']['status']['readyReplicas'] = 0\n if defect == 'cm':objects['configmap']['metadata']['uid'] = 'recreated'\n elif defect == 'pvc':objects['pvc']['spec']['volumeName'] = 'replaced'\n else:objects['deployment']['spec']['template']['spec']['containers'][0]['image'] = 'foreign-image'\n receipt, writes, calls = self.execute_fake(objects, payload)\n self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes, [])\n\n def test_recovery_verification_is_separate_ready_old_image_schema_proof(self):\n objects, payload = self.fixture();payload['phase'] = 'rollback-verify'\n resource={'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'}\n target='c96b0c6d881e855d1d158003c6de90ef390262e2'\n payload['operation_intent']={'state':'COMPLETE','started_at':'2026-10-11T01:00:00Z','result':{'operation_requested':True,'source_revision':target,'prune':False,'resources':[resource]}}\n objects['application']['status']={'operationState':{'phase':'Succeeded','startedAt':'2026-10-11T01:00:01Z','finishedAt':'2026-10-11T01:01:00Z','operation':{'initiatedBy':{'username':'custodian-codex'},'sync':{'revision':target,'resources':[resource]}},'syncResult':{'revision':target,'resources':[{**resource,'status':'Synced'}]}}}\n receipt, writes, calls = self.execute_fake(objects, payload)\n self.assertTrue(receipt['all_checks_pass']);self.assertTrue(receipt['recovery_verification'])\n self.assertEqual(writes, [])\n self.assertTrue(any(argv[:2]==['kubectl','exec'] for argv in calls))\n objects['deployment']['status']['readyReplicas'] = 0\n receipt, writes, calls = self.execute_fake(objects,payload)\n self.assertFalse(receipt['all_checks_pass'])\n\n def test_ambiguous_patch_is_never_retried(self):\n objects, payload = self.fixture()\n receipt, writes, calls = self.execute_fake(objects, payload, ambiguous=True)\n self.assertFalse(receipt['all_checks_pass'])\n self.assertEqual(len(writes), 1)\n\n def test_false_omitempty_needs_bound_current_request_and_exact_completion(self):\n objects,payload=self.fixture();payload['phase']='rollback-verify'\n resource={'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'}\n target='c96b0c6d881e855d1d158003c6de90ef390262e2'\n payload['operation_intent']={'state':'COMPLETE','started_at':'2026-10-11T01:00:00Z','result':{'operation_requested':True,'source_revision':target,'prune':False,'resources':[resource]}}\n objects['application']['status']={'operationState':{'phase':'Succeeded','startedAt':'2026-10-11T01:00:01Z','finishedAt':'2026-10-11T01:01:00Z','operation':{'initiatedBy':{'username':'custodian-codex'},'sync':{'revision':target,'resources':[resource]}},'syncResult':{'revision':target,'resources':[{**resource,'status':'Synced'}]}}}\n self.assertTrue(self.execute_fake(objects,payload)[0]['all_checks_pass'])\n mutations=[lambda o,p:o['application']['status']['operationState']['operation']['sync'].update(prune=True),\n lambda o,p:o['application']['status']['operationState']['operation']['sync'].update(prune=None),\n lambda o,p:o['application']['status']['operationState'].update(startedAt='2026-10-11T00:59:00Z'),\n lambda o,p:o['application']['status']['operationState']['operation'].update(initiatedBy={'username':'other'}),\n lambda o,p:o['application']['status']['operationState']['syncResult'].update(revision='foreign'),\n lambda o,p:o['application']['status']['operationState']['syncResult']['resources'][0].update(status='Pruned'),\n lambda o,p:p['operation_intent']['result'].update(prune=True),\n lambda o,p:p.update(operation_intent=None)]\n for mutate in mutations:\n o,p=copy.deepcopy(objects),copy.deepcopy(payload);mutate(o,p)\n receipt,writes,calls=self.execute_fake(o,p)\n self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[])\n\n def test_optimized_executor_refuses_before_any_input(self):\n result=subprocess.run([sys.executable,'-O',str(Path(__file__).parent/'actuator.py'),'--phase','release','--root-authority-receipt','/missing','--root-native-outcome','/missing','--source-revision',REVISION],capture_output=True,text=True)\n self.assertNotEqual(result.returncode,0)\n self.assertIn('optimized interpreter refused',result.stderr)\n\n\nif __name__ == '__main__':\n unittest.main()\n" + } + }, + "native_execution": false, + "case_evidence": { + "sqlite_readonly.py": { + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "content": "\"\"\"Pre-open schema/integrity/count proof; stdlib only, never constructs Store.\"\"\"\nimport argparse\nfrom contextlib import closing\nimport hashlib\nimport os\nimport re\nimport stat\nimport json\nfrom pathlib import Path\nimport sqlite3\n\n\ndef inspect_readonly(path, *, _closed_snapshot=False):\n path = Path(path)\n if not path.is_file() or path.is_symlink():\n raise ValueError('existing nonsymlink private database required')\n uri = path.resolve().as_uri() + '?mode=ro' + ('&immutable=1' if _closed_snapshot else '')\n # sqlite3.Connection context management ends transactions; it does not close.\n with closing(sqlite3.connect(uri, uri=True, timeout=5)) as db:\n db.execute('PRAGMA query_only=ON')\n db.execute('BEGIN')\n version = db.execute('PRAGMA user_version').fetchone()[0]\n if version != 5:\n raise ValueError('pre-open database is not schema5; refuse migration')\n if db.execute('PRAGMA integrity_check').fetchall() != [('ok',)]:\n raise ValueError('read-only integrity check refused')\n lifecycle = {name: db.execute('SELECT COUNT(*) FROM ' + table).fetchone()[0]\n for name, table in (('records', 'lifecycle_records'),\n ('events', 'lifecycle_events'),\n ('pending', 'lifecycle_pending'))}\n result = {'schema_version': version, 'lifecycle': lifecycle,\n 'outbox': dict(db.execute('SELECT state,COUNT(*) FROM outbox GROUP BY state')),\n 'submissions': dict(db.execute('SELECT state,COUNT(*) FROM submissions GROUP BY state')),\n 'integrity': 'ok', 'read_only_pre_open': True, 'store_constructed': False}\n db.rollback()\n return result\n\n\ndef inspect_closed_snapshot(path, expected_sha256):\n \"\"\"Only a privately retained, frozen main-file snapshot with no WAL frames.\n\n Caller must establish exclusive snapshot creation/admin exit/no writer, and\n supply the recorded frozen main digest. Never use for the live database.\n Immutable SQLite reads ignore stale SHM and never create/change sidecars.\n Existing sidecars remain custody evidence; nothing is deleted/checkpointed.\n \"\"\"\n path = Path(path)\n if re.fullmatch(r'[0-9a-f]{64}', expected_sha256) is None:\n raise ValueError('exact frozen snapshot digest required')\n def metadata(target):\n info = target.lstat()\n if not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) != 0o600 or info.st_nlink != 1:\n raise ValueError('private single-link snapshot custody required')\n return info\n main = metadata(path)\n if not 0 < main.st_size <= 512 * 1024**2:\n raise ValueError('bounded frozen snapshot required')\n def sidecars():\n identities = {}\n for suffix in ('-wal', '-shm'):\n target = Path(str(path) + suffix)\n if os.path.lexists(target):\n info = metadata(target)\n if info.st_uid != main.st_uid or info.st_gid != main.st_gid:\n raise ValueError('snapshot sidecar custody changed')\n if suffix == '-wal' and info.st_size != 0:\n raise ValueError('snapshot has WAL frames; immutable read refused')\n identities[suffix] = (info.st_dev, info.st_ino, info.st_size, info.st_mtime_ns)\n return identities\n before_sidecars = sidecars()\n def digest():\n value = hashlib.sha256()\n with path.open('rb') as stream:\n for block in iter(lambda: stream.read(1024**2), b''):\n value.update(block)\n return value.hexdigest()\n if digest() != expected_sha256:\n raise ValueError('frozen main-file digest changed before inspection')\n proof = inspect_readonly(path, _closed_snapshot=True)\n after = metadata(path)\n if (after.st_dev, after.st_ino, after.st_uid, after.st_gid, after.st_size) != (main.st_dev, main.st_ino, main.st_uid, main.st_gid, main.st_size):\n raise ValueError('frozen main-file identity changed')\n if digest() != expected_sha256 or sidecars() != before_sidecars:\n raise ValueError('frozen snapshot changed during inspection')\n return proof\n\n\nif __name__ == '__main__':\n parser = argparse.ArgumentParser(description=__doc__)\n parser.add_argument('--db', type=Path, required=True)\n args = parser.parse_args()\n try:\n print(json.dumps(inspect_readonly(args.db), sort_keys=True))\n except Exception:\n raise SystemExit('read-only schema5/integrity/count gate refused; no Store/admin open') from None\n" + }, + "change_guard.py": { + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "content": "\"\"\"Read-only exact Deployment and admission boundaries; no mutation authority.\"\"\"\nimport copy\nimport hashlib\nimport json\n\nBASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a'\nCANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23'\n\n\ndef dependency_projection(configmap, pvc):\n if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True\n or configmap['metadata']['namespace'] != 'informed-decision'\n or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051'\n or set(configmap.get('data', {})) != {'runtime.json'}\n or configmap.get('binaryData')):\n raise ValueError('unexpected immutable runtime config identity')\n if (pvc.get('kind') != 'PersistentVolumeClaim'\n or pvc['metadata']['namespace'] != 'informed-decision'\n or pvc['metadata']['name'] != 'informed-decision-data'\n or pvc.get('status', {}).get('phase') != 'Bound'\n or not pvc.get('spec', {}).get('volumeName')):\n raise ValueError('unexpected bound PVC custody')\n config = projection(configmap)\n config.pop('data')\n config['canonical_data_sha256'] = hashlib.sha256(json.dumps(\n configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest()\n return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'}\n\n\ndef check_dependencies(configmap, pvc, sealed):\n if dependency_projection(configmap, pvc) != sealed:\n raise ValueError('runtime config or PVC identity/custody changed')\n\n\ndef projection(value):\n value = copy.deepcopy(value)\n value.pop('status', None)\n for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'):\n value['metadata'].pop(key, None)\n for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'):\n value['metadata'].get('annotations', {}).pop(key, None)\n return value\n\n\ndef check_current(current, sealed):\n if projection(current) != sealed:\n raise ValueError('sealed live UID or configuration changed')\n\n\ndef check_admitted(admitted, sealed):\n expected = copy.deepcopy(sealed)\n containers = expected['spec']['template']['spec']['containers']\n if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE:\n raise ValueError('unexpected baseline container identity')\n containers[0]['image'] = CANDIDATE\n if projection(admitted) != expected:\n raise ValueError('admission changed configuration beyond the sole image pin')\n\n\ndef transport_result(exit_code, output):\n import json\n try:\n value = json.loads(output)\n except (ValueError, TypeError):\n return {'all_checks_pass': False, 'reason': 'invalid transport result'}\n if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True:\n return {'all_checks_pass': False, 'reason': 'read-only preflight refused'}\n return value\n" + }, + "check_installed.py": { + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "content": "import copy,json,time\nfrom datetime import datetime,timezone\nfrom informed_decision.policy import PolicyClient,CONTRACT,submitted_digest\npin='sha256:'+'b'*64\nreq={'id':'image-purpose-fixture','tenant':'tenant:platform','subject':{'id':'synthetic','type':'service','tenant':'tenant:platform'},'resource':{'id':'memo:fixture','type':'memo','system':'informed-decision','tenant':'tenant:platform'},'action':'register','context':{}}\nclass Transport:\n def request(self,*args,**kwargs):\n now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat()\n b={**copy.deepcopy({k:req[k] for k in ('tenant','subject','action','resource','context')}),'request_digest':'sha256:'+'e'*64,'submitted_request_digest':submitted_digest(req)}\n if self.purpose!='ABSENT':b['purpose']=self.purpose\n d={'id':'synthetic-decision','contract_version':CONTRACT,'request_id':req['id'],'effect':'allow','matched_policy_version':'v1','subject':req['subject'],'resource':req['resource'],'binding':b,'lifetime':{'kind':'ttl','not_before':stamp(now-1),'expires_at':stamp(now+60)},'provenance':{'policy_package':'fixture','policy_version':'v1','policy_package_digest':pin,'registry_snapshot_digest':'sha256:'+'c'*64,'evaluator':'flex-auth/fixture','decision_time':stamp(now)}}\n return 200,d\nchecks=[]\nfor purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}):\n t=Transport();t.purpose=purpose\n c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t)\n o=c.check(req)\n if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time())\n else:assert o.outcome=='invalid_decision' and o.decision_json is None\n checks.append(str(purpose))\nprint(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False}))\n" + }, + "post-ready-native-outcomes-command.py": { + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "content": "\"\"\"Run only inside existing admitted StateHub Pod AFTER verified candidate Ready.\n\nThe fixed existing dispatcher loads its internal credential; root never reads\nit. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an\nadvisory verdict emission or a substitute for separate evidence obligations.\nRoot records this bounded metadata receipt with verified PodUID/image/source.\nThis preparation only writes source; no request is made here.\n\"\"\"\nimport datetime,json,urllib.request,urllib.error\nfrom api.services.memo_dispatch import ORIGIN,NoRedirect,token_file\nid='infd-20261011-zlib-remediation-r1'\nreq=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')})\nopener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect())\ntry:\n with opener.open(req,timeout=15) as response:\n raw=response.read(1048577)\n if len(raw)>1048576:raise ValueError('oversize')\n r=json.loads(raw)\n print(json.dumps({'memo_id':id,'source_memo_version':1,'observed_at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'native_authenticated_canonical_lifecycle_outcomes':True,'native_provider_path_returned':True,'credential_material_output':False,'review':r.get('review'),'disposition_count':len(r.get('dispositions',[])),'dispositions':[{k:d.get(k) for k in ('id','approval_id','submission_state','disposition','approved_at','decided_at')} for d in r.get('dispositions',[])]}))\nexcept Exception as e:print(json.dumps({'memo_id':id,'status':'unverified','error_class':type(e).__name__}));raise SystemExit(1)\n" + }, + "installed-zlib-proof.json": { + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "content": "{\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"zlib_package\": \"1.3.2-r1\",\n \"files\": {\n \"lib/apk/db/installed\": [\n \"file\",\n 420,\n 0,\n 0,\n \"f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001\"\n ],\n \"usr/lib/libz.so.1.3.2\": [\n \"file\",\n 493,\n 0,\n 0,\n \"ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2\"\n ]\n }\n}\n" + } + } +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0 new file mode 100644 index 0000000..249eb1c --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0 @@ -0,0 +1,191 @@ +--- +id: INFD-WP-0009 +type: workplan +title: "Repair lifecycle consumer pin after Access Engine v2 policy release" +domain: infotech +repo: informed-decision +status: active +owner: codex +topic_slug: netkingdom +created: "2026-10-10" +updated: "2026-10-11" +flavor: implementation +depends_on: [] +related: + - FLEX-WP-0035 + - INFD-WP-0007 +state_hub_workstream_id: "77eaeabf-0644-595f-b3d5-1168e6a294c4" +--- + +## Diagnose and prepare exact config repair + +```task +id: INFD-WP-0009-T01 +status: done +priority: high +state_hub_task_id: "5c30c308-8fe2-5956-b0c1-66c80bcb07e9" +``` + +Native State Hub lifecycle submission returns HTTP 503 `invalid_decision`. +The service remains Ready but its configured lifecycle package is v1/cee6a79; +Access Engine lifecycle provider now runs v2/da01e045 after FLEX-WP-0035. +The envelope contract remains `flex-auth.decision-record.v1`; this is a policy +pin mismatch, not an envelope compatibility migration. Keep exact package, +version and digest enforcement. Source preparation and regression evidence are +in `docs/evidence/2026-10-10-lifecycle-consumer-pin-repair.md`. + +## Release and verify the config-only repair + +```task +id: INFD-WP-0009-T02 +status: done +priority: high +needs_human: false +state_hub_task_id: "1e6684d7-7676-5c70-b701-9dad124b4f07" +``` + +Apply only the reviewed immutable runtime ConfigMap and Deployment reference +through the existing owner GitOps path after exact scoped supervisor approval. +Image, schema, credentials, audience and review policy remain pinned. Retain +server dry-run/diff, readiness and native State Hub register/publish receipts; +retry with stable write keys, do not infer success from readiness. Root agent +owns live evidence and approval recording. This is a repair of the shipped +initial lifecycle, separate from INFD-WP-0008 expansion. + +**Verified 2026-10-11:** founder approved exact config-only revision +`7db8485ffecdebfabd77a9daec085553c74bf0bf`. Manual Argo Application operation +synced only `informed-decision-runtime-6c221878d051` and Deployment, prune false. +Application Succeeded/Healthy; generation24 observed24 Ready1; `/readyz`200; +consumer v2/da01e045 and unchanged image7f5c6cb verified. Native lifecycle +registration and publication succeeded (events28/29). A later review request +rejected packet validation; this separate caller error does not undo verified +authoring. Custodian evidence records original approval, execution and rollback: +`docs/evidence/2026-10-10-security-consolidation/infd-pin-repair-preflight.json`. + +## Explicitly reject advisory purpose at consumer boundary + +```task +id: INFD-WP-0009-T03 +status: done +priority: medium +state_hub_task_id: "ee798d7d-5e60-5247-9c9b-285a7f65cf11" +``` + +PolicyClient now validates binding purpose: absent or exact empty string only; +readback and malformed purposes are refused. Nine purpose variants and a real +provider response contamination test preserve the binding, pin, expiry and +obligations gates. This task covers source implementation and regression tests. +At source implementation time the runtime image lacked this patch. Service build/native release belongs +to T04, separate from the config-only T02 repair. + + +## Release the advisory-purpose source correction + +```task +id: INFD-WP-0009-T04 +status: done +priority: medium +state_hub_task_id: "0e1bb868-7bc2-5d4d-953c-e0edaf660ad0" +``` + +Build and scan a new service image including T03, retain provenance and backup +compatibility evidence, prepare a separate scoped image proposal, and verify +native binding/refusal after the owner's approved release. Do not fold an image +change into the config-only T02 proposal. The pre-release runtime baseline was exact7f5c6cb. + +**Historical local preparation 2026-10-11:** narrow single-module image overlay on immutable running +7f5c6cb; exact source policy SHA-256 9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62. +Local image/index b8b58944786015a5375304241c149d1dab885eb539d6d8945f56b01a3c2bc821 +is built and retained, unpublished and undeployed. Base layer prefix and runtime +configuration are preserved; installed-image 10 purpose variants pass; 13 +container checks include restart and synthetic consistent backup/restore. A +fresh Trivy database scan has zero HIGH/CRITICAL findings, with its Alpine EOL +warning retained. See `docs/evidence/2026-10-11-purpose-hardening/README.md`. +Remaining gates: source-bound registry publication and exact digest verification, +fresh native snapshot/restore compatibility, owner GitOps server dry-run/diff, +separate scoped supervisor approval and native post-release binding/refusal. +No release approval or actual production-data restore is inferred from fixtures. + +**Publication and release preparation 2026-10-11:** actual owner CI +task11484/run3 succeeds at source3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168, +publishing immutable image763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a. +The failed run1/f66 and run2/ace are retained as refinements in the same trial. +Anonymous registry readback proves all8base compressed blobs/rootfs unchanged +plus only policy.py; legacy media-type/default-config serialization differences +are explicit. Pulled published artifact UID10001/GID10001, installed mode0644 +and exactpolicy hash, all10purpose forms pass. Full pinned scanner/DB covers +44packages: 0HIGH/CRITICAL, 1fixableMEDIUM CVE-2026-85091 in zlib1.3.2-r0, +identical actual current-base scan. This is not a zero-CVE release or estate +risk grade. T05 and INFD-RISK-20261011-ZLIB-85091 are live owner follow-through. + +The exact separate20document informed-decision packet is prepared and +offline typed/intake validated, with no submission or founder disposition +claimed. Source candidates differ solely in Deploymentimage and retain +ConfigMap6c221878d051/schema5/PVC/identity/policy pins. Fresh read-only +serverdryrun/clientdiff pass with sealedUID/fullconfiguration and actualCM/PVC +UID/contentchecksum/boundvolume custody; optimizedinterpreters refused. +Independent review refinement requires stdlib mode=ro schema5/integrity/count +checks before any native/offline admin/Store open (native gate notexecuted); existingmanual +Argo remains Healthy/OutOfSync at7db8485, not whole-app reconciled. +Remaining gates: independent owner review, actual founder native approval, +fresh protected native consistent snapshot/off-cluster custody/offline restore, +refresh preflight, exact owner-source pin/Deployment-only manual sync and +verified native installed purpose/refusal/lifecycle behavior. Synthetic native +placement checks are not new provider authorization evidence. Runtime remains7f5c. + +Evidence: `docs/evidence/2026-10-11-purpose-image-release/`. + +**Actual approved release and independent verification, 2026-10-11:** source +c96b0c6d881e855d1d158003c6de90ef390262e2, fresh version2 founder acceptance, +existing-snapshot rescue, isolated actual-data compatibility and disposable +cleanup, fresh cutover backup/private exact copy, and Deployment-only manual +image763c release are evidenced. Independent read-only reconciliation confirms +Ready generation25, exact image/module/config/PVC/controlled Pod, UID/GID10001, +schema5/integrity and preserved live counts16records/56events/0pending, +336delivered/43confirmed; healthz/readyz200. Authenticated actual lifecycle.outcomes +readback at07:01:37 after Ready07:00:42 traverses installed canonical PDP gates. +Installed ten purpose fixtures (two canonical allows/eight refusals) are synthetic, +not provider advisory responses. The separate denial probe remains unexecuted. +This satisfies the bounded T04 release/consumer verification, without declaring +full emission guarantee, all human MFA or a zero-CVE image. Earlier preparation +gates above are historical. Original failed drill-copy and final verifier +UNCERTAIN remain immutable; no failed phase replay/helper amendment or scored +new trial. Argo omitted false prune is independently reconciled to exact approved +non-pruning operation; future verifier defect is live unpromoted INFD-IN-0010. +T05 remains todo/due2026-10-18, so WP0009 remains active. +Review/evidence: docs/reviews/2026-10-11-purpose-native-outcome-product-owner-acceptance.md +and docs/evidence/2026-10-11-purpose-native-acceptance/. + +## Resolve inherited published-image zlib finding + +```task +id: INFD-WP-0009-T05 +status: progress +priority: medium +state_hub_task_id: "1743596f-8558-5a6b-afef-4dd5c1e9c0ae" +``` + +Owner follow-through `INFD-RISK-20261011-ZLIB-85091` tracks actual published +base and purpose-overlay scan finding CVE-2026-85091: zlib 1.3.2-r0, fixed +1.3.2-r1, scanner MEDIUM; this is not an estate risk grade. Prepare and verify a +separate source-bound base/dependency refresh, then obtain distinct native +release approval before changing the workload. Review due 2026-10-18; the date +is a manual owner follow-up, with no automatic expiry/rollback controller. +T04 cannot be treated as a zero-CVE release or silently include the base fix. +Preserve the original detection, pending founder disposition and remediation +evidence. Close only after actual installed-package proof and full rescan. + +Evidence: `docs/evidence/2026-10-11-purpose-image-release/inherited-vulnerability-follow-through.json`. + +2026-10-11 — T05 bounded zlib-only source candidate preparation: +Exactcurrent763base andsignedofficialr1/packageindex buildoffline. Actual44package +fullscan sameDB baseline1MEDCVE85091→localcandidate0allseverity. Finalfilesystem +deltaonlylibz+APKdb;36appfiles/policy9d/world/keys/Python/runtime unchanged. +Localcandidate is unpublished/unapproved;4sourcenegative tests+actualbackend +and10purpose checks pass. Source/evidence:docs/evidence/2026-10-11-zlib-remediation-candidate/. +T05progress/planactive:actualownerCIpublishedprovenance/fullscan/SBOM,distinctnative +founderreleaseapproval andactualinstalledr1/runtime/fullrescan still required. +NoT04/nativec96/helper/journal/DB/ConfigMap/PVC/identity/policy changes. + + +Prepared distinct source-only T05 zlib85091 native release packet in `docs/evidence/2026-10-11-zlib-image-release/`: actual published image f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23, full scan zero44packages, fresh image-only candidate and unchanged-baseline rollback server dry-runs. New private drill/cutover custody, no-network schema5 clone, immutable prior T04 helpers/journals, explicitfalse request plus Argo bool-omitempty completion guards and separate post-Ready authenticated canonical lifecycle/PDP proof. Product/Platform exact acknowledgment and NEW founder informed decision still required before protected database/workload action; old T04 approval is excluded. T05 remains progress and risk stays open until actual installed acceptance/native rescan. INFD-IN-0010 remains unpromoted. diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f new file mode 100644 index 0000000..9074439 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f @@ -0,0 +1,106 @@ +{ + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact zlib85091 fixed image-only release, new protected backup/restore compatibility drill and database-preserving rollback?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Published owner CI image f558 has zero full-scan findings across44packages; only zlib1.3.2-r0 to r1 changes. Fresh schema5 private backup/isolated clone drill and cutover snapshot precede one Deployment manual prune=false Recreate sync. Separate founder go required; old T04 acceptance/history unchanged. Rollback image763c/Applicationc96 retains latestDB. Release reserves30minutes before Oct12 deadline.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Founder review" + }, + "target": { + "kind": "environment", + "id": "realm:kubernetes/railiance01/informed-decision", + "label": "Informed Decision zlib85091 image-only remediation on railiance01", + "environment": "production" + }, + "terms": "Approve only INFD-WP-0009-T05/zlib85091-r1 trialinfd-zlib-20261011-r1 and exact attached digests: new private drillbackup/copy, isolatedschema5pre/admin/postintegrityandcounts, exactcreatedclonecleanup, freshcutoverbackup/copy, manualfinalsourceDeployment-onlyimagef558/prune=false. ImmutableCM/PVC/config/credentials/audience/resources sealed. Freshrootnativeauthenticated confirmed founderACCEPTsource1 beforeeveryphase; receiptsarebookkeeping/noautonomousgrant. Rollbackonlyimage763c/Applicationc96 preserveslatestDB, separateverification. AllphasesbeginbeforeOct12 23:59:59Z; releasereserves30minutes; newdecisionbeyond. ExistingT04UNCERTAINEvidenceunaltered, nooldhelperamendment/phase retry, noresidualpromotion ordoctrinechange." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "item_id": "rollback-preflight-json", + "label": "rollback-preflight.json", + "hash": "sha256:0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "item_id": "published-verification-json", + "label": "published-verification.json", + "hash": "sha256:dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "item_id": "artifact-comparison-json", + "label": "artifact-comparison.json", + "hash": "sha256:a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "item_id": "installed-zlib-proof-json", + "label": "installed-zlib-proof.json", + "hash": "sha256:6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "item_id": "sealed-live-deployment-json", + "label": "sealed-live-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "sealed-native-dependencies-json", + "label": "sealed-native-dependencies.json", + "hash": "sha256:042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "item_id": "candidate-deployment-json", + "label": "candidate-deployment.json", + "hash": "sha256:487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "item_id": "rollback-deployment-json", + "label": "rollback-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "execution-bundle-json", + "label": "execution-bundle.json", + "hash": "sha256:09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + } + ], + "highlights": [ + { + "id": "protected-drill-and-recreate", + "item_id": "decision-packet-md", + "note": "This new T05 decision authorizes protected real-data backup/copy and no-network same-schema restore drill plus brief Recreate image release. Scan0 is actual published44package result, not installed acceptance. Rollback preserves latestDB; priorfailedT04evidence retained. No oldapprovalreuse. Allphase starts expireOct12; release reserves30minutesforrecovery; noautomaticextension.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Requested decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294 new file mode 100644 index 0000000..9806488 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294 @@ -0,0 +1,207 @@ +[ + { + "id": "infd-20261011-zlib-remediation-r1", + "register": { + "memo": { + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact zlib85091 fixed image-only release, new protected backup/restore compatibility drill and database-preserving rollback?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Published owner CI image f558 has zero full-scan findings across44packages; only zlib1.3.2-r0 to r1 changes. Fresh schema5 private backup/isolated clone drill and cutover snapshot precede one Deployment manual prune=false Recreate sync. Separate founder go required; old T04 acceptance/history unchanged. Rollback image763c/Applicationc96 retains latestDB. Release reserves30minutes before Oct12 deadline.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Founder review" + }, + "target": { + "kind": "environment", + "id": "realm:kubernetes/railiance01/informed-decision", + "label": "Informed Decision zlib85091 image-only remediation on railiance01", + "environment": "production" + }, + "terms": "Approve only INFD-WP-0009-T05/zlib85091-r1 trialinfd-zlib-20261011-r1 and exact attached digests: new private drillbackup/copy, isolatedschema5pre/admin/postintegrityandcounts, exactcreatedclonecleanup, freshcutoverbackup/copy, manualfinalsourceDeployment-onlyimagef558/prune=false. ImmutableCM/PVC/config/credentials/audience/resources sealed. Freshrootnativeauthenticated confirmed founderACCEPTsource1 beforeeveryphase; receiptsarebookkeeping/noautonomousgrant. Rollbackonlyimage763c/Applicationc96 preserveslatestDB, separateverification. AllphasesbeginbeforeOct12 23:59:59Z; releasereserves30minutes; newdecisionbeyond. ExistingT04UNCERTAINEvidenceunaltered, nooldhelperamendment/phase retry, noresidualpromotion ordoctrinechange." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "item_id": "rollback-preflight-json", + "label": "rollback-preflight.json", + "hash": "sha256:0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "item_id": "published-verification-json", + "label": "published-verification.json", + "hash": "sha256:dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "item_id": "artifact-comparison-json", + "label": "artifact-comparison.json", + "hash": "sha256:a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "item_id": "installed-zlib-proof-json", + "label": "installed-zlib-proof.json", + "hash": "sha256:6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "item_id": "sealed-live-deployment-json", + "label": "sealed-live-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "sealed-native-dependencies-json", + "label": "sealed-native-dependencies.json", + "hash": "sha256:042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "item_id": "candidate-deployment-json", + "label": "candidate-deployment.json", + "hash": "sha256:487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "item_id": "rollback-deployment-json", + "label": "rollback-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "execution-bundle-json", + "label": "execution-bundle.json", + "hash": "sha256:09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + } + ], + "highlights": [ + { + "id": "protected-drill-and-recreate", + "item_id": "decision-packet-md", + "note": "This new T05 decision authorizes protected real-data backup/copy and no-network same-schema restore drill plus brief Recreate image release. Scan0 is actual published44package result, not installed acceptance. Rollback preserves latestDB; priorfailedT04evidence retained. No oldapprovalreuse. Allphase starts expireOct12; release reserves30minutesforrecovery; noautomaticextension.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Requested decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null + }, + "documents": [ + { + "digest": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "media_type": "text/markdown", + "content_base64": "IyBSZXF1ZXN0ZWQgZGVjaXNpb24KCkFwcHJvdmUgdGhlIGV4YWN0IG5ldyBUMDUgemxpYi1vbmx5IGltYWdlIHJlbGVhc2UgYW5kIHByb3RlY3RlZCBzYW1lLXNjaGVtYSBjb21wYXRpYmlsaXR5IGRyaWxsLCBhZnRlciBmaW5hbCBpbmRlcGVuZGVudCBQcm9kdWN0IGFuZCBQbGF0Zm9ybSBhY2tub3dsZWRnbWVudHMuIFRoaXMgcGFja2V0IGlzIHByZXBhcmVkIGFuZCB1bmFwcHJvdmVkOyBmcmVzaCByb2xsYmFjayBzZXJ2ZXIgZHJ5LXJ1biBwYXNzZWQgd2l0aCBleGFjdGx5IHRoZSBiYXNlbGluZSBpbWFnZSBhbmQgZW1wdHkgZGlmZi4gUm9vdCByZXRhaW5zIGV4YWN0IGZpbmFsIG93bmVyIHNvdXJjZSByZXZpc2lvbiBhbmQgaW5kZXBlbmRlbnQgYWNrbm93bGVkZ21lbnRzIGJlZm9yZSBhc2tpbmcgZm9yIG5hdGl2ZSBmb3VuZGVyIGRpc3Bvc2l0aW9uLiBUaGUgcHJpb3IgVDA0IGFwcHJvdmFsIGlzIGV4Y2x1ZGVkLgoKVGhlIGFkbWl0dGVkIG93bmVyIENJIHB1Ymxpc2hlZCBpbW11dGFibGUgaW1hZ2UgZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyBmcm9tIHNvdXJjZTliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMuIEl0cyBhY3R1YWwgZnVsbCBzY2FuIHJlcG9ydHMgemVybyBmaW5kaW5ncyBhY3Jvc3M0NHBhY2thZ2VzLiBUaGUgc2FtZSBzY2FuIERCIGZpbmRzIG9uZU1FRElVTSBvbiBjdXJyZW50aW1hZ2U3NjNjLiBTaWduZWQgb2ZmaWNpYWwgQWxwaW5lIHpsaWIxLjMuMi1yMSBpcyB0aGUgc29sZSBwYWNrYWdlIGNoYW5nZTsgYWN0dWFsIHB1Ymxpc2hlZCBmaWxlc3lzdGVtIHByb29mIHNob3dzIG9ubHlsaWJ6IGFuZEFQS2luc3RhbGxlZGRhdGFiYXNlIGNoYW5nZXMsIHplcm8zMTNkaXJlY3RvcnltZXRhZGF0YSBjaGFuZ2VzLCByZXRhaW5lZG5pbmViYXNlbGF5ZXJzIGFuZCB1bmNoYW5nZWQzNmFwcGxpY2F0aW9uZmlsZXMvcHVycG9zZXBvbGljeS9jb25maWcvY3JlZGVudGlhbHMvYXVkaWVuY2UvcmVzb3VyY2VzLiBSZWdpc3RyeS10by1kYWVtb24gY29uZmlnIHNlcmlhbGl6YXRpb24gZGlmZmVycyB1bmRlciBjbG9zZWQgdmVyaWZpZWQgbm9ybWFsaXphdGlvbiwgd2l0aG91dCBydW50aW1lIGNoYW5nZS4KClRoZSBleGFjdCBvcmRlcmVkIHByb3RlY3RlZCBkcmlsbCBhbmQgcmVsZWFzZSBhcmUgc3BlY2lmaWVkIGluIG5hdGl2ZS1iYWNrdXAtcmVzdG9yZS1wcm90b2NvbC5tZCBhbmQgaGFzaC1ib3VuZCBleGVjdXRpb24gYnVuZGxlLiBOZXcgYmFja3VwIHBhdGhzLCBpc29sYXRlZCBjbG9uZSBhbmQgam91cm5hbCBhcmUgZGlzdGluY3QgZnJvbSBvbGQgZXZpZGVuY2UuIFJlYWwgcHJpdmF0ZSBkYXRhIHdpbGwgZW50ZXIgb25seSBhcHByb3ZlZCBwcml2YXRlIGN1c3RvZHkgYW5kIHRoZSBpc29sYXRlZCBuby1uZXR3b3JrIGNsb25lOyBjb250ZW50IG5ldmVyIGVudGVycyBwdWJsaWMgZXZpZGVuY2UuIEZhaWxlZC91bmNlcnRhaW4gcGhhc2Ugc3RhdGVzIHJlbWFpbiBkdXJhYmxlIGFuZCBjYW5ub3QgYmUgcmV0cmllZC4gUHJpb3IgVDA0IGZhaWxlZCBjb3B5L3ZlcmlmeSBhcmUgcHJlc2VydmVkLgoKQWZ0ZXIgc2NoZW1hNS9pbnRlZ3JpdHkvZXhhY3RjbG9uZWNvdW50cyBwYXNzIGFuZCBjbG9uZSBjbGVhbnVwIHN1Y2NlZWRzLCBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5IHByZWNlZGVzIHRoZSBleGFjdCBtYW51YWwgaW1hZ2Utb25seSBEZXBsb3ltZW50IHN5bmMuIEN1cnJlbnQgYmFzZWxpbmUgaXMgaGVhbHRoeWdlbmVyYXRpb24yNS9pbWFnZTc2M2MvQXBwbGljYXRpb25jOTYuIEltbXV0YWJsZUNNNmMvUFZDL1BvZGNvbmZpZ3VyYXRpb24vUERQIG9yaWdpbnMgcmVtYWluIHNlYWxlZC4gRnJlc2hub2RlQ1BVMzQ2MG9mNDAwMG0gc3VwcG9ydHMgdW5jaGFuZ2VkUmVjcmVhdGUsIHdpdGggYW5vdGhlciBjaGVjayBiZWZvcmUgZWZmZWN0LiBCcmllZiBhdmFpbGFiaWxpdHkgaW50ZXJydXB0aW9uIGV4cGVjdGVkLgoKUm9sbGJhY2sgcmVzdG9yZXMgRGVwbG95bWVudGltYWdlNzYzYyBhbmRBcHBsaWNhdGlvbmM5NiB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBvbGQgc25hcHNob3QgcmVzdG9yYXRpb24uIFNlcGFyYXRlIGluc3RhbGxlZC9uYXRpdmUgaGVhbHRoL2N1c3RvZHkvUERQLWdhdGVkIHJlYWRiYWNrIGFuZCBhY3R1YWwgbmF0aXZlIGltYWdlIHJlc2NhbiBwcmVjZWRlIFQwNSBjbG9zdXJlLiBBbGxwaGFzZSBzdGFydHMgZXhwaXJlT2N0MTIgMjM6NTk6NTlaOyByZWxlYXNlIHJlc2VydmVzMzBtaW51dGVzZm9ydmVyaWZpY2F0aW9uYW5kcmVjb3ZlcnkuIEFmdGVyZXhwaXJ5IGEgbmV3Zm91bmRlcmRlY2lzaW9uIGlzIHJlcXVpcmVkLiBFVVIwbmV3cmVjdXJyaW5naW5mcmFzdHJ1Y3R1cmUsIGJvdW5kZWRwcml2YXRlIHN0b3JhZ2UgYW5kdW5wcmljZWRhdHRlbmRlZHRpbWUuIE5vIG5ld2RvY3RyaW5lL2F1dG9waWxvdC9jcmVkZW50aWFsZ3JhbnQgaXMgYXV0aG9yaXplZC4K" + }, + { + "digest": "sha256:a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtcmVsZWFzZS1wcm9wb3NhbCIsCiAgInZlcnNpb24iOiAxLAogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWI4NTA5MS1yMSIsCiAgInRyaWFsX2lkIjogImluZmQtemxpYi0yMDI2MTAxMS1yMSIsCiAgInN0YXRlIjogInByZXBhcmVkLXVuYXBwcm92ZWQiLAogICJtZW1vX2lkIjogImluZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMSIsCiAgIm1lbW9fdmVyc2lvbiI6IDEsCiAgInRhc2siOiAiSU5GRC1XUC0wMDA5LVQwNSIsCiAgImNhbmRpZGF0ZV9pbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJhcnRpZmFjdF9zb3VyY2VfcmV2aXNpb24iOiAiOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYyIsCiAgInByaW9yX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInByaW9yX2FwcGxpY2F0aW9uX3JldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiLAogICJzb3VyY2VfcmV2aXNpb24iOiBudWxsLAogICJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQiOiB0cnVlLAogICJuYXRpdmVfYWN0aW9uc19leGVjdXRlZCI6IGZhbHNlLAogICJhcHByb3ZhbF9pZCI6IG51bGwsCiAgImF1dGhvcml0eV9tb2RlIjogIkFETUlOSVNURVIiLAogICJ0YXJnZXQiOiAicmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbiIsCiAgImNvc3RfZXN0aW1hdGVfZXVyIjogMCwKICAicmlzayI6ICJQcml2YXRlIHNhbWUtc2NoZW1hIGJhY2t1cCBjb3BpZXMgYW5kIGJyaWVmIFJlY3JlYXRlIGF2YWlsYWJpbGl0eSBnYXAuIEZhaWxlZCBvciBhbWJpZ3VvdXMgcGhhc2VzIHJldGFpbmVkOyBubyByZXBsYXkuIFJvbGxiYWNrIGNoYW5nZXMgRGVwbG95bWVudCBpbWFnZS9zb3VyY2Ugb25seSwgcmV0YWlucyBsYXRlc3QgZGF0YWJhc2UuIiwKICAiZXhlY3V0ZV9ieSI6ICIyMDI2LTEwLTEyVDIzOjU5OjU5WiIsCiAgInJlbGVhc2VfbXVzdF9zdGFydF9ieSI6ICIyMDI2LTEwLTEyVDIzOjI5OjU5WiIsCiAgIm1heF9zbmFwc2hvdF9ieXRlcyI6IDUzNjg3MDkxMiwKICAibWF4aW11bV9uZXdfc25hcHNob3RfcGF5bG9hZF9ieXRlc19lYWNoX3NpdGUiOiAxMDczNzQxODI0LAogICJsb2NhbF9leHRyYV9kaXNwb3NhYmxlX2Nsb25lX21heF9ieXRlcyI6IDUzNjg3MDkxMiwKICAicHJpdmF0ZV9tZXRhZGF0YV9hbmRfc3FsaXRlX3NpZGVjYXJzX2FkZGl0aW9uYWxfaGVhZHJvb21fYnl0ZXMiOiAxNjc3NzIxNiwKICAidW5ib3VuZF9pbnB1dHMiOiBbCiAgICAiZXhhY3QgY29tbWl0dGVkIG93bmVyIHJlbmRlcmluZyByZXZpc2lvbiByZXRhaW5lZCBpbiByb290IHN1cGVydmlzZWQgcmVjZWlwdCIsCiAgICAiUHJvZHVjdCBhbmQgUGxhdGZvcm0gZmluYWwgYWNrbm93bGVkZ21lbnRzIiwKICAgICJjb25maXJtZWQgZm91bmRlciBleGFjdCBuZXcgZGlzcG9zaXRpb24iCiAgXSwKICAicHVibGlzaGVkX3ZlcmlmaWNhdGlvbl9zaGEyNTYiOiAiZGQ0ZWVjZjBjMTAzZGNhNzkyMjA5NGE4YmVlYjk5Yjc3YWU5NmZkMWQ1ZmU1MzJlMzdiZDgzM2RhYTAyNjE0ZSIsCiAgIm5hdGl2ZV9yZWFkb25seV9wcmVmbGlnaHRfc2hhMjU2IjogIjU2NjM3OTk0ZGZkYWU0NmE2ZjlhYjQ0MmMyZmY5YjI1OTIxMjY1MGIzNWViOThkODk2YzVlODM3ZjAxY2UyZjkiLAogICJleGVjdXRvcl9wbGFuX3NoYTI1NiI6ICI3NTBhNDM4NjI3N2RjNzljMzIxM2U2YWVkMTdhZTU2ODYzMzJiZmQ1ODdhNTVlNWU4N2ViZjM3NzZhNjNhYjBjIiwKICAiZXhlY3V0aW9uX2J1bmRsZV9zaGEyNTYiOiAiMDliMGE4ZWQ2YzNjN2QxZTk0ZjVmNzAzYTJkNTgzNGNhMjZmYzE2NmNmYzhmNGY5YjQ1MTFhYjcwZWMxNmFjOSIsCiAgInJvbGxiYWNrX3ByZWZsaWdodF9zaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgInBvc3RfcmVhZHlfbmF0aXZlX3Byb3ZpZGVyX3Byb2JlIjogImNhbm9uaWNhbCBsaWZlY3ljbGUub3V0Y29tZXMgU09VUkNFMSB0aHJvdWdoIGV4aXN0aW5nIGFkbWl0dGVkIFN0YXRlSHViIGRpc3BhdGNoZXI7IGNyZWRlbnRpYWxzIHN0YXkgaW5zaWRlIFBvZDsgYm91bmRlZCBtZXRhZGF0YSBjb3JyZWxhdGVkIHRvIHZlcmlmaWVkIGNhbmRpZGF0ZSBpbWFnZS9Qb2Qvc291cmNlIgp9Cg==" + }, + { + "digest": "sha256:0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "media_type": "text/markdown", + "content_base64": "IyBUMDUgemxpYjg1MDkxIHJlbGVhc2Ug4oCUIHByZWxpbWluYXJ5LCB1bmFwcHJvdmVkCgpUaGlzIGlzIGEgZGlzdGluY3QgcHJvcG9zYWwvdHJpYWwgZm9yIGV4aXN0aW5nIElORkQtV1AtMDAwOS1UMDUuIFRoZSBhY3R1YWwgVDA0IHNvdXJjZTIgYWNjZXB0YW5jZSBkb2VzIG5vdCBhdXRob3JpemUgaXQuIFByZXZpb3VzIFIxIGNvcHkgYW5kIFIyIHZlcmlmeSBVTkNFUlRBSU4gam91cm5hbCBzdGF0ZXMgcmVtYWluIHVudG91Y2hlZC4gSU5GRC1JTi0wMDEwIHJlbWFpbnMgYW4gdW5wcm9tb3RlZCBnZW5lcmFsIHZlcmlmaWVyIHJlc2lkdWFsOyB0aGlzIG5ldyB0YXNrLXNwZWNpZmljIHZlcmlmaWVyIGlzIGEgcHJlcmVxdWlzaXRlIG9mIGFjdGl2ZSBUMDUsIG5vdCBhbiBhbWVuZG1lbnQgb2YgdGhlIG9sZCBhcHByb3ZlZCBoZWxwZXIuCgpFeGFjdCBpbnRlbmRlZCBpbWFnZSBmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzIHdhcyBidWlsdCBieSBhZG1pdHRlZCBvd25lciBDSTExNTM0L3J1bjQgZnJvbSA5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjLiBQdWJsaWNhdGlvbiBpcyBub3QgaW5zdGFsbGVkIGFjY2VwdGFuY2UuIEZpbmFsIHBhY2tldCByZXF1aXJlcyBpbmRlcGVuZGVudCBwdWJsaXNoZWQtaW1hZ2Ugc2Nhbi9ydW50aW1lL2ZpbGVzeXN0ZW0vc291cmNlIHByb29mIGFuZCBmcmVzaCByZWFkLW9ubHkgbmF0aXZlIHByb2plY3Rpb24vb25lLW9iamVjdCBkcnktcnVuIGV2aWRlbmNlLiBVbnRpbCBhbGwgZmluYWwgaW5wdXRzIGFuZCBpbmRlcGVuZGVudCBvd25lciBhY2tub3dsZWRnbWVudHMgYXJlIGZyb3plbiwgZXhlY3V0aW9uLXBsYW4gc3RhdGUgcmVtYWlucyBwcmVsaW1pbmFyeSBhbmQgdGhlIGFjdHVhdG9yIHJlZnVzZXMgYmVmb3JlIGFueSBhdXRob3JpdHksIGpvdXJuYWwgb3IgbmF0aXZlIGFjdGlvbi4KCkFmdGVyIGEgTkVXIGV4YWN0IGNvbmZpcm1lZCBmb3VuZGVyIGFjY2VwdGFuY2UsIHJvb3QgZnJlc2hseSBhdXRoZW50aWNhdGVzIGZpeGVkLW9yaWdpbiBuYXRpdmUgc291cmNlLXZlcnNpb24xIG91dGNvbWVzIGJlZm9yZSBlYWNoIHBoYXNlLiBSZWNlaXB0IGZpbGVzIGFyZSBzdXBlcnZpc2VkIGJvb2trZWVwaW5nLCBub3Qgc2lnbmVkIGdyYW50cyBvciBhdXRvbm9teS4gV3JvbmcgdGFzaywgc291cmNlLCBtZW1vL3ZlcnNpb24sIHN0YWxlL3BlbmRpbmcvYWdlbnQgZGlzcG9zaXRpb24sIG9sZCBUMDQgYWNjZXB0YW5jZSBvciBjaGFuZ2VkIGlucHV0cyByZWZ1c2UuIFJvb3QgcmV0YWlucyBleGFjdCBhcHByb3ZlZCBzb3VyY2UgcmV2aXNpb24vZGlnZXN0cyBhbmQgYWN0aW9uIHJlc3VsdHMgaW4gc3VwZXJ2aXNpb24uIEFwcHJvdmFsIGRvZXMgbm90IHByb21vdGUgYW55IGFnZW50LgoKRml4ZWQgcGhhc2Ugb3JkZXI6IGRyaWxsLWJhY2t1cCDihpIgZHJpbGwtY29weSDihpIgb2ZmbGluZS12ZXJpZnkg4oaSIGNsZWFudXAtb2ZmbGluZSDihpIgY3V0b3Zlci1iYWNrdXAg4oaSIGN1dG92ZXItY29weSDihpIgcmVsZWFzZSDihpIgdmVyaWZ5LiBOZXcgcHJpdmF0ZSBuYXRpdmUgL2RhdGEvcHJpdmF0ZS96bGliODUwOTEtcjEsIHJvb3QgLnByaXZhdGUtYmFja3Vwcy8yMDI2MTAxMS1pbmZkLXpsaWItcjEgYW5kIGxvY2FsIHZvbHVtZSBpbmZkLXpsaWItcjEtcmVzdG9yZS0yMDI2MTAxMSBhcmUgZGlzdGluY3QgZnJvbSBhbGwgVDA0IGN1c3RvZHkuIE5ldyBwcml2YXRlIGpvdXJuYWwgaW50ZW50IGlzIGZzeW5jZWQgUlVOTklORyBiZWZvcmUgZGlzcGF0Y2g7IG5vIGF0dGVtcHRlZCBwaGFzZSByZXBsYXkuIEZpeGVkIG91dHB1dCBzY2hlbWEgY29udGFpbnMgb25seSBjb3VudHMsIGhhc2hlcywgb2JqZWN0IGlkZW50aXR5IGFuZCBib29sZWFuIHJlc3VsdHM7IHJhdyBlcnJvcnMgYW5kIHByaXZhdGUgY29udGVudCBhcmUgd2l0aGhlbGQuIEV4aXN0aW5nIG5hdGl2ZSBzbmFwc2hvdHMvZGF0YWJhc2Uvc2lkZWNhcnMgYXJlIG5ldmVyIHJlbW92ZWQgb3IgcmVzdG9yZWQgb3ZlciBjdXJyZW50IGRhdGEuCgpGcmVzaCBiYWNrdXAgaW5zcGVjdGlvbiB1c2VzIGNvcGllZCBleHBsaWNpdC1jbG9zZSBTUUxpdGUgaGVscGVyczogbGl2ZSBhbmQgb2ZmbGluZSBjbG9uZSByZWFkZXJzIGFyZSBtb2RlPXJvL3F1ZXJ5X29ubHkgYW5kIFdBTC1hd2FyZSwgYmVmb3JlIGFueSBTdG9yZS9hZG1pbiBvcGVuLiBJbW11dGFibGUgcmVhZGVyIGlzIHVzZWQgb25seSBmb3IgZnJlc2hseSBjbG9zZWQgaGFzaC1ib3VuZCBwcml2YXRlIHNuYXBzaG90IHdpdGggYWJzZW50L3plcm8gV0FMIGZyYW1lcyBhbmQgc3RhYmxlIGlkZW50aXR5L21ldGFkYXRhL2RpZ2VzdCBiZWZvcmUvYWZ0ZXIgcmVhZC9jb3B5LiBNYWluIGFuZCBzaWRlY2FycyByZW1haW4gcmV0YWluZWQuIFNjaGVtYSBtdXN0IGVxdWFsNSwgaW50ZWdyaXR5IG9rLCBhbmQgZXhhY3Qgc25hcHNob3QvaXNvbGF0ZWQgY2xvbmUgY291bnRzIG1hdGNoIGJlZm9yZS9hZG1pbi9hZnRlci4gVGhlIGRldGFjaGVkIGxvY2FsIGNsb25lIGhhcyBuZXR3b3JrIG5vbmUsIHJlYWRvbmx5IHJvb3QsIG5vIHNlcnZpY2UvcnVudGltZSBjb25maWcvY3JlZGVudGlhbCBtb3VudHM7IG9ubHkgbmFycm93bHkgc2NvcGVkIFVJRDAgQ0FQX0NIT1dOIGluaXRpYWxpemVyIHByZWNlZGVzIFVJRDEwMDAxIHJlYWRzL2FkbWluLiBPcmlnaW5hbCBwcml2YXRlIGNvcHkgaXMgaGFzaC1zdGFibGUuIENsZWFudXAgcmVtb3ZlcyBvbmx5IHRoZSBkaXNwb3NhYmxlIHZvbHVtZSB3aG9zZSBub25jZS9sYWJlbHMvY3JlYXRpb24gbWV0YWRhdGEgbWF0Y2ggdGhpcyB0cmlhbCwgYmVmb3JlIGN1dG92ZXIuCgpFYWNoIHNuYXBzaG90IGlzIGJvdW5kZWQ1MTJNaUIuIEF0IG1vc3QgdHdvIG5ldyBzbmFwc2hvdHMgb2NjdXB5IGVhY2ggbmF0aXZlL29mZmNsdXN0ZXIgY3VzdG9keSAoMUdpQiBwYXlsb2FkIGVhY2gpOyB0aGUgZGlzcG9zYWJsZSBvZmZjbHVzdGVyIGNsb25lIGFkZHM1MTJNaUIgd2hpbGUgcHJlc2VudCwgcGx1czE2TWlCIHNpZGVjYXIvbWV0YWRhdGEgcmVzZXJ2ZS4gTmV3IG5hdGl2ZSBkcmlsbCBwaGFzZSBjaGVja3MgZnJlZSBzcGFjZSBmb3IgYm90aDsgbG9jYWwgY3VzdG9keSBjaGVja3MgdHdvIHNuYXBzaG90IGJvdW5kcyBwbHVzIHJlc2VydmUuIEV4aXN0aW5nIFQwNCByZXRlbnRpb24gY29uc3VtZXMgYWRkaXRpb25hbCBwcmUtZXhpc3Rpbmcgc3BhY2UuIEVVUjAgcmVjdXJyaW5nIGluZnJhc3RydWN0dXJlIGVzdGltYXRlOyBodW1hbi9jb21wdXRlIHRpbWUgdW5wcmljZWQuCgpDdXRvdmVyIHRha2VzIGEgZnJlc2ggbmF0aXZlIGJhY2t1cCBhbmQgZXhhY3Qgb2ZmY2x1c3RlciBjb3B5LiBSZWxlYXNlIHRoZW4gcmVxdWlyZXMgbGF0ZXN0IHNjaGVtYTUgcmVhZG9ubHkgcHJvb2YsIHNlYWxlZCBQb2QvRGVwbG95bWVudC9jb25maWcvUFZDIGN1c3RvZHkgYW5kIHNhbWUgYmFzZWxpbmUgaW1hZ2U3NjNjL2N1cnJlbnQgQXBwbGljYXRpb24gc291cmNlYzk2LCBhIGhlYWx0aHkgc2luZ2xlIHRhcmdldDkyLjIwNS42Mi4yMzkgbm9kZSBhbmQgZnJlc2ggcmVxdWVzdGVkIENQVSDiiaQgYWxsb2NhdGFibGUgY2FwYWNpdHkuIFJlY3JlYXRlIGFuZCByZXNvdXJjZXMgcmVtYWluIHVuY2hhbmdlZC4gU2VydmVyIGRyeS1ydW4vY2xpZW50IGRpZmYgbXVzdCBzaG93IG9ubHkgdGhlIGltYWdlLiBBcHBsaWNhdGlvbiBVSUQvcmVzb3VyY2VWZXJzaW9uL3NvdXJjZSBDQVMgZGlzcGF0Y2hlcyBtYW51YWwgZXhhY3QgZmluYWwgcmV2aXNpb24sIGluaXRpYXRlZEJ5IGN1c3RvZGlhbi1jb2RleCwgZXhwbGljaXQgcHJ1bmU9ZmFsc2UgYW5kIG9ubHkgYXBwcy9EZXBsb3ltZW50IGluZm9ybWVkLWRlY2lzaW9uIGluIGl0cyBuYW1lc3BhY2UuIE5vIHdob2xlLUFwcGxpY2F0aW9uIHN5bmMsIG5hbWVzcGFjZS9jb25maWcvY3JlZGVudGlhbC9yZXNvdXJjZSBjaGFuZ2Ugb3IgcHJ1bmluZy4KClZlcmlmaWNhdGlvbiByZWFkcyBpbWFnZUlEL3JlYWRpbmVzcy9vd25lciBjaGFpbi9leGFjdCBjb25maWd1cmVkIFBvZCBmaWVsZHMsIHNjaGVtYTUvaW50ZWdyaXR5L21ldGFkYXRhIGNvdW50cywgaW5zdGFsbGVkIHBvbGljeSBoYXNoIGFuZCBzeW50aGV0aWMgcHVycG9zZSByZWZ1c2FscywgaGVhbHRoMjAwLCBpbnN0YWxsZWQgZml4ZWQgemxpYiBhbmQgZXhhY3QgaW1hZ2UgcHJvb2YuIEFmdGVyIGV4YWN0IGNhbmRpZGF0ZSBSZWFkeSBhbmQgdmVyaWZpZWQgcm9sbG91dCwgcm9vdCBleGVjdXRlcyBhdHRhY2hlZCBwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IGluc2lkZSB0aGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kLiBJdCBjYWxscyBjYW5vbmljYWwgbGlmZWN5Y2xlLm91dGNvbWVzIGZvciBpbmZkLTIwMjYxMDExLXpsaWItcmVtZWRpYXRpb24tcjEgU09VUkNFdmVyc2lvbjEgYXQgZGlzcGF0Y2hlciBmaXhlZCBPUklHSU4gd2l0aCBOb1JlZGlyZWN0L3Byb3h5IGRpc2FibGVkOyBleGlzdGluZyBpbnRlcm5hbCB0b2tlbl9maWxlIHN0YXlzIGluc2lkZSB0aGF0IFBvZCBhbmQgbm8gdG9rZW4vYm9keS9wcml2YXRlIGNvbnRlbnQgaXMgZXhwb3J0ZWQuIFJvb3QgcmV0YWlucyBib3VuZGVkIEhUVFAtc3VjY2VzcyBtZXRhZGF0YS9vYnNlcnZhdGlvbnRpbWUgYW5kIGNvcnJlbGF0ZXMgdmVyaWZpZWQgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UsIHRoZW4gcmVjaGVja3MgdGhvc2UgaWRlbnRpdGllcy4gVGhpcyBhY3R1YWwgcHJvdmlkZXIvUERQLWdhdGVkIHByZXNlcnZhdGlvbiBwcm9vZiBpcyBzZXBhcmF0ZSBmcm9tIGluc3RhbGxlZCBzeW50aGV0aWMyYWxsb3c4cmVmdXNlOyBib3RoIGFyZSByZXF1aXJlZCBiZWZvcmUgdGFzayBjbG9zdXJlLiBJdCBkb2VzIG5vdCBhc3NlcnQgcHJvdmlkZXIgYWR2aXNvcnkgZW1pc3Npb25zIG9yIG5ldyBkb2N0cmluZS4gQXJnbzMuNS4zIG9taXRzIGZhbHNlIHBydW5lIGluIG9wZXJhdGlvbiBzdGF0dXM6IG1pc3Npbmcgb3IgZXhhY3RmYWxzZSBpcyBhY2NlcHRlZCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBqb3VybmFsJ3MgQ09NUExFVEUgZXhwbGljaXRmYWxzZSByZXF1ZXN0LCBleGFjdCBzb3VyY2UvcmVzb3VyY2VzL2luaXRpYXRpb24sIG9wZXJhdGlvbiBzdGFydCBhZnRlciBvdXIgZHVyYWJsZSBhdHRlbXB0LCBib3VuZGVkIGZpbmlzaCBhbmQgb25lIFN5bmNlZCBEZXBsb3ltZW50IHJlc3VsdC4gVHJ1ZS9udWxsL3N0cmluZy9wcmlvci9mb3JlaWduL2V4dHJhLXJlc291cmNlIHJlc3VsdHMgcmVmdXNlLgoKUm9sbGJhY2sg4oaSIHJvbGxiYWNrLXZlcmlmeSBpcyBzZXBhcmF0ZSBhbmQgcGVybWl0dGVkIG9ubHkgYWZ0ZXIgYSByZWNvcmRlZCByZWxlYXNlIGF0dGVtcHQuIEl0IHN3aXRjaGVzIG9ubHkgQXBwbGljYXRpb24gc291cmNlIGJhY2sgdG8gYzk2IGFuZCBEZXBsb3ltZW50IGltYWdlNzYzYzsgaXQgbmV2ZXIgcmVzdG9yZXMgYW4gb2xkIHNuYXBzaG90IG92ZXIgdGhlIGxhdGVzdCBkYXRhYmFzZS4gUmVjb3ZlcnkgZGlzcGF0Y2ggd29ya3MgZXZlbiBpZiBjYW5kaWRhdGUgUG9kIGlzIGFic2VudC91bnJlYWR5IGFuZCBuZXZlciBkZXBlbmRzIG9uIGNhbmRpZGF0ZSBEQiBpbnNwZWN0aW9uLiBSZWNvdmVyeSB2ZXJpZmljYXRpb24gc2VwYXJhdGVseSByZXF1aXJlcyBSZWFkeTEvb2xkIGltYWdlL2N1cnJlbnQgc2NoZW1hNS9kYXRhLWN1c3RvZHkgYW5kIGV4YWN0IHJlY29yZGVkIHNjb3BlZCBjb21wbGV0aW9uLiBBbGwgcGhhc2VzIG11c3QgYmVnaW4gYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVo7IHJlbGVhc2UgbXVzdCBiZWdpbiBhdCBsZWFzdDMwbWludXRlcyBlYXJsaWVyLiBCZXlvbmQgZXhwaXJ5IHN0b3AgYW5kIG9idGFpbiBhIG5ldyBmb3VuZGVyIGRlY2lzaW9uOyBubyBhdXRvbWF0aWMgZXh0ZW5zaW9uIG9yIGVtZXJnZW5jeSBncmFudC4gQSBmYWlsZWQvdW5jZXJ0YWluIGF0dGVtcHQgcmVxdWlyZXMgaW5mb3JtZWQgcmVjb3ZlcnkgcmF0aGVyIHRoYW4gcmV0cnkuCgpUMDUgcmVtYWlucyBwcm9ncmVzcyB1bnRpbCBhY3R1YWwgaW5zdGFsbGVkIGFjY2VwdGFuY2UgYW5kIG5hdGl2ZSByZXNjYW4gcHJvdmUgdGhlIGZpbmRpbmcgYWJzZW50LiBObyBSaXNrIEVuZ2luZSBncmFkZSBpcyBhc3NpZ25lZC4gT25seSB0aGVuIG1heSBvd25lciBjbG9zZSBUMDUvcmlzayBhbmQgY29uc2lkZXIgZmluaXNoaW5nIFdQOSwgd2l0aCBleGlzdGluZyByZXNpZHVhbHMgbGl2ZSBmaXJzdC4KCkFjdHVhbCByZWxlYXNlIGFuZCBpbnN0YWxsZWQgdmVyaWZpY2F0aW9uIGFsc28gcmVxdWlyZSBmaXhlZCBwcml2YXRlIHJvb3Qgc2NhbiByZWNlaXB0IGFuZCByZXRhaW5lZCBmdWxscmVwb3J0IGF0IC90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4te3JlY2VpcHQsZnVsbH0uanNvbiwgc3VwZXJ2aXNlZCBtZXRhZGF0YSBiaW5kaW5nIHRvIGV4YWN0IGltbXV0YWJsZWY1NTgvYXJ0aWZhY3Rzb3VyY2U5YjQvc2Nhbm5lcmRpZ2VzdDYyYjEuIEJlZm9yZSBqb3VybmFsIHN0YXJ0LCBmdWxscmVwb3J0aGFzaCBtdXN0IG1hdGNoLCBubyBzdXBwcmVzc2lvbi9hbGxzZXZlcml0eSBmbGFncyB0cnVlLCBleGl0MCwgbm9uZW1wdHkgdmFsaWQgZnVsbHJlc3VsdHMgY29udGFpbiB6ZXJvIGZpbmRpbmdzLCBzY2FuIGNvbXBsZXRlZCB3aXRoaW40aG91cnMgYW5kIG5vdyBwcmVjZWRlcyBEQiBOZXh0VXBkYXRlLiBUaGUgcHVibGlzaGVkIERCIGV4cGlyZXMyMDI2LTEwLTExVDE4OjU5OjUwWjsgaXQgaXMgbm90IHZhbGlkIHVudGlsIHJlbGVhc2UgZGVhZGxpbmUuIFJvb3QgcmVmcmVzaGVzIERCIGFuZCByZXNjYW5zIHRoZSBzYW1lIGltbXV0YWJsZSBpbWFnZSBhcyByb3V0aW5lIHJlYWQtb25seSB2ZXJpZmljYXRpb24gd2hlbiBuZWVkZWQsIHJldGFpbmluZyBhbGwgcmF3IHB1YmxpY3NjYW4gYXJ0aWZhY3RzLiBBbnkgbmV3IGZpbmRpbmcgcmVmdXNlcyByZWxlYXNlL2Nsb3N1cmUgYW5kIGlzIHJldGFpbmVkIGZvciBpbmZvcm1lZCByZWFzc2Vzc21lbnQvbmV3IGRlY2lzaW9uIGFzIG5lZWRlZCwgbmV2ZXIgZmlsdGVyZWQgb3IgaWdub3JlZC4gRXhpc3RpbmcgcmlzayBzdGF5cyBvcGVuIHVudGlsIGFjdHVhbCBpbnN0YWxsZWQgcHJvb2YvbmF0aXZlIHJlc2Nhbi4K" + }, + { + "digest": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQwOjE1LjU0MDg3NCswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiB7CiAgICAiYXBpVmVyc2lvbiI6ICJhcHBzL3YxIiwKICAgICJraW5kIjogIkRlcGxveW1lbnQiLAogICAgIm1ldGFkYXRhIjogewogICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgImFyZ29jZC5hcmdvcHJvai5pby90cmFja2luZy1pZCI6ICJpbmZvcm1lZC1kZWNpc2lvbjphcHBzL0RlcGxveW1lbnQ6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICJpbmZvcm1lZC1kZWNpc2lvbi5jb3Vsb21iLnNvY2lhbC9hZG1pc3Npb24iOiAiYXBwcm92ZWQ7IElORkQtV1AtMDAwNyBjdXRvdmVyIgogICAgICB9LAogICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICJuYW1lc3BhY2UiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAidWlkIjogImE1ODhlMTBhLTkwZDItNDg4My05NzVlLTZkZDhiOGZlY2E5MiIKICAgIH0sCiAgICAic3BlYyI6IHsKICAgICAgInByb2dyZXNzRGVhZGxpbmVTZWNvbmRzIjogNjAwLAogICAgICAicmVwbGljYXMiOiAxLAogICAgICAicmV2aXNpb25IaXN0b3J5TGltaXQiOiAxMCwKICAgICAgInNlbGVjdG9yIjogewogICAgICAgICJtYXRjaExhYmVscyI6IHsKICAgICAgICAgICJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjogImluZm9ybWVkLWRlY2lzaW9uIgogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0cmF0ZWd5IjogewogICAgICAgICJ0eXBlIjogIlJlY3JlYXRlIgogICAgICB9LAogICAgICAidGVtcGxhdGUiOiB7CiAgICAgICAgIm1ldGFkYXRhIjogewogICAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIKICAgICAgICAgIH0sCiAgICAgICAgICAibGFiZWxzIjogewogICAgICAgICAgICAiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjogInJldmlldyIsCiAgICAgICAgICAgICJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjogImluZm9ybWVkLWRlY2lzaW9uIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInNwZWMiOiB7CiAgICAgICAgICAiYXV0b21vdW50U2VydmljZUFjY291bnRUb2tlbiI6IGZhbHNlLAogICAgICAgICAgImNvbnRhaW5lcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0tFWUNBUEVfSVNTVUVSIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIjogImh0dHBzOi8va2MuY291bG9tYi5zb2NpYWwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0NPTlRBSU5FUl9DT05GSUciLAogICAgICAgICAgICAgICAgICAidmFsdWUiOiAiL2NvbmZpZ3VyYXRpb24vcnVudGltZS5qc29uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgICAgICAgICAgICAgImltYWdlUHVsbFBvbGljeSI6ICJJZk5vdFByZXNlbnQiLAogICAgICAgICAgICAgICJsaXZlbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAzLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICAgICAgICJwb3J0cyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgImNvbnRhaW5lclBvcnQiOiA4MDgwLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJodHRwIiwKICAgICAgICAgICAgICAgICAgInByb3RvY29sIjogIlRDUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJjb250YWluZXJQb3J0IjogODA4MSwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAid29ya2xvYWQiLAogICAgICAgICAgICAgICAgICAicHJvdG9jb2wiOiAiVENQIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInJlYWRpbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAzLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInJlc291cmNlcyI6IHsKICAgICAgICAgICAgICAgICJsaW1pdHMiOiB7CiAgICAgICAgICAgICAgICAgICJjcHUiOiAiNTAwbSIsCiAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAiMjU2TWkiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJlcXVlc3RzIjogewogICAgICAgICAgICAgICAgICAiY3B1IjogIjVtIiwKICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICI2NE1pIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgICAgICJhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb24iOiBmYWxzZSwKICAgICAgICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJkcm9wIjogWwogICAgICAgICAgICAgICAgICAgICJBTEwiCiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVhZE9ubHlSb290RmlsZXN5c3RlbSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJzdGFydHVwUHJvYmUiOiB7CiAgICAgICAgICAgICAgICAiZmFpbHVyZVRocmVzaG9sZCI6IDEyLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInRlcm1pbmF0aW9uTWVzc2FnZVBhdGgiOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAgICJ0ZXJtaW5hdGlvbk1lc3NhZ2VQb2xpY3kiOiAiRmlsZSIsCiAgICAgICAgICAgICAgInZvbHVtZU1vdW50cyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvZGF0YSIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImRhdGEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi9ydW4vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJydW50aW1lIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvdG1wIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImNvbmZpZ3VyYXRpb24iLAogICAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24vcG9saWN5IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvdmFyL3J1bi9zZWNyZXRzL2luZm9ybWVkLWRlY2lzaW9uL2F1ZGl0IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYXVkaXQiLAogICAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24va3ViZXJuZXRlcyIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmVybmV0ZXMtYXBpIiwKICAgICAgICAgICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvd29ya2xvYWQtcmVnaXN0cnkiLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9yZXF1ZXN0ZXIiLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJzaXR0aW5nLXJlcXVlc3RlciIsCiAgICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAiZG5zUG9saWN5IjogIkNsdXN0ZXJGaXJzdCIsCiAgICAgICAgICAicmVzdGFydFBvbGljeSI6ICJBbHdheXMiLAogICAgICAgICAgInNjaGVkdWxlck5hbWUiOiAiZGVmYXVsdC1zY2hlZHVsZXIiLAogICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgImZzR3JvdXAiOiAxMDAwMSwKICAgICAgICAgICAgImZzR3JvdXBDaGFuZ2VQb2xpY3kiOiAiT25Sb290TWlzbWF0Y2giLAogICAgICAgICAgICAicnVuQXNHcm91cCI6IDEwMDAxLAogICAgICAgICAgICAicnVuQXNOb25Sb290IjogdHJ1ZSwKICAgICAgICAgICAgInJ1bkFzVXNlciI6IDEwMDAxLAogICAgICAgICAgICAic2VjY29tcFByb2ZpbGUiOiB7CiAgICAgICAgICAgICAgInR5cGUiOiAiUnVudGltZURlZmF1bHQiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAic2VydmljZUFjY291bnQiOiAicmV2aWV3IiwKICAgICAgICAgICJzZXJ2aWNlQWNjb3VudE5hbWUiOiAicmV2aWV3IiwKICAgICAgICAgICJ0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kcyI6IDQ1LAogICAgICAgICAgInZvbHVtZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAicGVyc2lzdGVudFZvbHVtZUNsYWltIjogewogICAgICAgICAgICAgICAgImNsYWltTmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1kYXRhIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJlbXB0eURpciI6IHsKICAgICAgICAgICAgICAgICJtZWRpdW0iOiAiTWVtb3J5IiwKICAgICAgICAgICAgICAgICJzaXplTGltaXQiOiAiMTZNaSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiZW1wdHlEaXIiOiB7CiAgICAgICAgICAgICAgICAibWVkaXVtIjogIk1lbW9yeSIsCiAgICAgICAgICAgICAgICAic2l6ZUxpbWl0IjogIjE2TWkiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmFtZSI6ICJ0bXAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjkyLAogICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmFtZSI6ICJjb25maWd1cmF0aW9uIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAicHJvamVjdGVkIjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICAgInNvdXJjZXMiOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAic2VydmljZUFjY291bnRUb2tlbiI6IHsKICAgICAgICAgICAgICAgICAgICAgICJhdWRpZW5jZSI6ICJmbGV4LWF1dGgiLAogICAgICAgICAgICAgICAgICAgICAgImV4cGlyYXRpb25TZWNvbmRzIjogMzYwMCwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogInRva2VuIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImF1ZGl0IiwKICAgICAgICAgICAgICAic2VjcmV0IjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImtleSI6ICJ0b2tlbiIsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAidG9rZW4iCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAic2VjcmV0TmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1hdWRpdCIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICAgInByb2plY3RlZCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInNlcnZpY2VBY2NvdW50VG9rZW4iOiB7CiAgICAgICAgICAgICAgICAgICAgICAiZXhwaXJhdGlvblNlY29uZHMiOiA2MDAsCiAgICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6ICJjYS5jcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogImNhLmNydCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmUtcm9vdC1jYS5jcnQiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgImNvbmZpZ01hcCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI5MiwKICAgICAgICAgICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLXdvcmtsb2FkLXJlZ2lzdHJ5IgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5hbWUiOiAid29ya2xvYWQtcmVnaXN0cnkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJzaXR0aW5nLXJlcXVlc3RlciIsCiAgICAgICAgICAgICAgInNlY3JldCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAgICJpdGVtcyI6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJrZXkiOiAiY2xpZW50LXNlY3JldCIsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiY2xpZW50LXNlY3JldCIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlLAogICAgICAgICAgICAgICAgInNlY3JldE5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tc2l0dGluZy1yZXF1ZXN0ZXIiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiY2FuZGlkYXRlX2RlcGxveW1lbnQiOiB7CiAgICAiYXBpVmVyc2lvbiI6ICJhcHBzL3YxIiwKICAgICJraW5kIjogIkRlcGxveW1lbnQiLAogICAgIm1ldGFkYXRhIjogewogICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgImFyZ29jZC5hcmdvcHJvai5pby90cmFja2luZy1pZCI6ICJpbmZvcm1lZC1kZWNpc2lvbjphcHBzL0RlcGxveW1lbnQ6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICJpbmZvcm1lZC1kZWNpc2lvbi5jb3Vsb21iLnNvY2lhbC9hZG1pc3Npb24iOiAiYXBwcm92ZWQ7IElORkQtV1AtMDAwNyBjdXRvdmVyIgogICAgICB9LAogICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICJuYW1lc3BhY2UiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAidWlkIjogImE1ODhlMTBhLTkwZDItNDg4My05NzVlLTZkZDhiOGZlY2E5MiIKICAgIH0sCiAgICAic3BlYyI6IHsKICAgICAgInByb2dyZXNzRGVhZGxpbmVTZWNvbmRzIjogNjAwLAogICAgICAicmVwbGljYXMiOiAxLAogICAgICAicmV2aXNpb25IaXN0b3J5TGltaXQiOiAxMCwKICAgICAgInNlbGVjdG9yIjogewogICAgICAgICJtYXRjaExhYmVscyI6IHsKICAgICAgICAgICJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjogImluZm9ybWVkLWRlY2lzaW9uIgogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0cmF0ZWd5IjogewogICAgICAgICJ0eXBlIjogIlJlY3JlYXRlIgogICAgICB9LAogICAgICAidGVtcGxhdGUiOiB7CiAgICAgICAgIm1ldGFkYXRhIjogewogICAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIKICAgICAgICAgIH0sCiAgICAgICAgICAibGFiZWxzIjogewogICAgICAgICAgICAiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjogInJldmlldyIsCiAgICAgICAgICAgICJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjogImluZm9ybWVkLWRlY2lzaW9uIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInNwZWMiOiB7CiAgICAgICAgICAiYXV0b21vdW50U2VydmljZUFjY291bnRUb2tlbiI6IGZhbHNlLAogICAgICAgICAgImNvbnRhaW5lcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0tFWUNBUEVfSVNTVUVSIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIjogImh0dHBzOi8va2MuY291bG9tYi5zb2NpYWwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0NPTlRBSU5FUl9DT05GSUciLAogICAgICAgICAgICAgICAgICAidmFsdWUiOiAiL2NvbmZpZ3VyYXRpb24vcnVudGltZS5qc29uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6ZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyIsCiAgICAgICAgICAgICAgImltYWdlUHVsbFBvbGljeSI6ICJJZk5vdFByZXNlbnQiLAogICAgICAgICAgICAgICJsaXZlbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAzLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICAgICAgICJwb3J0cyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgImNvbnRhaW5lclBvcnQiOiA4MDgwLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJodHRwIiwKICAgICAgICAgICAgICAgICAgInByb3RvY29sIjogIlRDUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJjb250YWluZXJQb3J0IjogODA4MSwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAid29ya2xvYWQiLAogICAgICAgICAgICAgICAgICAicHJvdG9jb2wiOiAiVENQIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInJlYWRpbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAzLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInJlc291cmNlcyI6IHsKICAgICAgICAgICAgICAgICJsaW1pdHMiOiB7CiAgICAgICAgICAgICAgICAgICJjcHUiOiAiNTAwbSIsCiAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAiMjU2TWkiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJlcXVlc3RzIjogewogICAgICAgICAgICAgICAgICAiY3B1IjogIjVtIiwKICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICI2NE1pIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgICAgICJhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb24iOiBmYWxzZSwKICAgICAgICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJkcm9wIjogWwogICAgICAgICAgICAgICAgICAgICJBTEwiCiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVhZE9ubHlSb290RmlsZXN5c3RlbSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJzdGFydHVwUHJvYmUiOiB7CiAgICAgICAgICAgICAgICAiZmFpbHVyZVRocmVzaG9sZCI6IDEyLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInRlcm1pbmF0aW9uTWVzc2FnZVBhdGgiOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAgICJ0ZXJtaW5hdGlvbk1lc3NhZ2VQb2xpY3kiOiAiRmlsZSIsCiAgICAgICAgICAgICAgInZvbHVtZU1vdW50cyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvZGF0YSIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImRhdGEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi9ydW4vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJydW50aW1lIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvdG1wIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImNvbmZpZ3VyYXRpb24iLAogICAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24vcG9saWN5IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvdmFyL3J1bi9zZWNyZXRzL2luZm9ybWVkLWRlY2lzaW9uL2F1ZGl0IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYXVkaXQiLAogICAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24va3ViZXJuZXRlcyIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmVybmV0ZXMtYXBpIiwKICAgICAgICAgICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvd29ya2xvYWQtcmVnaXN0cnkiLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9yZXF1ZXN0ZXIiLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJzaXR0aW5nLXJlcXVlc3RlciIsCiAgICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAiZG5zUG9saWN5IjogIkNsdXN0ZXJGaXJzdCIsCiAgICAgICAgICAicmVzdGFydFBvbGljeSI6ICJBbHdheXMiLAogICAgICAgICAgInNjaGVkdWxlck5hbWUiOiAiZGVmYXVsdC1zY2hlZHVsZXIiLAogICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgImZzR3JvdXAiOiAxMDAwMSwKICAgICAgICAgICAgImZzR3JvdXBDaGFuZ2VQb2xpY3kiOiAiT25Sb290TWlzbWF0Y2giLAogICAgICAgICAgICAicnVuQXNHcm91cCI6IDEwMDAxLAogICAgICAgICAgICAicnVuQXNOb25Sb290IjogdHJ1ZSwKICAgICAgICAgICAgInJ1bkFzVXNlciI6IDEwMDAxLAogICAgICAgICAgICAic2VjY29tcFByb2ZpbGUiOiB7CiAgICAgICAgICAgICAgInR5cGUiOiAiUnVudGltZURlZmF1bHQiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAic2VydmljZUFjY291bnQiOiAicmV2aWV3IiwKICAgICAgICAgICJzZXJ2aWNlQWNjb3VudE5hbWUiOiAicmV2aWV3IiwKICAgICAgICAgICJ0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kcyI6IDQ1LAogICAgICAgICAgInZvbHVtZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAicGVyc2lzdGVudFZvbHVtZUNsYWltIjogewogICAgICAgICAgICAgICAgImNsYWltTmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1kYXRhIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJlbXB0eURpciI6IHsKICAgICAgICAgICAgICAgICJtZWRpdW0iOiAiTWVtb3J5IiwKICAgICAgICAgICAgICAgICJzaXplTGltaXQiOiAiMTZNaSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiZW1wdHlEaXIiOiB7CiAgICAgICAgICAgICAgICAibWVkaXVtIjogIk1lbW9yeSIsCiAgICAgICAgICAgICAgICAic2l6ZUxpbWl0IjogIjE2TWkiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmFtZSI6ICJ0bXAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjkyLAogICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmFtZSI6ICJjb25maWd1cmF0aW9uIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAicHJvamVjdGVkIjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICAgInNvdXJjZXMiOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAic2VydmljZUFjY291bnRUb2tlbiI6IHsKICAgICAgICAgICAgICAgICAgICAgICJhdWRpZW5jZSI6ICJmbGV4LWF1dGgiLAogICAgICAgICAgICAgICAgICAgICAgImV4cGlyYXRpb25TZWNvbmRzIjogMzYwMCwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogInRva2VuIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImF1ZGl0IiwKICAgICAgICAgICAgICAic2VjcmV0IjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImtleSI6ICJ0b2tlbiIsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAidG9rZW4iCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAic2VjcmV0TmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1hdWRpdCIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICAgInByb2plY3RlZCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInNlcnZpY2VBY2NvdW50VG9rZW4iOiB7CiAgICAgICAgICAgICAgICAgICAgICAiZXhwaXJhdGlvblNlY29uZHMiOiA2MDAsCiAgICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6ICJjYS5jcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogImNhLmNydCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmUtcm9vdC1jYS5jcnQiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgImNvbmZpZ01hcCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI5MiwKICAgICAgICAgICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLXdvcmtsb2FkLXJlZ2lzdHJ5IgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5hbWUiOiAid29ya2xvYWQtcmVnaXN0cnkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJzaXR0aW5nLXJlcXVlc3RlciIsCiAgICAgICAgICAgICAgInNlY3JldCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAgICJpdGVtcyI6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJrZXkiOiAiY2xpZW50LXNlY3JldCIsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiY2xpZW50LXNlY3JldCIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlLAogICAgICAgICAgICAgICAgInNlY3JldE5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tc2l0dGluZy1yZXF1ZXN0ZXIiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAic2VhbGVkX2RlcGVuZGVuY2llcyI6IHsKICAgICJjb25maWdtYXAiOiB7CiAgICAgICJhcGlWZXJzaW9uIjogInYxIiwKICAgICAgImltbXV0YWJsZSI6IHRydWUsCiAgICAgICJraW5kIjogIkNvbmZpZ01hcCIsCiAgICAgICJtZXRhZGF0YSI6IHsKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiYXJnb2NkLmFyZ29wcm9qLmlvL3RyYWNraW5nLWlkIjogImluZm9ybWVkLWRlY2lzaW9uOi9Db25maWdNYXA6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiLAogICAgICAgICAgImluZm9ybWVkLWRlY2lzaW9uLmNvdWxvbWIuc29jaWFsL2FkbWlzc2lvbiI6ICJhcHByb3ZlZDsgSU5GRC1XUC0wMDA3IGN1dG92ZXIiCiAgICAgICAgfSwKICAgICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1ydW50aW1lLTZjMjIxODc4ZDA1MSIsCiAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgInVpZCI6ICI5MDExM2QyZC01NGQ5LTRlODItYjFkMy05MGI0OWViZWQyYjUiCiAgICAgIH0sCiAgICAgICJjYW5vbmljYWxfZGF0YV9zaGEyNTYiOiAiOGVjNDYyZDEyMzQ3NTQ4ZjUwNmVlZWJmMWUzYzdjYzQ3NjQ4MDE5YzhhNzgzODA0ZDA5YmNjNzliMGYyMmFmNiIKICAgIH0sCiAgICAicHZjIjogewogICAgICAiYXBpVmVyc2lvbiI6ICJ2MSIsCiAgICAgICJraW5kIjogIlBlcnNpc3RlbnRWb2x1bWVDbGFpbSIsCiAgICAgICJtZXRhZGF0YSI6IHsKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiYXJnb2NkLmFyZ29wcm9qLmlvL3RyYWNraW5nLWlkIjogImluZm9ybWVkLWRlY2lzaW9uOi9QZXJzaXN0ZW50Vm9sdW1lQ2xhaW06aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24tZGF0YSIsCiAgICAgICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIsCiAgICAgICAgICAicHYua3ViZXJuZXRlcy5pby9iaW5kLWNvbXBsZXRlZCI6ICJ5ZXMiLAogICAgICAgICAgInB2Lmt1YmVybmV0ZXMuaW8vYm91bmQtYnktY29udHJvbGxlciI6ICJ5ZXMiLAogICAgICAgICAgInZvbHVtZS5iZXRhLmt1YmVybmV0ZXMuaW8vc3RvcmFnZS1wcm92aXNpb25lciI6ICJyYW5jaGVyLmlvL2xvY2FsLXBhdGgiLAogICAgICAgICAgInZvbHVtZS5rdWJlcm5ldGVzLmlvL3NlbGVjdGVkLW5vZGUiOiAiMjM5LjYyLjIwNS45Mi5ob3N0LnNlY3VyZXNlcnZlci5uZXQiLAogICAgICAgICAgInZvbHVtZS5rdWJlcm5ldGVzLmlvL3N0b3JhZ2UtcHJvdmlzaW9uZXIiOiAicmFuY2hlci5pby9sb2NhbC1wYXRoIgogICAgICAgIH0sCiAgICAgICAgImZpbmFsaXplcnMiOiBbCiAgICAgICAgICAia3ViZXJuZXRlcy5pby9wdmMtcHJvdGVjdGlvbiIKICAgICAgICBdLAogICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLWRhdGEiLAogICAgICAgICJuYW1lc3BhY2UiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICJ1aWQiOiAiZDgwYjI1YjEtMTQxYS00NDFiLWIyMDUtOThmYTJmZDk4YjdjIgogICAgICB9LAogICAgICAic3BlYyI6IHsKICAgICAgICAiYWNjZXNzTW9kZXMiOiBbCiAgICAgICAgICAiUmVhZFdyaXRlT25jZSIKICAgICAgICBdLAogICAgICAgICJyZXNvdXJjZXMiOiB7CiAgICAgICAgICAicmVxdWVzdHMiOiB7CiAgICAgICAgICAgICJzdG9yYWdlIjogIjFHaSIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJzdG9yYWdlQ2xhc3NOYW1lIjogImxvY2FsLXBhdGgiLAogICAgICAgICJ2b2x1bWVNb2RlIjogIkZpbGVzeXN0ZW0iLAogICAgICAgICJ2b2x1bWVOYW1lIjogInB2Yy1kODBiMjViMS0xNDFhLTQ0MWItYjIwNS05OGZhMmZkOThiN2MiCiAgICAgIH0KICAgIH0sCiAgICAicHZjX3BoYXNlIjogIkJvdW5kIgogIH0sCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMSwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImNjZmY3YzFlY2ZkOWViNTlmYzBjZTU2NmMxMDEzYTJhZjVkZjUxNGFmMDQ4YzY4NDc0YTI3Mjk5NzAyNGVmN2IiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIgp9Cg==" + }, + { + "digest": "sha256:0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQzOjQyLjg1MTA4NiswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiB7CiAgICAiYXBpVmVyc2lvbiI6ICJhcHBzL3YxIiwKICAgICJraW5kIjogIkRlcGxveW1lbnQiLAogICAgIm1ldGFkYXRhIjogewogICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgImFyZ29jZC5hcmdvcHJvai5pby90cmFja2luZy1pZCI6ICJpbmZvcm1lZC1kZWNpc2lvbjphcHBzL0RlcGxveW1lbnQ6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICJpbmZvcm1lZC1kZWNpc2lvbi5jb3Vsb21iLnNvY2lhbC9hZG1pc3Npb24iOiAiYXBwcm92ZWQ7IElORkQtV1AtMDAwNyBjdXRvdmVyIgogICAgICB9LAogICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICJuYW1lc3BhY2UiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAidWlkIjogImE1ODhlMTBhLTkwZDItNDg4My05NzVlLTZkZDhiOGZlY2E5MiIKICAgIH0sCiAgICAic3BlYyI6IHsKICAgICAgInByb2dyZXNzRGVhZGxpbmVTZWNvbmRzIjogNjAwLAogICAgICAicmVwbGljYXMiOiAxLAogICAgICAicmV2aXNpb25IaXN0b3J5TGltaXQiOiAxMCwKICAgICAgInNlbGVjdG9yIjogewogICAgICAgICJtYXRjaExhYmVscyI6IHsKICAgICAgICAgICJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjogImluZm9ybWVkLWRlY2lzaW9uIgogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0cmF0ZWd5IjogewogICAgICAgICJ0eXBlIjogIlJlY3JlYXRlIgogICAgICB9LAogICAgICAidGVtcGxhdGUiOiB7CiAgICAgICAgIm1ldGFkYXRhIjogewogICAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIKICAgICAgICAgIH0sCiAgICAgICAgICAibGFiZWxzIjogewogICAgICAgICAgICAiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjogInJldmlldyIsCiAgICAgICAgICAgICJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjogImluZm9ybWVkLWRlY2lzaW9uIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInNwZWMiOiB7CiAgICAgICAgICAiYXV0b21vdW50U2VydmljZUFjY291bnRUb2tlbiI6IGZhbHNlLAogICAgICAgICAgImNvbnRhaW5lcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0tFWUNBUEVfSVNTVUVSIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIjogImh0dHBzOi8va2MuY291bG9tYi5zb2NpYWwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0NPTlRBSU5FUl9DT05GSUciLAogICAgICAgICAgICAgICAgICAidmFsdWUiOiAiL2NvbmZpZ3VyYXRpb24vcnVudGltZS5qc29uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgICAgICAgICAgICAgImltYWdlUHVsbFBvbGljeSI6ICJJZk5vdFByZXNlbnQiLAogICAgICAgICAgICAgICJsaXZlbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAzLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICAgICAgICJwb3J0cyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgImNvbnRhaW5lclBvcnQiOiA4MDgwLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJodHRwIiwKICAgICAgICAgICAgICAgICAgInByb3RvY29sIjogIlRDUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJjb250YWluZXJQb3J0IjogODA4MSwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAid29ya2xvYWQiLAogICAgICAgICAgICAgICAgICAicHJvdG9jb2wiOiAiVENQIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInJlYWRpbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAzLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInJlc291cmNlcyI6IHsKICAgICAgICAgICAgICAgICJsaW1pdHMiOiB7CiAgICAgICAgICAgICAgICAgICJjcHUiOiAiNTAwbSIsCiAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAiMjU2TWkiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJlcXVlc3RzIjogewogICAgICAgICAgICAgICAgICAiY3B1IjogIjVtIiwKICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICI2NE1pIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgICAgICJhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb24iOiBmYWxzZSwKICAgICAgICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJkcm9wIjogWwogICAgICAgICAgICAgICAgICAgICJBTEwiCiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVhZE9ubHlSb290RmlsZXN5c3RlbSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJzdGFydHVwUHJvYmUiOiB7CiAgICAgICAgICAgICAgICAiZmFpbHVyZVRocmVzaG9sZCI6IDEyLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInRlcm1pbmF0aW9uTWVzc2FnZVBhdGgiOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAgICJ0ZXJtaW5hdGlvbk1lc3NhZ2VQb2xpY3kiOiAiRmlsZSIsCiAgICAgICAgICAgICAgInZvbHVtZU1vdW50cyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvZGF0YSIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImRhdGEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi9ydW4vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJydW50aW1lIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvdG1wIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImNvbmZpZ3VyYXRpb24iLAogICAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24vcG9saWN5IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvdmFyL3J1bi9zZWNyZXRzL2luZm9ybWVkLWRlY2lzaW9uL2F1ZGl0IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYXVkaXQiLAogICAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24va3ViZXJuZXRlcyIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmVybmV0ZXMtYXBpIiwKICAgICAgICAgICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvd29ya2xvYWQtcmVnaXN0cnkiLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9yZXF1ZXN0ZXIiLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJzaXR0aW5nLXJlcXVlc3RlciIsCiAgICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAiZG5zUG9saWN5IjogIkNsdXN0ZXJGaXJzdCIsCiAgICAgICAgICAicmVzdGFydFBvbGljeSI6ICJBbHdheXMiLAogICAgICAgICAgInNjaGVkdWxlck5hbWUiOiAiZGVmYXVsdC1zY2hlZHVsZXIiLAogICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgImZzR3JvdXAiOiAxMDAwMSwKICAgICAgICAgICAgImZzR3JvdXBDaGFuZ2VQb2xpY3kiOiAiT25Sb290TWlzbWF0Y2giLAogICAgICAgICAgICAicnVuQXNHcm91cCI6IDEwMDAxLAogICAgICAgICAgICAicnVuQXNOb25Sb290IjogdHJ1ZSwKICAgICAgICAgICAgInJ1bkFzVXNlciI6IDEwMDAxLAogICAgICAgICAgICAic2VjY29tcFByb2ZpbGUiOiB7CiAgICAgICAgICAgICAgInR5cGUiOiAiUnVudGltZURlZmF1bHQiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAic2VydmljZUFjY291bnQiOiAicmV2aWV3IiwKICAgICAgICAgICJzZXJ2aWNlQWNjb3VudE5hbWUiOiAicmV2aWV3IiwKICAgICAgICAgICJ0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kcyI6IDQ1LAogICAgICAgICAgInZvbHVtZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAicGVyc2lzdGVudFZvbHVtZUNsYWltIjogewogICAgICAgICAgICAgICAgImNsYWltTmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1kYXRhIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJlbXB0eURpciI6IHsKICAgICAgICAgICAgICAgICJtZWRpdW0iOiAiTWVtb3J5IiwKICAgICAgICAgICAgICAgICJzaXplTGltaXQiOiAiMTZNaSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiZW1wdHlEaXIiOiB7CiAgICAgICAgICAgICAgICAibWVkaXVtIjogIk1lbW9yeSIsCiAgICAgICAgICAgICAgICAic2l6ZUxpbWl0IjogIjE2TWkiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmFtZSI6ICJ0bXAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjkyLAogICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmFtZSI6ICJjb25maWd1cmF0aW9uIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAicHJvamVjdGVkIjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICAgInNvdXJjZXMiOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAic2VydmljZUFjY291bnRUb2tlbiI6IHsKICAgICAgICAgICAgICAgICAgICAgICJhdWRpZW5jZSI6ICJmbGV4LWF1dGgiLAogICAgICAgICAgICAgICAgICAgICAgImV4cGlyYXRpb25TZWNvbmRzIjogMzYwMCwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogInRva2VuIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImF1ZGl0IiwKICAgICAgICAgICAgICAic2VjcmV0IjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImtleSI6ICJ0b2tlbiIsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAidG9rZW4iCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAic2VjcmV0TmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1hdWRpdCIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICAgInByb2plY3RlZCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInNlcnZpY2VBY2NvdW50VG9rZW4iOiB7CiAgICAgICAgICAgICAgICAgICAgICAiZXhwaXJhdGlvblNlY29uZHMiOiA2MDAsCiAgICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6ICJjYS5jcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogImNhLmNydCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmUtcm9vdC1jYS5jcnQiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgImNvbmZpZ01hcCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI5MiwKICAgICAgICAgICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLXdvcmtsb2FkLXJlZ2lzdHJ5IgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5hbWUiOiAid29ya2xvYWQtcmVnaXN0cnkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJzaXR0aW5nLXJlcXVlc3RlciIsCiAgICAgICAgICAgICAgInNlY3JldCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAgICJpdGVtcyI6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJrZXkiOiAiY2xpZW50LXNlY3JldCIsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiY2xpZW50LXNlY3JldCIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlLAogICAgICAgICAgICAgICAgInNlY3JldE5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tc2l0dGluZy1yZXF1ZXN0ZXIiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiY2FuZGlkYXRlX2RlcGxveW1lbnQiOiB7CiAgICAiYXBpVmVyc2lvbiI6ICJhcHBzL3YxIiwKICAgICJraW5kIjogIkRlcGxveW1lbnQiLAogICAgIm1ldGFkYXRhIjogewogICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgImFyZ29jZC5hcmdvcHJvai5pby90cmFja2luZy1pZCI6ICJpbmZvcm1lZC1kZWNpc2lvbjphcHBzL0RlcGxveW1lbnQ6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICJpbmZvcm1lZC1kZWNpc2lvbi5jb3Vsb21iLnNvY2lhbC9hZG1pc3Npb24iOiAiYXBwcm92ZWQ7IElORkQtV1AtMDAwNyBjdXRvdmVyIgogICAgICB9LAogICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICJuYW1lc3BhY2UiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAidWlkIjogImE1ODhlMTBhLTkwZDItNDg4My05NzVlLTZkZDhiOGZlY2E5MiIKICAgIH0sCiAgICAic3BlYyI6IHsKICAgICAgInByb2dyZXNzRGVhZGxpbmVTZWNvbmRzIjogNjAwLAogICAgICAicmVwbGljYXMiOiAxLAogICAgICAicmV2aXNpb25IaXN0b3J5TGltaXQiOiAxMCwKICAgICAgInNlbGVjdG9yIjogewogICAgICAgICJtYXRjaExhYmVscyI6IHsKICAgICAgICAgICJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjogImluZm9ybWVkLWRlY2lzaW9uIgogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0cmF0ZWd5IjogewogICAgICAgICJ0eXBlIjogIlJlY3JlYXRlIgogICAgICB9LAogICAgICAidGVtcGxhdGUiOiB7CiAgICAgICAgIm1ldGFkYXRhIjogewogICAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIKICAgICAgICAgIH0sCiAgICAgICAgICAibGFiZWxzIjogewogICAgICAgICAgICAiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjogInJldmlldyIsCiAgICAgICAgICAgICJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjogImluZm9ybWVkLWRlY2lzaW9uIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInNwZWMiOiB7CiAgICAgICAgICAiYXV0b21vdW50U2VydmljZUFjY291bnRUb2tlbiI6IGZhbHNlLAogICAgICAgICAgImNvbnRhaW5lcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0tFWUNBUEVfSVNTVUVSIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIjogImh0dHBzOi8va2MuY291bG9tYi5zb2NpYWwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0NPTlRBSU5FUl9DT05GSUciLAogICAgICAgICAgICAgICAgICAidmFsdWUiOiAiL2NvbmZpZ3VyYXRpb24vcnVudGltZS5qc29uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgICAgICAgICAgICAgImltYWdlUHVsbFBvbGljeSI6ICJJZk5vdFByZXNlbnQiLAogICAgICAgICAgICAgICJsaXZlbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAzLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICAgICAgICJwb3J0cyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgImNvbnRhaW5lclBvcnQiOiA4MDgwLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJodHRwIiwKICAgICAgICAgICAgICAgICAgInByb3RvY29sIjogIlRDUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJjb250YWluZXJQb3J0IjogODA4MSwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAid29ya2xvYWQiLAogICAgICAgICAgICAgICAgICAicHJvdG9jb2wiOiAiVENQIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInJlYWRpbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAzLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInJlc291cmNlcyI6IHsKICAgICAgICAgICAgICAgICJsaW1pdHMiOiB7CiAgICAgICAgICAgICAgICAgICJjcHUiOiAiNTAwbSIsCiAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAiMjU2TWkiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJlcXVlc3RzIjogewogICAgICAgICAgICAgICAgICAiY3B1IjogIjVtIiwKICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICI2NE1pIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgICAgICJhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb24iOiBmYWxzZSwKICAgICAgICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJkcm9wIjogWwogICAgICAgICAgICAgICAgICAgICJBTEwiCiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVhZE9ubHlSb290RmlsZXN5c3RlbSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJzdGFydHVwUHJvYmUiOiB7CiAgICAgICAgICAgICAgICAiZmFpbHVyZVRocmVzaG9sZCI6IDEyLAogICAgICAgICAgICAgICAgImh0dHBHZXQiOiB7CiAgICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICAgInBvcnQiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAiSFRUUCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGVyaW9kU2Vjb25kcyI6IDEwLAogICAgICAgICAgICAgICAgInN1Y2Nlc3NUaHJlc2hvbGQiOiAxLAogICAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInRlcm1pbmF0aW9uTWVzc2FnZVBhdGgiOiAiL2Rldi90ZXJtaW5hdGlvbi1sb2ciLAogICAgICAgICAgICAgICJ0ZXJtaW5hdGlvbk1lc3NhZ2VQb2xpY3kiOiAiRmlsZSIsCiAgICAgICAgICAgICAgInZvbHVtZU1vdW50cyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvZGF0YSIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImRhdGEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi9ydW4vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJydW50aW1lIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvdG1wIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImNvbmZpZ3VyYXRpb24iLAogICAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24vcG9saWN5IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvdmFyL3J1bi9zZWNyZXRzL2luZm9ybWVkLWRlY2lzaW9uL2F1ZGl0IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYXVkaXQiLAogICAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24va3ViZXJuZXRlcyIsCiAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmVybmV0ZXMtYXBpIiwKICAgICAgICAgICAgICAgICAgInJlYWRPbmx5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvd29ya2xvYWQtcmVnaXN0cnkiLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9yZXF1ZXN0ZXIiLAogICAgICAgICAgICAgICAgICAibmFtZSI6ICJzaXR0aW5nLXJlcXVlc3RlciIsCiAgICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICAiZG5zUG9saWN5IjogIkNsdXN0ZXJGaXJzdCIsCiAgICAgICAgICAicmVzdGFydFBvbGljeSI6ICJBbHdheXMiLAogICAgICAgICAgInNjaGVkdWxlck5hbWUiOiAiZGVmYXVsdC1zY2hlZHVsZXIiLAogICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgImZzR3JvdXAiOiAxMDAwMSwKICAgICAgICAgICAgImZzR3JvdXBDaGFuZ2VQb2xpY3kiOiAiT25Sb290TWlzbWF0Y2giLAogICAgICAgICAgICAicnVuQXNHcm91cCI6IDEwMDAxLAogICAgICAgICAgICAicnVuQXNOb25Sb290IjogdHJ1ZSwKICAgICAgICAgICAgInJ1bkFzVXNlciI6IDEwMDAxLAogICAgICAgICAgICAic2VjY29tcFByb2ZpbGUiOiB7CiAgICAgICAgICAgICAgInR5cGUiOiAiUnVudGltZURlZmF1bHQiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAic2VydmljZUFjY291bnQiOiAicmV2aWV3IiwKICAgICAgICAgICJzZXJ2aWNlQWNjb3VudE5hbWUiOiAicmV2aWV3IiwKICAgICAgICAgICJ0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kcyI6IDQ1LAogICAgICAgICAgInZvbHVtZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIiwKICAgICAgICAgICAgICAicGVyc2lzdGVudFZvbHVtZUNsYWltIjogewogICAgICAgICAgICAgICAgImNsYWltTmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1kYXRhIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJlbXB0eURpciI6IHsKICAgICAgICAgICAgICAgICJtZWRpdW0iOiAiTWVtb3J5IiwKICAgICAgICAgICAgICAgICJzaXplTGltaXQiOiAiMTZNaSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiZW1wdHlEaXIiOiB7CiAgICAgICAgICAgICAgICAibWVkaXVtIjogIk1lbW9yeSIsCiAgICAgICAgICAgICAgICAic2l6ZUxpbWl0IjogIjE2TWkiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmFtZSI6ICJ0bXAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjkyLAogICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmFtZSI6ICJjb25maWd1cmF0aW9uIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAicHJvamVjdGVkIjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICAgInNvdXJjZXMiOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAic2VydmljZUFjY291bnRUb2tlbiI6IHsKICAgICAgICAgICAgICAgICAgICAgICJhdWRpZW5jZSI6ICJmbGV4LWF1dGgiLAogICAgICAgICAgICAgICAgICAgICAgImV4cGlyYXRpb25TZWNvbmRzIjogMzYwMCwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogInRva2VuIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJuYW1lIjogImF1ZGl0IiwKICAgICAgICAgICAgICAic2VjcmV0IjogewogICAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImtleSI6ICJ0b2tlbiIsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAidG9rZW4iCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAic2VjcmV0TmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1hdWRpdCIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICAgInByb2plY3RlZCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInNlcnZpY2VBY2NvdW50VG9rZW4iOiB7CiAgICAgICAgICAgICAgICAgICAgICAiZXhwaXJhdGlvblNlY29uZHMiOiA2MDAsCiAgICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6ICJjYS5jcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogImNhLmNydCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmUtcm9vdC1jYS5jcnQiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgImNvbmZpZ01hcCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI5MiwKICAgICAgICAgICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLXdvcmtsb2FkLXJlZ2lzdHJ5IgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5hbWUiOiAid29ya2xvYWQtcmVnaXN0cnkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAibmFtZSI6ICJzaXR0aW5nLXJlcXVlc3RlciIsCiAgICAgICAgICAgICAgInNlY3JldCI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAgICJpdGVtcyI6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJrZXkiOiAiY2xpZW50LXNlY3JldCIsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiY2xpZW50LXNlY3JldCIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IGZhbHNlLAogICAgICAgICAgICAgICAgInNlY3JldE5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tc2l0dGluZy1yZXF1ZXN0ZXIiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAic2VhbGVkX2RlcGVuZGVuY2llcyI6IHsKICAgICJjb25maWdtYXAiOiB7CiAgICAgICJhcGlWZXJzaW9uIjogInYxIiwKICAgICAgImltbXV0YWJsZSI6IHRydWUsCiAgICAgICJraW5kIjogIkNvbmZpZ01hcCIsCiAgICAgICJtZXRhZGF0YSI6IHsKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiYXJnb2NkLmFyZ29wcm9qLmlvL3RyYWNraW5nLWlkIjogImluZm9ybWVkLWRlY2lzaW9uOi9Db25maWdNYXA6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiLAogICAgICAgICAgImluZm9ybWVkLWRlY2lzaW9uLmNvdWxvbWIuc29jaWFsL2FkbWlzc2lvbiI6ICJhcHByb3ZlZDsgSU5GRC1XUC0wMDA3IGN1dG92ZXIiCiAgICAgICAgfSwKICAgICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1ydW50aW1lLTZjMjIxODc4ZDA1MSIsCiAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgInVpZCI6ICI5MDExM2QyZC01NGQ5LTRlODItYjFkMy05MGI0OWViZWQyYjUiCiAgICAgIH0sCiAgICAgICJjYW5vbmljYWxfZGF0YV9zaGEyNTYiOiAiOGVjNDYyZDEyMzQ3NTQ4ZjUwNmVlZWJmMWUzYzdjYzQ3NjQ4MDE5YzhhNzgzODA0ZDA5YmNjNzliMGYyMmFmNiIKICAgIH0sCiAgICAicHZjIjogewogICAgICAiYXBpVmVyc2lvbiI6ICJ2MSIsCiAgICAgICJraW5kIjogIlBlcnNpc3RlbnRWb2x1bWVDbGFpbSIsCiAgICAgICJtZXRhZGF0YSI6IHsKICAgICAgICAiYW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAiYXJnb2NkLmFyZ29wcm9qLmlvL3RyYWNraW5nLWlkIjogImluZm9ybWVkLWRlY2lzaW9uOi9QZXJzaXN0ZW50Vm9sdW1lQ2xhaW06aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24tZGF0YSIsCiAgICAgICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIsCiAgICAgICAgICAicHYua3ViZXJuZXRlcy5pby9iaW5kLWNvbXBsZXRlZCI6ICJ5ZXMiLAogICAgICAgICAgInB2Lmt1YmVybmV0ZXMuaW8vYm91bmQtYnktY29udHJvbGxlciI6ICJ5ZXMiLAogICAgICAgICAgInZvbHVtZS5iZXRhLmt1YmVybmV0ZXMuaW8vc3RvcmFnZS1wcm92aXNpb25lciI6ICJyYW5jaGVyLmlvL2xvY2FsLXBhdGgiLAogICAgICAgICAgInZvbHVtZS5rdWJlcm5ldGVzLmlvL3NlbGVjdGVkLW5vZGUiOiAiMjM5LjYyLjIwNS45Mi5ob3N0LnNlY3VyZXNlcnZlci5uZXQiLAogICAgICAgICAgInZvbHVtZS5rdWJlcm5ldGVzLmlvL3N0b3JhZ2UtcHJvdmlzaW9uZXIiOiAicmFuY2hlci5pby9sb2NhbC1wYXRoIgogICAgICAgIH0sCiAgICAgICAgImZpbmFsaXplcnMiOiBbCiAgICAgICAgICAia3ViZXJuZXRlcy5pby9wdmMtcHJvdGVjdGlvbiIKICAgICAgICBdLAogICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLWRhdGEiLAogICAgICAgICJuYW1lc3BhY2UiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAgICJ1aWQiOiAiZDgwYjI1YjEtMTQxYS00NDFiLWIyMDUtOThmYTJmZDk4YjdjIgogICAgICB9LAogICAgICAic3BlYyI6IHsKICAgICAgICAiYWNjZXNzTW9kZXMiOiBbCiAgICAgICAgICAiUmVhZFdyaXRlT25jZSIKICAgICAgICBdLAogICAgICAgICJyZXNvdXJjZXMiOiB7CiAgICAgICAgICAicmVxdWVzdHMiOiB7CiAgICAgICAgICAgICJzdG9yYWdlIjogIjFHaSIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJzdG9yYWdlQ2xhc3NOYW1lIjogImxvY2FsLXBhdGgiLAogICAgICAgICJ2b2x1bWVNb2RlIjogIkZpbGVzeXN0ZW0iLAogICAgICAgICJ2b2x1bWVOYW1lIjogInB2Yy1kODBiMjViMS0xNDFhLTQ0MWItYjIwNS05OGZhMmZkOThiN2MiCiAgICAgIH0KICAgIH0sCiAgICAicHZjX3BoYXNlIjogIkJvdW5kIgogIH0sCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMCwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIgp9Cg==" + }, + { + "digest": "sha256:dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "media_type": "application/json", + "content_base64": "ewogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWItODUwOTEtcjEiLAogICJ0YXNrX2lkIjogIklORkQtV1AtMDAwOS1UMDUiLAogICJyaXNrX3JlY29yZCI6ICJJTkZELVJJU0stMjAyNjEwMTEtWkxJQi04NTA5MSIsCiAgInN0YXRlIjogImFjdHVhbC1vd25lci1DSS1wdWJsaXNoZWQtaW5kZXBlbmRlbnQtdmVyaWZpY2F0aW9uLXBhc3NlZC1uYXRpdmUtdW5hcHByb3ZlZCIsCiAgInZlcmlmaWVkX3V0YyI6ICIyMDI2LTEwLTExVDA5OjQwOjI0LjQ2OTY0NiswMDowMCIsCiAgInNvdXJjZV9yZXZpc2lvbiI6ICI5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjIiwKICAiY2lfdGFzayI6IDExNTM0LAogICJjaV9ydW4iOiA0LAogICJjaV9zdGF0dXMiOiAic3VjY2VzcyIsCiAgInJldmlld2VkX3NvdXJjZV9tYW5pZmVzdF9zaGEyNTYiOiAiNzI0YWE0Nzc3ZWIxYzg5NzZkODY4ZTVmNTA0NDczZjRiNmQ1OGYxM2Q3NTBkODdhZWZhNWM4ZDVjYTA3NDdlYyIsCiAgImFsbDc0X3NvdXJjZV9oYXNoZXNfbWF0Y2hfYWN0dWFsX2NvbW1pdCI6IHRydWUsCiAgInB1Ymxpc2hlZF9pbWFnZV9kaWdlc3QiOiAic2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJiYXNlX2ltYWdlX2RpZ2VzdCI6ICJzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInJlZ2lzdHJ5X2NvbmZpZ19kaWdlc3QiOiAic2hhMjU2OjYyMmJlY2MzZWJkOTdjYjY2YjZlN2MzNmYzNWJmOTMxYTdkZWNkOTQ2NGI2NTg1MTEyM2MxY2M4Yzk5OGQ3NWIiLAogICJleGVjdXRlZF9sb2NhbF9kYWVtb25faW1hZ2VfaWQiOiAic2hhMjU2OmYyZTA3ZTNkZDgzOWI1NWFmZDVkNTE3MjQzYTc2NWEyNjk2NTMyNWU0ZTY3NTBmNTA4NzcxYWQ1NTZiZDZkMDEiLAogICJzZXJpYWxpemF0aW9uX2NhdmVhdCI6ICJEYWVtb24gbG9hZCByZXNlcmlhbGl6ZXMgY29uZmlnOyBhbGwgZGlmZklEcy9wbGF0Zm9ybS9lZmZlY3RpdmUgY29uZmlnK2xhYmVscyBpbmRlcGVuZGVudGx5IGVxdWFsIHRvIHJlZ2lzdHJ5OyBuZWl0aGVyIGNvbmZpZyBub3IgZGFlbW9uIElEIHN1YnN0aXR1dGVzIGZvciByZWdpc3RyeSBpbWFnZSBkaWdlc3QiLAogICJhY3R1YWxfcmVnaXN0cnlfZGVzY3JpcHRvcnNfYW5kX2xheWVyc192ZXJpZmllZCI6IHRydWUsCiAgImJhc2U5bGF5ZXJzX3VuY2hhbmdlZCI6IHRydWUsCiAgIm92ZXJsYXlfbGF5ZXJzIjogMiwKICAiZnVsbHNjYW5fYmFzZWxpbmUiOiB7CiAgICAiTUVESVVNIjogMSwKICAgICJpZCI6ICJDVkUtMjAyNi04NTA5MSIKICB9LAogICJmdWxsc2Nhbl9jYW5kaWRhdGVfYWxsc2V2ZXJpdHlfZmluZGluZ3MiOiAwLAogICJmdWxsc2Nhbl9ub19zdXBwcmVzc2lvbnMiOiB0cnVlLAogICJzYW1lX2ZyZXNoX0RCX2JvdGhfaW1hZ2VzIjogdHJ1ZSwKICAic2Nhbm5lcl9kYl9zaGEyNTYiOiAiMDNjYWNiNDA0NTJjZWI3NGFmZGZjYTA3MmNiODJmNzllZTg4NGRmYWMwMDZlZjI0YTRkZmRhZDEzM2IwZjkxNyIsCiAgInNjYW5uZXJfZGJfbWV0YWRhdGEiOiB7CiAgICAiVmVyc2lvbiI6IDIsCiAgICAiTmV4dFVwZGF0ZSI6ICIyMDI2LTEwLTExVDE4OjU5OjUwLjg4OTAxMDU3MloiLAogICAgIlVwZGF0ZWRBdCI6ICIyMDI2LTEwLTEwVDE4OjU5OjUwLjg4OTAxMDkyM1oiLAogICAgIkRvd25sb2FkZWRBdCI6ICIyMDI2LTEwLTEwVDIzOjMyOjMyLjM4MDAzMzEzMVoiCiAgfSwKICAic2Nhbm5lcl9jYXZlYXQiOiAiQWxwaW5lMy4yNCBhYnNlbnQgRU9MIGxpc3Qgd2FybmluZzsgYWN0dWFsMzhPUys2UHl0aG9uIGRldGVjdG9ycyByYW4uIFplcm8gbWVhbnMgdGhpcyB2ZXJpZmllZCBEQiBzbmFwc2hvdCwgbm90IHVua25vd24tZnV0dXJlIGFzc3VyYW5jZSBvciBlc3RhdGUgcmlzayBncmFkZS4iLAogICJzYm9tX2NvdW50IjogNDQsCiAgInNib21fb25seV9kZWx0YSI6IHsKICAgICJ6bGliIjogWwogICAgICAiMS4zLjItcjAiLAogICAgICAiMS4zLjItcjEiCiAgICBdCiAgfSwKICAiZmluYWxfY2hhbmdlZF9maWxlcyI6IFsKICAgICJsaWIvYXBrL2RiL2luc3RhbGxlZCIsCiAgICAidXNyL2xpYi9saWJ6LnNvLjEuMy4yIgogIF0sCiAgImRpcmVjdG9yeV9jb3VudCI6IDMxMywKICAiZGlyZWN0b3J5X21ldGFkYXRhX2RlbHRhIjoge30sCiAgImFwcF9maWxlc19pZGVudGljYWwiOiAzNiwKICAiaW5zdGFsbGVkX1VJRCI6IDEwMDAxLAogICJpbnN0YWxsZWRfR0lEIjogMTAwMDEsCiAgInBvbGljeV9zaGEyNTYiOiAiOWQ3YzFiZTRjYjYxOTlkMTRlZjBhYWVhZDVmODU5NTFmNDViMGNjYmQ3YzgwMGE3ZmRlOTIyYTI1MzU2NmI2MiIsCiAgInBvbGljeV9tb2RlIjogIjBvNjQ0IiwKICAicG9saWN5X1VJRCI6IDAsCiAgImNhbmRpZGF0ZV9pbWFnZV9leGVjdXRlZCI6IHRydWUsCiAgInB1YmxpY19yZWdpc3RyeV9sYXllcl9yZWFkYmFjayI6IHRydWUsCiAgIm5hdGl2ZV9wcm92aWRlcl90ZXN0IjogZmFsc2UsCiAgImluc3RhbGxlZF9wdXJwb3NlX3ZhcmlhbnRzIjogMTAsCiAgInB1cnBvc2VfZm9ybXNfYWxsb3ciOiAyLAogICJwdXJwb3NlX2Zvcm1zX3JlZnVzZSI6IDgsCiAgInJ1bnRpbWVfcmVhZG9ubHlfbmV0d29ya25vbmUiOiB0cnVlLAogICJuYXRpdmVfd29ya2xvYWRfb3JfZGF0YWJhc2Vfb3Jfc25hcHNob3Rfb3JfY3JlZGVudGlhbHNfYWNjZXNzZWQiOiBmYWxzZSwKICAibmF0aXZlX3JvbGxvdXQiOiBmYWxzZSwKICAiZm91bmRlcl9yZWxlYXNlX2FwcHJvdmFsIjogZmFsc2UsCiAgInJpc2tfZm9sbG93dGhyb3VnaCI6ICJUMDUgcmVtYWlucyBhY3RpdmU7IG1hbnVhbCByZXZpZXcgZHVlMjAyNi0xMC0xOCwgbm8gY29udHJvbGxlciBvciBlc3RhdGUgcmlzayBncmFkZS4gQWN0dWFsIG5hdGl2ZSBpbnN0YWxsYXRpb24vZnJlc2ggc2NvcGVkIGZvdW5kZXIgZGVjaXNpb24gc3RpbGwgcmVxdWlyZWQgYmVmb3JlIGNsb3N1cmUuIiwKICAidmVyaWZpY2F0aW9uX3JlZmluZW1lbnQiOiAiRmlyc3QgcnVuIHVzZWQgcmVnaXN0cnkgY29uZmlnIGFzIGRhZW1vbiBoYW5kbGUgYW5kIHJlZnVzZWQgYmVmb3JlIGNhbmRpZGF0ZSBleGVjdXRpb24xMjUuIENvcnJlY3RlZCBieSBpbmRlcGVuZGVudGx5IHByb3ZpbmcgbG9hZGVkIGRhZW1vbiBJRCBzZW1hbnRpY3MrZGlmZklEcyBleGFjdCwgdGhlbiBleGVjdXRlZC4gTm90IGFjdHVhbCBpbWFnZSBmYWlsdXJlLiIsCiAgImV2aWRlbmNlX3NoYTI1NiI6IHsKICAgICJhcnRpZmFjdC1jb21wYXJpc29uLmpzb24iOiAiYTFjNWQ5ZTI0OWRjMDA2MDA0NDk5OTgzNjBmYWY2ZThkYTAyMDZiNTY4Yzc2ZDE1NTYwMmM0NjQ1ZmE1ZmNlNCIsCiAgICAiYmFzZS1pbWFnZS1jb25maWcuanNvbiI6ICI0YWQ3MjQ5Yzc1ZmQ5ZmMwMzljZWIxODY3NzI0MTllMWNiYTVmZDk3NTljNDA0NTU2NDU5YzgwYTJkMjg1ZDEwIiwKICAgICJiYXNlLWltYWdlLW1hbmlmZXN0Lmpzb24iOiAiOTc4YzU3NWQzYzdiZjBkZTM5ZGJlNGU5NTY3YzM5Y2QzNmY3MGI3ZTU1YmMxNzM1N2JkYjAzZmIzYjk2YjBmYiIsCiAgICAiYmFzZS1ydW50aW1lLmpzb24iOiAiMjBhYWJiOWY0ODQ2YWI0ZmE2ZTI4ZTA3NjNkMTUzMTg4ZGExNTFlZTMyMjkzMzY2YTUxYjBmZGY4NzJhNGQyNCIsCiAgICAiYmFzZS1zYm9tLmNkeC5qc29uIjogImRkN2Q2NGM5NTcxMzkxYWNkNGQxZjg2YzYwMjZhMWIwOTRhYmFiNGVlNTZlNWE5Zjc5OWVjMmZkM2M3ZDkxNWEiLAogICAgImJhc2Utc2JvbS5jZHguanNvbi5sb2ciOiAiOGFiNDQ3M2E1Zjc0YjM2ZTgyYTQwOTVlOWM4ZDZlNjZkODBhZWM2NGJkMWNlYmQ2YzlmNjczNDUzMTg2OWZjYSIsCiAgICAiYmFzZS10cml2eS1mdWxsLmpzb24iOiAiM2U5MWEzMDAxYWRiMDA4Y2VjMzdkOWFlM2MwODM0MmY1ZDQzYzhiYTAxMTFlZWU3NWM2M2E2YTc5MTg4MDhhOSIsCiAgICAiYmFzZS10cml2eS1mdWxsLmpzb24ubG9nIjogIjk2YTQ4ZGMzOWY3ZDY3NGI0OTU0ZDVmYTk4YTc2NjQ1NTI4ZWMwZmU3MDU3ODJmZTExNGUzYjRiOWQ3NzY4NjIiLAogICAgImNhbmRpZGF0ZS1ydW50aW1lLmpzb24iOiAiZDU4ZTYwYmRjNjk0NThmZTQyYWY4MjQ4ZTAyYWNkOTI0YjNiNjA1YzgyODg3NzM1MmE3ZDlhMzk1M2U5MDEyNCIsCiAgICAiY2ktcHVibGljYXRpb24tb2JzZXJ2YXRpb24uanNvbiI6ICJmZmU2ZjI1MDhiYzliZWJiZGM4NWFjNjNlYWU1NzY1NTYyZWZiYjhlOTIwY2M4NWI4ZGEzMGExMmVlMWU0YjE3IiwKICAgICJpbWFnZS1jb25maWcuanNvbiI6ICIyNTNhYjM1OTAxM2FlYjM0NTdkMmFiZTA4NTJiYWNkMzM2OTdmOTczZGQzMmMxYjU3Mzg4MDBlNWRjNjMzZjQzIiwKICAgICJpbWFnZS1tYW5pZmVzdC5qc29uIjogIjljYTJhYmVjNmEyNmQ5YTlmODAyZGZlNzVlZmE4YmZmZGMyODQ4NWU2YmNhZjUyNWNjOWIwNzVkZjM3MDAxOTQiLAogICAgImluc3RhbGxlZC1wdXJwb3NlLmpzb24iOiAiMzEyMzEyYzZmMGJkMjc1MTQwMWIzYmM1YmNkMzBlZTZhZjAxZWQ3Y2IzODBmODViODYzZDAzYjBjN2U5ZDFhZCIsCiAgICAibG9hZGVkLWRhZW1vbi1pbWFnZS1wcm9vZi5qc29uIjogIjJlNWMwNDNhMTAxZDc1ZTRjNTY5YWRiNmJjMmYwOTAyMDY3OWIyOGVkMmFkODM2Yzk1NGY3ZDI3MTAxY2U3MTkiLAogICAgInB1YmxpY2F0aW9uLWRpZ2VzdC5qc29uIjogImNhMmExZGVjMzhkYjhjNWZiYmMwMGVmNGYyN2FhODY1ZWRiYmQ0YTdjYTlkYzIxYjJiYTAyMzY2NGM1MDdmMzgiLAogICAgInJlYWRfcHVibGljX2FydGlmYWN0LnB5IjogImVhYTMxZGExZWJiMjA5NWVhNWUxYmM3YzU3MDMxMWNjNDc0N2YwZDdmNzE4MDM0ZGFkOTM0MzUxZDE5MjBkYWYiLAogICAgInJlZ2lzdHJ5LXByb29mLmpzb24iOiAiM2VmNTJkOWU0ODAwZmM5YmQyMzgwNzIyNDFkYzE1ZjEzYTAyNjBlZTNkZjFlODJlNmY2M2U3MjkwMjc0OWQ5MiIsCiAgICAicnVuX3B1Ymxpc2hlZF9ydW50aW1lLnB5IjogImQ5YmQzM2ZlY2QyYTk4YzIzODFiNGJhMmRjZTEyYjVjM2Q5YTY5ZmFhNWUzNTAyOTE5MjRmYzg4NWY1ZTc3NWYiLAogICAgInJ1bl9wdWJsaXNoZWRfc2Nhbi5weSI6ICIyNTgzYWI5NjM1MDQxMmZiM2YyMGI1YjA1ZGVkMDk0OWViM2VlOGU1YzBlODkyM2E5YzJjNDJkNDE5ZDM2NjM5IiwKICAgICJydW50aW1lLWNvbXBhcmlzb24uanNvbiI6ICI5OTNiODBiOTI4NWUyMjdhMGJkZmRlNDkyN2NkMmYwNTNiY2M0YTU4ZGQ5YmQxYjYzM2FjN2E0NjM3ZDY3MTNjIiwKICAgICJydW50aW1lLXJlY2VpcHQuanNvbiI6ICI2NDQyNjc2ZGNmZDk0MWYwYTA1YTRjYjc5YTAyZGVhODM5ZmNkMzMyZDgyYjIxNTRjMTVjZjZkYjY4ZGU1ODg5IiwKICAgICJzYm9tLmNkeC5qc29uIjogIjQyMDIyNjMwNTk3ODBlYWUwNDQ4MzI4MDQ0YzFjZjY4YjU5NzU4ZjMyOWFlNmJjOTgxZDkxNjYxMDUyN2VhZTMiLAogICAgInNib20uY2R4Lmpzb24ubG9nIjogIjUxODczYjM3YTA4NDZlZTFhNjE4ZWE3NTkxZDc5ODA5ZGMwZjg2MjRmNzdhMDNmYWU3YWY5NTNiY2JkNzI4MmYiLAogICAgInNjYW4tcmVjZWlwdC5qc29uIjogImFhYWE5MTA2MWJiMDM2ZTZkMjI4YjFjMWJkNDMzMzU3OGRjOTQ4Y2IyYmI1YWM4YmEyNjk0MjkxMjFlNzMyMWEiLAogICAgInNvdXJjZS1jb21taXQtcHJvb2YuanNvbiI6ICJiMDgxMWRhMmQzYmQ1OTM4NzMzZjAwNzhlNWZlYzhlMTlhNmQ5NzUyYzQyNzdiODBiZmU5ODM3ZWQ3MmM2YTNiIiwKICAgICJ0cml2eS1mdWxsLmpzb24iOiAiMmZmNjhlNzY1YjljNjUyOTI2MTFkNWE5NjkyMDJhNzY1NDYzNzE2OGVkZWZjZWRhYzVkMmM3NjM0MDA5ZWRhZSIsCiAgICAidHJpdnktZnVsbC5qc29uLmxvZyI6ICJiMzQxOWFmODYwZDI2NDQ0OWY2MTk4NmY1NjI0OTFlZGFlYWQyN2RmZDM2MzhjZWFiZTk0YjRmZTE3N2Y0YmYxIgogIH0KfQo=" + }, + { + "digest": "sha256:a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "media_type": "application/json", + "content_base64": "ewogICJiYXNlX2ltYWdlX2NvbmZpZ19pZCI6ICJzaGEyNTY6ZjM0ZGUyMTM3OWM0ZjUwZWEwMzYxY2ExZDgyOTZjOGU3MmY5ODk0OTlhZDI4ODAxNmI4MTIwNDk5N2FlNDc3OSIsCiAgImNhbmRpZGF0ZV9sb2NhbF9pbWFnZV9jb25maWdfaWQiOiAic2hhMjU2OjYyMmJlY2MzZWJkOTdjYjY2YjZlN2MzNmYzNWJmOTMxYTdkZWNkOTQ2NGI2NTg1MTEyM2MxY2M4Yzk5OGQ3NWIiLAogICJjYW5kaWRhdGVfcmVnaXN0cnlfZGlnZXN0IjogbnVsbCwKICAiYmFzZV9sYXllcnNfcHJlc2VydmVkIjogOSwKICAibmV3X2xheWVycyI6IDIsCiAgImVmZmVjdGl2ZV9ydW50aW1lX2NvbmZpZ19pZGVudGljYWwiOiB0cnVlLAogICJyYXdfY29uZmlnX2J5dGVzX2lkZW50aWNhbCI6IGZhbHNlLAogICJzZXJpYWxpemF0aW9uX25vdGUiOiAiTGVnYWN5IGJhc2UgZXhwbGljaXRseSBzZXJpYWxpemVkIGVtcHR5L2ZhbHNlL251bGwgZGVmYXVsdHM7IGNhbmRpZGF0ZSBEb2NrZXItc2F2ZSBjb25maWcgb21pdHMgZXF1aXZhbGVudCBrbm93biBkZWZhdWx0cy4gRXhhY3QgY2xvc2VkIGRlZmF1bHQgbm9ybWFsaXphdGlvbiBvbmx5OyBydW50aW1lIGZpZWxkcyB1bmNoYW5nZWQuIiwKICAibGFiZWxzX2JlZm9yZSI6IHsKICAgICJvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYmFzZS5kaWdlc3QiOiAic2hhMjU2OjdmNWM2Y2IyOWM5ZjcwYTAyNmJmZTMwZTcyOTM0Mjc0ZGRjNjkyNjE2NzZjZjZkNDc2ZjgxZGQzMjgxMmQxNzMiLAogICAgIm9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5yZXZpc2lvbiI6ICIzZTRiY2IyNmY4ZWVhYThjNjQzNDVjNTY1NDc3YjVhYzhjY2JiMTY4IiwKICAgICJzb2NpYWwuY291bG9tYi5yZWxlYXNlLnNjb3BlIjogIklORkQtV1AtMDAwOS1UMDQvcHVycG9zZS1vdmVybGF5LXYxIiwKICAgICJzb2NpYWwuY291bG9tYi5zb3VyY2UucG9saWN5LnNoYTI1NiI6ICI5ZDdjMWJlNGNiNjE5OWQxNGVmMGFhZWFkNWY4NTk1MWY0NWIwY2NiZDdjODAwYTdmZGU5MjJhMjUzNTY2YjYyIgogIH0sCiAgImxhYmVsc19hZnRlciI6IHsKICAgICJvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYmFzZS5kaWdlc3QiOiAic2hhMjU2Ojc2M2MzNjQwMmM4YmU3Y2M0YzFiZDFhNjE2MjNkMWFmZjkxMTZkNTIyNDE4Nzc0MjViNDVhNzAxOGNjMDg4M2EiLAogICAgIm9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5yZXZpc2lvbiI6ICI5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjIiwKICAgICJzb2NpYWwuY291bG9tYi5yZWxlYXNlLnNjb3BlIjogIklORkQtV1AtMDAwOS1UMDUvemxpYi04NTA5MS1yMSIsCiAgICAic29jaWFsLmNvdWxvbWIuc291cmNlLmNvbnRleHQuc2hhMjU2IjogImM1NTRlNjJhODRhZjM0MGNiYTE1ZDQ2OWE0NTY4ZjZkMGM0MDkyM2U1ODBiMDhlZDc1NjVlMjI3MDJiMTIwN2QiLAogICAgInNvY2lhbC5jb3Vsb21iLnNvdXJjZS5wb2xpY3kuc2hhMjU2IjogIjlkN2MxYmU0Y2I2MTk5ZDE0ZWYwYWFlYWQ1Zjg1OTUxZjQ1YjBjY2JkN2M4MDBhN2ZkZTkyMmEyNTM1NjZiNjIiCiAgfSwKICAiZmluYWxfY2hhbmdlZF9maWxlcyI6IHsKICAgICJsaWIvYXBrL2RiL2luc3RhbGxlZCI6IHsKICAgICAgImJlZm9yZSI6IFsKICAgICAgICAiZmlsZSIsCiAgICAgICAgNDIwLAogICAgICAgIDAsCiAgICAgICAgMCwKICAgICAgICAiNjM4M2VhMzgwNjI0N2U4ZGJmOWViZWU4Y2IzMGViOGVjYTYzYThlYTU5NjYyYTc5MzEyN2Q2YTYxYjk4OGQ3MCIKICAgICAgXSwKICAgICAgImFmdGVyIjogWwogICAgICAgICJmaWxlIiwKICAgICAgICA0MjAsCiAgICAgICAgMCwKICAgICAgICAwLAogICAgICAgICJmNTkwNzYyMTk2NzEwZTI1YzBlOWY3MmRhMDY0MmNhZDhhNWRjYmEwYWE5ZTU4YTBjYmFhNjU2ODRkMTVjMDAxIgogICAgICBdCiAgICB9LAogICAgInVzci9saWIvbGliei5zby4xLjMuMiI6IHsKICAgICAgImJlZm9yZSI6IFsKICAgICAgICAiZmlsZSIsCiAgICAgICAgNDkzLAogICAgICAgIDAsCiAgICAgICAgMCwKICAgICAgICAiYTFlMmMwM2RjZGVkYmE5OGEwNmEwMGNhZGZiNjdhMGUwYjFjZDkzOTg2ODYwZWMwYzVjZTY2ZTc4OWM0NGU1NyIKICAgICAgXSwKICAgICAgImFmdGVyIjogWwogICAgICAgICJmaWxlIiwKICAgICAgICA0OTMsCiAgICAgICAgMCwKICAgICAgICAwLAogICAgICAgICJlY2M4YjlkZmM0NWViN2ZhMjliNDEwZmZhY2E2MjU3ODczODkwZGU1M2I4MGZlOTE3MzU3MzdiNDkwNjdjNWYyIgogICAgICBdCiAgICB9CiAgfSwKICAiZGlyZWN0b3J5X21ldGFkYXRhX2NvbXBhcmVkIjogdHJ1ZSwKICAiZGlyZWN0b3J5X2NvdW50X2Jhc2UiOiAzMTMsCiAgImRpcmVjdG9yeV9jb3VudF9jYW5kaWRhdGUiOiAzMTMsCiAgImRpcmVjdG9yeV9tZXRhZGF0YV9kZWx0YSI6IHt9LAogICJzYm9tX3BhY2thZ2VfY291bnRfYmFzZSI6IDQ0LAogICJzYm9tX3BhY2thZ2VfY291bnRfY2FuZGlkYXRlIjogNDQsCiAgInNib21fb25seV9kZWx0YSI6IHsKICAgICJ6bGliIjogWwogICAgICAiMS4zLjItcjAiLAogICAgICAiMS4zLjItcjEiCiAgICBdCiAgfSwKICAiZnVsbF9zY2FuX2Jhc2VsaW5lX2ZpbmRpbmdzIjogMSwKICAiZnVsbF9zY2FuX2NhbmRpZGF0ZV9hbGxzZXZlcml0eV9maW5kaW5ncyI6IDAsCiAgImRiX3NuYXBzaG90X3NhbWUiOiB0cnVlLAogICJuYXRpdmVfd29ya2xvYWRfY2hhbmdlZCI6IGZhbHNlCn0K" + }, + { + "digest": "sha256:6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "media_type": "application/json", + "content_base64": "ewogICJpbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJ6bGliX3BhY2thZ2UiOiAiMS4zLjItcjEiLAogICJmaWxlcyI6IHsKICAgICJsaWIvYXBrL2RiL2luc3RhbGxlZCI6IFsKICAgICAgImZpbGUiLAogICAgICA0MjAsCiAgICAgIDAsCiAgICAgIDAsCiAgICAgICJmNTkwNzYyMTk2NzEwZTI1YzBlOWY3MmRhMDY0MmNhZDhhNWRjYmEwYWE5ZTU4YTBjYmFhNjU2ODRkMTVjMDAxIgogICAgXSwKICAgICJ1c3IvbGliL2xpYnouc28uMS4zLjIiOiBbCiAgICAgICJmaWxlIiwKICAgICAgNDkzLAogICAgICAwLAogICAgICAwLAogICAgICAiZWNjOGI5ZGZjNDVlYjdmYTI5YjQxMGZmYWNhNjI1Nzg3Mzg5MGRlNTNiODBmZTkxNzM1NzM3YjQ5MDY3YzVmMiIKICAgIF0KICB9Cn0K" + }, + { + "digest": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "media_type": "application/json", + "content_base64": "ewogICJhcGlWZXJzaW9uIjogImFwcHMvdjEiLAogICJraW5kIjogIkRlcGxveW1lbnQiLAogICJtZXRhZGF0YSI6IHsKICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgImFyZ29jZC5hcmdvcHJvai5pby90cmFja2luZy1pZCI6ICJpbmZvcm1lZC1kZWNpc2lvbjphcHBzL0RlcGxveW1lbnQ6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIKICAgIH0sCiAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICJ1aWQiOiAiYTU4OGUxMGEtOTBkMi00ODgzLTk3NWUtNmRkOGI4ZmVjYTkyIgogIH0sCiAgInNwZWMiOiB7CiAgICAicHJvZ3Jlc3NEZWFkbGluZVNlY29uZHMiOiA2MDAsCiAgICAicmVwbGljYXMiOiAxLAogICAgInJldmlzaW9uSGlzdG9yeUxpbWl0IjogMTAsCiAgICAic2VsZWN0b3IiOiB7CiAgICAgICJtYXRjaExhYmVscyI6IHsKICAgICAgICAiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIKICAgICAgfQogICAgfSwKICAgICJzdHJhdGVneSI6IHsKICAgICAgInR5cGUiOiAiUmVjcmVhdGUiCiAgICB9LAogICAgInRlbXBsYXRlIjogewogICAgICAibWV0YWRhdGEiOiB7CiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImluZm9ybWVkLWRlY2lzaW9uLmNvdWxvbWIuc29jaWFsL2FkbWlzc2lvbiI6ICJhcHByb3ZlZDsgSU5GRC1XUC0wMDA3IGN1dG92ZXIiCiAgICAgICAgfSwKICAgICAgICAibGFiZWxzIjogewogICAgICAgICAgImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6ICJyZXZpZXciLAogICAgICAgICAgImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24iCiAgICAgICAgfQogICAgICB9LAogICAgICAic3BlYyI6IHsKICAgICAgICAiYXV0b21vdW50U2VydmljZUFjY291bnRUb2tlbiI6IGZhbHNlLAogICAgICAgICJjb250YWluZXJzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIklORkRfS0VZQ0FQRV9JU1NVRVIiLAogICAgICAgICAgICAgICAgInZhbHVlIjogImh0dHBzOi8va2MuY291bG9tYi5zb2NpYWwiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0NPTlRBSU5FUl9DT05GSUciLAogICAgICAgICAgICAgICAgInZhbHVlIjogIi9jb25maWd1cmF0aW9uL3J1bnRpbWUuanNvbiIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2Ojc2M2MzNjQwMmM4YmU3Y2M0YzFiZDFhNjE2MjNkMWFmZjkxMTZkNTIyNDE4Nzc0MjViNDVhNzAxOGNjMDg4M2EiLAogICAgICAgICAgICAiaW1hZ2VQdWxsUG9saWN5IjogIklmTm90UHJlc2VudCIsCiAgICAgICAgICAgICJsaXZlbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICJmYWlsdXJlVGhyZXNob2xkIjogMywKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAgICJwb3J0cyI6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiY29udGFpbmVyUG9ydCI6IDgwODAsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJodHRwIiwKICAgICAgICAgICAgICAgICJwcm90b2NvbCI6ICJUQ1AiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiY29udGFpbmVyUG9ydCI6IDgwODEsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZCIsCiAgICAgICAgICAgICAgICAicHJvdG9jb2wiOiAiVENQIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInJlYWRpbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICJmYWlsdXJlVGhyZXNob2xkIjogMywKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVzb3VyY2VzIjogewogICAgICAgICAgICAgICJsaW1pdHMiOiB7CiAgICAgICAgICAgICAgICAiY3B1IjogIjUwMG0iLAogICAgICAgICAgICAgICAgIm1lbW9yeSI6ICIyNTZNaSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJyZXF1ZXN0cyI6IHsKICAgICAgICAgICAgICAgICJjcHUiOiAiNW0iLAogICAgICAgICAgICAgICAgIm1lbW9yeSI6ICI2NE1pIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgICAiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjogZmFsc2UsCiAgICAgICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgICAgICJkcm9wIjogWwogICAgICAgICAgICAgICAgICAiQUxMIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInJlYWRPbmx5Um9vdEZpbGVzeXN0ZW0iOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdGFydHVwUHJvYmUiOiB7CiAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAxMiwKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGVybWluYXRpb25NZXNzYWdlUGF0aCI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0ZXJtaW5hdGlvbk1lc3NhZ2VQb2xpY3kiOiAiRmlsZSIsCiAgICAgICAgICAgICJ2b2x1bWVNb3VudHMiOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvZGF0YSIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvcnVuL2luZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi90bXAiLAogICAgICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJjb25maWd1cmF0aW9uIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9wb2xpY3kiLAogICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9hdWRpdCIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJhdWRpdCIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24va3ViZXJuZXRlcyIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi93b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24vcmVxdWVzdGVyIiwKICAgICAgICAgICAgICAgICJuYW1lIjogInNpdHRpbmctcmVxdWVzdGVyIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkbnNQb2xpY3kiOiAiQ2x1c3RlckZpcnN0IiwKICAgICAgICAicmVzdGFydFBvbGljeSI6ICJBbHdheXMiLAogICAgICAgICJzY2hlZHVsZXJOYW1lIjogImRlZmF1bHQtc2NoZWR1bGVyIiwKICAgICAgICAic2VjdXJpdHlDb250ZXh0IjogewogICAgICAgICAgImZzR3JvdXAiOiAxMDAwMSwKICAgICAgICAgICJmc0dyb3VwQ2hhbmdlUG9saWN5IjogIk9uUm9vdE1pc21hdGNoIiwKICAgICAgICAgICJydW5Bc0dyb3VwIjogMTAwMDEsCiAgICAgICAgICAicnVuQXNOb25Sb290IjogdHJ1ZSwKICAgICAgICAgICJydW5Bc1VzZXIiOiAxMDAwMSwKICAgICAgICAgICJzZWNjb21wUHJvZmlsZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiUnVudGltZURlZmF1bHQiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAic2VydmljZUFjY291bnQiOiAicmV2aWV3IiwKICAgICAgICAic2VydmljZUFjY291bnROYW1lIjogInJldmlldyIsCiAgICAgICAgInRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzIjogNDUsCiAgICAgICAgInZvbHVtZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImRhdGEiLAogICAgICAgICAgICAicGVyc2lzdGVudFZvbHVtZUNsYWltIjogewogICAgICAgICAgICAgICJjbGFpbU5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tZGF0YSIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImVtcHR5RGlyIjogewogICAgICAgICAgICAgICJtZWRpdW0iOiAiTWVtb3J5IiwKICAgICAgICAgICAgICAic2l6ZUxpbWl0IjogIjE2TWkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZW1wdHlEaXIiOiB7CiAgICAgICAgICAgICAgIm1lZGl1bSI6ICJNZW1vcnkiLAogICAgICAgICAgICAgICJzaXplTGltaXQiOiAiMTZNaSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNvbmZpZ01hcCI6IHsKICAgICAgICAgICAgICAiZGVmYXVsdE1vZGUiOiAyOTIsCiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJuYW1lIjogImNvbmZpZ3VyYXRpb24iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJjYWxsZXIiLAogICAgICAgICAgICAicHJvamVjdGVkIjogewogICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAic291cmNlcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInNlcnZpY2VBY2NvdW50VG9rZW4iOiB7CiAgICAgICAgICAgICAgICAgICAgImF1ZGllbmNlIjogImZsZXgtYXV0aCIsCiAgICAgICAgICAgICAgICAgICAgImV4cGlyYXRpb25TZWNvbmRzIjogMzYwMCwKICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiYXVkaXQiLAogICAgICAgICAgICAic2VjcmV0IjogewogICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAiaXRlbXMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJrZXkiOiAidG9rZW4iLAogICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJzZWNyZXROYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLWF1ZGl0IgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICJwcm9qZWN0ZWQiOiB7CiAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic2VydmljZUFjY291bnRUb2tlbiI6IHsKICAgICAgICAgICAgICAgICAgICAiZXhwaXJhdGlvblNlY29uZHMiOiA2MDAsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAidG9rZW4iCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJjb25maWdNYXAiOiB7CiAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAia2V5IjogImNhLmNydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogImNhLmNydCIKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmUtcm9vdC1jYS5jcnQiCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJjb25maWdNYXAiOiB7CiAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjkyLAogICAgICAgICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLXdvcmtsb2FkLXJlZ2lzdHJ5IgogICAgICAgICAgICB9LAogICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNpdHRpbmctcmVxdWVzdGVyIiwKICAgICAgICAgICAgInNlY3JldCI6IHsKICAgICAgICAgICAgICAiZGVmYXVsdE1vZGUiOiAyODgsCiAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAia2V5IjogImNsaWVudC1zZWNyZXQiLAogICAgICAgICAgICAgICAgICAicGF0aCI6ICJjbGllbnQtc2VjcmV0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UsCiAgICAgICAgICAgICAgInNlY3JldE5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tc2l0dGluZy1yZXF1ZXN0ZXIiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9Cn0K" + }, + { + "digest": "sha256:042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "media_type": "application/json", + "content_base64": "ewogICJjb25maWdtYXAiOiB7CiAgICAiYXBpVmVyc2lvbiI6ICJ2MSIsCiAgICAiaW1tdXRhYmxlIjogdHJ1ZSwKICAgICJraW5kIjogIkNvbmZpZ01hcCIsCiAgICAibWV0YWRhdGEiOiB7CiAgICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgICAiYXJnb2NkLmFyZ29wcm9qLmlvL3RyYWNraW5nLWlkIjogImluZm9ybWVkLWRlY2lzaW9uOi9Db25maWdNYXA6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiLAogICAgICAgICJpbmZvcm1lZC1kZWNpc2lvbi5jb3Vsb21iLnNvY2lhbC9hZG1pc3Npb24iOiAiYXBwcm92ZWQ7IElORkQtV1AtMDAwNyBjdXRvdmVyIgogICAgICB9LAogICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1ydW50aW1lLTZjMjIxODc4ZDA1MSIsCiAgICAgICJuYW1lc3BhY2UiOiAiaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAidWlkIjogIjkwMTEzZDJkLTU0ZDktNGU4Mi1iMWQzLTkwYjQ5ZWJlZDJiNSIKICAgIH0sCiAgICAiY2Fub25pY2FsX2RhdGFfc2hhMjU2IjogIjhlYzQ2MmQxMjM0NzU0OGY1MDZlZWViZjFlM2M3Y2M0NzY0ODAxOWM4YTc4MzgwNGQwOWJjYzc5YjBmMjJhZjYiCiAgfSwKICAicHZjIjogewogICAgImFwaVZlcnNpb24iOiAidjEiLAogICAgImtpbmQiOiAiUGVyc2lzdGVudFZvbHVtZUNsYWltIiwKICAgICJtZXRhZGF0YSI6IHsKICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICJhcmdvY2QuYXJnb3Byb2ouaW8vdHJhY2tpbmctaWQiOiAiaW5mb3JtZWQtZGVjaXNpb246L1BlcnNpc3RlbnRWb2x1bWVDbGFpbTppbmZvcm1lZC1kZWNpc2lvbi9pbmZvcm1lZC1kZWNpc2lvbi1kYXRhIiwKICAgICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIsCiAgICAgICAgInB2Lmt1YmVybmV0ZXMuaW8vYmluZC1jb21wbGV0ZWQiOiAieWVzIiwKICAgICAgICAicHYua3ViZXJuZXRlcy5pby9ib3VuZC1ieS1jb250cm9sbGVyIjogInllcyIsCiAgICAgICAgInZvbHVtZS5iZXRhLmt1YmVybmV0ZXMuaW8vc3RvcmFnZS1wcm92aXNpb25lciI6ICJyYW5jaGVyLmlvL2xvY2FsLXBhdGgiLAogICAgICAgICJ2b2x1bWUua3ViZXJuZXRlcy5pby9zZWxlY3RlZC1ub2RlIjogIjIzOS42Mi4yMDUuOTIuaG9zdC5zZWN1cmVzZXJ2ZXIubmV0IiwKICAgICAgICAidm9sdW1lLmt1YmVybmV0ZXMuaW8vc3RvcmFnZS1wcm92aXNpb25lciI6ICJyYW5jaGVyLmlvL2xvY2FsLXBhdGgiCiAgICAgIH0sCiAgICAgICJmaW5hbGl6ZXJzIjogWwogICAgICAgICJrdWJlcm5ldGVzLmlvL3B2Yy1wcm90ZWN0aW9uIgogICAgICBdLAogICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbi1kYXRhIiwKICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICJ1aWQiOiAiZDgwYjI1YjEtMTQxYS00NDFiLWIyMDUtOThmYTJmZDk4YjdjIgogICAgfSwKICAgICJzcGVjIjogewogICAgICAiYWNjZXNzTW9kZXMiOiBbCiAgICAgICAgIlJlYWRXcml0ZU9uY2UiCiAgICAgIF0sCiAgICAgICJyZXNvdXJjZXMiOiB7CiAgICAgICAgInJlcXVlc3RzIjogewogICAgICAgICAgInN0b3JhZ2UiOiAiMUdpIgogICAgICAgIH0KICAgICAgfSwKICAgICAgInN0b3JhZ2VDbGFzc05hbWUiOiAibG9jYWwtcGF0aCIsCiAgICAgICJ2b2x1bWVNb2RlIjogIkZpbGVzeXN0ZW0iLAogICAgICAidm9sdW1lTmFtZSI6ICJwdmMtZDgwYjI1YjEtMTQxYS00NDFiLWIyMDUtOThmYTJmZDk4YjdjIgogICAgfQogIH0sCiAgInB2Y19waGFzZSI6ICJCb3VuZCIKfQo=" + }, + { + "digest": "sha256:487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "media_type": "application/json", + "content_base64": "ewogICJhcGlWZXJzaW9uIjogImFwcHMvdjEiLAogICJraW5kIjogIkRlcGxveW1lbnQiLAogICJtZXRhZGF0YSI6IHsKICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgImFyZ29jZC5hcmdvcHJvai5pby90cmFja2luZy1pZCI6ICJpbmZvcm1lZC1kZWNpc2lvbjphcHBzL0RlcGxveW1lbnQ6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIKICAgIH0sCiAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICJ1aWQiOiAiYTU4OGUxMGEtOTBkMi00ODgzLTk3NWUtNmRkOGI4ZmVjYTkyIgogIH0sCiAgInNwZWMiOiB7CiAgICAicHJvZ3Jlc3NEZWFkbGluZVNlY29uZHMiOiA2MDAsCiAgICAicmVwbGljYXMiOiAxLAogICAgInJldmlzaW9uSGlzdG9yeUxpbWl0IjogMTAsCiAgICAic2VsZWN0b3IiOiB7CiAgICAgICJtYXRjaExhYmVscyI6IHsKICAgICAgICAiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIKICAgICAgfQogICAgfSwKICAgICJzdHJhdGVneSI6IHsKICAgICAgInR5cGUiOiAiUmVjcmVhdGUiCiAgICB9LAogICAgInRlbXBsYXRlIjogewogICAgICAibWV0YWRhdGEiOiB7CiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImluZm9ybWVkLWRlY2lzaW9uLmNvdWxvbWIuc29jaWFsL2FkbWlzc2lvbiI6ICJhcHByb3ZlZDsgSU5GRC1XUC0wMDA3IGN1dG92ZXIiCiAgICAgICAgfSwKICAgICAgICAibGFiZWxzIjogewogICAgICAgICAgImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6ICJyZXZpZXciLAogICAgICAgICAgImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24iCiAgICAgICAgfQogICAgICB9LAogICAgICAic3BlYyI6IHsKICAgICAgICAiYXV0b21vdW50U2VydmljZUFjY291bnRUb2tlbiI6IGZhbHNlLAogICAgICAgICJjb250YWluZXJzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIklORkRfS0VZQ0FQRV9JU1NVRVIiLAogICAgICAgICAgICAgICAgInZhbHVlIjogImh0dHBzOi8va2MuY291bG9tYi5zb2NpYWwiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0NPTlRBSU5FUl9DT05GSUciLAogICAgICAgICAgICAgICAgInZhbHVlIjogIi9jb25maWd1cmF0aW9uL3J1bnRpbWUuanNvbiIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICAgICAgICAgICAiaW1hZ2VQdWxsUG9saWN5IjogIklmTm90UHJlc2VudCIsCiAgICAgICAgICAgICJsaXZlbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICJmYWlsdXJlVGhyZXNob2xkIjogMywKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAgICJwb3J0cyI6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiY29udGFpbmVyUG9ydCI6IDgwODAsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJodHRwIiwKICAgICAgICAgICAgICAgICJwcm90b2NvbCI6ICJUQ1AiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiY29udGFpbmVyUG9ydCI6IDgwODEsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZCIsCiAgICAgICAgICAgICAgICAicHJvdG9jb2wiOiAiVENQIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInJlYWRpbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICJmYWlsdXJlVGhyZXNob2xkIjogMywKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVzb3VyY2VzIjogewogICAgICAgICAgICAgICJsaW1pdHMiOiB7CiAgICAgICAgICAgICAgICAiY3B1IjogIjUwMG0iLAogICAgICAgICAgICAgICAgIm1lbW9yeSI6ICIyNTZNaSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJyZXF1ZXN0cyI6IHsKICAgICAgICAgICAgICAgICJjcHUiOiAiNW0iLAogICAgICAgICAgICAgICAgIm1lbW9yeSI6ICI2NE1pIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgICAiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjogZmFsc2UsCiAgICAgICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgICAgICJkcm9wIjogWwogICAgICAgICAgICAgICAgICAiQUxMIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInJlYWRPbmx5Um9vdEZpbGVzeXN0ZW0iOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdGFydHVwUHJvYmUiOiB7CiAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAxMiwKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGVybWluYXRpb25NZXNzYWdlUGF0aCI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0ZXJtaW5hdGlvbk1lc3NhZ2VQb2xpY3kiOiAiRmlsZSIsCiAgICAgICAgICAgICJ2b2x1bWVNb3VudHMiOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvZGF0YSIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvcnVuL2luZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi90bXAiLAogICAgICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJjb25maWd1cmF0aW9uIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9wb2xpY3kiLAogICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9hdWRpdCIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJhdWRpdCIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24va3ViZXJuZXRlcyIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi93b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24vcmVxdWVzdGVyIiwKICAgICAgICAgICAgICAgICJuYW1lIjogInNpdHRpbmctcmVxdWVzdGVyIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkbnNQb2xpY3kiOiAiQ2x1c3RlckZpcnN0IiwKICAgICAgICAicmVzdGFydFBvbGljeSI6ICJBbHdheXMiLAogICAgICAgICJzY2hlZHVsZXJOYW1lIjogImRlZmF1bHQtc2NoZWR1bGVyIiwKICAgICAgICAic2VjdXJpdHlDb250ZXh0IjogewogICAgICAgICAgImZzR3JvdXAiOiAxMDAwMSwKICAgICAgICAgICJmc0dyb3VwQ2hhbmdlUG9saWN5IjogIk9uUm9vdE1pc21hdGNoIiwKICAgICAgICAgICJydW5Bc0dyb3VwIjogMTAwMDEsCiAgICAgICAgICAicnVuQXNOb25Sb290IjogdHJ1ZSwKICAgICAgICAgICJydW5Bc1VzZXIiOiAxMDAwMSwKICAgICAgICAgICJzZWNjb21wUHJvZmlsZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiUnVudGltZURlZmF1bHQiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAic2VydmljZUFjY291bnQiOiAicmV2aWV3IiwKICAgICAgICAic2VydmljZUFjY291bnROYW1lIjogInJldmlldyIsCiAgICAgICAgInRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzIjogNDUsCiAgICAgICAgInZvbHVtZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImRhdGEiLAogICAgICAgICAgICAicGVyc2lzdGVudFZvbHVtZUNsYWltIjogewogICAgICAgICAgICAgICJjbGFpbU5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tZGF0YSIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImVtcHR5RGlyIjogewogICAgICAgICAgICAgICJtZWRpdW0iOiAiTWVtb3J5IiwKICAgICAgICAgICAgICAic2l6ZUxpbWl0IjogIjE2TWkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZW1wdHlEaXIiOiB7CiAgICAgICAgICAgICAgIm1lZGl1bSI6ICJNZW1vcnkiLAogICAgICAgICAgICAgICJzaXplTGltaXQiOiAiMTZNaSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNvbmZpZ01hcCI6IHsKICAgICAgICAgICAgICAiZGVmYXVsdE1vZGUiOiAyOTIsCiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJuYW1lIjogImNvbmZpZ3VyYXRpb24iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJjYWxsZXIiLAogICAgICAgICAgICAicHJvamVjdGVkIjogewogICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAic291cmNlcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInNlcnZpY2VBY2NvdW50VG9rZW4iOiB7CiAgICAgICAgICAgICAgICAgICAgImF1ZGllbmNlIjogImZsZXgtYXV0aCIsCiAgICAgICAgICAgICAgICAgICAgImV4cGlyYXRpb25TZWNvbmRzIjogMzYwMCwKICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiYXVkaXQiLAogICAgICAgICAgICAic2VjcmV0IjogewogICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAiaXRlbXMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJrZXkiOiAidG9rZW4iLAogICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJzZWNyZXROYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLWF1ZGl0IgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICJwcm9qZWN0ZWQiOiB7CiAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic2VydmljZUFjY291bnRUb2tlbiI6IHsKICAgICAgICAgICAgICAgICAgICAiZXhwaXJhdGlvblNlY29uZHMiOiA2MDAsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAidG9rZW4iCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJjb25maWdNYXAiOiB7CiAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAia2V5IjogImNhLmNydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogImNhLmNydCIKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmUtcm9vdC1jYS5jcnQiCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJjb25maWdNYXAiOiB7CiAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjkyLAogICAgICAgICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLXdvcmtsb2FkLXJlZ2lzdHJ5IgogICAgICAgICAgICB9LAogICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNpdHRpbmctcmVxdWVzdGVyIiwKICAgICAgICAgICAgInNlY3JldCI6IHsKICAgICAgICAgICAgICAiZGVmYXVsdE1vZGUiOiAyODgsCiAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAia2V5IjogImNsaWVudC1zZWNyZXQiLAogICAgICAgICAgICAgICAgICAicGF0aCI6ICJjbGllbnQtc2VjcmV0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UsCiAgICAgICAgICAgICAgInNlY3JldE5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tc2l0dGluZy1yZXF1ZXN0ZXIiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9Cn0K" + }, + { + "digest": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "media_type": "application/json", + "content_base64": "ewogICJhcGlWZXJzaW9uIjogImFwcHMvdjEiLAogICJraW5kIjogIkRlcGxveW1lbnQiLAogICJtZXRhZGF0YSI6IHsKICAgICJhbm5vdGF0aW9ucyI6IHsKICAgICAgImFyZ29jZC5hcmdvcHJvai5pby90cmFja2luZy1pZCI6ICJpbmZvcm1lZC1kZWNpc2lvbjphcHBzL0RlcGxveW1lbnQ6aW5mb3JtZWQtZGVjaXNpb24vaW5mb3JtZWQtZGVjaXNpb24iLAogICAgICAiaW5mb3JtZWQtZGVjaXNpb24uY291bG9tYi5zb2NpYWwvYWRtaXNzaW9uIjogImFwcHJvdmVkOyBJTkZELVdQLTAwMDcgY3V0b3ZlciIKICAgIH0sCiAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICJ1aWQiOiAiYTU4OGUxMGEtOTBkMi00ODgzLTk3NWUtNmRkOGI4ZmVjYTkyIgogIH0sCiAgInNwZWMiOiB7CiAgICAicHJvZ3Jlc3NEZWFkbGluZVNlY29uZHMiOiA2MDAsCiAgICAicmVwbGljYXMiOiAxLAogICAgInJldmlzaW9uSGlzdG9yeUxpbWl0IjogMTAsCiAgICAic2VsZWN0b3IiOiB7CiAgICAgICJtYXRjaExhYmVscyI6IHsKICAgICAgICAiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIKICAgICAgfQogICAgfSwKICAgICJzdHJhdGVneSI6IHsKICAgICAgInR5cGUiOiAiUmVjcmVhdGUiCiAgICB9LAogICAgInRlbXBsYXRlIjogewogICAgICAibWV0YWRhdGEiOiB7CiAgICAgICAgImFubm90YXRpb25zIjogewogICAgICAgICAgImluZm9ybWVkLWRlY2lzaW9uLmNvdWxvbWIuc29jaWFsL2FkbWlzc2lvbiI6ICJhcHByb3ZlZDsgSU5GRC1XUC0wMDA3IGN1dG92ZXIiCiAgICAgICAgfSwKICAgICAgICAibGFiZWxzIjogewogICAgICAgICAgImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6ICJyZXZpZXciLAogICAgICAgICAgImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24iCiAgICAgICAgfQogICAgICB9LAogICAgICAic3BlYyI6IHsKICAgICAgICAiYXV0b21vdW50U2VydmljZUFjY291bnRUb2tlbiI6IGZhbHNlLAogICAgICAgICJjb250YWluZXJzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZW52IjogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIklORkRfS0VZQ0FQRV9JU1NVRVIiLAogICAgICAgICAgICAgICAgInZhbHVlIjogImh0dHBzOi8va2MuY291bG9tYi5zb2NpYWwiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJJTkZEX0NPTlRBSU5FUl9DT05GSUciLAogICAgICAgICAgICAgICAgInZhbHVlIjogIi9jb25maWd1cmF0aW9uL3J1bnRpbWUuanNvbiIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2Ojc2M2MzNjQwMmM4YmU3Y2M0YzFiZDFhNjE2MjNkMWFmZjkxMTZkNTIyNDE4Nzc0MjViNDVhNzAxOGNjMDg4M2EiLAogICAgICAgICAgICAiaW1hZ2VQdWxsUG9saWN5IjogIklmTm90UHJlc2VudCIsCiAgICAgICAgICAgICJsaXZlbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICJmYWlsdXJlVGhyZXNob2xkIjogMywKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAibmFtZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAgICJwb3J0cyI6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiY29udGFpbmVyUG9ydCI6IDgwODAsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJodHRwIiwKICAgICAgICAgICAgICAgICJwcm90b2NvbCI6ICJUQ1AiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiY29udGFpbmVyUG9ydCI6IDgwODEsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZCIsCiAgICAgICAgICAgICAgICAicHJvdG9jb2wiOiAiVENQIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInJlYWRpbmVzc1Byb2JlIjogewogICAgICAgICAgICAgICJmYWlsdXJlVGhyZXNob2xkIjogMywKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVzb3VyY2VzIjogewogICAgICAgICAgICAgICJsaW1pdHMiOiB7CiAgICAgICAgICAgICAgICAiY3B1IjogIjUwMG0iLAogICAgICAgICAgICAgICAgIm1lbW9yeSI6ICIyNTZNaSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJyZXF1ZXN0cyI6IHsKICAgICAgICAgICAgICAgICJjcHUiOiAiNW0iLAogICAgICAgICAgICAgICAgIm1lbW9yeSI6ICI2NE1pIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgInNlY3VyaXR5Q29udGV4dCI6IHsKICAgICAgICAgICAgICAiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjogZmFsc2UsCiAgICAgICAgICAgICAgImNhcGFiaWxpdGllcyI6IHsKICAgICAgICAgICAgICAgICJkcm9wIjogWwogICAgICAgICAgICAgICAgICAiQUxMIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInJlYWRPbmx5Um9vdEZpbGVzeXN0ZW0iOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdGFydHVwUHJvYmUiOiB7CiAgICAgICAgICAgICAgImZhaWx1cmVUaHJlc2hvbGQiOiAxMiwKICAgICAgICAgICAgICAiaHR0cEdldCI6IHsKICAgICAgICAgICAgICAgICJwYXRoIjogIi9oZWFsdGh6IiwKICAgICAgICAgICAgICAgICJwb3J0IjogImh0dHAiLAogICAgICAgICAgICAgICAgInNjaGVtZSI6ICJIVFRQIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInBlcmlvZFNlY29uZHMiOiAxMCwKICAgICAgICAgICAgICAic3VjY2Vzc1RocmVzaG9sZCI6IDEsCiAgICAgICAgICAgICAgInRpbWVvdXRTZWNvbmRzIjogMgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGVybWluYXRpb25NZXNzYWdlUGF0aCI6ICIvZGV2L3Rlcm1pbmF0aW9uLWxvZyIsCiAgICAgICAgICAgICJ0ZXJtaW5hdGlvbk1lc3NhZ2VQb2xpY3kiOiAiRmlsZSIsCiAgICAgICAgICAgICJ2b2x1bWVNb3VudHMiOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvZGF0YSIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvcnVuL2luZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi90bXAiLAogICAgICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm1vdW50UGF0aCI6ICIvY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJjb25maWd1cmF0aW9uIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9wb2xpY3kiLAogICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FsbGVyIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJtb3VudFBhdGgiOiAiL3Zhci9ydW4vc2VjcmV0cy9pbmZvcm1lZC1kZWNpc2lvbi9hdWRpdCIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJhdWRpdCIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24va3ViZXJuZXRlcyIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi93b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIsCiAgICAgICAgICAgICAgICAicmVhZE9ubHkiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibW91bnRQYXRoIjogIi92YXIvcnVuL3NlY3JldHMvaW5mb3JtZWQtZGVjaXNpb24vcmVxdWVzdGVyIiwKICAgICAgICAgICAgICAgICJuYW1lIjogInNpdHRpbmctcmVxdWVzdGVyIiwKICAgICAgICAgICAgICAgICJyZWFkT25seSI6IHRydWUKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkbnNQb2xpY3kiOiAiQ2x1c3RlckZpcnN0IiwKICAgICAgICAicmVzdGFydFBvbGljeSI6ICJBbHdheXMiLAogICAgICAgICJzY2hlZHVsZXJOYW1lIjogImRlZmF1bHQtc2NoZWR1bGVyIiwKICAgICAgICAic2VjdXJpdHlDb250ZXh0IjogewogICAgICAgICAgImZzR3JvdXAiOiAxMDAwMSwKICAgICAgICAgICJmc0dyb3VwQ2hhbmdlUG9saWN5IjogIk9uUm9vdE1pc21hdGNoIiwKICAgICAgICAgICJydW5Bc0dyb3VwIjogMTAwMDEsCiAgICAgICAgICAicnVuQXNOb25Sb290IjogdHJ1ZSwKICAgICAgICAgICJydW5Bc1VzZXIiOiAxMDAwMSwKICAgICAgICAgICJzZWNjb21wUHJvZmlsZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiUnVudGltZURlZmF1bHQiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAic2VydmljZUFjY291bnQiOiAicmV2aWV3IiwKICAgICAgICAic2VydmljZUFjY291bnROYW1lIjogInJldmlldyIsCiAgICAgICAgInRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzIjogNDUsCiAgICAgICAgInZvbHVtZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImRhdGEiLAogICAgICAgICAgICAicGVyc2lzdGVudFZvbHVtZUNsYWltIjogewogICAgICAgICAgICAgICJjbGFpbU5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tZGF0YSIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImVtcHR5RGlyIjogewogICAgICAgICAgICAgICJtZWRpdW0iOiAiTWVtb3J5IiwKICAgICAgICAgICAgICAic2l6ZUxpbWl0IjogIjE2TWkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJuYW1lIjogInJ1bnRpbWUiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZW1wdHlEaXIiOiB7CiAgICAgICAgICAgICAgIm1lZGl1bSI6ICJNZW1vcnkiLAogICAgICAgICAgICAgICJzaXplTGltaXQiOiAiMTZNaSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5hbWUiOiAidG1wIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNvbmZpZ01hcCI6IHsKICAgICAgICAgICAgICAiZGVmYXVsdE1vZGUiOiAyOTIsCiAgICAgICAgICAgICAgIm5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tcnVudGltZS02YzIyMTg3OGQwNTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJuYW1lIjogImNvbmZpZ3VyYXRpb24iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJjYWxsZXIiLAogICAgICAgICAgICAicHJvamVjdGVkIjogewogICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAic291cmNlcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInNlcnZpY2VBY2NvdW50VG9rZW4iOiB7CiAgICAgICAgICAgICAgICAgICAgImF1ZGllbmNlIjogImZsZXgtYXV0aCIsCiAgICAgICAgICAgICAgICAgICAgImV4cGlyYXRpb25TZWNvbmRzIjogMzYwMCwKICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiYXVkaXQiLAogICAgICAgICAgICAic2VjcmV0IjogewogICAgICAgICAgICAgICJkZWZhdWx0TW9kZSI6IDI4OCwKICAgICAgICAgICAgICAiaXRlbXMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJrZXkiOiAidG9rZW4iLAogICAgICAgICAgICAgICAgICAicGF0aCI6ICJ0b2tlbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJzZWNyZXROYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLWF1ZGl0IgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJrdWJlcm5ldGVzLWFwaSIsCiAgICAgICAgICAgICJwcm9qZWN0ZWQiOiB7CiAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjg4LAogICAgICAgICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic2VydmljZUFjY291bnRUb2tlbiI6IHsKICAgICAgICAgICAgICAgICAgICAiZXhwaXJhdGlvblNlY29uZHMiOiA2MDAsCiAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAidG9rZW4iCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJjb25maWdNYXAiOiB7CiAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAia2V5IjogImNhLmNydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogImNhLmNydCIKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImt1YmUtcm9vdC1jYS5jcnQiCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJjb25maWdNYXAiOiB7CiAgICAgICAgICAgICAgImRlZmF1bHRNb2RlIjogMjkyLAogICAgICAgICAgICAgICJuYW1lIjogImluZm9ybWVkLWRlY2lzaW9uLXdvcmtsb2FkLXJlZ2lzdHJ5IgogICAgICAgICAgICB9LAogICAgICAgICAgICAibmFtZSI6ICJ3b3JrbG9hZC1yZWdpc3RyeSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNpdHRpbmctcmVxdWVzdGVyIiwKICAgICAgICAgICAgInNlY3JldCI6IHsKICAgICAgICAgICAgICAiZGVmYXVsdE1vZGUiOiAyODgsCiAgICAgICAgICAgICAgIml0ZW1zIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAia2V5IjogImNsaWVudC1zZWNyZXQiLAogICAgICAgICAgICAgICAgICAicGF0aCI6ICJjbGllbnQtc2VjcmV0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm9wdGlvbmFsIjogZmFsc2UsCiAgICAgICAgICAgICAgInNlY3JldE5hbWUiOiAiaW5mb3JtZWQtZGVjaXNpb24tc2l0dGluZy1yZXF1ZXN0ZXIiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9Cn0K" + }, + { + "digest": "sha256:09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtZXhlY3V0aW9uLXNvdXJjZS1idW5kbGUiLAogICJ2ZXJzaW9uIjogMSwKICAicHJvcG9zYWxfaWQiOiAiSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEiLAogICJmaWxlcyI6IHsKICAgICJleGVjdXRpb24vYWN0dWF0b3IucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiZGFiZWRhMzNmZmU1Mjk4OTMzN2UyMTRkYzZlNmQzZWY1ZjA0Nzk3NTY5MTQ1ZmFmMmZmNjkwMjRiMTAxZWM4MCIsCiAgICAgICJjb250ZW50IjogIlwiXCJcIk9uZSBmaXhlZCBzdXBlcnZpc2VkIHBoYXNlOyBuZXZlciBydW4gdGhpcyBkdXJpbmcgc291cmNlIHByZXBhcmF0aW9uLlwiXCJcIlxuaW1wb3J0IGFyZ3BhcnNlXG5pbXBvcnQgaGFzaGxpYlxuaW1wb3J0IGpzb25cbmltcG9ydCBvc1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5pbXBvcnQgcmVcbmltcG9ydCBzZWxlY3RvcnNcbmltcG9ydCBzdGF0XG5pbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHN5c1xuaW1wb3J0IHRpbWVcblxuaWYgc3lzLmZsYWdzLm9wdGltaXplOlxuICAgIHJhaXNlIFN5c3RlbUV4aXQoJ29wdGltaXplZCBpbnRlcnByZXRlciByZWZ1c2VkJylcblxuUEhBU0VTID0gKCdkcmlsbC1iYWNrdXAnLCAnZHJpbGwtY29weScsICdvZmZsaW5lLXZlcmlmeScsICdjbGVhbnVwLW9mZmxpbmUnLFxuICAgICAgICAgICdjdXRvdmVyLWJhY2t1cCcsICdjdXRvdmVyLWNvcHknLCAncmVsZWFzZScsICd2ZXJpZnknLCAncm9sbGJhY2snLCAncm9sbGJhY2stdmVyaWZ5JylcblxuXG5kZWYgcmVxdWlyZSh2YWx1ZSwgcmVhc29uKTpcbiAgICBpZiBub3QgdmFsdWU6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IocmVhc29uKVxuXG5cbmRlZiBzaGEocGF0aCk6XG4gICAgZGlnZXN0ID0gaGFzaGxpYi5zaGEyNTYoKVxuICAgIHdpdGggUGF0aChwYXRoKS5vcGVuKCdyYicpIGFzIHN0cmVhbTpcbiAgICAgICAgZm9yIGJsb2NrIGluIGl0ZXIobGFtYmRhOiBzdHJlYW0ucmVhZCgxMDI0KioyKSwgYicnKTpcbiAgICAgICAgICAgIGRpZ2VzdC51cGRhdGUoYmxvY2spXG4gICAgcmV0dXJuIGRpZ2VzdC5oZXhkaWdlc3QoKVxuXG5cbmRlZiBwcml2YXRlKHBhdGgsIGRpcmVjdG9yeT1GYWxzZSk6XG4gICAgaW5mbyA9IFBhdGgocGF0aCkubHN0YXQoKVxuICAgIHJlcXVpcmUoKHN0YXQuU19JU0RJUihpbmZvLnN0X21vZGUpIGlmIGRpcmVjdG9yeSBlbHNlIHN0YXQuU19JU1JFRyhpbmZvLnN0X21vZGUpKVxuICAgICAgICAgICAgYW5kIGluZm8uc3RfdWlkID09IG9zLmdldHVpZCgpIGFuZCBzdGF0LlNfSU1PREUoaW5mby5zdF9tb2RlKSA9PSAoMG83MDAgaWYgZGlyZWN0b3J5IGVsc2UgMG82MDApXG4gICAgICAgICAgICBhbmQgKGRpcmVjdG9yeSBvciBpbmZvLnN0X25saW5rID09IDEpLCAncHJpdmF0ZSBvd25lZCBjdXN0b2R5IHJlcXVpcmVkJylcblxuUk9PVCA9IFBhdGgoX19maWxlX18pLnJlc29sdmUoKS5wYXJlbnRcbkNBU0UgPSBST09ULnBhcmVudFxuT1dORVIgPSBQYXRoKCcvaG9tZS93b3JzY2gvaW5mb3JtZWQtZGVjaXNpb24nKVxuQ1VTVE9ESUFOID0gUGF0aCgnL2hvbWUvd29yc2NoL3RoZS1jdXN0b2RpYW4nKVxuQ1VTVE9EWSA9IENVU1RPRElBTiAvICcucHJpdmF0ZS1iYWNrdXBzLzIwMjYxMDExLWluZmQtemxpYi1yMSdcblNPQ0tFVCA9ICd1bml4Oi8vL3Zhci9ydW4vZG9ja2VyLnNvY2snXG5JTUFHRSA9ICdmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMnXG5WT0xVTUUgPSAnaW5mZC16bGliLXIxLXJlc3RvcmUtMjAyNjEwMTEnXG5NQVhfQllURVMgPSA1MTIgKiAxMDI0KioyXG5cblxuZGVmIHJ1bihhcmd2LCBib2R5PU5vbmUsIHRpbWVvdXQ9OTApOlxuICAgIHJldHVybiBzdWJwcm9jZXNzLnJ1bihhcmd2LCBpbnB1dD1ib2R5LCB0ZXh0PVRydWUsIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRpbWVvdXQ9dGltZW91dClcblxuXG5kZWYganNvbl9yZXN1bHQocmVzdWx0KTpcbiAgICB0cnk6XG4gICAgICAgIHZhbHVlID0ganNvbi5sb2FkcyhyZXN1bHQuc3Rkb3V0KVxuICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc2FmZSBwaGFzZSByZWNlaXB0IHVuYXZhaWxhYmxlOyBvdXRjb21lIHVuY2VydGFpbicpIGZyb20gTm9uZVxuICAgIHJlcXVpcmUocmVzdWx0LnJldHVybmNvZGUgPT0gMCBhbmQgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCkgYW5kIHZhbHVlLmdldCgnYWxsX2NoZWNrc19wYXNzJykgaXMgVHJ1ZSxcbiAgICAgICAgICAgICdwaGFzZSBkaWQgbm90IHZlcmlmeSBjb21wbGV0ZTsgcmF3IG91dHB1dCB3aXRoaGVsZDsgbm8gcmV0cnknKVxuICAgIHBlcm1pdHRlZCA9IHsncGhhc2UnLCAnYWxsX2NoZWNrc19wYXNzJywgJ3Jhd19vdXRwdXRfd2l0aGhlbGQnLCAnbmF0aXZlX2FwcHJvdmFsX3ZlcmlmaWVkX2J5X3Jvb3QnLFxuICAgICAgICAgICAgICAgICAnbmF0aXZlX2F1dGhlbnRpY2F0ZWRfZ3JhbnQnLCAnc291cmNlX3JlYWRvbmx5X2Jhc2VsaW5lJywgJ3NuYXBzaG90X3JlYWRvbmx5JyxcbiAgICAgICAgICAgICAgICAgJ3NuYXBzaG90X3NoYTI1NicsICdzbmFwc2hvdF9ieXRlcycsICdzbmFwc2hvdF9maWxlJywgJ25hdGl2ZV9wYXJlbnRfcHJpdmF0ZScsXG4gICAgICAgICAgICAgICAgICduYXRpdmVfdWlkJywgJ3BvZF9uYW1lJywgJ3BvZF91aWQnLCAnbGl2ZV9yZWFkb25seV9zY2hlbWFfaW50ZWdyaXR5X2NvdW50cycsXG4gICAgICAgICAgICAgICAgICdsaXZlX2NvdW50c19tYXlfaW5jbHVkZV9jb25jdXJyZW50X2NvbW1pdHMnLCAnb3BlcmF0aW9uX3JlcXVlc3RlZCcsICdzb3VyY2VfcmV2aXNpb24nLFxuICAgICAgICAgICAgICAgICAncmVzb3VyY2VzJywgJ3BydW5lJywgJ3JvbGxvdXRfdmVyaWZpZWQnLCAnbGF0ZXN0X2xpdmVfZGF0YWJhc2VfcmV0YWluZWQnLFxuICAgICAgICAgICAgICAgICAnY2xpZW50X2RpZmZfc2hhMjU2JywgJ25hdGl2ZV9yb2xsb3V0X3ZlcmlmaWVkJywgJ2N1cnJlbnRfc2NoZW1hNV9kYXRhYmFzZV9yZXRhaW5lZCcsXG4gICAgICAgICAgICAgICAgICdwcml2YXRlX2NvcHlfdmVyaWZpZWQnLCAnaW5zdGFsbGVkX3B1cnBvc2VfY2hlY2tzJywgJ3BvbGljeV9zaGEyNTYnLFxuICAgICAgICAgICAgICAgICAncG9saWN5X21vZGUnLCAncG9saWN5X3VpZCcsICdpbnN0YWxsZWRfemxpYl9maWxlcycsICd6bGliX3BhY2thZ2UnLCAnaGVhbHRoX3N0YXR1c2VzJywgJ25hdGl2ZV9wcm92aWRlcl9wcm9iZScsICdyZWNvdmVyeV92ZXJpZmljYXRpb24nfVxuICAgIHJlcXVpcmUoc2V0KHZhbHVlKSA8PSBwZXJtaXR0ZWQsICd1bmV4cGVjdGVkIG91dHB1dCBmaWVsZHMgd2l0aGhlbGQnKVxuICAgIGZyb20gcmVjZWlwdF9zYWZldHkgaW1wb3J0IGNvdW50c1xuICAgIGZvciBuYW1lIGluICgnc291cmNlX3JlYWRvbmx5X2Jhc2VsaW5lJywgJ3NuYXBzaG90X3JlYWRvbmx5JywgJ2xpdmVfcmVhZG9ubHlfc2NoZW1hX2ludGVncml0eV9jb3VudHMnKTpcbiAgICAgICAgaWYgbmFtZSBpbiB2YWx1ZTpcbiAgICAgICAgICAgIGNvdW50cyh2YWx1ZVtuYW1lXSlcbiAgICBmb3IgbmFtZSBpbiAoJ3NuYXBzaG90X3NoYTI1NicsICdjbGllbnRfZGlmZl9zaGEyNTYnKTpcbiAgICAgICAgaWYgbmFtZSBpbiB2YWx1ZTpcbiAgICAgICAgICAgIHJlcXVpcmUocmUuZnVsbG1hdGNoKHInW2EtZjAtOV17NjR9JywgdmFsdWVbbmFtZV0pIGlzIG5vdCBOb25lLCAnaW52YWxpZCBvdXRwdXQgZGlnZXN0IHdpdGhoZWxkJylcbiAgICBpZiAnc25hcHNob3RfYnl0ZXMnIGluIHZhbHVlOlxuICAgICAgICByZXF1aXJlKHR5cGUodmFsdWVbJ3NuYXBzaG90X2J5dGVzJ10pIGlzIGludCBhbmQgMCA8IHZhbHVlWydzbmFwc2hvdF9ieXRlcyddIDw9IE1BWF9CWVRFUyxcbiAgICAgICAgICAgICAgICAnaW52YWxpZCBvdXRwdXQgc2l6ZSB3aXRoaGVsZCcpXG4gICAgaWYgJ3NuYXBzaG90X2ZpbGUnIGluIHZhbHVlOlxuICAgICAgICByZXF1aXJlKHZhbHVlWydzbmFwc2hvdF9maWxlJ10gaW4gKCdkcmlsbC5zcWxpdGUnLCAnY3V0b3Zlci5zcWxpdGUnKSwgJ2ludmFsaWQgb3V0cHV0IGZpbGUgd2l0aGhlbGQnKVxuICAgIHJldHVybiB2YWx1ZVxuXG5cbmRlZiBkb2NrZXIoYXJndiwgYm9keT1Ob25lLCB0aW1lb3V0PTEyMCk6XG4gICAgcmV0dXJuIHJ1bihbJ2RvY2tlcicsICctLWNvbmZpZycsIHN0cihDVVNUT0RZIC8gJ2VtcHR5LWRvY2tlci1jb25maWcnKSwgJy0taG9zdCcsIFNPQ0tFVF0gKyBhcmd2LFxuICAgICAgICAgICAgICAgYm9keT1ib2R5LCB0aW1lb3V0PXRpbWVvdXQpXG5cblxuZGVmIHJlbW90ZShwaGFzZSwgcmV2aXNpb24sIGFwcHJvdmVkKTpcbiAgICAjIEZpeGVkIG1vZHVsZSBpbXBvcnRlZCBvbmx5IGFmdGVyIG1haW4gdmVyaWZpZXMgZXZlcnkgZXhlY3V0b3Igc291cmNlIGhhc2guXG4gICAgZnJvbSBuYXRpdmVfcHJvZ3JhbSBpbXBvcnQgUFJPR1JBTVxuICAgIHBheWxvYWQgPSB7J3BoYXNlJzogcGhhc2UsICdzb3VyY2VfcmV2aXNpb24nOiByZXZpc2lvbiwgJ2FwcHJvdmFsJzogYXBwcm92ZWQsXG4gICAgICAgICAgICAgICAnc2VhbGVkJzoganNvbi5sb2FkcygoQ0FTRSAvICdzZWFsZWQtbGl2ZS1kZXBsb3ltZW50Lmpzb24nKS5yZWFkX3RleHQoKSksXG4gICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoganNvbi5sb2FkcygoQ0FTRSAvICdzZWFsZWQtbmF0aXZlLWRlcGVuZGVuY2llcy5qc29uJykucmVhZF90ZXh0KCkpLFxuICAgICAgICAgICAgICAgJ2NhbmRpZGF0ZSc6IGpzb24ubG9hZHMoKENBU0UgLyAnY2FuZGlkYXRlLWRlcGxveW1lbnQuanNvbicpLnJlYWRfdGV4dCgpKSxcbiAgICAgICAgICAgICAgICdyb2xsYmFjayc6IGpzb24ubG9hZHMoKENBU0UgLyAncm9sbGJhY2stZGVwbG95bWVudC5qc29uJykucmVhZF90ZXh0KCkpLFxuICAgICAgICAgICAgICAgJ3JlY2VpcHRfc2FmZXR5JzogKFJPT1QgLyAncmVjZWlwdF9zYWZldHkucHknKS5yZWFkX3RleHQoKSxcbiAgICAgICAgICAgICAgICdwdXJwb3NlX2NoZWNrcyc6IChDQVNFIC8gJ2NoZWNrX2luc3RhbGxlZC5weScpLnJlYWRfdGV4dCgpLFxuICAgICAgICAgICAgICAgJ2luc3RhbGxlZF96bGliJzoganNvbi5sb2FkcygoQ0FTRSAvICdpbnN0YWxsZWQtemxpYi1wcm9vZi5qc29uJykucmVhZF90ZXh0KCkpLCAncmVhZG9ubHknOiAoQ0FTRSAvICdzcWxpdGVfcmVhZG9ubHkucHknKS5yZWFkX3RleHQoKX1cbiAgICBzY3JpcHQgPSBQUk9HUkFNLnJlcGxhY2UoJ19fUEFZTE9BRF9fJywgcmVwcihqc29uLmR1bXBzKHBheWxvYWQpKSkucmVwbGFjZShcbiAgICAgICAgJ19fR1VBUkRfXycsIHJlcHIoKENBU0UgLyAnY2hhbmdlX2d1YXJkLnB5JykucmVhZF90ZXh0KCkpKVxuICAgIHJldHVybiBqc29uX3Jlc3VsdChydW4oWydzc2gnLCAncmFpbGlhbmNlMDEnLCAncHl0aG9uMyAtJ10sIHNjcmlwdCwgdGltZW91dD0yMDApKVxuXG5cbmRlZiBjb3B5X3NuYXBzaG90KHBoYXNlLCByZXZpc2lvbiwgYXBwcm92ZWQsIGpvdXJuYWwpOlxuICAgIG1ldGFkYXRhID0gcmVtb3RlKHBoYXNlLCByZXZpc2lvbiwgYXBwcm92ZWQpXG4gICAgYmFja3VwX3BoYXNlID0gJ2RyaWxsLWJhY2t1cCcgaWYgcGhhc2UgPT0gJ2RyaWxsLWNvcHknIGVsc2UgJ2N1dG92ZXItYmFja3VwJ1xuICAgIHByaW9yID0gam91cm5hbC5kYXRhWydwaGFzZXMnXVtiYWNrdXBfcGhhc2VdWydyZXN1bHQnXVxuICAgIGZvciBrZXkgaW4gKCdzbmFwc2hvdF9zaGEyNTYnLCAnc25hcHNob3RfYnl0ZXMnLCAnc25hcHNob3RfZmlsZScsICdzbmFwc2hvdF9yZWFkb25seScpOlxuICAgICAgICByZXF1aXJlKG1ldGFkYXRhW2tleV0gPT0gcHJpb3Jba2V5XSwgJ2Nsb3NlZCBmcm96ZW4gc25hcHNob3QgY2hhbmdlZCcpXG4gICAgbmFtZSA9IG1ldGFkYXRhWydzbmFwc2hvdF9maWxlJ11cbiAgICByZXF1aXJlKG5hbWUgaW4gKCdkcmlsbC5zcWxpdGUnLCAnY3V0b3Zlci5zcWxpdGUnKSBhbmQgMCA8IG1ldGFkYXRhWydzbmFwc2hvdF9ieXRlcyddIDw9IE1BWF9CWVRFUyxcbiAgICAgICAgICAgICdmaXhlZCBib3VuZGVkIHNuYXBzaG90IHJlcXVpcmVkJylcbiAgICBwb2QgPSBtZXRhZGF0YVsncG9kX25hbWUnXVxuICAgIHJlcXVpcmUocmUuZnVsbG1hdGNoKHInW2EtejAtOV0oWy1hLXowLTldKlthLXowLTldKT8nLCBwb2QpIGlzIG5vdCBOb25lLCAnZml4ZWQgb3duZXIgcG9kIG5hbWUgcmVxdWlyZWQnKVxuICAgIGxvY2FsID0gQ1VTVE9EWSAvIG5hbWVcbiAgICBmZCA9IG9zLm9wZW4obG9jYWwsIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCB8IG9zLk9fRVhDTCB8IG9zLk9fTk9GT0xMT1csIDBvNjAwKVxuICAgICMgQmluYXJ5IHNuYXBzaG90IHN0ZG91dCBnb2VzIG9ubHkgdG8gYSBwcml2YXRlIGZpbGUsIG5ldmVyIHRvb2wvY2hhdC9sb2cgb3V0cHV0LlxuICAgICMgU25hcHNob3Qgc2NoZW1hL2NvdW50IG1ldGFkYXRhIHdhcyB2YWxpZGF0ZWQgYmVmb3JlIG9wZW5pbmcgdGhpcyBkZXN0aW5hdGlvbi5cbiAgICB3aXRoIG9zLmZkb3BlbihmZCwgJ3diJykgYXMgZGVzdGluYXRpb246XG4gICAgICAgIGNvbW1hbmQgPSAoJ2t1YmVjdGwgZXhlYyAtbiBpbmZvcm1lZC1kZWNpc2lvbiAnICsgcG9kICtcbiAgICAgICAgICAgICAgICAgICAnIC1jIGluZm9ybWVkLWRlY2lzaW9uIC0tIGNhdCAvZGF0YS9wcml2YXRlL3psaWI4NTA5MS1yMS8nICsgbmFtZSlcbiAgICAgICAgdHJhbnNmZXIgPSBzdWJwcm9jZXNzLlBvcGVuKFsnc3NoJywgJ3JhaWxpYW5jZTAxJywgY29tbWFuZF0sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKVxuICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycy5EZWZhdWx0U2VsZWN0b3IoKVxuICAgICAgICBzZWxlY3Rvci5yZWdpc3Rlcih0cmFuc2Zlci5zdGRvdXQsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKVxuICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxNTBcbiAgICAgICAgcmVjZWl2ZWQgPSAwXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHdoaWxlIFRydWU6XG4gICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZGVhZGxpbmUgLSB0aW1lLm1vbm90b25pYygpXG4gICAgICAgICAgICAgICAgcmVxdWlyZShyZW1haW5pbmcgPiAwIGFuZCBzZWxlY3Rvci5zZWxlY3QocmVtYWluaW5nKSwgJ3ByaXZhdGUgdHJhbnNmZXIgdGltZWQgb3V0JylcbiAgICAgICAgICAgICAgICBibG9jayA9IG9zLnJlYWQodHJhbnNmZXIuc3Rkb3V0LmZpbGVubygpLCAxMDI0KioyKVxuICAgICAgICAgICAgICAgIGlmIG5vdCBibG9jazpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICByZWNlaXZlZCArPSBsZW4oYmxvY2spXG4gICAgICAgICAgICAgICAgcmVxdWlyZShyZWNlaXZlZCA8PSBtZXRhZGF0YVsnc25hcHNob3RfYnl0ZXMnXSBhbmQgcmVjZWl2ZWQgPD0gTUFYX0JZVEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaXZhdGUgY29weSBleGNlZWRzIGZyb3plbiBzbmFwc2hvdCBzaXplJylcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi53cml0ZShibG9jaylcbiAgICAgICAgICAgIHRyYW5zZmVyLndhaXQodGltZW91dD1tYXgoMSwgZGVhZGxpbmUgLSB0aW1lLm1vbm90b25pYygpKSlcbiAgICAgICAgZmluYWxseTpcbiAgICAgICAgICAgIHNlbGVjdG9yLmNsb3NlKClcbiAgICAgICAgICAgIHRyYW5zZmVyLnN0ZG91dC5jbG9zZSgpXG4gICAgICAgICAgICBpZiB0cmFuc2Zlci5wb2xsKCkgaXMgTm9uZTpcbiAgICAgICAgICAgICAgICB0cmFuc2Zlci5raWxsKClcbiAgICAgICAgICAgICAgICB0cmFuc2Zlci53YWl0KClcbiAgICAgICAgZGVzdGluYXRpb24uZmx1c2goKVxuICAgICAgICBvcy5mc3luYyhkZXN0aW5hdGlvbi5maWxlbm8oKSlcbiAgICBwcml2YXRlKGxvY2FsKVxuICAgIHJlcXVpcmUodHJhbnNmZXIucmV0dXJuY29kZSA9PSAwIGFuZCBsb2NhbC5zdGF0KCkuc3Rfc2l6ZSA9PSBtZXRhZGF0YVsnc25hcHNob3RfYnl0ZXMnXVxuICAgICAgICAgICAgYW5kIHNoYShsb2NhbCkgPT0gbWV0YWRhdGFbJ3NuYXBzaG90X3NoYTI1NiddLCAncHJpdmF0ZSBjb3B5IGluY29tcGxldGUvdW5jZXJ0YWluOyByZXRhaW4sIG5vIHJldHJ5JylcbiAgICAjIFJlLXJlYWQgaWRlbnRpdHkvaGFzaCBhZnRlciB0cmFuc2Zlci4gVGhpcyBpcyB2ZXJpZmljYXRpb24sIG5vdCBhIHdyaXRlIHJldHJ5LlxuICAgIGFmdGVyID0gcmVtb3RlKHBoYXNlLCByZXZpc2lvbiwgYXBwcm92ZWQpXG4gICAgcmVxdWlyZShhZnRlclsncG9kX3VpZCddID09IG1ldGFkYXRhWydwb2RfdWlkJ10gYW5kIGFmdGVyWydzbmFwc2hvdF9zaGEyNTYnXSA9PSBtZXRhZGF0YVsnc25hcHNob3Rfc2hhMjU2J10sXG4gICAgICAgICAgICAnc291cmNlIGlkZW50aXR5L3NuYXBzaG90IGNoYW5nZWQgZHVyaW5nIHRyYW5zZmVyJylcbiAgICByZXR1cm4geyoqbWV0YWRhdGEsICdvZmZfY2x1c3Rlcl9wcml2YXRlX2NvcHlfdmVyaWZpZWQnOiBUcnVlLCAnc25hcHNob3RfY29udGVudHNfb3V0cHV0JzogRmFsc2V9XG5cblxuZGVmIG9mZmxpbmVfdmVyaWZ5KGpvdXJuYWwpOlxuICAgIGZyb20gcmVjZWlwdF9zYWZldHkgaW1wb3J0IGNvdW50c1xuICAgIHNuYXBzaG90ID0gQ1VTVE9EWSAvICdkcmlsbC5zcWxpdGUnXG4gICAgcHJpdmF0ZShzbmFwc2hvdClcbiAgICBwcmV2aW91cyA9IGpvdXJuYWwuZGF0YVsncGhhc2VzJ11bJ2RyaWxsLWNvcHknXVsncmVzdWx0J11cbiAgICByZXF1aXJlKHNoYShzbmFwc2hvdCkgPT0gcHJldmlvdXNbJ3NuYXBzaG90X3NoYTI1NiddLCAncHJvdGVjdGVkIHNuYXBzaG90IGJ5dGVzIGNoYW5nZWQnKVxuICAgIGlkZW50aXR5ID0gZG9ja2VyKFsnaW5mbycsICctLWZvcm1hdCcsICd7e2pzb24gLk5hbWV9fSddKVxuICAgIHJlcXVpcmUoaWRlbnRpdHkucmV0dXJuY29kZSA9PSAwIGFuZCBqc29uLmxvYWRzKGlkZW50aXR5LnN0ZG91dCkgPT0gJ2JudC1sYXAwMDEnLFxuICAgICAgICAgICAgJ2xvY2FsIG9mZmxpbmUgRG9ja2VyIGVuZ2luZSBpZGVudGl0eSBjaGFuZ2VkJylcbiAgICBsaXN0ZWQgPSBkb2NrZXIoWyd2b2x1bWUnLCAnbHMnLCAnLS1mb3JtYXQnLCAne3suTmFtZX19J10pXG4gICAgcmVxdWlyZShsaXN0ZWQucmV0dXJuY29kZSA9PSAwIGFuZCBWT0xVTUUgbm90IGluIGxpc3RlZC5zdGRvdXQuc3BsaXRsaW5lcygpLFxuICAgICAgICAgICAgJ2Rpc3Bvc2FibGUgdm9sdW1lIGFic2VuY2Ugbm90IHZlcmlmaWVkJylcbiAgICBub25jZSA9IGpvdXJuYWwuZGF0YVsncGhhc2VzJ11bJ29mZmxpbmUtdmVyaWZ5J11bJ2F0dGVtcHRfaWQnXVxuICAgIGxhYmVscyA9IHsnaW5mb3JtZWQtZGVjaXNpb24uY2FzZSc6ICdpbmZkLXpsaWItMjAyNjEwMTEtcjEnLFxuICAgICAgICAgICAgICAnaW5mb3JtZWQtZGVjaXNpb24udXNlJzogJ29mZmxpbmUtcmVzdG9yZS1vbmx5JywgJ2luZm9ybWVkLWRlY2lzaW9uLmF0dGVtcHQnOiBub25jZX1cbiAgICBjcmVhdGVkID0gZG9ja2VyKFsndm9sdW1lJywgJ2NyZWF0ZScsICctLWRyaXZlcicsICdsb2NhbCcsICctLWxhYmVsJywgJ2luZm9ybWVkLWRlY2lzaW9uLmNhc2U9aW5mZC16bGliLTIwMjYxMDExLXIxJyxcbiAgICAgICAgICAgICAgICAgICAgICAnLS1sYWJlbCcsICdpbmZvcm1lZC1kZWNpc2lvbi5hdHRlbXB0PScgKyBub25jZSxcbiAgICAgICAgICAgICAgICAgICAgICAnLS1sYWJlbCcsICdpbmZvcm1lZC1kZWNpc2lvbi51c2U9b2ZmbGluZS1yZXN0b3JlLW9ubHknLCBWT0xVTUVdKVxuICAgIHJlcXVpcmUoY3JlYXRlZC5yZXR1cm5jb2RlID09IDAgYW5kIGNyZWF0ZWQuc3Rkb3V0LnN0cmlwKCkgPT0gVk9MVU1FLCAndm9sdW1lIGNyZWF0aW9uIHVuY2VydGFpbjsgbm8gcmV0cnknKVxuICAgIGluc3BlY3RlZCA9IGRvY2tlcihbJ3ZvbHVtZScsICdpbnNwZWN0JywgVk9MVU1FXSlcbiAgICByZXF1aXJlKGluc3BlY3RlZC5yZXR1cm5jb2RlID09IDAsICduZXcgdm9sdW1lIGlkZW50aXR5IHVuYXZhaWxhYmxlJylcbiAgICB2b2x1bWUgPSBqc29uLmxvYWRzKGluc3BlY3RlZC5zdGRvdXQpXG4gICAgcmVxdWlyZShsZW4odm9sdW1lKSA9PSAxIGFuZCB2b2x1bWVbMF1bJ05hbWUnXSA9PSBWT0xVTUUgYW5kIHZvbHVtZVswXS5nZXQoJ0xhYmVscycpID09IGxhYmVsc1xuICAgICAgICAgICAgYW5kIHZvbHVtZVswXS5nZXQoJ0RyaXZlcicpID09ICdsb2NhbCcgYW5kIG5vdCB2b2x1bWVbMF0uZ2V0KCdPcHRpb25zJylcbiAgICAgICAgICAgIGFuZCB2b2x1bWVbMF0uZ2V0KCdTY29wZScpID09ICdsb2NhbCcsICduZXcgaXNvbGF0ZWQgdm9sdW1lIGlkZW50aXR5IGNoYW5nZWQnKVxuICAgIGlkZW50aXR5ID0ge2tleTogdm9sdW1lWzBdW2tleV0gZm9yIGtleSBpbiAoJ05hbWUnLCAnTGFiZWxzJywgJ0RyaXZlcicsICdTY29wZScsICdDcmVhdGVkQXQnKX1cbiAgICBqb3VybmFsLm5vdGUoJ29mZmxpbmUtdmVyaWZ5JywgJ2NyZWF0ZWRfdm9sdW1lX2lkZW50aXR5JywgaWRlbnRpdHkpXG4gICAgIyBPbmUtdGltZSBVSUQwL0NBUF9DSE9XTiBpbml0aWFsaXphdGlvbiBpcyBpc29sYXRlZCB0byB0aGUgTkVXIG5hbWVkIHZvbHVtZS5cbiAgICAjIE5vIGhvc3QvbGl2ZSBQVkMvY29uZmlnL3Rva2VuIG1vdW50IGV4aXN0czsgdGhpcyBkZXRhaWwgbmVlZHMgcGFja2V0IHJldmlldy5cbiAgICBpbml0aWFsaXplciA9IFwiXCJcImltcG9ydCBoYXNobGliLG9zLHN0YXQsc3lzXG5pZiBzeXMuZmxhZ3Mub3B0aW1pemU6cmFpc2UgUnVudGltZUVycm9yKCdvcHRpbWl6ZWQgaW50ZXJwcmV0ZXIgcmVmdXNlZCcpXG5mb2xkZXI9Jy9yZXN0b3JlJztleHBlY3RlZD1FWFBFQ1RFRFxuaWYgb3MubGlzdGRpcihmb2xkZXIpOnJhaXNlIFZhbHVlRXJyb3IoJ25ldyBlbXB0eSBwcml2YXRlIHZvbHVtZSByZXF1aXJlZCcpXG5vcy5jaG1vZChmb2xkZXIsMG83MDApXG5mZD1vcy5vcGVuKGZvbGRlcisnL3Jldmlldy5zcWxpdGUnLG9zLk9fQ1JFQVR8b3MuT19FWENMfG9zLk9fTk9GT0xMT1d8b3MuT19XUk9OTFksMG82MDApXG5kaWdlc3Q9aGFzaGxpYi5zaGEyNTYoKTtzaXplPTBcbndpdGggb3MuZmRvcGVuKGZkLCd3YicpIGFzIHRhcmdldDpcbiB3aGlsZSBUcnVlOlxuICBibG9jaz1zeXMuc3RkaW4uYnVmZmVyLnJlYWQoMTAyNCoqMilcbiAgaWYgbm90IGJsb2NrOmJyZWFrXG4gIHNpemUrPWxlbihibG9jaylcbiAgaWYgc2l6ZT41MTIqMTAyNCoqMjpyYWlzZSBWYWx1ZUVycm9yKCdwcml2YXRlIHJlc3RvcmUgc2l6ZSBleGNlZWRzIGJvdW5kJylcbiAgdGFyZ2V0LndyaXRlKGJsb2NrKTtkaWdlc3QudXBkYXRlKGJsb2NrKVxuIHRhcmdldC5mbHVzaCgpO29zLmZzeW5jKHRhcmdldC5maWxlbm8oKSlcbmlmIGRpZ2VzdC5oZXhkaWdlc3QoKSE9ZXhwZWN0ZWQ6cmFpc2UgVmFsdWVFcnJvcigncHJpdmF0ZSBjb3BpZWQgc25hcHNob3QgZGlmZmVycycpXG5vcy5jaG93bihmb2xkZXIrJy9yZXZpZXcuc3FsaXRlJywxMDAwMSwxMDAwMSk7b3MuY2hvd24oZm9sZGVyLDEwMDAxLDEwMDAxKVxucHJpbnQoJ3tcImFsbF9jaGVja3NfcGFzc1wiOnRydWUsXCJwcml2YXRlX2NvcHlfdmVyaWZpZWRcIjp0cnVlfScpXG5cIlwiXCIucmVwbGFjZSgnRVhQRUNURUQnLCByZXByKHByZXZpb3VzWydzbmFwc2hvdF9zaGEyNTYnXSkpXG4gICAgd2l0aCBzbmFwc2hvdC5vcGVuKCdyYicpIGFzIHNvdXJjZTpcbiAgICAgICAgYXJndiA9IFsnZG9ja2VyJywgJy0tY29uZmlnJywgc3RyKENVU1RPRFkgLyAnZW1wdHktZG9ja2VyLWNvbmZpZycpLCAnLS1ob3N0JywgU09DS0VULFxuICAgICAgICAgICAgICAgICdydW4nLCAnLS1ybScsICctaScsICctLW5ldHdvcmsnLCAnbm9uZScsICctLXJlYWQtb25seScsICctLWNwdXMnLCAnMScsICctLW1lbW9yeScsICcxMjhtJyxcbiAgICAgICAgICAgICAgICAnLS11c2VyJywgJzA6MCcsICctLWNhcC1kcm9wJywgJ0FMTCcsICctLWNhcC1hZGQnLCAnQ0hPV04nLFxuICAgICAgICAgICAgICAgICctLXNlY3VyaXR5LW9wdCcsICduby1uZXctcHJpdmlsZWdlcycsICctLW1vdW50JywgJ3R5cGU9dm9sdW1lLHNyYz0nICsgVk9MVU1FICsgJyxkc3Q9L3Jlc3RvcmUnLFxuICAgICAgICAgICAgICAgICctLWVudHJ5cG9pbnQnLCAncHl0aG9uJywgSU1BR0UsICctYycsIGluaXRpYWxpemVyXVxuICAgICAgICBjb3BpZWQgPSBzdWJwcm9jZXNzLnJ1bihhcmd2LCBzdGRpbj1zb3VyY2UsIHRleHQ9VHJ1ZSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgdGltZW91dD0xNTApXG4gICAganNvbl9yZXN1bHQoY29waWVkKVxuICAgIG9wdGlvbnMgPSBbJ3J1bicsICctLXJtJywgJy1pJywgJy0tbmV0d29yaycsICdub25lJywgJy0tcmVhZC1vbmx5JywgJy0tY3B1cycsICcxJywgJy0tbWVtb3J5JywgJzEyOG0nLFxuICAgICAgICAgICAgICAgJy0tdXNlcicsICcxMDAwMToxMDAwMScsICctLWNhcC1kcm9wJywgJ0FMTCcsICctLXNlY3VyaXR5LW9wdCcsICduby1uZXctcHJpdmlsZWdlcycsXG4gICAgICAgICAgICAgICAnLS1tb3VudCcsICd0eXBlPXZvbHVtZSxzcmM9JyArIFZPTFVNRSArICcsZHN0PS9yZXN0b3JlJ11cbiAgICByZWFkb25seSA9IGRvY2tlcihvcHRpb25zICsgWyctLWVudHJ5cG9pbnQnLCAncHl0aG9uJywgSU1BR0UsICctJywgJy0tZGInLCAnL3Jlc3RvcmUvcmV2aWV3LnNxbGl0ZSddLFxuICAgICAgICAgICAgICAgICAgICAgIChDQVNFIC8gJ3NxbGl0ZV9yZWFkb25seS5weScpLnJlYWRfdGV4dCgpKVxuICAgIHJlcXVpcmUocmVhZG9ubHkucmV0dXJuY29kZSA9PSAwLCAnb2ZmbGluZSBwcmUtb3BlbiBzY2hlbWEvaW50ZWdyaXR5IGdhdGUgcmVmdXNlZDsgbmV2ZXIgb3BlbiBTdG9yZScpXG4gICAgY2hlY2tlZCA9IGNvdW50cyhqc29uLmxvYWRzKHJlYWRvbmx5LnN0ZG91dCkpXG4gICAgcmVxdWlyZShjaGVja2VkID09IHByZXZpb3VzWydzbmFwc2hvdF9yZWFkb25seSddLCAnZnJvemVuIHNuYXBzaG90L2Nsb25lIHJlYWRvbmx5IGNvdW50cyBkaWZmZXInKVxuICAgIGFkbWluID0gZG9ja2VyKG9wdGlvbnMgKyBbJy0tZW50cnlwb2ludCcsICdpbmZvcm1lZC1kZWNpc2lvbi1hZG1pbicsIElNQUdFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3BlY3QnLCAnLS1kYicsICcvcmVzdG9yZS9yZXZpZXcuc3FsaXRlJ10pXG4gICAgcmVxdWlyZShhZG1pbi5yZXR1cm5jb2RlID09IDAsICdvZmZsaW5lIGFkbWluIHJlc3VsdCB1bmNlcnRhaW4nKVxuICAgIGFkbWluX2NvdW50cyA9IGpzb24ubG9hZHMoYWRtaW4uc3Rkb3V0KVxuICAgIHJlcXVpcmUoYWRtaW5fY291bnRzID09IHtrZXk6IGNoZWNrZWRba2V5XSBmb3Iga2V5IGluICgnc2NoZW1hX3ZlcnNpb24nLCAnbGlmZWN5Y2xlJywgJ291dGJveCcsICdzdWJtaXNzaW9ucycpfSxcbiAgICAgICAgICAgICdvZmZsaW5lIGFkbWluIGNoYW5nZWQgZnJvemVuIHNuYXBzaG90IGNvdW50ZXJzJylcbiAgICAjIEFkbWluIFN0b3JlIGNvbnN0cnVjdGlvbiBtdXN0IG5vdCBzaWxlbnRseSBhbHRlciBzY2hlbWEvaW50ZWdyaXR5L2NvdW50ZXJzLlxuICAgIHBvc3QgPSBkb2NrZXIob3B0aW9ucyArIFsnLS1lbnRyeXBvaW50JywgJ3B5dGhvbicsIElNQUdFLCAnLScsICctLWRiJywgJy9yZXN0b3JlL3Jldmlldy5zcWxpdGUnXSxcbiAgICAgICAgICAgICAgICAgIChDQVNFIC8gJ3NxbGl0ZV9yZWFkb25seS5weScpLnJlYWRfdGV4dCgpKVxuICAgIHJlcXVpcmUocG9zdC5yZXR1cm5jb2RlID09IDAsICdvZmZsaW5lIHBvc3QtYWRtaW4gcmVhZG9ubHkgaW50ZWdyaXR5IGdhdGUgcmVmdXNlZCcpXG4gICAgcG9zdF9jaGVja2VkID0gY291bnRzKGpzb24ubG9hZHMocG9zdC5zdGRvdXQpKVxuICAgIHJlcXVpcmUocG9zdF9jaGVja2VkID09IGNoZWNrZWQgPT0gcHJldmlvdXNbJ3NuYXBzaG90X3JlYWRvbmx5J10sXG4gICAgICAgICAgICAnb2ZmbGluZSBhZG1pbiBhbHRlcmVkIGZyb3plbiBzbmFwc2hvdCBwcm9vZicpXG4gICAgcHJpdmF0ZShzbmFwc2hvdClcbiAgICByZXF1aXJlKHNoYShzbmFwc2hvdCkgPT0gcHJldmlvdXNbJ3NuYXBzaG90X3NoYTI1NiddLCAnb3JpZ2luYWwgcHJvdGVjdGVkIHNuYXBzaG90IGNoYW5nZWQgZHVyaW5nIGRyaWxsJylcbiAgICByZXR1cm4geydhbGxfY2hlY2tzX3Bhc3MnOiBUcnVlLCAnb2ZmbGluZV92b2x1bWUnOiBWT0xVTUUsICdvZmZsaW5lX3JlYWRvbmx5JzogY2hlY2tlZCxcbiAgICAgICAgICAgICdvZmZsaW5lX3Bvc3RfYWRtaW5fcmVhZG9ubHknOiBwb3N0X2NoZWNrZWQsICdvcmlnaW5hbF9zbmFwc2hvdF9oYXNoX3VuY2hhbmdlZCc6IFRydWUsXG4gICAgICAgICAgICAnY3JlYXRlZF92b2x1bWVfaWRlbnRpdHknOiBpZGVudGl0eSxcbiAgICAgICAgICAgICdhZG1pbl9jb3VudHMnOiBhZG1pbl9jb3VudHMsICduZXR3b3JrJzogJ25vbmUnLCAncnVudGltZV90b2tlbnNfb3JfY29uZmlnX21vdW50ZWQnOiBGYWxzZSxcbiAgICAgICAgICAgICdzZXJ2aWNlX2VudHJ5cG9pbnRfc3RhcnRlZCc6IEZhbHNlLCAnb3JpZ2luYWxfc25hcHNob3RfcmV0YWluZWQnOiBUcnVlfVxuXG5cbmRlZiBjbGVhbnVwX29mZmxpbmUoam91cm5hbCk6XG4gICAgaW5zcGVjdGVkID0gZG9ja2VyKFsndm9sdW1lJywgJ2luc3BlY3QnLCBWT0xVTUVdKVxuICAgIHJlcXVpcmUoaW5zcGVjdGVkLnJldHVybmNvZGUgPT0gMCwgJ293bmVkIGRpc3Bvc2FibGUgdm9sdW1lIGlkZW50aXR5IHVudmVyaWZpZWQnKVxuICAgIHZhbHVlID0ganNvbi5sb2FkcyhpbnNwZWN0ZWQuc3Rkb3V0KVxuICAgIGV4cGVjdGVkID0gam91cm5hbC5kYXRhWydwaGFzZXMnXVsnb2ZmbGluZS12ZXJpZnknXVsncmVzdWx0J11bJ2NyZWF0ZWRfdm9sdW1lX2lkZW50aXR5J11cbiAgICByZXF1aXJlKGxlbih2YWx1ZSkgPT0gMSBhbmQge2tleTogdmFsdWVbMF0uZ2V0KGtleSkgZm9yIGtleSBpbiBleHBlY3RlZH0gPT0gZXhwZWN0ZWRcbiAgICAgICAgICAgIGFuZCBub3QgdmFsdWVbMF0uZ2V0KCdPcHRpb25zJyksICd2b2x1bWUgb3duZXJzaGlwL3JlY3JlYXRpb24gY2hhbmdlZCcpXG4gICAgcmVtb3ZlZCA9IGRvY2tlcihbJ3ZvbHVtZScsICdybScsIFZPTFVNRV0pXG4gICAgcmVxdWlyZShyZW1vdmVkLnJldHVybmNvZGUgPT0gMCBhbmQgcmVtb3ZlZC5zdGRvdXQuc3RyaXAoKSA9PSBWT0xVTUVcbiAgICAgICAgICAgIGFuZCBkb2NrZXIoWyd2b2x1bWUnLCAnaW5zcGVjdCcsIFZPTFVNRV0pLnJldHVybmNvZGUgIT0gMCxcbiAgICAgICAgICAgICdjbGVhbnVwIG91dGNvbWUgYW1iaWd1b3VzOyBkbyBub3QgcmV0cnknKVxuICAgIHJldHVybiB7J2FsbF9jaGVja3NfcGFzcyc6IFRydWUsICdvbmx5X2Rpc3Bvc2FibGVfb2ZmbGluZV92b2x1bWVfcmVtb3ZlZCc6IFZPTFVNRSxcbiAgICAgICAgICAgICduYXRpdmVfYW5kX29mZmNsdXN0ZXJfb3JpZ2luYWxfc25hcHNob3RzX3JldGFpbmVkJzogVHJ1ZX1cblxuXG5kZWYgbWFpbigpOlxuICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPV9fZG9jX18pXG4gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1waGFzZScsIGNob2ljZXM9UEhBU0VTLCByZXF1aXJlZD1UcnVlKVxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcm9vdC1hdXRob3JpdHktcmVjZWlwdCcsIHR5cGU9UGF0aCwgcmVxdWlyZWQ9VHJ1ZSlcbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJvb3QtbmF0aXZlLW91dGNvbWUnLCB0eXBlPVBhdGgsIHJlcXVpcmVkPVRydWUpXG4gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zb3VyY2UtcmV2aXNpb24nLCByZXF1aXJlZD1UcnVlKVxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcm9vdC1mcmVzaC1zY2FuLXJlY2VpcHQnLCB0eXBlPVBhdGgsIHJlcXVpcmVkPVRydWUpXG4gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcbiAgICByZXF1aXJlKGFyZ3Mucm9vdF9hdXRob3JpdHlfcmVjZWlwdCA9PSBQYXRoKCcvdG1wL3NlY3VyaXR5LWluZmQtemxpYi1yb290LWF1dGhvcml0eS5qc29uJylcbiAgICAgICAgICAgIGFuZCBhcmdzLnJvb3RfbmF0aXZlX291dGNvbWUgPT0gUGF0aCgnL3RtcC9zZWN1cml0eS1pbmZkLXpsaWItbmF0aXZlLW91dGNvbWUtbGF0ZXN0Lmpzb24nKSxcbiAgICAgICAgICAgICdmaXhlZCBzdXBlcnZpc2VkIHJlY2VpcHQgcGF0aHMgcmVxdWlyZWQnKVxuICAgIHJlcXVpcmUocmUuZnVsbG1hdGNoKHInWzAtOWEtZl17NDB9JywgYXJncy5zb3VyY2VfcmV2aXNpb24pIGlzIG5vdCBOb25lLCAnZXhhY3Qgc291cmNlIGNvbW1pdCByZXF1aXJlZCcpXG4gICAgIyBWZXJpZnkgYWxsIHByZXBhcmVkIGV4ZWN1dG9yL2lucHV0IGJ5dGVzIGJlZm9yZSByZWFkaW5nIGF1dGhvcml0eSBvciBkaXNwYXRjaGluZy5cbiAgICBwbGFuID0ganNvbi5sb2FkcygoUk9PVCAvICdleGVjdXRpb24tcGxhbi5qc29uJykucmVhZF90ZXh0KCkpXG4gICAgcmVxdWlyZShwbGFuLmdldCgnc3RhdGUnKSA9PSAncHJlcGFyZWQtdW5hcHByb3ZlZCcgYW5kIHBsYW4uZ2V0KCdwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQnKSBpcyBUcnVlLCAndW5mcm96ZW4gcHJvcG9zYWwgY2Fubm90IGV4ZWN1dGUnKVxuICAgIHJlcXVpcmUoc2V0KHBsYW5bJ2V4ZWN1dG9yX2ZpbGVzJ10pID09IHsnYWN0dWF0b3IucHknLCAnYXV0aG9yaXR5X2pvdXJuYWwucHknLCAnbmF0aXZlX3Byb2dyYW0ucHknLCAncmVjZWlwdF9zYWZldHkucHknfSxcbiAgICAgICAgICAgICdmaXhlZCBleGVjdXRvciBzb3VyY2VzIHJlcXVpcmVkJylcbiAgICByZXF1aXJlKHNldChwbGFuWydvd25lcl9zb3VyY2VfZmlsZXMnXSkgPT0geydkZXBsb3kvbGlmZWN5Y2xlL2FkbWlzc2lvbi5jYW5kaWRhdGUuanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcGxveS9saWZlY3ljbGUvc2VydmljZS5jYW5kaWRhdGUuanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcGxveS9saWZlY3ljbGUva3VzdG9taXphdGlvbi55YW1sJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwbG95L2xpZmVjeWNsZS9yZWdpc3RyaWVzLmNhbmRpZGF0ZS5qc29uJ30sXG4gICAgICAgICAgICAnZml4ZWQgb3duZXIgaW1hZ2Ugc291cmNlcyByZXF1aXJlZCcpXG4gICAgZm9yIHJlbGF0aXZlLCBkaWdlc3QgaW4gcGxhblsnZXhlY3V0b3JfZmlsZXMnXS5pdGVtcygpOlxuICAgICAgICB0YXJnZXQgPSBST09UIC8gcmVsYXRpdmVcbiAgICAgICAgcmVxdWlyZShub3QgdGFyZ2V0LmlzX3N5bWxpbmsoKSBhbmQgc2hhKHRhcmdldCkgPT0gZGlnZXN0LCAnZXhlY3V0b3Igc291cmNlIGJ5dGVzIGNoYW5nZWQnKVxuICAgIGZvciByZWxhdGl2ZSwgZGlnZXN0IGluIHBsYW5bJ2Nhc2VfZmlsZXMnXS5pdGVtcygpOlxuICAgICAgICByZXF1aXJlKG5vdCBQYXRoKHJlbGF0aXZlKS5pc19hYnNvbHV0ZSgpIGFuZCAnLi4nIG5vdCBpbiBQYXRoKHJlbGF0aXZlKS5wYXJ0cyxcbiAgICAgICAgICAgICAgICAnY2FzZSBzb3VyY2UgcGF0aCBlc2NhcGVkJylcbiAgICAgICAgdGFyZ2V0ID0gQ0FTRSAvIHJlbGF0aXZlXG4gICAgICAgIHJlcXVpcmUobm90IHRhcmdldC5pc19zeW1saW5rKCkgYW5kIHNoYSh0YXJnZXQpID09IGRpZ2VzdCwgJ2Nhc2Ugc291cmNlIGJ5dGVzIGNoYW5nZWQnKVxuICAgIGZvciByZWxhdGl2ZSwgZGlnZXN0IGluIHBsYW5bJ293bmVyX3NvdXJjZV9maWxlcyddLml0ZW1zKCk6XG4gICAgICAgIHRhcmdldCA9IE9XTkVSIC8gcmVsYXRpdmVcbiAgICAgICAgcmVxdWlyZShub3QgdGFyZ2V0LmlzX3N5bWxpbmsoKSBhbmQgc2hhKHRhcmdldCkgPT0gZGlnZXN0LCAnb3duZXIgaW1hZ2Utb25seSBzb3VyY2UgY2hhbmdlZCcpXG4gICAgICAgIGNvbW1pdHRlZCA9IHN1YnByb2Nlc3MucnVuKFsnZ2l0JywgJy1DJywgc3RyKE9XTkVSKSwgJ3Nob3cnLCBhcmdzLnNvdXJjZV9yZXZpc2lvbiArICc6JyArIHJlbGF0aXZlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSlcbiAgICAgICAgcmVxdWlyZShjb21taXR0ZWQucmV0dXJuY29kZSA9PSAwIGFuZCBoYXNobGliLnNoYTI1Nihjb21taXR0ZWQuc3Rkb3V0KS5oZXhkaWdlc3QoKSA9PSBkaWdlc3QsXG4gICAgICAgICAgICAgICAgJ2NvbW1pdHRlZCBvd25lciByZW5kZXIgc291cmNlIGRpZmZlcnMgZnJvbSBhcHByb3ZlZCBpbnB1dHMnKVxuICAgIGhlYWQgPSBydW4oWydnaXQnLCAnLUMnLCBzdHIoT1dORVIpLCAncmV2LXBhcnNlJywgJ0hFQUQnXSlcbiAgICByZXF1aXJlKGhlYWQucmV0dXJuY29kZSA9PSAwIGFuZCBoZWFkLnN0ZG91dC5zdHJpcCgpID09IGFyZ3Muc291cmNlX3JldmlzaW9uLCAnb3duZXIgc291cmNlIEhFQUQgZGlmZmVycycpXG4gICAgZnJvbSBhdXRob3JpdHlfam91cm5hbCBpbXBvcnQgSm91cm5hbCwgYXV0aG9yaXR5LCBmcmVzaF9zY2FuXG4gICAgcHJpdmF0ZShhcmdzLnJvb3RfYXV0aG9yaXR5X3JlY2VpcHQpXG4gICAgcHJpdmF0ZShhcmdzLnJvb3RfbmF0aXZlX291dGNvbWUpXG4gICAgcmVjZWlwdCA9IGpzb24ubG9hZHMoYXJncy5yb290X2F1dGhvcml0eV9yZWNlaXB0LnJlYWRfdGV4dCgpKVxuICAgIHJlcXVpcmUocmVjZWlwdC5nZXQoJ25hdGl2ZV9vdXRjb21lX3NoYTI1NicpID09IHNoYShhcmdzLnJvb3RfbmF0aXZlX291dGNvbWUpLCAnbmF0aXZlIG91dGNvbWUgYnl0ZXMgY2hhbmdlZCcpXG4gICAgcmVxdWlyZShyZWNlaXB0LmdldCgnZXhlY3V0b3JfcGxhbl9zaGEyNTYnKSA9PSBzaGEoUk9PVCAvICdleGVjdXRpb24tcGxhbi5qc29uJyksXG4gICAgICAgICAgICAncm9vdCB2ZXJpZmllZCBleGVjdXRvciBwbGFuIGRpZmZlcnMnKVxuICAgIGFwcHJvdmVkID0gYXV0aG9yaXR5KHJlY2VpcHQsIGpzb24ubG9hZHMoYXJncy5yb290X25hdGl2ZV9vdXRjb21lLnJlYWRfdGV4dCgpKSwgc2hhKENBU0UgLyAnbWVtby5qc29uJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5zb3VyY2VfcmV2aXNpb24sIGFyZ3MucGhhc2UpXG4gICAgaWYgYXJncy5waGFzZSBpbiAoJ3JlbGVhc2UnLCAndmVyaWZ5Jyk6XG4gICAgICAgIHJlcXVpcmUoYXJncy5yb290X2ZyZXNoX3NjYW5fcmVjZWlwdCA9PSBQYXRoKCcvdG1wL3NlY3VyaXR5LWluZmQtemxpYi1mcmVzaC1zY2FuLXJlY2VpcHQuanNvbicpLCAnZml4ZWQgZnJlc2ggc2NhbiByZWNlaXB0IHBhdGggcmVxdWlyZWQnKVxuICAgICAgICBwcml2YXRlKGFyZ3Mucm9vdF9mcmVzaF9zY2FuX3JlY2VpcHQpXG4gICAgICAgIHNjYW5fcmVjZWlwdD1qc29uLmxvYWRzKGFyZ3Mucm9vdF9mcmVzaF9zY2FuX3JlY2VpcHQucmVhZF90ZXh0KCkpXG4gICAgICAgIHJlcG9ydF9wYXRoPVBhdGgoJy90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4tZnVsbC5qc29uJyk7cHJpdmF0ZShyZXBvcnRfcGF0aClcbiAgICAgICAgcmVxdWlyZShzaGEocmVwb3J0X3BhdGgpPT1zY2FuX3JlY2VpcHQuZ2V0KCdmdWxsX3JlcG9ydF9zaGEyNTYnKSwgJ2ZyZXNoIHNjYW4gcmVwb3J0IGJ5dGVzIGNoYW5nZWQnKVxuICAgICAgICBmcmVzaF9zY2FuKHNjYW5fcmVjZWlwdCxqc29uLmxvYWRzKHJlcG9ydF9wYXRoLnJlYWRfdGV4dCgpKSlcbiAgICBwYXJlbnQgPSBDVVNUT0RZLnBhcmVudFxuICAgIHByaXZhdGUocGFyZW50LCBkaXJlY3Rvcnk9VHJ1ZSlcbiAgICBpZ25vcmVkID0gcnVuKFsnZ2l0JywgJy1DJywgc3RyKENVU1RPRElBTiksICdjaGVjay1pZ25vcmUnLCAnLS1uby1pbmRleCcsIHN0cihDVVNUT0RZIC8gJ2RyaWxsLnNxbGl0ZScpXSlcbiAgICByZXF1aXJlKGlnbm9yZWQucmV0dXJuY29kZSA9PSAwLCAnb2ZmY2x1c3RlciBjdXN0b2R5IGlzIG5vdCBpZ25vcmVkJylcbiAgICBpZiBub3QgQ1VTVE9EWS5leGlzdHMoKTpcbiAgICAgICAgcmVxdWlyZShhcmdzLnBoYXNlID09ICdkcmlsbC1iYWNrdXAnLCAnZmlyc3QgYXBwcm92ZWQgcGhhc2UgbXVzdCBjcmVhdGUgdW5pcXVlIHByaXZhdGUgY3VzdG9keScpXG4gICAgICAgIG9zLm1rZGlyKENVU1RPRFksIDBvNzAwKVxuICAgIHByaXZhdGUoQ1VTVE9EWSwgZGlyZWN0b3J5PVRydWUpXG4gICAgY2FwYWNpdHkgPSBvcy5zdGF0dmZzKENVU1RPRFkpXG4gICAgcmVxdWlyZShjYXBhY2l0eS5mX2JhdmFpbCAqIGNhcGFjaXR5LmZfZnJzaXplID49IDIgKiBNQVhfQllURVMgKyAxNiAqIDEwMjQqKjIsXG4gICAgICAgICAgICAnaW5kZXBlbmRlbnQgcHJvdGVjdGVkIGN1c3RvZHkgaGVhZHJvb20gaW5zdWZmaWNpZW50JylcbiAgICBvcy5tYWtlZGlycyhDVVNUT0RZIC8gJ2VtcHR5LWRvY2tlci1jb25maWcnLCBtb2RlPTBvNzAwLCBleGlzdF9vaz1UcnVlKVxuICAgIHByaXZhdGUoQ1VTVE9EWSAvICdlbXB0eS1kb2NrZXItY29uZmlnJywgZGlyZWN0b3J5PVRydWUpXG4gICAgcmVxdWlyZShub3QgbGlzdCgoQ1VTVE9EWSAvICdlbXB0eS1kb2NrZXItY29uZmlnJykuaXRlcmRpcigpKSwgJ3B1YmxpYyBEb2NrZXIgcmVhZCBjb25maWcgbXVzdCBzdGF5IGVtcHR5JylcbiAgICBqb3VybmFsID0gSm91cm5hbChDVVNUT0RZLCB7J3Byb3Bvc2FsJzogcGxhblsncHJvcG9zYWxfaWQnXSwgJ3NvdXJjZV9yZXZpc2lvbic6IGFyZ3Muc291cmNlX3JldmlzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZW1vX3NoYTI1Nic6IHNoYShDQVNFIC8gJ21lbW8uanNvbicpLCAncGxhbl9zaGEyNTYnOiBzaGEoUk9PVCAvICdleGVjdXRpb24tcGxhbi5qc29uJyl9KVxuICAgIHRyeTpcbiAgICAgICAgam91cm5hbC5zdGFydChhcmdzLnBoYXNlLCBhcHByb3ZlZCkgIyBmc3luY2VkIFJVTk5JTkcgYmVmb3JlIGFueSBwaGFzZSBlZmZlY3QuXG4gICAgICAgIGlmIGFyZ3MucGhhc2UgaW4gKCdkcmlsbC1jb3B5JywgJ2N1dG92ZXItY29weScpOlxuICAgICAgICAgICAgcmVzdWx0ID0gY29weV9zbmFwc2hvdChhcmdzLnBoYXNlLCBhcmdzLnNvdXJjZV9yZXZpc2lvbiwgYXBwcm92ZWQsIGpvdXJuYWwpXG4gICAgICAgIGVsaWYgYXJncy5waGFzZSA9PSAnb2ZmbGluZS12ZXJpZnknOlxuICAgICAgICAgICAgcmVzdWx0ID0gb2ZmbGluZV92ZXJpZnkoam91cm5hbClcbiAgICAgICAgZWxpZiBhcmdzLnBoYXNlID09ICdjbGVhbnVwLW9mZmxpbmUnOlxuICAgICAgICAgICAgcmVzdWx0ID0gY2xlYW51cF9vZmZsaW5lKGpvdXJuYWwpXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICByZXN1bHQgPSByZW1vdGUoYXJncy5waGFzZSwgYXJncy5zb3VyY2VfcmV2aXNpb24sIGFwcHJvdmVkLCBvcGVyYXRpb25faW50ZW50PWpvdXJuYWwuZGF0YVsncGhhc2VzJ10uZ2V0KCdyb2xsYmFjaycgaWYgYXJncy5waGFzZSA9PSAncm9sbGJhY2stdmVyaWZ5JyBlbHNlICdyZWxlYXNlJykgaWYgYXJncy5waGFzZSBpbiAoJ3ZlcmlmeScsICdyb2xsYmFjay12ZXJpZnknKSBlbHNlIE5vbmUpXG4gICAgICAgIGpvdXJuYWwuZmluaXNoKGFyZ3MucGhhc2UsIHJlc3VsdClcbiAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhyZXN1bHQpKSAjIE9ubHkgY291bnQvaGFzaC9pZGVudGl0eSByZWNlaXB0cywgbmV2ZXIgc25hcHNob3QgYnl0ZXMuXG4gICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXJyb3I6XG4gICAgICAgIHNhZmUgPSB7J2FsbF9jaGVja3NfcGFzcyc6IEZhbHNlLCAncGhhc2UnOiBhcmdzLnBoYXNlLCAnZmFpbHVyZV9jbGFzcyc6IHR5cGUoZXJyb3IpLl9fbmFtZV9fLFxuICAgICAgICAgICAgICAgICdmYWlsdXJlJzogJ2ZpeGVkIHBoYXNlIG91dGNvbWUgdW5jZXJ0YWluOyBvcmlnaW5hbCBldmlkZW5jZSByZXRhaW5lZDsgbm8gcmV0cnknLFxuICAgICAgICAgICAgICAgICdyYXdfb3V0cHV0X3dpdGhoZWxkJzogVHJ1ZX1cbiAgICAgICAgaWYgam91cm5hbC5kYXRhWydwaGFzZXMnXS5nZXQoYXJncy5waGFzZSwge30pLmdldCgnc3RhdGUnKSA9PSAnUlVOTklORyc6XG4gICAgICAgICAgICBqb3VybmFsLmZpbmlzaChhcmdzLnBoYXNlLCBzYWZlKVxuICAgICAgICBwcmludChqc29uLmR1bXBzKHNhZmUpKVxuICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KDEpIGZyb20gTm9uZVxuICAgIGZpbmFsbHk6XG4gICAgICAgIGpvdXJuYWwuY2xvc2UoKVxuXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgdHJ5OlxuICAgICAgICBtYWluKClcbiAgICBleGNlcHQgRXhjZXB0aW9uOlxuICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCdzdXBlcnZpc2VkIGV4ZWN1dGlvbiByZWZ1c2VkIGJlZm9yZSBwaGFzZTsgcmF3IG91dHB1dCB3aXRoaGVsZCcpIGZyb20gTm9uZVxuIgogICAgfSwKICAgICJleGVjdXRpb24vYXV0aG9yaXR5X2pvdXJuYWwucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiMmFhOWJhZTQwNzUyOTIyMjY0ZTUzMzgyZDg5OGUzMDgzYjhkMjI5YjE4NTMyOTI2Njk0MmJkZDM5NzAxMzEwOCIsCiAgICAgICJjb250ZW50IjogIlwiXCJcIlN1cGVydmlzZWQgcmVjZWlwdCBib29ra2VlcGluZywgbm90IGFuIGF1dGhlbnRpY2F0ZWQgYXBwcm92YWwgcHJvdmlkZXIuXCJcIlwiXG5pbXBvcnQgZGF0ZXRpbWVcbmltcG9ydCBmY250bFxuaW1wb3J0IGhhc2hsaWJcbmltcG9ydCBqc29uXG5pbXBvcnQgb3NcbmltcG9ydCByZVxuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5pbXBvcnQgc3RhdFxuaW1wb3J0IHV1aWRcblxuRk9VTkRFUiA9IHsna2luZCc6ICdwZXJzb24nLCAnc3ViJzogJ3VpZD1wbGF0Zm9ybS1yb290LG91PXBlb3BsZSxkYz1uZXRraW5nZG9tLGRjPWxvY2FsJ31cbk1FTU9fSUQgPSAnaW5mZC0yMDI2MTAxMS16bGliLXJlbWVkaWF0aW9uLXIxJ1xuUFJPUE9TQUwgPSAnSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEnXG5QSEFTRVMgPSAoJ2RyaWxsLWJhY2t1cCcsICdkcmlsbC1jb3B5JywgJ29mZmxpbmUtdmVyaWZ5JywgJ2NsZWFudXAtb2ZmbGluZScsXG4gICAgICAgICAgJ2N1dG92ZXItYmFja3VwJywgJ2N1dG92ZXItY29weScsICdyZWxlYXNlJywgJ3ZlcmlmeScsICdyb2xsYmFjaycsICdyb2xsYmFjay12ZXJpZnknKVxuXG5cbmRlZiByZXF1aXJlKHZhbHVlLCByZWFzb24pOlxuICAgIGlmIG5vdCB2YWx1ZTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihyZWFzb24pXG5cblxuZGVmIHNoYShwYXRoKTpcbiAgICBkaWdlc3QgPSBoYXNobGliLnNoYTI1NigpXG4gICAgd2l0aCBQYXRoKHBhdGgpLm9wZW4oJ3JiJykgYXMgc3RyZWFtOlxuICAgICAgICBmb3IgYmxvY2sgaW4gaXRlcihsYW1iZGE6IHN0cmVhbS5yZWFkKDEwMjQqKjIpLCBiJycpOlxuICAgICAgICAgICAgZGlnZXN0LnVwZGF0ZShibG9jaylcbiAgICByZXR1cm4gZGlnZXN0LmhleGRpZ2VzdCgpXG5cblxuZGVmIHByaXZhdGUocGF0aCwgZGlyZWN0b3J5PUZhbHNlKTpcbiAgICBpbmZvID0gUGF0aChwYXRoKS5sc3RhdCgpXG4gICAgcmVxdWlyZSgoc3RhdC5TX0lTRElSKGluZm8uc3RfbW9kZSkgaWYgZGlyZWN0b3J5IGVsc2Ugc3RhdC5TX0lTUkVHKGluZm8uc3RfbW9kZSkpXG4gICAgICAgICAgICBhbmQgaW5mby5zdF91aWQgPT0gb3MuZ2V0dWlkKCkgYW5kIHN0YXQuU19JTU9ERShpbmZvLnN0X21vZGUpID09ICgwbzcwMCBpZiBkaXJlY3RvcnkgZWxzZSAwbzYwMClcbiAgICAgICAgICAgIGFuZCAoZGlyZWN0b3J5IG9yIGluZm8uc3RfbmxpbmsgPT0gMSksICdwcml2YXRlIG93bmVkIGN1c3RvZHkgcmVxdWlyZWQnKVxuXG5cbmRlZiBhdXRob3JpdHkocmVjZWlwdCwgb3V0Y29tZSwgbWVtb19zaGEsIHNvdXJjZV9yZXZpc2lvbiwgcGhhc2UsIG5vdz1Ob25lKTpcbiAgICBcIlwiXCJSb290IG11c3QgZnJlc2hseSB2ZXJpZnkgbmF0aXZlIG91dGNvbWUgYXQgZml4ZWQgT1JJR0lOIG91dHNpZGUgdGhpcyBoZWxwZXIuXG5cbiAgICBSZWNlaXB0IGZpbGVzL2ZsYWdzIGFyZSBub3Qgc2lnbmVkIGdyYW50cy4gVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIGV4YWN0XG4gICAgc3VwZXJ2aXNlZCByZWNlaXB0IHJlbGF0aW9uOyBleGlzdGluZyBoYXJuZXNzL2ZvdW5kZXIgYXV0aG9yaXR5IHJlbWFpbnMgdGhlXG4gICAgYWN0dWFsIHBlcm1pc3Npb24gYm91bmRhcnkuIEl0IG5ldmVyIGF1dGhlbnRpY2F0ZXMgYSBjYWxsZXIgYXMgaHVtYW4uXG4gICAgXCJcIlwiXG4gICAgbm93ID0gbm93IG9yIGRhdGV0aW1lLmRhdGV0aW1lLm5vdyhkYXRldGltZS50aW1lem9uZS51dGMpXG4gICAgcmVxdWlyZShwaGFzZSBpbiBQSEFTRVMsICdmaXhlZCBwaGFzZSByZXF1aXJlZCcpXG4gICAgcmVxdWlyZShyZWNlaXB0LmdldCgncHJvcG9zYWxfaWQnKSA9PSBQUk9QT1NBTCBhbmQgcmVjZWlwdC5nZXQoJ21lbW9faWQnKSA9PSBNRU1PX0lEXG4gICAgICAgICAgICBhbmQgcmVjZWlwdC5nZXQoJ21lbW9fdmVyc2lvbicpID09IDEgYW5kIHJlY2VpcHQuZ2V0KCdtZW1vX3NoYTI1NicpID09IG1lbW9fc2hhXG4gICAgICAgICAgICBhbmQgcmVjZWlwdC5nZXQoJ3NvdXJjZV9yZXZpc2lvbicpID09IHNvdXJjZV9yZXZpc2lvblxuICAgICAgICAgICAgYW5kIHJlY2VpcHQuZ2V0KCdhY3RpdmF0aW9uJykgPT0gJ0FQUFJPVkVEJ1xuICAgICAgICAgICAgYW5kIHJlY2VpcHQuZ2V0KCdhdXRob3JpdHlfbW9kZScpID09ICdBRE1JTklTVEVSJ1xuICAgICAgICAgICAgYW5kIHJlY2VpcHQuZ2V0KCd0YXJnZXQnKSA9PSAncmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbidcbiAgICAgICAgICAgIGFuZCByZWNlaXB0LmdldCgndmVyaWZpY2F0aW9uX21ldGhvZCcpID09ICdyb290LWZpeGVkLW9yaWdpbi1uYXRpdmUtcmVhZGJhY2snXG4gICAgICAgICAgICBhbmQgcmVjZWlwdC5nZXQoJ3J1bnRpbWVfYXV0aGVudGljYXRlZF9ncmFudCcpIGlzIEZhbHNlXG4gICAgICAgICAgICBhbmQgcmVjZWlwdC5nZXQoJ291dGNvbWVfcXVlcnknKSA9PSAnL2xpZmVjeWNsZS9tZW1vcy8nICsgTUVNT19JRCArICcvb3V0Y29tZXM/dmVyc2lvbj0xJyxcbiAgICAgICAgICAgICdleGFjdCBleHRlcm5hbGx5IHZlcmlmaWVkIHN1cGVydmlzZWQgcmVjZWlwdCByZXF1aXJlZCcpXG4gICAgdmVyaWZpZWQgPSBkYXRldGltZS5kYXRldGltZS5mcm9taXNvZm9ybWF0KHJlY2VpcHRbJ3ZlcmlmaWVkX2F0J10ucmVwbGFjZSgnWicsICcrMDA6MDAnKSlcbiAgICByZXF1aXJlKHZlcmlmaWVkLnR6aW5mbyBpcyBub3QgTm9uZSBhbmQgMCA8PSAobm93IC0gdmVyaWZpZWQpLnRvdGFsX3NlY29uZHMoKSA8PSAxMjAsXG4gICAgICAgICAgICAnZnJlc2ggcm9vdCBuYXRpdmUgcmVhZGJhY2sgcmVxdWlyZWQgYmVmb3JlIGV2ZXJ5IHBoYXNlJylcbiAgICBkZWFkbGluZSA9IGRhdGV0aW1lLmRhdGV0aW1lLmZyb21pc29mb3JtYXQoJzIwMjYtMTAtMTJUMjM6NTk6NTkrMDA6MDAnKVxuICAgIHJlcXVpcmUobm93IDwgZGVhZGxpbmUsICdhcHByb3ZlZCBleGVjdXRpb24gd2luZG93IGV4cGlyZWQnKVxuICAgIGlmIHBoYXNlID09ICdyZWxlYXNlJzpcbiAgICAgICAgcmVxdWlyZSgoZGVhZGxpbmUtbm93KS50b3RhbF9zZWNvbmRzKCkgPj0gMTgwMCwgJ3Jlc2VydmUgdGhpcnR5IG1pbnV0ZXMgZm9yIHZlcmlmaWNhdGlvbiBhbmQgcmVjb3ZlcnknKVxuICAgIHJlcXVpcmUob3V0Y29tZS5nZXQoJ21lbW9faWQnKSA9PSBNRU1PX0lEIGFuZCBvdXRjb21lLmdldCgncmV2aWV3Jywge30pLmdldCgnc3RhbGUnKSBpcyBGYWxzZVxuICAgICAgICAgICAgYW5kIG91dGNvbWVbJ3JldmlldyddLmdldCgnaW50YWtlX3N0YXRlJykgPT0gJ3JlYWR5JywgJ25hdGl2ZSByZXZpZXcgaXMgbm90IHJlYWR5L2N1cnJlbnQnKVxuICAgIHJldmlld19pZCA9IG91dGNvbWVbJ3JldmlldyddWydtZW1vX2lkJ11cbiAgICByZXF1aXJlKHJldmlld19pZCA9PSByZWNlaXB0LmdldCgncmV2aWV3X21lbW9faWQnKSwgJ25hdGl2ZSByZXZpZXcgaWRlbnRpdHkgY2hhbmdlZCcpXG4gICAgYWNjZXB0ZWQgPSBbeCBmb3IgeCBpbiBvdXRjb21lLmdldCgnZGlzcG9zaXRpb25zJywgW10pXG4gICAgICAgICAgICAgICAgaWYgeC5nZXQoJ3N1Ym1pc3Npb25fc3RhdGUnKSA9PSAnY29uZmlybWVkJ1xuICAgICAgICAgICAgICAgIGFuZCB4LmdldCgnZGlzcG9zaXRpb24nLCB7fSkuZ2V0KCd2ZXJiJykgPT0gJ2FjY2VwdCdcbiAgICAgICAgICAgICAgICBhbmQgeFsnZGlzcG9zaXRpb24nXS5nZXQoJ21lbW9fdmVyc2lvbicpID09IDFdXG4gICAgcmVxdWlyZShsZW4oYWNjZXB0ZWQpID09IDEsICdvbmUgY29uZmlybWVkIGZvdW5kZXIgYWNjZXB0YW5jZSByZXF1aXJlZCcpXG4gICAgYWNjZXB0ZWQgPSBhY2NlcHRlZFswXVsnZGlzcG9zaXRpb24nXVxuICAgIHJlcXVpcmUoYWNjZXB0ZWQuZ2V0KCdhY3RvcicpID09IEZPVU5ERVIgYW5kIGFjY2VwdGVkLmdldCgnbWVtb19pZCcpID09IHJldmlld19pZFxuICAgICAgICAgICAgYW5kIGFjY2VwdGVkLmdldCgnYXBwcm92YWxfaWQnKSA9PSByZWNlaXB0LmdldCgnYXBwcm92YWxfaWQnKVxuICAgICAgICAgICAgYW5kIGFjY2VwdGVkLmdldCgnaWQnKSA9PSByZWNlaXB0LmdldCgnZGlzcG9zaXRpb25faWQnKVxuICAgICAgICAgICAgYW5kIGFjY2VwdGVkLmdldCgnYXQnKSA9PSByZWNlaXB0LmdldCgnYWNjZXB0ZWRfYXQnKSwgJ2V4YWN0IGZvdW5kZXIgZGlzcG9zaXRpb24gbWlzbWF0Y2gnKVxuICAgIHJlcXVpcmUocmUuZnVsbG1hdGNoKHInW2EtZjAtOS1dezM2fScsIGFjY2VwdGVkWydhcHByb3ZhbF9pZCddKSBpcyBub3QgTm9uZVxuICAgICAgICAgICAgYW5kIHJlLmZ1bGxtYXRjaChyJ2Rpc3AtW2EtZjAtOS1dezM2fScsIGFjY2VwdGVkWydpZCddKSBpcyBub3QgTm9uZVxuICAgICAgICAgICAgYW5kIHJlLmZ1bGxtYXRjaChyJ3Jldmlldy1bYS1mMC05LV17MzZ9JywgcmV2aWV3X2lkKSBpcyBub3QgTm9uZSxcbiAgICAgICAgICAgICduYXRpdmUgZGlzcG9zaXRpb24gaWRlbnRpZmllcnMgYXJlIG1hbGZvcm1lZCcpXG4gICAgYWNjZXB0ZWRfYXQgPSBkYXRldGltZS5kYXRldGltZS5mcm9taXNvZm9ybWF0KGFjY2VwdGVkWydhdCddLnJlcGxhY2UoJ1onLCAnKzAwOjAwJykpXG4gICAgcmVxdWlyZShhY2NlcHRlZF9hdC50emluZm8gaXMgbm90IE5vbmUgYW5kIGFjY2VwdGVkX2F0IDw9IHZlcmlmaWVkLCAnYWNjZXB0YW5jZSB0aW1lIG5vdCBib3VuZGVkJylcbiAgICByZXR1cm4ge2tleTogcmVjZWlwdFtrZXldIGZvciBrZXkgaW4gKCdhcHByb3ZhbF9pZCcsICdkaXNwb3NpdGlvbl9pZCcsICdhY2NlcHRlZF9hdCcsICd2ZXJpZmllZF9hdCcpfVxuXG5cbmRlZiBmcmVzaF9zY2FuKHJlY2VpcHQsIHJlcG9ydCwgbm93PU5vbmUpOlxuICAgIFwiXCJcIlJvb3Qgc3VwZXJ2aXNlZCBzY2FuIGJvb2trZWVwaW5nOyBhY3R1YWwgc2Nhbm5lciBwcm9vZiBzdGF5cyByZXRhaW5lZC5cIlwiXCJcbiAgICBub3c9bm93IG9yIGRhdGV0aW1lLmRhdGV0aW1lLm5vdyhkYXRldGltZS50aW1lem9uZS51dGMpXG4gICAgcmVxdWlyZShyZWNlaXB0LmdldCgnaW1hZ2UnKT09J2Zvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6ZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMydcbiAgICAgICAgICAgIGFuZCByZWNlaXB0LmdldCgnYXJ0aWZhY3Rfc291cmNlX3JldmlzaW9uJyk9PSc5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjJ1xuICAgICAgICAgICAgYW5kIHJlY2VpcHQuZ2V0KCdzY2FubmVyJyk9PSdhcXVhc2VjL3RyaXZ5QHNoYTI1Njo2MmIxZTY1ZTg4NjliYzRiNGM2YWE0ZmEyYjIxNTk1MjU2YzdjMmY2MDE4YTlkOWFkNjFjYWY4NzE4N2MxOTY5J1xuICAgICAgICAgICAgYW5kIHJlY2VpcHQuZ2V0KCdub19zdXBwcmVzc2lvbicpIGlzIFRydWUgYW5kIHJlY2VpcHQuZ2V0KCdmdWxsX2FsbHNldmVyaXR5X3NjYW4nKSBpcyBUcnVlXG4gICAgICAgICAgICBhbmQgcmVjZWlwdC5nZXQoJ2V4aXRfY29kZScpPT0wLCdleGFjdCBmdWxsIGltbXV0YWJsZSBhcnRpZmFjdCBzY2FuIHJlcXVpcmVkJylcbiAgICBzY2FubmVkPWRhdGV0aW1lLmRhdGV0aW1lLmZyb21pc29mb3JtYXQocmVjZWlwdFsnY29tcGxldGVkX2F0J10ucmVwbGFjZSgnWicsJyswMDowMCcpKVxuICAgIG1ldGFkYXRhPXJlY2VpcHRbJ2RiX21ldGFkYXRhJ107dXBkYXRlZD1kYXRldGltZS5kYXRldGltZS5mcm9taXNvZm9ybWF0KG1ldGFkYXRhWydVcGRhdGVkQXQnXS5yZXBsYWNlKCdaJywnKzAwOjAwJykpO25leHRfdXBkYXRlPWRhdGV0aW1lLmRhdGV0aW1lLmZyb21pc29mb3JtYXQobWV0YWRhdGFbJ05leHRVcGRhdGUnXS5yZXBsYWNlKCdaJywnKzAwOjAwJykpXG4gICAgcmVxdWlyZShhbGwodC50emluZm8gaXMgbm90IE5vbmUgZm9yIHQgaW4gKHNjYW5uZWQsdXBkYXRlZCxuZXh0X3VwZGF0ZSkpXG4gICAgICAgICAgICBhbmQgdXBkYXRlZDw9c2Nhbm5lZDw9bm93PG5leHRfdXBkYXRlIGFuZCAobm93LXNjYW5uZWQpLnRvdGFsX3NlY29uZHMoKTw9MTQ0MDBcbiAgICAgICAgICAgIGFuZCBtZXRhZGF0YS5nZXQoJ1ZlcnNpb24nKT09MiBhbmQgcmUuZnVsbG1hdGNoKHInW2EtZjAtOV17NjR9JyxyZWNlaXB0LmdldCgnZGJfc2hhMjU2JywnJykpIGlzIG5vdCBOb25lLCdzY2FuIG9yIHZ1bG5lcmFiaWxpdHkgZGF0YWJhc2UgZXhwaXJlZCcpXG4gICAgcmVxdWlyZShpc2luc3RhbmNlKHJlcG9ydCxkaWN0KSBhbmQgaXNpbnN0YW5jZShyZXBvcnQuZ2V0KCdSZXN1bHRzJyksbGlzdCkgYW5kIHJlcG9ydFsnUmVzdWx0cyddLCdyZXRhaW5lZCBmdWxsIHNjYW4gcmVzdWx0cyByZXF1aXJlZCcpXG4gICAgZm9yIHJlc3VsdCBpbiByZXBvcnRbJ1Jlc3VsdHMnXTpcbiAgICAgICAgcmVxdWlyZShpc2luc3RhbmNlKHJlc3VsdCxkaWN0KSBhbmQgaXNpbnN0YW5jZShyZXN1bHQuZ2V0KCdWdWxuZXJhYmlsaXRpZXMnLFtdKSwobGlzdCx0eXBlKE5vbmUpKSksJ2Z1bGwgc2NhbiByZXN1bHQgaW52YWxpZCcpXG4gICAgICAgIHJlcXVpcmUobm90IHJlc3VsdC5nZXQoJ1Z1bG5lcmFiaWxpdGllcycpLCduZXcgZmluZGluZyByZWZ1c2VzIHJlbGVhc2UgYW5kIGNsb3N1cmUnKVxuICAgIHJldHVybiB7J2Z1bGxfcmVwb3J0X3NoYTI1Nic6cmVjZWlwdFsnZnVsbF9yZXBvcnRfc2hhMjU2J10sJ2RiX3NoYTI1Nic6cmVjZWlwdFsnZGJfc2hhMjU2J10sJ2NvbXBsZXRlZF9hdCc6cmVjZWlwdFsnY29tcGxldGVkX2F0J10sJ25leHRfdXBkYXRlJzptZXRhZGF0YVsnTmV4dFVwZGF0ZSddLCdhbGxzZXZlcml0eV9maW5kaW5ncyc6MH1cblxuXG5jbGFzcyBKb3VybmFsOlxuICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGlkZW50aXR5KTpcbiAgICAgICAgc2VsZi5wYXJlbnQgPSBQYXRoKHBhcmVudClcbiAgICAgICAgcHJpdmF0ZShzZWxmLnBhcmVudCwgZGlyZWN0b3J5PVRydWUpXG4gICAgICAgIHNlbGYucGF0aCA9IHNlbGYucGFyZW50IC8gJ2V4ZWN1dGlvbi1qb3VybmFsLmpzb24nXG4gICAgICAgIHNlbGYubG9jayA9IG9zLm9wZW4oc2VsZi5wYXJlbnQgLyAnZXhlY3V0aW9uLmxvY2snLCBvcy5PX0NSRUFUIHwgb3MuT19OT0ZPTExPVyB8IG9zLk9fUkRXUiwgMG82MDApXG4gICAgICAgIGZjbnRsLmZsb2NrKHNlbGYubG9jaywgZmNudGwuTE9DS19FWCB8IGZjbnRsLkxPQ0tfTkIpXG4gICAgICAgIHByaXZhdGUoc2VsZi5wYXJlbnQgLyAnZXhlY3V0aW9uLmxvY2snKVxuICAgICAgICBpZiBzZWxmLnBhdGguZXhpc3RzKCk6XG4gICAgICAgICAgICBwcml2YXRlKHNlbGYucGF0aClcbiAgICAgICAgICAgIHNlbGYuZGF0YSA9IGpzb24ubG9hZHMoc2VsZi5wYXRoLnJlYWRfdGV4dCgpKVxuICAgICAgICAgICAgcmVxdWlyZShzZWxmLmRhdGFbJ2lkZW50aXR5J10gPT0gaWRlbnRpdHksICdqb3VybmFsIGNhc2Uvc291cmNlIGlkZW50aXR5IGNoYW5nZWQnKVxuICAgICAgICBlbHNlOlxuICAgICAgICAgICAgc2VsZi5kYXRhID0geydpZGVudGl0eSc6IGlkZW50aXR5LCAncGhhc2VzJzoge319XG4gICAgICAgICAgICBzZWxmLnNhdmUoKVxuXG4gICAgZGVmIHNhdmUoc2VsZik6XG4gICAgICAgIHRlbXBvcmFyeSA9IHNlbGYucGFyZW50IC8gJ2V4ZWN1dGlvbi1qb3VybmFsLm5ldydcbiAgICAgICAgZmQgPSBvcy5vcGVuKHRlbXBvcmFyeSwgb3MuT19DUkVBVCB8IG9zLk9fRVhDTCB8IG9zLk9fTk9GT0xMT1cgfCBvcy5PX1dST05MWSwgMG82MDApXG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgIHdpdGggb3MuZmRvcGVuKGZkLCAndycpIGFzIHN0cmVhbTpcbiAgICAgICAgICAgICAgICBqc29uLmR1bXAoc2VsZi5kYXRhLCBzdHJlYW0sIGluZGVudD0yKVxuICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnXFxuJylcbiAgICAgICAgICAgICAgICBzdHJlYW0uZmx1c2goKVxuICAgICAgICAgICAgICAgIG9zLmZzeW5jKHN0cmVhbS5maWxlbm8oKSlcbiAgICAgICAgICAgIG9zLnJlcGxhY2UodGVtcG9yYXJ5LCBzZWxmLnBhdGgpXG4gICAgICAgICAgICBkaXJlY3RvcnkgPSBvcy5vcGVuKHNlbGYucGFyZW50LCBvcy5PX0RJUkVDVE9SWSB8IG9zLk9fUkRPTkxZKVxuICAgICAgICAgICAgdHJ5OlxuICAgICAgICAgICAgICAgIG9zLmZzeW5jKGRpcmVjdG9yeSlcbiAgICAgICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgICAgICAgb3MuY2xvc2UoZGlyZWN0b3J5KVxuICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjpcbiAgICAgICAgICAgICMgUmV0YWluIGV2aWRlbmNlIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIGFuIHVuY2VydGFpbiBkdXJhYmxlIGludGVudC5cbiAgICAgICAgICAgIHJhaXNlXG5cbiAgICBkZWYgc3RhcnQoc2VsZiwgcGhhc2UsIGFwcHJvdmFsKTpcbiAgICAgICAgcmVxdWlyZShwaGFzZSBub3QgaW4gc2VsZi5kYXRhWydwaGFzZXMnXSwgJ2FscmVhZHkgYXR0ZW1wdGVkIHBoYXNlOyBubyByZXRyeScpXG4gICAgICAgIHByZWRlY2Vzc29ycyA9IGRpY3QoemlwKFBIQVNFU1sxOjhdLCBQSEFTRVNbOjddKSlcbiAgICAgICAgcHJlZGVjZXNzb3JzWydyb2xsYmFjay12ZXJpZnknXSA9ICdyb2xsYmFjaydcbiAgICAgICAgaWYgcGhhc2UgaW4gcHJlZGVjZXNzb3JzOlxuICAgICAgICAgICAgcmVxdWlyZShzZWxmLmRhdGFbJ3BoYXNlcyddLmdldChwcmVkZWNlc3NvcnNbcGhhc2VdLCB7fSkuZ2V0KCdzdGF0ZScpID09ICdDT01QTEVURScsXG4gICAgICAgICAgICAgICAgICAgICdwcmVjZWRpbmcgcGhhc2UgaXMgbm90IHZlcmlmaWVkIGNvbXBsZXRlJylcbiAgICAgICAgaWYgcGhhc2UgPT0gJ3JvbGxiYWNrJzpcbiAgICAgICAgICAgIHJlcXVpcmUoJ3JlbGVhc2UnIGluIHNlbGYuZGF0YVsncGhhc2VzJ10sICdyb2xsYmFjayByZXF1aXJlcyBhIHJlY29yZGVkIHJlbGVhc2UgYXR0ZW1wdCcpXG4gICAgICAgIHNlbGYuZGF0YVsncGhhc2VzJ11bcGhhc2VdID0geydzdGF0ZSc6ICdSVU5OSU5HJywgJ2FwcHJvdmFsJzogYXBwcm92YWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRlbXB0X2lkJzogc3RyKHV1aWQudXVpZDQoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGFydGVkX2F0JzogZGF0ZXRpbWUuZGF0ZXRpbWUubm93KGRhdGV0aW1lLnRpbWV6b25lLnV0YykuaXNvZm9ybWF0KCl9XG4gICAgICAgIHNlbGYuc2F2ZSgpXG5cbiAgICBkZWYgbm90ZShzZWxmLCBwaGFzZSwga2V5LCB2YWx1ZSk6XG4gICAgICAgIHJlcXVpcmUoc2VsZi5kYXRhWydwaGFzZXMnXVtwaGFzZV1bJ3N0YXRlJ10gPT0gJ1JVTk5JTkcnLCAncGhhc2UgaW50ZW50IG1pc3NpbmcnKVxuICAgICAgICBzZWxmLmRhdGFbJ3BoYXNlcyddW3BoYXNlXVtrZXldID0gdmFsdWVcbiAgICAgICAgc2VsZi5zYXZlKClcblxuICAgIGRlZiBmaW5pc2goc2VsZiwgcGhhc2UsIHJlc3VsdCk6XG4gICAgICAgIGVudHJ5ID0gc2VsZi5kYXRhWydwaGFzZXMnXVtwaGFzZV1cbiAgICAgICAgcmVxdWlyZShlbnRyeVsnc3RhdGUnXSA9PSAnUlVOTklORycsICdwaGFzZSBpbnRlbnQgbWlzc2luZycpXG4gICAgICAgIGVudHJ5WydyZXN1bHQnXSA9IHJlc3VsdFxuICAgICAgICBlbnRyeVsnc3RhdGUnXSA9ICdDT01QTEVURScgaWYgcmVzdWx0LmdldCgnYWxsX2NoZWNrc19wYXNzJykgaXMgVHJ1ZSBlbHNlICdVTkNFUlRBSU4nXG4gICAgICAgIHNlbGYuc2F2ZSgpXG5cbiAgICBkZWYgY2xvc2Uoc2VsZik6XG4gICAgICAgIG9zLmNsb3NlKHNlbGYubG9jaylcbiIKICAgIH0sCiAgICAiZXhlY3V0aW9uL2V4ZWN1dGlvbi1wbGFuLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNzUwYTQzODYyNzdkYzc5YzMyMTNlNmFlZDE3YWU1Njg2MzMyYmZkNTg3YTU1ZTVlODdlYmYzNzc2YTYzYWIwYyIsCiAgICAgICJjb250ZW50IjogIntcbiAgXCJraW5kXCI6IFwiaW5mb3JtZWQtZGVjaXNpb24uc3VwZXJ2aXNlZC1tZWNoYW5pY2FsLXJlbGVhc2UtcGxhblwiLFxuICBcInZlcnNpb25cIjogMSxcbiAgXCJwcm9wb3NhbF9pZFwiOiBcIklORkQtV1AtMDAwOS1UMDUvemxpYjg1MDkxLXIxXCIsXG4gIFwidHJpYWxfaWRcIjogXCJpbmZkLXpsaWItMjAyNjEwMTEtcjFcIixcbiAgXCJzdGF0ZVwiOiBcInByZXBhcmVkLXVuYXBwcm92ZWRcIixcbiAgXCJleGVjdXRvcl9maWxlc1wiOiB7XG4gICAgXCJhY3R1YXRvci5weVwiOiBcImRhYmVkYTMzZmZlNTI5ODkzMzdlMjE0ZGM2ZTZkM2VmNWYwNDc5NzU2OTE0NWZhZjJmZjY5MDI0YjEwMWVjODBcIixcbiAgICBcImF1dGhvcml0eV9qb3VybmFsLnB5XCI6IFwiMmFhOWJhZTQwNzUyOTIyMjY0ZTUzMzgyZDg5OGUzMDgzYjhkMjI5YjE4NTMyOTI2Njk0MmJkZDM5NzAxMzEwOFwiLFxuICAgIFwibmF0aXZlX3Byb2dyYW0ucHlcIjogXCJmY2Y4ZmMzNTkzOTEwYjJlOTlkZDUxZDE1OWEzMGFhOWI4NTNjNDBmZjAwYzU2NmE2MjBkMjBlYWFkYzhhZjIwXCIsXG4gICAgXCJyZWNlaXB0X3NhZmV0eS5weVwiOiBcIjVjNTQzNzNmMmRjNGIwNjQwMDgyMjVjMTg2ZWZiMWQ1YWZkZWVjMzZkMTUzNTBiZGEwYTEyZGVkOTc2MDJkMWJcIlxuICB9LFxuICBcImNhc2VfZmlsZXNcIjoge1xuICAgIFwicG9zdC1yZWFkeS1uYXRpdmUtb3V0Y29tZXMtY29tbWFuZC5weVwiOiBcImNlODhhY2E1ZTJkNmNkNWFiNzUzMzg5OGJjOWIyNDZiZDE1OTQ4MmM0YWNjY2IwYWZlNGM0NTFlZTg4ZjU3ZmFcIixcbiAgICBcInNjYW4tcmVjZWlwdC5qc29uXCI6IFwiYWFhYTkxMDYxYmIwMzZlNmQyMjhiMWMxYmQ0MzMzNTc4ZGM5NDhjYjJiYjVhYzhiYTI2OTQyOTEyMWU3MzIxYVwiLFxuICAgIFwic291cmNlLWNvbW1pdC1wcm9vZi5qc29uXCI6IFwiYjA4MTFkYTJkM2JkNTkzODczM2YwMDc4ZTVmZWM4ZTE5YTZkOTc1MmM0Mjc3YjgwYmZlOTgzN2VkNzJjNmEzYlwiLFxuICAgIFwiY2FuZGlkYXRlLWRlcGxveW1lbnQuanNvblwiOiBcIjQ4N2Y4MzRjYzg2ZGNiYzdhMDRjMjM5MmJkZTA3MmVjYWY4N2RjMTE2YjRiYWExNmMzNWViOWM1OTlhZDVjOTVcIixcbiAgICBcImFydGlmYWN0LWNvbXBhcmlzb24uanNvblwiOiBcImExYzVkOWUyNDlkYzAwNjAwNDQ5OTk4MzYwZmFmNmU4ZGEwMjA2YjU2OGM3NmQxNTU2MDJjNDY0NWZhNWZjZTRcIixcbiAgICBcInJvbGxiYWNrLWRlcGxveW1lbnQuanNvblwiOiBcImY4YTlhMDdhYmMyZWI1MmNkZjZiY2RiYTJkOWY3OWRlYzA3MzE0NWMzMWQwNDQ0YTllMGZlMTE0N2U0MmNjNGVcIixcbiAgICBcInNxbGl0ZV9yZWFkb25seS5weVwiOiBcIjkwOTNjNjRmN2YwZTM5YjI0OWRhOWZlZmRmNWFhZjRlNDI1OGJjMzFlN2EyN2ZkODg4NDc5Y2UzMjlhMjA1MDlcIixcbiAgICBcInB1Ymxpc2hlZC12ZXJpZmljYXRpb24uanNvblwiOiBcImRkNGVlY2YwYzEwM2RjYTc5MjIwOTRhOGJlZWI5OWI3N2FlOTZmZDFkNWZlNTMyZTM3YmQ4MzNkYWEwMjYxNGVcIixcbiAgICBcInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb25cIjogXCIwNDIzMjdhMDM2ZWQyNTRjZjk1ZGJlYjBjMDU2YWMyNWIwM2E2YTg0NGI5NWEzMzJjOTkyZGYyOTQzNjkxMzY5XCIsXG4gICAgXCJzZWFsZWQtbGl2ZS1kZXBsb3ltZW50Lmpzb25cIjogXCJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlXCIsXG4gICAgXCJuYXRpdmUtcHJlZmxpZ2h0Lmpzb25cIjogXCI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5XCIsXG4gICAgXCJmcmVzaC1zY2FuLXJlY2VpcHQtdGVtcGxhdGUuanNvblwiOiBcIjkyYmJmOGE4OTFjN2VmNzhkZjQ4NDMwOTAxMjE5ZDhkMDcwNzNjYmE3NDExMmEzMDdhNmQ4YmRlYzUwOWU4ZGRcIixcbiAgICBcInJvbGxiYWNrLXByZWZsaWdodC5qc29uXCI6IFwiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNVwiLFxuICAgIFwiaW5zdGFsbGVkLXpsaWItcHJvb2YuanNvblwiOiBcIjZhZjYyZjg2ZjUwYWMxODVmYWI5NDE2M2MyNGFjODE1MGVhZDY5ZTYyZjhkODI1YjBkY2UxZTc1YTVhNTdiNjhcIixcbiAgICBcInJ1bnRpbWUtcmVjZWlwdC5qc29uXCI6IFwiNjQ0MjY3NmRjZmQ5NDFmMGEwNWE0Y2I3OWEwMmRlYTgzOWZjZDMzMmQ4MmIyMTU0YzE1Y2Y2ZGI2OGRlNTg4OVwiLFxuICAgIFwiY2hhbmdlX2d1YXJkLnB5XCI6IFwiYjNlZTJiODlkZTE0ZTIwNGVmZWRkMDE2ZDM5MDBiNmUzMWZjYzlmMGVhMGYzMTI1ZDNhNDc5NGQ5MzhjYTIwMVwiLFxuICAgIFwiY2hlY2tfaW5zdGFsbGVkLnB5XCI6IFwiYTM0YTUxYmU5YzlmMmIxNmEwNmE4ODE3M2I1YzZjNDkyYzk5NTdmZTAyMWNmNDEyYTg2YTE3Mzc3MzA2NDBhZFwiLFxuICAgIFwiY2FuZGlkYXRlLXJ1bnRpbWUuanNvblwiOiBcImQ1OGU2MGJkYzY5NDU4ZmU0MmFmODI0OGUwMmFjZDkyNGIzYjYwNWM4Mjg4NzczNTJhN2Q5YTM5NTNlOTAxMjRcIlxuICB9LFxuICBcIm93bmVyX3NvdXJjZV9maWxlc1wiOiB7XG4gICAgXCJkZXBsb3kvbGlmZWN5Y2xlL2FkbWlzc2lvbi5jYW5kaWRhdGUuanNvblwiOiBcIjZjNzZjZWRkMGFiYzRhNDI2MWNmY2I2OWM2NTk3NjExYzI4MmJkNGZlZDhiNmFhZjc3YWZmMDRmZGY5NDI1MjlcIixcbiAgICBcImRlcGxveS9saWZlY3ljbGUvc2VydmljZS5jYW5kaWRhdGUuanNvblwiOiBcIjM4MzMzMmNkNGZkMjdhOGIzNmU2M2E0ZDc5YWRkYzQzZWI2ODYxNWY3NDIzMjhkNDU3N2JmYzJiNDY3ZTIyNzhcIixcbiAgICBcImRlcGxveS9saWZlY3ljbGUva3VzdG9taXphdGlvbi55YW1sXCI6IFwiMWJiY2U4MWJjNjc1ODQzNDM1NDE1N2Y4NjAxNTM0MzIwYzVkMDI5MDU4NzkwOGZkMTVhNmQyNWUzZmE1N2Y0N1wiLFxuICAgIFwiZGVwbG95L2xpZmVjeWNsZS9yZWdpc3RyaWVzLmNhbmRpZGF0ZS5qc29uXCI6IFwiOWJhZDZkYjVmYmMyMTc4ZDMxYjA0MTIwMDE2YTQxODMwYzM1NTJmYmI5ZTI1MTdiNzE4ZjliYmU4N2NmNjQ5ZVwiXG4gIH0sXG4gIFwiY2FuZGlkYXRlX2ltYWdlXCI6IFwiZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uQHNoYTI1NjpmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzXCIsXG4gIFwicHJpb3JfaW1hZ2VcIjogXCJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2Ojc2M2MzNjQwMmM4YmU3Y2M0YzFiZDFhNjE2MjNkMWFmZjkxMTZkNTIyNDE4Nzc0MjViNDVhNzAxOGNjMDg4M2FcIixcbiAgXCJzb3VyY2VfcmV2aXNpb25cIjogXCJtdXN0LWJlLWV4YWN0LWZpbmFsLW93bmVyLUhFQUQtd2l0aC1hcHByb3ZlZC1mb3VyLUdpdC1ibG9ic1wiLFxuICBcInBoYXNlc1wiOiBbXG4gICAgXCJkcmlsbC1iYWNrdXBcIixcbiAgICBcImRyaWxsLWNvcHlcIixcbiAgICBcIm9mZmxpbmUtdmVyaWZ5XCIsXG4gICAgXCJjbGVhbnVwLW9mZmxpbmVcIixcbiAgICBcImN1dG92ZXItYmFja3VwXCIsXG4gICAgXCJjdXRvdmVyLWNvcHlcIixcbiAgICBcInJlbGVhc2VcIixcbiAgICBcInZlcmlmeVwiLFxuICAgIFwicm9sbGJhY2tcIixcbiAgICBcInJvbGxiYWNrLXZlcmlmeVwiXG4gIF0sXG4gIFwiYXV0aG9yaXphdGlvblwiOiBcImZyZXNoIGV4dGVybmFsbHkgYXV0aGVudGljYXRlZCByb290IGZpeGVkLW9yaWdpbiBuYXRpdmUgcmVhZGJhY2sgYmVmb3JlIGVhY2ggcGhhc2U7IGV4YWN0IGNvbmZpcm1lZCBwbGF0Zm9ybS1yb290IGRpc3Bvc2l0aW9uIGFuZCBjdXJyZW50IHBhY2tldCBTSEEvc291cmNlIGNvbW1pdDsgcmVjZWlwdCBib29ra2VlcGluZyBpcyBub3QgYW4gYXV0b25vbW91cyBzaWduZWQgZ3JhbnRcIixcbiAgXCJleGVjdXRlX2J5XCI6IFwiMjAyNi0xMC0xMlQyMzo1OTo1OVpcIixcbiAgXCJyYXdfb3V0cHV0X3dpdGhoZWxkXCI6IHRydWUsXG4gIFwibmF0aXZlX2RhdGFfb3Jfd29ya2xvYWRfYWN0aW9uX2V4ZWN1dGVkXCI6IGZhbHNlLFxuICBcImRlYWRsaW5lX3NlbWFudGljc1wiOiBcIkFsbCBwaGFzZXMgaW5jbHVkaW5nIHZlcmlmaWNhdGlvbi9yZWNvdmVyeSBtdXN0IGJlZ2luIGJlZm9yZSBleGVjdXRlX2J5LiBObyBleHRlbnNpb24gb3IgYXV0b21hdGljIGVtZXJnZW5jeSBncmFudDsgYmV5b25kIGRlYWRsaW5lIHN0b3AgYW5kIG9idGFpbiBhIGZyZXNoIGZvdW5kZXIgZGVjaXNpb24uIENvbXBsZXRlIHRoZSBib3VuZGVkIGRyaWxsIGFuZCByb2xsb3V0IGVhcmx5IGVub3VnaCB0byBhbGxvdyByZWNvdmVyeSB3aXRoaW4gdGhlIHdpbmRvdy5cIixcbiAgXCJzb3VyY2VfbWVtb192ZXJzaW9uXCI6IDEsXG4gIFwibmF0aXZlX3Jldmlld19tZW1vX3ZlcnNpb25cIjogMSxcbiAgXCJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWRcIjogdHJ1ZVxufVxuIgogICAgfSwKICAgICJleGVjdXRpb24vbmF0aXZlX3Byb2dyYW0ucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiZmNmOGZjMzU5MzkxMGIyZTk5ZGQ1MWQxNTlhMzBhYTliODUzYzQwZmYwMGM1NjZhNjIwZDIwZWFhZGM4YWYyMCIsCiAgICAgICJjb250ZW50IjogIlwiXCJcIkZpeGVkIFQwNSByZW1vdGUgc2NyaXB0OyBzb3VyY2UgcHJlcGFyYXRpb24gbmV2ZXIgZGlzcGF0Y2hlcyBpdC5cIlwiXCJcblBST0dSQU0gPSAnXFxuaW1wb3J0IGNvcHksZGF0ZXRpbWUsaGFzaGxpYixqc29uLG9zLHJlLHN1YnByb2Nlc3Msc3lzXFxuaWYgc3lzLmZsYWdzLm9wdGltaXplOnJhaXNlIFJ1bnRpbWVFcnJvcihcXCdvcHRpbWl6ZWQgaW50ZXJwcmV0ZXIgcmVmdXNlZFxcJylcXG5wYXlsb2FkPWpzb24ubG9hZHMoX19QQVlMT0FEX18pXFxuZXhlYyhfX0dVQVJEX18pXFxucGhhc2U9cGF5bG9hZFtcXCdwaGFzZVxcJ11cXG5pZiBwaGFzZSBub3QgaW4gKFxcJ2RyaWxsLWJhY2t1cFxcJyxcXCdjdXRvdmVyLWJhY2t1cFxcJyxcXCdkcmlsbC1jb3B5XFwnLFxcJ2N1dG92ZXItY29weVxcJyxcXCdyZWxlYXNlXFwnLFxcJ3ZlcmlmeVxcJyxcXCdyb2xsYmFja1xcJyxcXCdyb2xsYmFjay12ZXJpZnlcXCcpOnJhaXNlIFZhbHVlRXJyb3IoXFwnZml4ZWQgbmF0aXZlIHBoYXNlIHJlcXVpcmVkXFwnKVxcbmRlYWRsaW5lPWRhdGV0aW1lLmRhdGV0aW1lLmZyb21pc29mb3JtYXQoXFwnMjAyNi0xMC0xMlQyMzo1OTo1OSswMDowMFxcJylcXG5kZWYgcmVxdWlyZSh2YWx1ZSxyZWFzb24pOlxcbiBpZiBub3QgdmFsdWU6cmFpc2UgVmFsdWVFcnJvcihyZWFzb24pXFxucmVxdWlyZShkYXRldGltZS5kYXRldGltZS5ub3coZGF0ZXRpbWUudGltZXpvbmUudXRjKTxkZWFkbGluZSxcXCdleGVjdXRpb24gd2luZG93IGV4cGlyZWRcXCcpXFxuZW52PXsqKm9zLmVudmlyb24sXFwnS1VCRUNPTkZJR1xcJzpcXCcvZXRjL3JhbmNoZXIvazNzL2szcy55YW1sXFwnfVxcbmRlZiBydW4oYXJndixib2R5PU5vbmUsdGltZW91dD05MCk6XFxuIHJldHVybiBzdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWJvZHksdGV4dD1UcnVlLGNhcHR1cmVfb3V0cHV0PVRydWUsdGltZW91dD10aW1lb3V0LGVudj1lbnYpXFxuZGVmIHJlYWQoa2luZCxuYW1lLG5hbWVzcGFjZSk6XFxuIHJlc3VsdD1ydW4oW1xcJ2t1YmVjdGxcXCcsXFwnZ2V0XFwnLGtpbmQsbmFtZSxcXCctblxcJyxuYW1lc3BhY2UsXFwnLW9cXCcsXFwnanNvblxcJ10pXFxuIHJlcXVpcmUocmVzdWx0LnJldHVybmNvZGU9PTAsXFwnZml4ZWQgbWV0YWRhdGEgcmVhZCByZWZ1c2VkXFwnKVxcbiByZXR1cm4ganNvbi5sb2FkcyhyZXN1bHQuc3Rkb3V0KVxcbnNlYWxlZD1wYXlsb2FkW1xcJ3NlYWxlZFxcJ107IGRlcGVuZGVuY2llcz1wYXlsb2FkW1xcJ2RlcGVuZGVuY2llc1xcJ11cXG5saXZlPXJlYWQoXFwnZGVwbG95bWVudFxcJyxcXCdpbmZvcm1lZC1kZWNpc2lvblxcJyxcXCdpbmZvcm1lZC1kZWNpc2lvblxcJylcXG5jbT1yZWFkKFxcJ2NvbmZpZ21hcFxcJyxcXCdpbmZvcm1lZC1kZWNpc2lvbi1ydW50aW1lLTZjMjIxODc4ZDA1MVxcJyxcXCdpbmZvcm1lZC1kZWNpc2lvblxcJylcXG5wdmM9cmVhZChcXCdwdmNcXCcsXFwnaW5mb3JtZWQtZGVjaXNpb24tZGF0YVxcJyxcXCdpbmZvcm1lZC1kZWNpc2lvblxcJylcXG5jaGVja19kZXBlbmRlbmNpZXMoY20scHZjLGRlcGVuZGVuY2llcylcXG5hcHA9cmVhZChcXCdhcHBsaWNhdGlvblxcJyxcXCdpbmZvcm1lZC1kZWNpc2lvblxcJyxcXCdhcmdvY2RcXCcpXFxucmVxdWlyZShhcHBbXFwnbWV0YWRhdGFcXCddW1xcJ3VpZFxcJ109PVxcJzQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZFxcJyxcXCdBcHBsaWNhdGlvbiBVSUQgY2hhbmdlZFxcJylcXG5yZXF1aXJlKGFwcFtcXCdzcGVjXFwnXVtcXCdzb3VyY2VcXCddW1xcJ3JlcG9VUkxcXCddPT1cXCdodHRwczovL2Zvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbi5naXRcXCdcXG4gYW5kIGFwcFtcXCdzcGVjXFwnXVtcXCdzb3VyY2VcXCddW1xcJ3BhdGhcXCddPT1cXCdkZXBsb3kvbGlmZWN5Y2xlXFwnXFxuIGFuZCBhcHBbXFwnc3BlY1xcJ11bXFwnZGVzdGluYXRpb25cXCddPT17XFwnbmFtZXNwYWNlXFwnOlxcJ2luZm9ybWVkLWRlY2lzaW9uXFwnLFxcJ3NlcnZlclxcJzpcXCdodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmNcXCd9XFxuIGFuZCBhcHBbXFwnc3BlY1xcJ10uZ2V0KFxcJ3N5bmNQb2xpY3lcXCcse30pLmdldChcXCdhdXRvbWF0ZWRcXCcpIGlzIE5vbmVcXG4gYW5kIHNldChhcHBbXFwnc3BlY1xcJ11bXFwnc291cmNlXFwnXSk9PXtcXCdyZXBvVVJMXFwnLFxcJ3BhdGhcXCcsXFwndGFyZ2V0UmV2aXNpb25cXCd9IGFuZCBub3QgYXBwW1xcJ3NwZWNcXCddLmdldChcXCdzb3VyY2VzXFwnKSxcXCdBcHBsaWNhdGlvbiBvd25lci9zY29wZSBjaGFuZ2VkXFwnKVxcbmV4cGVjdGVkPWNvcHkuZGVlcGNvcHkoc2VhbGVkKVxcbmlmIHBoYXNlPT1cXCd2ZXJpZnlcXCc6ZXhwZWN0ZWRbXFwnc3BlY1xcJ11bXFwndGVtcGxhdGVcXCddW1xcJ3NwZWNcXCddW1xcJ2NvbnRhaW5lcnNcXCddWzBdW1xcJ2ltYWdlXFwnXT1DQU5ESURBVEVcXG5pZiBwaGFzZT09XFwncm9sbGJhY2tcXCc6XFxuIGltYWdlPWxpdmVbXFwnc3BlY1xcJ11bXFwndGVtcGxhdGVcXCddW1xcJ3NwZWNcXCddW1xcJ2NvbnRhaW5lcnNcXCddWzBdW1xcJ2ltYWdlXFwnXVxcbiByZXF1aXJlKGltYWdlIGluIChCQVNFLENBTkRJREFURSksXFwncm9sbGJhY2sgaW1hZ2UgaXMgb3V0c2lkZSBzYW1lLXNjaGVtYSBwYWlyXFwnKVxcbiBleHBlY3RlZFtcXCdzcGVjXFwnXVtcXCd0ZW1wbGF0ZVxcJ11bXFwnc3BlY1xcJ11bXFwnY29udGFpbmVyc1xcJ11bMF1bXFwnaW1hZ2VcXCddPWltYWdlXFxuY2hlY2tfY3VycmVudChsaXZlLGV4cGVjdGVkKVxcbmlmIHBoYXNlIT1cXCdyb2xsYmFja1xcJzpcXG4gcmVxdWlyZShsaXZlLmdldChcXCdzdGF0dXNcXCcse30pLmdldChcXCdyZWFkeVJlcGxpY2FzXFwnKT09MVxcbiAgYW5kIGxpdmVbXFwnc3RhdHVzXFwnXS5nZXQoXFwndXBkYXRlZFJlcGxpY2FzXFwnKT09MVxcbiAgYW5kIGxpdmVbXFwnc3RhdHVzXFwnXS5nZXQoXFwnb2JzZXJ2ZWRHZW5lcmF0aW9uXFwnKT09bGl2ZVtcXCdtZXRhZGF0YVxcJ11bXFwnZ2VuZXJhdGlvblxcJ10sXFwnc2VydmljZSBub3QgUmVhZHkxXFwnKVxcbnRhcmdldD1wYXlsb2FkW1xcJ3NvdXJjZV9yZXZpc2lvblxcJ10gaWYgcGhhc2U9PVxcJ3ZlcmlmeVxcJyBlbHNlIFxcJ2M5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTJcXCdcXG5pZiBwaGFzZT09XFwncm9sbGJhY2tcXCc6cmVxdWlyZShhcHBbXFwnc3BlY1xcJ11bXFwnc291cmNlXFwnXVtcXCd0YXJnZXRSZXZpc2lvblxcJ10gaW4gKHRhcmdldCxwYXlsb2FkW1xcJ3NvdXJjZV9yZXZpc2lvblxcJ10pLFxcJ3JvbGxiYWNrIHNvdXJjZSBpcyBvdXRzaWRlIHBhaXJcXCcpXFxuZWxzZTpyZXF1aXJlKGFwcFtcXCdzcGVjXFwnXVtcXCdzb3VyY2VcXCddW1xcJ3RhcmdldFJldmlzaW9uXFwnXT09dGFyZ2V0LFxcJ3VuZXhwZWN0ZWQgc291cmNlIHBpblxcJylcXG5yZXN1bHQ9e1xcJ3BoYXNlXFwnOnBoYXNlLFxcJ2FsbF9jaGVja3NfcGFzc1xcJzpGYWxzZSxcXCdyYXdfb3V0cHV0X3dpdGhoZWxkXFwnOlRydWUsXFxuIFxcJ25hdGl2ZV9hcHByb3ZhbF92ZXJpZmllZF9ieV9yb290XFwnOnBheWxvYWRbXFwnYXBwcm92YWxcXCddLFxcJ25hdGl2ZV9hdXRoZW50aWNhdGVkX2dyYW50XFwnOkZhbHNlfVxcbnRyeTpcXG4gaWYgcGhhc2UgaW4gKFxcJ2RyaWxsLWJhY2t1cFxcJyxcXCdjdXRvdmVyLWJhY2t1cFxcJyxcXCdkcmlsbC1jb3B5XFwnLFxcJ2N1dG92ZXItY29weVxcJyxcXCdyZWxlYXNlXFwnLFxcJ3ZlcmlmeVxcJyxcXCdyb2xsYmFjay12ZXJpZnlcXCcpOlxcbiAgcG9kbGlzdD1ydW4oW1xcJ2t1YmVjdGxcXCcsXFwnZ2V0XFwnLFxcJ3BvZHNcXCcsXFwnLW5cXCcsXFwnaW5mb3JtZWQtZGVjaXNpb25cXCcsXFwnLWxcXCcsXFwnYXBwLmt1YmVybmV0ZXMuaW8vbmFtZT1pbmZvcm1lZC1kZWNpc2lvblxcJyxcXCctb1xcJyxcXCdqc29uXFwnXSlcXG4gIHJlcXVpcmUocG9kbGlzdC5yZXR1cm5jb2RlPT0wLFxcJ3BvZCBtZXRhZGF0YSBxdWVyeSByZWZ1c2VkXFwnKVxcbiAgcG9kcz1bcCBmb3IgcCBpbiBqc29uLmxvYWRzKHBvZGxpc3Quc3Rkb3V0KVtcXCdpdGVtc1xcJ10gaWYgbm90IHBbXFwnbWV0YWRhdGFcXCddLmdldChcXCdkZWxldGlvblRpbWVzdGFtcFxcJyldXFxuICByZXF1aXJlKGxlbihwb2RzKT09MSxcXCdleGFjdCBzaW5nbGUgbGl2ZSBvd25lciBwb2QgcmVxdWlyZWRcXCcpO3BvZD1wb2RzWzBdXFxuICByZXF1aXJlKHBvZFtcXCdzdGF0dXNcXCddLmdldChcXCdwaGFzZVxcJyk9PVxcJ1J1bm5pbmdcXCcgYW5kIGxlbihwb2RbXFwnc3BlY1xcJ11bXFwnY29udGFpbmVyc1xcJ10pPT0xXFxuICAgYW5kIHBvZFtcXCdzcGVjXFwnXVtcXCdjb250YWluZXJzXFwnXVswXVtcXCdpbWFnZVxcJ109PWV4cGVjdGVkW1xcJ3NwZWNcXCddW1xcJ3RlbXBsYXRlXFwnXVtcXCdzcGVjXFwnXVtcXCdjb250YWluZXJzXFwnXVswXVtcXCdpbWFnZVxcJ11cXG4gICBhbmQgbGVuKHBvZFtcXCdzdGF0dXNcXCddLmdldChcXCdjb250YWluZXJTdGF0dXNlc1xcJyxbXSkpPT0xXFxuICAgYW5kIHBvZFtcXCdzdGF0dXNcXCddW1xcJ2NvbnRhaW5lclN0YXR1c2VzXFwnXVswXS5nZXQoXFwnbmFtZVxcJyk9PVxcJ2luZm9ybWVkLWRlY2lzaW9uXFwnXFxuICAgYW5kIHBvZFtcXCdzdGF0dXNcXCddW1xcJ2NvbnRhaW5lclN0YXR1c2VzXFwnXVswXS5nZXQoXFwncmVhZHlcXCcpIGlzIFRydWVcXG4gICBhbmQgcG9kW1xcJ3N0YXR1c1xcJ11bXFwnY29udGFpbmVyU3RhdHVzZXNcXCddWzBdLmdldChcXCdpbWFnZUlEXFwnLFxcJ1xcJykuZW5kc3dpdGgoXFwnQFxcJytleHBlY3RlZFtcXCdzcGVjXFwnXVtcXCd0ZW1wbGF0ZVxcJ11bXFwnc3BlY1xcJ11bXFwnY29udGFpbmVyc1xcJ11bMF1bXFwnaW1hZ2VcXCddLnNwbGl0KFxcJ0BcXCcsMSlbMV0pLFxcJ293bmVyIHBvZCByZWFkaW5lc3MvaW1hZ2UgY2hhbmdlZFxcJylcXG4gIGlmIHBoYXNlIGluIChcXCdkcmlsbC1iYWNrdXBcXCcsXFwnZHJpbGwtY29weVxcJyxcXCdjdXRvdmVyLWJhY2t1cFxcJyxcXCdjdXRvdmVyLWNvcHlcXCcsXFwncmVsZWFzZVxcJyk6cmVxdWlyZShwb2RbXFwnbWV0YWRhdGFcXCddW1xcJ3VpZFxcJ109PVxcJ2M0Y2IxNTUwLWZlZGEtNDA5Ny05ZGU0LWQ4OTFhNjU3YjY2MlxcJyxcXCdvcmlnaW5hbCBiYWNrdXAgUG9kIGlkZW50aXR5IGNoYW5nZWRcXCcpXFxuICB0ZW1wbGF0ZT1leHBlY3RlZFtcXCdzcGVjXFwnXVtcXCd0ZW1wbGF0ZVxcJ11bXFwnc3BlY1xcJ11cXG4gIGNvbnRyb2xsZWQ9c2V0KHRlbXBsYXRlKXx7XFwnaW5pdENvbnRhaW5lcnNcXCcsXFwnaG9zdE5ldHdvcmtcXCcsXFwnaG9zdFBJRFxcJyxcXCdob3N0SVBDXFwnLFxcJ3J1bnRpbWVDbGFzc05hbWVcXCcsXFwnc2hhcmVQcm9jZXNzTmFtZXNwYWNlXFwnfVxcbiAgcmVxdWlyZShhbGwocG9kW1xcJ3NwZWNcXCddLmdldChrZXkpPT10ZW1wbGF0ZS5nZXQoa2V5KSBmb3Iga2V5IGluIGNvbnRyb2xsZWQpLFxcJ2FjdHVhbCBvd25lciBQb2QgY29uZmlndXJhdGlvbiBkcmlmdGVkXFwnKVxcbiAgb3duZXJzPXBvZFtcXCdtZXRhZGF0YVxcJ10uZ2V0KFxcJ293bmVyUmVmZXJlbmNlc1xcJyxbXSk7cmVxdWlyZShsZW4ob3duZXJzKT09MSBhbmQgb3duZXJzWzBdW1xcJ2tpbmRcXCddPT1cXCdSZXBsaWNhU2V0XFwnLFxcJ3BvZCBvd25lciBjaGFpbiBjaGFuZ2VkXFwnKVxcbiAgcnM9cmVhZChcXCdyZXBsaWNhc2V0XFwnLG93bmVyc1swXVtcXCduYW1lXFwnXSxcXCdpbmZvcm1lZC1kZWNpc2lvblxcJylcXG4gIHJlcXVpcmUocnNbXFwnbWV0YWRhdGFcXCddW1xcJ3VpZFxcJ109PW93bmVyc1swXVtcXCd1aWRcXCddIGFuZCBhbnkoby5nZXQoXFwndWlkXFwnKT09c2VhbGVkW1xcJ21ldGFkYXRhXFwnXVtcXCd1aWRcXCddXFxuICAgYW5kIG8uZ2V0KFxcJ2tpbmRcXCcpPT1cXCdEZXBsb3ltZW50XFwnIGZvciBvIGluIHJzW1xcJ21ldGFkYXRhXFwnXS5nZXQoXFwnb3duZXJSZWZlcmVuY2VzXFwnLFtdKSksXFwnUmVwbGljYVNldCBvd25lcnNoaXAgY2hhbmdlZFxcJylcXG4gIGlubmVyPXJcIlwiXCJcXG5pbXBvcnQgaGFzaGxpYixqc29uLG9zLHN0YXQsc3VicHJvY2VzcyxzeXNcXG5pZiBzeXMuZmxhZ3Mub3B0aW1pemU6cmFpc2UgUnVudGltZUVycm9yKFxcJ29wdGltaXplZCBpbnRlcnByZXRlciByZWZ1c2VkXFwnKVxcbmV4ZWMoX19SRUFET05MWV9fKVxcbmV4ZWMoX19TQUZFVFlfXylcXG5hY3Rpb249X19BQ1RJT05fXztkYj1cXCcvZGF0YS9wcml2YXRlL3Jldmlldy5zcWxpdGVcXCc7Zm9sZGVyPVxcJy9kYXRhL3ByaXZhdGUvemxpYjg1MDkxLXIxXFwnXFxuZGVmIHJlcXVpcmUodixyKTpcXG4gaWYgbm90IHY6cmFpc2UgVmFsdWVFcnJvcihyKVxcbnJlcXVpcmUob3MuZ2V0dWlkKCk9PTEwMDAxIGFuZCBvcy5nZXRnaWQoKT09MTAwMDEsXFwnbmF0aXZlIG93bmVyIFVJRC9HSUQgcmVxdWlyZWRcXCcpXFxuZGVmIHByaXZhdGUocCxkaXJlY3Rvcnk9RmFsc2UpOlxcbiBzPW9zLmxzdGF0KHApO3JlcXVpcmUoKHN0YXQuU19JU0RJUihzLnN0X21vZGUpIGlmIGRpcmVjdG9yeSBlbHNlIHN0YXQuU19JU1JFRyhzLnN0X21vZGUpKVxcbiAgYW5kIHMuc3RfdWlkPT0xMDAwMSBhbmQgc3RhdC5TX0lNT0RFKHMuc3RfbW9kZSk9PSgwbzcwMCBpZiBkaXJlY3RvcnkgZWxzZSAwbzYwMClcXG4gIGFuZCAoZGlyZWN0b3J5IG9yIHMuc3Rfbmxpbms9PTEpLFxcJ3ByaXZhdGUgbmF0aXZlIGN1c3RvZHkgcmVxdWlyZWRcXCcpXFxucHJpdmF0ZShcXCcvZGF0YS9wcml2YXRlXFwnLFRydWUpO3ByaXZhdGUoZGIpXFxuYmFzZWxpbmU9Y291bnRzKGluc3BlY3RfcmVhZG9ubHkoZGIpKSAjIE1VU1QgcHJlY2VkZSBhbnkgU3RvcmUvYWRtaW4gb3Blbi5cXG5pZiBhY3Rpb24gaW4gKFxcJ2RyaWxsLWJhY2t1cFxcJyxcXCdjdXRvdmVyLWJhY2t1cFxcJyk6XFxuIHNpemU9b3Muc3RhdChkYikuc3Rfc2l6ZVxcbiBpZiBvcy5wYXRoLmV4aXN0cyhkYitcXCctd2FsXFwnKTpzaXplKz1vcy5zdGF0KGRiK1xcJy13YWxcXCcpLnN0X3NpemVcXG4gdj1vcy5zdGF0dmZzKFxcJy9kYXRhL3ByaXZhdGVcXCcpO2ZyZWU9di5mX2JhdmFpbCp2LmZfZnJzaXplXFxuIHJlcXVpcmUoc2l6ZT4wIGFuZCBzaXplPD01MTIqMTAyNCoqMiBhbmQgZnJlZT49c2l6ZSooMiBpZiBhY3Rpb249PVxcJ2RyaWxsLWJhY2t1cFxcJyBlbHNlIDEpKzE2KjEwMjQqKjIsXFwnYm91bmRlZCBuYXRpdmUgc25hcHNob3QgY2FwYWNpdHkgcmVxdWlyZWRcXCcpXFxuIGlmIGFjdGlvbj09XFwnZHJpbGwtYmFja3VwXFwnOlxcbiAgcmVxdWlyZShub3Qgb3MucGF0aC5sZXhpc3RzKGZvbGRlciksXFwnbmF0aXZlIGNhc2UgZGlyZWN0b3J5IG11c3QgYmUgdW5pcXVlXFwnKVxcbiAgb3MubWtkaXIoZm9sZGVyLDBvNzAwKTtvcy5jaG1vZChmb2xkZXIsMG83MDApXFxuIHByaXZhdGUoZm9sZGVyLFRydWUpXFxuIGZpbGVuYW1lPVxcJ2RyaWxsLnNxbGl0ZVxcJyBpZiBhY3Rpb249PVxcJ2RyaWxsLWJhY2t1cFxcJyBlbHNlIFxcJ2N1dG92ZXIuc3FsaXRlXFwnO291dHB1dD1mb2xkZXIrXFwnL1xcJytmaWxlbmFtZVxcbiByZXF1aXJlKG5vdCBvcy5wYXRoLmxleGlzdHMob3V0cHV0KSxcXCdzbmFwc2hvdCBvdXRwdXQgbXVzdCBiZSB1bmlxdWVcXCcpXFxuIGFkbWluPXN1YnByb2Nlc3MucnVuKFtcXCdpbmZvcm1lZC1kZWNpc2lvbi1hZG1pblxcJyxcXCdiYWNrdXBcXCcsXFwnLS1kYlxcJyxkYixcXCctLW91dHB1dFxcJyxvdXRwdXRdLGNhcHR1cmVfb3V0cHV0PVRydWUsdGV4dD1UcnVlLHRpbWVvdXQ9MTIwKVxcbiByZXF1aXJlKGFkbWluLnJldHVybmNvZGU9PTAgYW5kIGpzb24ubG9hZHMoYWRtaW4uc3Rkb3V0KT09e1xcJ3N0YXR1c1xcJzpcXCdiYWNrZWRfdXBcXCcsXFwnY29uc2lzdGVudF9zbmFwc2hvdFxcJzpUcnVlfSxcXCdiYWNrdXAgY29tcGxldGlvbiBub3QgdmVyaWZpZWQ7IGRvIG5vdCByZXRyeVxcJylcXG4gcHJpdmF0ZShvdXRwdXQpXFxuIGZvciBzdWZmaXggaW4gKFxcJy13YWxcXCcsKTpcXG4gIHJlcXVpcmUobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dCtzdWZmaXgpIG9yIG9zLnN0YXQob3V0cHV0K3N1ZmZpeCkuc3Rfc2l6ZT09MCxcXCdzbmFwc2hvdCBoYXMgV0FMIGZyYW1lczsgaW1tdXRhYmxlIHJlYWQgcmVmdXNlZFxcJylcXG4gZGlnZXN0PWhhc2hsaWIuc2hhMjU2KClcXG4gd2l0aCBvcGVuKG91dHB1dCxcXCdyYlxcJykgYXMgc3RyZWFtOlxcbiAgZm9yIGJsb2NrIGluIGl0ZXIobGFtYmRhOnN0cmVhbS5yZWFkKDEwMjQqKjIpLGJcXCdcXCcpOmRpZ2VzdC51cGRhdGUoYmxvY2spXFxuIGZyb3plbl9kaWdlc3Q9ZGlnZXN0LmhleGRpZ2VzdCgpXFxuIHNuYXBzaG90PWNvdW50cyhpbnNwZWN0X2Nsb3NlZF9zbmFwc2hvdChvdXRwdXQsZnJvemVuX2RpZ2VzdCkpXFxuIHNpemU9b3Muc3RhdChvdXRwdXQpLnN0X3NpemU7cmVxdWlyZSgwPHNpemU8PTUxMioxMDI0KioyLFxcJ3NuYXBzaG90IG91dHNpZGUgYm91bmRlZCBjb3B5IHNpemVcXCcpXFxuIGRpZ2VzdD1oYXNobGliLnNoYTI1NigpXFxuIHdpdGggb3BlbihvdXRwdXQsXFwncmJcXCcpIGFzIHN0cmVhbTpcXG4gIGZvciBibG9jayBpbiBpdGVyKGxhbWJkYTpzdHJlYW0ucmVhZCgxMDI0KioyKSxiXFwnXFwnKTpkaWdlc3QudXBkYXRlKGJsb2NrKVxcbiBwcmludChqc29uLmR1bXBzKHtcXCdhbGxfY2hlY2tzX3Bhc3NcXCc6VHJ1ZSxcXCdzb3VyY2VfcmVhZG9ubHlfYmFzZWxpbmVcXCc6YmFzZWxpbmUsXFwnc25hcHNob3RfcmVhZG9ubHlcXCc6c25hcHNob3QsXFwnc25hcHNob3Rfc2hhMjU2XFwnOmRpZ2VzdC5oZXhkaWdlc3QoKSxcXCdzbmFwc2hvdF9ieXRlc1xcJzpzaXplLFxcJ3NuYXBzaG90X2ZpbGVcXCc6ZmlsZW5hbWUsXFwnbmF0aXZlX3BhcmVudF9wcml2YXRlXFwnOlRydWUsXFwnbmF0aXZlX3VpZFxcJzpvcy5nZXR1aWQoKX0pKVxcbmVsaWYgYWN0aW9uIGluIChcXCd2ZXJpZnlcXCcsXFwncmVsZWFzZVxcJyxcXCdyb2xsYmFjay12ZXJpZnlcXCcpOlxcbiBwcm9vZj17XFwnYWxsX2NoZWNrc19wYXNzXFwnOlRydWUsXFwnbGl2ZV9yZWFkb25seV9zY2hlbWFfaW50ZWdyaXR5X2NvdW50c1xcJzpiYXNlbGluZSxcXCdsaXZlX2NvdW50c19tYXlfaW5jbHVkZV9jb25jdXJyZW50X2NvbW1pdHNcXCc6VHJ1ZX1cXG4gaWYgYWN0aW9uPT1cXCd2ZXJpZnlcXCc6XFxuICBpbXBvcnQgdXJsbGliLnJlcXVlc3RcXG4gIG1vZHVsZT1cXCcvb3B0L3ZlbnYvbGliL3B5dGhvbjMuMTIvc2l0ZS1wYWNrYWdlcy9pbmZvcm1lZF9kZWNpc2lvbi9wb2xpY3kucHlcXCc7aW5mbz1vcy5sc3RhdChtb2R1bGUpXFxuICByZXF1aXJlKHN0YXQuU19JU1JFRyhpbmZvLnN0X21vZGUpIGFuZCBpbmZvLnN0X3VpZD09MCBhbmQgc3RhdC5TX0lNT0RFKGluZm8uc3RfbW9kZSk9PTBvNjQ0LFxcJ2luc3RhbGxlZCBwb2xpY3kgbWV0YWRhdGEgZGlmZmVyc1xcJylcXG4gIHdpdGggb3Blbihtb2R1bGUsXFwncmJcXCcpIGFzIHNvdXJjZTptb2R1bGVfZGlnZXN0PWhhc2hsaWIuc2hhMjU2KHNvdXJjZS5yZWFkKCkpLmhleGRpZ2VzdCgpXFxuICByZXF1aXJlKG1vZHVsZV9kaWdlc3Q9PVxcJzlkN2MxYmU0Y2I2MTk5ZDE0ZWYwYWFlYWQ1Zjg1OTUxZjQ1YjBjY2JkN2M4MDBhN2ZkZTkyMmEyNTM1NjZiNjJcXCcsXFwnaW5zdGFsbGVkIHNvdXJjZSBtb2R1bGUgZGlmZmVyc1xcJylcXG4gIHB1cnBvc2U9c3VicHJvY2Vzcy5ydW4oW3N5cy5leGVjdXRhYmxlLFxcJy1cXCddLGlucHV0PV9fUFVSUE9TRV9fLHRleHQ9VHJ1ZSxjYXB0dXJlX291dHB1dD1UcnVlLHRpbWVvdXQ9MzApXFxuICByZXF1aXJlKHB1cnBvc2UucmV0dXJuY29kZT09MCxcXCdpbnN0YWxsZWQgbmF0aXZlLXBsYWNlbWVudCBwdXJwb3NlIGNoZWNrcyBmYWlsZWRcXCcpXFxuICB0ZXN0ZWQ9anNvbi5sb2FkcyhwdXJwb3NlLnN0ZG91dClcXG4gIHJlcXVpcmUodGVzdGVkPT17XFwnaW5zdGFsbGVkX2ltYWdlX3B1cnBvc2VfdmFyaWFudHNcXCc6MTAsXFwnYmluZGluZ19mb3Jtc19hbGxvd2VkXFwnOjIsXFwnYWR2aXNvcnlfb3JfbWFsZm9ybWVkX3JlZnVzZWRcXCc6OCxcXCdzeW50aGV0aWNfb25seVxcJzpUcnVlLFxcJ25hdGl2ZV9wcm92aWRlclxcJzpGYWxzZX0sXFwncHVycG9zZSByZXN1bHQgZGlmZmVyc1xcJylcXG4gIGNsYXNzIE5vUmVkaXJlY3QodXJsbGliLnJlcXVlc3QuSFRUUFJlZGlyZWN0SGFuZGxlcik6XFxuICAgZGVmIHJlZGlyZWN0X3JlcXVlc3Qoc2VsZiwqYXJncywqKmt3YXJncyk6cmFpc2UgVmFsdWVFcnJvcihcXCdoZWFsdGggcmVkaXJlY3QgcmVmdXNlZFxcJylcXG4gIG9wZW5lcj11cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoTm9SZWRpcmVjdCgpKTtzdGF0dXNlcz17fVxcbiAgZm9yIHJvdXRlIGluIChcXCcvaGVhbHRoelxcJyxcXCcvcmVhZHl6XFwnKTpcXG4gICB3aXRoIG9wZW5lci5vcGVuKFxcJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MFxcJytyb3V0ZSx0aW1lb3V0PTEwKSBhcyByZXNwb25zZTpcXG4gICAgcmVxdWlyZShyZXNwb25zZS5zdGF0dXM9PTIwMCBhbmQgbGVuKHJlc3BvbnNlLnJlYWQoODE5MykpPD04MTkyLFxcJ2JvdW5kZWQgaGVhbHRoIGNoZWNrIHJlZnVzZWRcXCcpO3N0YXR1c2VzW3JvdXRlXT0yMDBcXG4gIHpsaWJfZXhwZWN0ZWQ9X19aTElCX187cmVxdWlyZSh6bGliX2V4cGVjdGVkW1xcJ3psaWJfcGFja2FnZVxcJ109PVxcJzEuMy4yLXIxXFwnLFxcJ2V4YWN0IGZpeGVkIHBhY2thZ2UgcHJvb2YgcmVxdWlyZWRcXCcpO2luc3RhbGxlZF96bGliPXt9XFxuICBmb3IgcmVsYXRpdmUsbWV0YSBpbiB6bGliX2V4cGVjdGVkW1xcJ2ZpbGVzXFwnXS5pdGVtcygpOlxcbiAgIHJlcXVpcmUocmVsYXRpdmUgaW4gKFxcJ2xpYi9hcGsvZGIvaW5zdGFsbGVkXFwnLFxcJ3Vzci9saWIvbGliei5zby4xLjMuMlxcJyksXFwnZml4ZWQgemxpYiBzb3VyY2UgcGF0aCByZXF1aXJlZFxcJylcXG4gICBwYXRoPVxcJy9cXCcrcmVsYXRpdmU7aW5mbz1vcy5sc3RhdChwYXRoKTtyZXF1aXJlKG1ldGFbMF09PVxcJ2ZpbGVcXCcgYW5kIHN0YXQuU19JU1JFRyhpbmZvLnN0X21vZGUpIGFuZCBzdGF0LlNfSU1PREUoaW5mby5zdF9tb2RlKT09bWV0YVsxXSBhbmQgaW5mby5zdF91aWQ9PW1ldGFbMl0gYW5kIGluZm8uc3RfZ2lkPT1tZXRhWzNdLFxcJ2luc3RhbGxlZCB6bGliIGZpbGUgbWV0YWRhdGEgZGlmZmVyc1xcJylcXG4gICB3aXRoIG9wZW4ocGF0aCxcXCdyYlxcJykgYXMgaGFuZGxlOmRpZ2VzdD1oYXNobGliLnNoYTI1NihoYW5kbGUucmVhZCgpKS5oZXhkaWdlc3QoKVxcbiAgIHJlcXVpcmUoZGlnZXN0PT1tZXRhWzRdLFxcJ2luc3RhbGxlZCB6bGliIGZpbGUgZGlnZXN0IGRpZmZlcnNcXCcpO2luc3RhbGxlZF96bGliW3JlbGF0aXZlXT1kaWdlc3RcXG4gIHByb29mLnVwZGF0ZShpbnN0YWxsZWRfemxpYl9maWxlcz1pbnN0YWxsZWRfemxpYix6bGliX3BhY2thZ2U9XFwnMS4zLjItcjFcXCcpXFxuICBwcm9vZi51cGRhdGUoaW5zdGFsbGVkX3B1cnBvc2VfY2hlY2tzPXRlc3RlZCxwb2xpY3lfc2hhMjU2PW1vZHVsZV9kaWdlc3QscG9saWN5X21vZGU9XFwnMDY0NFxcJyxwb2xpY3lfdWlkPTAsaGVhbHRoX3N0YXR1c2VzPXN0YXR1c2VzLG5hdGl2ZV9wcm92aWRlcl9wcm9iZT1GYWxzZSlcXG4gcHJpbnQoanNvbi5kdW1wcyhwcm9vZikpXFxuZWxpZiBhY3Rpb24gaW4gKFxcJ2RyaWxsLWNvcHlcXCcsXFwnY3V0b3Zlci1jb3B5XFwnKTpcXG4gcHJpdmF0ZShmb2xkZXIsVHJ1ZSk7ZmlsZW5hbWU9XFwnZHJpbGwuc3FsaXRlXFwnIGlmIGFjdGlvbj09XFwnZHJpbGwtY29weVxcJyBlbHNlIFxcJ2N1dG92ZXIuc3FsaXRlXFwnO291dHB1dD1mb2xkZXIrXFwnL1xcJytmaWxlbmFtZTtwcml2YXRlKG91dHB1dClcXG4gaWRlbnRpdHk9X19TTkFQU0hPVF9fO3JlcXVpcmUoaXNpbnN0YW5jZShpZGVudGl0eSxkaWN0KSBhbmQgaWRlbnRpdHkuZ2V0KFxcJ3NuYXBzaG90X2ZpbGVcXCcpPT1maWxlbmFtZSxcXCdyZWNvcmRlZCBvcmlnaW5hbCBmcm96ZW4gc25hcHNob3QgaWRlbnRpdHkgcmVxdWlyZWRcXCcpXFxuIHNuYXBzaG90PWNvdW50cyhpbnNwZWN0X2Nsb3NlZF9zbmFwc2hvdChvdXRwdXQsaWRlbnRpdHlbXFwnc25hcHNob3Rfc2hhMjU2XFwnXSkpO3NpemU9b3Muc3RhdChvdXRwdXQpLnN0X3NpemU7cmVxdWlyZShzaXplPT1pZGVudGl0eVtcXCdzbmFwc2hvdF9ieXRlc1xcJ10gYW5kIDA8c2l6ZTw9NTEyKjEwMjQqKjIsXFwnc25hcHNob3Qgc2l6ZSBvdXRzaWRlIGZyb3plbiBib3VuZFxcJylcXG4gcmVxdWlyZShzbmFwc2hvdD09aWRlbnRpdHlbXFwnc25hcHNob3RfcmVhZG9ubHlcXCddLFxcJ2Zyb3plbiBzbmFwc2hvdCBwcm9vZiBkaWZmZXJzXFwnKVxcbiBkaWdlc3Q9aGFzaGxpYi5zaGEyNTYoKVxcbiB3aXRoIG9wZW4ob3V0cHV0LFxcJ3JiXFwnKSBhcyBzdHJlYW06XFxuICBmb3IgYmxvY2sgaW4gaXRlcihsYW1iZGE6c3RyZWFtLnJlYWQoMTAyNCoqMiksYlxcJ1xcJyk6ZGlnZXN0LnVwZGF0ZShibG9jaylcXG4gcHJpbnQoanNvbi5kdW1wcyh7XFwnYWxsX2NoZWNrc19wYXNzXFwnOlRydWUsXFwnc25hcHNob3RfZmlsZVxcJzpmaWxlbmFtZSxcXCdzbmFwc2hvdF9ieXRlc1xcJzpzaXplLFxcJ3NuYXBzaG90X3NoYTI1NlxcJzpkaWdlc3QuaGV4ZGlnZXN0KCksXFwnc25hcHNob3RfcmVhZG9ubHlcXCc6c25hcHNob3R9KSlcXG5lbHNlOnJhaXNlIFZhbHVlRXJyb3IoXFwnZml4ZWQgbmF0aXZlIGJhY2t1cC92ZXJpZnkgcGhhc2UgcmVxdWlyZWRcXCcpXFxuXCJcIlwiXFxuICAjIFN0cmlwIHRoZSBDTEkgYnJhbmNoOiBleGVjIG9ubHkgdGhlIHZlcmlmaWVkIHN0ZGxpYiBmdW5jdGlvbiwgbmV2ZXIgU3RvcmUuXFxuICByZWFkb25seT1wYXlsb2FkW1xcJ3JlYWRvbmx5XFwnXS5zcGxpdChcImlmIF9fbmFtZV9fID09IFxcJ19fbWFpbl9fXFwnOlwiLDEpWzBdXFxuICBpbm5lcj1pbm5lci5yZXBsYWNlKFxcJ19fUkVBRE9OTFlfX1xcJyxyZXByKHJlYWRvbmx5KSkucmVwbGFjZShcXCdfX1NBRkVUWV9fXFwnLHJlcHIocGF5bG9hZFtcXCdyZWNlaXB0X3NhZmV0eVxcJ10pKS5yZXBsYWNlKFxcJ19fQUNUSU9OX19cXCcscmVwcihcXCdkcmlsbC1jb3B5XFwnIGlmIHBoYXNlPT1cXCdkcmlsbC1jb3B5XFwnIGVsc2UgcGhhc2UpKS5yZXBsYWNlKFxcJ19fUFVSUE9TRV9fXFwnLHJlcHIocGF5bG9hZFtcXCdwdXJwb3NlX2NoZWNrc1xcJ10pKS5yZXBsYWNlKFxcJ19fU05BUFNIT1RfX1xcJyxyZXByKHBheWxvYWQuZ2V0KFxcJ3NuYXBzaG90X2lkZW50aXR5XFwnKSkpLnJlcGxhY2UoXFwnX19aTElCX19cXCcscmVwcihwYXlsb2FkW1xcJ2luc3RhbGxlZF96bGliXFwnXSkpXFxuICBwPXJ1bihbXFwna3ViZWN0bFxcJyxcXCdleGVjXFwnLFxcJy1pXFwnLFxcJy1uXFwnLFxcJ2luZm9ybWVkLWRlY2lzaW9uXFwnLHBvZFtcXCdtZXRhZGF0YVxcJ11bXFwnbmFtZVxcJ10sXFwnLWNcXCcsXFwnaW5mb3JtZWQtZGVjaXNpb25cXCcsXFwnLS1cXCcsXFwncHl0aG9uXFwnLFxcJy1cXCddLGlubmVyLDE1MClcXG4gIHJlcXVpcmUocC5yZXR1cm5jb2RlPT0wLFxcJ25hdGl2ZSBwaGFzZSBvdXRjb21lIHVudmVyaWZpZWQ7IHJhdyBvdXRwdXQgd2l0aGhlbGQsIGRvIG5vdCByZXRyeVxcJylcXG4gIG91dGNvbWU9anNvbi5sb2FkcyhwLnN0ZG91dCk7cmVxdWlyZShvdXRjb21lLmdldChcXCdhbGxfY2hlY2tzX3Bhc3NcXCcpIGlzIFRydWUsXFwnbmF0aXZlIHBoYXNlIGdhdGUgcmVmdXNlZFxcJylcXG4gIHJlc3VsdC51cGRhdGUob3V0Y29tZSxwb2RfbmFtZT1wb2RbXFwnbWV0YWRhdGFcXCddW1xcJ25hbWVcXCddLHBvZF91aWQ9cG9kW1xcJ21ldGFkYXRhXFwnXVtcXCd1aWRcXCddKVxcbiBpZiBwaGFzZSBpbiAoXFwncmVsZWFzZVxcJyxcXCdyb2xsYmFja1xcJyk6XFxuICBub2RlX3JlYWQ9cnVuKFtcXCdrdWJlY3RsXFwnLFxcJ2dldFxcJyxcXCdub2Rlc1xcJyxcXCctb1xcJyxcXCdqc29uXFwnXSk7cmVxdWlyZShub2RlX3JlYWQucmV0dXJuY29kZT09MCxcXCdub2RlIG1ldGFkYXRhIHVuYXZhaWxhYmxlXFwnKVxcbiAgbm9kZXM9anNvbi5sb2Fkcyhub2RlX3JlYWQuc3Rkb3V0KVtcXCdpdGVtc1xcJ107cmVxdWlyZShsZW4obm9kZXMpPT0xLFxcJ29uZSB0YXJnZXQgbm9kZSByZXF1aXJlZFxcJyk7bm9kZT1ub2Rlc1swXVxcbiAgcmVxdWlyZShhbnkoYS5nZXQoXFwnYWRkcmVzc1xcJyk9PVxcJzkyLjIwNS42Mi4yMzlcXCcgZm9yIGEgaW4gbm9kZVtcXCdzdGF0dXNcXCddW1xcJ2FkZHJlc3Nlc1xcJ10pLFxcJ3RhcmdldCBub2RlIGFkZHJlc3MgY2hhbmdlZFxcJylcXG4gIGNvbmRpdGlvbnM9e2NbXFwndHlwZVxcJ106Y1tcXCdzdGF0dXNcXCddIGZvciBjIGluIG5vZGVbXFwnc3RhdHVzXFwnXVtcXCdjb25kaXRpb25zXFwnXX1cXG4gIHJlcXVpcmUoY29uZGl0aW9ucy5nZXQoXFwnUmVhZHlcXCcpPT1cXCdUcnVlXFwnIGFuZCBhbGwoY29uZGl0aW9ucy5nZXQoayk9PVxcJ0ZhbHNlXFwnIGZvciBrIGluIChcXCdNZW1vcnlQcmVzc3VyZVxcJyxcXCdEaXNrUHJlc3N1cmVcXCcsXFwnUElEUHJlc3N1cmVcXCcpKSxcXCdub2RlIHVuaGVhbHRoeSBvciBwcmVzc3VyZWRcXCcpXFxuICBkZXNjcmlwdGlvbj1ydW4oW1xcJ2t1YmVjdGxcXCcsXFwnZGVzY3JpYmVcXCcsXFwnbm9kZVxcJyxub2RlW1xcJ21ldGFkYXRhXFwnXVtcXCduYW1lXFwnXV0pO3JlcXVpcmUoZGVzY3JpcHRpb24ucmV0dXJuY29kZT09MCxcXCdoZWFkcm9vbSBjYXB0dXJlIHVuYXZhaWxhYmxlXFwnKVxcbiAgdGFibGU9ZGVzY3JpcHRpb24uc3Rkb3V0LnNwbGl0KFxcJ0FsbG9jYXRlZCByZXNvdXJjZXM6XFwnLDEpWzFdO3JlcXVlc3RlZD1pbnQocmUuc2VhcmNoKHJcXCdjcHVcXFxccysoXFxcXGQrKW1cXCcsdGFibGUpLmdyb3VwKDEpKTthbGxvYz1ub2RlW1xcJ3N0YXR1c1xcJ11bXFwnYWxsb2NhdGFibGVcXCddW1xcJ2NwdVxcJ107Y2FwYWNpdHk9aW50KGFsbG9jWzotMV0pIGlmIGFsbG9jLmVuZHN3aXRoKFxcJ21cXCcpIGVsc2UgaW50KGFsbG9jKSoxMDAwXFxuICByZXF1aXJlKHJlcXVlc3RlZDw9Y2FwYWNpdHksXFwnUmVjcmVhdGUgcmVxdWVzdGVkIENQVSBleGNlZWRzIGNhcGFjaXR5XFwnKVxcbiAgcmVxdWlyZShub3QgYXBwLmdldChcXCdvcGVyYXRpb25cXCcpIGFuZCBhcHAuZ2V0KFxcJ3N0YXR1c1xcJyx7fSkuZ2V0KFxcJ29wZXJhdGlvblN0YXRlXFwnLHt9KS5nZXQoXFwncGhhc2VcXCcpIG5vdCBpbiAoXFwnUnVubmluZ1xcJyxcXCdUZXJtaW5hdGluZ1xcJyksXFwnZXhpc3RpbmcgQXJnbyBvcGVyYXRpb24gbXVzdCBiZSBzZXR0bGVkXFwnKVxcbiAgZGVzdGluYXRpb249cGF5bG9hZFtcXCdzb3VyY2VfcmV2aXNpb25cXCddIGlmIHBoYXNlPT1cXCdyZWxlYXNlXFwnIGVsc2UgXFwnYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMlxcJ1xcbiAgYm9keT1jb3B5LmRlZXBjb3B5KHBheWxvYWRbXFwnY2FuZGlkYXRlXFwnXSBpZiBwaGFzZT09XFwncmVsZWFzZVxcJyBlbHNlIHBheWxvYWRbXFwncm9sbGJhY2tcXCddKVxcbiAgZHJ5PXJ1bihbXFwna3ViZWN0bFxcJyxcXCdhcHBseVxcJyxcXCctLWRyeS1ydW49c2VydmVyXFwnLFxcJy1mXFwnLFxcJy1cXCcsXFwnLW9cXCcsXFwnanNvblxcJ10sanNvbi5kdW1wcyhib2R5KSlcXG4gIHJlcXVpcmUoZHJ5LnJldHVybmNvZGU9PTAsXFwnZnJlc2ggb3duZXIgc2VydmVyIGFkbWlzc2lvbiByZWZ1c2VkXFwnKVxcbiAgYWRtaXR0ZWQ9anNvbi5sb2Fkcyhkcnkuc3Rkb3V0KTt3YW50ZWQ9Y29weS5kZWVwY29weShzZWFsZWQpXFxuICB3YW50ZWRbXFwnc3BlY1xcJ11bXFwndGVtcGxhdGVcXCddW1xcJ3NwZWNcXCddW1xcJ2NvbnRhaW5lcnNcXCddWzBdW1xcJ2ltYWdlXFwnXT1DQU5ESURBVEUgaWYgcGhhc2U9PVxcJ3JlbGVhc2VcXCcgZWxzZSBCQVNFXFxuICByZXF1aXJlKHByb2plY3Rpb24oYWRtaXR0ZWQpPT13YW50ZWQsXFwnZHJ5LXJ1biBjaGFuZ2VkIGFueXRoaW5nIGJleW9uZCBleGFjdCBpbWFnZVxcJylcXG4gIGRpZmY9cnVuKFtcXCdrdWJlY3RsXFwnLFxcJ2RpZmZcXCcsXFwnLWZcXCcsXFwnLVxcJ10sanNvbi5kdW1wcyhib2R5KSk7cmVxdWlyZShkaWZmLnJldHVybmNvZGUgaW4gKDAsMSksXFwnY2xpZW50IGRpZmYgdW5hdmFpbGFibGVcXCcpXFxuICBvcGVyYXRpb249e1xcJ2luaXRpYXRlZEJ5XFwnOntcXCd1c2VybmFtZVxcJzpcXCdjdXN0b2RpYW4tY29kZXhcXCd9LFxcJ3N5bmNcXCc6e1xcJ3JldmlzaW9uXFwnOmRlc3RpbmF0aW9uLFxcJ3BydW5lXFwnOkZhbHNlLFxcbiAgIFxcJ3Jlc291cmNlc1xcJzpbe1xcJ2dyb3VwXFwnOlxcJ2FwcHNcXCcsXFwna2luZFxcJzpcXCdEZXBsb3ltZW50XFwnLFxcJ25hbWVcXCc6XFwnaW5mb3JtZWQtZGVjaXNpb25cXCcsXFwnbmFtZXNwYWNlXFwnOlxcJ2luZm9ybWVkLWRlY2lzaW9uXFwnfV19fVxcbiAgcGF0Y2g9W3tcXCdvcFxcJzpcXCd0ZXN0XFwnLFxcJ3BhdGhcXCc6XFwnL21ldGFkYXRhL3VpZFxcJyxcXCd2YWx1ZVxcJzphcHBbXFwnbWV0YWRhdGFcXCddW1xcJ3VpZFxcJ119LFxcbiAgIHtcXCdvcFxcJzpcXCd0ZXN0XFwnLFxcJ3BhdGhcXCc6XFwnL21ldGFkYXRhL3Jlc291cmNlVmVyc2lvblxcJyxcXCd2YWx1ZVxcJzphcHBbXFwnbWV0YWRhdGFcXCddW1xcJ3Jlc291cmNlVmVyc2lvblxcJ119LFxcbiAgIHtcXCdvcFxcJzpcXCd0ZXN0XFwnLFxcJ3BhdGhcXCc6XFwnL3NwZWMvc291cmNlL3RhcmdldFJldmlzaW9uXFwnLFxcJ3ZhbHVlXFwnOmFwcFtcXCdzcGVjXFwnXVtcXCdzb3VyY2VcXCddW1xcJ3RhcmdldFJldmlzaW9uXFwnXX0sXFxuICAge1xcJ29wXFwnOlxcJ3JlcGxhY2VcXCcsXFwncGF0aFxcJzpcXCcvc3BlYy9zb3VyY2UvdGFyZ2V0UmV2aXNpb25cXCcsXFwndmFsdWVcXCc6ZGVzdGluYXRpb259LFxcbiAgIHtcXCdvcFxcJzpcXCdhZGRcXCcsXFwncGF0aFxcJzpcXCcvb3BlcmF0aW9uXFwnLFxcJ3ZhbHVlXFwnOm9wZXJhdGlvbn1dXFxuICBhcmd2PVtcXCdrdWJlY3RsXFwnLFxcJ3BhdGNoXFwnLFxcJ2FwcGxpY2F0aW9uXFwnLFxcJ2luZm9ybWVkLWRlY2lzaW9uXFwnLFxcJy1uXFwnLFxcJ2FyZ29jZFxcJyxcXCctLXR5cGU9anNvblxcJyxcXCctLXBhdGNoLWZpbGU9L2Rldi9zdGRpblxcJyxcXCctb1xcJyxcXCduYW1lXFwnXVxcbiAgcGF0Y2hkcnk9cnVuKGFyZ3YrW1xcJy0tZHJ5LXJ1bj1zZXJ2ZXJcXCddLGpzb24uZHVtcHMocGF0Y2gpKTtyZXF1aXJlKHBhdGNoZHJ5LnJldHVybmNvZGU9PTAsXFwnQXBwbGljYXRpb24gb3BlcmF0aW9uIGRyeS1ydW4gcmVmdXNlZFxcJylcXG4gIGNoYW5nZT1ydW4oYXJndixqc29uLmR1bXBzKHBhdGNoKSlcXG4gIHJlcXVpcmUoY2hhbmdlLnJldHVybmNvZGU9PTAsXFwnQXBwbGljYXRpb24gcGF0Y2ggb3V0Y29tZSBhbWJpZ3VvdXM7IGRvIG5vdCByZXRyeVxcJylcXG4gIHJlc3VsdC51cGRhdGUoYWxsX2NoZWNrc19wYXNzPVRydWUsb3BlcmF0aW9uX3JlcXVlc3RlZD1UcnVlLHNvdXJjZV9yZXZpc2lvbj1kZXN0aW5hdGlvbixcXG4gICByZXNvdXJjZXM9b3BlcmF0aW9uW1xcJ3N5bmNcXCddW1xcJ3Jlc291cmNlc1xcJ10scHJ1bmU9RmFsc2Uscm9sbG91dF92ZXJpZmllZD1GYWxzZSxcXG4gICBsYXRlc3RfbGl2ZV9kYXRhYmFzZV9yZXRhaW5lZD1UcnVlLGNsaWVudF9kaWZmX3NoYTI1Nj1oYXNobGliLnNoYTI1NihkaWZmLnN0ZG91dC5lbmNvZGUoKSkuaGV4ZGlnZXN0KCkpXFxuIGlmIHBoYXNlIGluIChcXCd2ZXJpZnlcXCcsXFwncm9sbGJhY2stdmVyaWZ5XFwnKTpcXG4gIG9wPWFwcC5nZXQoXFwnc3RhdHVzXFwnLHt9KS5nZXQoXFwnb3BlcmF0aW9uU3RhdGVcXCcse30pO3N5bmM9b3AuZ2V0KFxcJ29wZXJhdGlvblxcJyx7fSkuZ2V0KFxcJ3N5bmNcXCcse30pXFxuICBpbnRlbnQ9cGF5bG9hZC5nZXQoXFwnb3BlcmF0aW9uX2ludGVudFxcJyk7cmVxdWlyZShpc2luc3RhbmNlKGludGVudCxkaWN0KSBhbmQgaW50ZW50LmdldChcXCdzdGF0ZVxcJyk9PVxcJ0NPTVBMRVRFXFwnLFxcJ3ZlcmlmaWVkIG1hdGNoaW5nIG9wZXJhdGlvbiBpbnRlbnQgcmVxdWlyZWRcXCcpXFxuICByZXF1ZXN0PWludGVudC5nZXQoXFwncmVzdWx0XFwnLHt9KTtyZXF1aXJlKHJlcXVlc3QuZ2V0KFxcJ29wZXJhdGlvbl9yZXF1ZXN0ZWRcXCcpIGlzIFRydWUgYW5kIHJlcXVlc3QuZ2V0KFxcJ3BydW5lXFwnKSBpcyBGYWxzZSBhbmQgcmVxdWVzdC5nZXQoXFwnc291cmNlX3JldmlzaW9uXFwnKT09dGFyZ2V0LFxcJ3JlY29yZGVkIHJlcXVlc3QgbXVzdCBleHBsaWNpdGx5IGRpc2FibGUgcHJ1bmVcXCcpXFxuICBzdGFydGVkPWRhdGV0aW1lLmRhdGV0aW1lLmZyb21pc29mb3JtYXQoaW50ZW50W1xcJ3N0YXJ0ZWRfYXRcXCddKTtmaW5pc2hlZD1kYXRldGltZS5kYXRldGltZS5mcm9taXNvZm9ybWF0KG9wLmdldChcXCdmaW5pc2hlZEF0XFwnLFxcJ1xcJykucmVwbGFjZShcXCdaXFwnLFxcJyswMDowMFxcJykpO29ic2VydmVkX3N0YXJ0PWRhdGV0aW1lLmRhdGV0aW1lLmZyb21pc29mb3JtYXQob3AuZ2V0KFxcJ3N0YXJ0ZWRBdFxcJyxcXCdcXCcpLnJlcGxhY2UoXFwnWlxcJyxcXCcrMDA6MDBcXCcpKVxcbiAgcmVxdWlyZShzdGFydGVkLnR6aW5mbyBpcyBub3QgTm9uZSBhbmQgb2JzZXJ2ZWRfc3RhcnQudHppbmZvIGlzIG5vdCBOb25lIGFuZCBmaW5pc2hlZC50emluZm8gaXMgbm90IE5vbmUgYW5kIHN0YXJ0ZWQ8PW9ic2VydmVkX3N0YXJ0PD1maW5pc2hlZCxcXCdvcGVyYXRpb24gY29tcGxldGlvbiBpcyBub3QgZnJvbSB0aGlzIGF0dGVtcHRcXCcpXFxuICByZXF1aXJlKG9wLmdldChcXCdwaGFzZVxcJyk9PVxcJ1N1Y2NlZWRlZFxcJyBhbmQgc3luYy5nZXQoXFwncmV2aXNpb25cXCcpPT10YXJnZXQgYW5kIChcXCdwcnVuZVxcJyBub3QgaW4gc3luYyBvciBzeW5jW1xcJ3BydW5lXFwnXSBpcyBGYWxzZSlcXG4gICBhbmQgb3AuZ2V0KFxcJ29wZXJhdGlvblxcJyx7fSkuZ2V0KFxcJ2luaXRpYXRlZEJ5XFwnKT09e1xcJ3VzZXJuYW1lXFwnOlxcJ2N1c3RvZGlhbi1jb2RleFxcJ31cXG4gICBhbmQgc3luYy5nZXQoXFwncmVzb3VyY2VzXFwnKT09cmVxdWVzdC5nZXQoXFwncmVzb3VyY2VzXFwnKT09W3tcXCdncm91cFxcJzpcXCdhcHBzXFwnLFxcJ2tpbmRcXCc6XFwnRGVwbG95bWVudFxcJyxcXCduYW1lXFwnOlxcJ2luZm9ybWVkLWRlY2lzaW9uXFwnLFxcJ25hbWVzcGFjZVxcJzpcXCdpbmZvcm1lZC1kZWNpc2lvblxcJ31dLFxcJ2V4YWN0IG5hdGl2ZSBBcmdvIG9wZXJhdGlvbiBjb21wbGV0aW9uIHVudmVyaWZpZWRcXCcpXFxuICBzeW5jZWQ9b3AuZ2V0KFxcJ3N5bmNSZXN1bHRcXCcse30pO3JlcXVpcmUoc3luY2VkLmdldChcXCdyZXZpc2lvblxcJyk9PXRhcmdldCBhbmQgbGVuKHN5bmNlZC5nZXQoXFwncmVzb3VyY2VzXFwnLFtdKSk9PTEsXFwnbWF0Y2hpbmcgc2luZ2xlLW9iamVjdCBzeW5jIHJlc3VsdCByZXF1aXJlZFxcJylcXG4gIHJlc291cmNlPXN5bmNlZFtcXCdyZXNvdXJjZXNcXCddWzBdO3JlcXVpcmUoYWxsKHJlc291cmNlLmdldChrKT09diBmb3Igayx2IGluIHJlcXVlc3RbXFwncmVzb3VyY2VzXFwnXVswXS5pdGVtcygpKSBhbmQgcmVzb3VyY2UuZ2V0KFxcJ3N0YXR1c1xcJyk9PVxcJ1N5bmNlZFxcJyxcXCdleGFjdCBEZXBsb3ltZW50IHN5bmMgcmVzdWx0IHJlcXVpcmVkXFwnKVxcbiAgcmVxdWlyZShsaXZlW1xcJ3N0YXR1c1xcJ10uZ2V0KFxcJ29ic2VydmVkR2VuZXJhdGlvblxcJyk9PWxpdmVbXFwnbWV0YWRhdGFcXCddW1xcJ2dlbmVyYXRpb25cXCddLFxcJ2NvbnRyb2xsZXIgZ2VuZXJhdGlvbiBub3Qgc2V0dGxlZFxcJylcXG4gIHJlc3VsdC51cGRhdGUobmF0aXZlX3JvbGxvdXRfdmVyaWZpZWQ9VHJ1ZSxjdXJyZW50X3NjaGVtYTVfZGF0YWJhc2VfcmV0YWluZWQ9VHJ1ZSxyZWNvdmVyeV92ZXJpZmljYXRpb249cGhhc2U9PVxcJ3JvbGxiYWNrLXZlcmlmeVxcJylcXG5leGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlcnJvcjpcXG4gcmVzdWx0LnVwZGF0ZShhbGxfY2hlY2tzX3Bhc3M9RmFsc2UsZmFpbHVyZV9jbGFzcz10eXBlKGVycm9yKS5fX25hbWVfXyxcXG4gIGZhaWx1cmU9XFwnZml4ZWQgcGhhc2Ugb3V0Y29tZSByZWZ1c2VkIG9yIGFtYmlndW91czsgcmF3IG91dHB1dCB3aXRoaGVsZDsgbm8gcmV0cnlcXCcpXFxucHJpbnQoanNvbi5kdW1wcyhyZXN1bHQpKTtzeXMuZXhpdCgwIGlmIHJlc3VsdC5nZXQoXFwnYWxsX2NoZWNrc19wYXNzXFwnKSBpcyBUcnVlIGVsc2UgMSlcXG4nXG4iCiAgICB9LAogICAgImV4ZWN1dGlvbi9yZWNlaXB0X3NhZmV0eS5weSI6IHsKICAgICAgInNoYTI1NiI6ICI1YzU0MzczZjJkYzRiMDY0MDA4MjI1YzE4NmVmYjFkNWFmZGVlYzM2ZDE1MzUwYmRhMGExMmRlZDk3NjAyZDFiIiwKICAgICAgImNvbnRlbnQiOiAiXCJcIlwiT25seSBzdHJ1Y3R1cmFsIGNvdW50L2hhc2ggcmVjZWlwdHMgY2FuIGxlYXZlIHRoZSBwcml2YXRlIGV4ZWN1dGlvbiBwaGFzZS5cIlwiXCJcbmRlZiBjb3VudHModmFsdWUpOlxuICAgIGlmIChzZXQodmFsdWUpICE9IHsnc2NoZW1hX3ZlcnNpb24nLCAnbGlmZWN5Y2xlJywgJ291dGJveCcsICdzdWJtaXNzaW9ucycsICdpbnRlZ3JpdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAncmVhZF9vbmx5X3ByZV9vcGVuJywgJ3N0b3JlX2NvbnN0cnVjdGVkJ31cbiAgICAgICAgICAgIG9yIHZhbHVlWydzY2hlbWFfdmVyc2lvbiddICE9IDUgb3IgdmFsdWVbJ2ludGVncml0eSddICE9ICdvaydcbiAgICAgICAgICAgIG9yIHZhbHVlWydyZWFkX29ubHlfcHJlX29wZW4nXSBpcyBub3QgVHJ1ZSBvciB2YWx1ZVsnc3RvcmVfY29uc3RydWN0ZWQnXSBpcyBub3QgRmFsc2VcbiAgICAgICAgICAgIG9yIHNldCh2YWx1ZVsnbGlmZWN5Y2xlJ10pICE9IHsncmVjb3JkcycsICdldmVudHMnLCAncGVuZGluZyd9XG4gICAgICAgICAgICBvciBub3Qgc2V0KHZhbHVlWydvdXRib3gnXSkgPD0geydwZW5kaW5nJywgJ2RlbGl2ZXJlZCcsICdibG9ja2VkJ31cbiAgICAgICAgICAgIG9yIG5vdCBzZXQodmFsdWVbJ3N1Ym1pc3Npb25zJ10pIDw9IHsncHJlcGFyZWQnLCAnaW5fZmxpZ2h0JywgJ2NvbmZpcm1lZCcsICd1bnJlc29sdmVkJ30pOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb3VudC1vbmx5IHJlY2VpcHQgc2hhcGUvc3RhdGUgcmVmdXNlZDsgdmFsdWVzIHdpdGhoZWxkJylcbiAgICBmb3IgZ3JvdXAgaW4gKCdsaWZlY3ljbGUnLCAnb3V0Ym94JywgJ3N1Ym1pc3Npb25zJyk6XG4gICAgICAgIGlmIGFueSh0eXBlKG51bWJlcikgaXMgbm90IGludCBvciBudW1iZXIgPCAwIG9yIG51bWJlciA+IDEwKioxMlxuICAgICAgICAgICAgICAgZm9yIG51bWJlciBpbiB2YWx1ZVtncm91cF0udmFsdWVzKCkpOlxuICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY291bnQtb25seSByZWNlaXB0IHZhbHVlcyByZWZ1c2VkJylcbiAgICByZXR1cm4gdmFsdWVcbiIKICAgIH0sCiAgICAiZXhlY3V0aW9uL3Rlc3RfZXhlY3V0aW9uLnB5IjogewogICAgICAic2hhMjU2IjogIjc0NTgyMjIwNDlkOGRmMmYwMWYyY2UzNTliNTg2NGFlNDFjZDczMDU0ZWU1OTY1OWNhOGNkOGFjMTdjZjczYWMiLAogICAgICAiY29udGVudCI6ICJcIlwiXCJTeW50aGV0aWMgY3VzdG9keS90cmFuc3BvcnQgdGVzdHMuIE5vIG5hdGl2ZSBkYXRhLCBEb2NrZXIgb3IgY2x1c3RlciBhY3Rpb24uXCJcIlwiXG5pbXBvcnQgY29weVxuaW1wb3J0IGRhdGV0aW1lXG5pbXBvcnQgaW9cbmltcG9ydCBqc29uXG5pbXBvcnQgb3NcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuaW1wb3J0IHN1YnByb2Nlc3NcbmltcG9ydCBzeXNcbmltcG9ydCB0ZW1wZmlsZVxuaW1wb3J0IHVuaXR0ZXN0XG5mcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoXG5mcm9tIGNvbnRleHRsaWIgaW1wb3J0IHJlZGlyZWN0X3N0ZG91dFxuXG5pbXBvcnQgYWN0dWF0b3JcbmZyb20gYXV0aG9yaXR5X2pvdXJuYWwgaW1wb3J0IEpvdXJuYWwsIGF1dGhvcml0eSwgZnJlc2hfc2NhblxuZnJvbSBuYXRpdmVfcHJvZ3JhbSBpbXBvcnQgUFJPR1JBTVxuZnJvbSByZWNlaXB0X3NhZmV0eSBpbXBvcnQgY291bnRzXG5cbkNBU0UgPSBQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50LnBhcmVudFxuTk9XID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAyNiwgMTAsIDExLCAyLCAwLCB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKVxuUkVWSVNJT04gPSAnZScgKiA0MFxuQ09VTlQgPSB7J3NjaGVtYV92ZXJzaW9uJzogNSwgJ2ludGVncml0eSc6ICdvaycsICdyZWFkX29ubHlfcHJlX29wZW4nOiBUcnVlLCAnc3RvcmVfY29uc3RydWN0ZWQnOiBGYWxzZSxcbiAgICAgICAgICdsaWZlY3ljbGUnOiB7J3JlY29yZHMnOiAzLCAnZXZlbnRzJzogOCwgJ3BlbmRpbmcnOiAxfSxcbiAgICAgICAgICdvdXRib3gnOiB7J3BlbmRpbmcnOiAyLCAnZGVsaXZlcmVkJzogMTB9LCAnc3VibWlzc2lvbnMnOiB7J2NvbmZpcm1lZCc6IDEsICd1bnJlc29sdmVkJzogMX19XG5cblxuZGVmIGFjY2VwdGVkKCk6XG4gICAgYXBwcm92YWwgPSAnMTExMTExMTEtMTExMS00MTExLTgxMTEtMTExMTExMTExMTExJ1xuICAgIHJldmlldyA9ICdyZXZpZXctMjIyMjIyMjItMjIyMi00MjIyLTgyMjItMjIyMjIyMjIyMjIyJ1xuICAgIGRpc3Bvc2l0aW9uID0gJ2Rpc3AtMzMzMzMzMzMtMzMzMy00MzMzLTgzMzMtMzMzMzMzMzMzMzMzJ1xuICAgIHJlY2VpcHQgPSB7J3Byb3Bvc2FsX2lkJzogJ0lORkQtV1AtMDAwOS1UMDUvemxpYjg1MDkxLXIxJyxcbiAgICAgICAgICAgICAgICdtZW1vX2lkJzogJ2luZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMScsICdtZW1vX3ZlcnNpb24nOiAxLFxuICAgICAgICAgICAgICAgJ21lbW9fc2hhMjU2JzogJ2EnICogNjQsICdzb3VyY2VfcmV2aXNpb24nOiBSRVZJU0lPTiwgJ2FjdGl2YXRpb24nOiAnQVBQUk9WRUQnLFxuICAgICAgICAgICAgICAgJ2F1dGhvcml0eV9tb2RlJzogJ0FETUlOSVNURVInLCAndGFyZ2V0JzogJ3JlYWxtOmt1YmVybmV0ZXMvcmFpbGlhbmNlMDEvaW5mb3JtZWQtZGVjaXNpb24nLFxuICAgICAgICAgICAgICAgJ3ZlcmlmaWNhdGlvbl9tZXRob2QnOiAncm9vdC1maXhlZC1vcmlnaW4tbmF0aXZlLXJlYWRiYWNrJywgJ3J1bnRpbWVfYXV0aGVudGljYXRlZF9ncmFudCc6IEZhbHNlLCAnb3V0Y29tZV9xdWVyeSc6ICcvbGlmZWN5Y2xlL21lbW9zL2luZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMS9vdXRjb21lcz92ZXJzaW9uPTEnLFxuICAgICAgICAgICAgICAgJ3ZlcmlmaWVkX2F0JzogJzIwMjYtMTAtMTFUMDI6MDA6MDBaJywgJ2FjY2VwdGVkX2F0JzogJzIwMjYtMTAtMTFUMDE6NTk6MDBaJyxcbiAgICAgICAgICAgICAgICdyZXZpZXdfbWVtb19pZCc6IHJldmlldywgJ2FwcHJvdmFsX2lkJzogYXBwcm92YWwsICdkaXNwb3NpdGlvbl9pZCc6IGRpc3Bvc2l0aW9ufVxuICAgIG91dGNvbWUgPSB7J21lbW9faWQnOiByZWNlaXB0WydtZW1vX2lkJ10sICdyZXZpZXcnOiB7J21lbW9faWQnOiByZXZpZXcsICdzdGFsZSc6IEZhbHNlLCAnaW50YWtlX3N0YXRlJzogJ3JlYWR5J30sXG4gICAgICAgICAgICAgICAnZGlzcG9zaXRpb25zJzogW3snYXBwcm92YWxfaWQnOiBOb25lLCAnc3VibWlzc2lvbl9zdGF0ZSc6ICdjb25maXJtZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3Bvc2l0aW9uJzogeyd2ZXJiJzogJ2FjY2VwdCcsICdtZW1vX3ZlcnNpb24nOiAxLCAnbWVtb19pZCc6IHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwcm92YWxfaWQnOiBhcHByb3ZhbCwgJ2lkJzogZGlzcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdG9yJzogeydraW5kJzogJ3BlcnNvbicsICdzdWInOiAndWlkPXBsYXRmb3JtLXJvb3Qsb3U9cGVvcGxlLGRjPW5ldGtpbmdkb20sZGM9bG9jYWwnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQnOiByZWNlaXB0WydhY2NlcHRlZF9hdCddfX1dfVxuICAgIHJldHVybiByZWNlaXB0LCBvdXRjb21lXG5cblxuY2xhc3MgQXV0aG9yaXR5QW5kQ3VzdG9keSh1bml0dGVzdC5UZXN0Q2FzZSk6XG4gICAgZGVmIHRlc3RfZXhhY3RfbmVzdGVkX2ZvdW5kZXJfcmVjZWlwdF9ub3RfdG9wX2xldmVsX2FwcHJvdmFsKHNlbGYpOlxuICAgICAgICByZWNlaXB0LCBvdXRjb21lID0gYWNjZXB0ZWQoKVxuICAgICAgICByZXN1bHQgPSBhdXRob3JpdHkocmVjZWlwdCwgb3V0Y29tZSwgJ2EnICogNjQsIFJFVklTSU9OLCAnZHJpbGwtY29weScsIE5PVylcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbJ2FwcHJvdmFsX2lkJ10sIHJlY2VpcHRbJ2FwcHJvdmFsX2lkJ10pXG5cbiAgICBkZWYgdGVzdF9wZW5kaW5nX3N0YWxlX3dyb25nX2FjdG9yX3ZlcnNpb25fYW5kX2JpbmRpbmdfcmVmdXNlKHNlbGYpOlxuICAgICAgICBtdXRhdGlvbnMgPSBbbGFtYmRhIHIsIG86IHIudXBkYXRlKGFjdGl2YXRpb249J1BFTkRJTkcnKSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBvOiByLnVwZGF0ZShtZW1vX3NoYTI1Nj0nY2hhbmdlZCcpLFxuICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHIsIG86IHIudXBkYXRlKHNvdXJjZV9yZXZpc2lvbj0nY2hhbmdlZCcpLFxuICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHIsIG86IHIudXBkYXRlKHRhcmdldD0nb3RoZXInKSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBvOiByLnVwZGF0ZSh2ZXJpZmllZF9hdD0nMjAyNi0xMC0xMVQwMTowMDowMFonKSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBvOiByLnVwZGF0ZSh2ZXJpZmljYXRpb25fbWV0aG9kPSdjYWxsZXItYXNzZXJ0ZWQnKSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBvOiByLnVwZGF0ZShydW50aW1lX2F1dGhlbnRpY2F0ZWRfZ3JhbnQ9VHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgICBsYW1iZGEgciwgbzogb1sncmV2aWV3J10udXBkYXRlKHN0YWxlPVRydWUpLFxuICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHIsIG86IG9bJ3JldmlldyddLnVwZGF0ZShpbnRha2Vfc3RhdGU9J3BlbmRpbmcnKSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBvOiBvWydkaXNwb3NpdGlvbnMnXVswXS51cGRhdGUoc3VibWlzc2lvbl9zdGF0ZT0ndW5yZXNvbHZlZCcpLFxuICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHIsIG86IG9bJ2Rpc3Bvc2l0aW9ucyddWzBdWydkaXNwb3NpdGlvbiddLnVwZGF0ZShtZW1vX3ZlcnNpb249MyksXG4gICAgICAgICAgICAgICAgICAgICBsYW1iZGEgciwgbzogb1snZGlzcG9zaXRpb25zJ11bMF1bJ2Rpc3Bvc2l0aW9uJ10udXBkYXRlKGFjdG9yPXsna2luZCc6ICdhZ2VudCcsICdzdWInOiAncGxhdGZvcm0tcm9vdCd9KSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBvOiBvWydkaXNwb3NpdGlvbnMnXS5hcHBlbmQoY29weS5kZWVwY29weShvWydkaXNwb3NpdGlvbnMnXVswXSkpXVxuICAgICAgICBmb3IgbXV0YXRlIGluIG11dGF0aW9uczpcbiAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG11dGF0ZT1tdXRhdGUpOlxuICAgICAgICAgICAgICAgIHIsIG8gPSBhY2NlcHRlZCgpXG4gICAgICAgICAgICAgICAgbXV0YXRlKHIsIG8pXG4gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKTpcbiAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5KHIsIG8sICdhJyAqIDY0LCBSRVZJU0lPTiwgJ3JlbGVhc2UnLCBOT1cpXG5cbiAgICBkZWYgdGVzdF9leHBpcmVkX3dpbmRvd19hbmRfdW5rbm93bl9waGFzZV9yZWZ1c2Uoc2VsZik6XG4gICAgICAgIHIsIG8gPSBhY2NlcHRlZCgpXG4gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6XG4gICAgICAgICAgICBhdXRob3JpdHkociwgbywgJ2EnICogNjQsIFJFVklTSU9OLCAnYXJiaXRyYXJ5JywgTk9XKVxuICAgICAgICBsYXRlID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAyNiwgMTAsIDEzLCB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKVxuICAgICAgICByWyd2ZXJpZmllZF9hdCddID0gbGF0ZS5pc29mb3JtYXQoKVxuICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOlxuICAgICAgICAgICAgYXV0aG9yaXR5KHIsIG8sICdhJyAqIDY0LCBSRVZJU0lPTiwgJ3JvbGxiYWNrJywgbGF0ZSlcblxuICAgIGRlZiB0ZXN0X2R1cmFibGVfaW50ZW50X3ByZWNlZGVzX2Rpc3BhdGNoX2FuZF9uZXZlcl9yZXRyaWVzKHNlbGYpOlxuICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIGRpcmVjdG9yeTpcbiAgICAgICAgICAgIHBhcmVudCA9IFBhdGgoZGlyZWN0b3J5KVxuICAgICAgICAgICAgb3MuY2htb2QocGFyZW50LCAwbzcwMClcbiAgICAgICAgICAgIGpvdXJuYWwgPSBKb3VybmFsKHBhcmVudCwgeydjYXNlJzogJ2ZpeHR1cmUnfSlcbiAgICAgICAgICAgIGpvdXJuYWwuc3RhcnQoJ2RyaWxsLWJhY2t1cCcsIHsnYXBwcm92YWxfaWQnOiAnZml4dHVyZSd9KVxuICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKGpvdXJuYWwucGF0aC5yZWFkX3RleHQoKSlbJ3BoYXNlcyddWydkcmlsbC1iYWNrdXAnXVsnc3RhdGUnXSwgJ1JVTk5JTkcnKVxuICAgICAgICAgICAgam91cm5hbC5jbG9zZSgpICAjIHNpbXVsYXRlZCBjcmFzaCBiZWZvcmUgcmVzdWx0XG4gICAgICAgICAgICByZWNvdmVyZWQgPSBKb3VybmFsKHBhcmVudCwgeydjYXNlJzogJ2ZpeHR1cmUnfSlcbiAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6XG4gICAgICAgICAgICAgICAgcmVjb3ZlcmVkLnN0YXJ0KCdkcmlsbC1iYWNrdXAnLCB7fSlcbiAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6XG4gICAgICAgICAgICAgICAgcmVjb3ZlcmVkLnN0YXJ0KCdkcmlsbC1iYWNrdXAnLCB7fSlcbiAgICAgICAgICAgIHJlY292ZXJlZC5jbG9zZSgpXG5cbiAgICBkZWYgdGVzdF9waGFzZV9vcmRlcl9hbmRfdW5jZXJ0YWluX3JlbGVhc2VfYWxsb3dzX29ubHlfZGlzdGluY3RfcmVjb3Zlcnkoc2VsZik6XG4gICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgZGlyZWN0b3J5OlxuICAgICAgICAgICAgb3MuY2htb2QoZGlyZWN0b3J5LCAwbzcwMClcbiAgICAgICAgICAgIGogPSBKb3VybmFsKGRpcmVjdG9yeSwgeydjYXNlJzogJ2ZpeHR1cmUnfSlcbiAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6XG4gICAgICAgICAgICAgICAgai5zdGFydCgncmVsZWFzZScsIHt9KVxuICAgICAgICAgICAgZm9yIHBoYXNlIGluIGFjdHVhdG9yLlBIQVNFU1s6Nl06XG4gICAgICAgICAgICAgICAgai5zdGFydChwaGFzZSwge30pXG4gICAgICAgICAgICAgICAgai5maW5pc2gocGhhc2UsIHsnYWxsX2NoZWNrc19wYXNzJzogVHJ1ZX0pXG4gICAgICAgICAgICBqLnN0YXJ0KCdyZWxlYXNlJywge30pXG4gICAgICAgICAgICBqLmZpbmlzaCgncmVsZWFzZScsIHsnYWxsX2NoZWNrc19wYXNzJzogRmFsc2V9KVxuICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKTpcbiAgICAgICAgICAgICAgICBqLnN0YXJ0KCdyZWxlYXNlJywge30pXG4gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOlxuICAgICAgICAgICAgICAgIGouc3RhcnQoJ3ZlcmlmeScsIHt9KVxuICAgICAgICAgICAgai5zdGFydCgncm9sbGJhY2snLCB7fSlcbiAgICAgICAgICAgIGouZmluaXNoKCdyb2xsYmFjaycsIHsnYWxsX2NoZWNrc19wYXNzJzogVHJ1ZX0pXG4gICAgICAgICAgICBqLmNsb3NlKClcblxuICAgIGRlZiB0ZXN0X3NlY3JldF9vcl91bmtub3duX2NoaWxkX291dHB1dF9pc193aXRoaGVsZChzZWxmKTpcbiAgICAgICAgZm9yIGJvZHkgaW4gKCdub3QtanNvbicsICd7XCJhbGxfY2hlY2tzX3Bhc3NcIjp0cnVlLFwidG9rZW5cIjpcInByaXZhdGUtdmFsdWVcIn0nLFxuICAgICAgICAgICAgICAgICAgICAgJ3tcImFsbF9jaGVja3NfcGFzc1wiOnRydWUsXCJzbmFwc2hvdF9yZWFkb25seVwiOntcInNjaGVtYV92ZXJzaW9uXCI6NX19Jyk6XG4gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOlxuICAgICAgICAgICAgICAgIGFjdHVhdG9yLmpzb25fcmVzdWx0KHN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2VzcyhbXSwgMCwgYm9keSwgJycpKVxuICAgICAgICB3cm9uZyA9IGNvcHkuZGVlcGNvcHkoQ09VTlQpXG4gICAgICAgIHdyb25nWydvdXRib3gnXSA9IHsncHJpdmF0ZS1yb3ctdmFsdWUnOiAxfVxuICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOlxuICAgICAgICAgICAgY291bnRzKHdyb25nKVxuICAgICAgICBjb3VudHMoQ09VTlQpICAjIGJsb2NrZWQvdW5yZXNvbHZlZCBjb3VudHMgYXJlIG5vdCByZXF1aXJlZCB0byBiZSB6ZXJvLlxuXG4gICAgZGVmIHRlc3RfYmluYXJ5X2NvcHlfaXNfYm91bmRlZF9wcml2YXRlX2FuZF9uZXZlcl9lY2hvZWQoc2VsZik6XG4gICAgICAgIGJsb2IgPSBiJ3N5bnRoZXRpYyBwcml2YXRlIGZpeHR1cmUgYnl0ZXMnXG4gICAgICAgIGRpZ2VzdCA9IF9faW1wb3J0X18oJ2hhc2hsaWInKS5zaGEyNTYoYmxvYikuaGV4ZGlnZXN0KClcbiAgICAgICAgbWV0YWRhdGEgPSB7J2FsbF9jaGVja3NfcGFzcyc6IFRydWUsICdzbmFwc2hvdF9maWxlJzogJ2RyaWxsLnNxbGl0ZScsICdzbmFwc2hvdF9ieXRlcyc6IGxlbihibG9iKSxcbiAgICAgICAgICAgICAgICAgICAgJ3NuYXBzaG90X3NoYTI1Nic6IGRpZ2VzdCwgJ3NuYXBzaG90X3JlYWRvbmx5JzogQ09VTlQsXG4gICAgICAgICAgICAgICAgICAgICdwb2RfbmFtZSc6ICdmaXh0dXJlLXBvZCcsICdwb2RfdWlkJzogJ2ZpeHR1cmUtdWlkJ31cbiAgICAgICAgam91cm5hbCA9IHR5cGUoJ0ZpeHR1cmVKb3VybmFsJywgKCksIHsnZGF0YSc6IHsncGhhc2VzJzogeydkcmlsbC1iYWNrdXAnOiB7J3Jlc3VsdCc6IG1ldGFkYXRhfX19fSkoKVxuICAgICAgICByZWFsX3BvcGVuID0gc3VicHJvY2Vzcy5Qb3BlblxuICAgICAgICBmb3IgZXh0cmEgaW4gKGInJywgYidvdmVyc2l6ZWQnKTpcbiAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGV4dHJhPWV4dHJhKSwgdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgZm9sZGVyOlxuICAgICAgICAgICAgICAgIG9zLmNobW9kKGZvbGRlciwgMG83MDApXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gaW8uU3RyaW5nSU8oKVxuXG4gICAgICAgICAgICAgICAgZGVmIGNoaWxkKCphcmdzLCAqKmt3YXJncyk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWFsX3BvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBzeXM7c3lzLnN0ZG91dC5idWZmZXIud3JpdGUoJyArIHJlcHIoYmxvYiArIGV4dHJhKSArICcpJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpXG5cbiAgICAgICAgICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChhY3R1YXRvciwgJ0NVU1RPRFknLCBQYXRoKGZvbGRlcikpLCBwYXRjaC5vYmplY3QoYWN0dWF0b3IsICdyZW1vdGUnLCByZXR1cm5fdmFsdWU9bWV0YWRhdGEpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2goJ3N1YnByb2Nlc3MuUG9wZW4nLCBzaWRlX2VmZmVjdD1jaGlsZCksIHJlZGlyZWN0X3N0ZG91dChvdXRwdXQpOlxuICAgICAgICAgICAgICAgICAgICBpZiBleHRyYTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWF0b3IuY29weV9zbmFwc2hvdCgnZHJpbGwtY29weScsIFJFVklTSU9OLCB7fSwgam91cm5hbClcbiAgICAgICAgICAgICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFjdHVhdG9yLmNvcHlfc25hcHNob3QoJ2RyaWxsLWNvcHknLCBSRVZJU0lPTiwge30sIGpvdXJuYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0WydvZmZfY2x1c3Rlcl9wcml2YXRlX2NvcHlfdmVyaWZpZWQnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKFBhdGgoZm9sZGVyKSAvICdkcmlsbC5zcWxpdGUnKS5yZWFkX2J5dGVzKCksIGJsb2IpXG4gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuZ2V0dmFsdWUoKSwgJycpXG4gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoUGF0aChmb2xkZXIpIC8gJ2RyaWxsLnNxbGl0ZScpLnN0YXQoKS5zdF9tb2RlICYgMG83NzcsIDBvNjAwKVxuXG4gICAgZGVmIHRlc3RfcmVjcmVhdGVkX29mZmxpbmVfdm9sdW1lX2Nhbm5vdF9iZV9kZWxldGVkKHNlbGYpOlxuICAgICAgICBpZGVudGl0eSA9IHsnTmFtZSc6IGFjdHVhdG9yLlZPTFVNRSwgJ0xhYmVscyc6IHsnbm9uY2UnOiAnb2xkJ30sICdDcmVhdGVkQXQnOiAnb2xkJ31cbiAgICAgICAgam91cm5hbCA9IHR5cGUoJ0ZpeHR1cmVKb3VybmFsJywgKCksIHsnZGF0YSc6IHsncGhhc2VzJzoge1xuICAgICAgICAgICAgJ29mZmxpbmUtdmVyaWZ5JzogeydyZXN1bHQnOiB7J2NyZWF0ZWRfdm9sdW1lX2lkZW50aXR5JzogaWRlbnRpdHl9fX19fSkoKVxuICAgICAgICBpbnNwZWN0ZWQgPSBbeyoqaWRlbnRpdHksICdDcmVhdGVkQXQnOiAncmVjcmVhdGVkJ31dXG4gICAgICAgIHdpdGggcGF0Y2gub2JqZWN0KGFjdHVhdG9yLCAnZG9ja2VyJywgcmV0dXJuX3ZhbHVlPXN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2VzcyhbXSwgMCwganNvbi5kdW1wcyhpbnNwZWN0ZWQpLCAnJykpIGFzIG1vY2tlZDpcbiAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6XG4gICAgICAgICAgICAgICAgYWN0dWF0b3IuY2xlYW51cF9vZmZsaW5lKGpvdXJuYWwpXG4gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tlZC5jYWxsX2NvdW50LCAxKVxuXG4gICAgZGVmIHRlc3Rfb2ZmbGluZV9wb3N0X2FkbWluX2ludGVncml0eV9hbmRfb3JpZ2luYWxfaGFzaF9hcmVfcmVjaGVja2VkKHNlbGYpOlxuICAgICAgICBmb3IgZGVmZWN0IGluICgnbm9uZScsICdwb3N0LWludGVncml0eScsICdvcmlnaW5hbC1oYXNoJyk6XG4gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkZWZlY3Q9ZGVmZWN0KSwgdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgZGlyZWN0b3J5OlxuICAgICAgICAgICAgICAgIGZvbGRlcj1QYXRoKGRpcmVjdG9yeSk7b3MuY2htb2QoZm9sZGVyLDBvNzAwKVxuICAgICAgICAgICAgICAgIHNuYXBzaG90PWZvbGRlci8nZHJpbGwuc3FsaXRlJztzbmFwc2hvdC53cml0ZV9ieXRlcyhiJ3ByaXZhdGUgc3ludGhldGljIHNuYXBzaG90Jyk7b3MuY2htb2Qoc25hcHNob3QsMG82MDApXG4gICAgICAgICAgICAgICAgZGlnZXN0PWFjdHVhdG9yLnNoYShzbmFwc2hvdClcbiAgICAgICAgICAgICAgICBwcmlvcj17J3NuYXBzaG90X3NoYTI1Nic6ZGlnZXN0LCdzbmFwc2hvdF9yZWFkb25seSc6Q09VTlR9XG4gICAgICAgICAgICAgICAgam91cm5hbD10eXBlKCdGaXh0dXJlSm91cm5hbCcsKCkseydkYXRhJzp7J3BoYXNlcyc6eydkcmlsbC1jb3B5Jzp7J3Jlc3VsdCc6cHJpb3J9LCdvZmZsaW5lLXZlcmlmeSc6eydhdHRlbXB0X2lkJzonbm9uY2UnfX19LCdub3RlJzpsYW1iZGEgKmFyZ3M6Tm9uZX0pKClcbiAgICAgICAgICAgICAgICByZWFkcz1bXVxuICAgICAgICAgICAgICAgIHZvbHVtZT17J05hbWUnOmFjdHVhdG9yLlZPTFVNRSwnTGFiZWxzJzp7J2luZm9ybWVkLWRlY2lzaW9uLmNhc2UnOidpbmZkLXpsaWItMjAyNjEwMTEtcjEnLCdpbmZvcm1lZC1kZWNpc2lvbi51c2UnOidvZmZsaW5lLXJlc3RvcmUtb25seScsJ2luZm9ybWVkLWRlY2lzaW9uLmF0dGVtcHQnOidub25jZSd9LCdEcml2ZXInOidsb2NhbCcsJ1Njb3BlJzonbG9jYWwnLCdDcmVhdGVkQXQnOidmaXh0dXJlJywnT3B0aW9ucyc6Tm9uZX1cbiAgICAgICAgICAgICAgICBkZWYgZG9ja2VyKGFyZ3YsIGJvZHk9Tm9uZSwgKiprd2FyZ3MpOlxuICAgICAgICAgICAgICAgICAgICBpZiBhcmd2WzBdPT0naW5mbyc6Ym9keT1qc29uLmR1bXBzKCdibnQtbGFwMDAxJylcbiAgICAgICAgICAgICAgICAgICAgZWxpZiBhcmd2WzoyXT09Wyd2b2x1bWUnLCdscyddOmJvZHk9JydcbiAgICAgICAgICAgICAgICAgICAgZWxpZiBhcmd2WzoyXT09Wyd2b2x1bWUnLCdjcmVhdGUnXTpib2R5PWFjdHVhdG9yLlZPTFVNRVxuICAgICAgICAgICAgICAgICAgICBlbGlmIGFyZ3ZbOjJdPT1bJ3ZvbHVtZScsJ2luc3BlY3QnXTpib2R5PWpzb24uZHVtcHMoW3ZvbHVtZV0pXG4gICAgICAgICAgICAgICAgICAgIGVsaWYgJ2luZm9ybWVkLWRlY2lzaW9uLWFkbWluJyBpbiBhcmd2OlxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keT1qc29uLmR1bXBzKHtrZXk6Q09VTlRba2V5XSBmb3Iga2V5IGluICgnc2NoZW1hX3ZlcnNpb24nLCdsaWZlY3ljbGUnLCdvdXRib3gnLCdzdWJtaXNzaW9ucycpfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlZmVjdD09J29yaWdpbmFsLWhhc2gnOnNuYXBzaG90LndyaXRlX2J5dGVzKGInY2hhbmdlZCBzeW50aGV0aWMgb3JpZ2luYWwnKVxuICAgICAgICAgICAgICAgICAgICBlbGlmICctLWVudHJ5cG9pbnQnIGluIGFyZ3YgYW5kICdweXRob24nIGluIGFyZ3Y6XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkcy5hcHBlbmQoYXJndik7cHJvb2Y9Y29weS5kZWVwY29weShDT1VOVClcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihyZWFkcyk9PTIgYW5kIGRlZmVjdD09J3Bvc3QtaW50ZWdyaXR5Jzpwcm9vZlsnaW50ZWdyaXR5J109J2NvcnJ1cHQnXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5PWpzb24uZHVtcHMocHJvb2YpXG4gICAgICAgICAgICAgICAgICAgIGVsc2U6cmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ3VuZXhwZWN0ZWQgb2ZmbGluZSBjb21tYW5kJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2Vzcyhhcmd2LDAsYm9keSwnJylcbiAgICAgICAgICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChhY3R1YXRvciwnQ1VTVE9EWScsZm9sZGVyKSxwYXRjaC5vYmplY3QoYWN0dWF0b3IsJ0NBU0UnLENBU0UpLHBhdGNoLm9iamVjdChhY3R1YXRvciwnZG9ja2VyJyxzaWRlX2VmZmVjdD1kb2NrZXIpLHBhdGNoKCdzdWJwcm9jZXNzLnJ1bicscmV0dXJuX3ZhbHVlPXN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2VzcyhbXSwwLCd7XCJhbGxfY2hlY2tzX3Bhc3NcIjp0cnVlLFwicHJpdmF0ZV9jb3B5X3ZlcmlmaWVkXCI6dHJ1ZX0nLCcnKSk6XG4gICAgICAgICAgICAgICAgICAgIGlmIGRlZmVjdD09J25vbmUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PWFjdHVhdG9yLm9mZmxpbmVfdmVyaWZ5KGpvdXJuYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFsnb2ZmbGluZV9wb3N0X2FkbWluX3JlYWRvbmx5J10sQ09VTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0WydvcmlnaW5hbF9zbmFwc2hvdF9oYXNoX3VuY2hhbmdlZCddKVxuICAgICAgICAgICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKTphY3R1YXRvci5vZmZsaW5lX3ZlcmlmeShqb3VybmFsKVxuICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlYWRzKSwyKVxuXG4gICAgZGVmIHRlc3RfZnJlc2hfZnVsbF9zY2FuX2RiX2V4cGlyeV9hbmRfbmV3X2ZpbmRpbmdzX3JlZnVzZShzZWxmKTpcbiAgICAgICAgcmVjZWlwdD17J2ltYWdlJzphY3R1YXRvci5JTUFHRSwnYXJ0aWZhY3Rfc291cmNlX3JldmlzaW9uJzonOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYycsJ3NjYW5uZXInOidhcXVhc2VjL3RyaXZ5QHNoYTI1Njo2MmIxZTY1ZTg4NjliYzRiNGM2YWE0ZmEyYjIxNTk1MjU2YzdjMmY2MDE4YTlkOWFkNjFjYWY4NzE4N2MxOTY5Jywnbm9fc3VwcHJlc3Npb24nOlRydWUsJ2Z1bGxfYWxsc2V2ZXJpdHlfc2Nhbic6VHJ1ZSwnZXhpdF9jb2RlJzowLCdjb21wbGV0ZWRfYXQnOicyMDI2LTEwLTExVDAxOjU5OjAwWicsJ2RiX21ldGFkYXRhJzp7J1VwZGF0ZWRBdCc6JzIwMjYtMTAtMTBUMTk6MDA6MDBaJywnTmV4dFVwZGF0ZSc6JzIwMjYtMTAtMTFUMTk6MDA6MDBaJywnVmVyc2lvbic6Mn0sJ2RiX3NoYTI1Nic6J2EnKjY0LCdmdWxsX3JlcG9ydF9zaGEyNTYnOidiJyo2NH1cbiAgICAgICAgcmVwb3J0PXsnUmVzdWx0cyc6W3snVnVsbmVyYWJpbGl0aWVzJzpOb25lfV19XG4gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJlc2hfc2NhbihyZWNlaXB0LHJlcG9ydCxOT1cpWydhbGxzZXZlcml0eV9maW5kaW5ncyddLDApXG4gICAgICAgIG11dGF0aW9ucz1bbGFtYmRhIHIscDpyLnVwZGF0ZShub19zdXBwcmVzc2lvbj1GYWxzZSksbGFtYmRhIHIscDpyLnVwZGF0ZShpbWFnZT0nZm9yZWlnbicpLGxhbWJkYSByLHA6ci51cGRhdGUoc2Nhbm5lcj0nb3RoZXInKSxsYW1iZGEgcixwOnIudXBkYXRlKGNvbXBsZXRlZF9hdD0nMjAyNi0xMC0xMFQyMTowMDowMFonKSxsYW1iZGEgcixwOnJbJ2RiX21ldGFkYXRhJ10udXBkYXRlKE5leHRVcGRhdGU9JzIwMjYtMTAtMTFUMDE6NTk6MDBaJyksbGFtYmRhIHIscDpwWydSZXN1bHRzJ11bMF0udXBkYXRlKFZ1bG5lcmFiaWxpdGllcz1beydTZXZlcml0eSc6J0xPVyd9XSksbGFtYmRhIHIscDpwLnVwZGF0ZShSZXN1bHRzPVtdKV1cbiAgICAgICAgZm9yIG11dGF0ZSBpbiBtdXRhdGlvbnM6XG4gICAgICAgICAgICByLHA9Y29weS5kZWVwY29weShyZWNlaXB0KSxjb3B5LmRlZXBjb3B5KHJlcG9ydCk7bXV0YXRlKHIscClcbiAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6ZnJlc2hfc2NhbihyLHAsTk9XKVxuXG5cbmNsYXNzIEZpeGVkTmF0aXZlUHJvZ3JhbSh1bml0dGVzdC5UZXN0Q2FzZSk6XG4gICAgZGVmIGZpeHR1cmUoc2VsZik6XG4gICAgICAgIHNlYWxlZCA9IGpzb24ubG9hZHMoKENBU0UgLyAnc2VhbGVkLWxpdmUtZGVwbG95bWVudC5qc29uJykucmVhZF90ZXh0KCkpXG4gICAgICAgIGxpdmUgPSBjb3B5LmRlZXBjb3B5KHNlYWxlZClcbiAgICAgICAgbGl2ZVsnbWV0YWRhdGEnXS51cGRhdGUoZ2VuZXJhdGlvbj00MilcbiAgICAgICAgbGl2ZVsnc3RhdHVzJ10gPSB7J3JlYWR5UmVwbGljYXMnOiAxLCAndXBkYXRlZFJlcGxpY2FzJzogMSwgJ29ic2VydmVkR2VuZXJhdGlvbic6IDQyfVxuICAgICAgICBkZXBlbmRlbmNpZXMgPSBqc29uLmxvYWRzKChDQVNFIC8gJ3NlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24nKS5yZWFkX3RleHQoKSlcbiAgICAgICAgY20gPSBjb3B5LmRlZXBjb3B5KGRlcGVuZGVuY2llc1snY29uZmlnbWFwJ10pXG4gICAgICAgIGNtLnBvcCgnY2Fub25pY2FsX2RhdGFfc2hhMjU2JylcbiAgICAgICAgc2VydmljZSA9IGpzb24ubG9hZHMoKENBU0UgLyAnY2FuZGlkYXRlLWRlcGxveW1lbnQuanNvbicpLnJlYWRfdGV4dCgpKVxuICAgICAgICBzb3VyY2Vfc2VydmljZSA9IGpzb24ubG9hZHMoKFBhdGgoJy9ob21lL3dvcnNjaC9pbmZvcm1lZC1kZWNpc2lvbi9kZXBsb3kvbGlmZWN5Y2xlL3NlcnZpY2UuY2FuZGlkYXRlLmpzb24nKSkucmVhZF90ZXh0KCkpXG4gICAgICAgIGNtWydkYXRhJ10gPSBuZXh0KHggZm9yIHggaW4gc291cmNlX3NlcnZpY2VbJ2l0ZW1zJ10gaWYgeFsna2luZCddID09ICdDb25maWdNYXAnKVsnZGF0YSddXG4gICAgICAgIHB2YyA9IGNvcHkuZGVlcGNvcHkoZGVwZW5kZW5jaWVzWydwdmMnXSlcbiAgICAgICAgcHZjWydzdGF0dXMnXSA9IHsncGhhc2UnOiAnQm91bmQnfVxuICAgICAgICBhcHAgPSB7J21ldGFkYXRhJzogeyd1aWQnOiAnNDk5ODY4ZjItZWFiYy00ZGY0LWFlMzEtYjg5Y2U1OGQ3NTBkJywgJ3Jlc291cmNlVmVyc2lvbic6ICcxNyd9LFxuICAgICAgICAgICAgICAgJ3NwZWMnOiB7J3NvdXJjZSc6IHsncmVwb1VSTCc6ICdodHRwczovL2Zvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbi5naXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdkZXBsb3kvbGlmZWN5Y2xlJywgJ3RhcmdldFJldmlzaW9uJzogJ2M5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTInfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXN0aW5hdGlvbic6IHsnbmFtZXNwYWNlJzogJ2luZm9ybWVkLWRlY2lzaW9uJywgJ3NlcnZlcic6ICdodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMnfX19XG4gICAgICAgIG9iamVjdHMgPSB7J2RlcGxveW1lbnQnOiBsaXZlLCAnY29uZmlnbWFwJzogY20sICdwdmMnOiBwdmMsICdhcHBsaWNhdGlvbic6IGFwcH1cbiAgICAgICAgcGF5bG9hZCA9IHsncGhhc2UnOiAncmVsZWFzZScsICdzb3VyY2VfcmV2aXNpb24nOiBSRVZJU0lPTiwgJ2FwcHJvdmFsJzoge30sICdzZWFsZWQnOiBzZWFsZWQsXG4gICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IGRlcGVuZGVuY2llcywgJ2NhbmRpZGF0ZSc6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgJ3JvbGxiYWNrJzoganNvbi5sb2FkcygoQ0FTRSAvICdyb2xsYmFjay1kZXBsb3ltZW50Lmpzb24nKS5yZWFkX3RleHQoKSksXG4gICAgICAgICAgICAgICAgICAgJ3JlYWRvbmx5JzogKENBU0UgLyAnc3FsaXRlX3JlYWRvbmx5LnB5JykucmVhZF90ZXh0KCksJ3B1cnBvc2VfY2hlY2tzJzooQ0FTRS8nY2hlY2tfaW5zdGFsbGVkLnB5JykucmVhZF90ZXh0KCksXG4gICAgICAgICAgICAgICAgICAgJ2luc3RhbGxlZF96bGliJzoganNvbi5sb2FkcygoQ0FTRSAvICdpbnN0YWxsZWQtemxpYi1wcm9vZi5qc29uJykucmVhZF90ZXh0KCkpLCAncmVjZWlwdF9zYWZldHknOiAoUGF0aChfX2ZpbGVfXykucGFyZW50IC8gJ3JlY2VpcHRfc2FmZXR5LnB5JykucmVhZF90ZXh0KCl9XG4gICAgICAgIHJldHVybiBvYmplY3RzLCBwYXlsb2FkXG5cbiAgICBkZWYgZXhlY3V0ZV9mYWtlKHNlbGYsIG9iamVjdHMsIHBheWxvYWQsIGFtYmlndW91cz1GYWxzZSwgc2NoZW1hX3JlZnVzZWQ9RmFsc2UpOlxuICAgICAgICB3cml0ZXMgPSBbXVxuICAgICAgICBjYWxscyA9IFtdXG5cbiAgICAgICAgZGVmIGZha2UoYXJndiwgaW5wdXQ9Tm9uZSwgKiprd2FyZ3MpOlxuICAgICAgICAgICAgY2FsbHMuYXBwZW5kKGFyZ3YpXG4gICAgICAgICAgICBpZiBhcmd2WzoyXSA9PSBbJ2t1YmVjdGwnLCAnZ2V0J106XG4gICAgICAgICAgICAgICAga2luZCA9IGFyZ3ZbMl1cbiAgICAgICAgICAgICAgICBpZiBraW5kIGluIG9iamVjdHM6XG4gICAgICAgICAgICAgICAgICAgIGJvZHkgPSBvYmplY3RzW2tpbmRdXG4gICAgICAgICAgICAgICAgZWxpZiBraW5kID09ICdwb2RzJzpcbiAgICAgICAgICAgICAgICAgICAgYm9keSA9IHsnaXRlbXMnOiBbeydtZXRhZGF0YSc6IHsnbmFtZSc6ICdmaXh0dXJlLXBvZCcsICd1aWQnOiAnYzRjYjE1NTAtZmVkYS00MDk3LTlkZTQtZDg5MWE2NTdiNjYyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvd25lclJlZmVyZW5jZXMnOiBbeydraW5kJzogJ1JlcGxpY2FTZXQnLCAnbmFtZSc6ICdmaXh0dXJlLXJzJywgJ3VpZCc6ICdycy11aWQnfV19LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlYyc6IG9iamVjdHNbJ2RlcGxveW1lbnQnXVsnc3BlYyddWyd0ZW1wbGF0ZSddWydzcGVjJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnOiB7J3BoYXNlJzogJ1J1bm5pbmcnLCAnY29udGFpbmVyU3RhdHVzZXMnOiBbeyduYW1lJzonaW5mb3JtZWQtZGVjaXNpb24nLCdyZWFkeSc6IFRydWUsJ2ltYWdlSUQnOm9iamVjdHNbJ2RlcGxveW1lbnQnXVsnc3BlYyddWyd0ZW1wbGF0ZSddWydzcGVjJ11bJ2NvbnRhaW5lcnMnXVswXVsnaW1hZ2UnXX1dIH19XX1cbiAgICAgICAgICAgICAgICBlbGlmIGtpbmQgPT0gJ3JlcGxpY2FzZXQnOlxuICAgICAgICAgICAgICAgICAgICBib2R5ID0geydtZXRhZGF0YSc6IHsndWlkJzogJ3JzLXVpZCcsICdvd25lclJlZmVyZW5jZXMnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7J2tpbmQnOiAnRGVwbG95bWVudCcsICd1aWQnOiBwYXlsb2FkWydzZWFsZWQnXVsnbWV0YWRhdGEnXVsndWlkJ119XX19XG4gICAgICAgICAgICAgICAgZWxpZiBraW5kID09ICdub2Rlcyc6XG4gICAgICAgICAgICAgICAgICAgIGJvZHkgPSB7J2l0ZW1zJzogW3snbWV0YWRhdGEnOiB7J25hbWUnOiAnZml4dHVyZS1ub2RlJ30sICdzdGF0dXMnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzc2VzJzogW3snYWRkcmVzcyc6ICc5Mi4yMDUuNjIuMjM5J31dLCAnYWxsb2NhdGFibGUnOiB7J2NwdSc6ICc0J30sXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFt7J3R5cGUnOiBrZXksICdzdGF0dXMnOiAnVHJ1ZScgaWYga2V5ID09ICdSZWFkeScgZWxzZSAnRmFsc2UnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ1JlYWR5JywgJ01lbW9yeVByZXNzdXJlJywgJ0Rpc2tQcmVzc3VyZScsICdQSURQcmVzc3VyZScpXX19XX1cbiAgICAgICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigndW5leHBlY3RlZCBmaXhlZCBtZXRhZGF0YSByb3V0ZScpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2Vzcyhhcmd2LCAwLCBqc29uLmR1bXBzKGJvZHkpLCAnJylcbiAgICAgICAgICAgIGlmIGFyZ3ZbOjJdID09IFsna3ViZWN0bCcsICdleGVjJ106XG4gICAgICAgICAgICAgICAgaWYgc2NoZW1hX3JlZnVzZWQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLkNvbXBsZXRlZFByb2Nlc3MoYXJndiwgMSwgJycsICd3aXRoaGVsZCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2Vzcyhhcmd2LCAwLCBqc29uLmR1bXBzKHtcbiAgICAgICAgICAgICAgICAgICAgJ2FsbF9jaGVja3NfcGFzcyc6IFRydWUsICdsaXZlX3JlYWRvbmx5X3NjaGVtYV9pbnRlZ3JpdHlfY291bnRzJzogQ09VTlR9KSwgJycpXG4gICAgICAgICAgICBpZiBhcmd2WzoyXSA9PSBbJ2t1YmVjdGwnLCAnYXBwbHknXTpcbiAgICAgICAgICAgICAgICBhZG1pdHRlZCA9IGNvcHkuZGVlcGNvcHkocGF5bG9hZFsnc2VhbGVkJ10pXG4gICAgICAgICAgICAgICAgYWRtaXR0ZWRbJ3NwZWMnXVsndGVtcGxhdGUnXVsnc3BlYyddWydjb250YWluZXJzJ11bMF1bJ2ltYWdlJ10gPSAoYWN0dWF0b3IuSU1BR0UgaWYgcGF5bG9hZFsncGhhc2UnXT09J3JlbGVhc2UnIGVsc2UgcGF5bG9hZFsnc2VhbGVkJ11bJ3NwZWMnXVsndGVtcGxhdGUnXVsnc3BlYyddWydjb250YWluZXJzJ11bMF1bJ2ltYWdlJ10pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2Vzcyhhcmd2LCAwLCBqc29uLmR1bXBzKGFkbWl0dGVkKSwgJycpXG4gICAgICAgICAgICBpZiBhcmd2WzoyXSA9PSBbJ2t1YmVjdGwnLCAnZGVzY3JpYmUnXTpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Db21wbGV0ZWRQcm9jZXNzKGFyZ3YsIDAsICdBbGxvY2F0ZWQgcmVzb3VyY2VzOlxcbiBjcHUgMzQ2MG0gKDg2JSlcXG4nLCAnJylcbiAgICAgICAgICAgIGlmIGFyZ3ZbOjJdID09IFsna3ViZWN0bCcsICdkaWZmJ106XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2Vzcyhhcmd2LCAxLCAnLWltYWdlOiBiYXNlXFxuK2ltYWdlOiBjYW5kaWRhdGVcXG4nLCAnJylcbiAgICAgICAgICAgIGlmIGFyZ3ZbOjJdID09IFsna3ViZWN0bCcsICdwYXRjaCddOlxuICAgICAgICAgICAgICAgIGlmICctLWRyeS1ydW49c2VydmVyJyBub3QgaW4gYXJndjpcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVzLmFwcGVuZChqc29uLmxvYWRzKGlucHV0KSlcbiAgICAgICAgICAgICAgICAgICAgaWYgYW1iaWd1b3VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuQ29tcGxldGVkUHJvY2Vzcyhhcmd2LCAxLCAnJywgJ3dpdGhoZWxkJylcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Db21wbGV0ZWRQcm9jZXNzKGFyZ3YsIDAsICdhcHBsaWNhdGlvbi5hcmdvcHJvai5pby9pbmZvcm1lZC1kZWNpc2lvblxcbicsICcnKVxuICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ3VuZXhwZWN0ZWQgY29tbWFuZCcpXG5cbiAgICAgICAgc291cmNlID0gUFJPR1JBTS5yZXBsYWNlKCdfX1BBWUxPQURfXycsIHJlcHIoanNvbi5kdW1wcyhwYXlsb2FkKSkpLnJlcGxhY2UoXG4gICAgICAgICAgICAnX19HVUFSRF9fJywgcmVwcigoQ0FTRSAvICdjaGFuZ2VfZ3VhcmQucHknKS5yZWFkX3RleHQoKSkpXG4gICAgICAgIG91dHB1dCA9IGlvLlN0cmluZ0lPKClcbiAgICAgICAgd2l0aCBwYXRjaCgnc3VicHJvY2Vzcy5ydW4nLCBzaWRlX2VmZmVjdD1mYWtlKSwgcmVkaXJlY3Rfc3Rkb3V0KG91dHB1dCk6XG4gICAgICAgICAgICB0cnk6XG4gICAgICAgICAgICAgICAgZXhlYyhjb21waWxlKHNvdXJjZSwgJ2ZpeGVkLW5hdGl2ZS1maXh0dXJlJywgJ2V4ZWMnKSwgeydfX25hbWVfXyc6ICdfX2ZpeHR1cmVfXyd9KVxuICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBTeXN0ZW1FeGl0KTpcbiAgICAgICAgICAgICAgICBwYXNzXG4gICAgICAgIHJlY2VpcHQgPSBqc29uLmxvYWRzKG91dHB1dC5nZXR2YWx1ZSgpKSBpZiBvdXRwdXQuZ2V0dmFsdWUoKSBlbHNlIHsnYWxsX2NoZWNrc19wYXNzJzogRmFsc2V9XG4gICAgICAgIHJldHVybiByZWNlaXB0LCB3cml0ZXMsIGNhbGxzXG5cbiAgICBkZWYgdGVzdF9vbmx5X2V4aXN0aW5nX2FwcGxpY2F0aW9uX29wZXJhdGlvbl9hbmRfZGVwbG95bWVudF9hcmVfcmVxdWVzdGVkKHNlbGYpOlxuICAgICAgICBvYmplY3RzLCBwYXlsb2FkID0gc2VsZi5maXh0dXJlKClcbiAgICAgICAgcmVjZWlwdCwgd3JpdGVzLCBjYWxscyA9IHNlbGYuZXhlY3V0ZV9mYWtlKG9iamVjdHMsIHBheWxvYWQpXG4gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZWNlaXB0WydhbGxfY2hlY2tzX3Bhc3MnXSlcbiAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWNlaXB0Wydyb2xsb3V0X3ZlcmlmaWVkJ10pXG4gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHdyaXRlcyksIDEpXG4gICAgICAgIG9wZXJhdGlvbiA9IHdyaXRlc1swXVstMV1bJ3ZhbHVlJ11cbiAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGVyYXRpb25bJ3N5bmMnXVsncHJ1bmUnXSlcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRpb25bJ3N5bmMnXVsncmVzb3VyY2VzJ10sIFtcbiAgICAgICAgICAgIHsnZ3JvdXAnOiAnYXBwcycsICdraW5kJzogJ0RlcGxveW1lbnQnLCAnbmFtZSc6ICdpbmZvcm1lZC1kZWNpc2lvbicsICduYW1lc3BhY2UnOiAnaW5mb3JtZWQtZGVjaXNpb24nfV0pXG4gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoJy0tZHJ5LXJ1bj1zZXJ2ZXInIGluIGFyZ3YgYW5kIGFyZ3ZbOjJdID09IFsna3ViZWN0bCcsICdwYXRjaCddIGZvciBhcmd2IGluIGNhbGxzKSlcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cml0ZXNbMF1bMF1bJ3BhdGgnXSwgJy9tZXRhZGF0YS91aWQnKVxuXG4gICAgZGVmIHRlc3Rfc291cmNlX292ZXJyaWRlc19hdXRvbWF0aW9uX2FuZF9jdXN0b2R5X2RyaWZ0X3N0b3BfYmVmb3JlX3dyaXRlKHNlbGYpOlxuICAgICAgICBtdXRhdGlvbnMgPSBbbGFtYmRhIG86IG9bJ2FwcGxpY2F0aW9uJ11bJ21ldGFkYXRhJ10udXBkYXRlKHVpZD0ncmVjcmVhdGVkJyksXG4gICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbzogb1snYXBwbGljYXRpb24nXVsnc3BlYyddLnVwZGF0ZShzeW5jUG9saWN5PXsnYXV0b21hdGVkJzoge319KSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBvOiBvWydhcHBsaWNhdGlvbiddWydzcGVjJ11bJ3NvdXJjZSddLnVwZGF0ZShrdXN0b21pemU9eydpbWFnZXMnOiBbJ290aGVyJ119KSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBvOiBvWydhcHBsaWNhdGlvbiddWydzcGVjJ10udXBkYXRlKHNvdXJjZXM9W3t9XSksXG4gICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbzogb1snY29uZmlnbWFwJ11bJ21ldGFkYXRhJ10udXBkYXRlKHVpZD0ncmVjcmVhdGVkJyksXG4gICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbzogb1sncHZjJ11bJ3NwZWMnXS51cGRhdGUodm9sdW1lTmFtZT0ncmVwbGFjZWQnKSxcbiAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBvOiBvWydkZXBsb3ltZW50J11bJ3N0YXR1cyddLnVwZGF0ZShyZWFkeVJlcGxpY2FzPTApXVxuICAgICAgICBmb3IgbXV0YXRlIGluIG11dGF0aW9uczpcbiAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG11dGF0ZT1tdXRhdGUpOlxuICAgICAgICAgICAgICAgIG9iamVjdHMsIHBheWxvYWQgPSBzZWxmLmZpeHR1cmUoKVxuICAgICAgICAgICAgICAgIG11dGF0ZShvYmplY3RzKVxuICAgICAgICAgICAgICAgIHJlY2VpcHQsIHdyaXRlcywgY2FsbHMgPSBzZWxmLmV4ZWN1dGVfZmFrZShvYmplY3RzLCBwYXlsb2FkKVxuICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVjZWlwdFsnYWxsX2NoZWNrc19wYXNzJ10pXG4gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cml0ZXMsIFtdKVxuXG4gICAgZGVmIHRlc3RfcHJlb3Blbl9zY2hlbWFfcmVmdXNhbF9wcmV2ZW50c19pbWFnZV9vcGVyYXRpb24oc2VsZik6XG4gICAgICAgIG9iamVjdHMsIHBheWxvYWQgPSBzZWxmLmZpeHR1cmUoKVxuICAgICAgICByZWNlaXB0LCB3cml0ZXMsIGNhbGxzID0gc2VsZi5leGVjdXRlX2Zha2Uob2JqZWN0cywgcGF5bG9hZCwgc2NoZW1hX3JlZnVzZWQ9VHJ1ZSlcbiAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWNlaXB0WydhbGxfY2hlY2tzX3Bhc3MnXSlcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cml0ZXMsIFtdKVxuXG5cbiAgICBkZWYgdGVzdF9yb2xsYmFja191bnJlYWR5X2NhbmRpZGF0ZV9uZXZlcl9yZWFkc19wb2Rfb3JfZGF0YWJhc2Uoc2VsZik6XG4gICAgICAgIG9iamVjdHMsIHBheWxvYWQgPSBzZWxmLmZpeHR1cmUoKVxuICAgICAgICBwYXlsb2FkWydwaGFzZSddID0gJ3JvbGxiYWNrJ1xuICAgICAgICBvYmplY3RzWydkZXBsb3ltZW50J11bJ3N0YXR1cyddLnVwZGF0ZShyZWFkeVJlcGxpY2FzPTAsIHVwZGF0ZWRSZXBsaWNhcz0wKVxuICAgICAgICBvYmplY3RzWydkZXBsb3ltZW50J11bJ3NwZWMnXVsndGVtcGxhdGUnXVsnc3BlYyddWydjb250YWluZXJzJ11bMF1bJ2ltYWdlJ10gPSBhY3R1YXRvci5JTUFHRVxuICAgICAgICBvYmplY3RzWydhcHBsaWNhdGlvbiddWydzcGVjJ11bJ3NvdXJjZSddWyd0YXJnZXRSZXZpc2lvbiddID0gUkVWSVNJT05cbiAgICAgICAgcmVjZWlwdCwgd3JpdGVzLCBjYWxscyA9IHNlbGYuZXhlY3V0ZV9mYWtlKG9iamVjdHMsIHBheWxvYWQsIHNjaGVtYV9yZWZ1c2VkPVRydWUpXG4gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZWNlaXB0WydhbGxfY2hlY2tzX3Bhc3MnXSlcbiAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWNlaXB0Wydyb2xsb3V0X3ZlcmlmaWVkJ10pXG4gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHdyaXRlcyksIDEpXG4gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYW55KGFyZ3ZbOjJdID09IFsna3ViZWN0bCcsICdleGVjJ10gb3IgYXJndls6M10gPT0gWydrdWJlY3RsJywgJ2dldCcsICdwb2RzJ10gZm9yIGFyZ3YgaW4gY2FsbHMpKVxuICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyaXRlc1swXVstMV1bJ3ZhbHVlJ11bJ3N5bmMnXVsncmV2aXNpb24nXSwgJ2M5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTInKVxuXG4gICAgZGVmIHRlc3Rfcm9sbGJhY2tfc3RpbGxfcmVmdXNlc19jdXN0b2R5X29yX25vbnBhaXJfaW1hZ2VfZHJpZnQoc2VsZik6XG4gICAgICAgIGZvciBkZWZlY3QgaW4gKCdjbScsICdwdmMnLCAnaW1hZ2UnKTpcbiAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRlZmVjdD1kZWZlY3QpOlxuICAgICAgICAgICAgICAgIG9iamVjdHMsIHBheWxvYWQgPSBzZWxmLmZpeHR1cmUoKTtwYXlsb2FkWydwaGFzZSddID0gJ3JvbGxiYWNrJ1xuICAgICAgICAgICAgICAgIG9iamVjdHNbJ2RlcGxveW1lbnQnXVsnc3RhdHVzJ11bJ3JlYWR5UmVwbGljYXMnXSA9IDBcbiAgICAgICAgICAgICAgICBpZiBkZWZlY3QgPT0gJ2NtJzpvYmplY3RzWydjb25maWdtYXAnXVsnbWV0YWRhdGEnXVsndWlkJ10gPSAncmVjcmVhdGVkJ1xuICAgICAgICAgICAgICAgIGVsaWYgZGVmZWN0ID09ICdwdmMnOm9iamVjdHNbJ3B2YyddWydzcGVjJ11bJ3ZvbHVtZU5hbWUnXSA9ICdyZXBsYWNlZCdcbiAgICAgICAgICAgICAgICBlbHNlOm9iamVjdHNbJ2RlcGxveW1lbnQnXVsnc3BlYyddWyd0ZW1wbGF0ZSddWydzcGVjJ11bJ2NvbnRhaW5lcnMnXVswXVsnaW1hZ2UnXSA9ICdmb3JlaWduLWltYWdlJ1xuICAgICAgICAgICAgICAgIHJlY2VpcHQsIHdyaXRlcywgY2FsbHMgPSBzZWxmLmV4ZWN1dGVfZmFrZShvYmplY3RzLCBwYXlsb2FkKVxuICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVjZWlwdFsnYWxsX2NoZWNrc19wYXNzJ10pO3NlbGYuYXNzZXJ0RXF1YWwod3JpdGVzLCBbXSlcblxuICAgIGRlZiB0ZXN0X3JlY292ZXJ5X3ZlcmlmaWNhdGlvbl9pc19zZXBhcmF0ZV9yZWFkeV9vbGRfaW1hZ2Vfc2NoZW1hX3Byb29mKHNlbGYpOlxuICAgICAgICBvYmplY3RzLCBwYXlsb2FkID0gc2VsZi5maXh0dXJlKCk7cGF5bG9hZFsncGhhc2UnXSA9ICdyb2xsYmFjay12ZXJpZnknXG4gICAgICAgIHJlc291cmNlPXsnZ3JvdXAnOidhcHBzJywna2luZCc6J0RlcGxveW1lbnQnLCduYW1lJzonaW5mb3JtZWQtZGVjaXNpb24nLCduYW1lc3BhY2UnOidpbmZvcm1lZC1kZWNpc2lvbid9XG4gICAgICAgIHRhcmdldD0nYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMidcbiAgICAgICAgcGF5bG9hZFsnb3BlcmF0aW9uX2ludGVudCddPXsnc3RhdGUnOidDT01QTEVURScsJ3N0YXJ0ZWRfYXQnOicyMDI2LTEwLTExVDAxOjAwOjAwWicsJ3Jlc3VsdCc6eydvcGVyYXRpb25fcmVxdWVzdGVkJzpUcnVlLCdzb3VyY2VfcmV2aXNpb24nOnRhcmdldCwncHJ1bmUnOkZhbHNlLCdyZXNvdXJjZXMnOltyZXNvdXJjZV19fVxuICAgICAgICBvYmplY3RzWydhcHBsaWNhdGlvbiddWydzdGF0dXMnXT17J29wZXJhdGlvblN0YXRlJzp7J3BoYXNlJzonU3VjY2VlZGVkJywnc3RhcnRlZEF0JzonMjAyNi0xMC0xMVQwMTowMDowMVonLCdmaW5pc2hlZEF0JzonMjAyNi0xMC0xMVQwMTowMTowMFonLCdvcGVyYXRpb24nOnsnaW5pdGlhdGVkQnknOnsndXNlcm5hbWUnOidjdXN0b2RpYW4tY29kZXgnfSwnc3luYyc6eydyZXZpc2lvbic6dGFyZ2V0LCdyZXNvdXJjZXMnOltyZXNvdXJjZV19fSwnc3luY1Jlc3VsdCc6eydyZXZpc2lvbic6dGFyZ2V0LCdyZXNvdXJjZXMnOlt7KipyZXNvdXJjZSwnc3RhdHVzJzonU3luY2VkJ31dfX19XG4gICAgICAgIHJlY2VpcHQsIHdyaXRlcywgY2FsbHMgPSBzZWxmLmV4ZWN1dGVfZmFrZShvYmplY3RzLCBwYXlsb2FkKVxuICAgICAgICBzZWxmLmFzc2VydFRydWUocmVjZWlwdFsnYWxsX2NoZWNrc19wYXNzJ10pO3NlbGYuYXNzZXJ0VHJ1ZShyZWNlaXB0WydyZWNvdmVyeV92ZXJpZmljYXRpb24nXSlcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cml0ZXMsIFtdKVxuICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KGFyZ3ZbOjJdPT1bJ2t1YmVjdGwnLCdleGVjJ10gZm9yIGFyZ3YgaW4gY2FsbHMpKVxuICAgICAgICBvYmplY3RzWydkZXBsb3ltZW50J11bJ3N0YXR1cyddWydyZWFkeVJlcGxpY2FzJ10gPSAwXG4gICAgICAgIHJlY2VpcHQsIHdyaXRlcywgY2FsbHMgPSBzZWxmLmV4ZWN1dGVfZmFrZShvYmplY3RzLHBheWxvYWQpXG4gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVjZWlwdFsnYWxsX2NoZWNrc19wYXNzJ10pXG5cbiAgICBkZWYgdGVzdF9hbWJpZ3VvdXNfcGF0Y2hfaXNfbmV2ZXJfcmV0cmllZChzZWxmKTpcbiAgICAgICAgb2JqZWN0cywgcGF5bG9hZCA9IHNlbGYuZml4dHVyZSgpXG4gICAgICAgIHJlY2VpcHQsIHdyaXRlcywgY2FsbHMgPSBzZWxmLmV4ZWN1dGVfZmFrZShvYmplY3RzLCBwYXlsb2FkLCBhbWJpZ3VvdXM9VHJ1ZSlcbiAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWNlaXB0WydhbGxfY2hlY2tzX3Bhc3MnXSlcbiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4od3JpdGVzKSwgMSlcblxuICAgIGRlZiB0ZXN0X2ZhbHNlX29taXRlbXB0eV9uZWVkc19ib3VuZF9jdXJyZW50X3JlcXVlc3RfYW5kX2V4YWN0X2NvbXBsZXRpb24oc2VsZik6XG4gICAgICAgIG9iamVjdHMscGF5bG9hZD1zZWxmLmZpeHR1cmUoKTtwYXlsb2FkWydwaGFzZSddPSdyb2xsYmFjay12ZXJpZnknXG4gICAgICAgIHJlc291cmNlPXsnZ3JvdXAnOidhcHBzJywna2luZCc6J0RlcGxveW1lbnQnLCduYW1lJzonaW5mb3JtZWQtZGVjaXNpb24nLCduYW1lc3BhY2UnOidpbmZvcm1lZC1kZWNpc2lvbid9XG4gICAgICAgIHRhcmdldD0nYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMidcbiAgICAgICAgcGF5bG9hZFsnb3BlcmF0aW9uX2ludGVudCddPXsnc3RhdGUnOidDT01QTEVURScsJ3N0YXJ0ZWRfYXQnOicyMDI2LTEwLTExVDAxOjAwOjAwWicsJ3Jlc3VsdCc6eydvcGVyYXRpb25fcmVxdWVzdGVkJzpUcnVlLCdzb3VyY2VfcmV2aXNpb24nOnRhcmdldCwncHJ1bmUnOkZhbHNlLCdyZXNvdXJjZXMnOltyZXNvdXJjZV19fVxuICAgICAgICBvYmplY3RzWydhcHBsaWNhdGlvbiddWydzdGF0dXMnXT17J29wZXJhdGlvblN0YXRlJzp7J3BoYXNlJzonU3VjY2VlZGVkJywnc3RhcnRlZEF0JzonMjAyNi0xMC0xMVQwMTowMDowMVonLCdmaW5pc2hlZEF0JzonMjAyNi0xMC0xMVQwMTowMTowMFonLCdvcGVyYXRpb24nOnsnaW5pdGlhdGVkQnknOnsndXNlcm5hbWUnOidjdXN0b2RpYW4tY29kZXgnfSwnc3luYyc6eydyZXZpc2lvbic6dGFyZ2V0LCdyZXNvdXJjZXMnOltyZXNvdXJjZV19fSwnc3luY1Jlc3VsdCc6eydyZXZpc2lvbic6dGFyZ2V0LCdyZXNvdXJjZXMnOlt7KipyZXNvdXJjZSwnc3RhdHVzJzonU3luY2VkJ31dfX19XG4gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmV4ZWN1dGVfZmFrZShvYmplY3RzLHBheWxvYWQpWzBdWydhbGxfY2hlY2tzX3Bhc3MnXSlcbiAgICAgICAgbXV0YXRpb25zPVtsYW1iZGEgbyxwOm9bJ2FwcGxpY2F0aW9uJ11bJ3N0YXR1cyddWydvcGVyYXRpb25TdGF0ZSddWydvcGVyYXRpb24nXVsnc3luYyddLnVwZGF0ZShwcnVuZT1UcnVlKSxcbiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbyxwOm9bJ2FwcGxpY2F0aW9uJ11bJ3N0YXR1cyddWydvcGVyYXRpb25TdGF0ZSddWydvcGVyYXRpb24nXVsnc3luYyddLnVwZGF0ZShwcnVuZT1Ob25lKSxcbiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbyxwOm9bJ2FwcGxpY2F0aW9uJ11bJ3N0YXR1cyddWydvcGVyYXRpb25TdGF0ZSddLnVwZGF0ZShzdGFydGVkQXQ9JzIwMjYtMTAtMTFUMDA6NTk6MDBaJyksXG4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG8scDpvWydhcHBsaWNhdGlvbiddWydzdGF0dXMnXVsnb3BlcmF0aW9uU3RhdGUnXVsnb3BlcmF0aW9uJ10udXBkYXRlKGluaXRpYXRlZEJ5PXsndXNlcm5hbWUnOidvdGhlcid9KSxcbiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbyxwOm9bJ2FwcGxpY2F0aW9uJ11bJ3N0YXR1cyddWydvcGVyYXRpb25TdGF0ZSddWydzeW5jUmVzdWx0J10udXBkYXRlKHJldmlzaW9uPSdmb3JlaWduJyksXG4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG8scDpvWydhcHBsaWNhdGlvbiddWydzdGF0dXMnXVsnb3BlcmF0aW9uU3RhdGUnXVsnc3luY1Jlc3VsdCddWydyZXNvdXJjZXMnXVswXS51cGRhdGUoc3RhdHVzPSdQcnVuZWQnKSxcbiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbyxwOnBbJ29wZXJhdGlvbl9pbnRlbnQnXVsncmVzdWx0J10udXBkYXRlKHBydW5lPVRydWUpLFxuICAgICAgICAgICAgICAgICAgIGxhbWJkYSBvLHA6cC51cGRhdGUob3BlcmF0aW9uX2ludGVudD1Ob25lKV1cbiAgICAgICAgZm9yIG11dGF0ZSBpbiBtdXRhdGlvbnM6XG4gICAgICAgICAgICBvLHA9Y29weS5kZWVwY29weShvYmplY3RzKSxjb3B5LmRlZXBjb3B5KHBheWxvYWQpO211dGF0ZShvLHApXG4gICAgICAgICAgICByZWNlaXB0LHdyaXRlcyxjYWxscz1zZWxmLmV4ZWN1dGVfZmFrZShvLHApXG4gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlY2VpcHRbJ2FsbF9jaGVja3NfcGFzcyddKTtzZWxmLmFzc2VydEVxdWFsKHdyaXRlcyxbXSlcblxuICAgIGRlZiB0ZXN0X29wdGltaXplZF9leGVjdXRvcl9yZWZ1c2VzX2JlZm9yZV9hbnlfaW5wdXQoc2VsZik6XG4gICAgICAgIHJlc3VsdD1zdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsJy1PJyxzdHIoUGF0aChfX2ZpbGVfXykucGFyZW50LydhY3R1YXRvci5weScpLCctLXBoYXNlJywncmVsZWFzZScsJy0tcm9vdC1hdXRob3JpdHktcmVjZWlwdCcsJy9taXNzaW5nJywnLS1yb290LW5hdGl2ZS1vdXRjb21lJywnL21pc3NpbmcnLCctLXNvdXJjZS1yZXZpc2lvbicsUkVWSVNJT05dLGNhcHR1cmVfb3V0cHV0PVRydWUsdGV4dD1UcnVlKVxuICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5yZXR1cm5jb2RlLDApXG4gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ29wdGltaXplZCBpbnRlcnByZXRlciByZWZ1c2VkJyxyZXN1bHQuc3RkZXJyKVxuXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgdW5pdHRlc3QubWFpbigpXG4iCiAgICB9CiAgfSwKICAibmF0aXZlX2V4ZWN1dGlvbiI6IGZhbHNlLAogICJjYXNlX2V2aWRlbmNlIjogewogICAgInNxbGl0ZV9yZWFkb25seS5weSI6IHsKICAgICAgInNoYTI1NiI6ICI5MDkzYzY0ZjdmMGUzOWIyNDlkYTlmZWZkZjVhYWY0ZTQyNThiYzMxZTdhMjdmZDg4ODQ3OWNlMzI5YTIwNTA5IiwKICAgICAgImNvbnRlbnQiOiAiXCJcIlwiUHJlLW9wZW4gc2NoZW1hL2ludGVncml0eS9jb3VudCBwcm9vZjsgc3RkbGliIG9ubHksIG5ldmVyIGNvbnN0cnVjdHMgU3RvcmUuXCJcIlwiXG5pbXBvcnQgYXJncGFyc2VcbmZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZ1xuaW1wb3J0IGhhc2hsaWJcbmltcG9ydCBvc1xuaW1wb3J0IHJlXG5pbXBvcnQgc3RhdFxuaW1wb3J0IGpzb25cbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuaW1wb3J0IHNxbGl0ZTNcblxuXG5kZWYgaW5zcGVjdF9yZWFkb25seShwYXRoLCAqLCBfY2xvc2VkX3NuYXBzaG90PUZhbHNlKTpcbiAgICBwYXRoID0gUGF0aChwYXRoKVxuICAgIGlmIG5vdCBwYXRoLmlzX2ZpbGUoKSBvciBwYXRoLmlzX3N5bWxpbmsoKTpcbiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZXhpc3Rpbmcgbm9uc3ltbGluayBwcml2YXRlIGRhdGFiYXNlIHJlcXVpcmVkJylcbiAgICB1cmkgPSBwYXRoLnJlc29sdmUoKS5hc191cmkoKSArICc/bW9kZT1ybycgKyAoJyZpbW11dGFibGU9MScgaWYgX2Nsb3NlZF9zbmFwc2hvdCBlbHNlICcnKVxuICAgICMgc3FsaXRlMy5Db25uZWN0aW9uIGNvbnRleHQgbWFuYWdlbWVudCBlbmRzIHRyYW5zYWN0aW9uczsgaXQgZG9lcyBub3QgY2xvc2UuXG4gICAgd2l0aCBjbG9zaW5nKHNxbGl0ZTMuY29ubmVjdCh1cmksIHVyaT1UcnVlLCB0aW1lb3V0PTUpKSBhcyBkYjpcbiAgICAgICAgZGIuZXhlY3V0ZSgnUFJBR01BIHF1ZXJ5X29ubHk9T04nKVxuICAgICAgICBkYi5leGVjdXRlKCdCRUdJTicpXG4gICAgICAgIHZlcnNpb24gPSBkYi5leGVjdXRlKCdQUkFHTUEgdXNlcl92ZXJzaW9uJykuZmV0Y2hvbmUoKVswXVxuICAgICAgICBpZiB2ZXJzaW9uICE9IDU6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwcmUtb3BlbiBkYXRhYmFzZSBpcyBub3Qgc2NoZW1hNTsgcmVmdXNlIG1pZ3JhdGlvbicpXG4gICAgICAgIGlmIGRiLmV4ZWN1dGUoJ1BSQUdNQSBpbnRlZ3JpdHlfY2hlY2snKS5mZXRjaGFsbCgpICE9IFsoJ29rJywpXTpcbiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3JlYWQtb25seSBpbnRlZ3JpdHkgY2hlY2sgcmVmdXNlZCcpXG4gICAgICAgIGxpZmVjeWNsZSA9IHtuYW1lOiBkYi5leGVjdXRlKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSAnICsgdGFibGUpLmZldGNob25lKClbMF1cbiAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB0YWJsZSBpbiAoKCdyZWNvcmRzJywgJ2xpZmVjeWNsZV9yZWNvcmRzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXZlbnRzJywgJ2xpZmVjeWNsZV9ldmVudHMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdwZW5kaW5nJywgJ2xpZmVjeWNsZV9wZW5kaW5nJykpfVxuICAgICAgICByZXN1bHQgPSB7J3NjaGVtYV92ZXJzaW9uJzogdmVyc2lvbiwgJ2xpZmVjeWNsZSc6IGxpZmVjeWNsZSxcbiAgICAgICAgICAgICAgICAgICdvdXRib3gnOiBkaWN0KGRiLmV4ZWN1dGUoJ1NFTEVDVCBzdGF0ZSxDT1VOVCgqKSBGUk9NIG91dGJveCBHUk9VUCBCWSBzdGF0ZScpKSxcbiAgICAgICAgICAgICAgICAgICdzdWJtaXNzaW9ucyc6IGRpY3QoZGIuZXhlY3V0ZSgnU0VMRUNUIHN0YXRlLENPVU5UKCopIEZST00gc3VibWlzc2lvbnMgR1JPVVAgQlkgc3RhdGUnKSksXG4gICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ29rJywgJ3JlYWRfb25seV9wcmVfb3Blbic6IFRydWUsICdzdG9yZV9jb25zdHJ1Y3RlZCc6IEZhbHNlfVxuICAgICAgICBkYi5yb2xsYmFjaygpXG4gICAgcmV0dXJuIHJlc3VsdFxuXG5cbmRlZiBpbnNwZWN0X2Nsb3NlZF9zbmFwc2hvdChwYXRoLCBleHBlY3RlZF9zaGEyNTYpOlxuICAgIFwiXCJcIk9ubHkgYSBwcml2YXRlbHkgcmV0YWluZWQsIGZyb3plbiBtYWluLWZpbGUgc25hcHNob3Qgd2l0aCBubyBXQUwgZnJhbWVzLlxuXG4gICAgQ2FsbGVyIG11c3QgZXN0YWJsaXNoIGV4Y2x1c2l2ZSBzbmFwc2hvdCBjcmVhdGlvbi9hZG1pbiBleGl0L25vIHdyaXRlciwgYW5kXG4gICAgc3VwcGx5IHRoZSByZWNvcmRlZCBmcm96ZW4gbWFpbiBkaWdlc3QuIE5ldmVyIHVzZSBmb3IgdGhlIGxpdmUgZGF0YWJhc2UuXG4gICAgSW1tdXRhYmxlIFNRTGl0ZSByZWFkcyBpZ25vcmUgc3RhbGUgU0hNIGFuZCBuZXZlciBjcmVhdGUvY2hhbmdlIHNpZGVjYXJzLlxuICAgIEV4aXN0aW5nIHNpZGVjYXJzIHJlbWFpbiBjdXN0b2R5IGV2aWRlbmNlOyBub3RoaW5nIGlzIGRlbGV0ZWQvY2hlY2twb2ludGVkLlxuICAgIFwiXCJcIlxuICAgIHBhdGggPSBQYXRoKHBhdGgpXG4gICAgaWYgcmUuZnVsbG1hdGNoKHInWzAtOWEtZl17NjR9JywgZXhwZWN0ZWRfc2hhMjU2KSBpcyBOb25lOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleGFjdCBmcm96ZW4gc25hcHNob3QgZGlnZXN0IHJlcXVpcmVkJylcbiAgICBkZWYgbWV0YWRhdGEodGFyZ2V0KTpcbiAgICAgICAgaW5mbyA9IHRhcmdldC5sc3RhdCgpXG4gICAgICAgIGlmIG5vdCBzdGF0LlNfSVNSRUcoaW5mby5zdF9tb2RlKSBvciBzdGF0LlNfSU1PREUoaW5mby5zdF9tb2RlKSAhPSAwbzYwMCBvciBpbmZvLnN0X25saW5rICE9IDE6XG4gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwcml2YXRlIHNpbmdsZS1saW5rIHNuYXBzaG90IGN1c3RvZHkgcmVxdWlyZWQnKVxuICAgICAgICByZXR1cm4gaW5mb1xuICAgIG1haW4gPSBtZXRhZGF0YShwYXRoKVxuICAgIGlmIG5vdCAwIDwgbWFpbi5zdF9zaXplIDw9IDUxMiAqIDEwMjQqKjI6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2JvdW5kZWQgZnJvemVuIHNuYXBzaG90IHJlcXVpcmVkJylcbiAgICBkZWYgc2lkZWNhcnMoKTpcbiAgICAgICAgaWRlbnRpdGllcyA9IHt9XG4gICAgICAgIGZvciBzdWZmaXggaW4gKCctd2FsJywgJy1zaG0nKTpcbiAgICAgICAgICAgIHRhcmdldCA9IFBhdGgoc3RyKHBhdGgpICsgc3VmZml4KVxuICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKHRhcmdldCk6XG4gICAgICAgICAgICAgICAgaW5mbyA9IG1ldGFkYXRhKHRhcmdldClcbiAgICAgICAgICAgICAgICBpZiBpbmZvLnN0X3VpZCAhPSBtYWluLnN0X3VpZCBvciBpbmZvLnN0X2dpZCAhPSBtYWluLnN0X2dpZDpcbiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc25hcHNob3Qgc2lkZWNhciBjdXN0b2R5IGNoYW5nZWQnKVxuICAgICAgICAgICAgICAgIGlmIHN1ZmZpeCA9PSAnLXdhbCcgYW5kIGluZm8uc3Rfc2l6ZSAhPSAwOlxuICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzbmFwc2hvdCBoYXMgV0FMIGZyYW1lczsgaW1tdXRhYmxlIHJlYWQgcmVmdXNlZCcpXG4gICAgICAgICAgICAgICAgaWRlbnRpdGllc1tzdWZmaXhdID0gKGluZm8uc3RfZGV2LCBpbmZvLnN0X2lubywgaW5mby5zdF9zaXplLCBpbmZvLnN0X210aW1lX25zKVxuICAgICAgICByZXR1cm4gaWRlbnRpdGllc1xuICAgIGJlZm9yZV9zaWRlY2FycyA9IHNpZGVjYXJzKClcbiAgICBkZWYgZGlnZXN0KCk6XG4gICAgICAgIHZhbHVlID0gaGFzaGxpYi5zaGEyNTYoKVxuICAgICAgICB3aXRoIHBhdGgub3BlbigncmInKSBhcyBzdHJlYW06XG4gICAgICAgICAgICBmb3IgYmxvY2sgaW4gaXRlcihsYW1iZGE6IHN0cmVhbS5yZWFkKDEwMjQqKjIpLCBiJycpOlxuICAgICAgICAgICAgICAgIHZhbHVlLnVwZGF0ZShibG9jaylcbiAgICAgICAgcmV0dXJuIHZhbHVlLmhleGRpZ2VzdCgpXG4gICAgaWYgZGlnZXN0KCkgIT0gZXhwZWN0ZWRfc2hhMjU2OlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmcm96ZW4gbWFpbi1maWxlIGRpZ2VzdCBjaGFuZ2VkIGJlZm9yZSBpbnNwZWN0aW9uJylcbiAgICBwcm9vZiA9IGluc3BlY3RfcmVhZG9ubHkocGF0aCwgX2Nsb3NlZF9zbmFwc2hvdD1UcnVlKVxuICAgIGFmdGVyID0gbWV0YWRhdGEocGF0aClcbiAgICBpZiAoYWZ0ZXIuc3RfZGV2LCBhZnRlci5zdF9pbm8sIGFmdGVyLnN0X3VpZCwgYWZ0ZXIuc3RfZ2lkLCBhZnRlci5zdF9zaXplKSAhPSAobWFpbi5zdF9kZXYsIG1haW4uc3RfaW5vLCBtYWluLnN0X3VpZCwgbWFpbi5zdF9naWQsIG1haW4uc3Rfc2l6ZSk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Zyb3plbiBtYWluLWZpbGUgaWRlbnRpdHkgY2hhbmdlZCcpXG4gICAgaWYgZGlnZXN0KCkgIT0gZXhwZWN0ZWRfc2hhMjU2IG9yIHNpZGVjYXJzKCkgIT0gYmVmb3JlX3NpZGVjYXJzOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmcm96ZW4gc25hcHNob3QgY2hhbmdlZCBkdXJpbmcgaW5zcGVjdGlvbicpXG4gICAgcmV0dXJuIHByb29mXG5cblxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj1fX2RvY19fKVxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGInLCB0eXBlPVBhdGgsIHJlcXVpcmVkPVRydWUpXG4gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcbiAgICB0cnk6XG4gICAgICAgIHByaW50KGpzb24uZHVtcHMoaW5zcGVjdF9yZWFkb25seShhcmdzLmRiKSwgc29ydF9rZXlzPVRydWUpKVxuICAgIGV4Y2VwdCBFeGNlcHRpb246XG4gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoJ3JlYWQtb25seSBzY2hlbWE1L2ludGVncml0eS9jb3VudCBnYXRlIHJlZnVzZWQ7IG5vIFN0b3JlL2FkbWluIG9wZW4nKSBmcm9tIE5vbmVcbiIKICAgIH0sCiAgICAiY2hhbmdlX2d1YXJkLnB5IjogewogICAgICAic2hhMjU2IjogImIzZWUyYjg5ZGUxNGUyMDRlZmVkZDAxNmQzOTAwYjZlMzFmY2M5ZjBlYTBmMzEyNWQzYTQ3OTRkOTM4Y2EyMDEiLAogICAgICAiY29udGVudCI6ICJcIlwiXCJSZWFkLW9ubHkgZXhhY3QgRGVwbG95bWVudCBhbmQgYWRtaXNzaW9uIGJvdW5kYXJpZXM7IG5vIG11dGF0aW9uIGF1dGhvcml0eS5cIlwiXCJcbmltcG9ydCBjb3B5XG5pbXBvcnQgaGFzaGxpYlxuaW1wb3J0IGpzb25cblxuQkFTRSA9ICdmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2Ojc2M2MzNjQwMmM4YmU3Y2M0YzFiZDFhNjE2MjNkMWFmZjkxMTZkNTIyNDE4Nzc0MjViNDVhNzAxOGNjMDg4M2EnXG5DQU5ESURBVEUgPSAnZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uQHNoYTI1NjpmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzJ1xuXG5cbmRlZiBkZXBlbmRlbmN5X3Byb2plY3Rpb24oY29uZmlnbWFwLCBwdmMpOlxuICAgIGlmIChjb25maWdtYXAuZ2V0KCdraW5kJykgIT0gJ0NvbmZpZ01hcCcgb3IgY29uZmlnbWFwLmdldCgnaW1tdXRhYmxlJykgaXMgbm90IFRydWVcbiAgICAgICAgICAgIG9yIGNvbmZpZ21hcFsnbWV0YWRhdGEnXVsnbmFtZXNwYWNlJ10gIT0gJ2luZm9ybWVkLWRlY2lzaW9uJ1xuICAgICAgICAgICAgb3IgY29uZmlnbWFwWydtZXRhZGF0YSddWyduYW1lJ10gIT0gJ2luZm9ybWVkLWRlY2lzaW9uLXJ1bnRpbWUtNmMyMjE4NzhkMDUxJ1xuICAgICAgICAgICAgb3Igc2V0KGNvbmZpZ21hcC5nZXQoJ2RhdGEnLCB7fSkpICE9IHsncnVudGltZS5qc29uJ31cbiAgICAgICAgICAgIG9yIGNvbmZpZ21hcC5nZXQoJ2JpbmFyeURhdGEnKSk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VuZXhwZWN0ZWQgaW1tdXRhYmxlIHJ1bnRpbWUgY29uZmlnIGlkZW50aXR5JylcbiAgICBpZiAocHZjLmdldCgna2luZCcpICE9ICdQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0nXG4gICAgICAgICAgICBvciBwdmNbJ21ldGFkYXRhJ11bJ25hbWVzcGFjZSddICE9ICdpbmZvcm1lZC1kZWNpc2lvbidcbiAgICAgICAgICAgIG9yIHB2Y1snbWV0YWRhdGEnXVsnbmFtZSddICE9ICdpbmZvcm1lZC1kZWNpc2lvbi1kYXRhJ1xuICAgICAgICAgICAgb3IgcHZjLmdldCgnc3RhdHVzJywge30pLmdldCgncGhhc2UnKSAhPSAnQm91bmQnXG4gICAgICAgICAgICBvciBub3QgcHZjLmdldCgnc3BlYycsIHt9KS5nZXQoJ3ZvbHVtZU5hbWUnKSk6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VuZXhwZWN0ZWQgYm91bmQgUFZDIGN1c3RvZHknKVxuICAgIGNvbmZpZyA9IHByb2plY3Rpb24oY29uZmlnbWFwKVxuICAgIGNvbmZpZy5wb3AoJ2RhdGEnKVxuICAgIGNvbmZpZ1snY2Fub25pY2FsX2RhdGFfc2hhMjU2J10gPSBoYXNobGliLnNoYTI1Nihqc29uLmR1bXBzKFxuICAgICAgICBjb25maWdtYXBbJ2RhdGEnXSwgc29ydF9rZXlzPVRydWUsIHNlcGFyYXRvcnM9KCcsJywgJzonKSkuZW5jb2RlKCkpLmhleGRpZ2VzdCgpXG4gICAgcmV0dXJuIHsnY29uZmlnbWFwJzogY29uZmlnLCAncHZjJzogcHJvamVjdGlvbihwdmMpLCAncHZjX3BoYXNlJzogJ0JvdW5kJ31cblxuXG5kZWYgY2hlY2tfZGVwZW5kZW5jaWVzKGNvbmZpZ21hcCwgcHZjLCBzZWFsZWQpOlxuICAgIGlmIGRlcGVuZGVuY3lfcHJvamVjdGlvbihjb25maWdtYXAsIHB2YykgIT0gc2VhbGVkOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdydW50aW1lIGNvbmZpZyBvciBQVkMgaWRlbnRpdHkvY3VzdG9keSBjaGFuZ2VkJylcblxuXG5kZWYgcHJvamVjdGlvbih2YWx1ZSk6XG4gICAgdmFsdWUgPSBjb3B5LmRlZXBjb3B5KHZhbHVlKVxuICAgIHZhbHVlLnBvcCgnc3RhdHVzJywgTm9uZSlcbiAgICBmb3Iga2V5IGluICgncmVzb3VyY2VWZXJzaW9uJywgJ2dlbmVyYXRpb24nLCAnY3JlYXRpb25UaW1lc3RhbXAnLCAnbWFuYWdlZEZpZWxkcycpOlxuICAgICAgICB2YWx1ZVsnbWV0YWRhdGEnXS5wb3Aoa2V5LCBOb25lKVxuICAgIGZvciBrZXkgaW4gKCdrdWJlY3RsLmt1YmVybmV0ZXMuaW8vbGFzdC1hcHBsaWVkLWNvbmZpZ3VyYXRpb24nLCAnZGVwbG95bWVudC5rdWJlcm5ldGVzLmlvL3JldmlzaW9uJyk6XG4gICAgICAgIHZhbHVlWydtZXRhZGF0YSddLmdldCgnYW5ub3RhdGlvbnMnLCB7fSkucG9wKGtleSwgTm9uZSlcbiAgICByZXR1cm4gdmFsdWVcblxuXG5kZWYgY2hlY2tfY3VycmVudChjdXJyZW50LCBzZWFsZWQpOlxuICAgIGlmIHByb2plY3Rpb24oY3VycmVudCkgIT0gc2VhbGVkOlxuICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzZWFsZWQgbGl2ZSBVSUQgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2VkJylcblxuXG5kZWYgY2hlY2tfYWRtaXR0ZWQoYWRtaXR0ZWQsIHNlYWxlZCk6XG4gICAgZXhwZWN0ZWQgPSBjb3B5LmRlZXBjb3B5KHNlYWxlZClcbiAgICBjb250YWluZXJzID0gZXhwZWN0ZWRbJ3NwZWMnXVsndGVtcGxhdGUnXVsnc3BlYyddWydjb250YWluZXJzJ11cbiAgICBpZiBsZW4oY29udGFpbmVycykgIT0gMSBvciBjb250YWluZXJzWzBdWyduYW1lJ10gIT0gJ2luZm9ybWVkLWRlY2lzaW9uJyBvciBjb250YWluZXJzWzBdWydpbWFnZSddICE9IEJBU0U6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VuZXhwZWN0ZWQgYmFzZWxpbmUgY29udGFpbmVyIGlkZW50aXR5JylcbiAgICBjb250YWluZXJzWzBdWydpbWFnZSddID0gQ0FORElEQVRFXG4gICAgaWYgcHJvamVjdGlvbihhZG1pdHRlZCkgIT0gZXhwZWN0ZWQ6XG4gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2FkbWlzc2lvbiBjaGFuZ2VkIGNvbmZpZ3VyYXRpb24gYmV5b25kIHRoZSBzb2xlIGltYWdlIHBpbicpXG5cblxuZGVmIHRyYW5zcG9ydF9yZXN1bHQoZXhpdF9jb2RlLCBvdXRwdXQpOlxuICAgIGltcG9ydCBqc29uXG4gICAgdHJ5OlxuICAgICAgICB2YWx1ZSA9IGpzb24ubG9hZHMob3V0cHV0KVxuICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKTpcbiAgICAgICAgcmV0dXJuIHsnYWxsX2NoZWNrc19wYXNzJzogRmFsc2UsICdyZWFzb24nOiAnaW52YWxpZCB0cmFuc3BvcnQgcmVzdWx0J31cbiAgICBpZiBleGl0X2NvZGUgIT0gMCBvciBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCkgb3IgdmFsdWUuZ2V0KCdhbGxfY2hlY2tzX3Bhc3MnKSBpcyBub3QgVHJ1ZTpcbiAgICAgICAgcmV0dXJuIHsnYWxsX2NoZWNrc19wYXNzJzogRmFsc2UsICdyZWFzb24nOiAncmVhZC1vbmx5IHByZWZsaWdodCByZWZ1c2VkJ31cbiAgICByZXR1cm4gdmFsdWVcbiIKICAgIH0sCiAgICAiY2hlY2tfaW5zdGFsbGVkLnB5IjogewogICAgICAic2hhMjU2IjogImEzNGE1MWJlOWM5ZjJiMTZhMDZhODgxNzNiNWM2YzQ5MmM5OTU3ZmUwMjFjZjQxMmE4NmExNzM3NzMwNjQwYWQiLAogICAgICAiY29udGVudCI6ICJpbXBvcnQgY29weSxqc29uLHRpbWVcbmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLHRpbWV6b25lXG5mcm9tIGluZm9ybWVkX2RlY2lzaW9uLnBvbGljeSBpbXBvcnQgUG9saWN5Q2xpZW50LENPTlRSQUNULHN1Ym1pdHRlZF9kaWdlc3RcbnBpbj0nc2hhMjU2OicrJ2InKjY0XG5yZXE9eydpZCc6J2ltYWdlLXB1cnBvc2UtZml4dHVyZScsJ3RlbmFudCc6J3RlbmFudDpwbGF0Zm9ybScsJ3N1YmplY3QnOnsnaWQnOidzeW50aGV0aWMnLCd0eXBlJzonc2VydmljZScsJ3RlbmFudCc6J3RlbmFudDpwbGF0Zm9ybSd9LCdyZXNvdXJjZSc6eydpZCc6J21lbW86Zml4dHVyZScsJ3R5cGUnOidtZW1vJywnc3lzdGVtJzonaW5mb3JtZWQtZGVjaXNpb24nLCd0ZW5hbnQnOid0ZW5hbnQ6cGxhdGZvcm0nfSwnYWN0aW9uJzoncmVnaXN0ZXInLCdjb250ZXh0Jzp7fX1cbmNsYXNzIFRyYW5zcG9ydDpcbiBkZWYgcmVxdWVzdChzZWxmLCphcmdzLCoqa3dhcmdzKTpcbiAgbm93PXRpbWUudGltZSgpOyBzdGFtcD1sYW1iZGEgdDpkYXRldGltZS5mcm9tdGltZXN0YW1wKHQsdGltZXpvbmUudXRjKS5pc29mb3JtYXQoKVxuICBiPXsqKmNvcHkuZGVlcGNvcHkoe2s6cmVxW2tdIGZvciBrIGluICgndGVuYW50Jywnc3ViamVjdCcsJ2FjdGlvbicsJ3Jlc291cmNlJywnY29udGV4dCcpfSksJ3JlcXVlc3RfZGlnZXN0Jzonc2hhMjU2OicrJ2UnKjY0LCdzdWJtaXR0ZWRfcmVxdWVzdF9kaWdlc3QnOnN1Ym1pdHRlZF9kaWdlc3QocmVxKX1cbiAgaWYgc2VsZi5wdXJwb3NlIT0nQUJTRU5UJzpiWydwdXJwb3NlJ109c2VsZi5wdXJwb3NlXG4gIGQ9eydpZCc6J3N5bnRoZXRpYy1kZWNpc2lvbicsJ2NvbnRyYWN0X3ZlcnNpb24nOkNPTlRSQUNULCdyZXF1ZXN0X2lkJzpyZXFbJ2lkJ10sJ2VmZmVjdCc6J2FsbG93JywnbWF0Y2hlZF9wb2xpY3lfdmVyc2lvbic6J3YxJywnc3ViamVjdCc6cmVxWydzdWJqZWN0J10sJ3Jlc291cmNlJzpyZXFbJ3Jlc291cmNlJ10sJ2JpbmRpbmcnOmIsJ2xpZmV0aW1lJzp7J2tpbmQnOid0dGwnLCdub3RfYmVmb3JlJzpzdGFtcChub3ctMSksJ2V4cGlyZXNfYXQnOnN0YW1wKG5vdys2MCl9LCdwcm92ZW5hbmNlJzp7J3BvbGljeV9wYWNrYWdlJzonZml4dHVyZScsJ3BvbGljeV92ZXJzaW9uJzondjEnLCdwb2xpY3lfcGFja2FnZV9kaWdlc3QnOnBpbiwncmVnaXN0cnlfc25hcHNob3RfZGlnZXN0Jzonc2hhMjU2OicrJ2MnKjY0LCdldmFsdWF0b3InOidmbGV4LWF1dGgvZml4dHVyZScsJ2RlY2lzaW9uX3RpbWUnOnN0YW1wKG5vdyl9fVxuICByZXR1cm4gMjAwLGRcbmNoZWNrcz1bXVxuZm9yIHB1cnBvc2UgaW4gKCdBQlNFTlQnLCcnLCdyZWFkYmFjaycsJ2VuZm9yY2VtZW50JywndW5rbm93bicsTm9uZSxGYWxzZSwwLFtdLHt9KTpcbiB0PVRyYW5zcG9ydCgpO3QucHVycG9zZT1wdXJwb3NlXG4gYz1Qb2xpY3lDbGllbnQoJ2h0dHBzOi8vZml4dHVyZS5pbnZhbGlkJyxsYW1iZGE6J3N5bnRoZXRpYy1vbmx5JyxwYWNrYWdlPSdmaXh0dXJlJyx2ZXJzaW9uPSd2MScscGFja2FnZV9kaWdlc3Q9cGluLHRyYW5zcG9ydD10KVxuIG89Yy5jaGVjayhyZXEpXG4gaWYgcHVycG9zZSBpbiAoJ0FCU0VOVCcsJycpOmFzc2VydCBvLm91dGNvbWU9PSdhbGxvdyc7by5yZXF1aXJlX2N1cnJlbnQodGltZS50aW1lKCkpXG4gZWxzZTphc3NlcnQgby5vdXRjb21lPT0naW52YWxpZF9kZWNpc2lvbicgYW5kIG8uZGVjaXNpb25fanNvbiBpcyBOb25lXG4gY2hlY2tzLmFwcGVuZChzdHIocHVycG9zZSkpXG5wcmludChqc29uLmR1bXBzKHsnaW5zdGFsbGVkX2ltYWdlX3B1cnBvc2VfdmFyaWFudHMnOmxlbihjaGVja3MpLCdiaW5kaW5nX2Zvcm1zX2FsbG93ZWQnOjIsJ2Fkdmlzb3J5X29yX21hbGZvcm1lZF9yZWZ1c2VkJzo4LCdzeW50aGV0aWNfb25seSc6VHJ1ZSwnbmF0aXZlX3Byb3ZpZGVyJzpGYWxzZX0pKVxuIgogICAgfSwKICAgICJwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IjogewogICAgICAic2hhMjU2IjogImNlODhhY2E1ZTJkNmNkNWFiNzUzMzg5OGJjOWIyNDZiZDE1OTQ4MmM0YWNjY2IwYWZlNGM0NTFlZTg4ZjU3ZmEiLAogICAgICAiY29udGVudCI6ICJcIlwiXCJSdW4gb25seSBpbnNpZGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kIEFGVEVSIHZlcmlmaWVkIGNhbmRpZGF0ZSBSZWFkeS5cblxuVGhlIGZpeGVkIGV4aXN0aW5nIGRpc3BhdGNoZXIgbG9hZHMgaXRzIGludGVybmFsIGNyZWRlbnRpYWw7IHJvb3QgbmV2ZXIgcmVhZHNcbml0LiBIVFRQIHN1Y2Nlc3MgcHJvdmVzIGNhbm9uaWNhbCBsaWZlY3ljbGUub3V0Y29tZXMgUERQIGdhdGUgcmV0dXJuZWQsIG5vdCBhblxuYWR2aXNvcnkgdmVyZGljdCBlbWlzc2lvbiBvciBhIHN1YnN0aXR1dGUgZm9yIHNlcGFyYXRlIGV2aWRlbmNlIG9ibGlnYXRpb25zLlxuUm9vdCByZWNvcmRzIHRoaXMgYm91bmRlZCBtZXRhZGF0YSByZWNlaXB0IHdpdGggdmVyaWZpZWQgUG9kVUlEL2ltYWdlL3NvdXJjZS5cblRoaXMgcHJlcGFyYXRpb24gb25seSB3cml0ZXMgc291cmNlOyBubyByZXF1ZXN0IGlzIG1hZGUgaGVyZS5cblwiXCJcIlxuaW1wb3J0IGRhdGV0aW1lLGpzb24sdXJsbGliLnJlcXVlc3QsdXJsbGliLmVycm9yXG5mcm9tIGFwaS5zZXJ2aWNlcy5tZW1vX2Rpc3BhdGNoIGltcG9ydCBPUklHSU4sTm9SZWRpcmVjdCx0b2tlbl9maWxlXG5pZD0naW5mZC0yMDI2MTAxMS16bGliLXJlbWVkaWF0aW9uLXIxJ1xucmVxPXVybGxpYi5yZXF1ZXN0LlJlcXVlc3QoT1JJR0lOKycvdjEvZGVjaXNpb25zLycraWQrJy9vdXRjb21lcz92ZXJzaW9uPTEnLGhlYWRlcnM9eydBdXRob3JpemF0aW9uJzonQmVhcmVyICcrdG9rZW5fZmlsZSgnL3Zhci9ydW4vc2VjcmV0cy9zdGF0ZS1odWIvaW5mb3JtZWQtZGVjaXNpb24vbGlmZWN5Y2xlLXRva2VuJyl9KVxub3BlbmVyPXVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcih1cmxsaWIucmVxdWVzdC5Qcm94eUhhbmRsZXIoe30pLE5vUmVkaXJlY3QoKSlcbnRyeTpcbiB3aXRoIG9wZW5lci5vcGVuKHJlcSx0aW1lb3V0PTE1KSBhcyByZXNwb25zZTpcbiAgcmF3PXJlc3BvbnNlLnJlYWQoMTA0ODU3NylcbiAgaWYgbGVuKHJhdyk+MTA0ODU3NjpyYWlzZSBWYWx1ZUVycm9yKCdvdmVyc2l6ZScpXG4gIHI9anNvbi5sb2FkcyhyYXcpXG4gcHJpbnQoanNvbi5kdW1wcyh7J21lbW9faWQnOmlkLCdzb3VyY2VfbWVtb192ZXJzaW9uJzoxLCdvYnNlcnZlZF9hdCc6ZGF0ZXRpbWUuZGF0ZXRpbWUubm93KGRhdGV0aW1lLnRpbWV6b25lLnV0YykuaXNvZm9ybWF0KCksJ25hdGl2ZV9hdXRoZW50aWNhdGVkX2Nhbm9uaWNhbF9saWZlY3ljbGVfb3V0Y29tZXMnOlRydWUsJ25hdGl2ZV9wcm92aWRlcl9wYXRoX3JldHVybmVkJzpUcnVlLCdjcmVkZW50aWFsX21hdGVyaWFsX291dHB1dCc6RmFsc2UsJ3Jldmlldyc6ci5nZXQoJ3JldmlldycpLCdkaXNwb3NpdGlvbl9jb3VudCc6bGVuKHIuZ2V0KCdkaXNwb3NpdGlvbnMnLFtdKSksJ2Rpc3Bvc2l0aW9ucyc6W3trOmQuZ2V0KGspIGZvciBrIGluICgnaWQnLCdhcHByb3ZhbF9pZCcsJ3N1Ym1pc3Npb25fc3RhdGUnLCdkaXNwb3NpdGlvbicsJ2FwcHJvdmVkX2F0JywnZGVjaWRlZF9hdCcpfSBmb3IgZCBpbiByLmdldCgnZGlzcG9zaXRpb25zJyxbXSldfSkpXG5leGNlcHQgRXhjZXB0aW9uIGFzIGU6cHJpbnQoanNvbi5kdW1wcyh7J21lbW9faWQnOmlkLCdzdGF0dXMnOid1bnZlcmlmaWVkJywnZXJyb3JfY2xhc3MnOnR5cGUoZSkuX19uYW1lX199KSk7cmFpc2UgU3lzdGVtRXhpdCgxKVxuIgogICAgfSwKICAgICJpbnN0YWxsZWQtemxpYi1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogIjZhZjYyZjg2ZjUwYWMxODVmYWI5NDE2M2MyNGFjODE1MGVhZDY5ZTYyZjhkODI1YjBkY2UxZTc1YTVhNTdiNjgiLAogICAgICAiY29udGVudCI6ICJ7XG4gIFwiaW1hZ2VcIjogXCJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjNcIixcbiAgXCJ6bGliX3BhY2thZ2VcIjogXCIxLjMuMi1yMVwiLFxuICBcImZpbGVzXCI6IHtcbiAgICBcImxpYi9hcGsvZGIvaW5zdGFsbGVkXCI6IFtcbiAgICAgIFwiZmlsZVwiLFxuICAgICAgNDIwLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICBcImY1OTA3NjIxOTY3MTBlMjVjMGU5ZjcyZGEwNjQyY2FkOGE1ZGNiYTBhYTllNThhMGNiYWE2NTY4NGQxNWMwMDFcIlxuICAgIF0sXG4gICAgXCJ1c3IvbGliL2xpYnouc28uMS4zLjJcIjogW1xuICAgICAgXCJmaWxlXCIsXG4gICAgICA0OTMsXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIFwiZWNjOGI5ZGZjNDVlYjdmYTI5YjQxMGZmYWNhNjI1Nzg3Mzg5MGRlNTNiODBmZTkxNzM1NzM3YjQ5MDY3YzVmMlwiXG4gICAgXVxuICB9XG59XG4iCiAgICB9CiAgfQp9Cg==" + } + ] + }, + "publish": { + "version": 1, + "audience": { + "subjects": [], + "groups": [ + "net-kingdom-admins" + ] + } + }, + "review": { + "version": 1, + "options": { + "submitter": "state-hub", + "memo_class": "decision-record", + "review_group": "net-kingdom-admins", + "approval_intent": { + "action": "administer", + "principal": "informed-decision", + "purpose": "Approve only exact zlib85091 image-only T05 release and fresh protected native backup/restore gates; no prior T04 approval reuse or unrelated grant.", + "target": { + "id": "INFD-WP-0009-T05/zlib85091-r1", + "type": "runtime-change", + "system": "railiance01" + } + } + } + } + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47 new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47 @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - service.candidate.json + - registries.candidate.json +commonAnnotations: + informed-decision.coulomb.social/admission: approved; INFD-WP-0007 cutover diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453 new file mode 100644 index 0000000..02232fc --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453 @@ -0,0 +1,41 @@ +{ + "kind": "informed-decision.supervised-release-proposal", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "trial_id": "infd-zlib-20261011-r1", + "state": "prepared-unapproved", + "memo_id": "infd-20261011-zlib-remediation-r1", + "memo_version": 1, + "task": "INFD-WP-0009-T05", + "candidate_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "artifact_source_revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "prior_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "prior_application_revision": "c96b0c6d881e855d1d158003c6de90ef390262e2", + "source_revision": null, + "published_artifact_verified": true, + "native_actions_executed": false, + "approval_id": null, + "authority_mode": "ADMINISTER", + "target": "realm:kubernetes/railiance01/informed-decision", + "cost_estimate_eur": 0, + "risk": "Private same-schema backup copies and brief Recreate availability gap. Failed or ambiguous phases retained; no replay. Rollback changes Deployment image/source only, retains latest database.", + "execute_by": "2026-10-12T23:59:59Z", + "release_must_start_by": "2026-10-12T23:29:59Z", + "max_snapshot_bytes": 536870912, + "maximum_new_snapshot_payload_bytes_each_site": 1073741824, + "local_extra_disposable_clone_max_bytes": 536870912, + "private_metadata_and_sqlite_sidecars_additional_headroom_bytes": 16777216, + "unbound_inputs": [ + "exact committed owner rendering revision retained in root supervised receipt", + "Product and Platform final acknowledgments", + "confirmed founder exact new disposition" + ], + "published_verification_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "native_readonly_preflight_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "executor_plan_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "execution_bundle_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "rollback_preflight_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "post_ready_native_provider_probe": "canonical lifecycle.outcomes SOURCE1 through existing admitted StateHub dispatcher; credentials stay inside Pod; bounded metadata correlated to verified candidate image/Pod/source", + "fresh_scan_contract_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "preparation_failure_history_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108 new file mode 100644 index 0000000..31cbd1c --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108 @@ -0,0 +1,170 @@ +"""Supervised receipt bookkeeping, not an authenticated approval provider.""" +import datetime +import fcntl +import hashlib +import json +import os +import re +from pathlib import Path +import stat +import uuid + +FOUNDER = {'kind': 'person', 'sub': 'uid=platform-root,ou=people,dc=netkingdom,dc=local'} +MEMO_ID = 'infd-20261011-zlib-remediation-r1' +PROPOSAL = 'INFD-WP-0009-T05/zlib85091-r1' +PHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline', + 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify') + + +def require(value, reason): + if not value: + raise ValueError(reason) + + +def sha(path): + digest = hashlib.sha256() + with Path(path).open('rb') as stream: + for block in iter(lambda: stream.read(1024**2), b''): + digest.update(block) + return digest.hexdigest() + + +def private(path, directory=False): + info = Path(path).lstat() + require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode)) + and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600) + and (directory or info.st_nlink == 1), 'private owned custody required') + + +def authority(receipt, outcome, memo_sha, source_revision, phase, now=None): + """Root must freshly verify native outcome at fixed ORIGIN outside this helper. + + Receipt files/flags are not signed grants. This function checks the exact + supervised receipt relation; existing harness/founder authority remains the + actual permission boundary. It never authenticates a caller as human. + """ + now = now or datetime.datetime.now(datetime.timezone.utc) + require(phase in PHASES, 'fixed phase required') + require(receipt.get('proposal_id') == PROPOSAL and receipt.get('memo_id') == MEMO_ID + and receipt.get('memo_version') == 1 and receipt.get('memo_sha256') == memo_sha + and receipt.get('source_revision') == source_revision + and receipt.get('activation') == 'APPROVED' + and receipt.get('authority_mode') == 'ADMINISTER' + and receipt.get('target') == 'realm:kubernetes/railiance01/informed-decision' + and receipt.get('verification_method') == 'root-fixed-origin-native-readback' + and receipt.get('runtime_authenticated_grant') is False + and receipt.get('outcome_query') == '/lifecycle/memos/' + MEMO_ID + '/outcomes?version=1', + 'exact externally verified supervised receipt required') + verified = datetime.datetime.fromisoformat(receipt['verified_at'].replace('Z', '+00:00')) + require(verified.tzinfo is not None and 0 <= (now - verified).total_seconds() <= 120, + 'fresh root native readback required before every phase') + deadline = datetime.datetime.fromisoformat('2026-10-12T23:59:59+00:00') + require(now < deadline, 'approved execution window expired') + if phase == 'release': + require((deadline-now).total_seconds() >= 1800, 'reserve thirty minutes for verification and recovery') + require(outcome.get('memo_id') == MEMO_ID and outcome.get('review', {}).get('stale') is False + and outcome['review'].get('intake_state') == 'ready', 'native review is not ready/current') + review_id = outcome['review']['memo_id'] + require(review_id == receipt.get('review_memo_id'), 'native review identity changed') + accepted = [x for x in outcome.get('dispositions', []) + if x.get('submission_state') == 'confirmed' + and x.get('disposition', {}).get('verb') == 'accept' + and x['disposition'].get('memo_version') == 1] + require(len(accepted) == 1, 'one confirmed founder acceptance required') + accepted = accepted[0]['disposition'] + require(accepted.get('actor') == FOUNDER and accepted.get('memo_id') == review_id + and accepted.get('approval_id') == receipt.get('approval_id') + and accepted.get('id') == receipt.get('disposition_id') + and accepted.get('at') == receipt.get('accepted_at'), 'exact founder disposition mismatch') + require(re.fullmatch(r'[a-f0-9-]{36}', accepted['approval_id']) is not None + and re.fullmatch(r'disp-[a-f0-9-]{36}', accepted['id']) is not None + and re.fullmatch(r'review-[a-f0-9-]{36}', review_id) is not None, + 'native disposition identifiers are malformed') + accepted_at = datetime.datetime.fromisoformat(accepted['at'].replace('Z', '+00:00')) + require(accepted_at.tzinfo is not None and accepted_at <= verified, 'acceptance time not bounded') + return {key: receipt[key] for key in ('approval_id', 'disposition_id', 'accepted_at', 'verified_at')} + + +def fresh_scan(receipt, report, now=None): + """Root supervised scan bookkeeping; actual scanner proof stays retained.""" + now=now or datetime.datetime.now(datetime.timezone.utc) + require(receipt.get('image')=='forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + and receipt.get('artifact_source_revision')=='9b4bb25d325698ae543e7e8a8a3c3592db1f58fc' + and receipt.get('scanner')=='aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969' + and receipt.get('no_suppression') is True and receipt.get('full_allseverity_scan') is True + and receipt.get('exit_code')==0,'exact full immutable artifact scan required') + scanned=datetime.datetime.fromisoformat(receipt['completed_at'].replace('Z','+00:00')) + metadata=receipt['db_metadata'];updated=datetime.datetime.fromisoformat(metadata['UpdatedAt'].replace('Z','+00:00'));next_update=datetime.datetime.fromisoformat(metadata['NextUpdate'].replace('Z','+00:00')) + require(all(t.tzinfo is not None for t in (scanned,updated,next_update)) + and updated<=scanned<=now 10**12 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c new file mode 100644 index 0000000..605f4da --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c @@ -0,0 +1,520 @@ +[ + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-review.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-review.json", + "original_sha256": null, + "staged_sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/mapping.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/mapping.json", + "original_sha256": null, + "staged_sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": null, + "staged_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "original_sha256": null, + "staged_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "original_sha256": null, + "staged_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": null, + "staged_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": null, + "staged_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": null, + "staged_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_initial_dispatch.py", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_initial_dispatch.py", + "original_sha256": null, + "staged_sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/published-evidence-manifest.json", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/published-evidence-manifest.json", + "original_sha256": null, + "staged_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9" + }, + { + "repo": "railiance-platform", + "path": "intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "staged_path": "/tmp/infd-zlib-release-platform-review-stage/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "original_sha256": null, + "staged_sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290" + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a new file mode 100644 index 0000000..4502f07 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a @@ -0,0 +1,20 @@ +"""Synthetic function and transport probes only. Never invoke main/native/Docker.""" +import ast,datetime,importlib.util,json,sys,subprocess +from pathlib import Path +from unittest.mock import patch +root=Path(sys.argv[1]);sys.path.insert(0,str(root));import actuator,native_program +from authority_journal import fresh_scan +actuator.CASE=root.parent +results={} +try:actuator.remote("drill-backup","e"*40,{},operation_intent=None) +except TypeError:results["operation_keyword_rejected_before_transport"]=True +captured=[] +def fake(argv,body=None,**kwargs): + captured.append(json.loads(ast.literal_eval(body)));return subprocess.CompletedProcess(argv,0,'{"all_checks_pass":true}','') +with patch.object(native_program,"PROGRAM","__PAYLOAD__"),patch.object(actuator,"run",side_effect=fake):actuator.remote("drill-copy","e"*40,{}) +results["copy_payload_missing_snapshot_identity"]="snapshot_identity" not in captured[0] +results["payload_missing_operation_intent"]="operation_intent" not in captured[0] +receipt={"image":actuator.IMAGE,"artifact_source_revision":"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc","scanner":"aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969","no_suppression":True,"full_allseverity_scan":True,"exit_code":0,"completed_at":"2026-10-11T01:59:00Z","db_metadata":{"UpdatedAt":"2026-10-10T19:00:00Z","NextUpdate":"2026-10-11T19:00:00Z","Version":2},"db_sha256":"a"*64,"full_report_sha256":"b"*64} +results["incomplete_unbound_zero_report_accepted"]=fresh_scan(receipt,{"Results":[{}]},datetime.datetime(2026,10,11,2,tzinfo=datetime.timezone.utc))["allseverity_findings"]==0 +print(json.dumps(results,sort_keys=True)) +if not all(results.values()):raise SystemExit(1) diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889 new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889 @@ -0,0 +1,17 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "published_digest": "sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "verified_registry_config_digest": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "executed_loaded_daemon_id": "sha256:f2e07e3dd839b55afd5d517243a765a26965325e4e6750f508771ad556bd6d01", + "image_source": "actual anonymous verified descriptor/layer archive loaded locally", + "candidate_image_executed": true, + "network": "none", + "read_only_root": true, + "memory": "128MiB", + "cpus": 1, + "checker_source": "exact gitshow pinnedcommit", + "native_provider_test": false, + "native_workload_changed": false, + "database_or_admin_or_provider_credentials": false, + "verified_utc": "2026-10-11T09:39:37.502275+00:00" +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68 new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68 @@ -0,0 +1,20 @@ +{ + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "zlib_package": "1.3.2-r1", + "files": { + "lib/apk/db/installed": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ], + "usr/lib/libz.so.1.3.2": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9 new file mode 100644 index 0000000..a05b39b --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9 @@ -0,0 +1,205 @@ +[ + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/README.md", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/README.md", + "original_sha256": null, + "staged_sha256": "ae9225812b068e85557506662470169322294c67f1b643406188822eaa1e71f5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/base-image-config.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/base-image-config.json", + "original_sha256": null, + "staged_sha256": "4ad7249c75fd9fc039ceb186772419e1cba5fd9759c404556459c80a2d285d10" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/base-image-manifest.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/base-image-manifest.json", + "original_sha256": null, + "staged_sha256": "978c575d3c7bf0de39dbe4e9567c39cd36f70b7e55bc17357bdb03fb3b96b0fb" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/base-runtime.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/base-runtime.json", + "original_sha256": null, + "staged_sha256": "20aabb9f4846ab4fa6e28e0763d153188da151ee32293366a51b0fdf872a4d24" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json", + "original_sha256": null, + "staged_sha256": "dd7d64c9571391acd4d1f86c6026a1b094abab4ee56e5a9f799ec2fd3c7d915a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json.log", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json.log", + "original_sha256": null, + "staged_sha256": "8ab4473a5f74b36e82a4095e9c8d6e66d80aec64bd1cebd6c9f6734531869fca" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json", + "original_sha256": null, + "staged_sha256": "3e91a3001adb008cec37d9ae3c08342f5d43c8ba0111eee75c63a6a7918808a9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json.log", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json.log", + "original_sha256": null, + "staged_sha256": "96a48dc39f7d674b4954d5fa98a76645528ec0fe705782fe114e3b4b9d776862" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/ci-publication-observation.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/ci-publication-observation.json", + "original_sha256": null, + "staged_sha256": "ffe6f2508bc9bebbdc85ac63eae5765562efbb8e920cc85b8da30a12ee1e4b17" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/image-config.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/image-config.json", + "original_sha256": null, + "staged_sha256": "253ab359013aeb3457d2abe0852bacd33697f973dd32c1b5738800e5dc633f43" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/image-manifest.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/image-manifest.json", + "original_sha256": null, + "staged_sha256": "9ca2abec6a26d9a9f802dfe75efa8bffdc28485e6bcaf525cc9b075df3700194" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/installed-purpose.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/installed-purpose.json", + "original_sha256": null, + "staged_sha256": "312312c6f0bd2751401b3bc5bcd30ee6af01ed7cb380f85b863d03b0c7e9d1ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/loaded-daemon-image-proof.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/loaded-daemon-image-proof.json", + "original_sha256": null, + "staged_sha256": "2e5c043a101d75e4c569adb6bc2f09020679b28ed2ad836c954f7d27101ce719" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/publication-digest.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/publication-digest.json", + "original_sha256": null, + "staged_sha256": "ca2a1dec38db8c5fbbc00ef4f27aa865edbbd4a7ca9dc21b2ba023664c507f38" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/published-verification.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/read_public_artifact.py", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/read_public_artifact.py", + "original_sha256": null, + "staged_sha256": "eaa31da1ebb2095ea5e1bc7c570311cc4747f0d7f718034dad934351d1920daf" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/registry-proof.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/registry-proof.json", + "original_sha256": null, + "staged_sha256": "3ef52d9e4800fc9bd238072241dc15f13a0260ee3df1e82e6f63e72902749d92" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/run_published_runtime.py", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/run_published_runtime.py", + "original_sha256": null, + "staged_sha256": "d9bd33fecd2a98c2381b4ba2dce12b5c3d9a69faa5e350291924fc885f5e775f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/run_published_scan.py", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/run_published_scan.py", + "original_sha256": null, + "staged_sha256": "2583ab96350412fb3f20b5b05ded0949eb3ee8e5c0e8923a9c2c42d419d36639" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/runtime-comparison.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/runtime-comparison.json", + "original_sha256": null, + "staged_sha256": "993b80b9285e227a0bdfde4927cd2f053bcc4a58dd9bd1b633ac7a4637d6713c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json", + "original_sha256": null, + "staged_sha256": "4202263059780eae0448328044c1cf68b59758f329ae6bc981d916610527eae3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json.log", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json.log", + "original_sha256": null, + "staged_sha256": "51873b37a0846ee1a618ea7591d79809dc0f8624f77a03fae7af953bcbd7282f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json", + "original_sha256": null, + "staged_sha256": "2ff68e765b9c65292611d5a969202a7654637168edefcedac5d2c7634009edae" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json.log", + "staged_path": "/tmp/infd-zlib-published-evidence-stage/informed-decision/docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json.log", + "original_sha256": null, + "staged_sha256": "b3419af860d264449f61986f562491edaead27dfd3638ceabe94b4fe177f4bf1" + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529 new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529 @@ -0,0 +1,52 @@ +{ + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "policy": { + "origin": "http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080", + "package": "informed-decision.compact-sitting", + "version": "v13", + "package_digest": "sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873", + "pod_name": "flex-auth-informed-decision-sitting" + }, + "keycape_egress_ips": [ + "92.205.62.239" + ], + "storage_class": "local-path", + "ordinary_approval_ids": [ + "2ce76d7f-01c3-4b63-8476-8d1230679769", + "c2af4bcf-15b4-4305-aac1-acc7e4dcb099", + "dc22666a-d5d7-46bc-9490-ebe9fe09dc38" + ], + "lifecycle_policy": { + "package": "informed-decision.lifecycle", + "version": "v2", + "package_digest": "sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c", + "origin": "http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080", + "pod_name": "flex-auth-informed-decision-lifecycle" + }, + "lifecycle_delivery": true, + "intake_attributes": true, + "intake_delivery": { + "hub_origin": "http://state-hub.state-hub.svc.cluster.local:8000" + }, + "workload_api": { + "registries_configmap": "informed-decision-workload-registry", + "peers": [ + { + "namespace": "state-hub", + "app": "state-hub" + } + ], + "api_egress": [ + { + "ip": "10.43.0.1", + "port": 443 + }, + { + "ip": "92.205.62.239", + "port": 6443 + } + ], + "intake": true, + "lifecycle": true + } +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844 new file mode 100644 index 0000000..e1ed42c --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844 @@ -0,0 +1,191 @@ +{ + "kind": "informed-decision.memo-intake", + "version": 1, + "idempotency_key": "infd-20261011-zlib-remediation-r1-v1", + "memo_class": "decision-record", + "review_group": "net-kingdom-admins", + "drafted_by": "custodian-codex", + "approval_intent": { + "action": "administer", + "principal": "informed-decision", + "purpose": "Approve only exact zlib85091 image-only T05 release and fresh protected native backup/restore gates; no prior T04 approval reuse or unrelated grant.", + "target": { + "id": "INFD-WP-0009-T05/zlib85091-r1", + "type": "runtime-change", + "system": "railiance01" + } + }, + "memo": { + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact zlib85091 fixed image-only release, new protected backup/restore compatibility drill and database-preserving rollback?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Published owner CI image f558 has zero full-scan findings across44packages; only zlib1.3.2-r0 to r1 changes. Fresh schema5 private backup/isolated clone drill and cutover snapshot precede one Deployment manual prune=false Recreate sync. Separate founder go required; old T04 acceptance/history unchanged. Rollback image763c/Applicationc96 retains latestDB. Release reserves30minutes before Oct12 deadline.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Founder review" + }, + "target": { + "kind": "environment", + "id": "realm:kubernetes/railiance01/informed-decision", + "label": "Informed Decision zlib85091 image-only remediation on railiance01", + "environment": "production" + }, + "terms": "Approve only INFD-WP-0009-T05/zlib85091-r1 trialinfd-zlib-20261011-r1 and exact attached digests: new private drillbackup/copy, isolatedschema5pre/admin/postintegrityandcounts, exactcreatedclonecleanup, freshcutoverbackup/copy, manualfinalsourceDeployment-onlyimagef558/prune=false. ImmutableCM/PVC/config/credentials/audience/resources sealed. Freshrootnativeauthenticated confirmed founderACCEPTsource1 beforeeveryphase; receiptsarebookkeeping/noautonomousgrant. Rollbackonlyimage763c/Applicationc96 preserveslatestDB, separateverification. AllphasesbeginbeforeOct12 23:59:59Z; releasereserves30minutes; newdecisionbeyond. ExistingT04UNCERTAINEvidenceunaltered, nooldhelperamendment/phase retry, noresidualpromotion ordoctrinechange." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "item_id": "rollback-preflight-json", + "label": "rollback-preflight.json", + "hash": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "item_id": "published-verification-json", + "label": "published-verification.json", + "hash": "sha256:dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "item_id": "artifact-comparison-json", + "label": "artifact-comparison.json", + "hash": "sha256:a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "item_id": "installed-zlib-proof-json", + "label": "installed-zlib-proof.json", + "hash": "sha256:6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "item_id": "sealed-live-deployment-json", + "label": "sealed-live-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "sealed-native-dependencies-json", + "label": "sealed-native-dependencies.json", + "hash": "sha256:042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "item_id": "candidate-deployment-json", + "label": "candidate-deployment.json", + "hash": "sha256:487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "item_id": "rollback-deployment-json", + "label": "rollback-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "execution-bundle-json", + "label": "execution-bundle.json", + "hash": "sha256:2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + } + ], + "highlights": [ + { + "id": "protected-drill-and-recreate", + "item_id": "decision-packet-md", + "note": "This new T05 decision authorizes protected real-data backup/copy and no-network same-schema restore drill plus brief Recreate image release. Scan0 is actual published44package result, not installed acceptance. Rollback preserves latestDB; priorfailedT04evidence retained. No oldapprovalreuse. Allphase starts expireOct12; release reserves30minutesforrecovery; noautomaticextension.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Requested decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null + }, + "packet": [ + { + "item_id": "decision-packet-md", + "media_type": "text/markdown", + "content": "# Requested decision\n\nApprove the exact new T05 zlib-only image release and protected same-schema compatibility drill, after final independent Product and Platform acknowledgments. This packet is prepared and unapproved; fresh rollback server dry-run passed with exactly the baseline image and empty diff. Root retains exact final owner source revision and independent acknowledgments before asking for native founder disposition. The prior T04 approval is excluded.\n\nThe admitted owner CI published immutable image f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23 from source9b4bb25d325698ae543e7e8a8a3c3592db1f58fc. Its actual full scan reports zero findings across44packages. The same scan DB finds oneMEDIUM on currentimage763c. Signed official Alpine zlib1.3.2-r1 is the sole package change; actual published filesystem proof shows onlylibz andAPKinstalleddatabase changes, zero313directorymetadata changes, retainedninebaselayers and unchanged36applicationfiles/purposepolicy/config/credentials/audience/resources. Registry-to-daemon config serialization differs under closed verified normalization, without runtime change.\n\nThe exact ordered protected drill and release are specified in native-backup-restore-protocol.md and hash-bound execution bundle. New backup paths, isolated clone and journal are distinct from old evidence. Real private data will enter only approved private custody and the isolated no-network clone; content never enters public evidence. Failed/uncertain phase states remain durable and cannot be retried. Prior T04 failed copy/verify are preserved.\n\nAfter schema5/integrity/exactclonecounts pass and clone cleanup succeeds, fresh cutover backup/copy precedes the exact manual image-only Deployment sync. Current baseline is healthygeneration25/image763c/Applicationc96. ImmutableCM6c/PVC/Podconfiguration/PDP origins remain sealed. FreshnodeCPU3460of4000m supports unchangedRecreate, with another check before effect. Brief availability interruption expected.\n\nRollback restores Deploymentimage763c andApplicationc96 while retaining latestschema5database; no old snapshot restoration. Separate installed/native health/custody/PDP-gated readback and actual native image rescan precede T05 closure. Allphase starts expireOct12 23:59:59Z; release reserves30minutesforverificationandrecovery. Afterexpiry a newfounderdecision is required. EUR0newrecurringinfrastructure, boundedprivate storage andunpricedattendedtime. No newdoctrine/autopilot/credentialgrant is authorized.\n" + }, + { + "item_id": "proposal-json", + "media_type": "application/json", + "content": "{\n \"kind\": \"informed-decision.supervised-release-proposal\",\n \"version\": 1,\n \"proposal_id\": \"INFD-WP-0009-T05/zlib85091-r1\",\n \"trial_id\": \"infd-zlib-20261011-r1\",\n \"state\": \"prepared-unapproved\",\n \"memo_id\": \"infd-20261011-zlib-remediation-r1\",\n \"memo_version\": 1,\n \"task\": \"INFD-WP-0009-T05\",\n \"candidate_image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"artifact_source_revision\": \"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc\",\n \"prior_image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"prior_application_revision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\",\n \"source_revision\": null,\n \"published_artifact_verified\": true,\n \"native_actions_executed\": false,\n \"approval_id\": null,\n \"authority_mode\": \"ADMINISTER\",\n \"target\": \"realm:kubernetes/railiance01/informed-decision\",\n \"cost_estimate_eur\": 0,\n \"risk\": \"Private same-schema backup copies and brief Recreate availability gap. Failed or ambiguous phases retained; no replay. Rollback changes Deployment image/source only, retains latest database.\",\n \"execute_by\": \"2026-10-12T23:59:59Z\",\n \"release_must_start_by\": \"2026-10-12T23:29:59Z\",\n \"max_snapshot_bytes\": 536870912,\n \"maximum_new_snapshot_payload_bytes_each_site\": 1073741824,\n \"local_extra_disposable_clone_max_bytes\": 536870912,\n \"private_metadata_and_sqlite_sidecars_additional_headroom_bytes\": 16777216,\n \"unbound_inputs\": [\n \"exact committed owner rendering revision retained in root supervised receipt\",\n \"Product and Platform final acknowledgments\",\n \"confirmed founder exact new disposition\"\n ],\n \"published_verification_sha256\": \"dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e\",\n \"native_readonly_preflight_sha256\": \"56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9\",\n \"executor_plan_sha256\": \"fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b\",\n \"execution_bundle_sha256\": \"2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b\",\n \"rollback_preflight_sha256\": \"0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5\",\n \"post_ready_native_provider_probe\": \"canonical lifecycle.outcomes SOURCE1 through existing admitted StateHub dispatcher; credentials stay inside Pod; bounded metadata correlated to verified candidate image/Pod/source\",\n \"fresh_scan_contract_sha256\": \"b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2\",\n \"preparation_failure_history_sha256\": \"51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596\"\n}\n" + }, + { + "item_id": "native-backup-restore-protocol-md", + "media_type": "text/markdown", + "content": "# T05 zlib85091 release \u2014 preliminary, unapproved\n\nThis is a distinct proposal/trial for existing INFD-WP-0009-T05. The actual T04 source2 acceptance does not authorize it. Previous R1 copy and R2 verify UNCERTAIN journal states remain untouched. INFD-IN-0010 remains an unpromoted general verifier residual; this new task-specific verifier is a prerequisite of active T05, not an amendment of the old approved helper.\n\nExact intended image f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23 was built by admitted owner CI11534/run4 from 9b4bb25d325698ae543e7e8a8a3c3592db1f58fc. Publication is not installed acceptance. Final packet requires independent published-image scan/runtime/filesystem/source proof and fresh read-only native projection/one-object dry-run evidence. Until all final inputs and independent owner acknowledgments are frozen, execution-plan state remains preliminary and the actuator refuses before any authority, journal or native action.\n\nAfter a NEW exact confirmed founder acceptance, root freshly authenticates fixed-origin native source-version1 outcomes before each phase. Receipt files are supervised bookkeeping, not signed grants or autonomy. Wrong task, source, memo/version, stale/pending/agent disposition, old T04 acceptance or changed inputs refuse. Root retains exact approved source revision/digests and action results in supervision. Approval does not promote any agent.\n\nFixed phase order: drill-backup \u2192 drill-copy \u2192 offline-verify \u2192 cleanup-offline \u2192 cutover-backup \u2192 cutover-copy \u2192 release \u2192 verify. New private native /data/private/zlib85091-r1, root .private-backups/20261011-infd-zlib-r1 and local volume infd-zlib-r1-restore-20261011 are distinct from all T04 custody. New private journal intent is fsynced RUNNING before dispatch; no attempted phase replay. Fixed output schema contains only counts, hashes, object identity and boolean results; raw errors and private content are withheld. Existing native snapshots/database/sidecars are never removed or restored over current data.\n\nFresh backup inspection uses copied explicit-close SQLite helpers: live and offline clone readers are mode=ro/query_only and WAL-aware, before any Store/admin open. Immutable reader is used only for freshly closed hash-bound private snapshot with absent/zero WAL frames and stable identity/metadata/digest before/after read/copy. Main and sidecars remain retained. Schema must equal5, integrity ok, and exact snapshot/isolated clone counts match before/admin/after. The detached local clone has network none, readonly root, no service/runtime config/credential mounts; only narrowly scoped UID0 CAP_CHOWN initializer precedes UID10001 reads/admin. Original private copy is hash-stable. Cleanup removes only the disposable volume whose nonce/labels/creation metadata match this trial, before cutover.\n\nEach snapshot is bounded512MiB. At most two new snapshots occupy each native/offcluster custody (1GiB payload each); the disposable offcluster clone adds512MiB while present, plus16MiB sidecar/metadata reserve. New native drill phase checks free space for both; local custody checks two snapshot bounds plus reserve. Existing T04 retention consumes additional pre-existing space. EUR0 recurring infrastructure estimate; human/compute time unpriced.\n\nCutover takes a fresh native backup and exact offcluster copy. Release then requires latest schema5 readonly proof, sealed Pod/Deployment/config/PVC custody and same baseline image763c/current Application sourcec96, a healthy single target92.205.62.239 node and fresh requested CPU \u2264 allocatable capacity. Recreate and resources remain unchanged. Server dry-run/client diff must show only the image. Application UID/resourceVersion/source CAS dispatches manual exact final revision, initiatedBy custodian-codex, explicit prune=false and only apps/Deployment informed-decision in its namespace. No whole-Application sync, namespace/config/credential/resource change or pruning.\n\nVerification reads imageID/readiness/owner chain/exact configured Pod fields, schema5/integrity/metadata counts, installed policy hash and synthetic purpose refusals, health200, installed fixed zlib and exact image proof. After exact candidate Ready and verified rollout, root executes attached post-ready-native-outcomes-command.py inside the existing admitted StateHub Pod. It calls canonical lifecycle.outcomes for infd-20261011-zlib-remediation-r1 SOURCEversion1 at dispatcher fixed ORIGIN with NoRedirect/proxy disabled; existing internal token_file stays inside that Pod and no token/body/private content is exported. Root retains bounded HTTP-success metadata/observationtime and correlates verified candidate PodUID/image/source, then rechecks those identities. This actual provider/PDP-gated preservation proof is separate from installed synthetic2allow8refuse; both are required before task closure. It does not assert provider advisory emissions or new doctrine. Argo3.5.3 omits false prune in operation status: missing or exactfalse is accepted only together with this journal's COMPLETE explicitfalse request, exact source/resources/initiation, operation start after our durable attempt, bounded finish and one Synced Deployment result. True/null/string/prior/foreign/extra-resource results refuse.\n\nRollback \u2192 rollback-verify is separate and permitted only after a recorded release attempt. It switches only Application source back to c96 and Deployment image763c; it never restores an old snapshot over the latest database. Recovery dispatch works even if candidate Pod is absent/unready and never depends on candidate DB inspection. Recovery verification separately requires Ready1/old image/current schema5/data-custody and exact recorded scoped completion. All phases must begin before2026-10-12T23:59:59Z; release must begin at least30minutes earlier. Beyond expiry stop and obtain a new founder decision; no automatic extension or emergency grant. A failed/uncertain attempt requires informed recovery rather than retry.\n\nT05 remains progress until actual installed acceptance and native rescan prove the finding absent. No Risk Engine grade is assigned. Only then may owner close T05/risk and consider finishing WP9, with existing residuals live first.\n\nActual release and installed verification also require fixed private root scan receipt and retained fullreport at /tmp/security-infd-zlib-fresh-scan-{receipt,full}.json, supervised metadata binding to exact immutablef558/artifactsource9b4/scannerdigest62b1. Before journal start, fullreporthash must match, no suppression/allseverity flags true, exit0, nonempty valid fullresults contain zero findings, scan completed within4hours and now precedes DB NextUpdate. The published DB expires2026-10-11T18:59:50Z; it is not valid until release deadline. Root refreshes DB and rescans the same immutable image as routine read-only verification when needed, retaining all raw publicscan artifacts. Any new finding refuses release/closure and is retained for informed reassessment/new decision as needed, never filtered or ignored. Existing risk stays open until actual installed proof/native rescan.\n\nRefinement preserves reviewed81/source bytes and exactdraft29 complete archives. Initial67 manifest hash is known but exact original67manifest/source snapshot was not retained before81; preparation-failure-history.json discloses this. No priornativeeffect occurred. New full CLI synthetic tests exercise main sourcehash/receipt/journal/dispatch wiring for drill-copy,release,verify and refuse source drift before newjournal/native boundary. Remote payload carries exact frozen snapshot identity and completed release intent. Full scan contract additionally requires SchemaVersion2/container_image, published configImageID622 (not daemonserializationf2), exact11DiffIDs/rootfs/source/contextlabels, exactly38OS+6Python packages with canonicalPURL/version inventory, fixedzlibr1 and no omissions/duplicates/truncated/emptycoverage. Archive scan RepoDigests absent is legitimate; not fabricated.\n" + }, + { + "item_id": "native-preflight-json", + "media_type": "application/json", + "content": "{\n \"all_checks_pass\": true,\n \"observed_at\": \"2026-10-11T09:40:15.540874+00:00\",\n \"native_changed\": false,\n \"protected_database_read\": false,\n \"secret_read\": false,\n \"deployment_generation\": 25,\n \"ready_replicas\": 1,\n \"argo\": {\n \"uid\": \"499868f2-eabc-4df4-ae31-b89ce58d750d\",\n \"source\": {\n \"path\": \"deploy/lifecycle\",\n \"repoURL\": \"https://forgejo.coulomb.social/coulomb/informed-decision.git\",\n \"targetRevision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\"\n },\n \"destination\": {\n \"namespace\": \"informed-decision\",\n \"server\": \"https://kubernetes.default.svc\"\n },\n \"automated\": false,\n \"health\": {\n \"lastTransitionTime\": \"2026-10-11T07:00:42Z\",\n \"status\": \"Healthy\"\n },\n \"sync\": {\n \"comparedTo\": {\n \"destination\": {\n \"namespace\": \"informed-decision\",\n \"server\": \"https://kubernetes.default.svc\"\n },\n \"source\": {\n \"path\": \"deploy/lifecycle\",\n \"repoURL\": \"https://forgejo.coulomb.social/coulomb/informed-decision.git\",\n \"targetRevision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\"\n }\n },\n \"revision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\",\n \"status\": \"OutOfSync\"\n }\n },\n \"server_dry_run_passed\": true,\n \"admission_only_image_delta\": true,\n \"client_diff_exit\": 1,\n \"client_diff_sha256\": \"ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b\",\n \"allocatable_cpu_m\": 4000,\n \"requested_cpu_m\": 3460,\n \"strategy\": \"Recreate\",\n \"full_receipt_sha256\": \"56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9\",\n \"full_receipt_path\": \"native-preflight-full.json\",\n \"projection_reference_files\": {\n \"sealed_live_deployment\": \"sealed-live-deployment.json\",\n \"sealed_dependencies\": \"sealed-native-dependencies.json\",\n \"candidate_deployment\": \"candidate-deployment.json\"\n }\n}\n" + }, + { + "item_id": "rollback-preflight-json", + "media_type": "application/json", + "content": "{\n \"all_checks_pass\": true,\n \"observed_at\": \"2026-10-11T09:43:42.851086+00:00\",\n \"native_changed\": false,\n \"protected_database_read\": false,\n \"secret_read\": false,\n \"deployment_generation\": 25,\n \"ready_replicas\": 1,\n \"argo\": {\n \"uid\": \"499868f2-eabc-4df4-ae31-b89ce58d750d\",\n \"source\": {\n \"path\": \"deploy/lifecycle\",\n \"repoURL\": \"https://forgejo.coulomb.social/coulomb/informed-decision.git\",\n \"targetRevision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\"\n },\n \"destination\": {\n \"namespace\": \"informed-decision\",\n \"server\": \"https://kubernetes.default.svc\"\n },\n \"automated\": false,\n \"health\": {\n \"lastTransitionTime\": \"2026-10-11T07:00:42Z\",\n \"status\": \"Healthy\"\n },\n \"sync\": {\n \"comparedTo\": {\n \"destination\": {\n \"namespace\": \"informed-decision\",\n \"server\": \"https://kubernetes.default.svc\"\n },\n \"source\": {\n \"path\": \"deploy/lifecycle\",\n \"repoURL\": \"https://forgejo.coulomb.social/coulomb/informed-decision.git\",\n \"targetRevision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\"\n }\n },\n \"revision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\",\n \"status\": \"OutOfSync\"\n }\n },\n \"server_dry_run_passed\": true,\n \"admission_only_image_delta\": true,\n \"client_diff_exit\": 0,\n \"client_diff_sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n \"allocatable_cpu_m\": 4000,\n \"requested_cpu_m\": 3460,\n \"strategy\": \"Recreate\",\n \"full_receipt_sha256\": \"0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5\",\n \"full_receipt_path\": \"rollback-preflight-full.json\",\n \"projection_reference_files\": {\n \"sealed_live_deployment\": \"sealed-live-deployment.json\",\n \"sealed_dependencies\": \"sealed-native-dependencies.json\",\n \"candidate_deployment\": \"rollback-deployment.json\"\n }\n}\n" + }, + { + "item_id": "published-verification-json", + "media_type": "application/json", + "content": "{\n \"proposal_id\": \"INFD-WP-0009-T05/zlib-85091-r1\",\n \"task_id\": \"INFD-WP-0009-T05\",\n \"risk_record\": \"INFD-RISK-20261011-ZLIB-85091\",\n \"state\": \"actual-owner-CI-published-independent-verification-passed-native-unapproved\",\n \"verified_utc\": \"2026-10-11T09:40:24.469646+00:00\",\n \"source_revision\": \"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc\",\n \"ci_task\": 11534,\n \"ci_run\": 4,\n \"ci_status\": \"success\",\n \"reviewed_source_manifest_sha256\": \"724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec\",\n \"all74_source_hashes_match_actual_commit\": true,\n \"published_image_digest\": \"sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"base_image_digest\": \"sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"registry_config_digest\": \"sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b\",\n \"executed_local_daemon_image_id\": \"sha256:f2e07e3dd839b55afd5d517243a765a26965325e4e6750f508771ad556bd6d01\",\n \"serialization_caveat\": \"Daemon load reserializes config; all diffIDs/platform/effective config+labels independently equal to registry; neither config nor daemon ID substitutes for registry image digest\",\n \"actual_registry_descriptors_and_layers_verified\": true,\n \"base9layers_unchanged\": true,\n \"overlay_layers\": 2,\n \"fullscan_baseline\": {\n \"MEDIUM\": 1,\n \"id\": \"CVE-2026-85091\"\n },\n \"fullscan_candidate_allseverity_findings\": 0,\n \"fullscan_no_suppressions\": true,\n \"same_fresh_DB_both_images\": true,\n \"scanner_db_sha256\": \"03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917\",\n \"scanner_db_metadata\": {\n \"Version\": 2,\n \"NextUpdate\": \"2026-10-11T18:59:50.889010572Z\",\n \"UpdatedAt\": \"2026-10-10T18:59:50.889010923Z\",\n \"DownloadedAt\": \"2026-10-10T23:32:32.380033131Z\"\n },\n \"scanner_caveat\": \"Alpine3.24 absent EOL list warning; actual38OS+6Python detectors ran. Zero means this verified DB snapshot, not unknown-future assurance or estate risk grade.\",\n \"sbom_count\": 44,\n \"sbom_only_delta\": {\n \"zlib\": [\n \"1.3.2-r0\",\n \"1.3.2-r1\"\n ]\n },\n \"final_changed_files\": [\n \"lib/apk/db/installed\",\n \"usr/lib/libz.so.1.3.2\"\n ],\n \"directory_count\": 313,\n \"directory_metadata_delta\": {},\n \"app_files_identical\": 36,\n \"installed_UID\": 10001,\n \"installed_GID\": 10001,\n \"policy_sha256\": \"9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62\",\n \"policy_mode\": \"0o644\",\n \"policy_UID\": 0,\n \"candidate_image_executed\": true,\n \"public_registry_layer_readback\": true,\n \"native_provider_test\": false,\n \"installed_purpose_variants\": 10,\n \"purpose_forms_allow\": 2,\n \"purpose_forms_refuse\": 8,\n \"runtime_readonly_networknone\": true,\n \"native_workload_or_database_or_snapshot_or_credentials_accessed\": false,\n \"native_rollout\": false,\n \"founder_release_approval\": false,\n \"risk_followthrough\": \"T05 remains active; manual review due2026-10-18, no controller or estate risk grade. Actual native installation/fresh scoped founder decision still required before closure.\",\n \"verification_refinement\": \"First run used registry config as daemon handle and refused before candidate execution125. Corrected by independently proving loaded daemon ID semantics+diffIDs exact, then executed. Not actual image failure.\",\n \"evidence_sha256\": {\n \"artifact-comparison.json\": \"a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4\",\n \"base-image-config.json\": \"4ad7249c75fd9fc039ceb186772419e1cba5fd9759c404556459c80a2d285d10\",\n \"base-image-manifest.json\": \"978c575d3c7bf0de39dbe4e9567c39cd36f70b7e55bc17357bdb03fb3b96b0fb\",\n \"base-runtime.json\": \"20aabb9f4846ab4fa6e28e0763d153188da151ee32293366a51b0fdf872a4d24\",\n \"base-sbom.cdx.json\": \"dd7d64c9571391acd4d1f86c6026a1b094abab4ee56e5a9f799ec2fd3c7d915a\",\n \"base-sbom.cdx.json.log\": \"8ab4473a5f74b36e82a4095e9c8d6e66d80aec64bd1cebd6c9f6734531869fca\",\n \"base-trivy-full.json\": \"3e91a3001adb008cec37d9ae3c08342f5d43c8ba0111eee75c63a6a7918808a9\",\n \"base-trivy-full.json.log\": \"96a48dc39f7d674b4954d5fa98a76645528ec0fe705782fe114e3b4b9d776862\",\n \"candidate-runtime.json\": \"d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124\",\n \"ci-publication-observation.json\": \"ffe6f2508bc9bebbdc85ac63eae5765562efbb8e920cc85b8da30a12ee1e4b17\",\n \"image-config.json\": \"253ab359013aeb3457d2abe0852bacd33697f973dd32c1b5738800e5dc633f43\",\n \"image-manifest.json\": \"9ca2abec6a26d9a9f802dfe75efa8bffdc28485e6bcaf525cc9b075df3700194\",\n \"installed-purpose.json\": \"312312c6f0bd2751401b3bc5bcd30ee6af01ed7cb380f85b863d03b0c7e9d1ad\",\n \"loaded-daemon-image-proof.json\": \"2e5c043a101d75e4c569adb6bc2f09020679b28ed2ad836c954f7d27101ce719\",\n \"publication-digest.json\": \"ca2a1dec38db8c5fbbc00ef4f27aa865edbbd4a7ca9dc21b2ba023664c507f38\",\n \"read_public_artifact.py\": \"eaa31da1ebb2095ea5e1bc7c570311cc4747f0d7f718034dad934351d1920daf\",\n \"registry-proof.json\": \"3ef52d9e4800fc9bd238072241dc15f13a0260ee3df1e82e6f63e72902749d92\",\n \"run_published_runtime.py\": \"d9bd33fecd2a98c2381b4ba2dce12b5c3d9a69faa5e350291924fc885f5e775f\",\n \"run_published_scan.py\": \"2583ab96350412fb3f20b5b05ded0949eb3ee8e5c0e8923a9c2c42d419d36639\",\n \"runtime-comparison.json\": \"993b80b9285e227a0bdfde4927cd2f053bcc4a58dd9bd1b633ac7a4637d6713c\",\n \"runtime-receipt.json\": \"6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889\",\n \"sbom.cdx.json\": \"4202263059780eae0448328044c1cf68b59758f329ae6bc981d916610527eae3\",\n \"sbom.cdx.json.log\": \"51873b37a0846ee1a618ea7591d79809dc0f8624f77a03fae7af953bcbd7282f\",\n \"scan-receipt.json\": \"aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a\",\n \"source-commit-proof.json\": \"b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b\",\n \"trivy-full.json\": \"2ff68e765b9c65292611d5a969202a7654637168edefcedac5d2c7634009edae\",\n \"trivy-full.json.log\": \"b3419af860d264449f61986f562491edaead27dfd3638ceabe94b4fe177f4bf1\"\n }\n}\n" + }, + { + "item_id": "artifact-comparison-json", + "media_type": "application/json", + "content": "{\n \"base_image_config_id\": \"sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779\",\n \"candidate_local_image_config_id\": \"sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b\",\n \"candidate_registry_digest\": null,\n \"base_layers_preserved\": 9,\n \"new_layers\": 2,\n \"effective_runtime_config_identical\": true,\n \"raw_config_bytes_identical\": false,\n \"serialization_note\": \"Legacy base explicitly serialized empty/false/null defaults; candidate Docker-save config omits equivalent known defaults. Exact closed default normalization only; runtime fields unchanged.\",\n \"labels_before\": {\n \"org.opencontainers.image.base.digest\": \"sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173\",\n \"org.opencontainers.image.revision\": \"3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168\",\n \"social.coulomb.release.scope\": \"INFD-WP-0009-T04/purpose-overlay-v1\",\n \"social.coulomb.source.policy.sha256\": \"9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62\"\n },\n \"labels_after\": {\n \"org.opencontainers.image.base.digest\": \"sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"org.opencontainers.image.revision\": \"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc\",\n \"social.coulomb.release.scope\": \"INFD-WP-0009-T05/zlib-85091-r1\",\n \"social.coulomb.source.context.sha256\": \"c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d\",\n \"social.coulomb.source.policy.sha256\": \"9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62\"\n },\n \"final_changed_files\": {\n \"lib/apk/db/installed\": {\n \"before\": [\n \"file\",\n 420,\n 0,\n 0,\n \"6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70\"\n ],\n \"after\": [\n \"file\",\n 420,\n 0,\n 0,\n \"f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001\"\n ]\n },\n \"usr/lib/libz.so.1.3.2\": {\n \"before\": [\n \"file\",\n 493,\n 0,\n 0,\n \"a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57\"\n ],\n \"after\": [\n \"file\",\n 493,\n 0,\n 0,\n \"ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2\"\n ]\n }\n },\n \"directory_metadata_compared\": true,\n \"directory_count_base\": 313,\n \"directory_count_candidate\": 313,\n \"directory_metadata_delta\": {},\n \"sbom_package_count_base\": 44,\n \"sbom_package_count_candidate\": 44,\n \"sbom_only_delta\": {\n \"zlib\": [\n \"1.3.2-r0\",\n \"1.3.2-r1\"\n ]\n },\n \"full_scan_baseline_findings\": 1,\n \"full_scan_candidate_allseverity_findings\": 0,\n \"db_snapshot_same\": true,\n \"native_workload_changed\": false\n}\n" + }, + { + "item_id": "installed-zlib-proof-json", + "media_type": "application/json", + "content": "{\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"zlib_package\": \"1.3.2-r1\",\n \"files\": {\n \"lib/apk/db/installed\": [\n \"file\",\n 420,\n 0,\n 0,\n \"f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001\"\n ],\n \"usr/lib/libz.so.1.3.2\": [\n \"file\",\n 493,\n 0,\n 0,\n \"ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2\"\n ]\n }\n}\n" + }, + { + "item_id": "sealed-live-deployment-json", + "media_type": "application/json", + "content": "{\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n}\n" + }, + { + "item_id": "sealed-native-dependencies-json", + "media_type": "application/json", + "content": "{\n \"configmap\": {\n \"apiVersion\": \"v1\",\n \"immutable\": true,\n \"kind\": \"ConfigMap\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:/ConfigMap:informed-decision/informed-decision-runtime-6c221878d051\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision-runtime-6c221878d051\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"90113d2d-54d9-4e82-b1d3-90b49ebed2b5\"\n },\n \"canonical_data_sha256\": \"8ec462d12347548f506eeebf1e3c7cc47648019c8a783804d09bcc79b0f22af6\"\n },\n \"pvc\": {\n \"apiVersion\": \"v1\",\n \"kind\": \"PersistentVolumeClaim\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:/PersistentVolumeClaim:informed-decision/informed-decision-data\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\",\n \"pv.kubernetes.io/bind-completed\": \"yes\",\n \"pv.kubernetes.io/bound-by-controller\": \"yes\",\n \"volume.beta.kubernetes.io/storage-provisioner\": \"rancher.io/local-path\",\n \"volume.kubernetes.io/selected-node\": \"239.62.205.92.host.secureserver.net\",\n \"volume.kubernetes.io/storage-provisioner\": \"rancher.io/local-path\"\n },\n \"finalizers\": [\n \"kubernetes.io/pvc-protection\"\n ],\n \"name\": \"informed-decision-data\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"d80b25b1-141a-441b-b205-98fa2fd98b7c\"\n },\n \"spec\": {\n \"accessModes\": [\n \"ReadWriteOnce\"\n ],\n \"resources\": {\n \"requests\": {\n \"storage\": \"1Gi\"\n }\n },\n \"storageClassName\": \"local-path\",\n \"volumeMode\": \"Filesystem\",\n \"volumeName\": \"pvc-d80b25b1-141a-441b-b205-98fa2fd98b7c\"\n }\n },\n \"pvc_phase\": \"Bound\"\n}\n" + }, + { + "item_id": "candidate-deployment-json", + "media_type": "application/json", + "content": "{\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n}\n" + }, + { + "item_id": "rollback-deployment-json", + "media_type": "application/json", + "content": "{\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n}\n" + }, + { + "item_id": "execution-bundle-json", + "media_type": "application/json", + "content": "{\n \"kind\": \"informed-decision.supervised-execution-source-bundle\",\n \"version\": 1,\n \"proposal_id\": \"INFD-WP-0009-T05/zlib85091-r1\",\n \"codec\": \"gzip+base64\",\n \"files\": {\n \"execution/actuator.py\": {\n \"sha256\": \"eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 22015,\n \"content_base64\": \"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\"\n },\n \"execution/authority_journal.py\": {\n \"sha256\": \"9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 11502,\n \"content_base64\": \"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\"\n },\n \"execution/execution-plan.json\": {\n \"sha256\": \"fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 4770,\n \"content_base64\": \"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\"\n },\n \"execution/native_program.py\": {\n \"sha256\": \"fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 18899,\n \"content_base64\": \"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\"\n },\n \"execution/receipt_safety.py\": {\n \"sha256\": \"5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1036,\n \"content_base64\": \"H4sIAAAAAAACA42TTW/bMAyG7/kVnC9yiq4fA3bZ2t626y7DLkVgKDIdC1UkgZK8GsP++yjZSd00A6qTKNEPX76iq6r6Yc0IIVJSMZE0oFyy8bqXoQdChdrHAEpaMCgHhNgjeNKDjAj4jCpF7Sx4TserqqpWLXYTIdSDNAnXX1bAS3dQB4zzGXy4hz8iqB73shmQAjPEJQijO1SjMpgDl+LWPeddSNu9Djkp5FDbiDvScRSXhX1mCULZNo47azxh4zwWfoiOI8Wc0i624u8rgiMoAh9PtW2y4s+L+xcN5Uq4J/Ef0hklG9ABrIvwkxIui76Rd8z8Lk3A0wpHQx8Xzm1md/ntHLXFMByQ3yPvuHqr7e5t27nGAjd7z6y7zDp8xoQWjWZXWBsHW+PU0zkXT3DLBzwyCb2cOdo2ndG7PuaA++807aebZAmDM0MuMo9SXiR1QPiV6d+IHNWizNzH7PNhaiH00uN1iHlUCbsUsP06WR3gt459j6YV68LsWPOOXPKgLdTvmcOFGJ5tacc6jh5rm/ZbpPXh2XhMih3lFO7gZhE9wO3NxcXtp9MZ7l5SWMzkYNG2uZrE1+tF8Xe7MTc+GzH3Tcj//Fxk9Q8H4RSfDAQAAA==\"\n },\n \"execution/test_execution.py\": {\n \"sha256\": \"a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 38465,\n \"content_base64\": \"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\"\n }\n },\n \"native_execution\": false,\n \"case_evidence\": {\n \"artifact-comparison.json\": {\n \"sha256\": \"a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 2697,\n \"content_base64\": \"H4sIAAAAAAACA8VWSa/bRgy+51cIPsf27EtyTQsUKIoeCvRQBAJnhuMIbyy5GtkvTpD/Xsrbc4IsTXqoAcMWhyI/8uMy7581zSJAxbbbwgbbOPS527RdWrxoFvUNCG1eZKkSCi6tjyprhsCk4RF4csKb6NCK7J1X3kMSzjFuguOC0bMFVNb6xfPZSYQ+dQkmbMsQoXzFnxEiYIwSQ/I2BmOCQRulyVKH7CUHmzAmr4wKRjvNuZCRx+ii9y5ZHT71N+Kmq9N4bFO3wTqRp35fyvNb5AWOONZ2N2LF8YAzFH867fHxckgicRJhzhin7kBW9/3Ube8iQHqmwEh1Gvd40h7h8XoejhPWj7QylHpWI7cdlO4dTN3Qt/0w4ZyNX3ED8djMEBt8uytd7KZybK7KmBrc7qbj+mRnPYfUJMywL1N92dyib14N8QHHZYUDNmcszbDtptrg3/vuAIUANQ/98Njf3l41P72FODWxDJW8XMRNP4zbG8pm6MvxZXNJQpM7LKk2+z6+gX6DaXXmoEDAUtuAeRjnmN6TkMTDuFkNO+wJzgRdT/ldnaphNce6urF0rQebdTQxCB99tgyYMCGjZFR3XiphVUrReGG4sSZmk5Q12fGUpKAyTNzKE5avuR3x0FUKavYpUQXyRSYQAVw0SiodtdFUyUEDVVkMgRt3NVqHSHSs4rAvwzaQqYJzEDWSp9neL7/9/Gr55+9Lxphf/sHUercfd5TX5XDAkYpreeBfMFWH/RhxtRuI+ePqnIvZok828oCKOoN7n7jCzAAQks5Oe82z0oERSlJzjIHNCb0Q9LbUcyuJBXn7cE8P5AnHH2fHSOpNxUR0gdo0KgKXOBAdQtJvzp5zk7QQijtrldBBabCMUyKZcxK+ix0fVAhCE7faeAeolUSLDhwQCO1FCjxrl+MPsqPX70oXlk4zz5fjN4iZgeLb6Y6ZqLVCI8ApoJnJYgCukzIelDaOKpNFxbyQqB0LzCHNKqNRCMtEoIFp0/9WCLnraSJferfNXcH6VA+UkTXsHtYprLu+TlDKaUSeT+cZeu3uvy6Sk8GCl2jmjxLs6eHzfxdGOokgHTNCEaWJRj0GRBcDtXpwGMFIcAjaG0qxpT0gbDJUZ8E7GvtscTH1+mpzca3r/4Yra8+sEdwbyxkKHRnSGBIJmFEiQnKgEzFNmfdELMysgyG+VeKky/gN1+n3w4XifR3Xc2Lp+44IXvGVXInvzaqX30QPHEVkMsWEKQC1DDPAGMHOwVhgyAKnVSq9M84wjCzqiIbWraNdr1DbH8rqv8BF+90Fn3JUGoPNIKizOcsZiGahrbPSeZZQy+BYRk9TXFtpg/LM2Kiz+CSrt0pO3Uj7eaBlv8UJaAECLeDtDsZTzd4W85MaNVk/tfNoo3PJ5WePb9v0szo3TwnLBDOJZyw1DNt2B/HhfNG586PUlxTuPd1rzev2yf65huZZdUfE4lRDy5HdqLhKLjX4+qnf6bLQVvJ1AlRo2lLTk+N+M/c9/0Tn6SZFvV+R9lY3He9fYOeEhLb2sKtvhqmtsMX7fPdwujM9DuNDGSBdR831FvTsw7N/AFhkaueJCgAA\"\n },\n \"candidate-deployment.json\": {\n \"sha256\": \"487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 8268,\n \"content_base64\": \"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\"\n },\n \"candidate-runtime.json\": {\n \"sha256\": \"d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 5291,\n \"content_base64\": \"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\"\n },\n \"change_guard.py\": {\n \"sha256\": \"b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 3153,\n \"content_base64\": \"H4sIAAAAAAACA6VX30/jOBB+71/h4yVBKqVNf8IJ6XZhV9qHRas7jheEKseetAbHtmwHUa3432+cOG1pC8fd9iWOMx5/M9/MZ/fo6OhPoPxEK7ki8EyZJ1dgpF6VoDyhihPKS+Gc0IrkulKcWgHud6I0KStPfZinlV9qK/yqd3R01BGl0dYTps2qHS+pW0qRt68PTqtO5/Onv76QC5IU2i7gQfeYrqQu857TTFB5Gl9PhUKDEvgJByYCjD/ckmbjyfl0MmTDyaifsVkOU8ZGbJDzAZ0MJtkQn0VxNhhM+DjLRoPZdDrKxvloTKf9wYyx/mw2pEnn8tP11berTze/BKMYj2ezYnQ2yQdFNpny/pRxdlaMs/4MJkVW4PbFdJRPh2csG55lo7w/nPYz9DIY0jFOJZ1Oh0NBOBhQHBRbzY3VD8BCalOmVSEWJTVdYp7Y8XmH4E8UZPOhtwCfJo9C8eSY/IaBXNZfvlOTEG3Jjp0oA2u5BDQWDln05MZWULttf9ur7pISPOXU0+T+LlG0BGcog+S+3movKcl/cPSWjxNbKS9KOJmwLEPqZrw/Huw5dhjNTmy18y75+XJcJ+JnEh31Qr0lL29Ca1bnQlG7ugo+jmOew89S4YDcUlnBF2u1TZNKwbNBeoCTdTZJ3Co6JQKJ9NgQyfGaMKRvj6ofYJ1wHm1vtaxKuJRUlHuh4spfpeGgizcJqI0OuGjwO+z6yjWJbmYM9jfEkD4HjdhbHOps4wCzt738qY79OiD6cOZrKSI/bi8Jq5zXvM10zP8FOdRD2yY9o00sme3pu4RRpZVgVM7Dx3nT5Ziqi1bFes1UGqqqx6vSuHSNeavcm0x3iUPFmz/Cyl2ERsN3MNRSr627SJMu5iE5x7B72PiaQ4qjJTxzsQDn0waYBV9ZheW8dp6cx41wMWYVX7eiDTLRzM8bXs5bUl6i0rAlsMf5Wm9QzndkJoCkEvhGbj4kToH/ZuF7JO50ChZHYLFtmNNIJ4KkagHYKBH01rZPwVvEVo+Rm3Da9DiACYNosTFoyF4X7rVW8StWPkFuiFAEkYHTlWVwG7oSmwizuAAFtj7kwhuzUI9vED86K02YLKmiCPSrAMldslW/9c7bXVejwN3eBPBY5Rii7IWnVeDB9YQ+ldT5E2qMFNijTdaqDSa+Pqx3lll4arTgXUh1A1KF/Vl7bNv6ANJYhrWLV4XEKmtx+zQ+94tnu2Iamw+WSmNBpHgC8ve3q41ox/j3iqQBFC4sHkUibQc7kNYisls20aqVA08Fsu/QrF1x12gX6qeH0kjqIYzbuc2S5L6NXULdJnG+jnsQ44hzd/1/kePkgL0oseaaBeEa9VHRRDmQ6GTjbfegemObC7K+Kh0gtU1zHV272XuQNjfKSOAOrTmsNKq7XwKqJx6uNQxihFoT7S1VLtwl59i0lfQpPAs/DwraJbrypvJt+W3dOMO7t6uddsDgaiWXmnKXxsWxThgYT9IN9C65WZlmuH1QtQJNpZzXJejmhjqHyvuVSoeQUFpouIOcB3pxV8E3EZAmgng/wcyuQwnp7LenJ5aCQs1RDBp16xIuGDYSfm4krunkHQSvLnn/E7Fd/z0wFgopFsuAuagc8Aj6lTT8A1MJEwlRDAAA\"\n },\n \"check_installed.py\": {\n \"sha256\": \"a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1912,\n \"content_base64\": \"H4sIAAAAAAACA4VVS2/jNhC++1eoJ0peWpsN2qDQgodt0B7TovUtMARaGsVcSyRLUk7cwP99Z6iHtUHaXgQ+hsOZ70GpzhoXksrYM//qjeZBdbBqnOmSWgagWaKGmGkeQ/4xegxTujGug7qsoVJeGZ1b06rqPB37I87uWwU68PvfH7Z/frnfct/vOxUCHVNP4MPKKi2YP8jbn+4K9oHt2frux5WDv8UrUzUrmOrkE2xs76zxsGnUS+gdMM4CaKkDBgyDwrYyUEG4hXd8hQr3xhT+rMMBW6jo2NkCLYE7qeo/81w4c+BN7zBsytRBZ4pFDUMyWqVrzz5ARyWPyGwmZP7nGlkFCirwvieFORzGV0YHeKEeLpdV1Urvk62T2hO0xSqpoUkQpB4RTD20DV9L9+T5en18pkGGIYk2z4Ioy+mTZp8TH2RnRSu7fS2TUEy85kQnDeJ+Gmae8z5UWa68oUJlSDNMuhev6zWpJq8BLA3S12OBpTwedwnGJUcURpJO/V7JmNtcwHptM7tktB4bGpVBLM2yAJJFTDaq523sW12lGJBdsGDVJARQPiroB8G+/PLXrw9bVuwf2bjIdmIZg6dq8VY7SzKpaoftlCdwcamY9T03QacJFkqz4wyaJkqSybY1z5gDAa0OWO5gmmsmdvq0lHBMMc12S0nGnXmKW3ula6WfsDHOWtVEbkm5R1wn4YUWE2sTyj0gUbg18I0y2XxC9OHFKkxXyrDY+XB3k6FCrTMnInSwwliyldURvYmpr454v5vvD8ycofX5qHl3Lr2W1h/Mu/RXA/1wkm0vg3F0ZwsvG9mHw8fr7RNF5dD63EV2ISU4wDCd3N7c8HqF2FdHLx53KxLtSPwg3VEfnEWpynqPZeMQyNUVdBBl3esjJkYxPKBR+G+y9cBv+OOOv17IfEHMbkXnhUlZYlZYJZbvY8oOIVhffJyayZXGXlE6fLDrUohGt2fGRzDFFfwRdBEx/x5rQVCHqSIR0MlGVHkEITplRT75FxSyAl8fwBfd5AZfBNOBEKOMP5uc9I66KaveOepk8eJgVkBc3js+tjf/O1gidY0RM4P0T0qUTwheRCuylUtrQdcpyiUda8U7rFN4LcXndd9Zn6JzNVLftuiu+Pcox+DyJJ3CV8mzogWdDkmz2TglPXOof+oM0DG3+GTVJ3z+UJzGlZ1sxx+eg6b3FPEzv9JSRlqKresBXSaDOuG9aBtV43teRIFcsNpvvWim+3gHAAA=\"\n },\n \"fresh-scan-contract.json\": {\n \"sha256\": \"b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 9733,\n \"content_base64\": \"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\"\n },\n \"fresh-scan-receipt-template.json\": {\n \"sha256\": \"92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 549,\n \"content_base64\": \"H4sIAAAAAAACA22RwY7cIAyG7/MUKOd2JxAgsKc+RO+RMWZLRcIskFFXVd+9JLOtVlWP/P7x99v+eWFsiCu80PDMhpDLC33PT5j3lFf3VDNGSNf35zVu3bCS/+wJY415+1K/gVD6OShlTJBWOx6Env04o0cblBgN6SCCkDzM0s2TRTFZId04zaPoXfgEqkvDpyMGlBYDYFtq3gvSUuh+Uo5k1knnhPJTx1kDpOREMxkwMOGkrPCdrEzAR6eKsG1Ujo/wukMlvLYS729/8mrhOGlFxmjrUDqJGkAGEE5wZVW34Iwi6JEbsN6C1xwhmJmbGbnV9kEJe0oLpFTpTiW2t+XAdmYrO52GLS91v90K1fcx/lboR2wLZn9sfettThHzekvUyC/QPureLSs18NDgH/kxzkfxzFTolkv7T3XL7bzzV+okaMRiZV1jfek7JNb37WlDYrkw6LnzHdJw+XX5DVUNbXAlAgAA\"\n },\n \"fresh-scan-report-fixture.json\": {\n \"sha256\": \"30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 11944,\n \"content_base64\": \"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\"\n },\n \"installed-zlib-proof.json\": {\n \"sha256\": \"6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 492,\n \"content_base64\": \"H4sIAAAAAAACA32QTW7CMBCF95wCZV2S8fifVe9RVdV47GlTAkGkbEDcvU6gq6q1ZGtm3vPTZ19X63XT7+m9NNt1I+PpvXyOLY/nYdyndhq5p6F7tF1/qIZ9yZtcuJ/68fA8fRBatxVrQxATXVKCzmfwnDmKRQjFCQoaJd4kryOjjmgSaA9YU5QmW0fN04xxGfr0diTePWhUq1vcnNRdlX4oUx1fa1Pb6u3ouOvyjDV90TCUXNWXRX3Yl4vzMgg/5e+iERvBO1TReQUFLUOJ4jETOINMOZDNnAiIYrGBoNbkrAsmq+oF1SxBr/e85jyduhmu7kv9wHZ5xd9kUf9DVphDilnY2JK8EMZkFIgQk0Prg9chQi5WpwBSovLaeu2TieA8W8EHWT1vq9vqG1zLL/rsAQAA\"\n },\n \"native-preflight-full.json\": {\n \"sha256\": \"56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 21208,\n \"content_base64\": \"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\"\n },\n \"native-preflight.json\": {\n \"sha256\": \"3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1871,\n \"content_base64\": \"H4sIAAAAAAACA7VVy27bOhDd+ysCb29lUzT1oL/gLgoUSNNNN8KIHNpMqUdFKqhR5N87lF9ykgJtcO9OnMeZM8PR4c/F3d0SnKvUHtU3X/Xg/XJ7F4YRP0RXV3scnlBXEMi85IznScqSNH1gcivYNs1WmWBlIf5hbMvYckpqIdgnJEhod6gpz4DzR7x+6AKqQIAaAtTgsRoQbmM8qgHDa7vG3nWHBttQ7bDFgap0LUXwbHLH+ANl9c4qiE2kkxmGXUeHn/RNp9FGzKWQssxLwxOEWiVCG5EAbtKkLqXCrNRFxvTUS6TTjYPCC0RsAsI+ohwJrZ01qA7K4Slj4tJ3X+4/xqB9CL3frtemG3b42K1UN7quqVe+Uxbc+nRc25YCGtSJRmU9Nbba2XAFDNQGhnt8mnwRV8m8ZirXZZlimWU61WlWMrYhE0qGZiPprjjy5QTxfGpGow+2PU/u0lELDfoepjaXr6hcaUzLMMzb+jbWOLQY0K80GhhdWPkndVsUxtA1EG5Xgex7BDdN8sLDgQ8PA7TeRoYPtsGXW1fQlm0F/zrjFCCM8b6X/054h9vi/tCqeQnVNT0MqB+6mfW3k/mb6bxjQjOib+/an+3b/7Jz/8neTQ0uXjRKVN+B98aFfxrDJ/M5XvDiXOj5JCHxFio9kCCM7aRq0/ZddA10Y32kUHWtO1S2gR1WGl2AeZRyNqqNtsZU+MOGi6jMHX4PPMunVpQxhUpRGS2xzqRRjNQkz1XK0g1wMJk2WSrAMFGqvBSFAF5wKQvGBZqiPqonqXGnojg6ktB+rBqCFoyxk8h9H2lRST/Pro3Ijy4fSBFxd4hM7qOE0umIaEYS+AEV2j7M6BKzTSElqZ8GFDnkRkItBFfcGFnzTPKU5xmrNxnWstSlzFWG5aYwLFXIjXwD/Lypxxcg6Qc0zu72IYlRq0d/+lviM/BIz0CcP4XggK3CyliH/irVnv5m6tPFp+Qq/RH96EmiJ7l6rvDXZPJiqwndTsjnzBO9ufcmW0GrLT1QLwtf7K/Kxs1bPC9+AUGxm5FPBwAA\"\n },\n \"post-ready-native-outcomes-command.py\": {\n \"sha256\": \"ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1655,\n \"content_base64\": \"H4sIAAAAAAACA4VUXW/bNhR9168g/EIJkeW4WNvBgTd0aLrkpQtcby9FIdDidXwXidRIyo4T5L/vUIqcpsCwB5si7/c9597JZLLqjLCmPgo2njUJumcf2NwKpRsOgbT4ElSgq24jbqwWHz6tL1diT463DFmljGYNuViR0sciSdY7Elu+h+zkSbNvVah25ERtlfaCA34mkDOqFpUjTSawqi+EszYIQ3AvHPz5hEMhrtbrG+G7qiLvRevsnnyMaw1XMK95S9WxqqmwXahsA+HNxxtxG3NyFDpnSOfCwK8yidJ79tYdYwGaqyCoYe/ZogVOKATZIOPQwXSLB0+tctEP7dEZU5Gwm5rhGQa+SFYxWUeVdSgp7NiLje2MRuUNBYWmqCglboM4cNi9NA19/PP644wbdUszbztXUYG+caxuCNlnFEE5OA6oaFC6QBlw+U9HPghoNwp4oauwnkwmCTetdUFENAI3lP/trck7V9e8KZ6txis5Z12ydbYRquXCk9sz2ls01NhyhEs8O/xjdf379ef8s12RZlQU8mDvyJRbrilhvZRstnr65vzNu/n5fD59QICpowbKfSFTN5cJ4i9fp1KshjMd3J/J2X4+01RxhMPP5BlrvI2Y/ormRcFyLvMdmIHb8lF+6MLOOn7o48iF/I2UA3Xk2UuCKfwqN3OdmXkC1YKf+cjn6a7bzJC4dUh0Osadndg07V3I7ClLbEuG3I/pbzqudTnI0h9kN87eH68wGjVkj0/Zd71LsywJ7rhIBk4M9kU8UljnETjUvJy/zYTyANu36AZBXTh1WI73Ik5HOj//6ee3799nEPJW1NGFOmS/DM/vFk6xJ/GXqju6jHin0vZdfCAZTdwyEqToJ7I3TEA/TGXaP+uuaX36KHtGsJYL1rkcaFj2b8+AyMU8l3YTGUS6VEEuRv4Vpw9jD+npEv8erKECyGYFpjFCoNCXXBrguKdSAdW4ECqY6PI06eUJm3JkhVysXUcnw7gbMKiuBH135Tj8o9LLnikRD7OIDzhqO+T8SdUeKg6DTge5cMUthXS8IrM4EtZzpFlZYchh0rd70PtO6mX+9Vv22gJpfn28W+he+S7rV8sd9p9IJRqbS9XGxJFNf8MOet5JZU9U+crXSX1oNmRgrh4u2VPvWkfX/5XZtyfwj+4rwlK67I+4asA0Wvwv+MimQy2yM+MmQ/x+k5RVrTxE4dhSSllRlkY1VJYIdjGw8MvRB2ou7zmk8yz5F9zBrst3BgAA\"\n },\n \"preparation-failure-history.json\": {\n \"sha256\": \"51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1070,\n \"content_base64\": \"H4sIAAAAAAACA5VSwW7bMAy99yuInIsuVq1IXu+7rQN2HYaAkqhYqC0ZkpwsG/bvo5rmsKLDtoNhmH4kH997P24ANhFrONKevCdbN+/B41Totv0JMdSA007tZ4zBU6n7MqKQO0ZtOuqNxPutFkPvpNZWGa8kSScUmV5J7MiJVrHaykH73hmhpfXbTvbKG7H50wpzrlT2mSqGSO4PhGyal4kq7Utas+VXxKWMqf6tL6ZKjf1jqnDtqeTAkE+ZYI0YY1qjJac7wJmi46c+wFNMpzhiGWHJVCgfyd0CfUNbIZNNsdS82hpSBFxdaBMLLZix0nSG4GFJpQQz0R08JiZmcrDYUHbCMEPycOUNKYdDiDjBsw53v8mku7ec0B06M1Cn+sHtjBt8NygpURjjlJGstx4IlRZ9L+W9MsZ4GoSkjpHaY69er/gXbfnci7Quo69ieIuXQtu53aAtGuG8cbQzdou6NxadE/ZeiMGJ3vfYoxw6IT0p0TKy86gFbV94XRf8HytqYS5c+sKfXPjIEHChLFgte4ilUIG0EDvEpu1DrGwz1MQ+zBwROIU6prXC3PAhHqCZOfP6/MyKJ36+ABc8TwkdTGifmutXVsHxwFDP714vufZ/4ByNUCxGOHAUAK2lpUWC5oXb+JR4iQjj1qmCTUcedGgZdZQhp1Q5eRQWJskKOKx4Hf3pFBuCjoFOnOwDxp16aNle+agcvjeetY2y45ojJHMJtO423P/1WcDCx+5r5kC8yHrz8+YXqlwcii4EAAA=\"\n },\n \"published-verification.json\": {\n \"sha256\": \"dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 5912,\n \"content_base64\": \"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\"\n },\n \"rollback-deployment.json\": {\n \"sha256\": \"f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 8268,\n \"content_base64\": \"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\"\n },\n \"rollback-preflight-full.json\": {\n \"sha256\": \"0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 21208,\n \"content_base64\": \"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\"\n },\n \"rollback-preflight.json\": {\n \"sha256\": \"4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1872,\n \"content_base64\": \"H4sIAAAAAAACA7VVTW/jNhC9+1cEvm5lUxQli/4FeyiwQJpeehFG5NBmQomqSAU1FvnvHcrfSRZoF+1N5My8eY8cPX5fPDwswblG7VG9hGaAEJbbhzhO+EsK+Tbg+Iq6gUjbS854leUsy/MnJrei2Aq+qsuc1dUXxraMLeeiHqJ9RYKEfoea6gy4cMQbRh9RRQLUEKGFgM2IcJ8TUI0YP+5rHJw/dNjHZoc9jtTF95TByzmc8g9UNTirIInI520Yd54W3+mbVpNNmEshZV3VhmcIrcqENiIDLPKsraXCstabkulZS6Ljp1HhBSKJgLhPKEdCa2cNqoNyeKqYuQz+98dfU9I+xiFs12vjxx0++5Xyk/NduwpeWXDr03Jte0roUGcalQ0kbLWz8QoYSQbGR3ydYwlXyaplqtJ1nWNdljrXeVkzVtAWSoamkHRXHPlyhng7idEYou3PJ3dR1EOHYYBZ5vIDlSuNeRjGW1kvU4tjjxHDSqOBycVVeFX3TWGKvoN4Pwq0v0dw80leeDgI8WmEPtjE8Ml2+H7qNjRlNHV/3HCKEKd038uvM97hvnk49Oq2hfLdACPqJ3+z+8OT+Ten8xMndEP081n7Z/P2v8zcfzJ3s8DFO6FE9SfwPrnwb1P8Zn5LF7w4N3o7WUi6hUaPZAhTP7vaPH0XXwPd2ZAoNL53h8Z2sMNGo4twm6WcTW6jrTEN/mWTBbIPgbAHXlaJDhakRAgua6NylQsJpjVC1VJWppVc8A2gyFFUQrayEAqELKXM201d8pa0H92T3NirZI6OLHSYmo6gBWPsZHJ/TjSo5J/nUCGqYyhEckTcHRKTx2ShtDoimokMfkSFdog3dFle1xspdVFyFFpIXSrgUleYy81GcM04ygpEy9qCskxuxKYm/i0vueTYlp+Anyd19M61oF6yYUTj7G4fs5S3eg6n/yU9BM/0EKQboBQcsVfYGOswXM060P9MSl16TK7mn/CPkSxFsmvkCn8tpij2mtDtjHyuPD5R2W30rlpBry09Ue8bX4S975pGb/G2+BveBvmhUAcAAA==\"\n },\n \"runtime-receipt.json\": {\n \"sha256\": \"6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 808,\n \"content_base64\": \"H4sIAAAAAAACA2WSy47bIBSG93kKK9t2Wi4GTJbdd9e9deAcEjQ2RBhnJqr67sXjzjRVJUu20X85H/Dz0HXHQre4xJyOp+5oXe+cUCiF0nYAUr0kQwMMIL1UVqDjQQ3BHz9vzuvqprhcCEeMZ1rqlrBcoHlPQalhCL3VzSC0QWY8ehuUYAPpIILoeTC9M9J6Ia3oHZOGCSTPJai2tBfcqMQQW36hc1xquY8+pxDP//dpIRx5L8mhNd5p7TQZL3WQygUrOZiWjbbXvdNqUJwL6bn3g7d2QKPc3kev5Nfa+qYMuGEBzTmNER/JBDFDEnGQ1ikFARUqbkQvwWgFQlut2vZRT9ooFhQbjOGASmmHGhnfm+IMZxqXvBZPWzj4usLUQcrpPud16d7RO6TFl3ituXyd4E6lg+Iv8UbdPmN7eZim+x7rIWFEqDTuBe9AraKWld40iepLLs9ba2uj3VgIcMxpuo8l5/oon9sWlPum5mL4Hr/9KbquS1vj+8+F/DOVBxx6bUDdOdblkl+6a0yJ0Od5jnW3J6gNYbyWfIvYnHU/zQDTQo+CbdCNc/QXSOc3jr+axgkOFhpzGQHnmLaPj0hfCCnV2OT/uD7u1Fr9NqpgQj9x9sT5D2ZPsj3mi2JCGPWJsRNjx8Ovw2/MQgIWKAMAAA==\"\n },\n \"scan-receipt.json\": {\n \"sha256\": \"aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 4538,\n \"content_base64\": \"H4sIAAAAAAACA+1VyW7bMBC95ysCXxtKJLVSpxbouae2hxSFwTVmYokqSTlOi/x7KclwLGdBkybooQIM0Hp8M5wZ8s38Ojk9XThOm0baRXW6oD866iSPvdWbm/duRXGWVzlmSOaZLMucMJ6ylOeUpopihlFGskDhBccqh6ikRBAqcsSpKgtUFhyRnCzO+lMEW47++nNgwilnKUwzzCUrUqqE4hQWmLMSq4LIcFgqFOUQ5lLhlIYPQQVKEgYVQcXeZS09FdTT4PRXgAL4VVqnTRMAfDYin+TWf2kDS/ZHY4hzgCBA6DMqq4xUGYzKkkAEswKfL3Y2I1988BMTeGxCcLI3+Wium7Wh4gErnFQJDr8oKSFMEpSg80Uwuh2ycLSWS2WlWy1DQsz41VLX9EK64MTbTg6kxixd17aBtUtuv2MlN1b05G9DHGMZwga1fKU3Q84sXCoYnEae2l3AgaKMrekQ7KULXve4C6yQ/bLz/KhkkFRJWSVpVBRpXuB3EFYQ3hnKrfZLbkR/Ktyj3NQ1bcQ+xAEUhl/Ju1gCAgA3jdIXh1js6zbWjRKg7WxrQhptx9baraQAG2m10pz6UJFY1q2/AaPTB/wAsDLOHyJdo7dVHMcbamPbNfFoGrmwHNLC1tSPraffjfTXxk5sGtPIo8Tazh0iaLpdy9rYmwlhGv3m4Zr8XGt2UBDCUsZwJqo4XJ8O6vEvcNJ3AxDUuZJVPCyHVm/XH3YHDI90WhzdtN0kkX128SPveix5HzsQegLfzwgAd6VbIBjoxhZxf++SbuijhLF3Ti53062P3sxOZwfYRG8Dx3T+6TyHmgPVrdfRYL0jfh/W27O/ED+/4evwZMX2GR2gjMosx1k6d4C5A8wd4AUd4L7o/qwNOGbqiIvt85rAaw5/EhWYFKScpT9L/x9K/z+Y+y8d+a897VMY5UUG01nys+Rnyb/9oH9qxp/0/25PfgMU+IvRuhEAAA==\"\n },\n \"sealed-live-deployment.json\": {\n \"sha256\": \"f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 8268,\n \"content_base64\": \"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\"\n },\n \"sealed-native-dependencies.json\": {\n \"sha256\": \"042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1841,\n \"content_base64\": \"H4sIAAAAAAACA71Uy27bMBC85ysMnUtZoiVLSm9NkaKHpEEPyaEoAj5WNhuJVEnKQBrk37uUZSd+II9DexKw3J2dnZ3Vw8lkEgmja7VoWRedTh4wgCHWqWuwThmNsWiVRh/WcdW2vWe8AQx728MYvlNahsSzAekCkcaHFjyTzLMtcsDW2njmEds9C4cHuzBCxuHTWfMrVmbqLRMIviBqwFe6NrYFSSQIFdidTrctTw8epwcRYnvtVQtkLihNy6KUSb6ZbT3ffkUsTN+YlsfOCMWaKZOtchtdWIc8VyA/Tr5enn8mN1ckSZJiInqPURuNsI8b/EizFo6O8TKvoc51TBwvfsrr1ypVSZrOJJUkz2RFMigp4amckSrhWQUcJOX5mtxILRJMG60Ea27Dsm7dktF8HqBKENmcypTOsiLPyjpP5gDA6xRmohAiK+ZZmaSVKFlRzsokk0nFhSgqntSUsnoe2gxNom4lXrfXxkdX4dF50P7aNH0LZw1T7f/z1NH2b/LXwOtf+ekZbreK73oOVoMHF4biqBwRpu0ajAxz3YN7ucL0WMLvsUp7a5oGOxyWrQYBYo6a79U7byxbAAmUh9HW9ZZpsQQbMhqDjiId88sjiHtg0IBA4kQbObiczqp4TmOa5HFF46VxPnYgegsOLGoRY+XroO9heHCstdKsUX/QClj046nVbg+0dcD3yD4scUz7+YaT37HKe09clgmnOU9JmqWMZFnKCUetSFXWjNayKnkhdk/cdSB2LkYIcO4C5d6b7zsweWOVh28a2RwMhBswvRWwd2cWfvfg/G40tF3vIHBOv6ho+/R4oPeYibfm3OWo2hEHjau+GH1yrhpw93ir7X7GBiNs6B1yPf9h3XZL5gaQT+FYopPHk79qFEgoMQcAAA==\"\n },\n \"source-commit-proof.json\": {\n \"sha256\": \"b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 239,\n \"content_base64\": \"H4sIAAAAAAACA12OwW6EMAxE73wF4rwHIDY2/ZWqipzYKZEKrAgtWlX998JKvfT6NPNmvqu6bjb7yiWvS/NSN2OAEHpU1+MwshiCMzIWFhcdjr2GLiGn2Nz+mnaY+lmWnKzsvkxyNi8T9SACRGShizzSoDywYcIWgFyCMOgp6pwStsoklgQjK0ZpCcj+L9xln8rpJXjyOZdZ9jjZxV7fnmw9Ftv8ZqJ+XT4e/j1ff9bjTOzbp1U/1S/dW3277wAAAA==\"\n },\n \"sqlite_readonly.py\": {\n \"sha256\": \"9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 4610,\n \"content_base64\": \"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\"\n }\n }\n}\n" + } + ] +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4 new file mode 100644 index 0000000..b81024f --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4 @@ -0,0 +1,354 @@ +"""One fixed supervised phase; never run this during source preparation.""" +import argparse +import hashlib +import json +import os +from pathlib import Path +import re +import selectors +import stat +import subprocess +import sys +import time + +if sys.flags.optimize: + raise SystemExit('optimized interpreter refused') + +PHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline', + 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify') + + +def require(value, reason): + if not value: + raise ValueError(reason) + + +def sha(path): + digest = hashlib.sha256() + with Path(path).open('rb') as stream: + for block in iter(lambda: stream.read(1024**2), b''): + digest.update(block) + return digest.hexdigest() + + +def private(path, directory=False): + info = Path(path).lstat() + require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode)) + and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600) + and (directory or info.st_nlink == 1), 'private owned custody required') + +ROOT = Path(__file__).resolve().parent +CASE = ROOT.parent +OWNER = Path('/home/worsch/informed-decision') +CUSTODIAN = Path('/home/worsch/the-custodian') +CUSTODY = CUSTODIAN / '.private-backups/20261011-infd-zlib-r1' +SOCKET = 'unix:///var/run/docker.sock' +IMAGE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' +VOLUME = 'infd-zlib-r1-restore-20261011' +MAX_BYTES = 512 * 1024**2 + + +def run(argv, body=None, timeout=90): + return subprocess.run(argv, input=body, text=True, capture_output=True, timeout=timeout) + + +def json_result(result): + try: + value = json.loads(result.stdout) + except (ValueError, TypeError): + raise ValueError('safe phase receipt unavailable; outcome uncertain') from None + require(result.returncode == 0 and isinstance(value, dict) and value.get('all_checks_pass') is True, + 'phase did not verify complete; raw output withheld; no retry') + permitted = {'phase', 'all_checks_pass', 'raw_output_withheld', 'native_approval_verified_by_root', + 'native_authenticated_grant', 'source_readonly_baseline', 'snapshot_readonly', + 'snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'native_parent_private', + 'native_uid', 'pod_name', 'pod_uid', 'live_readonly_schema_integrity_counts', + 'live_counts_may_include_concurrent_commits', 'operation_requested', 'source_revision', + 'resources', 'prune', 'rollout_verified', 'latest_live_database_retained', + 'client_diff_sha256', 'native_rollout_verified', 'current_schema5_database_retained', + 'private_copy_verified', 'installed_purpose_checks', 'policy_sha256', + 'policy_mode', 'policy_uid', 'installed_zlib_files', 'zlib_package', 'health_statuses', 'native_provider_probe', 'recovery_verification'} + require(set(value) <= permitted, 'unexpected output fields withheld') + from receipt_safety import counts + for name in ('source_readonly_baseline', 'snapshot_readonly', 'live_readonly_schema_integrity_counts'): + if name in value: + counts(value[name]) + for name in ('snapshot_sha256', 'client_diff_sha256'): + if name in value: + require(re.fullmatch(r'[a-f0-9]{64}', value[name]) is not None, 'invalid output digest withheld') + if 'snapshot_bytes' in value: + require(type(value['snapshot_bytes']) is int and 0 < value['snapshot_bytes'] <= MAX_BYTES, + 'invalid output size withheld') + if 'snapshot_file' in value: + require(value['snapshot_file'] in ('drill.sqlite', 'cutover.sqlite'), 'invalid output file withheld') + return value + + +def docker(argv, body=None, timeout=120): + return run(['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET] + argv, + body=body, timeout=timeout) + + +def remote(phase, revision, approved): + # Fixed module imported only after main verifies every executor source hash. + from native_program import PROGRAM + payload = {'phase': phase, 'source_revision': revision, 'approval': approved, + 'sealed': json.loads((CASE / 'sealed-live-deployment.json').read_text()), + 'dependencies': json.loads((CASE / 'sealed-native-dependencies.json').read_text()), + 'candidate': json.loads((CASE / 'candidate-deployment.json').read_text()), + 'rollback': json.loads((CASE / 'rollback-deployment.json').read_text()), + 'receipt_safety': (ROOT / 'receipt_safety.py').read_text(), + 'purpose_checks': (CASE / 'check_installed.py').read_text(), + 'installed_zlib': json.loads((CASE / 'installed-zlib-proof.json').read_text()), 'readonly': (CASE / 'sqlite_readonly.py').read_text()} + script = PROGRAM.replace('__PAYLOAD__', repr(json.dumps(payload))).replace( + '__GUARD__', repr((CASE / 'change_guard.py').read_text())) + return json_result(run(['ssh', 'railiance01', 'python3 -'], script, timeout=200)) + + +def copy_snapshot(phase, revision, approved, journal): + metadata = remote(phase, revision, approved) + backup_phase = 'drill-backup' if phase == 'drill-copy' else 'cutover-backup' + prior = journal.data['phases'][backup_phase]['result'] + for key in ('snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'snapshot_readonly'): + require(metadata[key] == prior[key], 'closed frozen snapshot changed') + name = metadata['snapshot_file'] + require(name in ('drill.sqlite', 'cutover.sqlite') and 0 < metadata['snapshot_bytes'] <= MAX_BYTES, + 'fixed bounded snapshot required') + pod = metadata['pod_name'] + require(re.fullmatch(r'[a-z0-9]([-a-z0-9]*[a-z0-9])?', pod) is not None, 'fixed owner pod name required') + local = CUSTODY / name + fd = os.open(local, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW, 0o600) + # Binary snapshot stdout goes only to a private file, never tool/chat/log output. + # Snapshot schema/count metadata was validated before opening this destination. + with os.fdopen(fd, 'wb') as destination: + command = ('kubectl exec -n informed-decision ' + pod + + ' -c informed-decision -- cat /data/private/zlib85091-r1/' + name) + transfer = subprocess.Popen(['ssh', 'railiance01', command], stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL) + selector = selectors.DefaultSelector() + selector.register(transfer.stdout, selectors.EVENT_READ) + deadline = time.monotonic() + 150 + received = 0 + try: + while True: + remaining = deadline - time.monotonic() + require(remaining > 0 and selector.select(remaining), 'private transfer timed out') + block = os.read(transfer.stdout.fileno(), 1024**2) + if not block: + break + received += len(block) + require(received <= metadata['snapshot_bytes'] and received <= MAX_BYTES, + 'private copy exceeds frozen snapshot size') + destination.write(block) + transfer.wait(timeout=max(1, deadline - time.monotonic())) + finally: + selector.close() + transfer.stdout.close() + if transfer.poll() is None: + transfer.kill() + transfer.wait() + destination.flush() + os.fsync(destination.fileno()) + private(local) + require(transfer.returncode == 0 and local.stat().st_size == metadata['snapshot_bytes'] + and sha(local) == metadata['snapshot_sha256'], 'private copy incomplete/uncertain; retain, no retry') + # Re-read identity/hash after transfer. This is verification, not a write retry. + after = remote(phase, revision, approved) + require(after['pod_uid'] == metadata['pod_uid'] and after['snapshot_sha256'] == metadata['snapshot_sha256'], + 'source identity/snapshot changed during transfer') + return {**metadata, 'off_cluster_private_copy_verified': True, 'snapshot_contents_output': False} + + +def offline_verify(journal): + from receipt_safety import counts + snapshot = CUSTODY / 'drill.sqlite' + private(snapshot) + previous = journal.data['phases']['drill-copy']['result'] + require(sha(snapshot) == previous['snapshot_sha256'], 'protected snapshot bytes changed') + identity = docker(['info', '--format', '{{json .Name}}']) + require(identity.returncode == 0 and json.loads(identity.stdout) == 'bnt-lap001', + 'local offline Docker engine identity changed') + listed = docker(['volume', 'ls', '--format', '{{.Name}}']) + require(listed.returncode == 0 and VOLUME not in listed.stdout.splitlines(), + 'disposable volume absence not verified') + nonce = journal.data['phases']['offline-verify']['attempt_id'] + labels = {'informed-decision.case': 'infd-zlib-20261011-r1', + 'informed-decision.use': 'offline-restore-only', 'informed-decision.attempt': nonce} + created = docker(['volume', 'create', '--driver', 'local', '--label', 'informed-decision.case=infd-zlib-20261011-r1', + '--label', 'informed-decision.attempt=' + nonce, + '--label', 'informed-decision.use=offline-restore-only', VOLUME]) + require(created.returncode == 0 and created.stdout.strip() == VOLUME, 'volume creation uncertain; no retry') + inspected = docker(['volume', 'inspect', VOLUME]) + require(inspected.returncode == 0, 'new volume identity unavailable') + volume = json.loads(inspected.stdout) + require(len(volume) == 1 and volume[0]['Name'] == VOLUME and volume[0].get('Labels') == labels + and volume[0].get('Driver') == 'local' and not volume[0].get('Options') + and volume[0].get('Scope') == 'local', 'new isolated volume identity changed') + identity = {key: volume[0][key] for key in ('Name', 'Labels', 'Driver', 'Scope', 'CreatedAt')} + journal.note('offline-verify', 'created_volume_identity', identity) + # One-time UID0/CAP_CHOWN initialization is isolated to the NEW named volume. + # No host/live PVC/config/token mount exists; this detail needs packet review. + initializer = """import hashlib,os,stat,sys +if sys.flags.optimize:raise RuntimeError('optimized interpreter refused') +folder='/restore';expected=EXPECTED +if os.listdir(folder):raise ValueError('new empty private volume required') +os.chmod(folder,0o700) +fd=os.open(folder+'/review.sqlite',os.O_CREAT|os.O_EXCL|os.O_NOFOLLOW|os.O_WRONLY,0o600) +digest=hashlib.sha256();size=0 +with os.fdopen(fd,'wb') as target: + while True: + block=sys.stdin.buffer.read(1024**2) + if not block:break + size+=len(block) + if size>512*1024**2:raise ValueError('private restore size exceeds bound') + target.write(block);digest.update(block) + target.flush();os.fsync(target.fileno()) +if digest.hexdigest()!=expected:raise ValueError('private copied snapshot differs') +os.chown(folder+'/review.sqlite',10001,10001);os.chown(folder,10001,10001) +print('{"all_checks_pass":true,"private_copy_verified":true}') +""".replace('EXPECTED', repr(previous['snapshot_sha256'])) + with snapshot.open('rb') as source: + argv = ['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET, + 'run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m', + '--user', '0:0', '--cap-drop', 'ALL', '--cap-add', 'CHOWN', + '--security-opt', 'no-new-privileges', '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore', + '--entrypoint', 'python', IMAGE, '-c', initializer] + copied = subprocess.run(argv, stdin=source, text=True, capture_output=True, timeout=150) + json_result(copied) + options = ['run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m', + '--user', '10001:10001', '--cap-drop', 'ALL', '--security-opt', 'no-new-privileges', + '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore'] + readonly = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'], + (CASE / 'sqlite_readonly.py').read_text()) + require(readonly.returncode == 0, 'offline pre-open schema/integrity gate refused; never open Store') + checked = counts(json.loads(readonly.stdout)) + require(checked == previous['snapshot_readonly'], 'frozen snapshot/clone readonly counts differ') + admin = docker(options + ['--entrypoint', 'informed-decision-admin', IMAGE, + 'inspect', '--db', '/restore/review.sqlite']) + require(admin.returncode == 0, 'offline admin result uncertain') + admin_counts = json.loads(admin.stdout) + require(admin_counts == {key: checked[key] for key in ('schema_version', 'lifecycle', 'outbox', 'submissions')}, + 'offline admin changed frozen snapshot counters') + # Admin Store construction must not silently alter schema/integrity/counters. + post = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'], + (CASE / 'sqlite_readonly.py').read_text()) + require(post.returncode == 0, 'offline post-admin readonly integrity gate refused') + post_checked = counts(json.loads(post.stdout)) + require(post_checked == checked == previous['snapshot_readonly'], + 'offline admin altered frozen snapshot proof') + private(snapshot) + require(sha(snapshot) == previous['snapshot_sha256'], 'original protected snapshot changed during drill') + return {'all_checks_pass': True, 'offline_volume': VOLUME, 'offline_readonly': checked, + 'offline_post_admin_readonly': post_checked, 'original_snapshot_hash_unchanged': True, + 'created_volume_identity': identity, + 'admin_counts': admin_counts, 'network': 'none', 'runtime_tokens_or_config_mounted': False, + 'service_entrypoint_started': False, 'original_snapshot_retained': True} + + +def cleanup_offline(journal): + inspected = docker(['volume', 'inspect', VOLUME]) + require(inspected.returncode == 0, 'owned disposable volume identity unverified') + value = json.loads(inspected.stdout) + expected = journal.data['phases']['offline-verify']['result']['created_volume_identity'] + require(len(value) == 1 and {key: value[0].get(key) for key in expected} == expected + and not value[0].get('Options'), 'volume ownership/recreation changed') + removed = docker(['volume', 'rm', VOLUME]) + require(removed.returncode == 0 and removed.stdout.strip() == VOLUME + and docker(['volume', 'inspect', VOLUME]).returncode != 0, + 'cleanup outcome ambiguous; do not retry') + return {'all_checks_pass': True, 'only_disposable_offline_volume_removed': VOLUME, + 'native_and_offcluster_original_snapshots_retained': True} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--phase', choices=PHASES, required=True) + parser.add_argument('--root-authority-receipt', type=Path, required=True) + parser.add_argument('--root-native-outcome', type=Path, required=True) + parser.add_argument('--source-revision', required=True) + args = parser.parse_args() + require(args.root_authority_receipt == Path('/tmp/security-infd-zlib-root-authority.json') + and args.root_native_outcome == Path('/tmp/security-infd-zlib-native-outcome-latest.json'), + 'fixed supervised receipt paths required') + require(re.fullmatch(r'[0-9a-f]{40}', args.source_revision) is not None, 'exact source commit required') + # Verify all prepared executor/input bytes before reading authority or dispatching. + plan = json.loads((ROOT / 'execution-plan.json').read_text()) + require(plan.get('state') == 'prepared-reviewed' and plan.get('published_artifact_verified') is True, 'unfrozen proposal cannot execute') + require(set(plan['executor_files']) == {'actuator.py', 'authority_journal.py', 'native_program.py', 'receipt_safety.py'}, + 'fixed executor sources required') + require(set(plan['owner_source_files']) == {'deploy/lifecycle/admission.candidate.json', + 'deploy/lifecycle/service.candidate.json', + 'deploy/lifecycle/kustomization.yaml', + 'deploy/lifecycle/registries.candidate.json'}, + 'fixed owner image sources required') + for relative, digest in plan['executor_files'].items(): + target = ROOT / relative + require(not target.is_symlink() and sha(target) == digest, 'executor source bytes changed') + for relative, digest in plan['case_files'].items(): + require(not Path(relative).is_absolute() and '..' not in Path(relative).parts, + 'case source path escaped') + target = CASE / relative + require(not target.is_symlink() and sha(target) == digest, 'case source bytes changed') + for relative, digest in plan['owner_source_files'].items(): + target = OWNER / relative + require(not target.is_symlink() and sha(target) == digest, 'owner image-only source changed') + committed = subprocess.run(['git', '-C', str(OWNER), 'show', args.source_revision + ':' + relative], + capture_output=True) + require(committed.returncode == 0 and hashlib.sha256(committed.stdout).hexdigest() == digest, + 'committed owner render source differs from approved inputs') + head = run(['git', '-C', str(OWNER), 'rev-parse', 'HEAD']) + require(head.returncode == 0 and head.stdout.strip() == args.source_revision, 'owner source HEAD differs') + from authority_journal import Journal, authority + private(args.root_authority_receipt) + private(args.root_native_outcome) + receipt = json.loads(args.root_authority_receipt.read_text()) + require(receipt.get('native_outcome_sha256') == sha(args.root_native_outcome), 'native outcome bytes changed') + require(receipt.get('executor_plan_sha256') == sha(ROOT / 'execution-plan.json'), + 'root verified executor plan differs') + approved = authority(receipt, json.loads(args.root_native_outcome.read_text()), sha(CASE / 'memo.json'), + args.source_revision, args.phase) + parent = CUSTODY.parent + private(parent, directory=True) + ignored = run(['git', '-C', str(CUSTODIAN), 'check-ignore', '--no-index', str(CUSTODY / 'drill.sqlite')]) + require(ignored.returncode == 0, 'offcluster custody is not ignored') + if not CUSTODY.exists(): + require(args.phase == 'drill-backup', 'first approved phase must create unique private custody') + os.mkdir(CUSTODY, 0o700) + private(CUSTODY, directory=True) + capacity = os.statvfs(CUSTODY) + require(capacity.f_bavail * capacity.f_frsize >= 2 * MAX_BYTES + 16 * 1024**2, + 'independent protected custody headroom insufficient') + os.makedirs(CUSTODY / 'empty-docker-config', mode=0o700, exist_ok=True) + private(CUSTODY / 'empty-docker-config', directory=True) + require(not list((CUSTODY / 'empty-docker-config').iterdir()), 'public Docker read config must stay empty') + journal = Journal(CUSTODY, {'proposal': plan['proposal_id'], 'source_revision': args.source_revision, + 'memo_sha256': sha(CASE / 'memo.json'), 'plan_sha256': sha(ROOT / 'execution-plan.json')}) + try: + journal.start(args.phase, approved) # fsynced RUNNING before any phase effect. + if args.phase in ('drill-copy', 'cutover-copy'): + result = copy_snapshot(args.phase, args.source_revision, approved, journal) + elif args.phase == 'offline-verify': + result = offline_verify(journal) + elif args.phase == 'cleanup-offline': + result = cleanup_offline(journal) + else: + result = remote(args.phase, args.source_revision, approved, operation_intent=journal.data['phases'].get('rollback' if args.phase == 'rollback-verify' else 'release') if args.phase in ('verify', 'rollback-verify') else None) + journal.finish(args.phase, result) + print(json.dumps(result)) # Only count/hash/identity receipts, never snapshot bytes. + except BaseException as error: + safe = {'all_checks_pass': False, 'phase': args.phase, 'failure_class': type(error).__name__, + 'failure': 'fixed phase outcome uncertain; original evidence retained; no retry', + 'raw_output_withheld': True} + if journal.data['phases'].get(args.phase, {}).get('state') == 'RUNNING': + journal.finish(args.phase, safe) + print(json.dumps(safe)) + raise SystemExit(1) from None + finally: + journal.close() + + +if __name__ == '__main__': + try: + main() + except Exception: + raise SystemExit('supervised execution refused before phase; raw output withheld') from None diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac new file mode 100644 index 0000000..c0ce95b --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac @@ -0,0 +1,402 @@ +"""Synthetic custody/transport tests. No native data, Docker or cluster action.""" +import copy +import datetime +import io +import json +import os +from pathlib import Path +import subprocess +import sys +import tempfile +import unittest +from unittest.mock import patch +from contextlib import redirect_stdout + +import actuator +from authority_journal import Journal, authority, fresh_scan +from native_program import PROGRAM +from receipt_safety import counts + +CASE = Path(__file__).resolve().parent.parent +NOW = datetime.datetime(2026, 10, 11, 2, 0, tzinfo=datetime.timezone.utc) +REVISION = 'e' * 40 +COUNT = {'schema_version': 5, 'integrity': 'ok', 'read_only_pre_open': True, 'store_constructed': False, + 'lifecycle': {'records': 3, 'events': 8, 'pending': 1}, + 'outbox': {'pending': 2, 'delivered': 10}, 'submissions': {'confirmed': 1, 'unresolved': 1}} + + +def accepted(): + approval = '11111111-1111-4111-8111-111111111111' + review = 'review-22222222-2222-4222-8222-222222222222' + disposition = 'disp-33333333-3333-4333-8333-333333333333' + receipt = {'proposal_id': 'INFD-WP-0009-T05/zlib85091-r1', + 'memo_id': 'infd-20261011-zlib-remediation-r1', 'memo_version': 1, + 'memo_sha256': 'a' * 64, 'source_revision': REVISION, 'activation': 'APPROVED', + 'authority_mode': 'ADMINISTER', 'target': 'realm:kubernetes/railiance01/informed-decision', + 'verification_method': 'root-fixed-origin-native-readback', 'runtime_authenticated_grant': False, 'outcome_query': '/lifecycle/memos/infd-20261011-zlib-remediation-r1/outcomes?version=1', + 'verified_at': '2026-10-11T02:00:00Z', 'accepted_at': '2026-10-11T01:59:00Z', + 'review_memo_id': review, 'approval_id': approval, 'disposition_id': disposition} + outcome = {'memo_id': receipt['memo_id'], 'review': {'memo_id': review, 'stale': False, 'intake_state': 'ready'}, + 'dispositions': [{'approval_id': None, 'submission_state': 'confirmed', + 'disposition': {'verb': 'accept', 'memo_version': 1, 'memo_id': review, + 'approval_id': approval, 'id': disposition, + 'actor': {'kind': 'person', 'sub': 'uid=platform-root,ou=people,dc=netkingdom,dc=local'}, + 'at': receipt['accepted_at']}}]} + return receipt, outcome + + +class AuthorityAndCustody(unittest.TestCase): + def test_exact_nested_founder_receipt_not_top_level_approval(self): + receipt, outcome = accepted() + result = authority(receipt, outcome, 'a' * 64, REVISION, 'drill-copy', NOW) + self.assertEqual(result['approval_id'], receipt['approval_id']) + + def test_pending_stale_wrong_actor_version_and_binding_refuse(self): + mutations = [lambda r, o: r.update(activation='PENDING'), + lambda r, o: r.update(memo_sha256='changed'), + lambda r, o: r.update(source_revision='changed'), + lambda r, o: r.update(target='other'), + lambda r, o: r.update(verified_at='2026-10-11T01:00:00Z'), + lambda r, o: r.update(verification_method='caller-asserted'), + lambda r, o: r.update(runtime_authenticated_grant=True), + lambda r, o: o['review'].update(stale=True), + lambda r, o: o['review'].update(intake_state='pending'), + lambda r, o: o['dispositions'][0].update(submission_state='unresolved'), + lambda r, o: o['dispositions'][0]['disposition'].update(memo_version=3), + lambda r, o: o['dispositions'][0]['disposition'].update(actor={'kind': 'agent', 'sub': 'platform-root'}), + lambda r, o: o['dispositions'].append(copy.deepcopy(o['dispositions'][0]))] + for mutate in mutations: + with self.subTest(mutate=mutate): + r, o = accepted() + mutate(r, o) + with self.assertRaises(ValueError): + authority(r, o, 'a' * 64, REVISION, 'release', NOW) + + def test_expired_window_and_unknown_phase_refuse(self): + r, o = accepted() + with self.assertRaises(ValueError): + authority(r, o, 'a' * 64, REVISION, 'arbitrary', NOW) + late = datetime.datetime(2026, 10, 13, tzinfo=datetime.timezone.utc) + r['verified_at'] = late.isoformat() + with self.assertRaises(ValueError): + authority(r, o, 'a' * 64, REVISION, 'rollback', late) + + def test_durable_intent_precedes_dispatch_and_never_retries(self): + with tempfile.TemporaryDirectory() as directory: + parent = Path(directory) + os.chmod(parent, 0o700) + journal = Journal(parent, {'case': 'fixture'}) + journal.start('drill-backup', {'approval_id': 'fixture'}) + self.assertEqual(json.loads(journal.path.read_text())['phases']['drill-backup']['state'], 'RUNNING') + journal.close() # simulated crash before result + recovered = Journal(parent, {'case': 'fixture'}) + with self.assertRaises(ValueError): + recovered.start('drill-backup', {}) + with self.assertRaises(ValueError): + recovered.start('drill-backup', {}) + recovered.close() + + def test_phase_order_and_uncertain_release_allows_only_distinct_recovery(self): + with tempfile.TemporaryDirectory() as directory: + os.chmod(directory, 0o700) + j = Journal(directory, {'case': 'fixture'}) + with self.assertRaises(ValueError): + j.start('release', {}) + for phase in actuator.PHASES[:6]: + j.start(phase, {}) + j.finish(phase, {'all_checks_pass': True}) + j.start('release', {}) + j.finish('release', {'all_checks_pass': False}) + with self.assertRaises(ValueError): + j.start('release', {}) + with self.assertRaises(ValueError): + j.start('verify', {}) + j.start('rollback', {}) + j.finish('rollback', {'all_checks_pass': True}) + j.close() + + def test_secret_or_unknown_child_output_is_withheld(self): + for body in ('not-json', '{"all_checks_pass":true,"token":"private-value"}', + '{"all_checks_pass":true,"snapshot_readonly":{"schema_version":5}}'): + with self.assertRaises(ValueError): + actuator.json_result(subprocess.CompletedProcess([], 0, body, '')) + wrong = copy.deepcopy(COUNT) + wrong['outbox'] = {'private-row-value': 1} + with self.assertRaises(ValueError): + counts(wrong) + counts(COUNT) # blocked/unresolved counts are not required to be zero. + + def test_binary_copy_is_bounded_private_and_never_echoed(self): + blob = b'synthetic private fixture bytes' + digest = __import__('hashlib').sha256(blob).hexdigest() + metadata = {'all_checks_pass': True, 'snapshot_file': 'drill.sqlite', 'snapshot_bytes': len(blob), + 'snapshot_sha256': digest, 'snapshot_readonly': COUNT, + 'pod_name': 'fixture-pod', 'pod_uid': 'fixture-uid'} + journal = type('FixtureJournal', (), {'data': {'phases': {'drill-backup': {'result': metadata}}}})() + real_popen = subprocess.Popen + for extra in (b'', b'oversized'): + with self.subTest(extra=extra), tempfile.TemporaryDirectory() as folder: + os.chmod(folder, 0o700) + output = io.StringIO() + + def child(*args, **kwargs): + return real_popen([sys.executable, '-c', 'import sys;sys.stdout.buffer.write(' + repr(blob + extra) + ')'], + stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) + + with patch.object(actuator, 'CUSTODY', Path(folder)), patch.object(actuator, 'remote', return_value=metadata), \ + patch('subprocess.Popen', side_effect=child), redirect_stdout(output): + if extra: + with self.assertRaises(ValueError): + actuator.copy_snapshot('drill-copy', REVISION, {}, journal) + else: + result = actuator.copy_snapshot('drill-copy', REVISION, {}, journal) + self.assertTrue(result['off_cluster_private_copy_verified']) + self.assertEqual((Path(folder) / 'drill.sqlite').read_bytes(), blob) + self.assertEqual(output.getvalue(), '') + self.assertEqual((Path(folder) / 'drill.sqlite').stat().st_mode & 0o777, 0o600) + + def test_recreated_offline_volume_cannot_be_deleted(self): + identity = {'Name': actuator.VOLUME, 'Labels': {'nonce': 'old'}, 'CreatedAt': 'old'} + journal = type('FixtureJournal', (), {'data': {'phases': { + 'offline-verify': {'result': {'created_volume_identity': identity}}}}})() + inspected = [{**identity, 'CreatedAt': 'recreated'}] + with patch.object(actuator, 'docker', return_value=subprocess.CompletedProcess([], 0, json.dumps(inspected), '')) as mocked: + with self.assertRaises(ValueError): + actuator.cleanup_offline(journal) + self.assertEqual(mocked.call_count, 1) + + def test_offline_post_admin_integrity_and_original_hash_are_rechecked(self): + for defect in ('none', 'post-integrity', 'original-hash'): + with self.subTest(defect=defect), tempfile.TemporaryDirectory() as directory: + folder=Path(directory);os.chmod(folder,0o700) + snapshot=folder/'drill.sqlite';snapshot.write_bytes(b'private synthetic snapshot');os.chmod(snapshot,0o600) + digest=actuator.sha(snapshot) + prior={'snapshot_sha256':digest,'snapshot_readonly':COUNT} + journal=type('FixtureJournal',(),{'data':{'phases':{'drill-copy':{'result':prior},'offline-verify':{'attempt_id':'nonce'}}},'note':lambda *args:None})() + reads=[] + volume={'Name':actuator.VOLUME,'Labels':{'informed-decision.case':'infd-zlib-20261011-r1','informed-decision.use':'offline-restore-only','informed-decision.attempt':'nonce'},'Driver':'local','Scope':'local','CreatedAt':'fixture','Options':None} + def docker(argv, body=None, **kwargs): + if argv[0]=='info':body=json.dumps('bnt-lap001') + elif argv[:2]==['volume','ls']:body='' + elif argv[:2]==['volume','create']:body=actuator.VOLUME + elif argv[:2]==['volume','inspect']:body=json.dumps([volume]) + elif 'informed-decision-admin' in argv: + body=json.dumps({key:COUNT[key] for key in ('schema_version','lifecycle','outbox','submissions')}) + if defect=='original-hash':snapshot.write_bytes(b'changed synthetic original') + elif '--entrypoint' in argv and 'python' in argv: + reads.append(argv);proof=copy.deepcopy(COUNT) + if len(reads)==2 and defect=='post-integrity':proof['integrity']='corrupt' + body=json.dumps(proof) + else:raise AssertionError('unexpected offline command') + return subprocess.CompletedProcess(argv,0,body,'') + with patch.object(actuator,'CUSTODY',folder),patch.object(actuator,'CASE',CASE),patch.object(actuator,'docker',side_effect=docker),patch('subprocess.run',return_value=subprocess.CompletedProcess([],0,'{"all_checks_pass":true,"private_copy_verified":true}','')): + if defect=='none': + result=actuator.offline_verify(journal) + self.assertEqual(result['offline_post_admin_readonly'],COUNT) + self.assertTrue(result['original_snapshot_hash_unchanged']) + else: + with self.assertRaises(ValueError):actuator.offline_verify(journal) + self.assertEqual(len(reads),2) + + def test_fresh_full_scan_db_expiry_and_new_findings_refuse(self): + receipt={'image':actuator.IMAGE,'artifact_source_revision':'9b4bb25d325698ae543e7e8a8a3c3592db1f58fc','scanner':'aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969','no_suppression':True,'full_allseverity_scan':True,'exit_code':0,'completed_at':'2026-10-11T01:59:00Z','db_metadata':{'UpdatedAt':'2026-10-10T19:00:00Z','NextUpdate':'2026-10-11T19:00:00Z','Version':2},'db_sha256':'a'*64,'full_report_sha256':'b'*64} + report={'Results':[{'Vulnerabilities':None}]} + self.assertEqual(fresh_scan(receipt,report,NOW)['allseverity_findings'],0) + mutations=[lambda r,p:r.update(no_suppression=False),lambda r,p:r.update(image='foreign'),lambda r,p:r.update(scanner='other'),lambda r,p:r.update(completed_at='2026-10-10T21:00:00Z'),lambda r,p:r['db_metadata'].update(NextUpdate='2026-10-11T01:59:00Z'),lambda r,p:p['Results'][0].update(Vulnerabilities=[{'Severity':'LOW'}]),lambda r,p:p.update(Results=[])] + for mutate in mutations: + r,p=copy.deepcopy(receipt),copy.deepcopy(report);mutate(r,p) + with self.assertRaises(ValueError):fresh_scan(r,p,NOW) + + +class FixedNativeProgram(unittest.TestCase): + def fixture(self): + sealed = json.loads((CASE / 'sealed-live-deployment.json').read_text()) + live = copy.deepcopy(sealed) + live['metadata'].update(generation=42) + live['status'] = {'readyReplicas': 1, 'updatedReplicas': 1, 'observedGeneration': 42} + dependencies = json.loads((CASE / 'sealed-native-dependencies.json').read_text()) + cm = copy.deepcopy(dependencies['configmap']) + cm.pop('canonical_data_sha256') + service = json.loads((CASE / 'candidate-deployment.json').read_text()) + source_service = json.loads((Path('/home/worsch/informed-decision/deploy/lifecycle/service.candidate.json')).read_text()) + cm['data'] = next(x for x in source_service['items'] if x['kind'] == 'ConfigMap')['data'] + pvc = copy.deepcopy(dependencies['pvc']) + pvc['status'] = {'phase': 'Bound'} + app = {'metadata': {'uid': '499868f2-eabc-4df4-ae31-b89ce58d750d', 'resourceVersion': '17'}, + 'spec': {'source': {'repoURL': 'https://forgejo.coulomb.social/coulomb/informed-decision.git', + 'path': 'deploy/lifecycle', 'targetRevision': 'c96b0c6d881e855d1d158003c6de90ef390262e2'}, + 'destination': {'namespace': 'informed-decision', 'server': 'https://kubernetes.default.svc'}}} + objects = {'deployment': live, 'configmap': cm, 'pvc': pvc, 'application': app} + payload = {'phase': 'release', 'source_revision': REVISION, 'approval': {}, 'sealed': sealed, + 'dependencies': dependencies, 'candidate': service, + 'rollback': json.loads((CASE / 'rollback-deployment.json').read_text()), + 'readonly': (CASE / 'sqlite_readonly.py').read_text(),'purpose_checks':(CASE/'check_installed.py').read_text(), + 'installed_zlib': json.loads((CASE / 'installed-zlib-proof.json').read_text()), 'receipt_safety': (Path(__file__).parent / 'receipt_safety.py').read_text()} + return objects, payload + + def execute_fake(self, objects, payload, ambiguous=False, schema_refused=False): + writes = [] + calls = [] + + def fake(argv, input=None, **kwargs): + calls.append(argv) + if argv[:2] == ['kubectl', 'get']: + kind = argv[2] + if kind in objects: + body = objects[kind] + elif kind == 'pods': + body = {'items': [{'metadata': {'name': 'fixture-pod', 'uid': 'c4cb1550-feda-4097-9de4-d891a657b662', + 'ownerReferences': [{'kind': 'ReplicaSet', 'name': 'fixture-rs', 'uid': 'rs-uid'}]}, + 'spec': objects['deployment']['spec']['template']['spec'], + 'status': {'phase': 'Running', 'containerStatuses': [{'name':'informed-decision','ready': True,'imageID':objects['deployment']['spec']['template']['spec']['containers'][0]['image']}] }}]} + elif kind == 'replicaset': + body = {'metadata': {'uid': 'rs-uid', 'ownerReferences': [ + {'kind': 'Deployment', 'uid': payload['sealed']['metadata']['uid']}]}} + elif kind == 'nodes': + body = {'items': [{'metadata': {'name': 'fixture-node'}, 'status': { + 'addresses': [{'address': '92.205.62.239'}], 'allocatable': {'cpu': '4'}, + 'conditions': [{'type': key, 'status': 'True' if key == 'Ready' else 'False'} + for key in ('Ready', 'MemoryPressure', 'DiskPressure', 'PIDPressure')]}}]} + else: + raise AssertionError('unexpected fixed metadata route') + return subprocess.CompletedProcess(argv, 0, json.dumps(body), '') + if argv[:2] == ['kubectl', 'exec']: + if schema_refused: + return subprocess.CompletedProcess(argv, 1, '', 'withheld') + return subprocess.CompletedProcess(argv, 0, json.dumps({ + 'all_checks_pass': True, 'live_readonly_schema_integrity_counts': COUNT}), '') + if argv[:2] == ['kubectl', 'apply']: + admitted = copy.deepcopy(payload['sealed']) + admitted['spec']['template']['spec']['containers'][0]['image'] = (actuator.IMAGE if payload['phase']=='release' else payload['sealed']['spec']['template']['spec']['containers'][0]['image']) + return subprocess.CompletedProcess(argv, 0, json.dumps(admitted), '') + if argv[:2] == ['kubectl', 'describe']: + return subprocess.CompletedProcess(argv, 0, 'Allocated resources:\n cpu 3460m (86%)\n', '') + if argv[:2] == ['kubectl', 'diff']: + return subprocess.CompletedProcess(argv, 1, '-image: base\n+image: candidate\n', '') + if argv[:2] == ['kubectl', 'patch']: + if '--dry-run=server' not in argv: + writes.append(json.loads(input)) + if ambiguous: + return subprocess.CompletedProcess(argv, 1, '', 'withheld') + return subprocess.CompletedProcess(argv, 0, 'application.argoproj.io/informed-decision\n', '') + raise AssertionError('unexpected command') + + source = PROGRAM.replace('__PAYLOAD__', repr(json.dumps(payload))).replace( + '__GUARD__', repr((CASE / 'change_guard.py').read_text())) + output = io.StringIO() + with patch('subprocess.run', side_effect=fake), redirect_stdout(output): + try: + exec(compile(source, 'fixed-native-fixture', 'exec'), {'__name__': '__fixture__'}) + except (ValueError, SystemExit): + pass + receipt = json.loads(output.getvalue()) if output.getvalue() else {'all_checks_pass': False} + return receipt, writes, calls + + def test_only_existing_application_operation_and_deployment_are_requested(self): + objects, payload = self.fixture() + receipt, writes, calls = self.execute_fake(objects, payload) + self.assertTrue(receipt['all_checks_pass']) + self.assertFalse(receipt['rollout_verified']) + self.assertEqual(len(writes), 1) + operation = writes[0][-1]['value'] + self.assertFalse(operation['sync']['prune']) + self.assertEqual(operation['sync']['resources'], [ + {'group': 'apps', 'kind': 'Deployment', 'name': 'informed-decision', 'namespace': 'informed-decision'}]) + self.assertTrue(any('--dry-run=server' in argv and argv[:2] == ['kubectl', 'patch'] for argv in calls)) + self.assertEqual(writes[0][0]['path'], '/metadata/uid') + + def test_source_overrides_automation_and_custody_drift_stop_before_write(self): + mutations = [lambda o: o['application']['metadata'].update(uid='recreated'), + lambda o: o['application']['spec'].update(syncPolicy={'automated': {}}), + lambda o: o['application']['spec']['source'].update(kustomize={'images': ['other']}), + lambda o: o['application']['spec'].update(sources=[{}]), + lambda o: o['configmap']['metadata'].update(uid='recreated'), + lambda o: o['pvc']['spec'].update(volumeName='replaced'), + lambda o: o['deployment']['status'].update(readyReplicas=0)] + for mutate in mutations: + with self.subTest(mutate=mutate): + objects, payload = self.fixture() + mutate(objects) + receipt, writes, calls = self.execute_fake(objects, payload) + self.assertFalse(receipt['all_checks_pass']) + self.assertEqual(writes, []) + + def test_preopen_schema_refusal_prevents_image_operation(self): + objects, payload = self.fixture() + receipt, writes, calls = self.execute_fake(objects, payload, schema_refused=True) + self.assertFalse(receipt['all_checks_pass']) + self.assertEqual(writes, []) + + + def test_rollback_unready_candidate_never_reads_pod_or_database(self): + objects, payload = self.fixture() + payload['phase'] = 'rollback' + objects['deployment']['status'].update(readyReplicas=0, updatedReplicas=0) + objects['deployment']['spec']['template']['spec']['containers'][0]['image'] = actuator.IMAGE + objects['application']['spec']['source']['targetRevision'] = REVISION + receipt, writes, calls = self.execute_fake(objects, payload, schema_refused=True) + self.assertTrue(receipt['all_checks_pass']) + self.assertFalse(receipt['rollout_verified']) + self.assertEqual(len(writes), 1) + self.assertFalse(any(argv[:2] == ['kubectl', 'exec'] or argv[:3] == ['kubectl', 'get', 'pods'] for argv in calls)) + self.assertEqual(writes[0][-1]['value']['sync']['revision'], 'c96b0c6d881e855d1d158003c6de90ef390262e2') + + def test_rollback_still_refuses_custody_or_nonpair_image_drift(self): + for defect in ('cm', 'pvc', 'image'): + with self.subTest(defect=defect): + objects, payload = self.fixture();payload['phase'] = 'rollback' + objects['deployment']['status']['readyReplicas'] = 0 + if defect == 'cm':objects['configmap']['metadata']['uid'] = 'recreated' + elif defect == 'pvc':objects['pvc']['spec']['volumeName'] = 'replaced' + else:objects['deployment']['spec']['template']['spec']['containers'][0]['image'] = 'foreign-image' + receipt, writes, calls = self.execute_fake(objects, payload) + self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes, []) + + def test_recovery_verification_is_separate_ready_old_image_schema_proof(self): + objects, payload = self.fixture();payload['phase'] = 'rollback-verify' + resource={'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'} + target='c96b0c6d881e855d1d158003c6de90ef390262e2' + payload['operation_intent']={'state':'COMPLETE','started_at':'2026-10-11T01:00:00Z','result':{'operation_requested':True,'source_revision':target,'prune':False,'resources':[resource]}} + objects['application']['status']={'operationState':{'phase':'Succeeded','startedAt':'2026-10-11T01:00:01Z','finishedAt':'2026-10-11T01:01:00Z','operation':{'initiatedBy':{'username':'custodian-codex'},'sync':{'revision':target,'resources':[resource]}},'syncResult':{'revision':target,'resources':[{**resource,'status':'Synced'}]}}} + receipt, writes, calls = self.execute_fake(objects, payload) + self.assertTrue(receipt['all_checks_pass']);self.assertTrue(receipt['recovery_verification']) + self.assertEqual(writes, []) + self.assertTrue(any(argv[:2]==['kubectl','exec'] for argv in calls)) + objects['deployment']['status']['readyReplicas'] = 0 + receipt, writes, calls = self.execute_fake(objects,payload) + self.assertFalse(receipt['all_checks_pass']) + + def test_ambiguous_patch_is_never_retried(self): + objects, payload = self.fixture() + receipt, writes, calls = self.execute_fake(objects, payload, ambiguous=True) + self.assertFalse(receipt['all_checks_pass']) + self.assertEqual(len(writes), 1) + + def test_false_omitempty_needs_bound_current_request_and_exact_completion(self): + objects,payload=self.fixture();payload['phase']='rollback-verify' + resource={'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'} + target='c96b0c6d881e855d1d158003c6de90ef390262e2' + payload['operation_intent']={'state':'COMPLETE','started_at':'2026-10-11T01:00:00Z','result':{'operation_requested':True,'source_revision':target,'prune':False,'resources':[resource]}} + objects['application']['status']={'operationState':{'phase':'Succeeded','startedAt':'2026-10-11T01:00:01Z','finishedAt':'2026-10-11T01:01:00Z','operation':{'initiatedBy':{'username':'custodian-codex'},'sync':{'revision':target,'resources':[resource]}},'syncResult':{'revision':target,'resources':[{**resource,'status':'Synced'}]}}} + self.assertTrue(self.execute_fake(objects,payload)[0]['all_checks_pass']) + mutations=[lambda o,p:o['application']['status']['operationState']['operation']['sync'].update(prune=True), + lambda o,p:o['application']['status']['operationState']['operation']['sync'].update(prune=None), + lambda o,p:o['application']['status']['operationState'].update(startedAt='2026-10-11T00:59:00Z'), + lambda o,p:o['application']['status']['operationState']['operation'].update(initiatedBy={'username':'other'}), + lambda o,p:o['application']['status']['operationState']['syncResult'].update(revision='foreign'), + lambda o,p:o['application']['status']['operationState']['syncResult']['resources'][0].update(status='Pruned'), + lambda o,p:p['operation_intent']['result'].update(prune=True), + lambda o,p:p.update(operation_intent=None)] + for mutate in mutations: + o,p=copy.deepcopy(objects),copy.deepcopy(payload);mutate(o,p) + receipt,writes,calls=self.execute_fake(o,p) + self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[]) + + def test_optimized_executor_refuses_before_any_input(self): + result=subprocess.run([sys.executable,'-O',str(Path(__file__).parent/'actuator.py'),'--phase','release','--root-authority-receipt','/missing','--root-native-outcome','/missing','--source-revision',REVISION],capture_output=True,text=True) + self.assertNotEqual(result.returncode,0) + self.assertIn('optimized interpreter refused',result.stderr) + + +if __name__ == '__main__': + unittest.main() diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c new file mode 100644 index 0000000..ea29c3b --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c @@ -0,0 +1,62 @@ +{ + "kind": "informed-decision.supervised-mechanical-release-plan", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "trial_id": "infd-zlib-20261011-r1", + "state": "prepared-unapproved", + "executor_files": { + "actuator.py": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "authority_journal.py": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "native_program.py": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "receipt_safety.py": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + "case_files": { + "post-ready-native-outcomes-command.py": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "scan-receipt.json": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "source-commit-proof.json": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "candidate-deployment.json": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "artifact-comparison.json": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "rollback-deployment.json": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "sqlite_readonly.py": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "published-verification.json": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "sealed-native-dependencies.json": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "sealed-live-deployment.json": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "native-preflight.json": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "fresh-scan-receipt-template.json": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "rollback-preflight.json": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "installed-zlib-proof.json": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "runtime-receipt.json": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "change_guard.py": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "check_installed.py": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "candidate-runtime.json": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + "owner_source_files": { + "deploy/lifecycle/admission.candidate.json": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "deploy/lifecycle/service.candidate.json": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "deploy/lifecycle/kustomization.yaml": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "deploy/lifecycle/registries.candidate.json": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + "candidate_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "prior_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "source_revision": "must-be-exact-final-owner-HEAD-with-approved-four-Git-blobs", + "phases": [ + "drill-backup", + "drill-copy", + "offline-verify", + "cleanup-offline", + "cutover-backup", + "cutover-copy", + "release", + "verify", + "rollback", + "rollback-verify" + ], + "authorization": "fresh externally authenticated root fixed-origin native readback before each phase; exact confirmed platform-root disposition and current packet SHA/source commit; receipt bookkeeping is not an autonomous signed grant", + "execute_by": "2026-10-12T23:59:59Z", + "raw_output_withheld": true, + "native_data_or_workload_action_executed": false, + "deadline_semantics": "All phases including verification/recovery must begin before execute_by. No extension or automatic emergency grant; beyond deadline stop and obtain a fresh founder decision. Complete the bounded drill and rollout early enough to allow recovery within the window.", + "source_memo_version": 1, + "native_review_memo_version": 1, + "published_artifact_verified": true +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3 new file mode 100644 index 0000000..b88546d --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3 @@ -0,0 +1,11 @@ +# Requested decision + +Approve the exact new T05 zlib-only image release and protected same-schema compatibility drill, after final independent Product and Platform acknowledgments. This packet is prepared and unapproved; its final committed source and rollback dry-run are still pending. The prior T04 approval is excluded. + +The admitted owner CI published immutable image f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23 from source9b4bb25d325698ae543e7e8a8a3c3592db1f58fc. Its actual full scan reports zero findings across44packages. The same scan DB finds oneMEDIUM on currentimage763c. Signed official Alpine zlib1.3.2-r1 is the sole package change; actual published filesystem proof shows onlylibz andAPKinstalleddatabase changes, zero313directorymetadata changes, retainedninebaselayers and unchanged36applicationfiles/purposepolicy/config/credentials/audience/resources. Registry-to-daemon config serialization differs under closed verified normalization, without runtime change. + +The exact ordered protected drill and release are specified in native-backup-restore-protocol.md and hash-bound execution bundle. New backup paths, isolated clone and journal are distinct from old evidence. Real private data will enter only approved private custody and the isolated no-network clone; content never enters public evidence. Failed/uncertain phase states remain durable and cannot be retried. Prior T04 failed copy/verify are preserved. + +After schema5/integrity/exactclonecounts pass and clone cleanup succeeds, fresh cutover backup/copy precedes the exact manual image-only Deployment sync. Current baseline is healthygeneration25/image763c/Applicationc96. ImmutableCM6c/PVC/Podconfiguration/PDP origins remain sealed. FreshnodeCPU3460of4000m supports unchangedRecreate, with another check before effect. Brief availability interruption expected. + +Rollback restores Deploymentimage763c andApplicationc96 while retaining latestschema5database; no old snapshot restoration. Separate installed/native health/custody/PDP-gated readback and actual native image rescan precede T05 closure. Allphase starts expireOct12 23:59:59Z; release reserves30minutesforverificationandrecovery. Afterexpiry a newfounderdecision is required. EUR0newrecurringinfrastructure, boundedprivate storage andunpricedattendedtime. No newdoctrine/autopilot/credentialgrant is authorized. diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f new file mode 100644 index 0000000..2c3dc1a --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f @@ -0,0 +1,372 @@ +[ + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-review.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-review.json", + "sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/mapping.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/mapping.json", + "sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/original-manifest.json", + "sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_initial_dispatch.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_initial_dispatch.py", + "sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/published-evidence-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/published-evidence-manifest.json", + "sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9" + }, + { + "path": "intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290" + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07 new file mode 100644 index 0000000..0b5744a --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07 @@ -0,0 +1,205 @@ +[ + { + "repo": "informed-decision", + "path": "deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/deploy/lifecycle/admission.candidate.json", + "original_sha256": "92382a56b349c3b895e5806e975082527bb99d1a001140e69d857e5b0391fa55", + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/deploy/lifecycle/service.candidate.json", + "original_sha256": "38b78b9cbee5ade7750a58d5156ca4c5773352e947acb304ee714b59e749ceb4", + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a new file mode 100644 index 0000000..0e1ccaf --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a @@ -0,0 +1,191 @@ +{ + "kind": "informed-decision.memo-intake", + "version": 1, + "idempotency_key": "infd-20261011-zlib-remediation-r1-v1", + "memo_class": "decision-record", + "review_group": "net-kingdom-admins", + "drafted_by": "custodian-codex", + "approval_intent": { + "action": "administer", + "principal": "informed-decision", + "purpose": "Approve only exact zlib85091 image-only T05 release and fresh protected native backup/restore gates; no prior T04 approval reuse or unrelated grant.", + "target": { + "id": "INFD-WP-0009-T05/zlib85091-r1", + "type": "runtime-change", + "system": "railiance01" + } + }, + "memo": { + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact zlib85091 fixed image-only release, new protected backup/restore compatibility drill and database-preserving rollback?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Published owner CI image f558 has zero full-scan findings across44packages; only zlib1.3.2-r0 to r1 changes. Fresh schema5 private backup/isolated clone drill and cutover snapshot precede one Deployment manual prune=false Recreate sync. Separate founder go required; old T04 acceptance/history unchanged. Rollback image763c/Applicationc96 retains latestDB. Release reserves30minutes before Oct12 deadline.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Founder review" + }, + "target": { + "kind": "environment", + "id": "realm:kubernetes/railiance01/informed-decision", + "label": "Informed Decision zlib85091 image-only remediation on railiance01", + "environment": "production" + }, + "terms": "Approve only INFD-WP-0009-T05/zlib85091-r1 trialinfd-zlib-20261011-r1 and exact attached digests: new private drillbackup/copy, isolatedschema5pre/admin/postintegrityandcounts, exactcreatedclonecleanup, freshcutoverbackup/copy, manualfinalsourceDeployment-onlyimagef558/prune=false. ImmutableCM/PVC/config/credentials/audience/resources sealed. Freshrootnativeauthenticated confirmed founderACCEPTsource1 beforeeveryphase; receiptsarebookkeeping/noautonomousgrant. Rollbackonlyimage763c/Applicationc96 preserveslatestDB, separateverification. AllphasesbeginbeforeOct12 23:59:59Z; releasereserves30minutes; newdecisionbeyond. ExistingT04UNCERTAINEvidenceunaltered, nooldhelperamendment/phase retry, noresidualpromotion ordoctrinechange." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "item_id": "rollback-preflight-json", + "label": "rollback-preflight.json", + "hash": "sha256:0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "item_id": "published-verification-json", + "label": "published-verification.json", + "hash": "sha256:dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "item_id": "artifact-comparison-json", + "label": "artifact-comparison.json", + "hash": "sha256:a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "item_id": "installed-zlib-proof-json", + "label": "installed-zlib-proof.json", + "hash": "sha256:6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "item_id": "sealed-live-deployment-json", + "label": "sealed-live-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "sealed-native-dependencies-json", + "label": "sealed-native-dependencies.json", + "hash": "sha256:042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "item_id": "candidate-deployment-json", + "label": "candidate-deployment.json", + "hash": "sha256:487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "item_id": "rollback-deployment-json", + "label": "rollback-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "execution-bundle-json", + "label": "execution-bundle.json", + "hash": "sha256:09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + } + ], + "highlights": [ + { + "id": "protected-drill-and-recreate", + "item_id": "decision-packet-md", + "note": "This new T05 decision authorizes protected real-data backup/copy and no-network same-schema restore drill plus brief Recreate image release. Scan0 is actual published44package result, not installed acceptance. Rollback preserves latestDB; priorfailedT04evidence retained. No oldapprovalreuse. Allphase starts expireOct12; release reserves30minutesforrecovery; noautomaticextension.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Requested decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null + }, + "packet": [ + { + "item_id": "decision-packet-md", + "media_type": "text/markdown", + "content": "# Requested decision\n\nApprove the exact new T05 zlib-only image release and protected same-schema compatibility drill, after final independent Product and Platform acknowledgments. This packet is prepared and unapproved; fresh rollback server dry-run passed with exactly the baseline image and empty diff. Root retains exact final owner source revision and independent acknowledgments before asking for native founder disposition. The prior T04 approval is excluded.\n\nThe admitted owner CI published immutable image f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23 from source9b4bb25d325698ae543e7e8a8a3c3592db1f58fc. Its actual full scan reports zero findings across44packages. The same scan DB finds oneMEDIUM on currentimage763c. Signed official Alpine zlib1.3.2-r1 is the sole package change; actual published filesystem proof shows onlylibz andAPKinstalleddatabase changes, zero313directorymetadata changes, retainedninebaselayers and unchanged36applicationfiles/purposepolicy/config/credentials/audience/resources. Registry-to-daemon config serialization differs under closed verified normalization, without runtime change.\n\nThe exact ordered protected drill and release are specified in native-backup-restore-protocol.md and hash-bound execution bundle. New backup paths, isolated clone and journal are distinct from old evidence. Real private data will enter only approved private custody and the isolated no-network clone; content never enters public evidence. Failed/uncertain phase states remain durable and cannot be retried. Prior T04 failed copy/verify are preserved.\n\nAfter schema5/integrity/exactclonecounts pass and clone cleanup succeeds, fresh cutover backup/copy precedes the exact manual image-only Deployment sync. Current baseline is healthygeneration25/image763c/Applicationc96. ImmutableCM6c/PVC/Podconfiguration/PDP origins remain sealed. FreshnodeCPU3460of4000m supports unchangedRecreate, with another check before effect. Brief availability interruption expected.\n\nRollback restores Deploymentimage763c andApplicationc96 while retaining latestschema5database; no old snapshot restoration. Separate installed/native health/custody/PDP-gated readback and actual native image rescan precede T05 closure. Allphase starts expireOct12 23:59:59Z; release reserves30minutesforverificationandrecovery. Afterexpiry a newfounderdecision is required. EUR0newrecurringinfrastructure, boundedprivate storage andunpricedattendedtime. No newdoctrine/autopilot/credentialgrant is authorized.\n" + }, + { + "item_id": "proposal-json", + "media_type": "application/json", + "content": "{\n \"kind\": \"informed-decision.supervised-release-proposal\",\n \"version\": 1,\n \"proposal_id\": \"INFD-WP-0009-T05/zlib85091-r1\",\n \"trial_id\": \"infd-zlib-20261011-r1\",\n \"state\": \"prepared-unapproved\",\n \"memo_id\": \"infd-20261011-zlib-remediation-r1\",\n \"memo_version\": 1,\n \"task\": \"INFD-WP-0009-T05\",\n \"candidate_image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"artifact_source_revision\": \"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc\",\n \"prior_image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"prior_application_revision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\",\n \"source_revision\": null,\n \"published_artifact_verified\": true,\n \"native_actions_executed\": false,\n \"approval_id\": null,\n \"authority_mode\": \"ADMINISTER\",\n \"target\": \"realm:kubernetes/railiance01/informed-decision\",\n \"cost_estimate_eur\": 0,\n \"risk\": \"Private same-schema backup copies and brief Recreate availability gap. Failed or ambiguous phases retained; no replay. Rollback changes Deployment image/source only, retains latest database.\",\n \"execute_by\": \"2026-10-12T23:59:59Z\",\n \"release_must_start_by\": \"2026-10-12T23:29:59Z\",\n \"max_snapshot_bytes\": 536870912,\n \"maximum_new_snapshot_payload_bytes_each_site\": 1073741824,\n \"local_extra_disposable_clone_max_bytes\": 536870912,\n \"private_metadata_and_sqlite_sidecars_additional_headroom_bytes\": 16777216,\n \"unbound_inputs\": [\n \"exact committed owner rendering revision retained in root supervised receipt\",\n \"Product and Platform final acknowledgments\",\n \"confirmed founder exact new disposition\"\n ],\n \"published_verification_sha256\": \"dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e\",\n \"native_readonly_preflight_sha256\": \"56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9\",\n \"executor_plan_sha256\": \"750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c\",\n \"execution_bundle_sha256\": \"09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9\",\n \"rollback_preflight_sha256\": \"0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5\",\n \"post_ready_native_provider_probe\": \"canonical lifecycle.outcomes SOURCE1 through existing admitted StateHub dispatcher; credentials stay inside Pod; bounded metadata correlated to verified candidate image/Pod/source\"\n}\n" + }, + { + "item_id": "native-backup-restore-protocol-md", + "media_type": "text/markdown", + "content": "# T05 zlib85091 release \u2014 preliminary, unapproved\n\nThis is a distinct proposal/trial for existing INFD-WP-0009-T05. The actual T04 source2 acceptance does not authorize it. Previous R1 copy and R2 verify UNCERTAIN journal states remain untouched. INFD-IN-0010 remains an unpromoted general verifier residual; this new task-specific verifier is a prerequisite of active T05, not an amendment of the old approved helper.\n\nExact intended image f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23 was built by admitted owner CI11534/run4 from 9b4bb25d325698ae543e7e8a8a3c3592db1f58fc. Publication is not installed acceptance. Final packet requires independent published-image scan/runtime/filesystem/source proof and fresh read-only native projection/one-object dry-run evidence. Until all final inputs and independent owner acknowledgments are frozen, execution-plan state remains preliminary and the actuator refuses before any authority, journal or native action.\n\nAfter a NEW exact confirmed founder acceptance, root freshly authenticates fixed-origin native source-version1 outcomes before each phase. Receipt files are supervised bookkeeping, not signed grants or autonomy. Wrong task, source, memo/version, stale/pending/agent disposition, old T04 acceptance or changed inputs refuse. Root retains exact approved source revision/digests and action results in supervision. Approval does not promote any agent.\n\nFixed phase order: drill-backup \u2192 drill-copy \u2192 offline-verify \u2192 cleanup-offline \u2192 cutover-backup \u2192 cutover-copy \u2192 release \u2192 verify. New private native /data/private/zlib85091-r1, root .private-backups/20261011-infd-zlib-r1 and local volume infd-zlib-r1-restore-20261011 are distinct from all T04 custody. New private journal intent is fsynced RUNNING before dispatch; no attempted phase replay. Fixed output schema contains only counts, hashes, object identity and boolean results; raw errors and private content are withheld. Existing native snapshots/database/sidecars are never removed or restored over current data.\n\nFresh backup inspection uses copied explicit-close SQLite helpers: live and offline clone readers are mode=ro/query_only and WAL-aware, before any Store/admin open. Immutable reader is used only for freshly closed hash-bound private snapshot with absent/zero WAL frames and stable identity/metadata/digest before/after read/copy. Main and sidecars remain retained. Schema must equal5, integrity ok, and exact snapshot/isolated clone counts match before/admin/after. The detached local clone has network none, readonly root, no service/runtime config/credential mounts; only narrowly scoped UID0 CAP_CHOWN initializer precedes UID10001 reads/admin. Original private copy is hash-stable. Cleanup removes only the disposable volume whose nonce/labels/creation metadata match this trial, before cutover.\n\nEach snapshot is bounded512MiB. At most two new snapshots occupy each native/offcluster custody (1GiB payload each); the disposable offcluster clone adds512MiB while present, plus16MiB sidecar/metadata reserve. New native drill phase checks free space for both; local custody checks two snapshot bounds plus reserve. Existing T04 retention consumes additional pre-existing space. EUR0 recurring infrastructure estimate; human/compute time unpriced.\n\nCutover takes a fresh native backup and exact offcluster copy. Release then requires latest schema5 readonly proof, sealed Pod/Deployment/config/PVC custody and same baseline image763c/current Application sourcec96, a healthy single target92.205.62.239 node and fresh requested CPU \u2264 allocatable capacity. Recreate and resources remain unchanged. Server dry-run/client diff must show only the image. Application UID/resourceVersion/source CAS dispatches manual exact final revision, initiatedBy custodian-codex, explicit prune=false and only apps/Deployment informed-decision in its namespace. No whole-Application sync, namespace/config/credential/resource change or pruning.\n\nVerification reads imageID/readiness/owner chain/exact configured Pod fields, schema5/integrity/metadata counts, installed policy hash and synthetic purpose refusals, health200, installed fixed zlib and exact image proof. After exact candidate Ready and verified rollout, root executes attached post-ready-native-outcomes-command.py inside the existing admitted StateHub Pod. It calls canonical lifecycle.outcomes for infd-20261011-zlib-remediation-r1 SOURCEversion1 at dispatcher fixed ORIGIN with NoRedirect/proxy disabled; existing internal token_file stays inside that Pod and no token/body/private content is exported. Root retains bounded HTTP-success metadata/observationtime and correlates verified candidate PodUID/image/source, then rechecks those identities. This actual provider/PDP-gated preservation proof is separate from installed synthetic2allow8refuse; both are required before task closure. It does not assert provider advisory emissions or new doctrine. Argo3.5.3 omits false prune in operation status: missing or exactfalse is accepted only together with this journal's COMPLETE explicitfalse request, exact source/resources/initiation, operation start after our durable attempt, bounded finish and one Synced Deployment result. True/null/string/prior/foreign/extra-resource results refuse.\n\nRollback \u2192 rollback-verify is separate and permitted only after a recorded release attempt. It switches only Application source back to c96 and Deployment image763c; it never restores an old snapshot over the latest database. Recovery dispatch works even if candidate Pod is absent/unready and never depends on candidate DB inspection. Recovery verification separately requires Ready1/old image/current schema5/data-custody and exact recorded scoped completion. All phases must begin before2026-10-12T23:59:59Z; release must begin at least30minutes earlier. Beyond expiry stop and obtain a new founder decision; no automatic extension or emergency grant. A failed/uncertain attempt requires informed recovery rather than retry.\n\nT05 remains progress until actual installed acceptance and native rescan prove the finding absent. No Risk Engine grade is assigned. Only then may owner close T05/risk and consider finishing WP9, with existing residuals live first.\n\nActual release and installed verification also require fixed private root scan receipt and retained fullreport at /tmp/security-infd-zlib-fresh-scan-{receipt,full}.json, supervised metadata binding to exact immutablef558/artifactsource9b4/scannerdigest62b1. Before journal start, fullreporthash must match, no suppression/allseverity flags true, exit0, nonempty valid fullresults contain zero findings, scan completed within4hours and now precedes DB NextUpdate. The published DB expires2026-10-11T18:59:50Z; it is not valid until release deadline. Root refreshes DB and rescans the same immutable image as routine read-only verification when needed, retaining all raw publicscan artifacts. Any new finding refuses release/closure and is retained for informed reassessment/new decision as needed, never filtered or ignored. Existing risk stays open until actual installed proof/native rescan.\n" + }, + { + "item_id": "native-preflight-json", + "media_type": "application/json", + "content": "{\n \"all_checks_pass\": true,\n \"observed_at\": \"2026-10-11T09:40:15.540874+00:00\",\n \"native_changed\": false,\n \"protected_database_read\": false,\n \"secret_read\": false,\n \"deployment_generation\": 25,\n \"ready_replicas\": 1,\n \"sealed_live_deployment\": {\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n },\n \"candidate_deployment\": {\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n },\n \"sealed_dependencies\": {\n \"configmap\": {\n \"apiVersion\": \"v1\",\n \"immutable\": true,\n \"kind\": \"ConfigMap\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:/ConfigMap:informed-decision/informed-decision-runtime-6c221878d051\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision-runtime-6c221878d051\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"90113d2d-54d9-4e82-b1d3-90b49ebed2b5\"\n },\n \"canonical_data_sha256\": \"8ec462d12347548f506eeebf1e3c7cc47648019c8a783804d09bcc79b0f22af6\"\n },\n \"pvc\": {\n \"apiVersion\": \"v1\",\n \"kind\": \"PersistentVolumeClaim\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:/PersistentVolumeClaim:informed-decision/informed-decision-data\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\",\n \"pv.kubernetes.io/bind-completed\": \"yes\",\n \"pv.kubernetes.io/bound-by-controller\": \"yes\",\n \"volume.beta.kubernetes.io/storage-provisioner\": \"rancher.io/local-path\",\n \"volume.kubernetes.io/selected-node\": \"239.62.205.92.host.secureserver.net\",\n \"volume.kubernetes.io/storage-provisioner\": \"rancher.io/local-path\"\n },\n \"finalizers\": [\n \"kubernetes.io/pvc-protection\"\n ],\n \"name\": \"informed-decision-data\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"d80b25b1-141a-441b-b205-98fa2fd98b7c\"\n },\n \"spec\": {\n \"accessModes\": [\n \"ReadWriteOnce\"\n ],\n \"resources\": {\n \"requests\": {\n \"storage\": \"1Gi\"\n }\n },\n \"storageClassName\": \"local-path\",\n \"volumeMode\": \"Filesystem\",\n \"volumeName\": \"pvc-d80b25b1-141a-441b-b205-98fa2fd98b7c\"\n }\n },\n \"pvc_phase\": \"Bound\"\n },\n \"argo\": {\n \"uid\": \"499868f2-eabc-4df4-ae31-b89ce58d750d\",\n \"source\": {\n \"path\": \"deploy/lifecycle\",\n \"repoURL\": \"https://forgejo.coulomb.social/coulomb/informed-decision.git\",\n \"targetRevision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\"\n },\n \"destination\": {\n \"namespace\": \"informed-decision\",\n \"server\": \"https://kubernetes.default.svc\"\n },\n \"automated\": false,\n \"health\": {\n \"lastTransitionTime\": \"2026-10-11T07:00:42Z\",\n \"status\": \"Healthy\"\n },\n \"sync\": {\n \"comparedTo\": {\n \"destination\": {\n \"namespace\": \"informed-decision\",\n \"server\": \"https://kubernetes.default.svc\"\n },\n \"source\": {\n \"path\": \"deploy/lifecycle\",\n \"repoURL\": \"https://forgejo.coulomb.social/coulomb/informed-decision.git\",\n \"targetRevision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\"\n }\n },\n \"revision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\",\n \"status\": \"OutOfSync\"\n }\n },\n \"server_dry_run_passed\": true,\n \"admission_only_image_delta\": true,\n \"client_diff_exit\": 1,\n \"client_diff_sha256\": \"ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b\",\n \"allocatable_cpu_m\": 4000,\n \"requested_cpu_m\": 3460,\n \"strategy\": \"Recreate\"\n}\n" + }, + { + "item_id": "rollback-preflight-json", + "media_type": "application/json", + "content": "{\n \"all_checks_pass\": true,\n \"observed_at\": \"2026-10-11T09:43:42.851086+00:00\",\n \"native_changed\": false,\n \"protected_database_read\": false,\n \"secret_read\": false,\n \"deployment_generation\": 25,\n \"ready_replicas\": 1,\n \"sealed_live_deployment\": {\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n },\n \"candidate_deployment\": {\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n },\n \"sealed_dependencies\": {\n \"configmap\": {\n \"apiVersion\": \"v1\",\n \"immutable\": true,\n \"kind\": \"ConfigMap\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:/ConfigMap:informed-decision/informed-decision-runtime-6c221878d051\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision-runtime-6c221878d051\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"90113d2d-54d9-4e82-b1d3-90b49ebed2b5\"\n },\n \"canonical_data_sha256\": \"8ec462d12347548f506eeebf1e3c7cc47648019c8a783804d09bcc79b0f22af6\"\n },\n \"pvc\": {\n \"apiVersion\": \"v1\",\n \"kind\": \"PersistentVolumeClaim\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:/PersistentVolumeClaim:informed-decision/informed-decision-data\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\",\n \"pv.kubernetes.io/bind-completed\": \"yes\",\n \"pv.kubernetes.io/bound-by-controller\": \"yes\",\n \"volume.beta.kubernetes.io/storage-provisioner\": \"rancher.io/local-path\",\n \"volume.kubernetes.io/selected-node\": \"239.62.205.92.host.secureserver.net\",\n \"volume.kubernetes.io/storage-provisioner\": \"rancher.io/local-path\"\n },\n \"finalizers\": [\n \"kubernetes.io/pvc-protection\"\n ],\n \"name\": \"informed-decision-data\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"d80b25b1-141a-441b-b205-98fa2fd98b7c\"\n },\n \"spec\": {\n \"accessModes\": [\n \"ReadWriteOnce\"\n ],\n \"resources\": {\n \"requests\": {\n \"storage\": \"1Gi\"\n }\n },\n \"storageClassName\": \"local-path\",\n \"volumeMode\": \"Filesystem\",\n \"volumeName\": \"pvc-d80b25b1-141a-441b-b205-98fa2fd98b7c\"\n }\n },\n \"pvc_phase\": \"Bound\"\n },\n \"argo\": {\n \"uid\": \"499868f2-eabc-4df4-ae31-b89ce58d750d\",\n \"source\": {\n \"path\": \"deploy/lifecycle\",\n \"repoURL\": \"https://forgejo.coulomb.social/coulomb/informed-decision.git\",\n \"targetRevision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\"\n },\n \"destination\": {\n \"namespace\": \"informed-decision\",\n \"server\": \"https://kubernetes.default.svc\"\n },\n \"automated\": false,\n \"health\": {\n \"lastTransitionTime\": \"2026-10-11T07:00:42Z\",\n \"status\": \"Healthy\"\n },\n \"sync\": {\n \"comparedTo\": {\n \"destination\": {\n \"namespace\": \"informed-decision\",\n \"server\": \"https://kubernetes.default.svc\"\n },\n \"source\": {\n \"path\": \"deploy/lifecycle\",\n \"repoURL\": \"https://forgejo.coulomb.social/coulomb/informed-decision.git\",\n \"targetRevision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\"\n }\n },\n \"revision\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\",\n \"status\": \"OutOfSync\"\n }\n },\n \"server_dry_run_passed\": true,\n \"admission_only_image_delta\": true,\n \"client_diff_exit\": 0,\n \"client_diff_sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n \"allocatable_cpu_m\": 4000,\n \"requested_cpu_m\": 3460,\n \"strategy\": \"Recreate\"\n}\n" + }, + { + "item_id": "published-verification-json", + "media_type": "application/json", + "content": "{\n \"proposal_id\": \"INFD-WP-0009-T05/zlib-85091-r1\",\n \"task_id\": \"INFD-WP-0009-T05\",\n \"risk_record\": \"INFD-RISK-20261011-ZLIB-85091\",\n \"state\": \"actual-owner-CI-published-independent-verification-passed-native-unapproved\",\n \"verified_utc\": \"2026-10-11T09:40:24.469646+00:00\",\n \"source_revision\": \"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc\",\n \"ci_task\": 11534,\n \"ci_run\": 4,\n \"ci_status\": \"success\",\n \"reviewed_source_manifest_sha256\": \"724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec\",\n \"all74_source_hashes_match_actual_commit\": true,\n \"published_image_digest\": \"sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"base_image_digest\": \"sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"registry_config_digest\": \"sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b\",\n \"executed_local_daemon_image_id\": \"sha256:f2e07e3dd839b55afd5d517243a765a26965325e4e6750f508771ad556bd6d01\",\n \"serialization_caveat\": \"Daemon load reserializes config; all diffIDs/platform/effective config+labels independently equal to registry; neither config nor daemon ID substitutes for registry image digest\",\n \"actual_registry_descriptors_and_layers_verified\": true,\n \"base9layers_unchanged\": true,\n \"overlay_layers\": 2,\n \"fullscan_baseline\": {\n \"MEDIUM\": 1,\n \"id\": \"CVE-2026-85091\"\n },\n \"fullscan_candidate_allseverity_findings\": 0,\n \"fullscan_no_suppressions\": true,\n \"same_fresh_DB_both_images\": true,\n \"scanner_db_sha256\": \"03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917\",\n \"scanner_db_metadata\": {\n \"Version\": 2,\n \"NextUpdate\": \"2026-10-11T18:59:50.889010572Z\",\n \"UpdatedAt\": \"2026-10-10T18:59:50.889010923Z\",\n \"DownloadedAt\": \"2026-10-10T23:32:32.380033131Z\"\n },\n \"scanner_caveat\": \"Alpine3.24 absent EOL list warning; actual38OS+6Python detectors ran. Zero means this verified DB snapshot, not unknown-future assurance or estate risk grade.\",\n \"sbom_count\": 44,\n \"sbom_only_delta\": {\n \"zlib\": [\n \"1.3.2-r0\",\n \"1.3.2-r1\"\n ]\n },\n \"final_changed_files\": [\n \"lib/apk/db/installed\",\n \"usr/lib/libz.so.1.3.2\"\n ],\n \"directory_count\": 313,\n \"directory_metadata_delta\": {},\n \"app_files_identical\": 36,\n \"installed_UID\": 10001,\n \"installed_GID\": 10001,\n \"policy_sha256\": \"9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62\",\n \"policy_mode\": \"0o644\",\n \"policy_UID\": 0,\n \"candidate_image_executed\": true,\n \"public_registry_layer_readback\": true,\n \"native_provider_test\": false,\n \"installed_purpose_variants\": 10,\n \"purpose_forms_allow\": 2,\n \"purpose_forms_refuse\": 8,\n \"runtime_readonly_networknone\": true,\n \"native_workload_or_database_or_snapshot_or_credentials_accessed\": false,\n \"native_rollout\": false,\n \"founder_release_approval\": false,\n \"risk_followthrough\": \"T05 remains active; manual review due2026-10-18, no controller or estate risk grade. Actual native installation/fresh scoped founder decision still required before closure.\",\n \"verification_refinement\": \"First run used registry config as daemon handle and refused before candidate execution125. Corrected by independently proving loaded daemon ID semantics+diffIDs exact, then executed. Not actual image failure.\",\n \"evidence_sha256\": {\n \"artifact-comparison.json\": \"a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4\",\n \"base-image-config.json\": \"4ad7249c75fd9fc039ceb186772419e1cba5fd9759c404556459c80a2d285d10\",\n \"base-image-manifest.json\": \"978c575d3c7bf0de39dbe4e9567c39cd36f70b7e55bc17357bdb03fb3b96b0fb\",\n \"base-runtime.json\": \"20aabb9f4846ab4fa6e28e0763d153188da151ee32293366a51b0fdf872a4d24\",\n \"base-sbom.cdx.json\": \"dd7d64c9571391acd4d1f86c6026a1b094abab4ee56e5a9f799ec2fd3c7d915a\",\n \"base-sbom.cdx.json.log\": \"8ab4473a5f74b36e82a4095e9c8d6e66d80aec64bd1cebd6c9f6734531869fca\",\n \"base-trivy-full.json\": \"3e91a3001adb008cec37d9ae3c08342f5d43c8ba0111eee75c63a6a7918808a9\",\n \"base-trivy-full.json.log\": \"96a48dc39f7d674b4954d5fa98a76645528ec0fe705782fe114e3b4b9d776862\",\n \"candidate-runtime.json\": \"d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124\",\n \"ci-publication-observation.json\": \"ffe6f2508bc9bebbdc85ac63eae5765562efbb8e920cc85b8da30a12ee1e4b17\",\n \"image-config.json\": \"253ab359013aeb3457d2abe0852bacd33697f973dd32c1b5738800e5dc633f43\",\n \"image-manifest.json\": \"9ca2abec6a26d9a9f802dfe75efa8bffdc28485e6bcaf525cc9b075df3700194\",\n \"installed-purpose.json\": \"312312c6f0bd2751401b3bc5bcd30ee6af01ed7cb380f85b863d03b0c7e9d1ad\",\n \"loaded-daemon-image-proof.json\": \"2e5c043a101d75e4c569adb6bc2f09020679b28ed2ad836c954f7d27101ce719\",\n \"publication-digest.json\": \"ca2a1dec38db8c5fbbc00ef4f27aa865edbbd4a7ca9dc21b2ba023664c507f38\",\n \"read_public_artifact.py\": \"eaa31da1ebb2095ea5e1bc7c570311cc4747f0d7f718034dad934351d1920daf\",\n \"registry-proof.json\": \"3ef52d9e4800fc9bd238072241dc15f13a0260ee3df1e82e6f63e72902749d92\",\n \"run_published_runtime.py\": \"d9bd33fecd2a98c2381b4ba2dce12b5c3d9a69faa5e350291924fc885f5e775f\",\n \"run_published_scan.py\": \"2583ab96350412fb3f20b5b05ded0949eb3ee8e5c0e8923a9c2c42d419d36639\",\n \"runtime-comparison.json\": \"993b80b9285e227a0bdfde4927cd2f053bcc4a58dd9bd1b633ac7a4637d6713c\",\n \"runtime-receipt.json\": \"6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889\",\n \"sbom.cdx.json\": \"4202263059780eae0448328044c1cf68b59758f329ae6bc981d916610527eae3\",\n \"sbom.cdx.json.log\": \"51873b37a0846ee1a618ea7591d79809dc0f8624f77a03fae7af953bcbd7282f\",\n \"scan-receipt.json\": \"aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a\",\n \"source-commit-proof.json\": \"b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b\",\n \"trivy-full.json\": \"2ff68e765b9c65292611d5a969202a7654637168edefcedac5d2c7634009edae\",\n \"trivy-full.json.log\": \"b3419af860d264449f61986f562491edaead27dfd3638ceabe94b4fe177f4bf1\"\n }\n}\n" + }, + { + "item_id": "artifact-comparison-json", + "media_type": "application/json", + "content": "{\n \"base_image_config_id\": \"sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779\",\n \"candidate_local_image_config_id\": \"sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b\",\n \"candidate_registry_digest\": null,\n \"base_layers_preserved\": 9,\n \"new_layers\": 2,\n \"effective_runtime_config_identical\": true,\n \"raw_config_bytes_identical\": false,\n \"serialization_note\": \"Legacy base explicitly serialized empty/false/null defaults; candidate Docker-save config omits equivalent known defaults. Exact closed default normalization only; runtime fields unchanged.\",\n \"labels_before\": {\n \"org.opencontainers.image.base.digest\": \"sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173\",\n \"org.opencontainers.image.revision\": \"3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168\",\n \"social.coulomb.release.scope\": \"INFD-WP-0009-T04/purpose-overlay-v1\",\n \"social.coulomb.source.policy.sha256\": \"9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62\"\n },\n \"labels_after\": {\n \"org.opencontainers.image.base.digest\": \"sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"org.opencontainers.image.revision\": \"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc\",\n \"social.coulomb.release.scope\": \"INFD-WP-0009-T05/zlib-85091-r1\",\n \"social.coulomb.source.context.sha256\": \"c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d\",\n \"social.coulomb.source.policy.sha256\": \"9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62\"\n },\n \"final_changed_files\": {\n \"lib/apk/db/installed\": {\n \"before\": [\n \"file\",\n 420,\n 0,\n 0,\n \"6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70\"\n ],\n \"after\": [\n \"file\",\n 420,\n 0,\n 0,\n \"f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001\"\n ]\n },\n \"usr/lib/libz.so.1.3.2\": {\n \"before\": [\n \"file\",\n 493,\n 0,\n 0,\n \"a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57\"\n ],\n \"after\": [\n \"file\",\n 493,\n 0,\n 0,\n \"ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2\"\n ]\n }\n },\n \"directory_metadata_compared\": true,\n \"directory_count_base\": 313,\n \"directory_count_candidate\": 313,\n \"directory_metadata_delta\": {},\n \"sbom_package_count_base\": 44,\n \"sbom_package_count_candidate\": 44,\n \"sbom_only_delta\": {\n \"zlib\": [\n \"1.3.2-r0\",\n \"1.3.2-r1\"\n ]\n },\n \"full_scan_baseline_findings\": 1,\n \"full_scan_candidate_allseverity_findings\": 0,\n \"db_snapshot_same\": true,\n \"native_workload_changed\": false\n}\n" + }, + { + "item_id": "installed-zlib-proof-json", + "media_type": "application/json", + "content": "{\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"zlib_package\": \"1.3.2-r1\",\n \"files\": {\n \"lib/apk/db/installed\": [\n \"file\",\n 420,\n 0,\n 0,\n \"f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001\"\n ],\n \"usr/lib/libz.so.1.3.2\": [\n \"file\",\n 493,\n 0,\n 0,\n \"ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2\"\n ]\n }\n}\n" + }, + { + "item_id": "sealed-live-deployment-json", + "media_type": "application/json", + "content": "{\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n}\n" + }, + { + "item_id": "sealed-native-dependencies-json", + "media_type": "application/json", + "content": "{\n \"configmap\": {\n \"apiVersion\": \"v1\",\n \"immutable\": true,\n \"kind\": \"ConfigMap\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:/ConfigMap:informed-decision/informed-decision-runtime-6c221878d051\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision-runtime-6c221878d051\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"90113d2d-54d9-4e82-b1d3-90b49ebed2b5\"\n },\n \"canonical_data_sha256\": \"8ec462d12347548f506eeebf1e3c7cc47648019c8a783804d09bcc79b0f22af6\"\n },\n \"pvc\": {\n \"apiVersion\": \"v1\",\n \"kind\": \"PersistentVolumeClaim\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:/PersistentVolumeClaim:informed-decision/informed-decision-data\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\",\n \"pv.kubernetes.io/bind-completed\": \"yes\",\n \"pv.kubernetes.io/bound-by-controller\": \"yes\",\n \"volume.beta.kubernetes.io/storage-provisioner\": \"rancher.io/local-path\",\n \"volume.kubernetes.io/selected-node\": \"239.62.205.92.host.secureserver.net\",\n \"volume.kubernetes.io/storage-provisioner\": \"rancher.io/local-path\"\n },\n \"finalizers\": [\n \"kubernetes.io/pvc-protection\"\n ],\n \"name\": \"informed-decision-data\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"d80b25b1-141a-441b-b205-98fa2fd98b7c\"\n },\n \"spec\": {\n \"accessModes\": [\n \"ReadWriteOnce\"\n ],\n \"resources\": {\n \"requests\": {\n \"storage\": \"1Gi\"\n }\n },\n \"storageClassName\": \"local-path\",\n \"volumeMode\": \"Filesystem\",\n \"volumeName\": \"pvc-d80b25b1-141a-441b-b205-98fa2fd98b7c\"\n }\n },\n \"pvc_phase\": \"Bound\"\n}\n" + }, + { + "item_id": "candidate-deployment-json", + "media_type": "application/json", + "content": "{\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n}\n" + }, + { + "item_id": "rollback-deployment-json", + "media_type": "application/json", + "content": "{\n \"apiVersion\": \"apps/v1\",\n \"kind\": \"Deployment\",\n \"metadata\": {\n \"annotations\": {\n \"argocd.argoproj.io/tracking-id\": \"informed-decision:apps/Deployment:informed-decision/informed-decision\",\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"name\": \"informed-decision\",\n \"namespace\": \"informed-decision\",\n \"uid\": \"a588e10a-90d2-4883-975e-6dd8b8feca92\"\n },\n \"spec\": {\n \"progressDeadlineSeconds\": 600,\n \"replicas\": 1,\n \"revisionHistoryLimit\": 10,\n \"selector\": {\n \"matchLabels\": {\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"strategy\": {\n \"type\": \"Recreate\"\n },\n \"template\": {\n \"metadata\": {\n \"annotations\": {\n \"informed-decision.coulomb.social/admission\": \"approved; INFD-WP-0007 cutover\"\n },\n \"labels\": {\n \"app.kubernetes.io/component\": \"review\",\n \"app.kubernetes.io/name\": \"informed-decision\"\n }\n },\n \"spec\": {\n \"automountServiceAccountToken\": false,\n \"containers\": [\n {\n \"env\": [\n {\n \"name\": \"INFD_KEYCAPE_ISSUER\",\n \"value\": \"https://kc.coulomb.social\"\n },\n {\n \"name\": \"INFD_CONTAINER_CONFIG\",\n \"value\": \"/configuration/runtime.json\"\n }\n ],\n \"image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"imagePullPolicy\": \"IfNotPresent\",\n \"livenessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"name\": \"informed-decision\",\n \"ports\": [\n {\n \"containerPort\": 8080,\n \"name\": \"http\",\n \"protocol\": \"TCP\"\n },\n {\n \"containerPort\": 8081,\n \"name\": \"workload\",\n \"protocol\": \"TCP\"\n }\n ],\n \"readinessProbe\": {\n \"failureThreshold\": 3,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"resources\": {\n \"limits\": {\n \"cpu\": \"500m\",\n \"memory\": \"256Mi\"\n },\n \"requests\": {\n \"cpu\": \"5m\",\n \"memory\": \"64Mi\"\n }\n },\n \"securityContext\": {\n \"allowPrivilegeEscalation\": false,\n \"capabilities\": {\n \"drop\": [\n \"ALL\"\n ]\n },\n \"readOnlyRootFilesystem\": true\n },\n \"startupProbe\": {\n \"failureThreshold\": 12,\n \"httpGet\": {\n \"path\": \"/healthz\",\n \"port\": \"http\",\n \"scheme\": \"HTTP\"\n },\n \"periodSeconds\": 10,\n \"successThreshold\": 1,\n \"timeoutSeconds\": 2\n },\n \"terminationMessagePath\": \"/dev/termination-log\",\n \"terminationMessagePolicy\": \"File\",\n \"volumeMounts\": [\n {\n \"mountPath\": \"/data\",\n \"name\": \"data\"\n },\n {\n \"mountPath\": \"/run/informed-decision\",\n \"name\": \"runtime\"\n },\n {\n \"mountPath\": \"/tmp\",\n \"name\": \"tmp\"\n },\n {\n \"mountPath\": \"/configuration\",\n \"name\": \"configuration\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/policy\",\n \"name\": \"caller\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/audit\",\n \"name\": \"audit\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/kubernetes\",\n \"name\": \"kubernetes-api\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/workload-registry\",\n \"name\": \"workload-registry\",\n \"readOnly\": true\n },\n {\n \"mountPath\": \"/var/run/secrets/informed-decision/requester\",\n \"name\": \"sitting-requester\",\n \"readOnly\": true\n }\n ]\n }\n ],\n \"dnsPolicy\": \"ClusterFirst\",\n \"restartPolicy\": \"Always\",\n \"schedulerName\": \"default-scheduler\",\n \"securityContext\": {\n \"fsGroup\": 10001,\n \"fsGroupChangePolicy\": \"OnRootMismatch\",\n \"runAsGroup\": 10001,\n \"runAsNonRoot\": true,\n \"runAsUser\": 10001,\n \"seccompProfile\": {\n \"type\": \"RuntimeDefault\"\n }\n },\n \"serviceAccount\": \"review\",\n \"serviceAccountName\": \"review\",\n \"terminationGracePeriodSeconds\": 45,\n \"volumes\": [\n {\n \"name\": \"data\",\n \"persistentVolumeClaim\": {\n \"claimName\": \"informed-decision-data\"\n }\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"runtime\"\n },\n {\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"16Mi\"\n },\n \"name\": \"tmp\"\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-runtime-6c221878d051\"\n },\n \"name\": \"configuration\"\n },\n {\n \"name\": \"caller\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"audience\": \"flex-auth\",\n \"expirationSeconds\": 3600,\n \"path\": \"token\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"audit\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"token\",\n \"path\": \"token\"\n }\n ],\n \"secretName\": \"informed-decision-audit\"\n }\n },\n {\n \"name\": \"kubernetes-api\",\n \"projected\": {\n \"defaultMode\": 288,\n \"sources\": [\n {\n \"serviceAccountToken\": {\n \"expirationSeconds\": 600,\n \"path\": \"token\"\n }\n },\n {\n \"configMap\": {\n \"items\": [\n {\n \"key\": \"ca.crt\",\n \"path\": \"ca.crt\"\n }\n ],\n \"name\": \"kube-root-ca.crt\"\n }\n }\n ]\n }\n },\n {\n \"configMap\": {\n \"defaultMode\": 292,\n \"name\": \"informed-decision-workload-registry\"\n },\n \"name\": \"workload-registry\"\n },\n {\n \"name\": \"sitting-requester\",\n \"secret\": {\n \"defaultMode\": 288,\n \"items\": [\n {\n \"key\": \"client-secret\",\n \"path\": \"client-secret\"\n }\n ],\n \"optional\": false,\n \"secretName\": \"informed-decision-sitting-requester\"\n }\n }\n ]\n }\n }\n }\n}\n" + }, + { + "item_id": "execution-bundle-json", + "media_type": "application/json", + "content": "{\n \"kind\": \"informed-decision.supervised-execution-source-bundle\",\n \"version\": 1,\n \"proposal_id\": \"INFD-WP-0009-T05/zlib85091-r1\",\n \"files\": {\n \"execution/actuator.py\": {\n \"sha256\": \"dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80\",\n \"content\": \"\\\"\\\"\\\"One fixed supervised phase; never run this during source preparation.\\\"\\\"\\\"\\nimport argparse\\nimport hashlib\\nimport json\\nimport os\\nfrom pathlib import Path\\nimport re\\nimport selectors\\nimport stat\\nimport subprocess\\nimport sys\\nimport time\\n\\nif sys.flags.optimize:\\n raise SystemExit('optimized interpreter refused')\\n\\nPHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline',\\n 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify')\\n\\n\\ndef require(value, reason):\\n if not value:\\n raise ValueError(reason)\\n\\n\\ndef sha(path):\\n digest = hashlib.sha256()\\n with Path(path).open('rb') as stream:\\n for block in iter(lambda: stream.read(1024**2), b''):\\n digest.update(block)\\n return digest.hexdigest()\\n\\n\\ndef private(path, directory=False):\\n info = Path(path).lstat()\\n require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode))\\n and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600)\\n and (directory or info.st_nlink == 1), 'private owned custody required')\\n\\nROOT = Path(__file__).resolve().parent\\nCASE = ROOT.parent\\nOWNER = Path('/home/worsch/informed-decision')\\nCUSTODIAN = Path('/home/worsch/the-custodian')\\nCUSTODY = CUSTODIAN / '.private-backups/20261011-infd-zlib-r1'\\nSOCKET = 'unix:///var/run/docker.sock'\\nIMAGE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23'\\nVOLUME = 'infd-zlib-r1-restore-20261011'\\nMAX_BYTES = 512 * 1024**2\\n\\n\\ndef run(argv, body=None, timeout=90):\\n return subprocess.run(argv, input=body, text=True, capture_output=True, timeout=timeout)\\n\\n\\ndef json_result(result):\\n try:\\n value = json.loads(result.stdout)\\n except (ValueError, TypeError):\\n raise ValueError('safe phase receipt unavailable; outcome uncertain') from None\\n require(result.returncode == 0 and isinstance(value, dict) and value.get('all_checks_pass') is True,\\n 'phase did not verify complete; raw output withheld; no retry')\\n permitted = {'phase', 'all_checks_pass', 'raw_output_withheld', 'native_approval_verified_by_root',\\n 'native_authenticated_grant', 'source_readonly_baseline', 'snapshot_readonly',\\n 'snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'native_parent_private',\\n 'native_uid', 'pod_name', 'pod_uid', 'live_readonly_schema_integrity_counts',\\n 'live_counts_may_include_concurrent_commits', 'operation_requested', 'source_revision',\\n 'resources', 'prune', 'rollout_verified', 'latest_live_database_retained',\\n 'client_diff_sha256', 'native_rollout_verified', 'current_schema5_database_retained',\\n 'private_copy_verified', 'installed_purpose_checks', 'policy_sha256',\\n 'policy_mode', 'policy_uid', 'installed_zlib_files', 'zlib_package', 'health_statuses', 'native_provider_probe', 'recovery_verification'}\\n require(set(value) <= permitted, 'unexpected output fields withheld')\\n from receipt_safety import counts\\n for name in ('source_readonly_baseline', 'snapshot_readonly', 'live_readonly_schema_integrity_counts'):\\n if name in value:\\n counts(value[name])\\n for name in ('snapshot_sha256', 'client_diff_sha256'):\\n if name in value:\\n require(re.fullmatch(r'[a-f0-9]{64}', value[name]) is not None, 'invalid output digest withheld')\\n if 'snapshot_bytes' in value:\\n require(type(value['snapshot_bytes']) is int and 0 < value['snapshot_bytes'] <= MAX_BYTES,\\n 'invalid output size withheld')\\n if 'snapshot_file' in value:\\n require(value['snapshot_file'] in ('drill.sqlite', 'cutover.sqlite'), 'invalid output file withheld')\\n return value\\n\\n\\ndef docker(argv, body=None, timeout=120):\\n return run(['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET] + argv,\\n body=body, timeout=timeout)\\n\\n\\ndef remote(phase, revision, approved):\\n # Fixed module imported only after main verifies every executor source hash.\\n from native_program import PROGRAM\\n payload = {'phase': phase, 'source_revision': revision, 'approval': approved,\\n 'sealed': json.loads((CASE / 'sealed-live-deployment.json').read_text()),\\n 'dependencies': json.loads((CASE / 'sealed-native-dependencies.json').read_text()),\\n 'candidate': json.loads((CASE / 'candidate-deployment.json').read_text()),\\n 'rollback': json.loads((CASE / 'rollback-deployment.json').read_text()),\\n 'receipt_safety': (ROOT / 'receipt_safety.py').read_text(),\\n 'purpose_checks': (CASE / 'check_installed.py').read_text(),\\n 'installed_zlib': json.loads((CASE / 'installed-zlib-proof.json').read_text()), 'readonly': (CASE / 'sqlite_readonly.py').read_text()}\\n script = PROGRAM.replace('__PAYLOAD__', repr(json.dumps(payload))).replace(\\n '__GUARD__', repr((CASE / 'change_guard.py').read_text()))\\n return json_result(run(['ssh', 'railiance01', 'python3 -'], script, timeout=200))\\n\\n\\ndef copy_snapshot(phase, revision, approved, journal):\\n metadata = remote(phase, revision, approved)\\n backup_phase = 'drill-backup' if phase == 'drill-copy' else 'cutover-backup'\\n prior = journal.data['phases'][backup_phase]['result']\\n for key in ('snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'snapshot_readonly'):\\n require(metadata[key] == prior[key], 'closed frozen snapshot changed')\\n name = metadata['snapshot_file']\\n require(name in ('drill.sqlite', 'cutover.sqlite') and 0 < metadata['snapshot_bytes'] <= MAX_BYTES,\\n 'fixed bounded snapshot required')\\n pod = metadata['pod_name']\\n require(re.fullmatch(r'[a-z0-9]([-a-z0-9]*[a-z0-9])?', pod) is not None, 'fixed owner pod name required')\\n local = CUSTODY / name\\n fd = os.open(local, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW, 0o600)\\n # Binary snapshot stdout goes only to a private file, never tool/chat/log output.\\n # Snapshot schema/count metadata was validated before opening this destination.\\n with os.fdopen(fd, 'wb') as destination:\\n command = ('kubectl exec -n informed-decision ' + pod +\\n ' -c informed-decision -- cat /data/private/zlib85091-r1/' + name)\\n transfer = subprocess.Popen(['ssh', 'railiance01', command], stdout=subprocess.PIPE,\\n stderr=subprocess.DEVNULL)\\n selector = selectors.DefaultSelector()\\n selector.register(transfer.stdout, selectors.EVENT_READ)\\n deadline = time.monotonic() + 150\\n received = 0\\n try:\\n while True:\\n remaining = deadline - time.monotonic()\\n require(remaining > 0 and selector.select(remaining), 'private transfer timed out')\\n block = os.read(transfer.stdout.fileno(), 1024**2)\\n if not block:\\n break\\n received += len(block)\\n require(received <= metadata['snapshot_bytes'] and received <= MAX_BYTES,\\n 'private copy exceeds frozen snapshot size')\\n destination.write(block)\\n transfer.wait(timeout=max(1, deadline - time.monotonic()))\\n finally:\\n selector.close()\\n transfer.stdout.close()\\n if transfer.poll() is None:\\n transfer.kill()\\n transfer.wait()\\n destination.flush()\\n os.fsync(destination.fileno())\\n private(local)\\n require(transfer.returncode == 0 and local.stat().st_size == metadata['snapshot_bytes']\\n and sha(local) == metadata['snapshot_sha256'], 'private copy incomplete/uncertain; retain, no retry')\\n # Re-read identity/hash after transfer. This is verification, not a write retry.\\n after = remote(phase, revision, approved)\\n require(after['pod_uid'] == metadata['pod_uid'] and after['snapshot_sha256'] == metadata['snapshot_sha256'],\\n 'source identity/snapshot changed during transfer')\\n return {**metadata, 'off_cluster_private_copy_verified': True, 'snapshot_contents_output': False}\\n\\n\\ndef offline_verify(journal):\\n from receipt_safety import counts\\n snapshot = CUSTODY / 'drill.sqlite'\\n private(snapshot)\\n previous = journal.data['phases']['drill-copy']['result']\\n require(sha(snapshot) == previous['snapshot_sha256'], 'protected snapshot bytes changed')\\n identity = docker(['info', '--format', '{{json .Name}}'])\\n require(identity.returncode == 0 and json.loads(identity.stdout) == 'bnt-lap001',\\n 'local offline Docker engine identity changed')\\n listed = docker(['volume', 'ls', '--format', '{{.Name}}'])\\n require(listed.returncode == 0 and VOLUME not in listed.stdout.splitlines(),\\n 'disposable volume absence not verified')\\n nonce = journal.data['phases']['offline-verify']['attempt_id']\\n labels = {'informed-decision.case': 'infd-zlib-20261011-r1',\\n 'informed-decision.use': 'offline-restore-only', 'informed-decision.attempt': nonce}\\n created = docker(['volume', 'create', '--driver', 'local', '--label', 'informed-decision.case=infd-zlib-20261011-r1',\\n '--label', 'informed-decision.attempt=' + nonce,\\n '--label', 'informed-decision.use=offline-restore-only', VOLUME])\\n require(created.returncode == 0 and created.stdout.strip() == VOLUME, 'volume creation uncertain; no retry')\\n inspected = docker(['volume', 'inspect', VOLUME])\\n require(inspected.returncode == 0, 'new volume identity unavailable')\\n volume = json.loads(inspected.stdout)\\n require(len(volume) == 1 and volume[0]['Name'] == VOLUME and volume[0].get('Labels') == labels\\n and volume[0].get('Driver') == 'local' and not volume[0].get('Options')\\n and volume[0].get('Scope') == 'local', 'new isolated volume identity changed')\\n identity = {key: volume[0][key] for key in ('Name', 'Labels', 'Driver', 'Scope', 'CreatedAt')}\\n journal.note('offline-verify', 'created_volume_identity', identity)\\n # One-time UID0/CAP_CHOWN initialization is isolated to the NEW named volume.\\n # No host/live PVC/config/token mount exists; this detail needs packet review.\\n initializer = \\\"\\\"\\\"import hashlib,os,stat,sys\\nif sys.flags.optimize:raise RuntimeError('optimized interpreter refused')\\nfolder='/restore';expected=EXPECTED\\nif os.listdir(folder):raise ValueError('new empty private volume required')\\nos.chmod(folder,0o700)\\nfd=os.open(folder+'/review.sqlite',os.O_CREAT|os.O_EXCL|os.O_NOFOLLOW|os.O_WRONLY,0o600)\\ndigest=hashlib.sha256();size=0\\nwith os.fdopen(fd,'wb') as target:\\n while True:\\n block=sys.stdin.buffer.read(1024**2)\\n if not block:break\\n size+=len(block)\\n if size>512*1024**2:raise ValueError('private restore size exceeds bound')\\n target.write(block);digest.update(block)\\n target.flush();os.fsync(target.fileno())\\nif digest.hexdigest()!=expected:raise ValueError('private copied snapshot differs')\\nos.chown(folder+'/review.sqlite',10001,10001);os.chown(folder,10001,10001)\\nprint('{\\\"all_checks_pass\\\":true,\\\"private_copy_verified\\\":true}')\\n\\\"\\\"\\\".replace('EXPECTED', repr(previous['snapshot_sha256']))\\n with snapshot.open('rb') as source:\\n argv = ['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET,\\n 'run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m',\\n '--user', '0:0', '--cap-drop', 'ALL', '--cap-add', 'CHOWN',\\n '--security-opt', 'no-new-privileges', '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore',\\n '--entrypoint', 'python', IMAGE, '-c', initializer]\\n copied = subprocess.run(argv, stdin=source, text=True, capture_output=True, timeout=150)\\n json_result(copied)\\n options = ['run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m',\\n '--user', '10001:10001', '--cap-drop', 'ALL', '--security-opt', 'no-new-privileges',\\n '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore']\\n readonly = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'],\\n (CASE / 'sqlite_readonly.py').read_text())\\n require(readonly.returncode == 0, 'offline pre-open schema/integrity gate refused; never open Store')\\n checked = counts(json.loads(readonly.stdout))\\n require(checked == previous['snapshot_readonly'], 'frozen snapshot/clone readonly counts differ')\\n admin = docker(options + ['--entrypoint', 'informed-decision-admin', IMAGE,\\n 'inspect', '--db', '/restore/review.sqlite'])\\n require(admin.returncode == 0, 'offline admin result uncertain')\\n admin_counts = json.loads(admin.stdout)\\n require(admin_counts == {key: checked[key] for key in ('schema_version', 'lifecycle', 'outbox', 'submissions')},\\n 'offline admin changed frozen snapshot counters')\\n # Admin Store construction must not silently alter schema/integrity/counters.\\n post = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'],\\n (CASE / 'sqlite_readonly.py').read_text())\\n require(post.returncode == 0, 'offline post-admin readonly integrity gate refused')\\n post_checked = counts(json.loads(post.stdout))\\n require(post_checked == checked == previous['snapshot_readonly'],\\n 'offline admin altered frozen snapshot proof')\\n private(snapshot)\\n require(sha(snapshot) == previous['snapshot_sha256'], 'original protected snapshot changed during drill')\\n return {'all_checks_pass': True, 'offline_volume': VOLUME, 'offline_readonly': checked,\\n 'offline_post_admin_readonly': post_checked, 'original_snapshot_hash_unchanged': True,\\n 'created_volume_identity': identity,\\n 'admin_counts': admin_counts, 'network': 'none', 'runtime_tokens_or_config_mounted': False,\\n 'service_entrypoint_started': False, 'original_snapshot_retained': True}\\n\\n\\ndef cleanup_offline(journal):\\n inspected = docker(['volume', 'inspect', VOLUME])\\n require(inspected.returncode == 0, 'owned disposable volume identity unverified')\\n value = json.loads(inspected.stdout)\\n expected = journal.data['phases']['offline-verify']['result']['created_volume_identity']\\n require(len(value) == 1 and {key: value[0].get(key) for key in expected} == expected\\n and not value[0].get('Options'), 'volume ownership/recreation changed')\\n removed = docker(['volume', 'rm', VOLUME])\\n require(removed.returncode == 0 and removed.stdout.strip() == VOLUME\\n and docker(['volume', 'inspect', VOLUME]).returncode != 0,\\n 'cleanup outcome ambiguous; do not retry')\\n return {'all_checks_pass': True, 'only_disposable_offline_volume_removed': VOLUME,\\n 'native_and_offcluster_original_snapshots_retained': True}\\n\\n\\ndef main():\\n parser = argparse.ArgumentParser(description=__doc__)\\n parser.add_argument('--phase', choices=PHASES, required=True)\\n parser.add_argument('--root-authority-receipt', type=Path, required=True)\\n parser.add_argument('--root-native-outcome', type=Path, required=True)\\n parser.add_argument('--source-revision', required=True)\\n parser.add_argument('--root-fresh-scan-receipt', type=Path, required=True)\\n args = parser.parse_args()\\n require(args.root_authority_receipt == Path('/tmp/security-infd-zlib-root-authority.json')\\n and args.root_native_outcome == Path('/tmp/security-infd-zlib-native-outcome-latest.json'),\\n 'fixed supervised receipt paths required')\\n require(re.fullmatch(r'[0-9a-f]{40}', args.source_revision) is not None, 'exact source commit required')\\n # Verify all prepared executor/input bytes before reading authority or dispatching.\\n plan = json.loads((ROOT / 'execution-plan.json').read_text())\\n require(plan.get('state') == 'prepared-unapproved' and plan.get('published_artifact_verified') is True, 'unfrozen proposal cannot execute')\\n require(set(plan['executor_files']) == {'actuator.py', 'authority_journal.py', 'native_program.py', 'receipt_safety.py'},\\n 'fixed executor sources required')\\n require(set(plan['owner_source_files']) == {'deploy/lifecycle/admission.candidate.json',\\n 'deploy/lifecycle/service.candidate.json',\\n 'deploy/lifecycle/kustomization.yaml',\\n 'deploy/lifecycle/registries.candidate.json'},\\n 'fixed owner image sources required')\\n for relative, digest in plan['executor_files'].items():\\n target = ROOT / relative\\n require(not target.is_symlink() and sha(target) == digest, 'executor source bytes changed')\\n for relative, digest in plan['case_files'].items():\\n require(not Path(relative).is_absolute() and '..' not in Path(relative).parts,\\n 'case source path escaped')\\n target = CASE / relative\\n require(not target.is_symlink() and sha(target) == digest, 'case source bytes changed')\\n for relative, digest in plan['owner_source_files'].items():\\n target = OWNER / relative\\n require(not target.is_symlink() and sha(target) == digest, 'owner image-only source changed')\\n committed = subprocess.run(['git', '-C', str(OWNER), 'show', args.source_revision + ':' + relative],\\n capture_output=True)\\n require(committed.returncode == 0 and hashlib.sha256(committed.stdout).hexdigest() == digest,\\n 'committed owner render source differs from approved inputs')\\n head = run(['git', '-C', str(OWNER), 'rev-parse', 'HEAD'])\\n require(head.returncode == 0 and head.stdout.strip() == args.source_revision, 'owner source HEAD differs')\\n from authority_journal import Journal, authority, fresh_scan\\n private(args.root_authority_receipt)\\n private(args.root_native_outcome)\\n receipt = json.loads(args.root_authority_receipt.read_text())\\n require(receipt.get('native_outcome_sha256') == sha(args.root_native_outcome), 'native outcome bytes changed')\\n require(receipt.get('executor_plan_sha256') == sha(ROOT / 'execution-plan.json'),\\n 'root verified executor plan differs')\\n approved = authority(receipt, json.loads(args.root_native_outcome.read_text()), sha(CASE / 'memo.json'),\\n args.source_revision, args.phase)\\n if args.phase in ('release', 'verify'):\\n require(args.root_fresh_scan_receipt == Path('/tmp/security-infd-zlib-fresh-scan-receipt.json'), 'fixed fresh scan receipt path required')\\n private(args.root_fresh_scan_receipt)\\n scan_receipt=json.loads(args.root_fresh_scan_receipt.read_text())\\n report_path=Path('/tmp/security-infd-zlib-fresh-scan-full.json');private(report_path)\\n require(sha(report_path)==scan_receipt.get('full_report_sha256'), 'fresh scan report bytes changed')\\n fresh_scan(scan_receipt,json.loads(report_path.read_text()))\\n parent = CUSTODY.parent\\n private(parent, directory=True)\\n ignored = run(['git', '-C', str(CUSTODIAN), 'check-ignore', '--no-index', str(CUSTODY / 'drill.sqlite')])\\n require(ignored.returncode == 0, 'offcluster custody is not ignored')\\n if not CUSTODY.exists():\\n require(args.phase == 'drill-backup', 'first approved phase must create unique private custody')\\n os.mkdir(CUSTODY, 0o700)\\n private(CUSTODY, directory=True)\\n capacity = os.statvfs(CUSTODY)\\n require(capacity.f_bavail * capacity.f_frsize >= 2 * MAX_BYTES + 16 * 1024**2,\\n 'independent protected custody headroom insufficient')\\n os.makedirs(CUSTODY / 'empty-docker-config', mode=0o700, exist_ok=True)\\n private(CUSTODY / 'empty-docker-config', directory=True)\\n require(not list((CUSTODY / 'empty-docker-config').iterdir()), 'public Docker read config must stay empty')\\n journal = Journal(CUSTODY, {'proposal': plan['proposal_id'], 'source_revision': args.source_revision,\\n 'memo_sha256': sha(CASE / 'memo.json'), 'plan_sha256': sha(ROOT / 'execution-plan.json')})\\n try:\\n journal.start(args.phase, approved) # fsynced RUNNING before any phase effect.\\n if args.phase in ('drill-copy', 'cutover-copy'):\\n result = copy_snapshot(args.phase, args.source_revision, approved, journal)\\n elif args.phase == 'offline-verify':\\n result = offline_verify(journal)\\n elif args.phase == 'cleanup-offline':\\n result = cleanup_offline(journal)\\n else:\\n result = remote(args.phase, args.source_revision, approved, operation_intent=journal.data['phases'].get('rollback' if args.phase == 'rollback-verify' else 'release') if args.phase in ('verify', 'rollback-verify') else None)\\n journal.finish(args.phase, result)\\n print(json.dumps(result)) # Only count/hash/identity receipts, never snapshot bytes.\\n except BaseException as error:\\n safe = {'all_checks_pass': False, 'phase': args.phase, 'failure_class': type(error).__name__,\\n 'failure': 'fixed phase outcome uncertain; original evidence retained; no retry',\\n 'raw_output_withheld': True}\\n if journal.data['phases'].get(args.phase, {}).get('state') == 'RUNNING':\\n journal.finish(args.phase, safe)\\n print(json.dumps(safe))\\n raise SystemExit(1) from None\\n finally:\\n journal.close()\\n\\n\\nif __name__ == '__main__':\\n try:\\n main()\\n except Exception:\\n raise SystemExit('supervised execution refused before phase; raw output withheld') from None\\n\"\n },\n \"execution/authority_journal.py\": {\n \"sha256\": \"2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108\",\n \"content\": \"\\\"\\\"\\\"Supervised receipt bookkeeping, not an authenticated approval provider.\\\"\\\"\\\"\\nimport datetime\\nimport fcntl\\nimport hashlib\\nimport json\\nimport os\\nimport re\\nfrom pathlib import Path\\nimport stat\\nimport uuid\\n\\nFOUNDER = {'kind': 'person', 'sub': 'uid=platform-root,ou=people,dc=netkingdom,dc=local'}\\nMEMO_ID = 'infd-20261011-zlib-remediation-r1'\\nPROPOSAL = 'INFD-WP-0009-T05/zlib85091-r1'\\nPHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline',\\n 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify')\\n\\n\\ndef require(value, reason):\\n if not value:\\n raise ValueError(reason)\\n\\n\\ndef sha(path):\\n digest = hashlib.sha256()\\n with Path(path).open('rb') as stream:\\n for block in iter(lambda: stream.read(1024**2), b''):\\n digest.update(block)\\n return digest.hexdigest()\\n\\n\\ndef private(path, directory=False):\\n info = Path(path).lstat()\\n require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode))\\n and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600)\\n and (directory or info.st_nlink == 1), 'private owned custody required')\\n\\n\\ndef authority(receipt, outcome, memo_sha, source_revision, phase, now=None):\\n \\\"\\\"\\\"Root must freshly verify native outcome at fixed ORIGIN outside this helper.\\n\\n Receipt files/flags are not signed grants. This function checks the exact\\n supervised receipt relation; existing harness/founder authority remains the\\n actual permission boundary. It never authenticates a caller as human.\\n \\\"\\\"\\\"\\n now = now or datetime.datetime.now(datetime.timezone.utc)\\n require(phase in PHASES, 'fixed phase required')\\n require(receipt.get('proposal_id') == PROPOSAL and receipt.get('memo_id') == MEMO_ID\\n and receipt.get('memo_version') == 1 and receipt.get('memo_sha256') == memo_sha\\n and receipt.get('source_revision') == source_revision\\n and receipt.get('activation') == 'APPROVED'\\n and receipt.get('authority_mode') == 'ADMINISTER'\\n and receipt.get('target') == 'realm:kubernetes/railiance01/informed-decision'\\n and receipt.get('verification_method') == 'root-fixed-origin-native-readback'\\n and receipt.get('runtime_authenticated_grant') is False\\n and receipt.get('outcome_query') == '/lifecycle/memos/' + MEMO_ID + '/outcomes?version=1',\\n 'exact externally verified supervised receipt required')\\n verified = datetime.datetime.fromisoformat(receipt['verified_at'].replace('Z', '+00:00'))\\n require(verified.tzinfo is not None and 0 <= (now - verified).total_seconds() <= 120,\\n 'fresh root native readback required before every phase')\\n deadline = datetime.datetime.fromisoformat('2026-10-12T23:59:59+00:00')\\n require(now < deadline, 'approved execution window expired')\\n if phase == 'release':\\n require((deadline-now).total_seconds() >= 1800, 'reserve thirty minutes for verification and recovery')\\n require(outcome.get('memo_id') == MEMO_ID and outcome.get('review', {}).get('stale') is False\\n and outcome['review'].get('intake_state') == 'ready', 'native review is not ready/current')\\n review_id = outcome['review']['memo_id']\\n require(review_id == receipt.get('review_memo_id'), 'native review identity changed')\\n accepted = [x for x in outcome.get('dispositions', [])\\n if x.get('submission_state') == 'confirmed'\\n and x.get('disposition', {}).get('verb') == 'accept'\\n and x['disposition'].get('memo_version') == 1]\\n require(len(accepted) == 1, 'one confirmed founder acceptance required')\\n accepted = accepted[0]['disposition']\\n require(accepted.get('actor') == FOUNDER and accepted.get('memo_id') == review_id\\n and accepted.get('approval_id') == receipt.get('approval_id')\\n and accepted.get('id') == receipt.get('disposition_id')\\n and accepted.get('at') == receipt.get('accepted_at'), 'exact founder disposition mismatch')\\n require(re.fullmatch(r'[a-f0-9-]{36}', accepted['approval_id']) is not None\\n and re.fullmatch(r'disp-[a-f0-9-]{36}', accepted['id']) is not None\\n and re.fullmatch(r'review-[a-f0-9-]{36}', review_id) is not None,\\n 'native disposition identifiers are malformed')\\n accepted_at = datetime.datetime.fromisoformat(accepted['at'].replace('Z', '+00:00'))\\n require(accepted_at.tzinfo is not None and accepted_at <= verified, 'acceptance time not bounded')\\n return {key: receipt[key] for key in ('approval_id', 'disposition_id', 'accepted_at', 'verified_at')}\\n\\n\\ndef fresh_scan(receipt, report, now=None):\\n \\\"\\\"\\\"Root supervised scan bookkeeping; actual scanner proof stays retained.\\\"\\\"\\\"\\n now=now or datetime.datetime.now(datetime.timezone.utc)\\n require(receipt.get('image')=='forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23'\\n and receipt.get('artifact_source_revision')=='9b4bb25d325698ae543e7e8a8a3c3592db1f58fc'\\n and receipt.get('scanner')=='aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969'\\n and receipt.get('no_suppression') is True and receipt.get('full_allseverity_scan') is True\\n and receipt.get('exit_code')==0,'exact full immutable artifact scan required')\\n scanned=datetime.datetime.fromisoformat(receipt['completed_at'].replace('Z','+00:00'))\\n metadata=receipt['db_metadata'];updated=datetime.datetime.fromisoformat(metadata['UpdatedAt'].replace('Z','+00:00'));next_update=datetime.datetime.fromisoformat(metadata['NextUpdate'].replace('Z','+00:00'))\\n require(all(t.tzinfo is not None for t in (scanned,updated,next_update))\\n and updated<=scanned<=now0 and size<=512*1024**2 and free>=size*(2 if action==\\\\'drill-backup\\\\' else 1)+16*1024**2,\\\\'bounded native snapshot capacity required\\\\')\\\\n if action==\\\\'drill-backup\\\\':\\\\n require(not os.path.lexists(folder),\\\\'native case directory must be unique\\\\')\\\\n os.mkdir(folder,0o700);os.chmod(folder,0o700)\\\\n private(folder,True)\\\\n filename=\\\\'drill.sqlite\\\\' if action==\\\\'drill-backup\\\\' else \\\\'cutover.sqlite\\\\';output=folder+\\\\'/\\\\'+filename\\\\n require(not os.path.lexists(output),\\\\'snapshot output must be unique\\\\')\\\\n admin=subprocess.run([\\\\'informed-decision-admin\\\\',\\\\'backup\\\\',\\\\'--db\\\\',db,\\\\'--output\\\\',output],capture_output=True,text=True,timeout=120)\\\\n require(admin.returncode==0 and json.loads(admin.stdout)=={\\\\'status\\\\':\\\\'backed_up\\\\',\\\\'consistent_snapshot\\\\':True},\\\\'backup completion not verified; do not retry\\\\')\\\\n private(output)\\\\n for suffix in (\\\\'-wal\\\\',):\\\\n require(not os.path.exists(output+suffix) or os.stat(output+suffix).st_size==0,\\\\'snapshot has WAL frames; immutable read refused\\\\')\\\\n digest=hashlib.sha256()\\\\n with open(output,\\\\'rb\\\\') as stream:\\\\n for block in iter(lambda:stream.read(1024**2),b\\\\'\\\\'):digest.update(block)\\\\n frozen_digest=digest.hexdigest()\\\\n snapshot=counts(inspect_closed_snapshot(output,frozen_digest))\\\\n size=os.stat(output).st_size;require(0 10**12\\n for number in value[group].values()):\\n raise ValueError('count-only receipt values refused')\\n return value\\n\"\n },\n \"execution/test_execution.py\": {\n \"sha256\": \"7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac\",\n \"content\": \"\\\"\\\"\\\"Synthetic custody/transport tests. No native data, Docker or cluster action.\\\"\\\"\\\"\\nimport copy\\nimport datetime\\nimport io\\nimport json\\nimport os\\nfrom pathlib import Path\\nimport subprocess\\nimport sys\\nimport tempfile\\nimport unittest\\nfrom unittest.mock import patch\\nfrom contextlib import redirect_stdout\\n\\nimport actuator\\nfrom authority_journal import Journal, authority, fresh_scan\\nfrom native_program import PROGRAM\\nfrom receipt_safety import counts\\n\\nCASE = Path(__file__).resolve().parent.parent\\nNOW = datetime.datetime(2026, 10, 11, 2, 0, tzinfo=datetime.timezone.utc)\\nREVISION = 'e' * 40\\nCOUNT = {'schema_version': 5, 'integrity': 'ok', 'read_only_pre_open': True, 'store_constructed': False,\\n 'lifecycle': {'records': 3, 'events': 8, 'pending': 1},\\n 'outbox': {'pending': 2, 'delivered': 10}, 'submissions': {'confirmed': 1, 'unresolved': 1}}\\n\\n\\ndef accepted():\\n approval = '11111111-1111-4111-8111-111111111111'\\n review = 'review-22222222-2222-4222-8222-222222222222'\\n disposition = 'disp-33333333-3333-4333-8333-333333333333'\\n receipt = {'proposal_id': 'INFD-WP-0009-T05/zlib85091-r1',\\n 'memo_id': 'infd-20261011-zlib-remediation-r1', 'memo_version': 1,\\n 'memo_sha256': 'a' * 64, 'source_revision': REVISION, 'activation': 'APPROVED',\\n 'authority_mode': 'ADMINISTER', 'target': 'realm:kubernetes/railiance01/informed-decision',\\n 'verification_method': 'root-fixed-origin-native-readback', 'runtime_authenticated_grant': False, 'outcome_query': '/lifecycle/memos/infd-20261011-zlib-remediation-r1/outcomes?version=1',\\n 'verified_at': '2026-10-11T02:00:00Z', 'accepted_at': '2026-10-11T01:59:00Z',\\n 'review_memo_id': review, 'approval_id': approval, 'disposition_id': disposition}\\n outcome = {'memo_id': receipt['memo_id'], 'review': {'memo_id': review, 'stale': False, 'intake_state': 'ready'},\\n 'dispositions': [{'approval_id': None, 'submission_state': 'confirmed',\\n 'disposition': {'verb': 'accept', 'memo_version': 1, 'memo_id': review,\\n 'approval_id': approval, 'id': disposition,\\n 'actor': {'kind': 'person', 'sub': 'uid=platform-root,ou=people,dc=netkingdom,dc=local'},\\n 'at': receipt['accepted_at']}}]}\\n return receipt, outcome\\n\\n\\nclass AuthorityAndCustody(unittest.TestCase):\\n def test_exact_nested_founder_receipt_not_top_level_approval(self):\\n receipt, outcome = accepted()\\n result = authority(receipt, outcome, 'a' * 64, REVISION, 'drill-copy', NOW)\\n self.assertEqual(result['approval_id'], receipt['approval_id'])\\n\\n def test_pending_stale_wrong_actor_version_and_binding_refuse(self):\\n mutations = [lambda r, o: r.update(activation='PENDING'),\\n lambda r, o: r.update(memo_sha256='changed'),\\n lambda r, o: r.update(source_revision='changed'),\\n lambda r, o: r.update(target='other'),\\n lambda r, o: r.update(verified_at='2026-10-11T01:00:00Z'),\\n lambda r, o: r.update(verification_method='caller-asserted'),\\n lambda r, o: r.update(runtime_authenticated_grant=True),\\n lambda r, o: o['review'].update(stale=True),\\n lambda r, o: o['review'].update(intake_state='pending'),\\n lambda r, o: o['dispositions'][0].update(submission_state='unresolved'),\\n lambda r, o: o['dispositions'][0]['disposition'].update(memo_version=3),\\n lambda r, o: o['dispositions'][0]['disposition'].update(actor={'kind': 'agent', 'sub': 'platform-root'}),\\n lambda r, o: o['dispositions'].append(copy.deepcopy(o['dispositions'][0]))]\\n for mutate in mutations:\\n with self.subTest(mutate=mutate):\\n r, o = accepted()\\n mutate(r, o)\\n with self.assertRaises(ValueError):\\n authority(r, o, 'a' * 64, REVISION, 'release', NOW)\\n\\n def test_expired_window_and_unknown_phase_refuse(self):\\n r, o = accepted()\\n with self.assertRaises(ValueError):\\n authority(r, o, 'a' * 64, REVISION, 'arbitrary', NOW)\\n late = datetime.datetime(2026, 10, 13, tzinfo=datetime.timezone.utc)\\n r['verified_at'] = late.isoformat()\\n with self.assertRaises(ValueError):\\n authority(r, o, 'a' * 64, REVISION, 'rollback', late)\\n\\n def test_durable_intent_precedes_dispatch_and_never_retries(self):\\n with tempfile.TemporaryDirectory() as directory:\\n parent = Path(directory)\\n os.chmod(parent, 0o700)\\n journal = Journal(parent, {'case': 'fixture'})\\n journal.start('drill-backup', {'approval_id': 'fixture'})\\n self.assertEqual(json.loads(journal.path.read_text())['phases']['drill-backup']['state'], 'RUNNING')\\n journal.close() # simulated crash before result\\n recovered = Journal(parent, {'case': 'fixture'})\\n with self.assertRaises(ValueError):\\n recovered.start('drill-backup', {})\\n with self.assertRaises(ValueError):\\n recovered.start('drill-backup', {})\\n recovered.close()\\n\\n def test_phase_order_and_uncertain_release_allows_only_distinct_recovery(self):\\n with tempfile.TemporaryDirectory() as directory:\\n os.chmod(directory, 0o700)\\n j = Journal(directory, {'case': 'fixture'})\\n with self.assertRaises(ValueError):\\n j.start('release', {})\\n for phase in actuator.PHASES[:6]:\\n j.start(phase, {})\\n j.finish(phase, {'all_checks_pass': True})\\n j.start('release', {})\\n j.finish('release', {'all_checks_pass': False})\\n with self.assertRaises(ValueError):\\n j.start('release', {})\\n with self.assertRaises(ValueError):\\n j.start('verify', {})\\n j.start('rollback', {})\\n j.finish('rollback', {'all_checks_pass': True})\\n j.close()\\n\\n def test_secret_or_unknown_child_output_is_withheld(self):\\n for body in ('not-json', '{\\\"all_checks_pass\\\":true,\\\"token\\\":\\\"private-value\\\"}',\\n '{\\\"all_checks_pass\\\":true,\\\"snapshot_readonly\\\":{\\\"schema_version\\\":5}}'):\\n with self.assertRaises(ValueError):\\n actuator.json_result(subprocess.CompletedProcess([], 0, body, ''))\\n wrong = copy.deepcopy(COUNT)\\n wrong['outbox'] = {'private-row-value': 1}\\n with self.assertRaises(ValueError):\\n counts(wrong)\\n counts(COUNT) # blocked/unresolved counts are not required to be zero.\\n\\n def test_binary_copy_is_bounded_private_and_never_echoed(self):\\n blob = b'synthetic private fixture bytes'\\n digest = __import__('hashlib').sha256(blob).hexdigest()\\n metadata = {'all_checks_pass': True, 'snapshot_file': 'drill.sqlite', 'snapshot_bytes': len(blob),\\n 'snapshot_sha256': digest, 'snapshot_readonly': COUNT,\\n 'pod_name': 'fixture-pod', 'pod_uid': 'fixture-uid'}\\n journal = type('FixtureJournal', (), {'data': {'phases': {'drill-backup': {'result': metadata}}}})()\\n real_popen = subprocess.Popen\\n for extra in (b'', b'oversized'):\\n with self.subTest(extra=extra), tempfile.TemporaryDirectory() as folder:\\n os.chmod(folder, 0o700)\\n output = io.StringIO()\\n\\n def child(*args, **kwargs):\\n return real_popen([sys.executable, '-c', 'import sys;sys.stdout.buffer.write(' + repr(blob + extra) + ')'],\\n stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)\\n\\n with patch.object(actuator, 'CUSTODY', Path(folder)), patch.object(actuator, 'remote', return_value=metadata), \\\\\\n patch('subprocess.Popen', side_effect=child), redirect_stdout(output):\\n if extra:\\n with self.assertRaises(ValueError):\\n actuator.copy_snapshot('drill-copy', REVISION, {}, journal)\\n else:\\n result = actuator.copy_snapshot('drill-copy', REVISION, {}, journal)\\n self.assertTrue(result['off_cluster_private_copy_verified'])\\n self.assertEqual((Path(folder) / 'drill.sqlite').read_bytes(), blob)\\n self.assertEqual(output.getvalue(), '')\\n self.assertEqual((Path(folder) / 'drill.sqlite').stat().st_mode & 0o777, 0o600)\\n\\n def test_recreated_offline_volume_cannot_be_deleted(self):\\n identity = {'Name': actuator.VOLUME, 'Labels': {'nonce': 'old'}, 'CreatedAt': 'old'}\\n journal = type('FixtureJournal', (), {'data': {'phases': {\\n 'offline-verify': {'result': {'created_volume_identity': identity}}}}})()\\n inspected = [{**identity, 'CreatedAt': 'recreated'}]\\n with patch.object(actuator, 'docker', return_value=subprocess.CompletedProcess([], 0, json.dumps(inspected), '')) as mocked:\\n with self.assertRaises(ValueError):\\n actuator.cleanup_offline(journal)\\n self.assertEqual(mocked.call_count, 1)\\n\\n def test_offline_post_admin_integrity_and_original_hash_are_rechecked(self):\\n for defect in ('none', 'post-integrity', 'original-hash'):\\n with self.subTest(defect=defect), tempfile.TemporaryDirectory() as directory:\\n folder=Path(directory);os.chmod(folder,0o700)\\n snapshot=folder/'drill.sqlite';snapshot.write_bytes(b'private synthetic snapshot');os.chmod(snapshot,0o600)\\n digest=actuator.sha(snapshot)\\n prior={'snapshot_sha256':digest,'snapshot_readonly':COUNT}\\n journal=type('FixtureJournal',(),{'data':{'phases':{'drill-copy':{'result':prior},'offline-verify':{'attempt_id':'nonce'}}},'note':lambda *args:None})()\\n reads=[]\\n volume={'Name':actuator.VOLUME,'Labels':{'informed-decision.case':'infd-zlib-20261011-r1','informed-decision.use':'offline-restore-only','informed-decision.attempt':'nonce'},'Driver':'local','Scope':'local','CreatedAt':'fixture','Options':None}\\n def docker(argv, body=None, **kwargs):\\n if argv[0]=='info':body=json.dumps('bnt-lap001')\\n elif argv[:2]==['volume','ls']:body=''\\n elif argv[:2]==['volume','create']:body=actuator.VOLUME\\n elif argv[:2]==['volume','inspect']:body=json.dumps([volume])\\n elif 'informed-decision-admin' in argv:\\n body=json.dumps({key:COUNT[key] for key in ('schema_version','lifecycle','outbox','submissions')})\\n if defect=='original-hash':snapshot.write_bytes(b'changed synthetic original')\\n elif '--entrypoint' in argv and 'python' in argv:\\n reads.append(argv);proof=copy.deepcopy(COUNT)\\n if len(reads)==2 and defect=='post-integrity':proof['integrity']='corrupt'\\n body=json.dumps(proof)\\n else:raise AssertionError('unexpected offline command')\\n return subprocess.CompletedProcess(argv,0,body,'')\\n with patch.object(actuator,'CUSTODY',folder),patch.object(actuator,'CASE',CASE),patch.object(actuator,'docker',side_effect=docker),patch('subprocess.run',return_value=subprocess.CompletedProcess([],0,'{\\\"all_checks_pass\\\":true,\\\"private_copy_verified\\\":true}','')):\\n if defect=='none':\\n result=actuator.offline_verify(journal)\\n self.assertEqual(result['offline_post_admin_readonly'],COUNT)\\n self.assertTrue(result['original_snapshot_hash_unchanged'])\\n else:\\n with self.assertRaises(ValueError):actuator.offline_verify(journal)\\n self.assertEqual(len(reads),2)\\n\\n def test_fresh_full_scan_db_expiry_and_new_findings_refuse(self):\\n receipt={'image':actuator.IMAGE,'artifact_source_revision':'9b4bb25d325698ae543e7e8a8a3c3592db1f58fc','scanner':'aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969','no_suppression':True,'full_allseverity_scan':True,'exit_code':0,'completed_at':'2026-10-11T01:59:00Z','db_metadata':{'UpdatedAt':'2026-10-10T19:00:00Z','NextUpdate':'2026-10-11T19:00:00Z','Version':2},'db_sha256':'a'*64,'full_report_sha256':'b'*64}\\n report={'Results':[{'Vulnerabilities':None}]}\\n self.assertEqual(fresh_scan(receipt,report,NOW)['allseverity_findings'],0)\\n mutations=[lambda r,p:r.update(no_suppression=False),lambda r,p:r.update(image='foreign'),lambda r,p:r.update(scanner='other'),lambda r,p:r.update(completed_at='2026-10-10T21:00:00Z'),lambda r,p:r['db_metadata'].update(NextUpdate='2026-10-11T01:59:00Z'),lambda r,p:p['Results'][0].update(Vulnerabilities=[{'Severity':'LOW'}]),lambda r,p:p.update(Results=[])]\\n for mutate in mutations:\\n r,p=copy.deepcopy(receipt),copy.deepcopy(report);mutate(r,p)\\n with self.assertRaises(ValueError):fresh_scan(r,p,NOW)\\n\\n\\nclass FixedNativeProgram(unittest.TestCase):\\n def fixture(self):\\n sealed = json.loads((CASE / 'sealed-live-deployment.json').read_text())\\n live = copy.deepcopy(sealed)\\n live['metadata'].update(generation=42)\\n live['status'] = {'readyReplicas': 1, 'updatedReplicas': 1, 'observedGeneration': 42}\\n dependencies = json.loads((CASE / 'sealed-native-dependencies.json').read_text())\\n cm = copy.deepcopy(dependencies['configmap'])\\n cm.pop('canonical_data_sha256')\\n service = json.loads((CASE / 'candidate-deployment.json').read_text())\\n source_service = json.loads((Path('/home/worsch/informed-decision/deploy/lifecycle/service.candidate.json')).read_text())\\n cm['data'] = next(x for x in source_service['items'] if x['kind'] == 'ConfigMap')['data']\\n pvc = copy.deepcopy(dependencies['pvc'])\\n pvc['status'] = {'phase': 'Bound'}\\n app = {'metadata': {'uid': '499868f2-eabc-4df4-ae31-b89ce58d750d', 'resourceVersion': '17'},\\n 'spec': {'source': {'repoURL': 'https://forgejo.coulomb.social/coulomb/informed-decision.git',\\n 'path': 'deploy/lifecycle', 'targetRevision': 'c96b0c6d881e855d1d158003c6de90ef390262e2'},\\n 'destination': {'namespace': 'informed-decision', 'server': 'https://kubernetes.default.svc'}}}\\n objects = {'deployment': live, 'configmap': cm, 'pvc': pvc, 'application': app}\\n payload = {'phase': 'release', 'source_revision': REVISION, 'approval': {}, 'sealed': sealed,\\n 'dependencies': dependencies, 'candidate': service,\\n 'rollback': json.loads((CASE / 'rollback-deployment.json').read_text()),\\n 'readonly': (CASE / 'sqlite_readonly.py').read_text(),'purpose_checks':(CASE/'check_installed.py').read_text(),\\n 'installed_zlib': json.loads((CASE / 'installed-zlib-proof.json').read_text()), 'receipt_safety': (Path(__file__).parent / 'receipt_safety.py').read_text()}\\n return objects, payload\\n\\n def execute_fake(self, objects, payload, ambiguous=False, schema_refused=False):\\n writes = []\\n calls = []\\n\\n def fake(argv, input=None, **kwargs):\\n calls.append(argv)\\n if argv[:2] == ['kubectl', 'get']:\\n kind = argv[2]\\n if kind in objects:\\n body = objects[kind]\\n elif kind == 'pods':\\n body = {'items': [{'metadata': {'name': 'fixture-pod', 'uid': 'c4cb1550-feda-4097-9de4-d891a657b662',\\n 'ownerReferences': [{'kind': 'ReplicaSet', 'name': 'fixture-rs', 'uid': 'rs-uid'}]},\\n 'spec': objects['deployment']['spec']['template']['spec'],\\n 'status': {'phase': 'Running', 'containerStatuses': [{'name':'informed-decision','ready': True,'imageID':objects['deployment']['spec']['template']['spec']['containers'][0]['image']}] }}]}\\n elif kind == 'replicaset':\\n body = {'metadata': {'uid': 'rs-uid', 'ownerReferences': [\\n {'kind': 'Deployment', 'uid': payload['sealed']['metadata']['uid']}]}}\\n elif kind == 'nodes':\\n body = {'items': [{'metadata': {'name': 'fixture-node'}, 'status': {\\n 'addresses': [{'address': '92.205.62.239'}], 'allocatable': {'cpu': '4'},\\n 'conditions': [{'type': key, 'status': 'True' if key == 'Ready' else 'False'}\\n for key in ('Ready', 'MemoryPressure', 'DiskPressure', 'PIDPressure')]}}]}\\n else:\\n raise AssertionError('unexpected fixed metadata route')\\n return subprocess.CompletedProcess(argv, 0, json.dumps(body), '')\\n if argv[:2] == ['kubectl', 'exec']:\\n if schema_refused:\\n return subprocess.CompletedProcess(argv, 1, '', 'withheld')\\n return subprocess.CompletedProcess(argv, 0, json.dumps({\\n 'all_checks_pass': True, 'live_readonly_schema_integrity_counts': COUNT}), '')\\n if argv[:2] == ['kubectl', 'apply']:\\n admitted = copy.deepcopy(payload['sealed'])\\n admitted['spec']['template']['spec']['containers'][0]['image'] = (actuator.IMAGE if payload['phase']=='release' else payload['sealed']['spec']['template']['spec']['containers'][0]['image'])\\n return subprocess.CompletedProcess(argv, 0, json.dumps(admitted), '')\\n if argv[:2] == ['kubectl', 'describe']:\\n return subprocess.CompletedProcess(argv, 0, 'Allocated resources:\\\\n cpu 3460m (86%)\\\\n', '')\\n if argv[:2] == ['kubectl', 'diff']:\\n return subprocess.CompletedProcess(argv, 1, '-image: base\\\\n+image: candidate\\\\n', '')\\n if argv[:2] == ['kubectl', 'patch']:\\n if '--dry-run=server' not in argv:\\n writes.append(json.loads(input))\\n if ambiguous:\\n return subprocess.CompletedProcess(argv, 1, '', 'withheld')\\n return subprocess.CompletedProcess(argv, 0, 'application.argoproj.io/informed-decision\\\\n', '')\\n raise AssertionError('unexpected command')\\n\\n source = PROGRAM.replace('__PAYLOAD__', repr(json.dumps(payload))).replace(\\n '__GUARD__', repr((CASE / 'change_guard.py').read_text()))\\n output = io.StringIO()\\n with patch('subprocess.run', side_effect=fake), redirect_stdout(output):\\n try:\\n exec(compile(source, 'fixed-native-fixture', 'exec'), {'__name__': '__fixture__'})\\n except (ValueError, SystemExit):\\n pass\\n receipt = json.loads(output.getvalue()) if output.getvalue() else {'all_checks_pass': False}\\n return receipt, writes, calls\\n\\n def test_only_existing_application_operation_and_deployment_are_requested(self):\\n objects, payload = self.fixture()\\n receipt, writes, calls = self.execute_fake(objects, payload)\\n self.assertTrue(receipt['all_checks_pass'])\\n self.assertFalse(receipt['rollout_verified'])\\n self.assertEqual(len(writes), 1)\\n operation = writes[0][-1]['value']\\n self.assertFalse(operation['sync']['prune'])\\n self.assertEqual(operation['sync']['resources'], [\\n {'group': 'apps', 'kind': 'Deployment', 'name': 'informed-decision', 'namespace': 'informed-decision'}])\\n self.assertTrue(any('--dry-run=server' in argv and argv[:2] == ['kubectl', 'patch'] for argv in calls))\\n self.assertEqual(writes[0][0]['path'], '/metadata/uid')\\n\\n def test_source_overrides_automation_and_custody_drift_stop_before_write(self):\\n mutations = [lambda o: o['application']['metadata'].update(uid='recreated'),\\n lambda o: o['application']['spec'].update(syncPolicy={'automated': {}}),\\n lambda o: o['application']['spec']['source'].update(kustomize={'images': ['other']}),\\n lambda o: o['application']['spec'].update(sources=[{}]),\\n lambda o: o['configmap']['metadata'].update(uid='recreated'),\\n lambda o: o['pvc']['spec'].update(volumeName='replaced'),\\n lambda o: o['deployment']['status'].update(readyReplicas=0)]\\n for mutate in mutations:\\n with self.subTest(mutate=mutate):\\n objects, payload = self.fixture()\\n mutate(objects)\\n receipt, writes, calls = self.execute_fake(objects, payload)\\n self.assertFalse(receipt['all_checks_pass'])\\n self.assertEqual(writes, [])\\n\\n def test_preopen_schema_refusal_prevents_image_operation(self):\\n objects, payload = self.fixture()\\n receipt, writes, calls = self.execute_fake(objects, payload, schema_refused=True)\\n self.assertFalse(receipt['all_checks_pass'])\\n self.assertEqual(writes, [])\\n\\n\\n def test_rollback_unready_candidate_never_reads_pod_or_database(self):\\n objects, payload = self.fixture()\\n payload['phase'] = 'rollback'\\n objects['deployment']['status'].update(readyReplicas=0, updatedReplicas=0)\\n objects['deployment']['spec']['template']['spec']['containers'][0]['image'] = actuator.IMAGE\\n objects['application']['spec']['source']['targetRevision'] = REVISION\\n receipt, writes, calls = self.execute_fake(objects, payload, schema_refused=True)\\n self.assertTrue(receipt['all_checks_pass'])\\n self.assertFalse(receipt['rollout_verified'])\\n self.assertEqual(len(writes), 1)\\n self.assertFalse(any(argv[:2] == ['kubectl', 'exec'] or argv[:3] == ['kubectl', 'get', 'pods'] for argv in calls))\\n self.assertEqual(writes[0][-1]['value']['sync']['revision'], 'c96b0c6d881e855d1d158003c6de90ef390262e2')\\n\\n def test_rollback_still_refuses_custody_or_nonpair_image_drift(self):\\n for defect in ('cm', 'pvc', 'image'):\\n with self.subTest(defect=defect):\\n objects, payload = self.fixture();payload['phase'] = 'rollback'\\n objects['deployment']['status']['readyReplicas'] = 0\\n if defect == 'cm':objects['configmap']['metadata']['uid'] = 'recreated'\\n elif defect == 'pvc':objects['pvc']['spec']['volumeName'] = 'replaced'\\n else:objects['deployment']['spec']['template']['spec']['containers'][0]['image'] = 'foreign-image'\\n receipt, writes, calls = self.execute_fake(objects, payload)\\n self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes, [])\\n\\n def test_recovery_verification_is_separate_ready_old_image_schema_proof(self):\\n objects, payload = self.fixture();payload['phase'] = 'rollback-verify'\\n resource={'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'}\\n target='c96b0c6d881e855d1d158003c6de90ef390262e2'\\n payload['operation_intent']={'state':'COMPLETE','started_at':'2026-10-11T01:00:00Z','result':{'operation_requested':True,'source_revision':target,'prune':False,'resources':[resource]}}\\n objects['application']['status']={'operationState':{'phase':'Succeeded','startedAt':'2026-10-11T01:00:01Z','finishedAt':'2026-10-11T01:01:00Z','operation':{'initiatedBy':{'username':'custodian-codex'},'sync':{'revision':target,'resources':[resource]}},'syncResult':{'revision':target,'resources':[{**resource,'status':'Synced'}]}}}\\n receipt, writes, calls = self.execute_fake(objects, payload)\\n self.assertTrue(receipt['all_checks_pass']);self.assertTrue(receipt['recovery_verification'])\\n self.assertEqual(writes, [])\\n self.assertTrue(any(argv[:2]==['kubectl','exec'] for argv in calls))\\n objects['deployment']['status']['readyReplicas'] = 0\\n receipt, writes, calls = self.execute_fake(objects,payload)\\n self.assertFalse(receipt['all_checks_pass'])\\n\\n def test_ambiguous_patch_is_never_retried(self):\\n objects, payload = self.fixture()\\n receipt, writes, calls = self.execute_fake(objects, payload, ambiguous=True)\\n self.assertFalse(receipt['all_checks_pass'])\\n self.assertEqual(len(writes), 1)\\n\\n def test_false_omitempty_needs_bound_current_request_and_exact_completion(self):\\n objects,payload=self.fixture();payload['phase']='rollback-verify'\\n resource={'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'}\\n target='c96b0c6d881e855d1d158003c6de90ef390262e2'\\n payload['operation_intent']={'state':'COMPLETE','started_at':'2026-10-11T01:00:00Z','result':{'operation_requested':True,'source_revision':target,'prune':False,'resources':[resource]}}\\n objects['application']['status']={'operationState':{'phase':'Succeeded','startedAt':'2026-10-11T01:00:01Z','finishedAt':'2026-10-11T01:01:00Z','operation':{'initiatedBy':{'username':'custodian-codex'},'sync':{'revision':target,'resources':[resource]}},'syncResult':{'revision':target,'resources':[{**resource,'status':'Synced'}]}}}\\n self.assertTrue(self.execute_fake(objects,payload)[0]['all_checks_pass'])\\n mutations=[lambda o,p:o['application']['status']['operationState']['operation']['sync'].update(prune=True),\\n lambda o,p:o['application']['status']['operationState']['operation']['sync'].update(prune=None),\\n lambda o,p:o['application']['status']['operationState'].update(startedAt='2026-10-11T00:59:00Z'),\\n lambda o,p:o['application']['status']['operationState']['operation'].update(initiatedBy={'username':'other'}),\\n lambda o,p:o['application']['status']['operationState']['syncResult'].update(revision='foreign'),\\n lambda o,p:o['application']['status']['operationState']['syncResult']['resources'][0].update(status='Pruned'),\\n lambda o,p:p['operation_intent']['result'].update(prune=True),\\n lambda o,p:p.update(operation_intent=None)]\\n for mutate in mutations:\\n o,p=copy.deepcopy(objects),copy.deepcopy(payload);mutate(o,p)\\n receipt,writes,calls=self.execute_fake(o,p)\\n self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[])\\n\\n def test_optimized_executor_refuses_before_any_input(self):\\n result=subprocess.run([sys.executable,'-O',str(Path(__file__).parent/'actuator.py'),'--phase','release','--root-authority-receipt','/missing','--root-native-outcome','/missing','--source-revision',REVISION],capture_output=True,text=True)\\n self.assertNotEqual(result.returncode,0)\\n self.assertIn('optimized interpreter refused',result.stderr)\\n\\n\\nif __name__ == '__main__':\\n unittest.main()\\n\"\n }\n },\n \"native_execution\": false,\n \"case_evidence\": {\n \"sqlite_readonly.py\": {\n \"sha256\": \"9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509\",\n \"content\": \"\\\"\\\"\\\"Pre-open schema/integrity/count proof; stdlib only, never constructs Store.\\\"\\\"\\\"\\nimport argparse\\nfrom contextlib import closing\\nimport hashlib\\nimport os\\nimport re\\nimport stat\\nimport json\\nfrom pathlib import Path\\nimport sqlite3\\n\\n\\ndef inspect_readonly(path, *, _closed_snapshot=False):\\n path = Path(path)\\n if not path.is_file() or path.is_symlink():\\n raise ValueError('existing nonsymlink private database required')\\n uri = path.resolve().as_uri() + '?mode=ro' + ('&immutable=1' if _closed_snapshot else '')\\n # sqlite3.Connection context management ends transactions; it does not close.\\n with closing(sqlite3.connect(uri, uri=True, timeout=5)) as db:\\n db.execute('PRAGMA query_only=ON')\\n db.execute('BEGIN')\\n version = db.execute('PRAGMA user_version').fetchone()[0]\\n if version != 5:\\n raise ValueError('pre-open database is not schema5; refuse migration')\\n if db.execute('PRAGMA integrity_check').fetchall() != [('ok',)]:\\n raise ValueError('read-only integrity check refused')\\n lifecycle = {name: db.execute('SELECT COUNT(*) FROM ' + table).fetchone()[0]\\n for name, table in (('records', 'lifecycle_records'),\\n ('events', 'lifecycle_events'),\\n ('pending', 'lifecycle_pending'))}\\n result = {'schema_version': version, 'lifecycle': lifecycle,\\n 'outbox': dict(db.execute('SELECT state,COUNT(*) FROM outbox GROUP BY state')),\\n 'submissions': dict(db.execute('SELECT state,COUNT(*) FROM submissions GROUP BY state')),\\n 'integrity': 'ok', 'read_only_pre_open': True, 'store_constructed': False}\\n db.rollback()\\n return result\\n\\n\\ndef inspect_closed_snapshot(path, expected_sha256):\\n \\\"\\\"\\\"Only a privately retained, frozen main-file snapshot with no WAL frames.\\n\\n Caller must establish exclusive snapshot creation/admin exit/no writer, and\\n supply the recorded frozen main digest. Never use for the live database.\\n Immutable SQLite reads ignore stale SHM and never create/change sidecars.\\n Existing sidecars remain custody evidence; nothing is deleted/checkpointed.\\n \\\"\\\"\\\"\\n path = Path(path)\\n if re.fullmatch(r'[0-9a-f]{64}', expected_sha256) is None:\\n raise ValueError('exact frozen snapshot digest required')\\n def metadata(target):\\n info = target.lstat()\\n if not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) != 0o600 or info.st_nlink != 1:\\n raise ValueError('private single-link snapshot custody required')\\n return info\\n main = metadata(path)\\n if not 0 < main.st_size <= 512 * 1024**2:\\n raise ValueError('bounded frozen snapshot required')\\n def sidecars():\\n identities = {}\\n for suffix in ('-wal', '-shm'):\\n target = Path(str(path) + suffix)\\n if os.path.lexists(target):\\n info = metadata(target)\\n if info.st_uid != main.st_uid or info.st_gid != main.st_gid:\\n raise ValueError('snapshot sidecar custody changed')\\n if suffix == '-wal' and info.st_size != 0:\\n raise ValueError('snapshot has WAL frames; immutable read refused')\\n identities[suffix] = (info.st_dev, info.st_ino, info.st_size, info.st_mtime_ns)\\n return identities\\n before_sidecars = sidecars()\\n def digest():\\n value = hashlib.sha256()\\n with path.open('rb') as stream:\\n for block in iter(lambda: stream.read(1024**2), b''):\\n value.update(block)\\n return value.hexdigest()\\n if digest() != expected_sha256:\\n raise ValueError('frozen main-file digest changed before inspection')\\n proof = inspect_readonly(path, _closed_snapshot=True)\\n after = metadata(path)\\n if (after.st_dev, after.st_ino, after.st_uid, after.st_gid, after.st_size) != (main.st_dev, main.st_ino, main.st_uid, main.st_gid, main.st_size):\\n raise ValueError('frozen main-file identity changed')\\n if digest() != expected_sha256 or sidecars() != before_sidecars:\\n raise ValueError('frozen snapshot changed during inspection')\\n return proof\\n\\n\\nif __name__ == '__main__':\\n parser = argparse.ArgumentParser(description=__doc__)\\n parser.add_argument('--db', type=Path, required=True)\\n args = parser.parse_args()\\n try:\\n print(json.dumps(inspect_readonly(args.db), sort_keys=True))\\n except Exception:\\n raise SystemExit('read-only schema5/integrity/count gate refused; no Store/admin open') from None\\n\"\n },\n \"change_guard.py\": {\n \"sha256\": \"b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201\",\n \"content\": \"\\\"\\\"\\\"Read-only exact Deployment and admission boundaries; no mutation authority.\\\"\\\"\\\"\\nimport copy\\nimport hashlib\\nimport json\\n\\nBASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a'\\nCANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23'\\n\\n\\ndef dependency_projection(configmap, pvc):\\n if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True\\n or configmap['metadata']['namespace'] != 'informed-decision'\\n or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051'\\n or set(configmap.get('data', {})) != {'runtime.json'}\\n or configmap.get('binaryData')):\\n raise ValueError('unexpected immutable runtime config identity')\\n if (pvc.get('kind') != 'PersistentVolumeClaim'\\n or pvc['metadata']['namespace'] != 'informed-decision'\\n or pvc['metadata']['name'] != 'informed-decision-data'\\n or pvc.get('status', {}).get('phase') != 'Bound'\\n or not pvc.get('spec', {}).get('volumeName')):\\n raise ValueError('unexpected bound PVC custody')\\n config = projection(configmap)\\n config.pop('data')\\n config['canonical_data_sha256'] = hashlib.sha256(json.dumps(\\n configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest()\\n return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'}\\n\\n\\ndef check_dependencies(configmap, pvc, sealed):\\n if dependency_projection(configmap, pvc) != sealed:\\n raise ValueError('runtime config or PVC identity/custody changed')\\n\\n\\ndef projection(value):\\n value = copy.deepcopy(value)\\n value.pop('status', None)\\n for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'):\\n value['metadata'].pop(key, None)\\n for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'):\\n value['metadata'].get('annotations', {}).pop(key, None)\\n return value\\n\\n\\ndef check_current(current, sealed):\\n if projection(current) != sealed:\\n raise ValueError('sealed live UID or configuration changed')\\n\\n\\ndef check_admitted(admitted, sealed):\\n expected = copy.deepcopy(sealed)\\n containers = expected['spec']['template']['spec']['containers']\\n if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE:\\n raise ValueError('unexpected baseline container identity')\\n containers[0]['image'] = CANDIDATE\\n if projection(admitted) != expected:\\n raise ValueError('admission changed configuration beyond the sole image pin')\\n\\n\\ndef transport_result(exit_code, output):\\n import json\\n try:\\n value = json.loads(output)\\n except (ValueError, TypeError):\\n return {'all_checks_pass': False, 'reason': 'invalid transport result'}\\n if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True:\\n return {'all_checks_pass': False, 'reason': 'read-only preflight refused'}\\n return value\\n\"\n },\n \"check_installed.py\": {\n \"sha256\": \"a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad\",\n \"content\": \"import copy,json,time\\nfrom datetime import datetime,timezone\\nfrom informed_decision.policy import PolicyClient,CONTRACT,submitted_digest\\npin='sha256:'+'b'*64\\nreq={'id':'image-purpose-fixture','tenant':'tenant:platform','subject':{'id':'synthetic','type':'service','tenant':'tenant:platform'},'resource':{'id':'memo:fixture','type':'memo','system':'informed-decision','tenant':'tenant:platform'},'action':'register','context':{}}\\nclass Transport:\\n def request(self,*args,**kwargs):\\n now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat()\\n b={**copy.deepcopy({k:req[k] for k in ('tenant','subject','action','resource','context')}),'request_digest':'sha256:'+'e'*64,'submitted_request_digest':submitted_digest(req)}\\n if self.purpose!='ABSENT':b['purpose']=self.purpose\\n d={'id':'synthetic-decision','contract_version':CONTRACT,'request_id':req['id'],'effect':'allow','matched_policy_version':'v1','subject':req['subject'],'resource':req['resource'],'binding':b,'lifetime':{'kind':'ttl','not_before':stamp(now-1),'expires_at':stamp(now+60)},'provenance':{'policy_package':'fixture','policy_version':'v1','policy_package_digest':pin,'registry_snapshot_digest':'sha256:'+'c'*64,'evaluator':'flex-auth/fixture','decision_time':stamp(now)}}\\n return 200,d\\nchecks=[]\\nfor purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}):\\n t=Transport();t.purpose=purpose\\n c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t)\\n o=c.check(req)\\n if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time())\\n else:assert o.outcome=='invalid_decision' and o.decision_json is None\\n checks.append(str(purpose))\\nprint(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False}))\\n\"\n },\n \"post-ready-native-outcomes-command.py\": {\n \"sha256\": \"ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa\",\n \"content\": \"\\\"\\\"\\\"Run only inside existing admitted StateHub Pod AFTER verified candidate Ready.\\n\\nThe fixed existing dispatcher loads its internal credential; root never reads\\nit. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an\\nadvisory verdict emission or a substitute for separate evidence obligations.\\nRoot records this bounded metadata receipt with verified PodUID/image/source.\\nThis preparation only writes source; no request is made here.\\n\\\"\\\"\\\"\\nimport datetime,json,urllib.request,urllib.error\\nfrom api.services.memo_dispatch import ORIGIN,NoRedirect,token_file\\nid='infd-20261011-zlib-remediation-r1'\\nreq=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')})\\nopener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect())\\ntry:\\n with opener.open(req,timeout=15) as response:\\n raw=response.read(1048577)\\n if len(raw)>1048576:raise ValueError('oversize')\\n r=json.loads(raw)\\n print(json.dumps({'memo_id':id,'source_memo_version':1,'observed_at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'native_authenticated_canonical_lifecycle_outcomes':True,'native_provider_path_returned':True,'credential_material_output':False,'review':r.get('review'),'disposition_count':len(r.get('dispositions',[])),'dispositions':[{k:d.get(k) for k in ('id','approval_id','submission_state','disposition','approved_at','decided_at')} for d in r.get('dispositions',[])]}))\\nexcept Exception as e:print(json.dumps({'memo_id':id,'status':'unverified','error_class':type(e).__name__}));raise SystemExit(1)\\n\"\n },\n \"installed-zlib-proof.json\": {\n \"sha256\": \"6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68\",\n \"content\": \"{\\n \\\"image\\\": \\\"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\\\",\\n \\\"zlib_package\\\": \\\"1.3.2-r1\\\",\\n \\\"files\\\": {\\n \\\"lib/apk/db/installed\\\": [\\n \\\"file\\\",\\n 420,\\n 0,\\n 0,\\n \\\"f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001\\\"\\n ],\\n \\\"usr/lib/libz.so.1.3.2\\\": [\\n \\\"file\\\",\\n 493,\\n 0,\\n 0,\\n \\\"ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2\\\"\\n ]\\n }\\n}\\n\"\n }\n }\n}\n" + } + ] +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47 new file mode 100644 index 0000000..269ae42 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47 @@ -0,0 +1,478 @@ +[ + { + "repo": "informed-decision", + "path": "deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/deploy/lifecycle/admission.candidate.json", + "original_sha256": "92382a56b349c3b895e5806e975082527bb99d1a001140e69d857e5b0391fa55", + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/deploy/lifecycle/service.candidate.json", + "original_sha256": "38b78b9cbee5ade7750a58d5156ca4c5773352e947acb304ee714b59e749ceb4", + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": null, + "staged_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "original_sha256": null, + "staged_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "original_sha256": null, + "staged_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": null, + "staged_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": null, + "staged_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": null, + "staged_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "repo": "informed-decision", + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "staged_path": "/tmp/infd-zlib-release-stage/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "af785afbf188184b72563c10813663d44117df7cb7394ecb1b9a25cbdfea67a4", + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6 new file mode 100644 index 0000000..61c3558 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6 @@ -0,0 +1,37 @@ +--- +id: RPF-IN-0009 +kind: intake +type: intake +title: "Platform technical review of distinct INFD zlib native release" +repo: railiance-platform +lane: supervised +status: closed +owner: railiance-platform +requested_by: the-custodian +origin: handoff +origin_ref: INFD-WP-0009-T05 +priority: high +created: "2026-10-11" +updated: "2026-10-11" +tags: [security, cross-owner, review] +--- + +New bounded Platform technical review of immutable published zlib artifact and separately proposed image-only native release/drill/cutover/recovery. Distinct from completed RPF-IN-0008 source candidate review and purpose R2 authorization. No native action, private database access, credentials, owner source writes, carried-forward approval or T05 closure. + +## Completed initial changes-requested review + +Initial exact67 manifest1e4 was observed at review start, then shared stage changed to68 manifest81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47 before snapshot preservation. Review stopped rather than treating that as unchanged frozen source. Observed68 bytes and manifest archived;29 published proof6ba2 hashes verified. Remote keyword dispatch and recorded backup snapshot identity are not plumbed; freshscan helper permits unbound incomplete zero reports. Fresh scan age and DBNextUpdate controls exist but artifact and full inventory coverage must be checked. Completed owner workrecord precedes conditional entry. Refinement remains this same review trial; no technical agreement or native approval issued. + +## Completed refined-source changes-requested review + +Same owner preparation trial reviewed immutable143 manifest `f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29`. Original wiring and incomplete scan proof defects fixed; all143 source hashes/plan file bindings verified,25 synthetic methods pass. Independent remote payload/partial scan repro confirms fixes; separate fixture shows unrelated privileged ephemeral container passes current Pod gate. Post-ready freeform output and recovery authority availability require explicit refinement. Exact previous74 owner-review files plus manifest/map archived before supersession. Source-only review is completed before conditional entry; no technical ACK, approval or native evidence inferred. + +Root selected a NEW human-proposal recovery alternative for further source preparation: independently root-confirmed same accepted receipt retained before release may support manual supervised763/c96 Deployment-only latestDB recovery for at most30minutes after release and before deadline, only exact approved custody/journal/source pins and demonstrable transport-unavailable/502/503/504 plus failed candidate placement. No401/403/revoked/invalidsignature/conflict fallback, no backup/release fallback; inability to query later revocation while unavailable must be disclosed. This is proposed scope awaiting exact code review and NEW founder disposition, not existing authority. + +## Completed final exact-source technical review + +Final immutable481 manifest `3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec` reviewed in this same IN9 preparation trial. All481 hashes and plan executor/case pins match;36 synthetic tests and12 additional public-artifact/synthetic checks pass. Ephemeral Pod custody, private metadata filtering, original payload wiring and full fresh scan coverage now refuse challenged defects. Bounded supervised outage recovery is expressly NEW proposed founder consent, not old approval: rollback only failed exactcandidate/source, retained authenticated pre-release exact acceptance,30minutes/globaldeadline/UID/config/PVC/journal/source/image pins, no401/403/revocation/conflict/healthy candidate/backup or release fallback. Later revocation unobservable during outage is disclosed; recovered verification proves separate rollback placement, not provider acceptance/taskclosure. Exact prior123 owner files/manifest/map preserved before entry; original67 historical absence remains honest. Completed workrecord precedes formal source agreement. No native action or new approval inferred. + +## Final481 actual API compatibility finding; no ACK issued + +Before returning any agreement, Product identified actual provider shape incompatibility. Owner source lifecycle_review.outcomes returns only review/dispositions, optional reviewNone/not_submitted and optional submissionstate; lifecycle_service wraps it in current PDP authorization. The staged sanitizer instead requires invented topmemo_id and restrictive inventedstates. Independent read-only owner-source inspection confirms it. Prior unissued draft retained explicitly as superseded, not formal acceptance. Additional source correction must use fixed-request/HTTP200 correlation and bounded shape/count-only proof without detailed freeform dispositions or founder-authority inference. Completed sameIN9 changes-requested workrecord precedes entry. diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509 new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509 @@ -0,0 +1,95 @@ +"""Pre-open schema/integrity/count proof; stdlib only, never constructs Store.""" +import argparse +from contextlib import closing +import hashlib +import os +import re +import stat +import json +from pathlib import Path +import sqlite3 + + +def inspect_readonly(path, *, _closed_snapshot=False): + path = Path(path) + if not path.is_file() or path.is_symlink(): + raise ValueError('existing nonsymlink private database required') + uri = path.resolve().as_uri() + '?mode=ro' + ('&immutable=1' if _closed_snapshot else '') + # sqlite3.Connection context management ends transactions; it does not close. + with closing(sqlite3.connect(uri, uri=True, timeout=5)) as db: + db.execute('PRAGMA query_only=ON') + db.execute('BEGIN') + version = db.execute('PRAGMA user_version').fetchone()[0] + if version != 5: + raise ValueError('pre-open database is not schema5; refuse migration') + if db.execute('PRAGMA integrity_check').fetchall() != [('ok',)]: + raise ValueError('read-only integrity check refused') + lifecycle = {name: db.execute('SELECT COUNT(*) FROM ' + table).fetchone()[0] + for name, table in (('records', 'lifecycle_records'), + ('events', 'lifecycle_events'), + ('pending', 'lifecycle_pending'))} + result = {'schema_version': version, 'lifecycle': lifecycle, + 'outbox': dict(db.execute('SELECT state,COUNT(*) FROM outbox GROUP BY state')), + 'submissions': dict(db.execute('SELECT state,COUNT(*) FROM submissions GROUP BY state')), + 'integrity': 'ok', 'read_only_pre_open': True, 'store_constructed': False} + db.rollback() + return result + + +def inspect_closed_snapshot(path, expected_sha256): + """Only a privately retained, frozen main-file snapshot with no WAL frames. + + Caller must establish exclusive snapshot creation/admin exit/no writer, and + supply the recorded frozen main digest. Never use for the live database. + Immutable SQLite reads ignore stale SHM and never create/change sidecars. + Existing sidecars remain custody evidence; nothing is deleted/checkpointed. + """ + path = Path(path) + if re.fullmatch(r'[0-9a-f]{64}', expected_sha256) is None: + raise ValueError('exact frozen snapshot digest required') + def metadata(target): + info = target.lstat() + if not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) != 0o600 or info.st_nlink != 1: + raise ValueError('private single-link snapshot custody required') + return info + main = metadata(path) + if not 0 < main.st_size <= 512 * 1024**2: + raise ValueError('bounded frozen snapshot required') + def sidecars(): + identities = {} + for suffix in ('-wal', '-shm'): + target = Path(str(path) + suffix) + if os.path.lexists(target): + info = metadata(target) + if info.st_uid != main.st_uid or info.st_gid != main.st_gid: + raise ValueError('snapshot sidecar custody changed') + if suffix == '-wal' and info.st_size != 0: + raise ValueError('snapshot has WAL frames; immutable read refused') + identities[suffix] = (info.st_dev, info.st_ino, info.st_size, info.st_mtime_ns) + return identities + before_sidecars = sidecars() + def digest(): + value = hashlib.sha256() + with path.open('rb') as stream: + for block in iter(lambda: stream.read(1024**2), b''): + value.update(block) + return value.hexdigest() + if digest() != expected_sha256: + raise ValueError('frozen main-file digest changed before inspection') + proof = inspect_readonly(path, _closed_snapshot=True) + after = metadata(path) + if (after.st_dev, after.st_ino, after.st_uid, after.st_gid, after.st_size) != (main.st_dev, main.st_ino, main.st_uid, main.st_gid, main.st_size): + raise ValueError('frozen main-file identity changed') + if digest() != expected_sha256 or sidecars() != before_sidecars: + raise ValueError('frozen snapshot changed during inspection') + return proof + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--db', type=Path, required=True) + args = parser.parse_args() + try: + print(json.dumps(inspect_readonly(args.db), sort_keys=True)) + except Exception: + raise SystemExit('read-only schema5/integrity/count gate refused; no Store/admin open') from None diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd new file mode 100644 index 0000000..3af5f7a --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd @@ -0,0 +1,13 @@ +{ + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "artifact_source_revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "full_allseverity_scan": true, + "no_suppression": true, + "exit_code": null, + "completed_at": null, + "db_metadata": null, + "db_sha256": null, + "full_report_sha256": null, + "note": "Template is not actual evidence or approval" +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788 new file mode 100644 index 0000000..66736d3 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788 @@ -0,0 +1,188 @@ +"""Supervised receipt bookkeeping, not an authenticated approval provider.""" +import datetime +import fcntl +import hashlib +import json +import os +import re +from pathlib import Path +import stat +import uuid + +FOUNDER = {'kind': 'person', 'sub': 'uid=platform-root,ou=people,dc=netkingdom,dc=local'} +MEMO_ID = 'infd-20261011-zlib-remediation-r1' +PROPOSAL = 'INFD-WP-0009-T05/zlib85091-r1' +PHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline', + 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify') + + +def require(value, reason): + if not value: + raise ValueError(reason) + + +def sha(path): + digest = hashlib.sha256() + with Path(path).open('rb') as stream: + for block in iter(lambda: stream.read(1024**2), b''): + digest.update(block) + return digest.hexdigest() + + +def private(path, directory=False): + info = Path(path).lstat() + require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode)) + and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600) + and (directory or info.st_nlink == 1), 'private owned custody required') + + +def authority(receipt, outcome, memo_sha, source_revision, phase, now=None): + """Root must freshly verify native outcome at fixed ORIGIN outside this helper. + + Receipt files/flags are not signed grants. This function checks the exact + supervised receipt relation; existing harness/founder authority remains the + actual permission boundary. It never authenticates a caller as human. + """ + now = now or datetime.datetime.now(datetime.timezone.utc) + require(phase in PHASES, 'fixed phase required') + require(receipt.get('proposal_id') == PROPOSAL and receipt.get('memo_id') == MEMO_ID + and receipt.get('memo_version') == 1 and receipt.get('memo_sha256') == memo_sha + and receipt.get('source_revision') == source_revision + and receipt.get('activation') == 'APPROVED' + and receipt.get('authority_mode') == 'ADMINISTER' + and receipt.get('target') == 'realm:kubernetes/railiance01/informed-decision' + and receipt.get('verification_method') == 'root-fixed-origin-native-readback' + and receipt.get('runtime_authenticated_grant') is False + and receipt.get('outcome_query') == '/lifecycle/memos/' + MEMO_ID + '/outcomes?version=1', + 'exact externally verified supervised receipt required') + verified = datetime.datetime.fromisoformat(receipt['verified_at'].replace('Z', '+00:00')) + require(verified.tzinfo is not None and 0 <= (now - verified).total_seconds() <= 120, + 'fresh root native readback required before every phase') + deadline = datetime.datetime.fromisoformat('2026-10-12T23:59:59+00:00') + require(now < deadline, 'approved execution window expired') + if phase == 'release': + require((deadline-now).total_seconds() >= 1800, 'reserve thirty minutes for verification and recovery') + require(outcome.get('memo_id') == MEMO_ID and outcome.get('review', {}).get('stale') is False + and outcome['review'].get('intake_state') == 'ready', 'native review is not ready/current') + review_id = outcome['review']['memo_id'] + require(review_id == receipt.get('review_memo_id'), 'native review identity changed') + accepted = [x for x in outcome.get('dispositions', []) + if x.get('submission_state') == 'confirmed' + and x.get('disposition', {}).get('verb') == 'accept' + and x['disposition'].get('memo_version') == 1] + require(len(accepted) == 1, 'one confirmed founder acceptance required') + accepted = accepted[0]['disposition'] + require(accepted.get('actor') == FOUNDER and accepted.get('memo_id') == review_id + and accepted.get('approval_id') == receipt.get('approval_id') + and accepted.get('id') == receipt.get('disposition_id') + and accepted.get('at') == receipt.get('accepted_at'), 'exact founder disposition mismatch') + require(re.fullmatch(r'[a-f0-9-]{36}', accepted['approval_id']) is not None + and re.fullmatch(r'disp-[a-f0-9-]{36}', accepted['id']) is not None + and re.fullmatch(r'review-[a-f0-9-]{36}', review_id) is not None, + 'native disposition identifiers are malformed') + accepted_at = datetime.datetime.fromisoformat(accepted['at'].replace('Z', '+00:00')) + require(accepted_at.tzinfo is not None and accepted_at <= verified, 'acceptance time not bounded') + return {key: receipt[key] for key in ('approval_id', 'disposition_id', 'accepted_at', 'verified_at')} + + +def fresh_scan(receipt, report, contract, now=None): + """Root supervised scan bookkeeping; actual scanner proof stays retained.""" + now=now or datetime.datetime.now(datetime.timezone.utc) + require(receipt.get('image')=='forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + and receipt.get('artifact_source_revision')=='9b4bb25d325698ae543e7e8a8a3c3592db1f58fc' + and receipt.get('scanner')=='aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969' + and receipt.get('no_suppression') is True and receipt.get('full_allseverity_scan') is True + and receipt.get('exit_code')==0,'exact full immutable artifact scan required') + scanned=datetime.datetime.fromisoformat(receipt['completed_at'].replace('Z','+00:00')) + metadata=receipt['db_metadata'];updated=datetime.datetime.fromisoformat(metadata['UpdatedAt'].replace('Z','+00:00'));next_update=datetime.datetime.fromisoformat(metadata['NextUpdate'].replace('Z','+00:00')) + require(all(t.tzinfo is not None for t in (scanned,updated,next_update)) + and updated<=scanned<=now1048576:raise ValueError('oversize') + r=json.loads(raw) + print(json.dumps({'memo_id':id,'source_memo_version':1,'observed_at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'native_authenticated_canonical_lifecycle_outcomes':True,'native_provider_path_returned':True,'credential_material_output':False,'review':r.get('review'),'disposition_count':len(r.get('dispositions',[])),'dispositions':[{k:d.get(k) for k in ('id','approval_id','submission_state','disposition','approved_at','decided_at')} for d in r.get('dispositions',[])]})) +except Exception as e:print(json.dumps({'memo_id':id,'status':'unverified','error_class':type(e).__name__}));raise SystemExit(1) diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a new file mode 100644 index 0000000..bad46c5 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a @@ -0,0 +1,29 @@ +--- +id: RPF-IN-0009 +kind: intake +type: intake +title: "Platform technical review of distinct INFD zlib native release" +repo: railiance-platform +lane: supervised +status: closed +owner: railiance-platform +requested_by: the-custodian +origin: handoff +origin_ref: INFD-WP-0009-T05 +priority: high +created: "2026-10-11" +updated: "2026-10-11" +tags: [security, cross-owner, review] +--- + +New bounded Platform technical review of immutable published zlib artifact and separately proposed image-only native release/drill/cutover/recovery. Distinct from completed RPF-IN-0008 source candidate review and purpose R2 authorization. No native action, private database access, credentials, owner source writes, carried-forward approval or T05 closure. + +## Completed initial changes-requested review + +Initial exact67 manifest1e4 was observed at review start, then shared stage changed to68 manifest81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47 before snapshot preservation. Review stopped rather than treating that as unchanged frozen source. Observed68 bytes and manifest archived;29 published proof6ba2 hashes verified. Remote keyword dispatch and recorded backup snapshot identity are not plumbed; freshscan helper permits unbound incomplete zero reports. Fresh scan age and DBNextUpdate controls exist but artifact and full inventory coverage must be checked. Completed owner workrecord precedes conditional entry. Refinement remains this same review trial; no technical agreement or native approval issued. + +## Completed refined-source changes-requested review + +Same owner preparation trial reviewed immutable143 manifest `f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29`. Original wiring and incomplete scan proof defects fixed; all143 source hashes/plan file bindings verified,25 synthetic methods pass. Independent remote payload/partial scan repro confirms fixes; separate fixture shows unrelated privileged ephemeral container passes current Pod gate. Post-ready freeform output and recovery authority availability require explicit refinement. Exact previous74 owner-review files plus manifest/map archived before supersession. Source-only review is completed before conditional entry; no technical ACK, approval or native evidence inferred. + +Root selected a NEW human-proposal recovery alternative for further source preparation: independently root-confirmed same accepted receipt retained before release may support manual supervised763/c96 Deployment-only latestDB recovery for at most30minutes after release and before deadline, only exact approved custody/journal/source pins and demonstrable transport-unavailable/502/503/504 plus failed candidate placement. No401/403/revoked/invalidsignature/conflict fallback, no backup/release fallback; inability to query later revocation while unavailable must be disclosed. This is proposed scope awaiting exact code review and NEW founder disposition, not existing authority. diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa new file mode 100644 index 0000000..80eefe4 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa @@ -0,0 +1,15 @@ +{ + "release_manifest_sha256": "3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec", + "all481_hashes_and_plan_bindings_match": true, + "synthetic_test_methods_independently_passed": 36, + "additional_checks_passed": 12, + "additional_checks": [ + "actual ephemeral custody refuses before native effect", + "actual public full report matches exact scan contract", + "incomplete/wrongconfig/truncated/LOW reports refuse", + "boolean HTTPstatus/foreignattempt/healthycandidate/403/31minute recovery refusals", + "actual provider command mocked response private fields withheld" + ], + "public_scan_report_only": true, + "native_or_private_database_access": false +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124 new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124 @@ -0,0 +1 @@ +{"uid": 10001, "gid": 10001, "policy_sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62", "policy_mode": "0o644", "policy_uid": 0, "app_file_sha256": {"__init__.py": "0ffebe048ba583e7b623f60e8f449950dc5fd49afce2398381fa143eee834e19", "__main__.py": "3ba1467fa2d47fcf0bd032e8694904450775adf763a6e6f9e4888cc3ce3ed92b", "approval_client.py": "56c201dda358cb4bef11a15da141bb68562cdde9e37b4a880bf1e9257ae82cb6", "approval_http.py": "dfaac1faed80a068aa78a8c87b80db99b8887a8fc3767eebc9d6261a98f1e334", "audit.py": "06da36a8f3451b4abc7a46da2df66d5939524c170658b879499b2a47a1b10cd3", "canonicalize.py": "517bbc6b81cc839636b97863ebdefd38aa375d10f4915feb9bf21867f992f765", "container.py": "5f40d2321ee3f52673238011116e741e7b2ac17e28119f100fbcc490db208fbc", "disposition.py": "5ddd19c2444f8e6c9bb090d04045cf1227a34554e000f07b3f677325bf8089f8", "evidence.py": "169ed59ac53ef534a6db835ba371a92177c0ffb000b04203507242e2159ebc21", "http_transport.py": "eda90098f8bf2e5a47d819bf6ae0b0d1dcaf9a87aad3cb61503d060be666339a", "hub_writeback.py": "98b9caa8096c2c3eb8ecfe33900a0ace98453e7608f504fd08a64f50156519a3", "intake.py": "a733b4b608b9ea90b2c8293901aa14388a0bf0d3719f121038bfdcc1faca2038", "intake_approval.py": "52f8b3643e4c5c6f56f2ef1fd9c7747da2165f8f88122e93b3f3ee3ecae48c73", "intake_delivery.py": "4771520cc96325d93bc3f8e08005c3d714a5597582cb1adccc0b0fa73dac0b0d", "intake_hub.py": "c3daddce31791a6e82f7b07406ef4d75bccba5a278fab01dab378a06abceabc8", "intake_service.py": "99ea285a725c58b7571e2a69ceb558f16bbcca4ec391607a0cc2d0459de3b318", "lifecycle.py": "e25f865828e541b2889cd6c9afe0ce7ca4441bf35155304cc7de7c86c44b28e8", "lifecycle_commands.py": "783ec451dd7ef33dc0cfd72c1633ea5208dfd463afeaa0b68d279f156a9b0828", "lifecycle_http.py": "d4b95421d54663f041a10b4f42ac9c013493fa7a770223ab45877b451a7a7c7d", "lifecycle_review.py": "b6d69be6c56f3e2f411501083e199195190df6c740a01b07e82a476268ca3629", "lifecycle_service.py": "2dde9280214e68e5e7a7b48d703886947c2a46139ada86e8ff2283a9d4b55a70", "lifecycle_ui.py": "448e9169607c487e362d4d0d1730aec33987b6dcf12c49dfff7de3aaaab7ae03", "memo.py": "697058863a4e6de2c143a2433eaaf5e15e5e7375dc5459af6911b146567e8b5d", "oidc.py": "6b24dac9537a12141a361c4577feaf42f6c197d8d87da16ca47a08daf6916915", "policy.py": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62", "presentation.py": "54375ccd8358fac41de220bccadbee09f8b7c8ebbeeafaafd381a7456331da50", "provenance.py": "de02c6bf162865ba9619d74cfd68dd0a5d7f81e6c9e427f67f848cb2c2214f83", "records.py": "82f696151895c51b168144a3078d05764da3499b96917c465629ce0836fa8e33", "requester.py": "66de1af80a5fb2442c1e4407148b581de24b671b5f76c9d2a0458d38e27833a8", "review.py": "d4a085b0ee3e65a9976b9b656ec87a8c735be8d74cfdc9bb55feeb90917c688e", "runtime.py": "535940eed76c5f21ec4c379796fbfddfd85fc309aad0de4d64afda06cdc2d3c5", "stance.py": "62b96b76eba4ec277344172f10f6233e979dda4d079f972d9a55c4e5aed96c3c", "store.py": "9c14b10becb99da19349073e9aa691c25a205df4a2c4d932f37d64f13e8d3b41", "ui.py": "ff0671dc7be4d08ab8f0d38504f70afd355ad3a8a6293620c75864ca56a53ec9", "web.py": "bd08a6b0ea0e418ea1e31e46edab6b7478de9779b823af4f5d72fd1346197e42", "workload.py": "b86cebf5e7a8182b24bb7f9fdbd6f0e17b578d690d9f06c541e713d7d995c5e8"}, "apk_packages": {".python-rundeps": "20260901.001029", "alpine-baselayout": "3.7.2-r1", "alpine-baselayout-data": "3.7.2-r1", "alpine-keys": "2.6-r0", "alpine-release": "3.24.1-r0", "apk-tools": "3.0.6-r0", "busybox": "1.37.0-r31", "busybox-binsh": "1.37.0-r31", "ca-certificates": "20260611-r0", "ca-certificates-bundle": "20260611-r0", "gdbm": "1.26-r0", "keyutils-libs": "1.6.3-r4", "krb5-conf": "1.0-r2", "krb5-libs": "1.22.2-r1", "libapk": "3.0.6-r0", "libbz2": "1.0.8-r6", "libcom_err": "1.47.4-r0", "libcrypto3": "3.5.8-r0", "libffi": "3.5.2-r1", "libintl": "1.0-r0", "libncursesw": "6.6_p20260516-r0", "libnsl": "2.0.1-r2", "libpanelw": "6.6_p20260516-r0", "libssl3": "3.5.8-r0", "libtirpc": "1.3.5-r1", "libtirpc-conf": "1.3.5-r1", "libuuid": "2.42.3-r1", "libverto": "0.3.2-r2", "musl": "1.2.6-r2", "musl-utils": "1.2.6-r2", "ncurses-terminfo-base": "6.6_p20260516-r0", "readline": "8.3.3-r1", "scanelf": "1.3.9-r1", "sqlite-libs": "3.53.4-r0", "ssl_client": "1.37.0-r31", "tzdata": "2026c-r0", "xz-libs": "5.8.3-r0", "zlib": "1.3.2-r1"}, "apk_world_sha256": "61a659443a49627ba7114faa13a4870a2ede26b314064829ced169412be7002e", "apk_keys_sha256": {"alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub": "9c102bcc376af1498d549b77bdbfa815ae86faa1d2d82f040e616b18ef2df2d4", "alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub": "12f899e55a7691225603d6fb3324940fc51cd7f133e7ead788663c2b7eecb00c", "alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub": "207e4696d3c05f7cb05966aee557307151f1f00217af4143c1bcaf33b8df733f"}, "python_dependencies": {"informed-decision": "0.2.0", "PyJWT": "2.15.1", "cryptography": "50.0.1", "cffi": "2.1.1", "pycparser": "3.0", "waitress": "3.0.2"}, "zlib_runtime_version": "1.3.2", "zlib_compile_version": "1.3.2", "libz_sha256": "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2", "compression_vectors_pass": 4, "malformed_zlib_refusals": 3, "crypto_jwt_waitress_smoke": true, "openssl": "OpenSSL 3.5.8 25 Aug 2026", "network_accessed": false, "database_opened": false, "provider_or_customer_data_used": false} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80 new file mode 100644 index 0000000..b897ef9 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80 @@ -0,0 +1,362 @@ +"""One fixed supervised phase; never run this during source preparation.""" +import argparse +import hashlib +import json +import os +from pathlib import Path +import re +import selectors +import stat +import subprocess +import sys +import time + +if sys.flags.optimize: + raise SystemExit('optimized interpreter refused') + +PHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline', + 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify') + + +def require(value, reason): + if not value: + raise ValueError(reason) + + +def sha(path): + digest = hashlib.sha256() + with Path(path).open('rb') as stream: + for block in iter(lambda: stream.read(1024**2), b''): + digest.update(block) + return digest.hexdigest() + + +def private(path, directory=False): + info = Path(path).lstat() + require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode)) + and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600) + and (directory or info.st_nlink == 1), 'private owned custody required') + +ROOT = Path(__file__).resolve().parent +CASE = ROOT.parent +OWNER = Path('/home/worsch/informed-decision') +CUSTODIAN = Path('/home/worsch/the-custodian') +CUSTODY = CUSTODIAN / '.private-backups/20261011-infd-zlib-r1' +SOCKET = 'unix:///var/run/docker.sock' +IMAGE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' +VOLUME = 'infd-zlib-r1-restore-20261011' +MAX_BYTES = 512 * 1024**2 + + +def run(argv, body=None, timeout=90): + return subprocess.run(argv, input=body, text=True, capture_output=True, timeout=timeout) + + +def json_result(result): + try: + value = json.loads(result.stdout) + except (ValueError, TypeError): + raise ValueError('safe phase receipt unavailable; outcome uncertain') from None + require(result.returncode == 0 and isinstance(value, dict) and value.get('all_checks_pass') is True, + 'phase did not verify complete; raw output withheld; no retry') + permitted = {'phase', 'all_checks_pass', 'raw_output_withheld', 'native_approval_verified_by_root', + 'native_authenticated_grant', 'source_readonly_baseline', 'snapshot_readonly', + 'snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'native_parent_private', + 'native_uid', 'pod_name', 'pod_uid', 'live_readonly_schema_integrity_counts', + 'live_counts_may_include_concurrent_commits', 'operation_requested', 'source_revision', + 'resources', 'prune', 'rollout_verified', 'latest_live_database_retained', + 'client_diff_sha256', 'native_rollout_verified', 'current_schema5_database_retained', + 'private_copy_verified', 'installed_purpose_checks', 'policy_sha256', + 'policy_mode', 'policy_uid', 'installed_zlib_files', 'zlib_package', 'health_statuses', 'native_provider_probe', 'recovery_verification'} + require(set(value) <= permitted, 'unexpected output fields withheld') + from receipt_safety import counts + for name in ('source_readonly_baseline', 'snapshot_readonly', 'live_readonly_schema_integrity_counts'): + if name in value: + counts(value[name]) + for name in ('snapshot_sha256', 'client_diff_sha256'): + if name in value: + require(re.fullmatch(r'[a-f0-9]{64}', value[name]) is not None, 'invalid output digest withheld') + if 'snapshot_bytes' in value: + require(type(value['snapshot_bytes']) is int and 0 < value['snapshot_bytes'] <= MAX_BYTES, + 'invalid output size withheld') + if 'snapshot_file' in value: + require(value['snapshot_file'] in ('drill.sqlite', 'cutover.sqlite'), 'invalid output file withheld') + return value + + +def docker(argv, body=None, timeout=120): + return run(['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET] + argv, + body=body, timeout=timeout) + + +def remote(phase, revision, approved): + # Fixed module imported only after main verifies every executor source hash. + from native_program import PROGRAM + payload = {'phase': phase, 'source_revision': revision, 'approval': approved, + 'sealed': json.loads((CASE / 'sealed-live-deployment.json').read_text()), + 'dependencies': json.loads((CASE / 'sealed-native-dependencies.json').read_text()), + 'candidate': json.loads((CASE / 'candidate-deployment.json').read_text()), + 'rollback': json.loads((CASE / 'rollback-deployment.json').read_text()), + 'receipt_safety': (ROOT / 'receipt_safety.py').read_text(), + 'purpose_checks': (CASE / 'check_installed.py').read_text(), + 'installed_zlib': json.loads((CASE / 'installed-zlib-proof.json').read_text()), 'readonly': (CASE / 'sqlite_readonly.py').read_text()} + script = PROGRAM.replace('__PAYLOAD__', repr(json.dumps(payload))).replace( + '__GUARD__', repr((CASE / 'change_guard.py').read_text())) + return json_result(run(['ssh', 'railiance01', 'python3 -'], script, timeout=200)) + + +def copy_snapshot(phase, revision, approved, journal): + metadata = remote(phase, revision, approved) + backup_phase = 'drill-backup' if phase == 'drill-copy' else 'cutover-backup' + prior = journal.data['phases'][backup_phase]['result'] + for key in ('snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'snapshot_readonly'): + require(metadata[key] == prior[key], 'closed frozen snapshot changed') + name = metadata['snapshot_file'] + require(name in ('drill.sqlite', 'cutover.sqlite') and 0 < metadata['snapshot_bytes'] <= MAX_BYTES, + 'fixed bounded snapshot required') + pod = metadata['pod_name'] + require(re.fullmatch(r'[a-z0-9]([-a-z0-9]*[a-z0-9])?', pod) is not None, 'fixed owner pod name required') + local = CUSTODY / name + fd = os.open(local, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW, 0o600) + # Binary snapshot stdout goes only to a private file, never tool/chat/log output. + # Snapshot schema/count metadata was validated before opening this destination. + with os.fdopen(fd, 'wb') as destination: + command = ('kubectl exec -n informed-decision ' + pod + + ' -c informed-decision -- cat /data/private/zlib85091-r1/' + name) + transfer = subprocess.Popen(['ssh', 'railiance01', command], stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL) + selector = selectors.DefaultSelector() + selector.register(transfer.stdout, selectors.EVENT_READ) + deadline = time.monotonic() + 150 + received = 0 + try: + while True: + remaining = deadline - time.monotonic() + require(remaining > 0 and selector.select(remaining), 'private transfer timed out') + block = os.read(transfer.stdout.fileno(), 1024**2) + if not block: + break + received += len(block) + require(received <= metadata['snapshot_bytes'] and received <= MAX_BYTES, + 'private copy exceeds frozen snapshot size') + destination.write(block) + transfer.wait(timeout=max(1, deadline - time.monotonic())) + finally: + selector.close() + transfer.stdout.close() + if transfer.poll() is None: + transfer.kill() + transfer.wait() + destination.flush() + os.fsync(destination.fileno()) + private(local) + require(transfer.returncode == 0 and local.stat().st_size == metadata['snapshot_bytes'] + and sha(local) == metadata['snapshot_sha256'], 'private copy incomplete/uncertain; retain, no retry') + # Re-read identity/hash after transfer. This is verification, not a write retry. + after = remote(phase, revision, approved) + require(after['pod_uid'] == metadata['pod_uid'] and after['snapshot_sha256'] == metadata['snapshot_sha256'], + 'source identity/snapshot changed during transfer') + return {**metadata, 'off_cluster_private_copy_verified': True, 'snapshot_contents_output': False} + + +def offline_verify(journal): + from receipt_safety import counts + snapshot = CUSTODY / 'drill.sqlite' + private(snapshot) + previous = journal.data['phases']['drill-copy']['result'] + require(sha(snapshot) == previous['snapshot_sha256'], 'protected snapshot bytes changed') + identity = docker(['info', '--format', '{{json .Name}}']) + require(identity.returncode == 0 and json.loads(identity.stdout) == 'bnt-lap001', + 'local offline Docker engine identity changed') + listed = docker(['volume', 'ls', '--format', '{{.Name}}']) + require(listed.returncode == 0 and VOLUME not in listed.stdout.splitlines(), + 'disposable volume absence not verified') + nonce = journal.data['phases']['offline-verify']['attempt_id'] + labels = {'informed-decision.case': 'infd-zlib-20261011-r1', + 'informed-decision.use': 'offline-restore-only', 'informed-decision.attempt': nonce} + created = docker(['volume', 'create', '--driver', 'local', '--label', 'informed-decision.case=infd-zlib-20261011-r1', + '--label', 'informed-decision.attempt=' + nonce, + '--label', 'informed-decision.use=offline-restore-only', VOLUME]) + require(created.returncode == 0 and created.stdout.strip() == VOLUME, 'volume creation uncertain; no retry') + inspected = docker(['volume', 'inspect', VOLUME]) + require(inspected.returncode == 0, 'new volume identity unavailable') + volume = json.loads(inspected.stdout) + require(len(volume) == 1 and volume[0]['Name'] == VOLUME and volume[0].get('Labels') == labels + and volume[0].get('Driver') == 'local' and not volume[0].get('Options') + and volume[0].get('Scope') == 'local', 'new isolated volume identity changed') + identity = {key: volume[0][key] for key in ('Name', 'Labels', 'Driver', 'Scope', 'CreatedAt')} + journal.note('offline-verify', 'created_volume_identity', identity) + # One-time UID0/CAP_CHOWN initialization is isolated to the NEW named volume. + # No host/live PVC/config/token mount exists; this detail needs packet review. + initializer = """import hashlib,os,stat,sys +if sys.flags.optimize:raise RuntimeError('optimized interpreter refused') +folder='/restore';expected=EXPECTED +if os.listdir(folder):raise ValueError('new empty private volume required') +os.chmod(folder,0o700) +fd=os.open(folder+'/review.sqlite',os.O_CREAT|os.O_EXCL|os.O_NOFOLLOW|os.O_WRONLY,0o600) +digest=hashlib.sha256();size=0 +with os.fdopen(fd,'wb') as target: + while True: + block=sys.stdin.buffer.read(1024**2) + if not block:break + size+=len(block) + if size>512*1024**2:raise ValueError('private restore size exceeds bound') + target.write(block);digest.update(block) + target.flush();os.fsync(target.fileno()) +if digest.hexdigest()!=expected:raise ValueError('private copied snapshot differs') +os.chown(folder+'/review.sqlite',10001,10001);os.chown(folder,10001,10001) +print('{"all_checks_pass":true,"private_copy_verified":true}') +""".replace('EXPECTED', repr(previous['snapshot_sha256'])) + with snapshot.open('rb') as source: + argv = ['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET, + 'run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m', + '--user', '0:0', '--cap-drop', 'ALL', '--cap-add', 'CHOWN', + '--security-opt', 'no-new-privileges', '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore', + '--entrypoint', 'python', IMAGE, '-c', initializer] + copied = subprocess.run(argv, stdin=source, text=True, capture_output=True, timeout=150) + json_result(copied) + options = ['run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m', + '--user', '10001:10001', '--cap-drop', 'ALL', '--security-opt', 'no-new-privileges', + '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore'] + readonly = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'], + (CASE / 'sqlite_readonly.py').read_text()) + require(readonly.returncode == 0, 'offline pre-open schema/integrity gate refused; never open Store') + checked = counts(json.loads(readonly.stdout)) + require(checked == previous['snapshot_readonly'], 'frozen snapshot/clone readonly counts differ') + admin = docker(options + ['--entrypoint', 'informed-decision-admin', IMAGE, + 'inspect', '--db', '/restore/review.sqlite']) + require(admin.returncode == 0, 'offline admin result uncertain') + admin_counts = json.loads(admin.stdout) + require(admin_counts == {key: checked[key] for key in ('schema_version', 'lifecycle', 'outbox', 'submissions')}, + 'offline admin changed frozen snapshot counters') + # Admin Store construction must not silently alter schema/integrity/counters. + post = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'], + (CASE / 'sqlite_readonly.py').read_text()) + require(post.returncode == 0, 'offline post-admin readonly integrity gate refused') + post_checked = counts(json.loads(post.stdout)) + require(post_checked == checked == previous['snapshot_readonly'], + 'offline admin altered frozen snapshot proof') + private(snapshot) + require(sha(snapshot) == previous['snapshot_sha256'], 'original protected snapshot changed during drill') + return {'all_checks_pass': True, 'offline_volume': VOLUME, 'offline_readonly': checked, + 'offline_post_admin_readonly': post_checked, 'original_snapshot_hash_unchanged': True, + 'created_volume_identity': identity, + 'admin_counts': admin_counts, 'network': 'none', 'runtime_tokens_or_config_mounted': False, + 'service_entrypoint_started': False, 'original_snapshot_retained': True} + + +def cleanup_offline(journal): + inspected = docker(['volume', 'inspect', VOLUME]) + require(inspected.returncode == 0, 'owned disposable volume identity unverified') + value = json.loads(inspected.stdout) + expected = journal.data['phases']['offline-verify']['result']['created_volume_identity'] + require(len(value) == 1 and {key: value[0].get(key) for key in expected} == expected + and not value[0].get('Options'), 'volume ownership/recreation changed') + removed = docker(['volume', 'rm', VOLUME]) + require(removed.returncode == 0 and removed.stdout.strip() == VOLUME + and docker(['volume', 'inspect', VOLUME]).returncode != 0, + 'cleanup outcome ambiguous; do not retry') + return {'all_checks_pass': True, 'only_disposable_offline_volume_removed': VOLUME, + 'native_and_offcluster_original_snapshots_retained': True} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--phase', choices=PHASES, required=True) + parser.add_argument('--root-authority-receipt', type=Path, required=True) + parser.add_argument('--root-native-outcome', type=Path, required=True) + parser.add_argument('--source-revision', required=True) + parser.add_argument('--root-fresh-scan-receipt', type=Path, required=True) + args = parser.parse_args() + require(args.root_authority_receipt == Path('/tmp/security-infd-zlib-root-authority.json') + and args.root_native_outcome == Path('/tmp/security-infd-zlib-native-outcome-latest.json'), + 'fixed supervised receipt paths required') + require(re.fullmatch(r'[0-9a-f]{40}', args.source_revision) is not None, 'exact source commit required') + # Verify all prepared executor/input bytes before reading authority or dispatching. + plan = json.loads((ROOT / 'execution-plan.json').read_text()) + require(plan.get('state') == 'prepared-unapproved' and plan.get('published_artifact_verified') is True, 'unfrozen proposal cannot execute') + require(set(plan['executor_files']) == {'actuator.py', 'authority_journal.py', 'native_program.py', 'receipt_safety.py'}, + 'fixed executor sources required') + require(set(plan['owner_source_files']) == {'deploy/lifecycle/admission.candidate.json', + 'deploy/lifecycle/service.candidate.json', + 'deploy/lifecycle/kustomization.yaml', + 'deploy/lifecycle/registries.candidate.json'}, + 'fixed owner image sources required') + for relative, digest in plan['executor_files'].items(): + target = ROOT / relative + require(not target.is_symlink() and sha(target) == digest, 'executor source bytes changed') + for relative, digest in plan['case_files'].items(): + require(not Path(relative).is_absolute() and '..' not in Path(relative).parts, + 'case source path escaped') + target = CASE / relative + require(not target.is_symlink() and sha(target) == digest, 'case source bytes changed') + for relative, digest in plan['owner_source_files'].items(): + target = OWNER / relative + require(not target.is_symlink() and sha(target) == digest, 'owner image-only source changed') + committed = subprocess.run(['git', '-C', str(OWNER), 'show', args.source_revision + ':' + relative], + capture_output=True) + require(committed.returncode == 0 and hashlib.sha256(committed.stdout).hexdigest() == digest, + 'committed owner render source differs from approved inputs') + head = run(['git', '-C', str(OWNER), 'rev-parse', 'HEAD']) + require(head.returncode == 0 and head.stdout.strip() == args.source_revision, 'owner source HEAD differs') + from authority_journal import Journal, authority, fresh_scan + private(args.root_authority_receipt) + private(args.root_native_outcome) + receipt = json.loads(args.root_authority_receipt.read_text()) + require(receipt.get('native_outcome_sha256') == sha(args.root_native_outcome), 'native outcome bytes changed') + require(receipt.get('executor_plan_sha256') == sha(ROOT / 'execution-plan.json'), + 'root verified executor plan differs') + approved = authority(receipt, json.loads(args.root_native_outcome.read_text()), sha(CASE / 'memo.json'), + args.source_revision, args.phase) + if args.phase in ('release', 'verify'): + require(args.root_fresh_scan_receipt == Path('/tmp/security-infd-zlib-fresh-scan-receipt.json'), 'fixed fresh scan receipt path required') + private(args.root_fresh_scan_receipt) + scan_receipt=json.loads(args.root_fresh_scan_receipt.read_text()) + report_path=Path('/tmp/security-infd-zlib-fresh-scan-full.json');private(report_path) + require(sha(report_path)==scan_receipt.get('full_report_sha256'), 'fresh scan report bytes changed') + fresh_scan(scan_receipt,json.loads(report_path.read_text())) + parent = CUSTODY.parent + private(parent, directory=True) + ignored = run(['git', '-C', str(CUSTODIAN), 'check-ignore', '--no-index', str(CUSTODY / 'drill.sqlite')]) + require(ignored.returncode == 0, 'offcluster custody is not ignored') + if not CUSTODY.exists(): + require(args.phase == 'drill-backup', 'first approved phase must create unique private custody') + os.mkdir(CUSTODY, 0o700) + private(CUSTODY, directory=True) + capacity = os.statvfs(CUSTODY) + require(capacity.f_bavail * capacity.f_frsize >= 2 * MAX_BYTES + 16 * 1024**2, + 'independent protected custody headroom insufficient') + os.makedirs(CUSTODY / 'empty-docker-config', mode=0o700, exist_ok=True) + private(CUSTODY / 'empty-docker-config', directory=True) + require(not list((CUSTODY / 'empty-docker-config').iterdir()), 'public Docker read config must stay empty') + journal = Journal(CUSTODY, {'proposal': plan['proposal_id'], 'source_revision': args.source_revision, + 'memo_sha256': sha(CASE / 'memo.json'), 'plan_sha256': sha(ROOT / 'execution-plan.json')}) + try: + journal.start(args.phase, approved) # fsynced RUNNING before any phase effect. + if args.phase in ('drill-copy', 'cutover-copy'): + result = copy_snapshot(args.phase, args.source_revision, approved, journal) + elif args.phase == 'offline-verify': + result = offline_verify(journal) + elif args.phase == 'cleanup-offline': + result = cleanup_offline(journal) + else: + result = remote(args.phase, args.source_revision, approved, operation_intent=journal.data['phases'].get('rollback' if args.phase == 'rollback-verify' else 'release') if args.phase in ('verify', 'rollback-verify') else None) + journal.finish(args.phase, result) + print(json.dumps(result)) # Only count/hash/identity receipts, never snapshot bytes. + except BaseException as error: + safe = {'all_checks_pass': False, 'phase': args.phase, 'failure_class': type(error).__name__, + 'failure': 'fixed phase outcome uncertain; original evidence retained; no retry', + 'raw_output_withheld': True} + if journal.data['phases'].get(args.phase, {}).get('state') == 'RUNNING': + journal.finish(args.phase, safe) + print(json.dumps(safe)) + raise SystemExit(1) from None + finally: + journal.close() + + +if __name__ == '__main__': + try: + main() + except Exception: + raise SystemExit('supervised execution refused before phase; raw output withheld') from None diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e new file mode 100644 index 0000000..3ee1ded --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e @@ -0,0 +1,342 @@ +[ + { + "path": "deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "path": "deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "path": "deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "path": "deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e @@ -0,0 +1,96 @@ +{ + "proposal_id": "INFD-WP-0009-T05/zlib-85091-r1", + "task_id": "INFD-WP-0009-T05", + "risk_record": "INFD-RISK-20261011-ZLIB-85091", + "state": "actual-owner-CI-published-independent-verification-passed-native-unapproved", + "verified_utc": "2026-10-11T09:40:24.469646+00:00", + "source_revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "ci_task": 11534, + "ci_run": 4, + "ci_status": "success", + "reviewed_source_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "all74_source_hashes_match_actual_commit": true, + "published_image_digest": "sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "base_image_digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "registry_config_digest": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "executed_local_daemon_image_id": "sha256:f2e07e3dd839b55afd5d517243a765a26965325e4e6750f508771ad556bd6d01", + "serialization_caveat": "Daemon load reserializes config; all diffIDs/platform/effective config+labels independently equal to registry; neither config nor daemon ID substitutes for registry image digest", + "actual_registry_descriptors_and_layers_verified": true, + "base9layers_unchanged": true, + "overlay_layers": 2, + "fullscan_baseline": { + "MEDIUM": 1, + "id": "CVE-2026-85091" + }, + "fullscan_candidate_allseverity_findings": 0, + "fullscan_no_suppressions": true, + "same_fresh_DB_both_images": true, + "scanner_db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "scanner_db_metadata": { + "Version": 2, + "NextUpdate": "2026-10-11T18:59:50.889010572Z", + "UpdatedAt": "2026-10-10T18:59:50.889010923Z", + "DownloadedAt": "2026-10-10T23:32:32.380033131Z" + }, + "scanner_caveat": "Alpine3.24 absent EOL list warning; actual38OS+6Python detectors ran. Zero means this verified DB snapshot, not unknown-future assurance or estate risk grade.", + "sbom_count": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "final_changed_files": [ + "lib/apk/db/installed", + "usr/lib/libz.so.1.3.2" + ], + "directory_count": 313, + "directory_metadata_delta": {}, + "app_files_identical": 36, + "installed_UID": 10001, + "installed_GID": 10001, + "policy_sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62", + "policy_mode": "0o644", + "policy_UID": 0, + "candidate_image_executed": true, + "public_registry_layer_readback": true, + "native_provider_test": false, + "installed_purpose_variants": 10, + "purpose_forms_allow": 2, + "purpose_forms_refuse": 8, + "runtime_readonly_networknone": true, + "native_workload_or_database_or_snapshot_or_credentials_accessed": false, + "native_rollout": false, + "founder_release_approval": false, + "risk_followthrough": "T05 remains active; manual review due2026-10-18, no controller or estate risk grade. Actual native installation/fresh scoped founder decision still required before closure.", + "verification_refinement": "First run used registry config as daemon handle and refused before candidate execution125. Corrected by independently proving loaded daemon ID semantics+diffIDs exact, then executed. Not actual image failure.", + "evidence_sha256": { + "artifact-comparison.json": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "base-image-config.json": "4ad7249c75fd9fc039ceb186772419e1cba5fd9759c404556459c80a2d285d10", + "base-image-manifest.json": "978c575d3c7bf0de39dbe4e9567c39cd36f70b7e55bc17357bdb03fb3b96b0fb", + "base-runtime.json": "20aabb9f4846ab4fa6e28e0763d153188da151ee32293366a51b0fdf872a4d24", + "base-sbom.cdx.json": "dd7d64c9571391acd4d1f86c6026a1b094abab4ee56e5a9f799ec2fd3c7d915a", + "base-sbom.cdx.json.log": "8ab4473a5f74b36e82a4095e9c8d6e66d80aec64bd1cebd6c9f6734531869fca", + "base-trivy-full.json": "3e91a3001adb008cec37d9ae3c08342f5d43c8ba0111eee75c63a6a7918808a9", + "base-trivy-full.json.log": "96a48dc39f7d674b4954d5fa98a76645528ec0fe705782fe114e3b4b9d776862", + "candidate-runtime.json": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "ci-publication-observation.json": "ffe6f2508bc9bebbdc85ac63eae5765562efbb8e920cc85b8da30a12ee1e4b17", + "image-config.json": "253ab359013aeb3457d2abe0852bacd33697f973dd32c1b5738800e5dc633f43", + "image-manifest.json": "9ca2abec6a26d9a9f802dfe75efa8bffdc28485e6bcaf525cc9b075df3700194", + "installed-purpose.json": "312312c6f0bd2751401b3bc5bcd30ee6af01ed7cb380f85b863d03b0c7e9d1ad", + "loaded-daemon-image-proof.json": "2e5c043a101d75e4c569adb6bc2f09020679b28ed2ad836c954f7d27101ce719", + "publication-digest.json": "ca2a1dec38db8c5fbbc00ef4f27aa865edbbd4a7ca9dc21b2ba023664c507f38", + "read_public_artifact.py": "eaa31da1ebb2095ea5e1bc7c570311cc4747f0d7f718034dad934351d1920daf", + "registry-proof.json": "3ef52d9e4800fc9bd238072241dc15f13a0260ee3df1e82e6f63e72902749d92", + "run_published_runtime.py": "d9bd33fecd2a98c2381b4ba2dce12b5c3d9a69faa5e350291924fc885f5e775f", + "run_published_scan.py": "2583ab96350412fb3f20b5b05ded0949eb3ee8e5c0e8923a9c2c42d419d36639", + "runtime-comparison.json": "993b80b9285e227a0bdfde4927cd2f053bcc4a58dd9bd1b633ac7a4637d6713c", + "runtime-receipt.json": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "sbom.cdx.json": "4202263059780eae0448328044c1cf68b59758f329ae6bc981d916610527eae3", + "sbom.cdx.json.log": "51873b37a0846ee1a618ea7591d79809dc0f8624f77a03fae7af953bcbd7282f", + "scan-receipt.json": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "source-commit-proof.json": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "trivy-full.json": "2ff68e765b9c65292611d5a969202a7654637168edefcedac5d2c7634009edae", + "trivy-full.json.log": "b3419af860d264449f61986f562491edaead27dfd3638ceabe94b4fe177f4bf1" + } +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785 new file mode 100644 index 0000000..cb3790a --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785 @@ -0,0 +1,617 @@ +[ + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-review.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-review.json", + "sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/mapping.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/mapping.json", + "sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/original-manifest.json", + "sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/observed-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_initial_dispatch.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_initial_dispatch.py", + "sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/published-evidence-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/published-evidence-manifest.json", + "sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/owner-snapshot/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "path": "intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/owner-snapshot/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a" + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349 new file mode 100644 index 0000000..d12207f --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349 @@ -0,0 +1,56 @@ +{ + "review_id": "RPF-REVIEW-20261011-INFD-ZLIB-NATIVE-R1", + "work_record": "RPF-IN-0009", + "role": "railiance-platform technical owner only", + "status": "changes-requested-review-stopped-on-refreeze", + "requested_release_manifest_sha256": "1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2", + "requested_release_paths": 67, + "observed_preserved_manifest_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "observed_preserved_paths": 68, + "original67_snapshot_not_retained_by_this_reviewer": true, + "publication_manifest_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "published29_and_observed68_hashes_match": true, + "findings": [ + { + "id": "dispatch-operation-intent", + "cause": "main calls remote with operation_intent keyword, while signature accepts only phase/revision/approved.", + "effect": "First remote phase TypeError after persisted RUNNING; no native dispatch.", + "required": "Typed payload argument plumbing plus full main/CLI mocked transport regression, not direct native_program fixture only." + }, + { + "id": "copy-backup-identity", + "cause": "remote payload omits snapshot_identity; native copy branch requires exact prior backup receipt.", + "effect": "drill-copy and cutover-copy refuse before protected transfer.", + "required": "Pass validated exact completed prior backup result into both pre/post metadata requests; linked phase proof regression." + }, + { + "id": "fresh-scan-artifact-and-coverage", + "cause": "fresh_scan accepts incomplete Results=[{}] without artifact type/config/diffID/source/inventory identity.", + "effect": "Zero claim can reference unrelated/incomplete report despite receipt label. Existing age/DBNextUpdate checks are sound but insufficient.", + "required": "Bind full report to verified immutable f558 artifact exact source/config/diffIDs and full44 inventory with38OS/6Python coverage; wrong/empty/truncated artifact reports refuse release and closure." + }, + { + "id": "concurrent-source-freeze", + "cause": "Requested frozen67 became68 before archival checkpoint.", + "effect": "No exact67 completion agreement possible.", + "required": "New separately immutable refined stage and exact independent review; preserve observed history and do not relabel initial revision accepted." + } + ], + "independent_synthetic_probes": { + "operation_keyword_rejected_before_transport": true, + "copy_payload_missing_snapshot_identity": true, + "payload_missing_operation_intent": true, + "incomplete_unbound_zero_report_accepted": true + }, + "history": "Full observed68 bytes+manifest/map archived; prior approved purpose helpers/journals untouched. New completed IN9 staged before entry; no IN8 scope stretch/Product ADHOC creation.", + "scope_limits": { + "technical_agreement": false, + "native_actions": false, + "private_database_access": false, + "credentials_read": false, + "owner_source_write": false, + "push": false, + "native_founder_approval": false, + "T05_complete": false + } +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461 new file mode 100644 index 0000000..3c6572c --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461 @@ -0,0 +1,362 @@ +"""One fixed supervised phase; never run this during source preparation.""" +import argparse +import hashlib +import json +import os +from pathlib import Path +import re +import selectors +import stat +import subprocess +import sys +import time + +if sys.flags.optimize: + raise SystemExit('optimized interpreter refused') + +PHASES = ('drill-backup', 'drill-copy', 'offline-verify', 'cleanup-offline', + 'cutover-backup', 'cutover-copy', 'release', 'verify', 'rollback', 'rollback-verify') + + +def require(value, reason): + if not value: + raise ValueError(reason) + + +def sha(path): + digest = hashlib.sha256() + with Path(path).open('rb') as stream: + for block in iter(lambda: stream.read(1024**2), b''): + digest.update(block) + return digest.hexdigest() + + +def private(path, directory=False): + info = Path(path).lstat() + require((stat.S_ISDIR(info.st_mode) if directory else stat.S_ISREG(info.st_mode)) + and info.st_uid == os.getuid() and stat.S_IMODE(info.st_mode) == (0o700 if directory else 0o600) + and (directory or info.st_nlink == 1), 'private owned custody required') + +ROOT = Path(__file__).resolve().parent +CASE = ROOT.parent +OWNER = Path('/home/worsch/informed-decision') +CUSTODIAN = Path('/home/worsch/the-custodian') +CUSTODY = CUSTODIAN / '.private-backups/20261011-infd-zlib-r1' +SOCKET = 'unix:///var/run/docker.sock' +IMAGE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' +VOLUME = 'infd-zlib-r1-restore-20261011' +MAX_BYTES = 512 * 1024**2 + + +def run(argv, body=None, timeout=90): + return subprocess.run(argv, input=body, text=True, capture_output=True, timeout=timeout) + + +def json_result(result): + try: + value = json.loads(result.stdout) + except (ValueError, TypeError): + raise ValueError('safe phase receipt unavailable; outcome uncertain') from None + require(result.returncode == 0 and isinstance(value, dict) and value.get('all_checks_pass') is True, + 'phase did not verify complete; raw output withheld; no retry') + permitted = {'phase', 'all_checks_pass', 'raw_output_withheld', 'native_approval_verified_by_root', + 'native_authenticated_grant', 'source_readonly_baseline', 'snapshot_readonly', + 'snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'native_parent_private', + 'native_uid', 'pod_name', 'pod_uid', 'live_readonly_schema_integrity_counts', + 'live_counts_may_include_concurrent_commits', 'operation_requested', 'source_revision', + 'resources', 'prune', 'rollout_verified', 'latest_live_database_retained', + 'client_diff_sha256', 'native_rollout_verified', 'current_schema5_database_retained', + 'private_copy_verified', 'installed_purpose_checks', 'policy_sha256', + 'policy_mode', 'policy_uid', 'installed_zlib_files', 'zlib_package', 'health_statuses', 'native_provider_probe', 'recovery_verification'} + require(set(value) <= permitted, 'unexpected output fields withheld') + from receipt_safety import counts + for name in ('source_readonly_baseline', 'snapshot_readonly', 'live_readonly_schema_integrity_counts'): + if name in value: + counts(value[name]) + for name in ('snapshot_sha256', 'client_diff_sha256'): + if name in value: + require(re.fullmatch(r'[a-f0-9]{64}', value[name]) is not None, 'invalid output digest withheld') + if 'snapshot_bytes' in value: + require(type(value['snapshot_bytes']) is int and 0 < value['snapshot_bytes'] <= MAX_BYTES, + 'invalid output size withheld') + if 'snapshot_file' in value: + require(value['snapshot_file'] in ('drill.sqlite', 'cutover.sqlite'), 'invalid output file withheld') + return value + + +def docker(argv, body=None, timeout=120): + return run(['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET] + argv, + body=body, timeout=timeout) + + +def remote(phase, revision, approved, snapshot_identity=None, operation_intent=None): + # Fixed module imported only after main verifies every executor source hash. + from native_program import PROGRAM + payload = {'snapshot_identity': snapshot_identity, 'operation_intent': operation_intent, 'phase': phase, 'source_revision': revision, 'approval': approved, + 'sealed': json.loads((CASE / 'sealed-live-deployment.json').read_text()), + 'dependencies': json.loads((CASE / 'sealed-native-dependencies.json').read_text()), + 'candidate': json.loads((CASE / 'candidate-deployment.json').read_text()), + 'rollback': json.loads((CASE / 'rollback-deployment.json').read_text()), + 'receipt_safety': (ROOT / 'receipt_safety.py').read_text(), + 'purpose_checks': (CASE / 'check_installed.py').read_text(), + 'installed_zlib': json.loads((CASE / 'installed-zlib-proof.json').read_text()), 'readonly': (CASE / 'sqlite_readonly.py').read_text()} + script = PROGRAM.replace('__PAYLOAD__', repr(json.dumps(payload))).replace( + '__GUARD__', repr((CASE / 'change_guard.py').read_text())) + return json_result(run(['ssh', 'railiance01', 'python3 -'], script, timeout=200)) + + +def copy_snapshot(phase, revision, approved, journal): + backup_phase = 'drill-backup' if phase == 'drill-copy' else 'cutover-backup' + prior = journal.data['phases'][backup_phase]['result'] + metadata = remote(phase, revision, approved, snapshot_identity=prior) + for key in ('snapshot_sha256', 'snapshot_bytes', 'snapshot_file', 'snapshot_readonly'): + require(metadata[key] == prior[key], 'closed frozen snapshot changed') + name = metadata['snapshot_file'] + require(name in ('drill.sqlite', 'cutover.sqlite') and 0 < metadata['snapshot_bytes'] <= MAX_BYTES, + 'fixed bounded snapshot required') + pod = metadata['pod_name'] + require(re.fullmatch(r'[a-z0-9]([-a-z0-9]*[a-z0-9])?', pod) is not None, 'fixed owner pod name required') + local = CUSTODY / name + fd = os.open(local, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW, 0o600) + # Binary snapshot stdout goes only to a private file, never tool/chat/log output. + # Snapshot schema/count metadata was validated before opening this destination. + with os.fdopen(fd, 'wb') as destination: + command = ('kubectl exec -n informed-decision ' + pod + + ' -c informed-decision -- cat /data/private/zlib85091-r1/' + name) + transfer = subprocess.Popen(['ssh', 'railiance01', command], stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL) + selector = selectors.DefaultSelector() + selector.register(transfer.stdout, selectors.EVENT_READ) + deadline = time.monotonic() + 150 + received = 0 + try: + while True: + remaining = deadline - time.monotonic() + require(remaining > 0 and selector.select(remaining), 'private transfer timed out') + block = os.read(transfer.stdout.fileno(), 1024**2) + if not block: + break + received += len(block) + require(received <= metadata['snapshot_bytes'] and received <= MAX_BYTES, + 'private copy exceeds frozen snapshot size') + destination.write(block) + transfer.wait(timeout=max(1, deadline - time.monotonic())) + finally: + selector.close() + transfer.stdout.close() + if transfer.poll() is None: + transfer.kill() + transfer.wait() + destination.flush() + os.fsync(destination.fileno()) + private(local) + require(transfer.returncode == 0 and local.stat().st_size == metadata['snapshot_bytes'] + and sha(local) == metadata['snapshot_sha256'], 'private copy incomplete/uncertain; retain, no retry') + # Re-read identity/hash after transfer. This is verification, not a write retry. + after = remote(phase, revision, approved, snapshot_identity=prior) + require(after['pod_uid'] == metadata['pod_uid'] and after['snapshot_sha256'] == metadata['snapshot_sha256'], + 'source identity/snapshot changed during transfer') + return {**metadata, 'off_cluster_private_copy_verified': True, 'snapshot_contents_output': False} + + +def offline_verify(journal): + from receipt_safety import counts + snapshot = CUSTODY / 'drill.sqlite' + private(snapshot) + previous = journal.data['phases']['drill-copy']['result'] + require(sha(snapshot) == previous['snapshot_sha256'], 'protected snapshot bytes changed') + identity = docker(['info', '--format', '{{json .Name}}']) + require(identity.returncode == 0 and json.loads(identity.stdout) == 'bnt-lap001', + 'local offline Docker engine identity changed') + listed = docker(['volume', 'ls', '--format', '{{.Name}}']) + require(listed.returncode == 0 and VOLUME not in listed.stdout.splitlines(), + 'disposable volume absence not verified') + nonce = journal.data['phases']['offline-verify']['attempt_id'] + labels = {'informed-decision.case': 'infd-zlib-20261011-r1', + 'informed-decision.use': 'offline-restore-only', 'informed-decision.attempt': nonce} + created = docker(['volume', 'create', '--driver', 'local', '--label', 'informed-decision.case=infd-zlib-20261011-r1', + '--label', 'informed-decision.attempt=' + nonce, + '--label', 'informed-decision.use=offline-restore-only', VOLUME]) + require(created.returncode == 0 and created.stdout.strip() == VOLUME, 'volume creation uncertain; no retry') + inspected = docker(['volume', 'inspect', VOLUME]) + require(inspected.returncode == 0, 'new volume identity unavailable') + volume = json.loads(inspected.stdout) + require(len(volume) == 1 and volume[0]['Name'] == VOLUME and volume[0].get('Labels') == labels + and volume[0].get('Driver') == 'local' and not volume[0].get('Options') + and volume[0].get('Scope') == 'local', 'new isolated volume identity changed') + identity = {key: volume[0][key] for key in ('Name', 'Labels', 'Driver', 'Scope', 'CreatedAt')} + journal.note('offline-verify', 'created_volume_identity', identity) + # One-time UID0/CAP_CHOWN initialization is isolated to the NEW named volume. + # No host/live PVC/config/token mount exists; this detail needs packet review. + initializer = """import hashlib,os,stat,sys +if sys.flags.optimize:raise RuntimeError('optimized interpreter refused') +folder='/restore';expected=EXPECTED +if os.listdir(folder):raise ValueError('new empty private volume required') +os.chmod(folder,0o700) +fd=os.open(folder+'/review.sqlite',os.O_CREAT|os.O_EXCL|os.O_NOFOLLOW|os.O_WRONLY,0o600) +digest=hashlib.sha256();size=0 +with os.fdopen(fd,'wb') as target: + while True: + block=sys.stdin.buffer.read(1024**2) + if not block:break + size+=len(block) + if size>512*1024**2:raise ValueError('private restore size exceeds bound') + target.write(block);digest.update(block) + target.flush();os.fsync(target.fileno()) +if digest.hexdigest()!=expected:raise ValueError('private copied snapshot differs') +os.chown(folder+'/review.sqlite',10001,10001);os.chown(folder,10001,10001) +print('{"all_checks_pass":true,"private_copy_verified":true}') +""".replace('EXPECTED', repr(previous['snapshot_sha256'])) + with snapshot.open('rb') as source: + argv = ['docker', '--config', str(CUSTODY / 'empty-docker-config'), '--host', SOCKET, + 'run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m', + '--user', '0:0', '--cap-drop', 'ALL', '--cap-add', 'CHOWN', + '--security-opt', 'no-new-privileges', '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore', + '--entrypoint', 'python', IMAGE, '-c', initializer] + copied = subprocess.run(argv, stdin=source, text=True, capture_output=True, timeout=150) + json_result(copied) + options = ['run', '--rm', '-i', '--network', 'none', '--read-only', '--cpus', '1', '--memory', '128m', + '--user', '10001:10001', '--cap-drop', 'ALL', '--security-opt', 'no-new-privileges', + '--mount', 'type=volume,src=' + VOLUME + ',dst=/restore'] + readonly = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'], + (CASE / 'sqlite_readonly.py').read_text()) + require(readonly.returncode == 0, 'offline pre-open schema/integrity gate refused; never open Store') + checked = counts(json.loads(readonly.stdout)) + require(checked == previous['snapshot_readonly'], 'frozen snapshot/clone readonly counts differ') + admin = docker(options + ['--entrypoint', 'informed-decision-admin', IMAGE, + 'inspect', '--db', '/restore/review.sqlite']) + require(admin.returncode == 0, 'offline admin result uncertain') + admin_counts = json.loads(admin.stdout) + require(admin_counts == {key: checked[key] for key in ('schema_version', 'lifecycle', 'outbox', 'submissions')}, + 'offline admin changed frozen snapshot counters') + # Admin Store construction must not silently alter schema/integrity/counters. + post = docker(options + ['--entrypoint', 'python', IMAGE, '-', '--db', '/restore/review.sqlite'], + (CASE / 'sqlite_readonly.py').read_text()) + require(post.returncode == 0, 'offline post-admin readonly integrity gate refused') + post_checked = counts(json.loads(post.stdout)) + require(post_checked == checked == previous['snapshot_readonly'], + 'offline admin altered frozen snapshot proof') + private(snapshot) + require(sha(snapshot) == previous['snapshot_sha256'], 'original protected snapshot changed during drill') + return {'all_checks_pass': True, 'offline_volume': VOLUME, 'offline_readonly': checked, + 'offline_post_admin_readonly': post_checked, 'original_snapshot_hash_unchanged': True, + 'created_volume_identity': identity, + 'admin_counts': admin_counts, 'network': 'none', 'runtime_tokens_or_config_mounted': False, + 'service_entrypoint_started': False, 'original_snapshot_retained': True} + + +def cleanup_offline(journal): + inspected = docker(['volume', 'inspect', VOLUME]) + require(inspected.returncode == 0, 'owned disposable volume identity unverified') + value = json.loads(inspected.stdout) + expected = journal.data['phases']['offline-verify']['result']['created_volume_identity'] + require(len(value) == 1 and {key: value[0].get(key) for key in expected} == expected + and not value[0].get('Options'), 'volume ownership/recreation changed') + removed = docker(['volume', 'rm', VOLUME]) + require(removed.returncode == 0 and removed.stdout.strip() == VOLUME + and docker(['volume', 'inspect', VOLUME]).returncode != 0, + 'cleanup outcome ambiguous; do not retry') + return {'all_checks_pass': True, 'only_disposable_offline_volume_removed': VOLUME, + 'native_and_offcluster_original_snapshots_retained': True} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--phase', choices=PHASES, required=True) + parser.add_argument('--root-authority-receipt', type=Path, required=True) + parser.add_argument('--root-native-outcome', type=Path, required=True) + parser.add_argument('--source-revision', required=True) + parser.add_argument('--root-fresh-scan-receipt', type=Path, required=True) + args = parser.parse_args() + require(args.root_authority_receipt == Path('/tmp/security-infd-zlib-root-authority.json') + and args.root_native_outcome == Path('/tmp/security-infd-zlib-native-outcome-latest.json'), + 'fixed supervised receipt paths required') + require(re.fullmatch(r'[0-9a-f]{40}', args.source_revision) is not None, 'exact source commit required') + # Verify all prepared executor/input bytes before reading authority or dispatching. + plan = json.loads((ROOT / 'execution-plan.json').read_text()) + require(plan.get('state') == 'prepared-unapproved' and plan.get('published_artifact_verified') is True, 'unfrozen proposal cannot execute') + require(set(plan['executor_files']) == {'actuator.py', 'authority_journal.py', 'native_program.py', 'receipt_safety.py'}, + 'fixed executor sources required') + require(set(plan['owner_source_files']) == {'deploy/lifecycle/admission.candidate.json', + 'deploy/lifecycle/service.candidate.json', + 'deploy/lifecycle/kustomization.yaml', + 'deploy/lifecycle/registries.candidate.json'}, + 'fixed owner image sources required') + for relative, digest in plan['executor_files'].items(): + target = ROOT / relative + require(not target.is_symlink() and sha(target) == digest, 'executor source bytes changed') + for relative, digest in plan['case_files'].items(): + require(not Path(relative).is_absolute() and '..' not in Path(relative).parts, + 'case source path escaped') + target = CASE / relative + require(not target.is_symlink() and sha(target) == digest, 'case source bytes changed') + for relative, digest in plan['owner_source_files'].items(): + target = OWNER / relative + require(not target.is_symlink() and sha(target) == digest, 'owner image-only source changed') + committed = subprocess.run(['git', '-C', str(OWNER), 'show', args.source_revision + ':' + relative], + capture_output=True) + require(committed.returncode == 0 and hashlib.sha256(committed.stdout).hexdigest() == digest, + 'committed owner render source differs from approved inputs') + head = run(['git', '-C', str(OWNER), 'rev-parse', 'HEAD']) + require(head.returncode == 0 and head.stdout.strip() == args.source_revision, 'owner source HEAD differs') + from authority_journal import Journal, authority, fresh_scan + private(args.root_authority_receipt) + private(args.root_native_outcome) + receipt = json.loads(args.root_authority_receipt.read_text()) + require(receipt.get('native_outcome_sha256') == sha(args.root_native_outcome), 'native outcome bytes changed') + require(receipt.get('executor_plan_sha256') == sha(ROOT / 'execution-plan.json'), + 'root verified executor plan differs') + approved = authority(receipt, json.loads(args.root_native_outcome.read_text()), sha(CASE / 'memo.json'), + args.source_revision, args.phase) + if args.phase in ('release', 'verify'): + require(args.root_fresh_scan_receipt == Path('/tmp/security-infd-zlib-fresh-scan-receipt.json'), 'fixed fresh scan receipt path required') + private(args.root_fresh_scan_receipt) + scan_receipt=json.loads(args.root_fresh_scan_receipt.read_text()) + report_path=Path('/tmp/security-infd-zlib-fresh-scan-full.json');private(report_path) + require(sha(report_path)==scan_receipt.get('full_report_sha256'), 'fresh scan report bytes changed') + fresh_scan(scan_receipt,json.loads(report_path.read_text()),json.loads((CASE/'fresh-scan-contract.json').read_text())) + parent = CUSTODY.parent + private(parent, directory=True) + ignored = run(['git', '-C', str(CUSTODIAN), 'check-ignore', '--no-index', str(CUSTODY / 'drill.sqlite')]) + require(ignored.returncode == 0, 'offcluster custody is not ignored') + if not CUSTODY.exists(): + require(args.phase == 'drill-backup', 'first approved phase must create unique private custody') + os.mkdir(CUSTODY, 0o700) + private(CUSTODY, directory=True) + capacity = os.statvfs(CUSTODY) + require(capacity.f_bavail * capacity.f_frsize >= 2 * MAX_BYTES + 16 * 1024**2, + 'independent protected custody headroom insufficient') + os.makedirs(CUSTODY / 'empty-docker-config', mode=0o700, exist_ok=True) + private(CUSTODY / 'empty-docker-config', directory=True) + require(not list((CUSTODY / 'empty-docker-config').iterdir()), 'public Docker read config must stay empty') + journal = Journal(CUSTODY, {'proposal': plan['proposal_id'], 'source_revision': args.source_revision, + 'memo_sha256': sha(CASE / 'memo.json'), 'plan_sha256': sha(ROOT / 'execution-plan.json')}) + try: + journal.start(args.phase, approved) # fsynced RUNNING before any phase effect. + if args.phase in ('drill-copy', 'cutover-copy'): + result = copy_snapshot(args.phase, args.source_revision, approved, journal) + elif args.phase == 'offline-verify': + result = offline_verify(journal) + elif args.phase == 'cleanup-offline': + result = cleanup_offline(journal) + else: + result = remote(args.phase, args.source_revision, approved, operation_intent=journal.data['phases'].get('rollback' if args.phase == 'rollback-verify' else 'release') if args.phase in ('verify', 'rollback-verify') else None) + journal.finish(args.phase, result) + print(json.dumps(result)) # Only count/hash/identity receipts, never snapshot bytes. + except BaseException as error: + safe = {'all_checks_pass': False, 'phase': args.phase, 'failure_class': type(error).__name__, + 'failure': 'fixed phase outcome uncertain; original evidence retained; no retry', + 'raw_output_withheld': True} + if journal.data['phases'].get(args.phase, {}).get('state') == 'RUNNING': + journal.finish(args.phase, safe) + print(json.dumps(safe)) + raise SystemExit(1) from None + finally: + journal.close() + + +if __name__ == '__main__': + try: + main() + except Exception: + raise SystemExit('supervised execution refused before phase; raw output withheld') from None diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d new file mode 100644 index 0000000..7c38280 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d @@ -0,0 +1,106 @@ +{ + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact zlib85091 fixed image-only release, new protected backup/restore compatibility drill and database-preserving rollback?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Published owner CI image f558 has zero full-scan findings across44packages; only zlib1.3.2-r0 to r1 changes. Fresh schema5 private backup/isolated clone drill and cutover snapshot precede one Deployment manual prune=false Recreate sync. Separate founder go required; old T04 acceptance/history unchanged. Rollback image763c/Applicationc96 retains latestDB. Release reserves30minutes before Oct12 deadline.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Founder review" + }, + "target": { + "kind": "environment", + "id": "realm:kubernetes/railiance01/informed-decision", + "label": "Informed Decision zlib85091 image-only remediation on railiance01", + "environment": "production" + }, + "terms": "Approve only INFD-WP-0009-T05/zlib85091-r1 trialinfd-zlib-20261011-r1 and exact attached digests: new private drillbackup/copy, isolatedschema5pre/admin/postintegrityandcounts, exactcreatedclonecleanup, freshcutoverbackup/copy, manualfinalsourceDeployment-onlyimagef558/prune=false. ImmutableCM/PVC/config/credentials/audience/resources sealed. Freshrootnativeauthenticated confirmed founderACCEPTsource1 beforeeveryphase; receiptsarebookkeeping/noautonomousgrant. Rollbackonlyimage763c/Applicationc96 preserveslatestDB, separateverification. AllphasesbeginbeforeOct12 23:59:59Z; releasereserves30minutes; newdecisionbeyond. ExistingT04UNCERTAINEvidenceunaltered, nooldhelperamendment/phase retry, noresidualpromotion ordoctrinechange." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "item_id": "rollback-preflight-json", + "label": "rollback-preflight.json", + "hash": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "item_id": "published-verification-json", + "label": "published-verification.json", + "hash": "sha256:dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "item_id": "artifact-comparison-json", + "label": "artifact-comparison.json", + "hash": "sha256:a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "item_id": "installed-zlib-proof-json", + "label": "installed-zlib-proof.json", + "hash": "sha256:6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "item_id": "sealed-live-deployment-json", + "label": "sealed-live-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "sealed-native-dependencies-json", + "label": "sealed-native-dependencies.json", + "hash": "sha256:042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "item_id": "candidate-deployment-json", + "label": "candidate-deployment.json", + "hash": "sha256:487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "item_id": "rollback-deployment-json", + "label": "rollback-deployment.json", + "hash": "sha256:f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "item_id": "execution-bundle-json", + "label": "execution-bundle.json", + "hash": "sha256:2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + } + ], + "highlights": [ + { + "id": "protected-drill-and-recreate", + "item_id": "decision-packet-md", + "note": "This new T05 decision authorizes protected real-data backup/copy and no-network same-schema restore drill plus brief Recreate image release. Scan0 is actual published44package result, not installed acceptance. Rollback preserves latestDB; priorfailedT04evidence retained. No oldapprovalreuse. Allphase starts expireOct12; release reserves30minutesforrecovery; noautomaticextension.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Requested decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e new file mode 100644 index 0000000..73657f4 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e @@ -0,0 +1,14 @@ +{ + "kind": "source-only-native-authoring-packet", + "memo_id": "infd-20261011-zlib-remediation-r1", + "source_memo_version": 1, + "memo_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "intake_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "lifecycle_commands_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "register_bytes": 193685, + "document_count": 13, + "documents_hashes_verified": true, + "execution_bundle_lossless_verified": true, + "native_submitted": false, + "founder_approval": false +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29 new file mode 100644 index 0000000..ee40b50 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29 @@ -0,0 +1,1003 @@ +[ + { + "repo": "informed-decision", + "path": "deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/deploy/lifecycle/admission.candidate.json", + "original_sha256": "92382a56b349c3b895e5806e975082527bb99d1a001140e69d857e5b0391fa55", + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/deploy/lifecycle/service.candidate.json", + "original_sha256": "38b78b9cbee5ade7750a58d5156ca4c5773352e947acb304ee714b59e749ceb4", + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": null, + "staged_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": null, + "staged_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "original_sha256": null, + "staged_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "original_sha256": null, + "staged_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "original_sha256": null, + "staged_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "original_sha256": null, + "staged_sha256": "b511ecca1f21626495ae07725f5761e251d3d4beca9e3be6e7cdfdfbfe2073bc" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": null, + "staged_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "original_sha256": null, + "staged_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "original_sha256": null, + "staged_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": null, + "staged_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": null, + "staged_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": null, + "staged_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": null, + "staged_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": null, + "staged_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": null, + "staged_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "original_sha256": null, + "staged_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "original_sha256": null, + "staged_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": null, + "staged_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "repo": "informed-decision", + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "staged_path": "/tmp/infd-zlib-release-refined-stage/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "af785afbf188184b72563c10813663d44117df7cb7394ecb1b9a25cbdfea67a4", + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + } +] diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35 new file mode 100644 index 0000000..5c0ac3a --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35 @@ -0,0 +1,21 @@ +# T05 zlib85091 release — preliminary, unapproved + +This is a distinct proposal/trial for existing INFD-WP-0009-T05. The actual T04 source2 acceptance does not authorize it. Previous R1 copy and R2 verify UNCERTAIN journal states remain untouched. INFD-IN-0010 remains an unpromoted general verifier residual; this new task-specific verifier is a prerequisite of active T05, not an amendment of the old approved helper. + +Exact intended image f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23 was built by admitted owner CI11534/run4 from 9b4bb25d325698ae543e7e8a8a3c3592db1f58fc. Publication is not installed acceptance. Final packet requires independent published-image scan/runtime/filesystem/source proof and fresh read-only native projection/one-object dry-run evidence. Until all final inputs and independent owner acknowledgments are frozen, execution-plan state remains preliminary and the actuator refuses before any authority, journal or native action. + +After a NEW exact confirmed founder acceptance, root freshly authenticates fixed-origin native source-version1 outcomes before each phase. Receipt files are supervised bookkeeping, not signed grants or autonomy. Wrong task, source, memo/version, stale/pending/agent disposition, old T04 acceptance or changed inputs refuse. Root retains exact approved source revision/digests and action results in supervision. Approval does not promote any agent. + +Fixed phase order: drill-backup → drill-copy → offline-verify → cleanup-offline → cutover-backup → cutover-copy → release → verify. New private native /data/private/zlib85091-r1, root .private-backups/20261011-infd-zlib-r1 and local volume infd-zlib-r1-restore-20261011 are distinct from all T04 custody. New private journal intent is fsynced RUNNING before dispatch; no attempted phase replay. Fixed output schema contains only counts, hashes, object identity and boolean results; raw errors and private content are withheld. Existing native snapshots/database/sidecars are never removed or restored over current data. + +Fresh backup inspection uses copied explicit-close SQLite helpers: live and offline clone readers are mode=ro/query_only and WAL-aware, before any Store/admin open. Immutable reader is used only for freshly closed hash-bound private snapshot with absent/zero WAL frames and stable identity/metadata/digest before/after read/copy. Main and sidecars remain retained. Schema must equal5, integrity ok, and exact snapshot/isolated clone counts match before/admin/after. The detached local clone has network none, readonly root, no service/runtime config/credential mounts; only narrowly scoped UID0 CAP_CHOWN initializer precedes UID10001 reads/admin. Original private copy is hash-stable. Cleanup removes only the disposable volume whose nonce/labels/creation metadata match this trial, before cutover. + +Each snapshot is bounded512MiB. At most two new snapshots occupy each native/offcluster custody (1GiB payload each); the disposable offcluster clone adds512MiB while present, plus16MiB sidecar/metadata reserve. New native drill phase checks free space for both; local custody checks two snapshot bounds plus reserve. Existing T04 retention consumes additional pre-existing space. EUR0 recurring infrastructure estimate; human/compute time unpriced. + +Cutover takes a fresh native backup and exact offcluster copy. Release then requires latest schema5 readonly proof, sealed Pod/Deployment/config/PVC custody and same baseline image763c/current Application sourcec96, a healthy single target92.205.62.239 node and fresh requested CPU ≤ allocatable capacity. Recreate and resources remain unchanged. Server dry-run/client diff must show only the image. Application UID/resourceVersion/source CAS dispatches manual exact final revision, initiatedBy custodian-codex, explicit prune=false and only apps/Deployment informed-decision in its namespace. No whole-Application sync, namespace/config/credential/resource change or pruning. + +Verification reads imageID/readiness/owner chain/exact configured Pod fields, schema5/integrity/metadata counts, installed policy hash and synthetic purpose refusals, health200, installed fixed zlib and exact image proof. Real PDP-gated lifecycle readback is a separate root authenticated observation and not replaced by synthetic checks. Argo3.5.3 omits false prune in operation status: missing or exactfalse is accepted only together with this journal's COMPLETE explicitfalse request, exact source/resources/initiation, operation start after our durable attempt, bounded finish and one Synced Deployment result. True/null/string/prior/foreign/extra-resource results refuse. + +Rollback → rollback-verify is separate and permitted only after a recorded release attempt. It switches only Application source back to c96 and Deployment image763c; it never restores an old snapshot over the latest database. Recovery dispatch works even if candidate Pod is absent/unready and never depends on candidate DB inspection. Recovery verification separately requires Ready1/old image/current schema5/data-custody and exact recorded scoped completion. All phases must begin before2026-10-12T23:59:59Z; release must begin at least30minutes earlier. Beyond expiry stop and obtain a new founder decision; no automatic extension or emergency grant. A failed/uncertain attempt requires informed recovery rather than retry. + +T05 remains progress until actual installed acceptance and native rescan prove the finding absent. No Risk Engine grade is assigned. Only then may owner close T05/risk and consider finishing WP9, with existing residuals live first. diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e @@ -0,0 +1,286 @@ +{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "annotations": { + "argocd.argoproj.io/tracking-id": "informed-decision:apps/Deployment:informed-decision/informed-decision", + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover" + }, + "name": "informed-decision", + "namespace": "informed-decision", + "uid": "a588e10a-90d2-4883-975e-6dd8b8feca92" + }, + "spec": { + "progressDeadlineSeconds": 600, + "replicas": 1, + "revisionHistoryLimit": 10, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "strategy": { + "type": "Recreate" + }, + "template": { + "metadata": { + "annotations": { + "informed-decision.coulomb.social/admission": "approved; INFD-WP-0007 cutover" + }, + "labels": { + "app.kubernetes.io/component": "review", + "app.kubernetes.io/name": "informed-decision" + } + }, + "spec": { + "automountServiceAccountToken": false, + "containers": [ + { + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "name": "informed-decision", + "ports": [ + { + "containerPort": 8080, + "name": "http", + "protocol": "TCP" + }, + { + "containerPort": 8081, + "name": "workload", + "protocol": "TCP" + } + ], + "readinessProbe": { + "failureThreshold": 3, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "256Mi" + }, + "requests": { + "cpu": "5m", + "memory": "64Mi" + } + }, + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + }, + "readOnlyRootFilesystem": true + }, + "startupProbe": { + "failureThreshold": 12, + "httpGet": { + "path": "/healthz", + "port": "http", + "scheme": "HTTP" + }, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 2 + }, + "terminationMessagePath": "/dev/termination-log", + "terminationMessagePolicy": "File", + "volumeMounts": [ + { + "mountPath": "/data", + "name": "data" + }, + { + "mountPath": "/run/informed-decision", + "name": "runtime" + }, + { + "mountPath": "/tmp", + "name": "tmp" + }, + { + "mountPath": "/configuration", + "name": "configuration", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/policy", + "name": "caller", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/audit", + "name": "audit", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "name": "kubernetes-api", + "readOnly": true + }, + { + "mountPath": "/workload-registry", + "name": "workload-registry", + "readOnly": true + }, + { + "mountPath": "/var/run/secrets/informed-decision/requester", + "name": "sitting-requester", + "readOnly": true + } + ] + } + ], + "dnsPolicy": "ClusterFirst", + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "securityContext": { + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "runAsGroup": 10001, + "runAsNonRoot": true, + "runAsUser": 10001, + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "serviceAccount": "review", + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + }, + "name": "runtime" + }, + { + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + }, + "name": "tmp" + }, + { + "configMap": { + "defaultMode": 292, + "name": "informed-decision-runtime-6c221878d051" + }, + "name": "configuration" + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "audience": "flex-auth", + "expirationSeconds": 3600, + "path": "token" + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ], + "secretName": "informed-decision-audit" + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "expirationSeconds": 600, + "path": "token" + } + }, + { + "configMap": { + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ], + "name": "kube-root-ca.crt" + } + } + ] + } + }, + { + "configMap": { + "defaultMode": 292, + "name": "informed-decision-workload-registry" + }, + "name": "workload-registry" + }, + { + "name": "sitting-requester", + "secret": { + "defaultMode": 288, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ], + "optional": false, + "secretName": "informed-decision-sitting-requester" + } + } + ] + } + } + } +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a new file mode 100644 index 0000000..2fb1d2e --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a @@ -0,0 +1,57 @@ +{ + "review_id": "RPF-REVIEW-20261011-INFD-ZLIB-NATIVE-R3", + "work_record": "RPF-IN-0009", + "role": "railiance-platform technical owner only", + "status": "changes-requested-actual-provider-api-compatibility", + "release_manifest_sha256": "3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec", + "release_paths": 481, + "all481_hashes_and_plan_bindings_verified": true, + "synthetic_tests_passed": 36, + "additional_synthetic_public_checks_passed": 12, + "prior_blockers_fixed": [ + "source dispatch and exact snapshot/intent payloads", + "full immutable artifact scan coverage/freshness", + "ephemeral Pod refusal before effects", + "freeform output filtering", + "explicit bounded proposed manual outage recovery" + ], + "remaining_required_refinement": [ + { + "id": "actual-provider-contract", + "source": "post-ready-native-outcomes-command.py", + "cause": "safe_outcome_metadata requires topmemo_id which actual outcomes neverreturns; actual provider also supports reviewNone/intake not_submitted and optional/state prepared/in_flight/comment fields not covered by fixture.", + "effect": "Actual successful postReady authenticated PDP path may be refused; synthetic metadata tests cannot establish native API compatibility.", + "required": "Fixed request memo/version/origin plus exactHTTP200 correlation and bounded real shape/count-only receipt; avoid detailed disposition state/actor/private data exports and do not infer authority from preservation proof. Exercise owner actualoutcomes-shaped fixture including absent topmemo_id and optionalrows/state, private sentinels withheld." + } + ], + "primary_owner_source_inspection": [ + { + "path": "/home/worsch/informed-decision/informed_decision/lifecycle_review.py", + "sha256": "b6d69be6c56f3e2f411501083e199195190df6c740a01b07e82a476268ca3629" + }, + { + "path": "/home/worsch/informed-decision/informed_decision/lifecycle_service.py", + "sha256": "2dde9280214e68e5e7a7b48d703886947c2a46139ada86e8ff2283a9d4b55a70" + } + ], + "actual_source_semantics": [ + "lifecycle_review.outcomes returns only review/dispositions (lines119,123,133), with optionalreviewNone/not_submitted.", + "lifecycle_service.outcomes calls _authorize for outcomes then current() after query; normal HTTP200 under that fixed current path is distinct PDP-gated preservation evidence, not founder disposition or advisory verdict." + ], + "history": { + "prior123_fullsnapshot_and_manifest_map_preserved": true, + "prior_manifest_sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f", + "unissued_draft_path": "unissued-final-technical-draft.json", + "unissued_draft_never_returned_as_ack": true, + "original67_snapshot_absence_retained": true + }, + "scope_limits": { + "technical_ack": false, + "native_action": false, + "provider_requests": false, + "database_access": false, + "owner_writes": false, + "human_approval": false, + "T05_complete": false + } +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20 b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20 new file mode 100644 index 0000000..04cb285 --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-9d0ff679/files/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20 @@ -0,0 +1,2 @@ +"""Fixed T05 remote script; source preparation never dispatches it.""" +PROGRAM = '\nimport copy,datetime,hashlib,json,os,re,subprocess,sys\nif sys.flags.optimize:raise RuntimeError(\'optimized interpreter refused\')\npayload=json.loads(__PAYLOAD__)\nexec(__GUARD__)\nphase=payload[\'phase\']\nif phase not in (\'drill-backup\',\'cutover-backup\',\'drill-copy\',\'cutover-copy\',\'release\',\'verify\',\'rollback\',\'rollback-verify\'):raise ValueError(\'fixed native phase required\')\ndeadline=datetime.datetime.fromisoformat(\'2026-10-12T23:59:59+00:00\')\ndef require(value,reason):\n if not value:raise ValueError(reason)\nrequire(datetime.datetime.now(datetime.timezone.utc)0 and size<=512*1024**2 and free>=size*(2 if action==\'drill-backup\' else 1)+16*1024**2,\'bounded native snapshot capacity required\')\n if action==\'drill-backup\':\n require(not os.path.lexists(folder),\'native case directory must be unique\')\n os.mkdir(folder,0o700);os.chmod(folder,0o700)\n private(folder,True)\n filename=\'drill.sqlite\' if action==\'drill-backup\' else \'cutover.sqlite\';output=folder+\'/\'+filename\n require(not os.path.lexists(output),\'snapshot output must be unique\')\n admin=subprocess.run([\'informed-decision-admin\',\'backup\',\'--db\',db,\'--output\',output],capture_output=True,text=True,timeout=120)\n require(admin.returncode==0 and json.loads(admin.stdout)=={\'status\':\'backed_up\',\'consistent_snapshot\':True},\'backup completion not verified; do not retry\')\n private(output)\n for suffix in (\'-wal\',):\n require(not os.path.exists(output+suffix) or os.stat(output+suffix).st_size==0,\'snapshot has WAL frames; immutable read refused\')\n digest=hashlib.sha256()\n with open(output,\'rb\') as stream:\n for block in iter(lambda:stream.read(1024**2),b\'\'):digest.update(block)\n frozen_digest=digest.hexdigest()\n snapshot=counts(inspect_closed_snapshot(output,frozen_digest))\n size=os.stat(output).st_size;require(0763/c96 Deployment-only latest schema5 DB retaining manual supervised recovery.", + "bound": "<=30minutes after actual release and before2026-10-12T23:59:59Z, checked again immediately beforepatch.", + "evidence": "Independentroot-confirmed exact native accepted receipt cached before release, privateimmutablehash/journal/attempt pins; fresh transport-unavailable or502/503/504 and actualfailedcandidateplacement.", + "forbidden": [ + "backup/release fallback", + "401/403", + "explicitrevoked", + "conflict", + "identity/scope mismatch", + "healthy candidate", + "foreign trial or futurecustomer reuse" + ], + "revocation_limitation_disclosed": true, + "current_revocation_verified_during_outage": false, + "autonomous_or_signed_grant": false, + "recovered_verify": "Separate COMPLETE rollback/original outageanchor and actual763Ready1/data/custody/current operation; never implies PDP acceptance or taskclosure." + }, + "history": { + "prior_review_manifest_sha256": "9d0ff679c63c58465b940ed72a258b8f9a12f413da97aad01ec7e311db55a445", + "exact130_files_plus_manifest_losslessly_preserved": true, + "dedup_distinct_blobs": 82, + "path_map_entries": 130, + "archive": "changes-requested-9d0ff679", + "prior_unissued_draft_remains_explicitly_superseded": true, + "original67_fullsnapshot_absence_not_fabricated": true + }, + "remaining_gates": [ + "Attach exact two owner ACKs and proposed checklist row19 only; confirm narrow final packet rebinding before human post.", + "Commit prepared source and retain exact actual revision/fourblob proof; NEW founder confirmed disposition for full proposal including bounded outage exception.", + "Fresh exact source/native custody/admission/headroom/current authority before each applicable phase; actual current immutable artifact fullscan/DB freshness before release and verify.", + "Actual native installed/schema/health/current canonical PDP preservation proof before T05/risk closure; preparation and synthetic tests do not establish completion." + ], + "scope_limits": { + "human_approval": false, + "native_action": false, + "backup_restore_database_access": false, + "credentials_read": false, + "owner_source_write": false, + "push": false, + "T05_complete": false, + "risk_closed": false, + "other_owner_role": false + } +} diff --git a/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/postcontract-validation.json b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/postcontract-validation.json new file mode 100644 index 0000000..d44e8ba --- /dev/null +++ b/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/postcontract-validation.json @@ -0,0 +1,13 @@ +{ + "source_manifest_sha256": "767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c", + "source_paths": 509, + "all_source_and_executor_case_hashes_match": true, + "synthetic_test_methods_passed": 38, + "additional_checks_passed": 18, + "actual_owner_source_outcomes_shape_exercised_in_mocked_repository_fixture": true, + "provider_synthetic_private_fields_never_emitted": true, + "all_four_render_hashes_unchanged_from_previous_review": true, + "authority_journal_actuator_native_program_unchanged_from_481": true, + "current_public_scan_matches_exact_full_contract": true, + "native_or_private_database_access": false +} diff --git a/intakes/RPF-IN-0009-infd-zlib-native-release-review.md b/intakes/RPF-IN-0009-infd-zlib-native-release-review.md new file mode 100644 index 0000000..b0398d5 --- /dev/null +++ b/intakes/RPF-IN-0009-infd-zlib-native-release-review.md @@ -0,0 +1,41 @@ +--- +id: RPF-IN-0009 +kind: intake +type: intake +title: "Platform technical review of distinct INFD zlib native release" +repo: railiance-platform +lane: supervised +status: closed +owner: railiance-platform +requested_by: the-custodian +origin: handoff +origin_ref: INFD-WP-0009-T05 +priority: high +created: "2026-10-11" +updated: "2026-10-11" +tags: [security, cross-owner, review] +--- + +New bounded Platform technical review of immutable published zlib artifact and separately proposed image-only native release/drill/cutover/recovery. Distinct from completed RPF-IN-0008 source candidate review and purpose R2 authorization. No native action, private database access, credentials, owner source writes, carried-forward approval or T05 closure. + +## Completed initial changes-requested review + +Initial exact67 manifest1e4 was observed at review start, then shared stage changed to68 manifest81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47 before snapshot preservation. Review stopped rather than treating that as unchanged frozen source. Observed68 bytes and manifest archived;29 published proof6ba2 hashes verified. Remote keyword dispatch and recorded backup snapshot identity are not plumbed; freshscan helper permits unbound incomplete zero reports. Fresh scan age and DBNextUpdate controls exist but artifact and full inventory coverage must be checked. Completed owner workrecord precedes conditional entry. Refinement remains this same review trial; no technical agreement or native approval issued. + +## Completed refined-source changes-requested review + +Same owner preparation trial reviewed immutable143 manifest `f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29`. Original wiring and incomplete scan proof defects fixed; all143 source hashes/plan file bindings verified,25 synthetic methods pass. Independent remote payload/partial scan repro confirms fixes; separate fixture shows unrelated privileged ephemeral container passes current Pod gate. Post-ready freeform output and recovery authority availability require explicit refinement. Exact previous74 owner-review files plus manifest/map archived before supersession. Source-only review is completed before conditional entry; no technical ACK, approval or native evidence inferred. + +Root selected a NEW human-proposal recovery alternative for further source preparation: independently root-confirmed same accepted receipt retained before release may support manual supervised763/c96 Deployment-only latestDB recovery for at most30minutes after release and before deadline, only exact approved custody/journal/source pins and demonstrable transport-unavailable/502/503/504 plus failed candidate placement. No401/403/revoked/invalidsignature/conflict fallback, no backup/release fallback; inability to query later revocation while unavailable must be disclosed. This is proposed scope awaiting exact code review and NEW founder disposition, not existing authority. + +## Completed final exact-source technical review + +Final immutable481 manifest `3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec` reviewed in this same IN9 preparation trial. All481 hashes and plan executor/case pins match;36 synthetic tests and12 additional public-artifact/synthetic checks pass. Ephemeral Pod custody, private metadata filtering, original payload wiring and full fresh scan coverage now refuse challenged defects. Bounded supervised outage recovery is expressly NEW proposed founder consent, not old approval: rollback only failed exactcandidate/source, retained authenticated pre-release exact acceptance,30minutes/globaldeadline/UID/config/PVC/journal/source/image pins, no401/403/revocation/conflict/healthy candidate/backup or release fallback. Later revocation unobservable during outage is disclosed; recovered verification proves separate rollback placement, not provider acceptance/taskclosure. Exact prior123 owner files/manifest/map preserved before entry; original67 historical absence remains honest. Completed workrecord precedes formal source agreement. No native action or new approval inferred. + +## Final481 actual API compatibility finding; no ACK issued + +Before returning any agreement, Product identified actual provider shape incompatibility. Owner source lifecycle_review.outcomes returns only review/dispositions, optional reviewNone/not_submitted and optional submissionstate; lifecycle_service wraps it in current PDP authorization. The staged sanitizer instead requires invented topmemo_id and restrictive inventedstates. Independent read-only owner-source inspection confirms it. Prior unissued draft retained explicitly as superseded, not formal acceptance. Additional source correction must use fixed-request/HTTP200 correlation and bounded shape/count-only proof without detailed freeform dispositions or founder-authority inference. Completed sameIN9 changes-requested workrecord precedes entry. + +## Completed postcontract final source review + +Same completedIN9 preparation trial reviewed immutable509 manifest `767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c`. All509 hashes plus closed executor/case pins match;38 synthetic methods and18 additional public-report/shape/negative checks pass. Actual lifecycle review/dispositions shape now supported without invented identity/state/actor fields. Provider proof emits fixed authenticated request context/status/time/shape/counts only and explicitly never infers approval. Prior130 fullfiles and exact9d0ff679 manifest retained losslessly with content-addressed82blobs and130path map. Source/render/freshscan/recovery guards remain unchanged; no native request/data access/action or approval. This completed anchor precedes formal technical agreement for NEW human proposal; exact final ACK/checklist-only rebinding remains before posting.