From 312ab97e876e17341bf16f9e95397e14c2ac2720 Mon Sep 17 00:00:00 2001 From: tegwick Date: Sun, 11 Oct 2026 12:37:05 +0200 Subject: [PATCH] Prepare owner-reviewed zlib-only native release decision Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade --- deploy/lifecycle/admission.candidate.json | 2 +- deploy/lifecycle/service.candidate.json | 2 +- .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 19 + .../execution-bundle.json | 197 + .../execution/actuator.py | 399 ++ .../execution/authority_journal.py | 233 ++ .../execution/execution-plan.json | 69 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 723 ++++ .../fresh-scan-contract.json | 358 ++ .../fresh-scan-receipt-template.json | 13 + .../fresh-scan-report-fixture.json | 373 ++ .../initial-7ac1d698/archive-map.json | 147 + .../initial-7ac1d698/original-manifest.json | 205 + .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution/actuator.py | 354 ++ .../execution/authority_journal.py | 150 + .../execution/execution-plan.json | 59 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 393 ++ .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/memo.json | 101 + .../native-backup-restore-protocol.md | 21 + .../native-preflight.json | 672 ++++ .../proposal.json | 37 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../initial-81adb9e1/archive-map.json | 342 ++ .../initial-81adb9e1/original-manifest.json | 478 +++ .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution-bundle.json | 54 + .../execution/actuator.py | 362 ++ .../execution/authority_journal.py | 170 + .../execution/execution-plan.json | 62 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 402 ++ .../fresh-scan-receipt-template.json | 13 + .../initial-7ac1d698/archive-map.json | 147 + .../initial-7ac1d698/original-manifest.json | 205 + .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution/actuator.py | 354 ++ .../execution/authority_journal.py | 150 + .../execution/execution-plan.json | 59 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 393 ++ .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/memo.json | 101 + .../native-backup-restore-protocol.md | 21 + .../native-preflight.json | 672 ++++ .../proposal.json | 37 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/intake.json | 191 + .../lifecycle-commands.json | 207 + .../2026-10-11-zlib-image-release/memo.json | 106 + .../native-backup-restore-protocol.md | 23 + .../native-preflight.json | 672 ++++ .../post-ready-native-outcomes-command.py | 20 + .../proposal.json | 39 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../rollback-preflight.json | 672 ++++ .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../submission-proof.json | 13 + ...D-WP-0009-lifecycle-consumer-pin-repair.md | 191 + .../initial-f170b34d/archive-map.json | 860 ++++ .../initial-f170b34d/original-manifest.json | 1003 +++++ .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution-bundle.json | 185 + .../execution/actuator.py | 362 ++ .../execution/authority_journal.py | 188 + .../execution/execution-plan.json | 67 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 519 +++ .../fresh-scan-contract.json | 358 ++ .../fresh-scan-receipt-template.json | 13 + .../fresh-scan-report-fixture.json | 373 ++ .../initial-7ac1d698/archive-map.json | 147 + .../initial-7ac1d698/original-manifest.json | 205 + .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution/actuator.py | 354 ++ .../execution/authority_journal.py | 150 + .../execution/execution-plan.json | 59 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 393 ++ .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/memo.json | 101 + .../native-backup-restore-protocol.md | 21 + .../native-preflight.json | 672 ++++ .../proposal.json | 37 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../initial-81adb9e1/archive-map.json | 342 ++ .../initial-81adb9e1/original-manifest.json | 478 +++ .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution-bundle.json | 54 + .../execution/actuator.py | 362 ++ .../execution/authority_journal.py | 170 + .../execution/execution-plan.json | 62 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 402 ++ .../fresh-scan-receipt-template.json | 13 + .../initial-7ac1d698/archive-map.json | 147 + .../initial-7ac1d698/original-manifest.json | 205 + .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution/actuator.py | 354 ++ .../execution/authority_journal.py | 150 + .../execution/execution-plan.json | 59 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 393 ++ .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/memo.json | 101 + .../native-backup-restore-protocol.md | 21 + .../native-preflight.json | 672 ++++ .../proposal.json | 37 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/intake.json | 191 + .../lifecycle-commands.json | 207 + .../2026-10-11-zlib-image-release/memo.json | 106 + .../native-backup-restore-protocol.md | 23 + .../native-preflight.json | 672 ++++ .../post-ready-native-outcomes-command.py | 20 + .../proposal.json | 39 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../rollback-preflight.json | 672 ++++ .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../submission-proof.json | 13 + ...D-WP-0009-lifecycle-consumer-pin-repair.md | 191 + .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/intake.json | 191 + .../lifecycle-commands.json | 207 + .../2026-10-11-zlib-image-release/memo.json | 106 + .../native-backup-restore-protocol.md | 25 + .../native-preflight-full.json | 672 ++++ .../native-preflight.json | 55 + .../post-ready-native-outcomes-command.py | 20 + .../preparation-failure-history.json | 18 + .../proposal.json | 41 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../rollback-preflight-full.json | 672 ++++ .../rollback-preflight.json | 55 + .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../submission-proof.json | 14 + ...D-WP-0009-lifecycle-consumer-pin-repair.md | 191 + .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/intake.json | 232 ++ .../lifecycle-commands.json | 243 ++ .../2026-10-11-zlib-image-release/memo.json | 132 + .../native-backup-restore-protocol.md | 38 + .../native-preflight-full.json | 672 ++++ .../native-preflight.json | 55 + .../owner-packet-reference-diff.json | 47 + .../owner-platform-final-ack.json | 80 + .../owner-product-final-ack.md | 97 + .../post-ready-native-outcomes-command.py | 56 + .../archive-map.json | 2547 ++++++++++++ .../before-changed/intake.json | 202 + .../before-changed/lifecycle-commands.json | 213 + .../before-changed/memo.json | 117 + .../before-changed/submission-proof.json | 14 + .../original-manifest.json | 3565 +++++++++++++++++ .../precontract-3f1ce7ed/archive-map.json | 2888 +++++++++++++ .../before-changed/decision-packet.md | 16 + .../before-changed/execution-bundle.json | 197 + .../execution/execution-plan.json | 69 + .../execution/test_execution.py | 670 ++++ .../before-changed/intake.json | 202 + .../before-changed/lifecycle-commands.json | 213 + .../before-changed/memo.json | 117 + .../native-backup-restore-protocol.md | 38 + .../post-ready-native-outcomes-command.py | 78 + .../before-changed/proposal.json | 60 + .../before-changed/submission-proof.json | 14 + .../original-manifest.json | 3369 ++++++++++++++++ .../preparation-failure-history.json | 18 + .../proposal.json | 60 + .../published-verification.json | 96 + .../platform143/archive-map.json | 740 ++++ .../platform143/original-manifest.json | 863 ++++ .../changes-requested-60507a10/mapping.json | 372 ++ .../original-manifest.json | 520 +++ .../changes-requested-review.json | 56 + .../observed-81adb9e1/mapping.json | 342 ++ .../observed-81adb9e1/original-manifest.json | 478 +++ .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution-bundle.json | 54 + .../execution/actuator.py | 362 ++ .../execution/authority_journal.py | 170 + .../execution/execution-plan.json | 62 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 402 ++ .../fresh-scan-receipt-template.json | 13 + .../initial-7ac1d698/archive-map.json | 147 + .../initial-7ac1d698/original-manifest.json | 205 + .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution/actuator.py | 354 ++ .../execution/authority_journal.py | 150 + .../execution/execution-plan.json | 59 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 393 ++ .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/memo.json | 101 + .../native-backup-restore-protocol.md | 21 + .../native-preflight.json | 672 ++++ .../proposal.json | 37 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/intake.json | 191 + .../lifecycle-commands.json | 207 + .../2026-10-11-zlib-image-release/memo.json | 106 + .../native-backup-restore-protocol.md | 23 + .../native-preflight.json | 672 ++++ .../post-ready-native-outcomes-command.py | 20 + .../proposal.json | 39 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../rollback-preflight.json | 672 ++++ .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../submission-proof.json | 13 + ...D-WP-0009-lifecycle-consumer-pin-repair.md | 191 + .../probe_initial_dispatch.py | 20 + .../published-evidence-manifest.json | 205 + ...IN-0009-infd-zlib-native-release-review.md | 23 + .../probe_refined_boundaries.py | 22 + .../refined-changes-requested-review.json | 68 + .../reviewed-143-f170b34d/mapping.json | 215 + .../original-manifest.json | 1003 +++++ .../deploy/lifecycle/admission.candidate.json | 52 + .../deploy/lifecycle/kustomization.yaml | 7 + .../lifecycle/registries.candidate.json | 16 + .../deploy/lifecycle/service.candidate.json | 800 ++++ .../artifact-comparison.json | 73 + .../candidate-deployment.json | 286 ++ .../candidate-runtime.json | 1 + .../change_guard.py | 68 + .../check_installed.py | 21 + .../decision-packet.md | 11 + .../execution-bundle.json | 185 + .../execution/actuator.py | 362 ++ .../execution/authority_journal.py | 188 + .../execution/execution-plan.json | 67 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../execution/test_execution.py | 519 +++ .../fresh-scan-contract.json | 358 ++ .../fresh-scan-receipt-template.json | 13 + .../fresh-scan-report-fixture.json | 373 ++ .../installed-zlib-proof.json | 20 + .../2026-10-11-zlib-image-release/intake.json | 191 + .../lifecycle-commands.json | 207 + .../2026-10-11-zlib-image-release/memo.json | 106 + .../native-backup-restore-protocol.md | 25 + .../native-preflight-full.json | 672 ++++ .../native-preflight.json | 55 + .../post-ready-native-outcomes-command.py | 20 + .../preparation-failure-history.json | 18 + .../proposal.json | 41 + .../published-verification.json | 96 + .../rollback-deployment.json | 286 ++ .../rollback-preflight-full.json | 672 ++++ .../rollback-preflight.json | 55 + .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../submission-proof.json | 14 + ...D-WP-0009-lifecycle-consumer-pin-repair.md | 191 + ...IN-0009-infd-zlib-native-release-review.md | 29 + .../platform481/archive-map.json | 782 ++++ ...d562e0b3fae8629ee1f8c39ed16b3c926744a816f6 | 37 + ...e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f | 84 + ...5a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43 | 25 + ...213621122a394679a3f97c1abd8e91edff089803aa | 15 + ...499d9fe2705c1e31b3fb8904fafa5333537978e785 | 617 +++ ...d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a | 57 + .../platform481/original-manifest.json | 912 +++++ .../product143/archive-map.json | 386 ++ .../product143/original-manifest.json | 455 +++ .../candidate-deployment.json | 286 ++ .../change_guard.py | 68 + .../check_installed.py | 21 + .../execution/actuator.py | 362 ++ .../execution/authority_journal.py | 170 + .../execution/execution-plan.json | 62 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../installed-zlib-proof.json | 20 + .../native-backup-restore-protocol.md | 23 + .../rollback-deployment.json | 286 ++ .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../sqlite_readonly.py | 95 + .../frozen-release/original-manifest.json | 478 +++ .../negative-probe-receipt.json | 9 + .../probe_wiring_and_coverage.py | 24 + .../validation.json | 9 + .../corrected-wiring-probe.json | 8 + .../candidate-deployment.json | 286 ++ .../change_guard.py | 68 + .../check_installed.py | 21 + .../execution/actuator.py | 362 ++ .../execution/authority_journal.py | 188 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../fresh-scan-contract.json | 358 ++ .../installed-zlib-proof.json | 20 + .../lifecycle-commands.json | 207 + .../2026-10-11-zlib-image-release/memo.json | 106 + .../post-ready-native-outcomes-command.py | 20 + .../rollback-deployment.json | 286 ++ .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../sqlite_readonly.py | 95 + .../frozen143/original-manifest.json | 1003 +++++ .../initial-c67baec6/original-manifest.json | 147 + .../candidate-deployment.json | 286 ++ .../change_guard.py | 68 + .../check_installed.py | 21 + .../execution/actuator.py | 362 ++ .../execution/authority_journal.py | 170 + .../execution/execution-plan.json | 62 + .../execution/native_program.py | 2 + .../execution/receipt_safety.py | 15 + .../installed-zlib-proof.json | 20 + .../native-backup-restore-protocol.md | 23 + .../rollback-deployment.json | 286 ++ .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../sqlite_readonly.py | 95 + .../frozen-release/original-manifest.json | 478 +++ .../negative-probe-receipt.json | 9 + .../probe_wiring_and_coverage.py | 24 + .../validation.json | 9 + ...ib-release-product-owner-initial-review.md | 71 + .../workplans/ADHOC-2026-10-11.md | 333 ++ .../negative-receipt-custody-probe.json | 8 + .../probe_corrected_wiring.py | 14 + .../probe_postready_receipt.py | 18 + .../validation.json | 13 + ...ib-release-product-owner-initial-review.md | 71 + ...-release-product-owner-refined-findings.md | 79 + .../workplans/ADHOC-2026-10-11.md | 360 ++ .../product481/archive-map.json | 812 ++++ ...b748a9a4ba3dd49194c55a574ffe8536901ce1d240 | 81 + ...ea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4 | 27 + ...d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3 | 17 + ...47f7e482e2ebd79e41b83e160936124cdbf79a0f03 | 387 ++ ...6ec37fdb6c44f3211201cc0efec291825957ba9660 | 12 + .../product481/original-manifest.json | 952 +++++ .../rollback-deployment.json | 286 ++ .../rollback-preflight-full.json | 672 ++++ .../rollback-preflight.json | 55 + .../root-authority-receipt-template.json | 22 + .../root-recovery-receipt-template.json | 25 + .../runtime-receipt.json | 17 + .../scan-receipt.json | 170 + .../sealed-live-deployment.json | 286 ++ .../sealed-native-dependencies.json | 52 + .../security-close-down-checklist.md | 28 + .../source-commit-proof.json | 7 + .../sqlite_readonly.py | 95 + .../submission-proof.json | 40 + .../README.md | 1 + .../artifact-comparison.json | 73 + .../base-image-config.json | 222 + .../base-image-manifest.json | 56 + .../base-runtime.json | 1 + .../base-sbom.cdx.json | 2375 +++++++++++ .../base-sbom.cdx.json.log | 7 + .../base-trivy-full.json | 2333 +++++++++++ .../base-trivy-full.json.log | 8 + .../candidate-runtime.json | 1 + .../ci-publication-observation.json | 1 + .../image-config.json | 261 ++ .../image-manifest.json | 66 + .../installed-purpose.json | 1 + .../loaded-daemon-image-proof.json | 9 + .../publication-digest.json | 7 + .../published-verification.json | 96 + .../read_public_artifact.py | 120 + .../registry-proof.json | 20 + .../run_published_runtime.py | 13 + .../run_published_scan.py | 19 + .../runtime-comparison.json | 1 + .../runtime-receipt.json | 17 + .../sbom.cdx.json | 2333 +++++++++++ .../sbom.cdx.json.log | 6 + .../scan-receipt.json | 170 + .../source-commit-proof.json | 7 + .../trivy-full.json | 2338 +++++++++++ .../trivy-full.json.log | 6 + .../archive-map.json | 812 ++++ ...6ac25b03a6a844b95a332c992df2943691369.blob | 52 + ...990a38e27340234a952abdb1d2ca93e7602a4.blob | 23 + ...16132061f168f2712abb2d3d7ab72f4329599.blob | 78 + ...53612f83f0484535772a3f37351b84f0d6829.blob | 9 + ...8e3083b8d229b185329266942bdd397013108.blob | 170 + ...283e7d100ec4e7aca504af482148572d88b36.blob | 9 + ...601b2ec5b8ff14905ff9dbdd0cc8165600e2c.blob | 24 + ...81ef3360daf4f7ec1196f3031c3ffaace57ec.blob | 3369 ++++++++++++++++ ...4d815862221f4d0f31d131611659c91f0fb5a.blob | 79 + ...072ecaf87dc116b4baa16c35eb9c599ad5c95.blob | 286 ++ ...8f11aa0338df4aa9d7115a80e2dabdae81b55.blob | 207 + ...9a4ba3dd49194c55a574ffe8536901ce1d240.blob | 81 + ...0e67f6c7c5ef2d04a244789aa14d9fd1ba2e4.blob | 27 + ...fb1d5afdeec36d15350bda0a12ded97602d1b.blob | 15 + ...ac8150ead69e62f8d825b0dce1e75a5a57b68.blob | 20 + ...ae5686332bfd587a55e5e87ebf3776a63ab0c.blob | 62 + ...fa66d1627a878ad9559fe5ca0b06e9cb07ff3.blob | 17 + ...7b501589ea782445537bbbfe925e1d9f8fa47.blob | 478 +++ ...482e2ebd79e41b83e160936124cdbf79a0f03.blob | 387 ++ ...aaf4e4258bc31e7a27fd888479ce329a20509.blob | 95 + ...567003a2f9f4b8b495dc7086271b38bff2ed7.blob | 71 + ...6028b1a21655960e8196cc60d710f51b51788.blob | 188 + ...680b97ab37f349813e27090bec1f6ffc4be8d.blob | 333 ++ ...c6c492c9957fe021cf412a86a1737730640ad.blob | 21 + ...570bce5eef82b64f1718764f5e2fca6ee95b4.blob | 455 +++ ...56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2.blob | 358 ++ ...00b6e31fcc9f0ea0f3125d3a4794d938ca201.blob | 68 + ...9b9df3cb27306d70525b270da745ba144fd20.blob | 13 + ...686d3eaec04012717f2446ddd93b68dd55139.blob | 8 + ...a7e7149f4a5aa92c20d7e123d26dfaf1d1e73.blob | 147 + ...76c970cc17beb1213060c06a1fc82640d050a.blob | 360 ++ ...b246bd159482c4acccb0afe4c451ee88f57fa.blob | 20 + ...6d3ef5f04797569145faf2ff69024b101ec80.blob | 362 ++ ...fdb6c44f3211201cc0efec291825957ba9660.blob | 12 + ...3f730aa32e5cc06dd59d3f8ae6b45ce816c63.blob | 18 + ...ea1d600d71ee35cda9b9fbbc5564e42560461.blob | 362 ++ ...1eb1e26cf04d58c5b3fdc13b6f34b1621f62d.blob | 106 + ...9f30c5073918dc51f578df09f41a8c0e955df.blob | 14 + ...a96e2ac11a3bce7899bc5710fcb0d22f4af29.blob | 1003 +++++ ...f777a4fed5028bc55df590c4933c3fb8b960e.blob | 8 + ...f79dec073145c31d0444a9e0fe1147e42cc4e.blob | 286 ++ ...30aa9b853c40ff00c566a620d20eaadc8af20.blob | 2 + .../original-manifest.json | 952 +++++ .../check_postcontract.py | 31 + .../validation.json | 26 + .../check_references.py | 22 + .../validation.json | 22 + ...11-zlib-release-product-owner-final-ack.md | 97 + ...se-product-owner-reference-confirmation.md | 51 + workplans/ADHOC-2026-10-11.md | 102 + ...D-WP-0009-lifecycle-consumer-pin-repair.md | 3 + 597 files changed, 119341 insertions(+), 2 deletions(-) create mode 100644 docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/change_guard.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/check_installed.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/decision-packet.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json create mode 100644 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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json create mode 100644 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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json create mode 100644 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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/intake.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/memo.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/native-preflight.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/owner-packet-reference-diff.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/owner-platform-final-ack.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/owner-product-final-ack.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/intake.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/lifecycle-commands.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/memo.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/submission-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/proposal.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/published-verification.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product481/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660 create mode 100644 docs/evidence/2026-10-11-zlib-image-release/review-history/product481/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/security-close-down-checklist.md create mode 100644 docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py create mode 100644 docs/evidence/2026-10-11-zlib-image-release/submission-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/README.md create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/artifact-comparison.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/base-image-config.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/base-image-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/base-runtime.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json.log create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json.log create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/candidate-runtime.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/ci-publication-observation.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/image-config.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/image-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/installed-purpose.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/loaded-daemon-image-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/publication-digest.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/published-verification.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/read_public_artifact.py create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/registry-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/run_published_runtime.py create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/run_published_scan.py create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/runtime-comparison.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/runtime-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json.log create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/scan-receipt.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/source-commit-proof.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json create mode 100644 docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json.log create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/archive-map.json create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/original-manifest.json create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/check_postcontract.py create mode 100644 docs/evidence/2026-10-11-zlib-release-product-final-review/validation.json create mode 100644 docs/evidence/2026-10-11-zlib-release-product-reference-confirmation/check_references.py create mode 100644 docs/evidence/2026-10-11-zlib-release-product-reference-confirmation/validation.json create mode 100644 docs/reviews/2026-10-11-zlib-release-product-owner-final-ack.md create mode 100644 docs/reviews/2026-10-11-zlib-release-product-owner-reference-confirmation.md diff --git a/deploy/lifecycle/admission.candidate.json b/deploy/lifecycle/admission.candidate.json index ddc0cea..c0b7f2e 100644 --- a/deploy/lifecycle/admission.candidate.json +++ b/deploy/lifecycle/admission.candidate.json @@ -1,5 +1,5 @@ { - "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "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", diff --git a/deploy/lifecycle/service.candidate.json b/deploy/lifecycle/service.candidate.json index c6bd69e..c267584 100644 --- a/deploy/lifecycle/service.candidate.json +++ b/deploy/lifecycle/service.candidate.json @@ -96,7 +96,7 @@ "containers": [ { "name": "informed-decision", - "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", "securityContext": { "allowPrivilegeEscalation": false, "readOnlyRootFilesystem": true, diff --git a/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json b/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/candidate-runtime.json b/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json @@ -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-zlib-image-release/change_guard.py b/docs/evidence/2026-10-11-zlib-image-release/change_guard.py new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/change_guard.py @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/check_installed.py b/docs/evidence/2026-10-11-zlib-image-release/check_installed.py new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/check_installed.py @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md b/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md new file mode 100644 index 0000000..f5c664e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md @@ -0,0 +1,19 @@ +# 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; 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. + +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. + + +## Explicit recovery decision + +Also approve the proposed item19 manual service-outage recovery term above: exact historical rootconfirmed acceptance captured before release may authorize only same763/c96 one-Deployment/latestDB-preserving rollback after failedf558 service outage, within30minutes AND the existingdeadline. Root must retain freshunavailable/failedcandidate witnesses and exactcache/journal/custody pins. Duringserviceoutage subsequentrevocation cannot bechecked; this bounded uncertainty is expressly disclosed and consented to in this new decision. No401/403/revoked/conflict/mismatch/healthyservice fallback, no backup/release fallback or future/customer-production reuse. Ordinaryfreshreadback remains preferred. Recovered placement is verified separately; rollback grants no claim of currentPDPsuccess or T05closure. See fullprotocol andclose-downchecklistitem19(PROPOSEDuntilactualacceptance). + + +Post-Ready provider preservation proof records only fixed canonical sourceT05@1 request identity (derived from the authenticated route), HTTP200/timestamp and review-presence/disposition count. Actual native outcomes need not contain top-level memo identity. No review/disposition/state/actor body is exported or interpreted, and no currentapproval/acceptance is inferred from this provider proof. Actual founder go remains separate. Exact prior481 bytes and both completed contract reviews are retained by digest maps; unchanged history is not recopied. diff --git a/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json b/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json new file mode 100644 index 0000000..ea0d968 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json @@ -0,0 +1,197 @@ +{ + "kind": "informed-decision.supervised-execution-source-bundle", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "codec": "gzip+base64", + "files": { + "execution/actuator.py": { + "sha256": "43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1", + "codec": "gzip+base64", + "uncompressed_bytes": 26242, + "content_base64": "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" + }, + "execution/authority_journal.py": { + "sha256": "db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb", + "codec": "gzip+base64", + "uncompressed_bytes": 16345, + "content_base64": "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" + }, + "execution/execution-plan.json": { + "sha256": "d871081999215bd3850ab1173064ed6cb6d7c23b26d9c3d5b3c5940e698d4c61", + "codec": "gzip+base64", + "uncompressed_bytes": 4993, + "content_base64": "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" + }, + "execution/native_program.py": { + "sha256": "b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da", + "codec": "gzip+base64", + "uncompressed_bytes": 20362, + "content_base64": "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" + }, + "execution/receipt_safety.py": { + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "codec": "gzip+base64", + "uncompressed_bytes": 1036, + "content_base64": "H4sIAAAAAAACA42TTW/bMAyG7/kVnC9yiq4fA3bZ2t626y7DLkVgKDIdC1UkgZK8GsP++yjZSd00A6qTKNEPX76iq6r6Yc0IIVJSMZE0oFyy8bqXoQdChdrHAEpaMCgHhNgjeNKDjAj4jCpF7Sx4TserqqpWLXYTIdSDNAnXX1bAS3dQB4zzGXy4hz8iqB73shmQAjPEJQijO1SjMpgDl+LWPeddSNu9Djkp5FDbiDvScRSXhX1mCULZNo47azxh4zwWfoiOI8Wc0i624u8rgiMoAh9PtW2y4s+L+xcN5Uq4J/Ef0hklG9ABrIvwkxIui76Rd8z8Lk3A0wpHQx8Xzm1md/ntHLXFMByQ3yPvuHqr7e5t27nGAjd7z6y7zDp8xoQWjWZXWBsHW+PU0zkXT3DLBzwyCb2cOdo2ndG7PuaA++807aebZAmDM0MuMo9SXiR1QPiV6d+IHNWizNzH7PNhaiH00uN1iHlUCbsUsP06WR3gt459j6YV68LsWPOOXPKgLdTvmcOFGJ5tacc6jh5rm/ZbpPXh2XhMih3lFO7gZhE9wO3NxcXtp9MZ7l5SWMzkYNG2uZrE1+tF8Xe7MTc+GzH3Tcj//Fxk9Q8H4RSfDAQAAA==" + }, + "execution/test_execution.py": { + "sha256": "1e839623df15218ed46c7fb591029b9a653678cbde22898d5703a4ffbc082e99", + "codec": "gzip+base64", + "uncompressed_bytes": 58687, + "content_base64": "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" + } + }, + "native_execution": false, + "case_evidence": { + "artifact-comparison.json": { + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "codec": "gzip+base64", + "uncompressed_bytes": 2697, + "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" + }, + "candidate-deployment.json": { + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "candidate-runtime.json": { + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "codec": "gzip+base64", + "uncompressed_bytes": 5291, + "content_base64": "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" + }, + "change_guard.py": { + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "codec": "gzip+base64", + "uncompressed_bytes": 3153, + "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" + }, + "check_installed.py": { + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "codec": "gzip+base64", + "uncompressed_bytes": 1912, + "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=" + }, + "fresh-scan-contract.json": { + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "codec": "gzip+base64", + "uncompressed_bytes": 9733, + "content_base64": "H4sIAAAAAAACA71aS4/jxhG+768Q5pCTxen3YwMjROAYSA6GDwZ8CAKhnzP0UqRCUrurNfzfUy2KEsWZ0Xh3yACzs2Drq6qPVfVVN6n5/d1qdVdszUO4e7+6i3XzEH6rM1fvy3prs7Z2hSnvT5f3RQWAbfBrH1zRFnWVt4+GcPE+cq5UZFpYHImQHknnnY6cIBVEJJEwHCWzkmpHqCbMIioRAS+YGg5Ld9+daWxcXcXiYVP4ROjkXxBig3M0WK+ls0JYEaSjIlJuo6bYSPDlNRPMCq44xoQ67JxyWisvue39+yJG8NuC43/D9ersnjKlmLE2aKIEjS5oSoOHANqhgBgXECGi4JXw3Dnko/VRR+8MI8IF6o7uR+7gAxuIE0EbhwihEnPKOeFUwj+FEUJMCUcsA/bOEuIil9gKo7jBxPuJuwAxvUHRRmE585TRgCChXHglBefUGi49ZFV4iTXcPrPUYBeYjwgLKsTEHUNaGY8oBUIE7lYTo4x2HCtwpgUi3DOJsApIKoegoNJr57lIicExhom7qC0DBwwTgxyShikdmIiWewtF1x55p5hnwVEApaQYqznFkbGAvI544k4wxTg2yHsDJfGICYUDJZZD+aGpuKeGRWS8YlEqGjRPBSbWCS0IgupMSyEwo8hgjKkWWjJqtQ5QEEtQRIR6zmBRU+uiBs4ayqxTzSC+dcxwPXHnouMaPEnmhYwCWcYwdgRS7XzgqUslJiFAo0vhPNIMGyI5hntBRlhEJu4I5FNjpaAHtDOax6BtAKqcR4mMBVGJoBgwptRyAibUQ+6ipVZyEwyduMOYKwzZgp61PtDAoRgEw01RgghknxLoFSAKXR6xDApB/0AqidKaIemnjYJA0YwgLGnSMvwGOUPxIlQHGihYhYixgnkc4C4jw9pEjK0hFBGLeDB34O0/T4Xd1HUXkwZ/76N1h91x9pTmEJp24PBEq7OrdXa9zq7Y2TU7u2pn1+3syp1du7Ord3b9zqtg0DD8/mOk47beNy5sSmNDOdIxHB2yehcqkHlnigq0nB3xmTVtyHzxENputKVLQWEDZ4g4ZWEvd8xh67ERWEBxoZqQWgwCJqAbJSUjHNRnUo+DpJWiZhgUL4ZtwsfjGSXFhG63FkRCITIoKXBQJCQQFAAkuCYeJMNVvOwex3PP+RjUhDKkm2hd3c+qf/704w/rX39ew2TQ618Qv/9SFnatONJ43eAXvPR5yxLR8LnL+jwkb45zFgRJwomUIWcNBj0LbWCWqSg8cqB/Av2gkIUDFRxoBA+EwAnKYgKFvx1vV5eFO4zCaZiV2AYG5yistccsgDChIT2PimsOIucWOWcBphAyMqaOO/YvTwcvcnfuh3pU/h/NtigPyb8pd1CHgdRPZntMGc0Iy/DFtqg+hqqrm8N5wp/nfGmqh/Xuw0N7aejdoXusq7R4Wfv58K9ff7lckgzzbDSYAPt+d9gV97vDb5+6/PRx39HffVNAF2NxFe/ZcAmV9x++KVhz2HX1Q2N2j4fLKkcZej7qCJ6fUG8J/+Sof/kIZSRDz1B4+nTQI99CY3dwO9O0obks0WeDn4E5fWPIT6bomtC2VxEz8kzMAZn3gGeD1u0k5JU64Do7cWj2lQ+7ERBmvkAa4QwhjIi+jm92H+57T/cTB/nE7m+mcY/fV3X67y++aLum/v6ixW8g3F+v01SHI1u978aJkhm5DMCnXJ/Y5oNJT/OzEhvBlqG59qYzb+F6dLA44Q/hMG6CTKwb9BrHZJP30KVonbbAcf6S0z9B7mSZnw3mp7j7sO7qupxI9nbmBpt8gM5Oy+7bg60/XxZwRmWG1g19uelONvkFuhSttS2q9vFbyPWWS1J0Zu1C0xWxcKYL05ko8M22mxjnI5ulia4tzOAyvInvyceitB+83Y4rT25KJaHzE2h2KjC69l1Rtms4QLdjTiKj64a9SOrKLh/g89NrLF+nFxdjatD05GVig0XeA5ehNM0WIbc3s7NRfsbOTgzcQ8SvmMG9wXIDGPzbL+SqcplaN+IWITDIB9wShFy93YSmGZNiMmOvpOlklZ/Bi1A7PkLQcQF5ysNtZr1RPmCXIHb12JUC3Wz13iAfcEsQKqqunAyEm0lK+H4cLJKfyu3hyaf9dFkUmdjsjjsIx69JcLDOp0aLUG3L8eEWpQMhucmuLfMBtwShnalC+Y2Z623/L3lr2/IrhZksFlVlVzQ7d3V+zPgrujya5ANyMVJPNuw/yWzYtpejt98Xftz/jKRjy01mySQ/I5cg9RFOn/X49Q5Ng/OmKo8m+YCcndR2317N1+Oj7cuEEjwfUIuQWR/Pml9JqTdajthpcK+70GzTu7fjq4pvmGTP+ll+qjXB+PJqRUE/3ZTDYJIPyNlJtS7N9Mnw0Lc4nSzyATg/pf+WRRcmJ34YUfT2qXFklp/R85Nry40ri1B1X/Um4WK25GuE7sv1K7/Uze5WznqDfMDNTujzl0kZYXdOffwyo5NFPgBnp5S+uLru9puH6wTPB9SrZC5/ADB82bMBtdRV4Uy5uXwhhaPnNlripUPMSIqFIYoab4NBkbOI4Mdx46wlWFmMA1wJKW0MSjom+pcEd7u9LYv2MfhN3JdlE3Z1042CkBiFClJwq53gRBOBsedGCw3lNrDOBJUYID5EF7xx3BMnBWUIabgMoyDOdEVdbbamKmJox0GENcRRhi3TwlgZpY7a8egpNRpuCTsSlU9fRCKsDLMsCOkZ3I9JMOv6l/x3568Z//HZuG5VbLf7ztgyrM63uEqZLz6GVeEhr0V3WJnKr85Z/usqFpUvqod2BRtRt7Jh5R6D+5AMq/BpVVer2IT2cfXD37O7d3+8+x/NJG+cBSYAAA==" + }, + "fresh-scan-receipt-template.json": { + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "codec": "gzip+base64", + "uncompressed_bytes": 549, + "content_base64": "H4sIAAAAAAACA22RwY7cIAyG7/MUKOd2JxAgsKc+RO+RMWZLRcIskFFXVd+9JLOtVlWP/P7x99v+eWFsiCu80PDMhpDLC33PT5j3lFf3VDNGSNf35zVu3bCS/+wJY415+1K/gVD6OShlTJBWOx6Env04o0cblBgN6SCCkDzM0s2TRTFZId04zaPoXfgEqkvDpyMGlBYDYFtq3gvSUuh+Uo5k1knnhPJTx1kDpOREMxkwMOGkrPCdrEzAR6eKsG1Ujo/wukMlvLYS729/8mrhOGlFxmjrUDqJGkAGEE5wZVW34Iwi6JEbsN6C1xwhmJmbGbnV9kEJe0oLpFTpTiW2t+XAdmYrO52GLS91v90K1fcx/lboR2wLZn9sfettThHzekvUyC/QPureLSs18NDgH/kxzkfxzFTolkv7T3XL7bzzV+okaMRiZV1jfek7JNb37WlDYrkw6LnzHdJw+XX5DVUNbXAlAgAA" + }, + "fresh-scan-report-fixture.json": { + "sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "codec": "gzip+base64", + "uncompressed_bytes": 11944, + "content_base64": "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" + }, + "installed-zlib-proof.json": { + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "codec": "gzip+base64", + "uncompressed_bytes": 492, + "content_base64": "H4sIAAAAAAACA32QTW7CMBCF95wCZV2S8fifVe9RVdV47GlTAkGkbEDcvU6gq6q1ZGtm3vPTZ19X63XT7+m9NNt1I+PpvXyOLY/nYdyndhq5p6F7tF1/qIZ9yZtcuJ/68fA8fRBatxVrQxATXVKCzmfwnDmKRQjFCQoaJd4kryOjjmgSaA9YU5QmW0fN04xxGfr0diTePWhUq1vcnNRdlX4oUx1fa1Pb6u3ouOvyjDV90TCUXNWXRX3Yl4vzMgg/5e+iERvBO1TReQUFLUOJ4jETOINMOZDNnAiIYrGBoNbkrAsmq+oF1SxBr/e85jyduhmu7kv9wHZ5xd9kUf9DVphDilnY2JK8EMZkFIgQk0Prg9chQi5WpwBSovLaeu2TieA8W8EHWT1vq9vqG1zLL/rsAQAA" + }, + "native-preflight-full.json": { + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "codec": "gzip+base64", + "uncompressed_bytes": 21208, + "content_base64": "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" + }, + "native-preflight.json": { + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "codec": "gzip+base64", + "uncompressed_bytes": 1871, + "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" + }, + "post-ready-native-outcomes-command.py": { + "sha256": "ddfe2619f4847238fe79ec779a15b0d8df5d178cbed989ac2d73c1480b57a706", + "codec": "gzip+base64", + "uncompressed_bytes": 2884, + "content_base64": "H4sIAAAAAAACA71WS2/cNhC+61cQ7oESrNWujDyabYQiRZ3ah9iGE+QSGARXnO2ylkiVpNbeGP7vHVLUvuoAPdUHL8UZzuOb4Tc8OTn5KB9BEC5a6RwuPjvu4KJfTG60IFb3poaSGOBiwet7wpcODFmDkUuJyjVXQgo8QG5RY1MkyS383YN1RApQTroNkZYIVF+Dt9ZAsyFLo1viVkCWg+ce16hbc+/e6N5BQT7UrudNorjDkwT3at2CxThcb5T/XUt4mAppO22lk1rZnDxIt0JN4nQ3aWANTQx/G0uRXCv0f/Hly83ZbJYTJ9Gm422XE7viHRDMhtS6V86SBjg6disMH123KCnIlY6O82TPc0547bRBG/2ildbiFrEexJx0mLcHZ6HFhmhDeNcZveYNkWoJBhTGFvzYIjk5OUlk22njiMfThzZ+/2W1Gte9aRq5KMyA8tEuGKNNknw6/3TNLn+vKHoRk7PZ2ZtyVpaT76gyMdCCkNzHPTElTb6e336+vL6qyiRJBCyJNywNpBhkD9k8Ifgnl0RpR8LWsOP/DJcWyFe/ee79pugOVaTAbHslsJTHxQsY0yx6snwJLMpYC45j2vzA7xiLtFIhoIjWIM6FrF2WBZ2fyHXnk0FMA8j7bVevoL7HOLQvOibBQ0/hujNgUS0nCrvEYDHW+AWiGLOlLbSaSUFR9K+09wH6ttW8q6oI+xDXEqt9DxtvIKXoxHcFzQf18TPbWUWnUfvI3b5Lt+lGv6h8l/kcpXKha3fbVRVrmh2ASIfO3aUUjo1pROGdN3mlFfhmPYZ9pxULEB3oB1sFheJPcCndv5M0+1Eh/am8kdZlIY4GVNjK3lfl7OxV2MNSHZ0Y/AZs8ctnEs6MTjw1kCca7wYbSzOPhckPJWMV5hGunXjsITbQB53TQFSTA6KaBKLCkq64ZRGY+Qto+pvjEc33gWGBZOh8m/aB1DKsKhjsUvRD5x95Y/H4yB0scIfZk9Q9firHthp1w5E+RoXneOFaLlUae86Zza7HAh/zThYWzFrWyEYBIB8Rd/WKRJK5vr384/Iqv9K3yCAGapc7fQ+KLWUDB9cDMawOeaqIUyEdbJzS6bqcCqilr4Cd0tNYIhSMbPFrrE9V0nyFswW/qif6AUugjfweCAwL8xtwgzeYnu5CSdE4N1PTq6mFGjG008DGk1W/mCJ22iA0k9H5tJFLqDd1A5NggmbP2TYZ3YECc5zLopeNYIMsPZLdGP24ucDubVD29JztoZVmO8N+UkXrhf9J4/nc0z4iUJWv8V74MYdNoewP+GCUFj6/3lYVDrXsUJM/VFstP8PTcvbq59dv32a/jEZCC/KHcPG86M2RBbB946qXydoPpqLRXNhgIksOTxV950dZunKuYzFGP3f1wjcaCMZdNc66YrtQ+iHdfvh/3/H2FOg6K6TVvnwcscyH4cIO7iTD54hWuG7Ytqxj1Lb6YnB0xGP+ouA1Nww7fMUG6gAxqGDPBAJAK+gKny64QCMdliXcp12aON6VG1AQfdvZdMg7AgGPNXSOnIcf/yjAgoYJPT/CqfrfOWsoBir1anzK4e6Sy6Y3/mxEaXz1sV7xNQr5wuNpWBz09Hl/fu1Rdcgy33+UFP7NFZ4JA9+HUTZIai3gYJSVs9n7aid7X71+927+QlN+o3uNhQN4d+Q/Fmj3ivm8sQ7a80fp0jIb+NBzNhInJsaY4tj1rKooY55EGaNDPAOjJv8AHu7dPkQLAAA=" + }, + "preparation-failure-history.json": { + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "codec": "gzip+base64", + "uncompressed_bytes": 1070, + "content_base64": "H4sIAAAAAAACA5VSwW7bMAy99yuInIsuVq1IXu+7rQN2HYaAkqhYqC0ZkpwsG/bvo5rmsKLDtoNhmH4kH997P24ANhFrONKevCdbN+/B41Totv0JMdSA007tZ4zBU6n7MqKQO0ZtOuqNxPutFkPvpNZWGa8kSScUmV5J7MiJVrHaykH73hmhpfXbTvbKG7H50wpzrlT2mSqGSO4PhGyal4kq7Utas+VXxKWMqf6tL6ZKjf1jqnDtqeTAkE+ZYI0YY1qjJac7wJmi46c+wFNMpzhiGWHJVCgfyd0CfUNbIZNNsdS82hpSBFxdaBMLLZix0nSG4GFJpQQz0R08JiZmcrDYUHbCMEPycOUNKYdDiDjBsw53v8mku7ec0B06M1Cn+sHtjBt8NygpURjjlJGstx4IlRZ9L+W9MsZ4GoSkjpHaY69er/gXbfnci7Quo69ieIuXQtu53aAtGuG8cbQzdou6NxadE/ZeiMGJ3vfYoxw6IT0p0TKy86gFbV94XRf8HytqYS5c+sKfXPjIEHChLFgte4ilUIG0EDvEpu1DrGwz1MQ+zBwROIU6prXC3PAhHqCZOfP6/MyKJ36+ABc8TwkdTGifmutXVsHxwFDP714vufZ/4ByNUCxGOHAUAK2lpUWC5oXb+JR4iQjj1qmCTUcedGgZdZQhp1Q5eRQWJskKOKx4Hf3pFBuCjoFOnOwDxp16aNle+agcvjeetY2y45ojJHMJtO423P/1WcDCx+5r5kC8yHrz8+YXqlwcii4EAAA=" + }, + "published-verification.json": { + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "codec": "gzip+base64", + "uncompressed_bytes": 5912, + "content_base64": "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" + }, + "rollback-deployment.json": { + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "rollback-preflight-full.json": { + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "codec": "gzip+base64", + "uncompressed_bytes": 21208, + "content_base64": "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" + }, + "rollback-preflight.json": { + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "codec": "gzip+base64", + "uncompressed_bytes": 1872, + "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==" + }, + "root-authority-receipt-template.json": { + "sha256": "2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0", + "codec": "gzip+base64", + "uncompressed_bytes": 941, + "content_base64": "H4sIAAAAAAACA4VS0WobMRB891cIP+dydwaHJlBKwWnxQ01IA308ZGnOFtFJ15Xk2Cn9967u7DhpA30Tq9nd2Zn5NRFi2pPvfZC2MXp6I6bL1ZdF8eOuqKrqunio5uWzNesP8+q6LqieXuSODp0/oo1rdTGrZld1VddFhhaEDtrIaLx727EDBS5yW30uhq2cza+45pK1Qzn4RAoNYWeO8Jcv7KFS9NT0Vrp3Wh1v3aHxKSrf4R2AVAwYqGXyd7erxXL1daQoU9x6MvHQdF4jf39efFuult8fbu9HRJS0Qcw/BGm7m8e0BjlEhJKksUY6haouWRJPLEGhocYLhm6+3rRGDcubDrxsEJC8j0Vr9ozn7RvjivEIllHqtVSPYzclFw2flFmCnzwHutmQdJlQK23AgDud/jOBDnl+aU0LdVAWZdY7lP91rDzOCJ+Ohn2sX1/Aa2V8rWk2Ck/NORRntXvO1u6UrJeyNoEDZwYh/mpQCn38Z8PaJ6e5ysTkhpPhrc3KND2NgrBwz9BvdHA+Dh4+oOOsRAgTBNcEc9Vgn8oTt0txzw6IgBhEUL6H5qmnoYMkkRKEd/YgZBtBgjOUpBXKu9Zkn0U70MsfmX1OgfCtiFteiT2jhcOT6JkwYskDunAhCFEaF8RoeZ6WiNjXk+liDQ4RGGchAy6nk9+TP8/xgVatAwAA" + }, + "root-recovery-receipt-template.json": { + "sha256": "67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297", + "codec": "gzip+base64", + "uncompressed_bytes": 1033, + "content_base64": "H4sIAAAAAAACA22TTY+bMBCG7/srLM5L1pBAyJ56qCr1UlXVSj1awzAk7hob2SYqrfrfO3xoS7I9Ic/reefDD78fhEhetW2SZ5Fo2zrfUZM2hDpoZ3feuZiGoSd/1YEFN0Q4U+oJ3ZX8mDxO6b13vQtglJ5dPn/59DH9/jWVUp7SF1k8/TK6rgp5ylKfLRnBDR5JebrOZTjLDsbMUkedU+ECeVFuw/0FAm0DngxxSEGM1PVxqf2mIuCF/mMzzaO4c91qmhJaMIGWumAHHuHfrOptyO01HLwnG5WFqK+keB/oOgoKDejuztLVgb3YCeK2hzWVt1ZzixHiELYy/eyNRh2n7bhXuh1rrY7OtnzpxlY3rOg4KudVQNeT6nToIOJle2vqSPPqLwQmXsat1FBv3NhN/sPdNrmcPnfQ3wv9Fe9D3hlTA74q3TEpEw/M1Jl+uB26wbiu3gWHGszTenx6B92H5dmej+Ue9+VB5ljVdEQ8YFY3GZRZme/527anLCubIs8PWXU8HvKiPhRwlFmFKKtqD8ltPwtzU0N4KmuJZVNVGVVF0WRNVlRS7jlEJ0nt/iTzMqd8MWhBG35DBNvoBuINhNbN5+SFETSsCQ4IwMgkCWabXwRJOC+g59e+gtmJb2s7M4OjGAIFvqDP2jJ8y981gUeakV728LhyyD3MK92c2ZYpYJycXcdjEZqRHWYhCG1D5IhwrQCx0mPGZaS3iXbJw5+Hv9yIXHoJBAAA" + }, + "runtime-receipt.json": { + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "codec": "gzip+base64", + "uncompressed_bytes": 808, + "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==" + }, + "scan-receipt.json": { + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "codec": "gzip+base64", + "uncompressed_bytes": 4538, + "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==" + }, + "sealed-live-deployment.json": { + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "sealed-native-dependencies.json": { + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "codec": "gzip+base64", + "uncompressed_bytes": 1841, + "content_base64": "H4sIAAAAAAACA71Uy27bMBC85ysMnUtZoiVLSm9NkaKHpEEPyaEoAj5WNhuJVEnKQBrk37uUZSd+II9DexKw3J2dnZ3Vw8lkEgmja7VoWRedTh4wgCHWqWuwThmNsWiVRh/WcdW2vWe8AQx728MYvlNahsSzAekCkcaHFjyTzLMtcsDW2njmEds9C4cHuzBCxuHTWfMrVmbqLRMIviBqwFe6NrYFSSQIFdidTrctTw8epwcRYnvtVQtkLihNy6KUSb6ZbT3ffkUsTN+YlsfOCMWaKZOtchtdWIc8VyA/Tr5enn8mN1ckSZJiInqPURuNsI8b/EizFo6O8TKvoc51TBwvfsrr1ypVSZrOJJUkz2RFMigp4amckSrhWQUcJOX5mtxILRJMG60Ea27Dsm7dktF8HqBKENmcypTOsiLPyjpP5gDA6xRmohAiK+ZZmaSVKFlRzsokk0nFhSgqntSUsnoe2gxNom4lXrfXxkdX4dF50P7aNH0LZw1T7f/z1NH2b/LXwOtf+ekZbreK73oOVoMHF4biqBwRpu0ajAxz3YN7ucL0WMLvsUp7a5oGOxyWrQYBYo6a79U7byxbAAmUh9HW9ZZpsQQbMhqDjiId88sjiHtg0IBA4kQbObiczqp4TmOa5HFF46VxPnYgegsOLGoRY+XroO9heHCstdKsUX/QClj046nVbg+0dcD3yD4scUz7+YaT37HKe09clgmnOU9JmqWMZFnKCUetSFXWjNayKnkhdk/cdSB2LkYIcO4C5d6b7zsweWOVh28a2RwMhBswvRWwd2cWfvfg/G40tF3vIHBOv6ho+/R4oPeYibfm3OWo2hEHjau+GH1yrhpw93ir7X7GBiNs6B1yPf9h3XZL5gaQT+FYopPHk79qFEgoMQcAAA==" + }, + "source-commit-proof.json": { + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "codec": "gzip+base64", + "uncompressed_bytes": 239, + "content_base64": "H4sIAAAAAAACA12OwW6EMAxE73wF4rwHIDY2/ZWqipzYKZEKrAgtWlX998JKvfT6NPNmvqu6bjb7yiWvS/NSN2OAEHpU1+MwshiCMzIWFhcdjr2GLiGn2Nz+mnaY+lmWnKzsvkxyNi8T9SACRGShizzSoDywYcIWgFyCMOgp6pwStsoklgQjK0ZpCcj+L9xln8rpJXjyOZdZ9jjZxV7fnmw9Ftv8ZqJ+XT4e/j1ff9bjTOzbp1U/1S/dW3277wAAAA==" + }, + "sqlite_readonly.py": { + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "codec": "gzip+base64", + "uncompressed_bytes": 4610, + "content_base64": "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" + } + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py b/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py new file mode 100644 index 0000000..5494da7 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py @@ -0,0 +1,399 @@ +"""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, outage_recovery=False, recovery_release_started_at=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, 'outage_recovery': outage_recovery, 'recovery_release_started_at': recovery_release_started_at, '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) + parser.add_argument('--root-recovery-receipt', type=Path) + 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, recovery_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') + outage_recovery=False;recovery_receipt=None;release_cache=None + try: + if args.root_recovery_receipt is not None: + require(args.phase in ('rollback','rollback-verify') and args.root_recovery_receipt==Path('/tmp/security-infd-zlib-root-recovery-receipt.json'),'outage receipt is recovery-only at fixed path') + private(args.root_recovery_receipt) + supplied_outage=json.loads(args.root_recovery_receipt.read_text()) + import datetime + root_verified=datetime.datetime.fromisoformat(receipt['verified_at'].replace('Z','+00:00')) + outage_observed=datetime.datetime.fromisoformat(supplied_outage['observed_at'].replace('Z','+00:00')) + require(root_verified.tzinfo is not None and outage_observed.tzinfo is not None,'typed outage observation required') + require(root_verified>=outage_observed,'pre-outage historical acceptance is not current native readback') + approved = authority(receipt, json.loads(args.root_native_outcome.read_text()), sha(CASE / 'memo.json'),args.source_revision,args.phase) + except ValueError: + current_outcome=json.loads(args.root_native_outcome.read_text()) + require(current_outcome.get('http_status') not in (401,403) and current_outcome.get('explicit_revoked') is not True and current_outcome.get('current_conflict') is not True and current_outcome.get('identity_or_scope_mismatch') is not True and current_outcome.get('review',{}).get('stale') is not True,'current denial revocation conflict or mismatch forbids recovery fallback') + require(args.phase in ('rollback','rollback-verify') and args.root_recovery_receipt==Path('/tmp/security-infd-zlib-root-recovery-receipt.json'),'fresh authority required; no general fallback') + private(args.root_recovery_receipt);private(CUSTODY,directory=True) + cache_path=CUSTODY/'release-authority-cache.json';journal_path=CUSTODY/'execution-journal.json';private(cache_path);private(journal_path) + release_cache=json.loads(cache_path.read_text());prior_journal=json.loads(journal_path.read_text());recovery_receipt=json.loads(args.root_recovery_receipt.read_text()) + require(sha(cache_path)==recovery_receipt.get('cache_sha256'),'retained pre-release authority cache bytes changed') + require(prior_journal['identity']=={'proposal':plan['proposal_id'],'source_revision':args.source_revision,'memo_sha256':sha(CASE/'memo.json'),'plan_sha256':sha(ROOT/'execution-plan.json')},'recovery journal exact trial identity required') + approved=recovery_authority(recovery_receipt,release_cache,prior_journal,sha(CASE/'memo.json'),args.source_revision,json.loads((CASE/'sealed-live-deployment.json').read_text()),json.loads((CASE/'sealed-native-dependencies.json').read_text()),args.phase) + outage_recovery=True + 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: + if args.phase=='release': + cache={'root_authority':receipt,'native_outcome':json.loads(args.root_native_outcome.read_text()),'memo_sha256':sha(CASE/'memo.json'),'source_revision':args.source_revision,'plan_sha256':sha(ROOT/'execution-plan.json')} + cache_path=CUSTODY/'release-authority-cache.json' + fd=os.open(cache_path,os.O_WRONLY|os.O_CREAT|os.O_EXCL|os.O_NOFOLLOW,0o600) + with os.fdopen(fd,'w') as stream: + json.dump(cache,stream,indent=2);stream.write('\n');stream.flush();os.fsync(stream.fileno()) + private(cache_path);directory=os.open(CUSTODY,os.O_DIRECTORY|os.O_RDONLY) + try:os.fsync(directory) + finally:os.close(directory) + journal.start(args.phase, approved) # fsynced RUNNING before any phase effect. + if args.phase=='release':journal.note(args.phase,'release_authority_cache_sha256',sha(cache_path)) + if outage_recovery: + require(sha(CUSTODY/'release-authority-cache.json')==recovery_receipt['cache_sha256'],'release authority cache changed') + journal.note(args.phase,'outage_recovery_receipt_sha256',sha(args.root_recovery_receipt)) + journal.note(args.phase,'outage_recovery_anchor',recovery_receipt) + + 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, outage_recovery=outage_recovery, recovery_release_started_at=journal.data['phases']['release']['started_at'] if outage_recovery 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-zlib-image-release/execution/authority_journal.py b/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py new file mode 100644 index 0000000..21b0630 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py @@ -0,0 +1,233 @@ +"""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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py b/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py new file mode 100644 index 0000000..4802711 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py @@ -0,0 +1,723 @@ +"""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, recovery_authority +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} + contract=json.loads((CASE/'fresh-scan-contract.json').read_text()) + report=json.loads((CASE/'fresh-scan-report-fixture.json').read_text()) + self.assertEqual(fresh_scan(receipt,report,contract,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=[]),lambda r,p:p.update(Results=[{}]),lambda r,p:p['Results'].pop(),lambda r,p:p['Results'][0]['Packages'].pop(),lambda r,p:p['Results'][0]['Packages'][0].update(Version='old'),lambda r,p:p['Metadata'].update(ImageID='other'),lambda r,p:p['Metadata']['DiffIDs'].pop(),lambda r,p:p['Metadata']['ImageConfig']['config']['Labels'].update(**{'org.opencontainers.image.revision':'other'}),lambda r,p:p.update(SchemaVersion=1),lambda r,p:p.update(ArtifactType='filesystem')] + for mutate in mutations: + r,p=copy.deepcopy(receipt),copy.deepcopy(report);mutate(r,p) + with self.assertRaises(ValueError):fresh_scan(r,p,contract,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, ephemeral=False, expire_recovery_before_effect=False): + writes = [] + calls = [] + elapsed=[0];real_datetime=datetime.datetime + class Clock(real_datetime): + @classmethod + def now(cls,tz=None):return real_datetime.now(tz)+datetime.timedelta(seconds=elapsed[0]) + + 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'],**({'ephemeralContainers':[{'name':'debug','image':'unexpected'}]} if ephemeral else {})}, + '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 expire_recovery_before_effect and '--dry-run=server' in argv:elapsed[0]=200 + 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), patch('datetime.datetime',Clock), 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) + + def test_actual_pod_ephemeral_container_refuses_before_native_effect(self): + objects,payload=self.fixture();receipt,writes,calls=self.execute_fake(objects,payload,ephemeral=True) + self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[]) + self.assertFalse(any(argv[:2]==['kubectl','exec'] for argv in calls)) + + def test_outage_native_rollback_requires_failed_candidate_and_same_source(self): + objects,payload=self.fixture();payload.update(phase='rollback',outage_recovery=True,recovery_release_started_at=datetime.datetime.now(datetime.timezone.utc).isoformat()) + objects['deployment']['spec']['template']['spec']['containers'][0]['image']=actuator.IMAGE + objects['deployment']['status'].update(readyReplicas=0,updatedReplicas=0) + objects['application']['spec']['source']['targetRevision']=REVISION + self.assertTrue(self.execute_fake(objects,payload)[0]['all_checks_pass']) + for defect in ('healthy','baseline','wrongsource'): + o,p=copy.deepcopy(objects),copy.deepcopy(payload) + if defect=='healthy':o['deployment']['status']['readyReplicas']=1 + elif defect=='baseline':o['deployment']['spec']['template']['spec']['containers'][0]['image']=p['sealed']['spec']['template']['spec']['containers'][0]['image'] + else:o['application']['spec']['source']['targetRevision']='other' + receipt,writes,calls=self.execute_fake(o,p);self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[]) + + def test_native_recovery_window_rechecked_immediately_before_effect(self): + objects,payload=self.fixture();payload.update(phase='rollback',outage_recovery=True,recovery_release_started_at=(datetime.datetime.now(datetime.timezone.utc)-datetime.timedelta(seconds=1700)).isoformat()) + objects['deployment']['spec']['template']['spec']['containers'][0]['image']=actuator.IMAGE + objects['deployment']['status'].update(readyReplicas=0,updatedReplicas=0) + objects['application']['spec']['source']['targetRevision']=REVISION + receipt,writes,calls=self.execute_fake(objects,payload,expire_recovery_before_effect=True) + self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[]) + self.assertTrue(any('--dry-run=server' in argv and argv[:2]==['kubectl','patch'] for argv in calls)) + + +class FullCliDispatch(unittest.TestCase): + def invoke(self,phase,corrupt_source=False,outage=False,denial=False): + import hashlib,shutil + import authority_journal + realpath=Path;called=[];output=io.StringIO() + with tempfile.TemporaryDirectory() as folder: + base=Path(folder);custody=base/'private';custody.mkdir(mode=0o700) + empty=custody/'empty-docker-config';empty.mkdir(mode=0o700) + owner=base/'owner';owner.mkdir();case=owner/'case';case.mkdir();execution=case/'execution';execution.mkdir() + for name in ('actuator.py','authority_journal.py','native_program.py','receipt_safety.py'): + shutil.copyfile(Path(__file__).parent/name,execution/name) + (case/'memo.json').write_text('{}') + for name in ('sealed-live-deployment.json','sealed-native-dependencies.json','candidate-deployment.json','rollback-deployment.json','check_installed.py','sqlite_readonly.py','change_guard.py','installed-zlib-proof.json','fresh-scan-contract.json'): + shutil.copyfile(CASE/name,case/name) + names=('deploy/lifecycle/admission.candidate.json','deploy/lifecycle/service.candidate.json','deploy/lifecycle/kustomization.yaml','deploy/lifecycle/registries.candidate.json') + for name in names: + target=owner/name;target.parent.mkdir(parents=True,exist_ok=True);target.write_text('sourcefixture') + plan={'state':'prepared-unapproved','published_artifact_verified':True,'proposal_id':'INFD-WP-0009-T05/zlib85091-r1','executor_files':{n:actuator.sha(execution/n) for n in ('actuator.py','authority_journal.py','native_program.py','receipt_safety.py')},'case_files':{p.name:actuator.sha(p) for p in case.iterdir() if p.is_file() and p.name!='memo.json'},'owner_source_files':{n:actuator.sha(owner/n) for n in names}} + (execution/'execution-plan.json').write_text(json.dumps(plan)) + receipt,outcome=accepted();receipt.update(native_outcome_sha256=hashlib.sha256(json.dumps(outcome).encode()).hexdigest(),executor_plan_sha256=actuator.sha(execution/'execution-plan.json')) + mapping={} + for fixed,data in [('/tmp/security-infd-zlib-root-authority.json',receipt),('/tmp/security-infd-zlib-native-outcome-latest.json',outcome),('/tmp/security-infd-zlib-fresh-scan-receipt.json',{'fixture':True}),('/tmp/security-infd-zlib-fresh-scan-full.json',{'fixture':True})]: + target=base/Path(fixed).name;target.write_text(json.dumps(data));target.chmod(0o600);mapping[fixed]=target + scanreceipt=mapping['/tmp/security-infd-zlib-fresh-scan-receipt.json'];scanreceipt.write_text(json.dumps({'full_report_sha256':actuator.sha(mapping['/tmp/security-infd-zlib-fresh-scan-full.json'])})) + identity={'proposal':plan['proposal_id'],'source_revision':REVISION,'memo_sha256':actuator.sha(case/'memo.json'),'plan_sha256':actuator.sha(execution/'execution-plan.json')} + blob=b'private synthetic full-cli snapshot';metadata={'all_checks_pass':True,'snapshot_file':'drill.sqlite','snapshot_bytes':len(blob),'snapshot_sha256':hashlib.sha256(blob).hexdigest(),'snapshot_readonly':COUNT,'pod_name':'fixture-pod','pod_uid':'fixture-poduid'} + j=Journal(custody,identity) + predecessors=list(actuator.PHASES[:actuator.PHASES.index(phase)]) + for predecessor in predecessors: + j.start(predecessor,{}) + result=metadata if predecessor=='drill-backup' else {'all_checks_pass':True} + if predecessor in ('release','rollback'):result={'all_checks_pass':True,'operation_requested':True,'prune':False,'source_revision':REVISION,'resources':[{'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'}]} + j.finish(predecessor,result) + j.close() + if outage: + receipt.update(memo_sha256=identity['memo_sha256'],bounded_outage_rollback_pre_authorized=True,verified_at='2026-10-11T01:59:00Z',accepted_at='2026-10-11T01:58:00Z') + outcome['dispositions'][0]['disposition']['at']=receipt['accepted_at'] + cache={'root_authority':receipt,'native_outcome':copy.deepcopy(outcome),'memo_sha256':identity['memo_sha256'],'source_revision':REVISION,'plan_sha256':identity['plan_sha256']} + cp=custody/'release-authority-cache.json';cp.write_text(json.dumps(cache));cp.chmod(0o600) + data=json.loads(j.path.read_text());data['phases']['release'].update(started_at='2026-10-11T01:59:30Z',release_authority_cache_sha256=actuator.sha(cp));j.path.write_text(json.dumps(data)) + sealed=json.loads((case/'sealed-live-deployment.json').read_text());deps=json.loads((case/'sealed-native-dependencies.json').read_text()) + probe={'kind':'informed-decision.root-supervised-outage-recovery','proposal_id':plan['proposal_id'],'source_revision':REVISION,'memo_sha256':identity['memo_sha256'],'phase':phase,'release_attempt_id':data['phases']['release']['attempt_id'],'cache_sha256':actuator.sha(cp),'root_verified':True,'manual_supervised_recovery':True,'current_native_outcomes_claimed':False,'observed_at':NOW.isoformat(),'native_probe_status':503,'explicit_revoked':False,'current_conflict':False,'identity_or_scope_mismatch':False,'service_healthy':False,'deployment_uid':sealed['metadata']['uid'],'configmap_uid':deps['configmap']['metadata']['uid'],'pvc_uid':deps['pvc']['metadata']['uid'],'rollback_image':sealed['spec']['template']['spec']['containers'][0]['image'],'rollback_source':'c96b0c6d881e855d1d158003c6de90ef390262e2','failed_candidate':{'image':actuator.IMAGE,'application_source':REVISION,'ready_replicas':0}} + if phase=='rollback-verify': + witness=copy.deepcopy(probe);witness['phase']='rollback' + probe.update(original_outage_receipt_sha256='d'*64,recovered_image=probe['rollback_image'],recovered_application_source=probe['rollback_source'],ready_replicas=1) + probe.pop('failed_candidate') + data['phases']['rollback'].update(outage_recovery_receipt_sha256='d'*64,outage_recovery_anchor=witness) + data['phases']['rollback']['result']['source_revision']=probe['rollback_source'] + j.path.write_text(json.dumps(data)) + rp=base/'root-recovery.json';rp.write_text(json.dumps(probe));rp.chmod(0o600);mapping['/tmp/security-infd-zlib-root-recovery-receipt.json']=rp + if denial:outcome['http_status']=403 + native=mapping['/tmp/security-infd-zlib-native-outcome-latest.json'];native.write_text(json.dumps(outcome));receipt['native_outcome_sha256']=actuator.sha(native);mapping['/tmp/security-infd-zlib-root-authority.json'].write_text(json.dumps(receipt)) + if corrupt_source:(owner/names[0]).write_text('changed') + def mapped(value):return mapping.get(str(value),realpath(value)) + def run(argv,body=None,**kwargs): + if argv[:4]==['git','-C',str(owner),'rev-parse']:return subprocess.CompletedProcess(argv,0,REVISION+'\n','') + if argv[:4]==['git','-C',str(base),'check-ignore']:return subprocess.CompletedProcess(argv,0,'ignored','') + if argv[:2]==['ssh','railiance01']: + import ast + parsed=ast.parse(body);node=next(x for x in parsed.body if isinstance(x,ast.Assign) and any(isinstance(t,ast.Name) and t.id=='payload' for t in x.targets));payload=json.loads(ast.literal_eval(node.value.args[0]));called.append(payload) + self.assertEqual(json.loads(j.path.read_text())['phases'][phase]['state'],'RUNNING') + if phase=='drill-copy':self.assertEqual(payload['snapshot_identity'],metadata) + if phase in ('verify','rollback-verify'):self.assertEqual(payload['operation_intent']['state'],'COMPLETE');self.assertFalse(payload['operation_intent']['result']['prune']) + result=metadata if phase=='drill-copy' else {'all_checks_pass':True,'phase':phase} + return subprocess.CompletedProcess(argv,0,json.dumps(result),'') + raise AssertionError('unexpected CLI transport') + def git_show(argv,**kwargs): + self.assertEqual(argv[:4],['git','-C',str(owner),'show']);data=(owner/argv[4].split(':',1)[1]).read_bytes();return subprocess.CompletedProcess(argv,0,data,b'') + real_popen=subprocess.Popen + def binary(*args,**kwargs):return real_popen([sys.executable,'-c','import sys;sys.stdout.buffer.write('+repr(blob)+')'],stdout=subprocess.PIPE,stderr=subprocess.DEVNULL) + argv=['actuator.py','--phase',phase,'--root-authority-receipt','/tmp/security-infd-zlib-root-authority.json','--root-native-outcome','/tmp/security-infd-zlib-native-outcome-latest.json','--root-fresh-scan-receipt','/tmp/security-infd-zlib-fresh-scan-receipt.json','--source-revision',REVISION] + if outage:argv+=['--root-recovery-receipt','/tmp/security-infd-zlib-root-recovery-receipt.json'] + real_recovery=authority_journal.recovery_authority;real_authority=authority_journal.authority + def authority_dispatch(*args,**kwargs): + if outage and len(args)<6:raise ValueError('service unavailable') + return real_authority(*args,**kwargs) if outage else {'fixture':True} + with patch.object(actuator,'ROOT',execution),patch.object(actuator,'CASE',case),patch.object(actuator,'OWNER',owner),patch.object(actuator,'CUSTODIAN',base),patch.object(actuator,'CUSTODY',custody),patch.object(actuator,'Path',side_effect=mapped),patch.object(actuator,'run',side_effect=run),patch('subprocess.run',side_effect=git_show),patch('subprocess.Popen',side_effect=binary),patch.object(authority_journal,'authority',side_effect=authority_dispatch),patch.object(authority_journal,'recovery_authority',side_effect=lambda *args: real_recovery(*args,now=NOW)),patch.object(authority_journal,'fresh_scan',return_value={'fixture':True}),patch('sys.argv',argv),redirect_stdout(output): + if corrupt_source or denial: + with self.assertRaises(ValueError):actuator.main() + else:actuator.main() + state=json.loads(j.path.read_text())['phases'].get(phase) + return called,state,output.getvalue() + + def test_main_cli_copy_binds_snapshot_and_retains_private_bytes(self): + calls,state,output=self.invoke('drill-copy');self.assertEqual(len(calls),2);self.assertEqual(state['state'],'COMPLETE');self.assertNotIn('private synthetic',output) + + def test_main_cli_verify_binds_completed_release_intent(self): + calls,state,output=self.invoke('verify');self.assertEqual(len(calls),1);self.assertEqual(state['state'],'COMPLETE') + + def test_main_cli_release_dispatches_only_after_durable_phase(self): + calls,state,output=self.invoke('release');self.assertEqual(len(calls),1);self.assertEqual(state['state'],'COMPLETE') + + def test_main_cli_source_hash_refuses_before_journal_or_transport(self): + calls,state,output=self.invoke('release',corrupt_source=True);self.assertEqual(calls,[]);self.assertIsNone(state);self.assertEqual(output,'') + + def test_main_cli_bounded_outage_rollback_uses_retained_cache_and_witness(self): + calls,state,output=self.invoke('rollback',outage=True) + self.assertEqual(len(calls),1);self.assertTrue(calls[0]['outage_recovery']) + self.assertEqual(state['state'],'COMPLETE');self.assertIn('outage_recovery_receipt_sha256',state) + self.assertFalse(state['approval']['current_revocation_verified']) + + def test_main_cli_current403_prevents_cached_fallback_before_phase(self): + calls,state,output=self.invoke('rollback',outage=True,denial=True) + self.assertEqual(calls,[]);self.assertIsNone(state);self.assertEqual(output,'') + + def test_main_cli_outage_recovery_verify_binds_prior_completed_rollback(self): + calls,state,output=self.invoke('rollback-verify',outage=True) + self.assertEqual(len(calls),1);self.assertTrue(calls[0]['outage_recovery']) + self.assertEqual(calls[0]['operation_intent']['state'],'COMPLETE') + self.assertEqual(state['state'],'COMPLETE');self.assertFalse(state['approval']['current_revocation_verified']) + + +class PacketBindingAndBodyLimit(unittest.TestCase): + def test_lossless_gzip_bundle_retains_exact_source_hashes(self): + import gzip,base64,hashlib + bundle=json.loads((CASE/'execution-bundle.json').read_text()) + for group in ('files','case_evidence'): + for relative,item in bundle[group].items(): + data=gzip.decompress(base64.b64decode(item['content_base64'],validate=True)) + self.assertEqual(len(data),item['uncompressed_bytes']);self.assertEqual(hashlib.sha256(data).hexdigest(),item['sha256']) + self.assertEqual(data,(CASE/relative).read_bytes()) + item=next(iter(bundle['files'].values()));changed=bytearray(base64.b64decode(item['content_base64']));changed[-1]^=1 + with self.assertRaises((OSError,EOFError)):gzip.decompress(changed) + + def test_actual_source_http_256kib_limit_before_register_side_effect(self): + import os + script="""import io,json,sys +sys.dont_write_bytecode=True +sys.path.insert(0,'/home/worsch/informed-decision') +from informed_decision.lifecycle_http import LifecycleAPI,MAX_BODY +from informed_decision.lifecycle_service import Caller +from informed_decision.lifecycle_service import LifecycleError +from informed_decision.intake import validate_submission,SubmitterGrant +from informed_decision.lifecycle_commands import decode_memo,decode_documents +from pathlib import Path +root=Path(sys.argv[1]);commands=json.loads((root/'lifecycle-commands.json').read_text());envelope=json.loads((root/'intake.json').read_text()) +validate_submission(envelope,submitter_id='state-hub',grant=SubmitterGrant('state-hub',frozenset({'decision-record'}),frozenset({'net-kingdom-admins'}))) +class Service: + calls=0 + def _caller(self,caller):pass + def register(self,*args,**kwargs):self.calls+=1;return 'fixture-event' +service=Service();api=LifecycleAPI(service,lambda token:object.__new__(Caller)) +typedmemo=decode_memo(commands[0]['register']['memo']);decode_documents(commands[0]['register']['documents'],typedmemo) +try:decode_documents(commands[0]['register']['documents']+[commands[0]['register']['documents'][0]],typedmemo) +except ValueError:pass +else:raise AssertionError('duplicate digest accepted') +body=json.dumps(commands[0]['register']).encode();assert len(body)<240*1024 +base={'REQUEST_METHOD':'POST','PATH_INFO':'/v1/decisions','QUERY_STRING':'','CONTENT_TYPE':'application/json','HTTP_AUTHORIZATION':'Bearer synthetic-fixture','HTTP_IDEMPOTENCY_KEY':'fixture'} +status,result=api.dispatch({**base,'CONTENT_LENGTH':str(len(body)),'wsgi.input':io.BytesIO(body)});assert status==200 and service.calls==1 +oversize=b' '+body+b' '*(MAX_BODY+1-len(body)-1) +try:api.dispatch({**base,'CONTENT_LENGTH':str(len(oversize)),'wsgi.input':io.BytesIO(oversize)}) +except LifecycleError as e:assert e.status==413 +else:raise AssertionError('oversize accepted') +assert service.calls==1 +print(json.dumps({'synthetic_body_limit_verified':True,'intake_validated':True,'register_bytes':len(body)})) +""" + result=subprocess.run([sys.executable,'-c',script,str(CASE)],capture_output=True,text=True,env={**os.environ,'PYTHONDONTWRITEBYTECODE':'1'}) + self.assertEqual(result.returncode,0,result.stderr);self.assertTrue(json.loads(result.stdout)['synthetic_body_limit_verified']) + + +class OutcomeMetadataAndOutage(unittest.TestCase): + def load_probe(self): + import runpy + return runpy.run_path(str(CASE/'post-ready-native-outcomes-command.py')) + + + def outcome(self): + # Actual native shape: ONLYreview/dispositions; top identity absent. + return {'review':{'memo_id':'review-22222222-2222-4222-8222-222222222222','intake_state':'not_submitted','stale':False,'unknown':'PRIVATE_SENTINEL'},'dispositions':[{'disposition':{'verb':'comment','actor':{'kind':'system','sub':'system:fixture'},'note':'PRIVATE_SENTINEL','reasons':['PRIVATE_SENTINEL']},'submission_state':None,'approved_at':None}]+[{'disposition':{'verb':'accept','actor':{'kind':'person','sub':'uid=fixture'},'note':'PRIVATE_SENTINEL'},'submission_state':state,'approved_at':None} for state in ('prepared','in_flight','confirmed','unresolved')],'unknown':'PRIVATE_SENTINEL'} + + def test_counts_only_omit_entire_private_native_body_and_never_infer_go(self): + probe=self.load_probe();body=self.outcome();self.assertNotIn('memo_id',body) + safe=probe['safe_outcome_metadata'](body);raw=json.dumps(safe) + self.assertNotIn('PRIVATE_SENTINEL',raw);self.assertNotIn('note',raw);self.assertNotIn('reasons',raw);self.assertNotIn('actor',raw);self.assertNotIn('submission_state',raw) + self.assertEqual(safe['disposition_count'],5);self.assertFalse(safe['approval_inferred']);self.assertFalse(safe['current_approval_claimed']);self.assertFalse(safe['dispositions_interpreted']) + self.assertEqual(safe['request_identity_source'],'fixed-authenticated-route') + self.assertFalse(probe['safe_outcome_metadata']({'review':None,'dispositions':[]})['has_review']) + + def test_five_native_shape_counterexamples_refuse_without_echo(self): + probe=self.load_probe() + mutations=[lambda o:o.update(review=['PRIVATE_SENTINEL']),lambda o:o.update(dispositions='PRIVATE_SENTINEL'),lambda o:o.update(dispositions=[None]),lambda o:o.update(memo_id='PRIVATE_SENTINEL'),lambda o:o.update(version=True),lambda o:o.update(dispositions=[{}]*1025)] + for mutate in mutations: + o=self.outcome();mutate(o) + with self.assertRaises(ValueError) as error:probe['safe_outcome_metadata'](o) + self.assertNotIn('PRIVATE_SENTINEL',str(error.exception)) + + def test_actual_source_lifecycle_outcomes_native_shape_without_real_database(self): + import contextlib,types,os + script="""import contextlib,json,sys,types,runpy +sys.dont_write_bytecode=True +sys.path.insert(0,'/home/worsch/informed-decision') +from informed_decision.lifecycle_service import LifecycleService +from pathlib import Path +probe=runpy.run_path(str(Path(sys.argv[1])/'post-ready-native-outcomes-command.py')) +class Rows(list): + def fetchone(self):return self[0] if self else None +class DB: + def __init__(self,reviewed,ledger):self.reviewed,self.ledger=reviewed,ledger + def execute(self,sql,params): + if 'FROM lifecycle_events' in sql:return Rows([{'body':json.dumps({'review_memo_id':'review-22222222-2222-4222-8222-222222222222'})}] if self.reviewed else []) + if 'FROM intake_ledger' in sql:return Rows([{'state':self.ledger}] if self.ledger is not None else []) + if 'FROM dispositions' in sql:return Rows([{'body':json.dumps({'id':'fixture-comment','verb':'comment','actor':{'kind':'system','sub':'system:fixture'},'note':'PRIVATE_SENTINEL','reasons':['PRIVATE_SENTINEL']}),'state':None,'approved_at':None}]+[{'body':json.dumps({'id':'fixture-accept','verb':'accept','note':'PRIVATE_SENTINEL'}),'state':state,'approved_at':None} for state in ('prepared','in_flight','confirmed','unresolved')]) + raise AssertionError('unexpected native outcomes query') +for reviewed,ledger in [(False,None),(True,None),(True,'intake_created'),(True,'ready')]: + db=DB(reviewed,ledger) + @contextlib.contextmanager + def connection():yield db + store=types.SimpleNamespace(_connection=connection,_memo=lambda *args:types.SimpleNamespace(version=1)) + repository=types.SimpleNamespace(store=store,_record=lambda *args:None) + service=object.__new__(LifecycleService);service.repository=repository;calls=[] + service._authorize=lambda caller,memo,action,attrs:(lambda:calls.append('current'),None) + body=service.outcomes(types.SimpleNamespace(attribution=types.SimpleNamespace(tenant='synthetic')),probe['MEMO_ID'],1) + assert set(body)=={'review','dispositions'} and 'memo_id' not in body and calls==['current'] + result=probe['safe_outcome_metadata'](body) + assert result['has_review']==reviewed and result['disposition_count']==(5 if reviewed else 0) + assert result['approval_inferred'] is False and result['current_approval_claimed'] is False and 'PRIVATE_SENTINEL' not in json.dumps(result) +print(json.dumps({'actual_source_outcomes_shape_verified':True,'real_database_opened':False,'provider_called':False})) +""" + result=subprocess.run([sys.executable,'-c',script,str(CASE)],capture_output=True,text=True,env={**os.environ,'PYTHONDONTWRITEBYTECODE':'1'}) + self.assertEqual(result.returncode,0,result.stderr);self.assertTrue(json.loads(result.stdout)['actual_source_outcomes_shape_verified']) + + def test_actual_command_mocked_opener_never_prints_private_fields(self): + import types,runpy,urllib.request + module=types.ModuleType('api.services.memo_dispatch');module.ORIGIN='http://synthetic.invalid';module.NoRedirect=urllib.request.HTTPRedirectHandler;module.token_file=lambda path:'synthetic-fixture' + class Response: + status=200 + def __enter__(self):return self + def __exit__(self,*args):pass + def read(self,bound):return json.dumps(OutcomeMetadataAndOutage.outcome(self_test)).encode() + self_test=self + class Opener: + def open(self,request,timeout):return Response() + output=io.StringIO() + with patch.dict('sys.modules',{'api.services.memo_dispatch':module}),patch('urllib.request.build_opener',return_value=Opener()),redirect_stdout(output): + runpy.run_path(str(CASE/'post-ready-native-outcomes-command.py'),run_name='__main__') + self.assertNotIn('PRIVATE_SENTINEL',output.getvalue());self.assertNotIn('synthetic-fixture',output.getvalue()) + self.assertTrue(json.loads(output.getvalue())['native_provider_path_returned']) + + + def test_actual_command_private_token_error_and_http403_never_echo_body(self): + import types,runpy,urllib.request,urllib.error + module=types.ModuleType('api.services.memo_dispatch');module.ORIGIN='http://synthetic.invalid';module.NoRedirect=urllib.request.HTTPRedirectHandler + def token_failure(path):raise ValueError('PRIVATE_SENTINEL') + for failure in ('token','http403'): + output=io.StringIO();module.token_file=token_failure if failure=='token' else lambda path:'synthetic-fixture' + class Opener: + def open(self,*args,**kwargs):raise urllib.error.HTTPError('http://synthetic.invalid',403,'PRIVATE_SENTINEL',{},io.BytesIO(b'PRIVATE_SENTINEL')) + with patch.dict('sys.modules',{'api.services.memo_dispatch':module}),patch('urllib.request.build_opener',return_value=Opener()),redirect_stdout(output): + with self.assertRaises(SystemExit):runpy.run_path(str(CASE/'post-ready-native-outcomes-command.py'),run_name='__main__') + raw=output.getvalue();self.assertNotIn('PRIVATE_SENTINEL',raw);self.assertNotIn('synthetic-fixture',raw) + receipt=json.loads(raw);self.assertEqual(receipt['status'],'unverified');self.assertNotIn('native_provider_path_returned',receipt) + if failure=='http403':self.assertEqual(receipt['http_status'],403) + + def recovery_fixture(self): + receipt,outcome=accepted();receipt.update(bounded_outage_rollback_pre_authorized=True,verified_at='2026-10-11T01:59:00Z',accepted_at='2026-10-11T01:58:00Z') + outcome['dispositions'][0]['disposition']['at']=receipt['accepted_at'] + sealed=json.loads((CASE/'sealed-live-deployment.json').read_text());deps=json.loads((CASE/'sealed-native-dependencies.json').read_text()) + cache={'root_authority':receipt,'native_outcome':outcome,'memo_sha256':'a'*64,'source_revision':REVISION,'plan_sha256':'b'*64} + journal={'identity':{'plan_sha256':'b'*64},'phases':{'release':{'state':'COMPLETE','started_at':'2026-10-11T01:59:30Z','attempt_id':'release-fixture','release_authority_cache_sha256':'c'*64}}} + probe={'kind':'informed-decision.root-supervised-outage-recovery','proposal_id':'INFD-WP-0009-T05/zlib85091-r1','source_revision':REVISION,'memo_sha256':'a'*64,'phase':'rollback','release_attempt_id':'release-fixture','cache_sha256':'c'*64,'root_verified':True,'manual_supervised_recovery':True,'current_native_outcomes_claimed':False,'observed_at':NOW.isoformat(),'native_probe_status':503,'explicit_revoked':False,'current_conflict':False,'identity_or_scope_mismatch':False,'service_healthy':False,'deployment_uid':sealed['metadata']['uid'],'configmap_uid':deps['configmap']['metadata']['uid'],'pvc_uid':deps['pvc']['metadata']['uid'],'rollback_image':sealed['spec']['template']['spec']['containers'][0]['image'],'rollback_source':'c96b0c6d881e855d1d158003c6de90ef390262e2','failed_candidate':{'image':actuator.IMAGE,'application_source':REVISION,'ready_replicas':0}} + return probe,cache,journal,sealed,deps + + def test_explicit_manual_cached_acceptance_only_outage_recovery(self): + probe,cache,journal,sealed,deps=self.recovery_fixture() + result=recovery_authority(probe,cache,journal,'a'*64,REVISION,sealed,deps,'rollback',NOW) + self.assertTrue(result['bounded_outage_recovery']);self.assertFalse(result['current_revocation_verified']) + mutations=[lambda p,c,j:p.update(native_probe_status=401),lambda p,c,j:p.update(native_probe_status=403),lambda p,c,j:p.update(explicit_revoked=True),lambda p,c,j:p.update(current_conflict=True),lambda p,c,j:p.update(identity_or_scope_mismatch=True),lambda p,c,j:p.update(service_healthy=True),lambda p,c,j:p.update(deployment_uid='recreated'),lambda p,c,j:p.update(source_revision='other'),lambda p,c,j:p.update(configmap_uid='recreated'),lambda p,c,j:p.update(pvc_uid='recreated'),lambda p,c,j:p['failed_candidate'].update(ready_replicas=1),lambda p,c,j:j['phases'].pop('release'),lambda p,c,j:c['root_authority'].update(bounded_outage_rollback_pre_authorized=False),lambda p,c,j:j['phases']['release'].update(started_at='2026-10-11T01:00:00Z')] + for mutate in mutations: + p,c,j=copy.deepcopy(probe),copy.deepcopy(cache),copy.deepcopy(journal);mutate(p,c,j) + with self.assertRaises(ValueError):recovery_authority(p,c,j,'a'*64,REVISION,sealed,deps,'rollback',NOW) + with self.assertRaises(ValueError):recovery_authority(probe,cache,journal,'a'*64,REVISION,sealed,deps,'release',NOW) + late=datetime.datetime(2026,10,13,tzinfo=datetime.timezone.utc) + with self.assertRaises(ValueError):recovery_authority(probe,cache,journal,'a'*64,REVISION,sealed,deps,'rollback',late) + + def test_recovery_verify_requires_completed_prior_rollback_and_recovered_baseline(self): + probe,cache,journal,sealed,deps=self.recovery_fixture();probe.update(phase='rollback-verify',original_outage_receipt_sha256='d'*64,recovered_image=probe['rollback_image'],recovered_application_source=probe['rollback_source'],ready_replicas=1) + journal['phases']['rollback']={'state':'COMPLETE','outage_recovery_receipt_sha256':'d'*64,'outage_recovery_anchor':{'failed_candidate':probe.pop('failed_candidate')}} + self.assertTrue(recovery_authority(probe,cache,journal,'a'*64,REVISION,sealed,deps,'rollback-verify',NOW)['bounded_outage_recovery']) + for defect in ('state','link','image','source','ready'): + p,j=copy.deepcopy(probe),copy.deepcopy(journal) + if defect=='state':j['phases']['rollback']['state']='UNCERTAIN' + elif defect=='link':p['original_outage_receipt_sha256']='other' + elif defect=='image':p['recovered_image']=actuator.IMAGE + elif defect=='source':p['recovered_application_source']=REVISION + else:p['ready_replicas']=0 + with self.assertRaises(ValueError):recovery_authority(p,cache,j,'a'*64,REVISION,sealed,deps,'rollback-verify',NOW) + + +if __name__ == '__main__': + unittest.main() diff --git a/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json b/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json new file mode 100644 index 0000000..516ef23 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json @@ -0,0 +1,358 @@ +{ + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ], + "image_config_rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + }, + "image_source_labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "os": { + "Family": "alpine", + "Name": "3.24.1" + }, + "inventory": [ + [ + "lang-pkgs", + "python-pkg", + "PyJWT", + "2.15.1", + "pkg:pypi/pyjwt@2.15.1" + ], + [ + "lang-pkgs", + "python-pkg", + "cffi", + "2.1.1", + "pkg:pypi/cffi@2.1.1" + ], + [ + "lang-pkgs", + "python-pkg", + "cryptography", + "50.0.1", + "pkg:pypi/cryptography@50.0.1" + ], + [ + "lang-pkgs", + "python-pkg", + "informed-decision", + "0.2.0", + "pkg:pypi/informed-decision@0.2.0" + ], + [ + "lang-pkgs", + "python-pkg", + "pycparser", + "3.0", + "pkg:pypi/pycparser@3.0" + ], + [ + "lang-pkgs", + "python-pkg", + "waitress", + "3.0.2", + "pkg:pypi/waitress@3.0.2" + ], + [ + "os-pkgs", + "alpine", + ".python-rundeps", + "20260901.001029", + "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-baselayout", + "3.7.2-r1", + "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-baselayout-data", + "3.7.2-r1", + "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-keys", + "2.6-r0", + "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-release", + "3.24.1-r0", + "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "apk-tools", + "3.0.6-r0", + "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "busybox", + "1.37.0-r31", + "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "busybox-binsh", + "1.37.0-r31", + "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ca-certificates", + "20260611-r0", + "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ca-certificates-bundle", + "20260611-r0", + "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "gdbm", + "1.26-r0", + "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "keyutils-libs", + "1.6.3-r4", + "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "krb5-conf", + "1.0-r2", + "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "krb5-libs", + "1.22.2-r1", + "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libapk", + "3.0.6-r0", + "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libbz2", + "1.0.8-r6", + "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libcom_err", + "1.47.4-r0", + "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libcrypto3", + "3.5.8-r0", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libffi", + "3.5.2-r1", + "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libintl", + "1.0-r0", + "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libncursesw", + "6.6_p20260516-r0", + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libnsl", + "2.0.1-r2", + "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libpanelw", + "6.6_p20260516-r0", + "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libssl3", + "3.5.8-r0", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libtirpc", + "1.3.5-r1", + "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libtirpc-conf", + "1.3.5-r1", + "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libuuid", + "2.42.3-r1", + "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libverto", + "0.3.2-r2", + "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "musl", + "1.2.6-r2", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "musl-utils", + "1.2.6-r2", + "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ncurses-terminfo-base", + "6.6_p20260516-r0", + "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "readline", + "8.3.3-r1", + "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "scanelf", + "1.3.9-r1", + "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "sqlite-libs", + "3.53.4-r0", + "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ssl_client", + "1.37.0-r31", + "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "tzdata", + "2026c-r0", + "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "xz-libs", + "5.8.3-r0", + "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "zlib", + "1.3.2-r1", + "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + ] + ], + "inventory_canonical_sha256": "1fd5bfb2d7c04a7316a283adbea0f54f04f0c5acbb218b11e0c5677bfe87c464", + "published_fullreport_sha256": "2ff68e765b9c65292611d5a969202a7654637168edefcedac5d2c7634009edae", + "publication_manifest_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "scope": "Exact immutable published archive identity and inventory; findings must be checked anew on fresh DB." +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json b/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json new file mode 100644 index 0000000..3af5f7a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json @@ -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-zlib-image-release/fresh-scan-report-fixture.json b/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json new file mode 100644 index 0000000..72ead0f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json @@ -0,0 +1,373 @@ +{ + "SchemaVersion": 2, + "ArtifactType": "container_image", + "Metadata": { + "ImageID": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "DiffIDs": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ], + "OS": { + "Family": "alpine", + "Name": "3.24.1" + }, + "ImageConfig": { + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + }, + "config": { + "Labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + } + } + } + }, + "Results": [ + { + "Class": "os-pkgs", + "Type": "alpine", + "Packages": [ + { + "Name": ".python-rundeps", + "Version": "20260901.001029", + "Identifier": { + "PURL": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1" + } + }, + { + "Name": "alpine-baselayout", + "Version": "3.7.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-baselayout-data", + "Version": "3.7.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-keys", + "Version": "2.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-release", + "Version": "3.24.1-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "apk-tools", + "Version": "3.0.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "busybox", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "busybox-binsh", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ca-certificates", + "Version": "20260611-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ca-certificates-bundle", + "Version": "20260611-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "gdbm", + "Version": "1.26-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "keyutils-libs", + "Version": "1.6.3-r4", + "Identifier": { + "PURL": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "krb5-conf", + "Version": "1.0-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "krb5-libs", + "Version": "1.22.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libapk", + "Version": "3.0.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libbz2", + "Version": "1.0.8-r6", + "Identifier": { + "PURL": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libcom_err", + "Version": "1.47.4-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libcrypto3", + "Version": "3.5.8-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libffi", + "Version": "3.5.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libintl", + "Version": "1.0-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libncursesw", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libnsl", + "Version": "2.0.1-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libpanelw", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libssl3", + "Version": "3.5.8-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libtirpc", + "Version": "1.3.5-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libtirpc-conf", + "Version": "1.3.5-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libuuid", + "Version": "2.42.3-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libverto", + "Version": "0.3.2-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "musl", + "Version": "1.2.6-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "musl-utils", + "Version": "1.2.6-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ncurses-terminfo-base", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "readline", + "Version": "8.3.3-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "scanelf", + "Version": "1.3.9-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "sqlite-libs", + "Version": "3.53.4-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ssl_client", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "tzdata", + "Version": "2026c-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "xz-libs", + "Version": "5.8.3-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "zlib", + "Version": "1.3.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + } + } + ] + }, + { + "Class": "lang-pkgs", + "Type": "python-pkg", + "Packages": [ + { + "Name": "PyJWT", + "Version": "2.15.1", + "Identifier": { + "PURL": "pkg:pypi/pyjwt@2.15.1" + } + }, + { + "Name": "cffi", + "Version": "2.1.1", + "Identifier": { + "PURL": "pkg:pypi/cffi@2.1.1" + } + }, + { + "Name": "cryptography", + "Version": "50.0.1", + "Identifier": { + "PURL": "pkg:pypi/cryptography@50.0.1" + } + }, + { + "Name": "informed-decision", + "Version": "0.2.0", + "Identifier": { + "PURL": "pkg:pypi/informed-decision@0.2.0" + } + }, + { + "Name": "pycparser", + "Version": "3.0", + "Identifier": { + "PURL": "pkg:pypi/pycparser@3.0" + } + }, + { + "Name": "waitress", + "Version": "3.0.2", + "Identifier": { + "PURL": "pkg:pypi/waitress@3.0.2" + } + } + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json new file mode 100644 index 0000000..3708e0d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json @@ -0,0 +1,147 @@ +[ + { + "original_path": "deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json new file mode 100644 index 0000000..0b5744a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md new file mode 100644 index 0000000..b88546d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py new file mode 100644 index 0000000..b81024f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py new file mode 100644 index 0000000..2a0b2c8 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json new file mode 100644 index 0000000..9da2804 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json @@ -0,0 +1,59 @@ +{ + "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-awaiting-independent-owner-acknowledgments", + "executor_files": { + "actuator.py": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "authority_journal.py": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "native_program.py": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "receipt_safety.py": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + "case_files": { + "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", + "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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py new file mode 100644 index 0000000..04cb285 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py @@ -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(0 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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py new file mode 100644 index 0000000..27b8bb7 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py @@ -0,0 +1,393 @@ +"""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 +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) + + +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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json new file mode 100644 index 0000000..90bc2fc --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json @@ -0,0 +1,101 @@ +{ + "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:763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "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-plan-json", + "label": "execution-plan.json", + "hash": "sha256:9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + } + ], + "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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md b/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 new file mode 100644 index 0000000..5c0ac3a --- /dev/null +++ b/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 @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json new file mode 100644 index 0000000..5e12288 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json @@ -0,0 +1,37 @@ +{ + "kind": "informed-decision.supervised-release-proposal", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "trial_id": "infd-zlib-20261011-r1", + "state": "prepared-awaiting-independent-owner-acknowledgments", + "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": [ + "fresh rollback server admission", + "exact committed owner rendering revision", + "Product and Platform final acknowledgments", + "confirmed founder exact new disposition" + ], + "published_verification_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "native_readonly_preflight_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "executor_plan_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json @@ -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-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py @@ -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-zlib-image-release/initial-81adb9e1/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json new file mode 100644 index 0000000..2070570 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json @@ -0,0 +1,342 @@ +[ + { + "path": "deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "path": "deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "path": "deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "path": "deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "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", + "sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive": "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" + }, + { + "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", + "sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive": "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" + }, + { + "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", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "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" + }, + { + "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", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "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" + }, + { + "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", + "sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive": "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" + }, + { + "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", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive": "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" + }, + { + "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", + "sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "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" + }, + { + "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", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "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" + }, + { + "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", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json" + }, + { + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json new file mode 100644 index 0000000..269ae42 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md new file mode 100644 index 0000000..a56e107 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md @@ -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; 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. + +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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json new file mode 100644 index 0000000..5aae51c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py new file mode 100644 index 0000000..b897ef9 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py new file mode 100644 index 0000000..31cbd1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py @@ -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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py new file mode 100644 index 0000000..c0ce95b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json b/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 new file mode 100644 index 0000000..3af5f7a --- /dev/null +++ b/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 @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json b/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 new file mode 100644 index 0000000..3708e0d --- /dev/null +++ b/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 @@ -0,0 +1,147 @@ +[ + { + "original_path": "deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + } +] diff --git a/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 b/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 new file mode 100644 index 0000000..0b5744a --- /dev/null +++ b/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 @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json b/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 new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/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 @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml b/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 new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/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 @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json b/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 new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/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 @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/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 b/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 new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/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 @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/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 b/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 new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/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 @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/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 b/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 new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/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 @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-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 b/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 new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/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 @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/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 b/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 new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/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 @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/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 b/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 new file mode 100644 index 0000000..b88546d --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..b81024f --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..2a0b2c8 --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..9da2804 --- /dev/null +++ b/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 @@ -0,0 +1,59 @@ +{ + "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-awaiting-independent-owner-acknowledgments", + "executor_files": { + "actuator.py": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "authority_journal.py": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "native_program.py": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "receipt_safety.py": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + "case_files": { + "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", + "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-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 b/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 new file mode 100644 index 0000000..04cb285 --- /dev/null +++ b/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 @@ -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(0 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-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 b/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 new file mode 100644 index 0000000..27b8bb7 --- /dev/null +++ b/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 @@ -0,0 +1,393 @@ +"""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 +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) + + +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-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 b/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 new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..90bc2fc --- /dev/null +++ b/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 @@ -0,0 +1,101 @@ +{ + "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:763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "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-plan-json", + "label": "execution-plan.json", + "hash": "sha256:9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + } + ], + "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-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 b/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 new file mode 100644 index 0000000..5c0ac3a --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/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 @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/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 b/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 new file mode 100644 index 0000000..5e12288 --- /dev/null +++ b/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 @@ -0,0 +1,37 @@ +{ + "kind": "informed-decision.supervised-release-proposal", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "trial_id": "infd-zlib-20261011-r1", + "state": "prepared-awaiting-independent-owner-acknowledgments", + "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": [ + "fresh rollback server admission", + "exact committed owner rendering revision", + "Product and Platform final acknowledgments", + "confirmed founder exact new disposition" + ], + "published_verification_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "native_readonly_preflight_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "executor_plan_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" +} diff --git a/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 b/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 new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/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 @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/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 b/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/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 @@ -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-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 b/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 new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/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 @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/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 b/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 new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/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 @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json new file mode 100644 index 0000000..0e1ccaf --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json new file mode 100644 index 0000000..9806488 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json new file mode 100644 index 0000000..9074439 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md b/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 new file mode 100644 index 0000000..aca7f5c --- /dev/null +++ b/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 @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/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 b/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 new file mode 100644 index 0000000..41a876c --- /dev/null +++ b/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 @@ -0,0 +1,20 @@ +"""Run only inside existing admitted StateHub Pod AFTER verified candidate Ready. + +The fixed existing dispatcher loads its internal credential; root never reads +it. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an +advisory verdict emission or a substitute for separate evidence obligations. +Root records this bounded metadata receipt with verified PodUID/image/source. +This preparation only writes source; no request is made here. +""" +import datetime,json,urllib.request,urllib.error +from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file +id='infd-20261011-zlib-remediation-r1' +req=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) +opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) +try: + with opener.open(req,timeout=15) as response: + raw=response.read(1048577) + if len(raw)>1048576: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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json new file mode 100644 index 0000000..b861731 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json @@ -0,0 +1,39 @@ +{ + "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": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "execution_bundle_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "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" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json new file mode 100644 index 0000000..ff52810 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py @@ -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-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json new file mode 100644 index 0000000..99d5931 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json @@ -0,0 +1,13 @@ +{ + "kind": "source-only-native-authoring-packet", + "memo_id": "infd-20261011-zlib-remediation-r1", + "source_memo_version": 1, + "memo_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "intake_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "lifecycle_commands_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "register_bytes": 259129, + "document_count": 13, + "documents_hashes_verified": true, + "native_submitted": false, + "founder_approval": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md new file mode 100644 index 0000000..249eb1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md @@ -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-zlib-image-release/initial-f170b34d/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json new file mode 100644 index 0000000..50833f4 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json @@ -0,0 +1,860 @@ +[ + { + "repo": "informed-decision", + "path": "deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json" + }, + { + "repo": "informed-decision", + "path": "deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "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", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "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", + "sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "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", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "sha256": "b511ecca1f21626495ae07725f5761e251d3d4beca9e3be6e7cdfdfbfe2073bc", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "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", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json" + }, + { + "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", + "sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "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", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "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", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "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", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json" + }, + { + "repo": "informed-decision", + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json new file mode 100644 index 0000000..ee40b50 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md new file mode 100644 index 0000000..a56e107 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md @@ -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; 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. + +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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json new file mode 100644 index 0000000..52904d1 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json @@ -0,0 +1,185 @@ +{ + "kind": "informed-decision.supervised-execution-source-bundle", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "codec": "gzip+base64", + "files": { + "execution/actuator.py": { + "sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "codec": "gzip+base64", + "uncompressed_bytes": 22015, + "content_base64": "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" + }, + "execution/authority_journal.py": { + "sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "codec": "gzip+base64", + "uncompressed_bytes": 11502, + "content_base64": "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" + }, + "execution/execution-plan.json": { + "sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "codec": "gzip+base64", + "uncompressed_bytes": 4770, + "content_base64": "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" + }, + "execution/native_program.py": { + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "codec": "gzip+base64", + "uncompressed_bytes": 18899, + "content_base64": "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" + }, + "execution/receipt_safety.py": { + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "codec": "gzip+base64", + "uncompressed_bytes": 1036, + "content_base64": "H4sIAAAAAAACA42TTW/bMAyG7/kVnC9yiq4fA3bZ2t626y7DLkVgKDIdC1UkgZK8GsP++yjZSd00A6qTKNEPX76iq6r6Yc0IIVJSMZE0oFyy8bqXoQdChdrHAEpaMCgHhNgjeNKDjAj4jCpF7Sx4TserqqpWLXYTIdSDNAnXX1bAS3dQB4zzGXy4hz8iqB73shmQAjPEJQijO1SjMpgDl+LWPeddSNu9Djkp5FDbiDvScRSXhX1mCULZNo47azxh4zwWfoiOI8Wc0i624u8rgiMoAh9PtW2y4s+L+xcN5Uq4J/Ef0hklG9ABrIvwkxIui76Rd8z8Lk3A0wpHQx8Xzm1md/ntHLXFMByQ3yPvuHqr7e5t27nGAjd7z6y7zDp8xoQWjWZXWBsHW+PU0zkXT3DLBzwyCb2cOdo2ndG7PuaA++807aebZAmDM0MuMo9SXiR1QPiV6d+IHNWizNzH7PNhaiH00uN1iHlUCbsUsP06WR3gt459j6YV68LsWPOOXPKgLdTvmcOFGJ5tacc6jh5rm/ZbpPXh2XhMih3lFO7gZhE9wO3NxcXtp9MZ7l5SWMzkYNG2uZrE1+tF8Xe7MTc+GzH3Tcj//Fxk9Q8H4RSfDAQAAA==" + }, + "execution/test_execution.py": { + "sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "codec": "gzip+base64", + "uncompressed_bytes": 38465, + "content_base64": "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" + } + }, + "native_execution": false, + "case_evidence": { + "artifact-comparison.json": { + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "codec": "gzip+base64", + "uncompressed_bytes": 2697, + "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" + }, + "candidate-deployment.json": { + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "candidate-runtime.json": { + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "codec": "gzip+base64", + "uncompressed_bytes": 5291, + "content_base64": "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" + }, + "change_guard.py": { + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "codec": "gzip+base64", + "uncompressed_bytes": 3153, + "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" + }, + "check_installed.py": { + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "codec": "gzip+base64", + "uncompressed_bytes": 1912, + "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=" + }, + "fresh-scan-contract.json": { + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "codec": "gzip+base64", + "uncompressed_bytes": 9733, + "content_base64": "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" + }, + "fresh-scan-receipt-template.json": { + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "codec": "gzip+base64", + "uncompressed_bytes": 549, + "content_base64": "H4sIAAAAAAACA22RwY7cIAyG7/MUKOd2JxAgsKc+RO+RMWZLRcIskFFXVd+9JLOtVlWP/P7x99v+eWFsiCu80PDMhpDLC33PT5j3lFf3VDNGSNf35zVu3bCS/+wJY415+1K/gVD6OShlTJBWOx6Env04o0cblBgN6SCCkDzM0s2TRTFZId04zaPoXfgEqkvDpyMGlBYDYFtq3gvSUuh+Uo5k1knnhPJTx1kDpOREMxkwMOGkrPCdrEzAR6eKsG1Ujo/wukMlvLYS729/8mrhOGlFxmjrUDqJGkAGEE5wZVW34Iwi6JEbsN6C1xwhmJmbGbnV9kEJe0oLpFTpTiW2t+XAdmYrO52GLS91v90K1fcx/lboR2wLZn9sfettThHzekvUyC/QPureLSs18NDgH/kxzkfxzFTolkv7T3XL7bzzV+okaMRiZV1jfek7JNb37WlDYrkw6LnzHdJw+XX5DVUNbXAlAgAA" + }, + "fresh-scan-report-fixture.json": { + "sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "codec": "gzip+base64", + "uncompressed_bytes": 11944, + "content_base64": "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" + }, + "installed-zlib-proof.json": { + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "codec": "gzip+base64", + "uncompressed_bytes": 492, + "content_base64": "H4sIAAAAAAACA32QTW7CMBCF95wCZV2S8fifVe9RVdV47GlTAkGkbEDcvU6gq6q1ZGtm3vPTZ19X63XT7+m9NNt1I+PpvXyOLY/nYdyndhq5p6F7tF1/qIZ9yZtcuJ/68fA8fRBatxVrQxATXVKCzmfwnDmKRQjFCQoaJd4kryOjjmgSaA9YU5QmW0fN04xxGfr0diTePWhUq1vcnNRdlX4oUx1fa1Pb6u3ouOvyjDV90TCUXNWXRX3Yl4vzMgg/5e+iERvBO1TReQUFLUOJ4jETOINMOZDNnAiIYrGBoNbkrAsmq+oF1SxBr/e85jyduhmu7kv9wHZ5xd9kUf9DVphDilnY2JK8EMZkFIgQk0Prg9chQi5WpwBSovLaeu2TieA8W8EHWT1vq9vqG1zLL/rsAQAA" + }, + "native-preflight-full.json": { + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "codec": "gzip+base64", + "uncompressed_bytes": 21208, + "content_base64": "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" + }, + "native-preflight.json": { + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "codec": "gzip+base64", + "uncompressed_bytes": 1871, + "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" + }, + "post-ready-native-outcomes-command.py": { + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "codec": "gzip+base64", + "uncompressed_bytes": 1655, + "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" + }, + "preparation-failure-history.json": { + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "codec": "gzip+base64", + "uncompressed_bytes": 1070, + "content_base64": "H4sIAAAAAAACA5VSwW7bMAy99yuInIsuVq1IXu+7rQN2HYaAkqhYqC0ZkpwsG/bvo5rmsKLDtoNhmH4kH997P24ANhFrONKevCdbN+/B41Totv0JMdSA007tZ4zBU6n7MqKQO0ZtOuqNxPutFkPvpNZWGa8kSScUmV5J7MiJVrHaykH73hmhpfXbTvbKG7H50wpzrlT2mSqGSO4PhGyal4kq7Utas+VXxKWMqf6tL6ZKjf1jqnDtqeTAkE+ZYI0YY1qjJac7wJmi46c+wFNMpzhiGWHJVCgfyd0CfUNbIZNNsdS82hpSBFxdaBMLLZix0nSG4GFJpQQz0R08JiZmcrDYUHbCMEPycOUNKYdDiDjBsw53v8mku7ec0B06M1Cn+sHtjBt8NygpURjjlJGstx4IlRZ9L+W9MsZ4GoSkjpHaY69er/gXbfnci7Quo69ieIuXQtu53aAtGuG8cbQzdou6NxadE/ZeiMGJ3vfYoxw6IT0p0TKy86gFbV94XRf8HytqYS5c+sKfXPjIEHChLFgte4ilUIG0EDvEpu1DrGwz1MQ+zBwROIU6prXC3PAhHqCZOfP6/MyKJ36+ABc8TwkdTGifmutXVsHxwFDP714vufZ/4ByNUCxGOHAUAK2lpUWC5oXb+JR4iQjj1qmCTUcedGgZdZQhp1Q5eRQWJskKOKx4Hf3pFBuCjoFOnOwDxp16aNle+agcvjeetY2y45ojJHMJtO423P/1WcDCx+5r5kC8yHrz8+YXqlwcii4EAAA=" + }, + "published-verification.json": { + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "codec": "gzip+base64", + "uncompressed_bytes": 5912, + "content_base64": "H4sIAAAAAAACA31Y2W7cRhZ9z1cQerVbqn1RnpIoGQiTDZNlAA+CRi23JI5bpEKy5ShB/n1OkexuSZbHsC11V/Hu95x7+ddnTXN2P/T3/Rh22zafXTZn199/c7X5948bxpjf/Mz0xZ+7Nm6cZp5vBn72tj4yhfH9J64vF4YWFwZK/XC69K/rn/65EUwYzjjfvPv2+stF6vLEOIWJ6t2Qpn3YbfoPHQ2br6439/u4a8dbypu2y3RP+K+bNg80tKVNYWr7bnMfxhHnHT490GbfhXv49EB5kbxcpbzdT6kqqCZsONtw/jPzl4pdCnWujDfKvGHskrHVnn4/JIIPD+0IHfVBH1WMQmcptPEukFaSLLnggkxSe5EjL9qVtAhI7baGCQ9yrqU6fDfsq6zjx+r2fqzSx31KNI5r/KCWPsDm1Yy70LWFxmk73gZor/etUCEoay1Fnpy3JjvjSBfNlLKyqGgyjOEyW82ys4FK0MllnQKzytJqZdjtrDpouQ2I8whlU7rdLnnYpv7urp2gcBr2ND9yTMi2vQs3tM3tDSybXZiNuyxaO1eUN4iHMDYzm3LyRQvmyBRRhOLFqmilT0J6oSKTlolMiUuYKORiWQwjfUqDNYi4UUwkF8mmpBKPmQfDjZD4WYrnHO4LaHLWKqGj0sEy7lJizslwCPJNO07DI3zsSnvzsRojRKSUJMXsbYrGRANt0hSpY/GSBwujs1cGwdZOcy5k4im55L1D2OOihv6gtJ8Qrl2fENAc6K7vVs+WHjrETRCzJHN20ketQ8k6a448y2CNDgI1qlF7pMggp0g0fOMha21iNpkdGgnlHnbtn3NrbFN4oDD7dDXrbXZ9yM1Ah1s0Nov3nzcohSa3pVxfjRf3uzCVfri7oFIo1bZar73ZhUi7sXnSi7vHhn5HqTRT3xxC+nnTUTvd0rA+1nT90CyeN9dXzbiP49ROiMrYQM3xsWaOSrMmYinQpQyPuco0pqG9n/ph3IYOQQ2PhF8PTf60UGsF+fV836Xb0N08vwCMGHC+ysCJmL8u+91uTKHbVgG7tquw9BcOcPTd11fXv3xXe/rt8sWSwK9+/XpGthXQcPT3c0n4l9sMhNsiyiNVa6fHbUEU2+6mambP73f9dtwDxQAIyOL41Ogx3NG24OR2e/XlNvbT7VJLzy9BCPBzm+MTxGAyhRQVU1okilahwEpFA5GiE8V6IudULiExZghdGvAhh8yljAwdZc9eir6jKcCpcIrPr4jjgpZiDdD39Mf0y31ewf0J9nJ3qf2lZufOecaZtuLd2frMcj9/MT17hL18xAt5fOQKfFFL+5WnhLyUAn/PpWNMSi75u1OGDt6c+uSL3T1SLs+FakIcUd/N1z982wDxpuZDGDrkC60yF6V0P/z0xvz4ON2iqjNNaBRUZTOE7rx5R0Pf3FHoxma6bcfmUJ/N1ZfNCIIab/vpLbpiavbd+w7Gb8p+2g/UgMr2kJCoQV/QzIpNZdPmZoB352sOYn8H1Np31WKlTt/13a62yO5pTip/49N/5k/4zM/h3GZga+hO38yF2zS/ncq37SoDLI2Dat3NRbYIOoPUi3D//iLHi7aDnbvdSrg424/DRT3Hvz/Px/58VlCl/zbLze0wx+rx6AOy8uLkUFsnbxabwO2LJcBOJAcjwK4+b+bDoyHbX66vapdiKuEvTv7x4uS+37Xp8Umb+GxBJ6QA+Nz7zBUVFgIBaIvTXvOidGQpRVxDQQVbMnkh8LTUlSHE2VOxd32eC5/1RqlnJ4uFS9+f4GGhhQNlfES76QSEM2jhY8gxpPdPby5z0LbOQIjRsJ0WVisByPMiGPf7AbMfbR8C6KCbxjkyq7rlpLLAWFGr/3AEyOdnA5X9WJ10C6sio+0dzZbN5djR9KEfUOQzkL60sh7Vxt32gBTke6Z9/H5okvp7GmjONRzAWFKnpDk0J4dWWUMPM/fPfS2osDwHakdV9DIbzkVzujSPq6U+/WG6Hfr9zW3NGaZZMNNdQLhqx0PD5w0GsUp1y3zW5D0dgcbVdq50N1UzwHyv9m/zxQwdzWJxs2Zi5uqLGdSbMfX3wInVbuBKmgfQBoS5q4p/36NHchMJ0Qcr73rgxQEXnk7FNS8AsjuaG+zsm3YAgiE5DZKVT4y78nMYD/SMbs874FBXL5X58kHXoUqbpT6hhAt93nzVD7Vr68XHF4PBXIPdTbNA89MJAHGt3Tu+WUcOyESM3wItqWsO9X/efA+EXNB2nQ1KaHcnh6lWOMDy1L4r6IVhasFk0wbz6z2Ke+y78/+OyxwfeNLZk1A+V6pjGJg9JjZpWAnFkMuBCWaiNi5hquaYrzBoYsjTmKBLInVAuVqqm9mqzRLFowYVMsY2n6wu2ZfEMOliSnfG4lvuiacY6onVPlU61pDtASZBZOF05uwVDYcN4KjDW5e0xTaSbCwsk/QZoEVeG4yoPmWMqZZFS1rHxK3UNmYM2iXKiMGclfhMx9q0R+ECiBejL8opE6IqwZBwmE4NxmstuUOMuOZEUggvpTFBc8jMxVmBqUE8D1FlpvOU/zhKz9lmo5LXlkvPQ8oq8+JMQpxNgCCvAANREWlDOniMJp6SKNXV7LkOn5Z+vutvqgaHx7EFIcpYNCRyCrOY14QoZ0MGuxILlDC3Z47MZIP1xFipqmsGCXuuYRrah8dNnc2OHkiC3RIUAvRlzCVKEqYFktgvpBJFZyWxmwRsuogSWZ2MDCZYj9AxF/z/k3/wwZugXEYuC6IFN5TXChwUsHpag4rRyEhihSxmJ8xvxMFUEisq+Msat/LQU3L5KMtYEMmwmJPxCrsiKRGKEwqJFkhK3cxkNAxbo3BYNaQWoTopvYb7jJ+ynNplS1/X8R5j0/Aw/35UhTUCqx9Wlph8pAidTgcEhbBGY7nRRlCJ0YFJQa1ORxSYZIELIk4qrrNnpa7X2g3UGyI2cIYFkiLSaLPAmsKcFuDGjAL1tniLzUoKULu2EllgpOG4xKYsnwv/uNNSqOKSwQoG/31x2FYRd42V2sVSchJOOU0mpoAtVye4yNCZBWst4/4YpiPtblYCPZUTNkcukilIhrCaK8YR+oTOzZIRmVAYJ8wbESNsqdFBHzJM5ckSBpRwnLsWmN0sMLsCByC4L6dQkU4MCyVnHBsqhhxtPGoYpovCfMU96yMKCwHEGoq+0ArlJyzuJ7L8WLhP872sa0cVNVoctCVdjoAopBUoS0UVYUNwRlNG+lWwKQB/BY/IERPAENjCbJHuoKIOENt16jnA+fn9Y1VBIUgOCEIhidrWQROPyQIPmeTYwJVVFphoi+WOSYUlxkslNc8c9ZVDOalYWPBFkCQhjWAIhSopSGYWiLutbxNy4rqgygBUyIvMhQNaUNkoZCsQPgtO8cfOQ79tT29LDt23uJAhFsVHCZH2LkEDR++CARJxEXWSqDRAUYBrUjPhYbkqyTldNFnwyus66jqzKhDaoSu8wdOKC+B+ESxictWoECCsR6Ng4avlQA6bVPAJJCcy+AnUYaR/oqCa/RqRei+jY9GDtEggu6heDMPKCwuvCtMo4aSCdrk6yyOaLSQblJEV0LhML1VgiiCs9kf5GJmFAQUncKXimMKZDhjLrQ/1dVFwgMba3SI7EQXXCslJxaCaXSaNHfEg/yMCUpjahJFMg0QZIAgTgJPC4UfikOAiDgCIUgDS0RrecfCOMdhShcV1+argA25r7qyMEuEAeQK/guGOArgeHecdq0MHyA7ZtLgiSyAbiq+xwkYhAORH4cjlRyEJ+OM5MzyCzMFkWQgXeX39paQEyYMwvHIJTRWBr2AgAWxH9QhOVgp+JLbljd9mebv3ovwjcxzdJbKMWXsJb2RhzNaXi5QccRRmnV1quVhbC6AQpicLgAKEBXmcLF7hTVEQXQLgR5+MFl4YaALFG/SlqG+5anFwXMmESSsHDGoCQ5hUjHl8pE+IPoQe2A/rEF2WBYpHgdW5d6aAXpTnVUAAlqFIpZEgbYC6B6+COq0tKpblzc1nf3/2Pyef7p8YFwAA" + }, + "rollback-deployment.json": { + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "rollback-preflight-full.json": { + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "codec": "gzip+base64", + "uncompressed_bytes": 21208, + "content_base64": "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" + }, + "rollback-preflight.json": { + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "codec": "gzip+base64", + "uncompressed_bytes": 1872, + "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==" + }, + "runtime-receipt.json": { + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "codec": "gzip+base64", + "uncompressed_bytes": 808, + "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==" + }, + "scan-receipt.json": { + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "codec": "gzip+base64", + "uncompressed_bytes": 4538, + "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==" + }, + "sealed-live-deployment.json": { + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "sealed-native-dependencies.json": { + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "codec": "gzip+base64", + "uncompressed_bytes": 1841, + "content_base64": "H4sIAAAAAAACA71Uy27bMBC85ysMnUtZoiVLSm9NkaKHpEEPyaEoAj5WNhuJVEnKQBrk37uUZSd+II9DexKw3J2dnZ3Vw8lkEgmja7VoWRedTh4wgCHWqWuwThmNsWiVRh/WcdW2vWe8AQx728MYvlNahsSzAekCkcaHFjyTzLMtcsDW2njmEds9C4cHuzBCxuHTWfMrVmbqLRMIviBqwFe6NrYFSSQIFdidTrctTw8epwcRYnvtVQtkLihNy6KUSb6ZbT3ffkUsTN+YlsfOCMWaKZOtchtdWIc8VyA/Tr5enn8mN1ckSZJiInqPURuNsI8b/EizFo6O8TKvoc51TBwvfsrr1ypVSZrOJJUkz2RFMigp4amckSrhWQUcJOX5mtxILRJMG60Ea27Dsm7dktF8HqBKENmcypTOsiLPyjpP5gDA6xRmohAiK+ZZmaSVKFlRzsokk0nFhSgqntSUsnoe2gxNom4lXrfXxkdX4dF50P7aNH0LZw1T7f/z1NH2b/LXwOtf+ekZbreK73oOVoMHF4biqBwRpu0ajAxz3YN7ucL0WMLvsUp7a5oGOxyWrQYBYo6a79U7byxbAAmUh9HW9ZZpsQQbMhqDjiId88sjiHtg0IBA4kQbObiczqp4TmOa5HFF46VxPnYgegsOLGoRY+XroO9heHCstdKsUX/QClj046nVbg+0dcD3yD4scUz7+YaT37HKe09clgmnOU9JmqWMZFnKCUetSFXWjNayKnkhdk/cdSB2LkYIcO4C5d6b7zsweWOVh28a2RwMhBswvRWwd2cWfvfg/G40tF3vIHBOv6ho+/R4oPeYibfm3OWo2hEHjau+GH1yrhpw93ir7X7GBiNs6B1yPf9h3XZL5gaQT+FYopPHk79qFEgoMQcAAA==" + }, + "source-commit-proof.json": { + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "codec": "gzip+base64", + "uncompressed_bytes": 239, + "content_base64": "H4sIAAAAAAACA12OwW6EMAxE73wF4rwHIDY2/ZWqipzYKZEKrAgtWlX998JKvfT6NPNmvqu6bjb7yiWvS/NSN2OAEHpU1+MwshiCMzIWFhcdjr2GLiGn2Nz+mnaY+lmWnKzsvkxyNi8T9SACRGShizzSoDywYcIWgFyCMOgp6pwStsoklgQjK0ZpCcj+L9xln8rpJXjyOZdZ9jjZxV7fnmw9Ftv8ZqJ+XT4e/j1ff9bjTOzbp1U/1S/dW3277wAAAA==" + }, + "sqlite_readonly.py": { + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "codec": "gzip+base64", + "uncompressed_bytes": 4610, + "content_base64": "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" + } + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py new file mode 100644 index 0000000..3c6572c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py new file mode 100644 index 0000000..66736d3 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py @@ -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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py new file mode 100644 index 0000000..2236b55 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py @@ -0,0 +1,519 @@ +"""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} + contract=json.loads((CASE/'fresh-scan-contract.json').read_text()) + report=json.loads((CASE/'fresh-scan-report-fixture.json').read_text()) + self.assertEqual(fresh_scan(receipt,report,contract,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=[]),lambda r,p:p.update(Results=[{}]),lambda r,p:p['Results'].pop(),lambda r,p:p['Results'][0]['Packages'].pop(),lambda r,p:p['Results'][0]['Packages'][0].update(Version='old'),lambda r,p:p['Metadata'].update(ImageID='other'),lambda r,p:p['Metadata']['DiffIDs'].pop(),lambda r,p:p['Metadata']['ImageConfig']['config']['Labels'].update(**{'org.opencontainers.image.revision':'other'}),lambda r,p:p.update(SchemaVersion=1),lambda r,p:p.update(ArtifactType='filesystem')] + for mutate in mutations: + r,p=copy.deepcopy(receipt),copy.deepcopy(report);mutate(r,p) + with self.assertRaises(ValueError):fresh_scan(r,p,contract,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) + + +class FullCliDispatch(unittest.TestCase): + def invoke(self,phase,corrupt_source=False): + import hashlib,shutil + import authority_journal + realpath=Path;called=[];output=io.StringIO() + with tempfile.TemporaryDirectory() as folder: + base=Path(folder);custody=base/'private';custody.mkdir(mode=0o700) + empty=custody/'empty-docker-config';empty.mkdir(mode=0o700) + owner=base/'owner';owner.mkdir();case=owner/'case';case.mkdir();execution=case/'execution';execution.mkdir() + for name in ('actuator.py','authority_journal.py','native_program.py','receipt_safety.py'): + shutil.copyfile(Path(__file__).parent/name,execution/name) + (case/'memo.json').write_text('{}') + for name in ('sealed-live-deployment.json','sealed-native-dependencies.json','candidate-deployment.json','rollback-deployment.json','check_installed.py','sqlite_readonly.py','change_guard.py','installed-zlib-proof.json','fresh-scan-contract.json'): + shutil.copyfile(CASE/name,case/name) + names=('deploy/lifecycle/admission.candidate.json','deploy/lifecycle/service.candidate.json','deploy/lifecycle/kustomization.yaml','deploy/lifecycle/registries.candidate.json') + for name in names: + target=owner/name;target.parent.mkdir(parents=True,exist_ok=True);target.write_text('sourcefixture') + plan={'state':'prepared-unapproved','published_artifact_verified':True,'proposal_id':'INFD-WP-0009-T05/zlib85091-r1','executor_files':{n:actuator.sha(execution/n) for n in ('actuator.py','authority_journal.py','native_program.py','receipt_safety.py')},'case_files':{p.name:actuator.sha(p) for p in case.iterdir() if p.is_file() and p.name!='memo.json'},'owner_source_files':{n:actuator.sha(owner/n) for n in names}} + (execution/'execution-plan.json').write_text(json.dumps(plan)) + receipt,outcome=accepted();receipt.update(native_outcome_sha256=hashlib.sha256(json.dumps(outcome).encode()).hexdigest(),executor_plan_sha256=actuator.sha(execution/'execution-plan.json')) + mapping={} + for fixed,data in [('/tmp/security-infd-zlib-root-authority.json',receipt),('/tmp/security-infd-zlib-native-outcome-latest.json',outcome),('/tmp/security-infd-zlib-fresh-scan-receipt.json',{'fixture':True}),('/tmp/security-infd-zlib-fresh-scan-full.json',{'fixture':True})]: + target=base/Path(fixed).name;target.write_text(json.dumps(data));target.chmod(0o600);mapping[fixed]=target + scanreceipt=mapping['/tmp/security-infd-zlib-fresh-scan-receipt.json'];scanreceipt.write_text(json.dumps({'full_report_sha256':actuator.sha(mapping['/tmp/security-infd-zlib-fresh-scan-full.json'])})) + identity={'proposal':plan['proposal_id'],'source_revision':REVISION,'memo_sha256':actuator.sha(case/'memo.json'),'plan_sha256':actuator.sha(execution/'execution-plan.json')} + blob=b'private synthetic full-cli snapshot';metadata={'all_checks_pass':True,'snapshot_file':'drill.sqlite','snapshot_bytes':len(blob),'snapshot_sha256':hashlib.sha256(blob).hexdigest(),'snapshot_readonly':COUNT,'pod_name':'fixture-pod','pod_uid':'fixture-poduid'} + j=Journal(custody,identity) + predecessors=list(actuator.PHASES[:actuator.PHASES.index(phase)]) + for predecessor in predecessors: + j.start(predecessor,{}) + result=metadata if predecessor=='drill-backup' else {'all_checks_pass':True} + if predecessor=='release':result={'all_checks_pass':True,'operation_requested':True,'prune':False,'source_revision':REVISION,'resources':[{'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'}]} + j.finish(predecessor,result) + j.close() + if corrupt_source:(owner/names[0]).write_text('changed') + def mapped(value):return mapping.get(str(value),realpath(value)) + def run(argv,body=None,**kwargs): + if argv[:4]==['git','-C',str(owner),'rev-parse']:return subprocess.CompletedProcess(argv,0,REVISION+'\n','') + if argv[:4]==['git','-C',str(base),'check-ignore']:return subprocess.CompletedProcess(argv,0,'ignored','') + if argv[:2]==['ssh','railiance01']: + import ast + parsed=ast.parse(body);node=next(x for x in parsed.body if isinstance(x,ast.Assign) and any(isinstance(t,ast.Name) and t.id=='payload' for t in x.targets));payload=json.loads(ast.literal_eval(node.value.args[0]));called.append(payload) + self.assertEqual(json.loads(j.path.read_text())['phases'][phase]['state'],'RUNNING') + if phase=='drill-copy':self.assertEqual(payload['snapshot_identity'],metadata) + if phase=='verify':self.assertEqual(payload['operation_intent']['state'],'COMPLETE');self.assertFalse(payload['operation_intent']['result']['prune']) + result=metadata if phase=='drill-copy' else {'all_checks_pass':True,'phase':phase} + return subprocess.CompletedProcess(argv,0,json.dumps(result),'') + raise AssertionError('unexpected CLI transport') + def git_show(argv,**kwargs): + self.assertEqual(argv[:4],['git','-C',str(owner),'show']);data=(owner/argv[4].split(':',1)[1]).read_bytes();return subprocess.CompletedProcess(argv,0,data,b'') + real_popen=subprocess.Popen + def binary(*args,**kwargs):return real_popen([sys.executable,'-c','import sys;sys.stdout.buffer.write('+repr(blob)+')'],stdout=subprocess.PIPE,stderr=subprocess.DEVNULL) + argv=['actuator.py','--phase',phase,'--root-authority-receipt','/tmp/security-infd-zlib-root-authority.json','--root-native-outcome','/tmp/security-infd-zlib-native-outcome-latest.json','--root-fresh-scan-receipt','/tmp/security-infd-zlib-fresh-scan-receipt.json','--source-revision',REVISION] + with patch.object(actuator,'ROOT',execution),patch.object(actuator,'CASE',case),patch.object(actuator,'OWNER',owner),patch.object(actuator,'CUSTODIAN',base),patch.object(actuator,'CUSTODY',custody),patch.object(actuator,'Path',side_effect=mapped),patch.object(actuator,'run',side_effect=run),patch('subprocess.run',side_effect=git_show),patch('subprocess.Popen',side_effect=binary),patch.object(authority_journal,'authority',return_value={'fixture':True}),patch.object(authority_journal,'fresh_scan',return_value={'fixture':True}),patch('sys.argv',argv),redirect_stdout(output): + if corrupt_source: + with self.assertRaises(ValueError):actuator.main() + else:actuator.main() + state=json.loads(j.path.read_text())['phases'].get(phase) + return called,state,output.getvalue() + + def test_main_cli_copy_binds_snapshot_and_retains_private_bytes(self): + calls,state,output=self.invoke('drill-copy');self.assertEqual(len(calls),2);self.assertEqual(state['state'],'COMPLETE');self.assertNotIn('private synthetic',output) + + def test_main_cli_verify_binds_completed_release_intent(self): + calls,state,output=self.invoke('verify');self.assertEqual(len(calls),1);self.assertEqual(state['state'],'COMPLETE') + + def test_main_cli_release_dispatches_only_after_durable_phase(self): + calls,state,output=self.invoke('release');self.assertEqual(len(calls),1);self.assertEqual(state['state'],'COMPLETE') + + def test_main_cli_source_hash_refuses_before_journal_or_transport(self): + calls,state,output=self.invoke('release',corrupt_source=True);self.assertEqual(calls,[]);self.assertIsNone(state);self.assertEqual(output,'') + + +class PacketBindingAndBodyLimit(unittest.TestCase): + def test_lossless_gzip_bundle_retains_exact_source_hashes(self): + import gzip,base64,hashlib + bundle=json.loads((CASE/'execution-bundle.json').read_text()) + for group in ('files','case_evidence'): + for relative,item in bundle[group].items(): + data=gzip.decompress(base64.b64decode(item['content_base64'],validate=True)) + self.assertEqual(len(data),item['uncompressed_bytes']);self.assertEqual(hashlib.sha256(data).hexdigest(),item['sha256']) + self.assertEqual(data,(CASE/relative).read_bytes()) + item=next(iter(bundle['files'].values()));changed=bytearray(base64.b64decode(item['content_base64']));changed[-1]^=1 + with self.assertRaises((OSError,EOFError)):gzip.decompress(changed) + + def test_actual_source_http_256kib_limit_before_register_side_effect(self): + import os + script="""import io,json,sys +sys.dont_write_bytecode=True +sys.path.insert(0,'/home/worsch/informed-decision') +from informed_decision.lifecycle_http import LifecycleAPI,MAX_BODY +from informed_decision.lifecycle_service import Caller +from informed_decision.lifecycle_service import LifecycleError +from informed_decision.intake import validate_submission,SubmitterGrant +from pathlib import Path +root=Path(sys.argv[1]);commands=json.loads((root/'lifecycle-commands.json').read_text());envelope=json.loads((root/'intake.json').read_text()) +validate_submission(envelope,submitter_id='state-hub',grant=SubmitterGrant('state-hub',frozenset({'decision-record'}),frozenset({'net-kingdom-admins'}))) +class Service: + calls=0 + def _caller(self,caller):pass + def register(self,*args,**kwargs):self.calls+=1;return 'fixture-event' +service=Service();api=LifecycleAPI(service,lambda token:object.__new__(Caller)) +body=json.dumps(commands[0]['register']).encode();assert len(body)<240*1024 +base={'REQUEST_METHOD':'POST','PATH_INFO':'/v1/decisions','QUERY_STRING':'','CONTENT_TYPE':'application/json','HTTP_AUTHORIZATION':'Bearer synthetic-fixture','HTTP_IDEMPOTENCY_KEY':'fixture'} +status,result=api.dispatch({**base,'CONTENT_LENGTH':str(len(body)),'wsgi.input':io.BytesIO(body)});assert status==200 and service.calls==1 +oversize=b' '+body+b' '*(MAX_BODY+1-len(body)-1) +try:api.dispatch({**base,'CONTENT_LENGTH':str(len(oversize)),'wsgi.input':io.BytesIO(oversize)}) +except LifecycleError as e:assert e.status==413 +else:raise AssertionError('oversize accepted') +assert service.calls==1 +print(json.dumps({'synthetic_body_limit_verified':True,'intake_validated':True,'register_bytes':len(body)})) +""" + result=subprocess.run([sys.executable,'-c',script,str(CASE)],capture_output=True,text=True,env={**os.environ,'PYTHONDONTWRITEBYTECODE':'1'}) + self.assertEqual(result.returncode,0,result.stderr);self.assertTrue(json.loads(result.stdout)['synthetic_body_limit_verified']) + + +if __name__ == '__main__': + unittest.main() diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json new file mode 100644 index 0000000..516ef23 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json @@ -0,0 +1,358 @@ +{ + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ], + "image_config_rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + }, + "image_source_labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "os": { + "Family": "alpine", + "Name": "3.24.1" + }, + "inventory": [ + [ + "lang-pkgs", + "python-pkg", + "PyJWT", + "2.15.1", + "pkg:pypi/pyjwt@2.15.1" + ], + [ + "lang-pkgs", + "python-pkg", + "cffi", + "2.1.1", + "pkg:pypi/cffi@2.1.1" + ], + [ + "lang-pkgs", + "python-pkg", + "cryptography", + "50.0.1", + "pkg:pypi/cryptography@50.0.1" + ], + [ + "lang-pkgs", + "python-pkg", + "informed-decision", + "0.2.0", + "pkg:pypi/informed-decision@0.2.0" + ], + [ + "lang-pkgs", + "python-pkg", + "pycparser", + "3.0", + "pkg:pypi/pycparser@3.0" + ], + [ + "lang-pkgs", + "python-pkg", + "waitress", + "3.0.2", + "pkg:pypi/waitress@3.0.2" + ], + [ + "os-pkgs", + "alpine", + ".python-rundeps", + "20260901.001029", + "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-baselayout", + "3.7.2-r1", + "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-baselayout-data", + "3.7.2-r1", + "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-keys", + "2.6-r0", + "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-release", + "3.24.1-r0", + "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "apk-tools", + "3.0.6-r0", + "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "busybox", + "1.37.0-r31", + "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "busybox-binsh", + "1.37.0-r31", + "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ca-certificates", + "20260611-r0", + "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ca-certificates-bundle", + "20260611-r0", + "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "gdbm", + "1.26-r0", + "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "keyutils-libs", + "1.6.3-r4", + "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "krb5-conf", + "1.0-r2", + "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "krb5-libs", + "1.22.2-r1", + "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libapk", + "3.0.6-r0", + "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libbz2", + "1.0.8-r6", + "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libcom_err", + "1.47.4-r0", + "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libcrypto3", + "3.5.8-r0", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libffi", + "3.5.2-r1", + "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libintl", + "1.0-r0", + "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libncursesw", + "6.6_p20260516-r0", + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libnsl", + "2.0.1-r2", + "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libpanelw", + "6.6_p20260516-r0", + "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libssl3", + "3.5.8-r0", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libtirpc", + "1.3.5-r1", + "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libtirpc-conf", + "1.3.5-r1", + "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libuuid", + "2.42.3-r1", + "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libverto", + "0.3.2-r2", + "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "musl", + "1.2.6-r2", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "musl-utils", + "1.2.6-r2", + "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ncurses-terminfo-base", + "6.6_p20260516-r0", + "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "readline", + "8.3.3-r1", + "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "scanelf", + "1.3.9-r1", + "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "sqlite-libs", + "3.53.4-r0", + "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ssl_client", + "1.37.0-r31", + "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "tzdata", + "2026c-r0", + "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "xz-libs", + "5.8.3-r0", + "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "zlib", + "1.3.2-r1", + "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + ] + ], + "inventory_canonical_sha256": "1fd5bfb2d7c04a7316a283adbea0f54f04f0c5acbb218b11e0c5677bfe87c464", + "published_fullreport_sha256": "2ff68e765b9c65292611d5a969202a7654637168edefcedac5d2c7634009edae", + "publication_manifest_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "scope": "Exact immutable published archive identity and inventory; findings must be checked anew on fresh DB." +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json new file mode 100644 index 0000000..3af5f7a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json new file mode 100644 index 0000000..72ead0f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json @@ -0,0 +1,373 @@ +{ + "SchemaVersion": 2, + "ArtifactType": "container_image", + "Metadata": { + "ImageID": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "DiffIDs": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ], + "OS": { + "Family": "alpine", + "Name": "3.24.1" + }, + "ImageConfig": { + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + }, + "config": { + "Labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + } + } + } + }, + "Results": [ + { + "Class": "os-pkgs", + "Type": "alpine", + "Packages": [ + { + "Name": ".python-rundeps", + "Version": "20260901.001029", + "Identifier": { + "PURL": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1" + } + }, + { + "Name": "alpine-baselayout", + "Version": "3.7.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-baselayout-data", + "Version": "3.7.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-keys", + "Version": "2.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-release", + "Version": "3.24.1-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "apk-tools", + "Version": "3.0.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "busybox", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "busybox-binsh", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ca-certificates", + "Version": "20260611-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ca-certificates-bundle", + "Version": "20260611-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "gdbm", + "Version": "1.26-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "keyutils-libs", + "Version": "1.6.3-r4", + "Identifier": { + "PURL": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "krb5-conf", + "Version": "1.0-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "krb5-libs", + "Version": "1.22.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libapk", + "Version": "3.0.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libbz2", + "Version": "1.0.8-r6", + "Identifier": { + "PURL": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libcom_err", + "Version": "1.47.4-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libcrypto3", + "Version": "3.5.8-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libffi", + "Version": "3.5.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libintl", + "Version": "1.0-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libncursesw", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libnsl", + "Version": "2.0.1-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libpanelw", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libssl3", + "Version": "3.5.8-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libtirpc", + "Version": "1.3.5-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libtirpc-conf", + "Version": "1.3.5-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libuuid", + "Version": "2.42.3-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libverto", + "Version": "0.3.2-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "musl", + "Version": "1.2.6-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "musl-utils", + "Version": "1.2.6-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ncurses-terminfo-base", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "readline", + "Version": "8.3.3-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "scanelf", + "Version": "1.3.9-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "sqlite-libs", + "Version": "3.53.4-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ssl_client", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "tzdata", + "Version": "2026c-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "xz-libs", + "Version": "5.8.3-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "zlib", + "Version": "1.3.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + } + } + ] + }, + { + "Class": "lang-pkgs", + "Type": "python-pkg", + "Packages": [ + { + "Name": "PyJWT", + "Version": "2.15.1", + "Identifier": { + "PURL": "pkg:pypi/pyjwt@2.15.1" + } + }, + { + "Name": "cffi", + "Version": "2.1.1", + "Identifier": { + "PURL": "pkg:pypi/cffi@2.1.1" + } + }, + { + "Name": "cryptography", + "Version": "50.0.1", + "Identifier": { + "PURL": "pkg:pypi/cryptography@50.0.1" + } + }, + { + "Name": "informed-decision", + "Version": "0.2.0", + "Identifier": { + "PURL": "pkg:pypi/informed-decision@0.2.0" + } + }, + { + "Name": "pycparser", + "Version": "3.0", + "Identifier": { + "PURL": "pkg:pypi/pycparser@3.0" + } + }, + { + "Name": "waitress", + "Version": "3.0.2", + "Identifier": { + "PURL": "pkg:pypi/waitress@3.0.2" + } + } + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json new file mode 100644 index 0000000..3708e0d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json @@ -0,0 +1,147 @@ +[ + { + "original_path": "deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json new file mode 100644 index 0000000..0b5744a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b88546d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b81024f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..2a0b2c8 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..9da2804 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,59 @@ +{ + "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-awaiting-independent-owner-acknowledgments", + "executor_files": { + "actuator.py": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "authority_journal.py": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "native_program.py": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "receipt_safety.py": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + "case_files": { + "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", + "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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..04cb285 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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(0 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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..27b8bb7 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,393 @@ +"""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 +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) + + +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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json new file mode 100644 index 0000000..90bc2fc --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json @@ -0,0 +1,101 @@ +{ + "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:763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "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-plan-json", + "label": "execution-plan.json", + "hash": "sha256:9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + } + ], + "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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..5c0ac3a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json new file mode 100644 index 0000000..5e12288 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json @@ -0,0 +1,37 @@ +{ + "kind": "informed-decision.supervised-release-proposal", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "trial_id": "infd-zlib-20261011-r1", + "state": "prepared-awaiting-independent-owner-acknowledgments", + "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": [ + "fresh rollback server admission", + "exact committed owner rendering revision", + "Product and Platform final acknowledgments", + "confirmed founder exact new disposition" + ], + "published_verification_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "native_readonly_preflight_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "executor_plan_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json new file mode 100644 index 0000000..2070570 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json @@ -0,0 +1,342 @@ +[ + { + "path": "deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "path": "deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "path": "deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "path": "deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "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", + "sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive": "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" + }, + { + "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", + "sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive": "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" + }, + { + "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", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "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" + }, + { + "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", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "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" + }, + { + "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", + "sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive": "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" + }, + { + "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", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive": "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" + }, + { + "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", + "sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "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" + }, + { + "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", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "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" + }, + { + "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", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "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" + }, + { + "path": "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", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "archive": "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" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json" + }, + { + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "archive": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json new file mode 100644 index 0000000..269ae42 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..a56e107 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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; 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. + +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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..5aae51c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b897ef9 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..31cbd1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..c0ce95b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..3af5f7a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..3708e0d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,147 @@ +[ + { + "original_path": "deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..0b5744a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b88546d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b81024f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..2a0b2c8 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..9da2804 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,59 @@ +{ + "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-awaiting-independent-owner-acknowledgments", + "executor_files": { + "actuator.py": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "authority_journal.py": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "native_program.py": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "receipt_safety.py": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + "case_files": { + "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", + "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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..04cb285 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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(0 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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..27b8bb7 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,393 @@ +"""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 +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) + + +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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..90bc2fc --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,101 @@ +{ + "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:763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "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-plan-json", + "label": "execution-plan.json", + "hash": "sha256:9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + } + ], + "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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..5c0ac3a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..5e12288 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,37 @@ +{ + "kind": "informed-decision.supervised-release-proposal", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "trial_id": "infd-zlib-20261011-r1", + "state": "prepared-awaiting-independent-owner-acknowledgments", + "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": [ + "fresh rollback server admission", + "exact committed owner rendering revision", + "Product and Platform final acknowledgments", + "confirmed founder exact new disposition" + ], + "published_verification_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "native_readonly_preflight_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "executor_plan_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json new file mode 100644 index 0000000..0e1ccaf --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..9806488 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json new file mode 100644 index 0000000..9074439 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..aca7f5c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..41a876c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,20 @@ +"""Run only inside existing admitted StateHub Pod AFTER verified candidate Ready. + +The fixed existing dispatcher loads its internal credential; root never reads +it. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an +advisory verdict emission or a substitute for separate evidence obligations. +Root records this bounded metadata receipt with verified PodUID/image/source. +This preparation only writes source; no request is made here. +""" +import datetime,json,urllib.request,urllib.error +from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file +id='infd-20261011-zlib-remediation-r1' +req=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) +opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) +try: + with opener.open(req,timeout=15) as response: + raw=response.read(1048577) + if len(raw)>1048576: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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json new file mode 100644 index 0000000..b861731 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json @@ -0,0 +1,39 @@ +{ + "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": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "execution_bundle_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "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" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..ff52810 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/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 b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 new file mode 100644 index 0000000..99d5931 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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 @@ -0,0 +1,13 @@ +{ + "kind": "source-only-native-authoring-packet", + "memo_id": "infd-20261011-zlib-remediation-r1", + "source_memo_version": 1, + "memo_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "intake_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "lifecycle_commands_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "register_bytes": 259129, + "document_count": 13, + "documents_hashes_verified": true, + "native_submitted": false, + "founder_approval": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md new file mode 100644 index 0000000..249eb1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json new file mode 100644 index 0000000..e1ed42c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json new file mode 100644 index 0000000..8ee6bbf --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json @@ -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: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 + }, + "documents": [ + { + "digest": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "media_type": "text/markdown", + "content_base64": "IyBSZXF1ZXN0ZWQgZGVjaXNpb24KCkFwcHJvdmUgdGhlIGV4YWN0IG5ldyBUMDUgemxpYi1vbmx5IGltYWdlIHJlbGVhc2UgYW5kIHByb3RlY3RlZCBzYW1lLXNjaGVtYSBjb21wYXRpYmlsaXR5IGRyaWxsLCBhZnRlciBmaW5hbCBpbmRlcGVuZGVudCBQcm9kdWN0IGFuZCBQbGF0Zm9ybSBhY2tub3dsZWRnbWVudHMuIFRoaXMgcGFja2V0IGlzIHByZXBhcmVkIGFuZCB1bmFwcHJvdmVkOyBmcmVzaCByb2xsYmFjayBzZXJ2ZXIgZHJ5LXJ1biBwYXNzZWQgd2l0aCBleGFjdGx5IHRoZSBiYXNlbGluZSBpbWFnZSBhbmQgZW1wdHkgZGlmZi4gUm9vdCByZXRhaW5zIGV4YWN0IGZpbmFsIG93bmVyIHNvdXJjZSByZXZpc2lvbiBhbmQgaW5kZXBlbmRlbnQgYWNrbm93bGVkZ21lbnRzIGJlZm9yZSBhc2tpbmcgZm9yIG5hdGl2ZSBmb3VuZGVyIGRpc3Bvc2l0aW9uLiBUaGUgcHJpb3IgVDA0IGFwcHJvdmFsIGlzIGV4Y2x1ZGVkLgoKVGhlIGFkbWl0dGVkIG93bmVyIENJIHB1Ymxpc2hlZCBpbW11dGFibGUgaW1hZ2UgZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyBmcm9tIHNvdXJjZTliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMuIEl0cyBhY3R1YWwgZnVsbCBzY2FuIHJlcG9ydHMgemVybyBmaW5kaW5ncyBhY3Jvc3M0NHBhY2thZ2VzLiBUaGUgc2FtZSBzY2FuIERCIGZpbmRzIG9uZU1FRElVTSBvbiBjdXJyZW50aW1hZ2U3NjNjLiBTaWduZWQgb2ZmaWNpYWwgQWxwaW5lIHpsaWIxLjMuMi1yMSBpcyB0aGUgc29sZSBwYWNrYWdlIGNoYW5nZTsgYWN0dWFsIHB1Ymxpc2hlZCBmaWxlc3lzdGVtIHByb29mIHNob3dzIG9ubHlsaWJ6IGFuZEFQS2luc3RhbGxlZGRhdGFiYXNlIGNoYW5nZXMsIHplcm8zMTNkaXJlY3RvcnltZXRhZGF0YSBjaGFuZ2VzLCByZXRhaW5lZG5pbmViYXNlbGF5ZXJzIGFuZCB1bmNoYW5nZWQzNmFwcGxpY2F0aW9uZmlsZXMvcHVycG9zZXBvbGljeS9jb25maWcvY3JlZGVudGlhbHMvYXVkaWVuY2UvcmVzb3VyY2VzLiBSZWdpc3RyeS10by1kYWVtb24gY29uZmlnIHNlcmlhbGl6YXRpb24gZGlmZmVycyB1bmRlciBjbG9zZWQgdmVyaWZpZWQgbm9ybWFsaXphdGlvbiwgd2l0aG91dCBydW50aW1lIGNoYW5nZS4KClRoZSBleGFjdCBvcmRlcmVkIHByb3RlY3RlZCBkcmlsbCBhbmQgcmVsZWFzZSBhcmUgc3BlY2lmaWVkIGluIG5hdGl2ZS1iYWNrdXAtcmVzdG9yZS1wcm90b2NvbC5tZCBhbmQgaGFzaC1ib3VuZCBleGVjdXRpb24gYnVuZGxlLiBOZXcgYmFja3VwIHBhdGhzLCBpc29sYXRlZCBjbG9uZSBhbmQgam91cm5hbCBhcmUgZGlzdGluY3QgZnJvbSBvbGQgZXZpZGVuY2UuIFJlYWwgcHJpdmF0ZSBkYXRhIHdpbGwgZW50ZXIgb25seSBhcHByb3ZlZCBwcml2YXRlIGN1c3RvZHkgYW5kIHRoZSBpc29sYXRlZCBuby1uZXR3b3JrIGNsb25lOyBjb250ZW50IG5ldmVyIGVudGVycyBwdWJsaWMgZXZpZGVuY2UuIEZhaWxlZC91bmNlcnRhaW4gcGhhc2Ugc3RhdGVzIHJlbWFpbiBkdXJhYmxlIGFuZCBjYW5ub3QgYmUgcmV0cmllZC4gUHJpb3IgVDA0IGZhaWxlZCBjb3B5L3ZlcmlmeSBhcmUgcHJlc2VydmVkLgoKQWZ0ZXIgc2NoZW1hNS9pbnRlZ3JpdHkvZXhhY3RjbG9uZWNvdW50cyBwYXNzIGFuZCBjbG9uZSBjbGVhbnVwIHN1Y2NlZWRzLCBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5IHByZWNlZGVzIHRoZSBleGFjdCBtYW51YWwgaW1hZ2Utb25seSBEZXBsb3ltZW50IHN5bmMuIEN1cnJlbnQgYmFzZWxpbmUgaXMgaGVhbHRoeWdlbmVyYXRpb24yNS9pbWFnZTc2M2MvQXBwbGljYXRpb25jOTYuIEltbXV0YWJsZUNNNmMvUFZDL1BvZGNvbmZpZ3VyYXRpb24vUERQIG9yaWdpbnMgcmVtYWluIHNlYWxlZC4gRnJlc2hub2RlQ1BVMzQ2MG9mNDAwMG0gc3VwcG9ydHMgdW5jaGFuZ2VkUmVjcmVhdGUsIHdpdGggYW5vdGhlciBjaGVjayBiZWZvcmUgZWZmZWN0LiBCcmllZiBhdmFpbGFiaWxpdHkgaW50ZXJydXB0aW9uIGV4cGVjdGVkLgoKUm9sbGJhY2sgcmVzdG9yZXMgRGVwbG95bWVudGltYWdlNzYzYyBhbmRBcHBsaWNhdGlvbmM5NiB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBvbGQgc25hcHNob3QgcmVzdG9yYXRpb24uIFNlcGFyYXRlIGluc3RhbGxlZC9uYXRpdmUgaGVhbHRoL2N1c3RvZHkvUERQLWdhdGVkIHJlYWRiYWNrIGFuZCBhY3R1YWwgbmF0aXZlIGltYWdlIHJlc2NhbiBwcmVjZWRlIFQwNSBjbG9zdXJlLiBBbGxwaGFzZSBzdGFydHMgZXhwaXJlT2N0MTIgMjM6NTk6NTlaOyByZWxlYXNlIHJlc2VydmVzMzBtaW51dGVzZm9ydmVyaWZpY2F0aW9uYW5kcmVjb3ZlcnkuIEFmdGVyZXhwaXJ5IGEgbmV3Zm91bmRlcmRlY2lzaW9uIGlzIHJlcXVpcmVkLiBFVVIwbmV3cmVjdXJyaW5naW5mcmFzdHJ1Y3R1cmUsIGJvdW5kZWRwcml2YXRlIHN0b3JhZ2UgYW5kdW5wcmljZWRhdHRlbmRlZHRpbWUuIE5vIG5ld2RvY3RyaW5lL2F1dG9waWxvdC9jcmVkZW50aWFsZ3JhbnQgaXMgYXV0aG9yaXplZC4K" + }, + { + "digest": "sha256:29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtcmVsZWFzZS1wcm9wb3NhbCIsCiAgInZlcnNpb24iOiAxLAogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWI4NTA5MS1yMSIsCiAgInRyaWFsX2lkIjogImluZmQtemxpYi0yMDI2MTAxMS1yMSIsCiAgInN0YXRlIjogInByZXBhcmVkLXVuYXBwcm92ZWQiLAogICJtZW1vX2lkIjogImluZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMSIsCiAgIm1lbW9fdmVyc2lvbiI6IDEsCiAgInRhc2siOiAiSU5GRC1XUC0wMDA5LVQwNSIsCiAgImNhbmRpZGF0ZV9pbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJhcnRpZmFjdF9zb3VyY2VfcmV2aXNpb24iOiAiOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYyIsCiAgInByaW9yX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInByaW9yX2FwcGxpY2F0aW9uX3JldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiLAogICJzb3VyY2VfcmV2aXNpb24iOiBudWxsLAogICJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQiOiB0cnVlLAogICJuYXRpdmVfYWN0aW9uc19leGVjdXRlZCI6IGZhbHNlLAogICJhcHByb3ZhbF9pZCI6IG51bGwsCiAgImF1dGhvcml0eV9tb2RlIjogIkFETUlOSVNURVIiLAogICJ0YXJnZXQiOiAicmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbiIsCiAgImNvc3RfZXN0aW1hdGVfZXVyIjogMCwKICAicmlzayI6ICJQcml2YXRlIHNhbWUtc2NoZW1hIGJhY2t1cCBjb3BpZXMgYW5kIGJyaWVmIFJlY3JlYXRlIGF2YWlsYWJpbGl0eSBnYXAuIEZhaWxlZCBvciBhbWJpZ3VvdXMgcGhhc2VzIHJldGFpbmVkOyBubyByZXBsYXkuIFJvbGxiYWNrIGNoYW5nZXMgRGVwbG95bWVudCBpbWFnZS9zb3VyY2Ugb25seSwgcmV0YWlucyBsYXRlc3QgZGF0YWJhc2UuIiwKICAiZXhlY3V0ZV9ieSI6ICIyMDI2LTEwLTEyVDIzOjU5OjU5WiIsCiAgInJlbGVhc2VfbXVzdF9zdGFydF9ieSI6ICIyMDI2LTEwLTEyVDIzOjI5OjU5WiIsCiAgIm1heF9zbmFwc2hvdF9ieXRlcyI6IDUzNjg3MDkxMiwKICAibWF4aW11bV9uZXdfc25hcHNob3RfcGF5bG9hZF9ieXRlc19lYWNoX3NpdGUiOiAxMDczNzQxODI0LAogICJsb2NhbF9leHRyYV9kaXNwb3NhYmxlX2Nsb25lX21heF9ieXRlcyI6IDUzNjg3MDkxMiwKICAicHJpdmF0ZV9tZXRhZGF0YV9hbmRfc3FsaXRlX3NpZGVjYXJzX2FkZGl0aW9uYWxfaGVhZHJvb21fYnl0ZXMiOiAxNjc3NzIxNiwKICAidW5ib3VuZF9pbnB1dHMiOiBbCiAgICAiZXhhY3QgY29tbWl0dGVkIG93bmVyIHJlbmRlcmluZyByZXZpc2lvbiByZXRhaW5lZCBpbiByb290IHN1cGVydmlzZWQgcmVjZWlwdCIsCiAgICAiUHJvZHVjdCBhbmQgUGxhdGZvcm0gZmluYWwgYWNrbm93bGVkZ21lbnRzIiwKICAgICJjb25maXJtZWQgZm91bmRlciBleGFjdCBuZXcgZGlzcG9zaXRpb24iCiAgXSwKICAicHVibGlzaGVkX3ZlcmlmaWNhdGlvbl9zaGEyNTYiOiAiZGQ0ZWVjZjBjMTAzZGNhNzkyMjA5NGE4YmVlYjk5Yjc3YWU5NmZkMWQ1ZmU1MzJlMzdiZDgzM2RhYTAyNjE0ZSIsCiAgIm5hdGl2ZV9yZWFkb25seV9wcmVmbGlnaHRfc2hhMjU2IjogIjU2NjM3OTk0ZGZkYWU0NmE2ZjlhYjQ0MmMyZmY5YjI1OTIxMjY1MGIzNWViOThkODk2YzVlODM3ZjAxY2UyZjkiLAogICJleGVjdXRvcl9wbGFuX3NoYTI1NiI6ICJmZDM4Mzg1ZTM2ODdlYzZmOTg4NmQ1MDI1YjM5NDQ2M2MyNTJiODE5OGIwNDI2YzU2Zjk1NzQwMTM5ZWI3ZTliIiwKICAiZXhlY3V0aW9uX2J1bmRsZV9zaGEyNTYiOiAiMmJhMjVmN2QzZWZiYjEwOTVlMGEwZGQ3YmJiNTc3Zjc2YWYwNWM0MjVjYjkyOGY5YTFjN2JjNTJlYTlmNTMyYiIsCiAgInJvbGxiYWNrX3ByZWZsaWdodF9zaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgInBvc3RfcmVhZHlfbmF0aXZlX3Byb3ZpZGVyX3Byb2JlIjogImNhbm9uaWNhbCBsaWZlY3ljbGUub3V0Y29tZXMgU09VUkNFMSB0aHJvdWdoIGV4aXN0aW5nIGFkbWl0dGVkIFN0YXRlSHViIGRpc3BhdGNoZXI7IGNyZWRlbnRpYWxzIHN0YXkgaW5zaWRlIFBvZDsgYm91bmRlZCBtZXRhZGF0YSBjb3JyZWxhdGVkIHRvIHZlcmlmaWVkIGNhbmRpZGF0ZSBpbWFnZS9Qb2Qvc291cmNlIiwKICAiZnJlc2hfc2Nhbl9jb250cmFjdF9zaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgInByZXBhcmF0aW9uX2ZhaWx1cmVfaGlzdG9yeV9zaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIKfQo=" + }, + { + "digest": "sha256:3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "media_type": "text/markdown", + "content_base64": "IyBUMDUgemxpYjg1MDkxIHJlbGVhc2Ug4oCUIHByZWxpbWluYXJ5LCB1bmFwcHJvdmVkCgpUaGlzIGlzIGEgZGlzdGluY3QgcHJvcG9zYWwvdHJpYWwgZm9yIGV4aXN0aW5nIElORkQtV1AtMDAwOS1UMDUuIFRoZSBhY3R1YWwgVDA0IHNvdXJjZTIgYWNjZXB0YW5jZSBkb2VzIG5vdCBhdXRob3JpemUgaXQuIFByZXZpb3VzIFIxIGNvcHkgYW5kIFIyIHZlcmlmeSBVTkNFUlRBSU4gam91cm5hbCBzdGF0ZXMgcmVtYWluIHVudG91Y2hlZC4gSU5GRC1JTi0wMDEwIHJlbWFpbnMgYW4gdW5wcm9tb3RlZCBnZW5lcmFsIHZlcmlmaWVyIHJlc2lkdWFsOyB0aGlzIG5ldyB0YXNrLXNwZWNpZmljIHZlcmlmaWVyIGlzIGEgcHJlcmVxdWlzaXRlIG9mIGFjdGl2ZSBUMDUsIG5vdCBhbiBhbWVuZG1lbnQgb2YgdGhlIG9sZCBhcHByb3ZlZCBoZWxwZXIuCgpFeGFjdCBpbnRlbmRlZCBpbWFnZSBmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzIHdhcyBidWlsdCBieSBhZG1pdHRlZCBvd25lciBDSTExNTM0L3J1bjQgZnJvbSA5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjLiBQdWJsaWNhdGlvbiBpcyBub3QgaW5zdGFsbGVkIGFjY2VwdGFuY2UuIEZpbmFsIHBhY2tldCByZXF1aXJlcyBpbmRlcGVuZGVudCBwdWJsaXNoZWQtaW1hZ2Ugc2Nhbi9ydW50aW1lL2ZpbGVzeXN0ZW0vc291cmNlIHByb29mIGFuZCBmcmVzaCByZWFkLW9ubHkgbmF0aXZlIHByb2plY3Rpb24vb25lLW9iamVjdCBkcnktcnVuIGV2aWRlbmNlLiBVbnRpbCBhbGwgZmluYWwgaW5wdXRzIGFuZCBpbmRlcGVuZGVudCBvd25lciBhY2tub3dsZWRnbWVudHMgYXJlIGZyb3plbiwgZXhlY3V0aW9uLXBsYW4gc3RhdGUgcmVtYWlucyBwcmVsaW1pbmFyeSBhbmQgdGhlIGFjdHVhdG9yIHJlZnVzZXMgYmVmb3JlIGFueSBhdXRob3JpdHksIGpvdXJuYWwgb3IgbmF0aXZlIGFjdGlvbi4KCkFmdGVyIGEgTkVXIGV4YWN0IGNvbmZpcm1lZCBmb3VuZGVyIGFjY2VwdGFuY2UsIHJvb3QgZnJlc2hseSBhdXRoZW50aWNhdGVzIGZpeGVkLW9yaWdpbiBuYXRpdmUgc291cmNlLXZlcnNpb24xIG91dGNvbWVzIGJlZm9yZSBlYWNoIHBoYXNlLiBSZWNlaXB0IGZpbGVzIGFyZSBzdXBlcnZpc2VkIGJvb2trZWVwaW5nLCBub3Qgc2lnbmVkIGdyYW50cyBvciBhdXRvbm9teS4gV3JvbmcgdGFzaywgc291cmNlLCBtZW1vL3ZlcnNpb24sIHN0YWxlL3BlbmRpbmcvYWdlbnQgZGlzcG9zaXRpb24sIG9sZCBUMDQgYWNjZXB0YW5jZSBvciBjaGFuZ2VkIGlucHV0cyByZWZ1c2UuIFJvb3QgcmV0YWlucyBleGFjdCBhcHByb3ZlZCBzb3VyY2UgcmV2aXNpb24vZGlnZXN0cyBhbmQgYWN0aW9uIHJlc3VsdHMgaW4gc3VwZXJ2aXNpb24uIEFwcHJvdmFsIGRvZXMgbm90IHByb21vdGUgYW55IGFnZW50LgoKRml4ZWQgcGhhc2Ugb3JkZXI6IGRyaWxsLWJhY2t1cCDihpIgZHJpbGwtY29weSDihpIgb2ZmbGluZS12ZXJpZnkg4oaSIGNsZWFudXAtb2ZmbGluZSDihpIgY3V0b3Zlci1iYWNrdXAg4oaSIGN1dG92ZXItY29weSDihpIgcmVsZWFzZSDihpIgdmVyaWZ5LiBOZXcgcHJpdmF0ZSBuYXRpdmUgL2RhdGEvcHJpdmF0ZS96bGliODUwOTEtcjEsIHJvb3QgLnByaXZhdGUtYmFja3Vwcy8yMDI2MTAxMS1pbmZkLXpsaWItcjEgYW5kIGxvY2FsIHZvbHVtZSBpbmZkLXpsaWItcjEtcmVzdG9yZS0yMDI2MTAxMSBhcmUgZGlzdGluY3QgZnJvbSBhbGwgVDA0IGN1c3RvZHkuIE5ldyBwcml2YXRlIGpvdXJuYWwgaW50ZW50IGlzIGZzeW5jZWQgUlVOTklORyBiZWZvcmUgZGlzcGF0Y2g7IG5vIGF0dGVtcHRlZCBwaGFzZSByZXBsYXkuIEZpeGVkIG91dHB1dCBzY2hlbWEgY29udGFpbnMgb25seSBjb3VudHMsIGhhc2hlcywgb2JqZWN0IGlkZW50aXR5IGFuZCBib29sZWFuIHJlc3VsdHM7IHJhdyBlcnJvcnMgYW5kIHByaXZhdGUgY29udGVudCBhcmUgd2l0aGhlbGQuIEV4aXN0aW5nIG5hdGl2ZSBzbmFwc2hvdHMvZGF0YWJhc2Uvc2lkZWNhcnMgYXJlIG5ldmVyIHJlbW92ZWQgb3IgcmVzdG9yZWQgb3ZlciBjdXJyZW50IGRhdGEuCgpGcmVzaCBiYWNrdXAgaW5zcGVjdGlvbiB1c2VzIGNvcGllZCBleHBsaWNpdC1jbG9zZSBTUUxpdGUgaGVscGVyczogbGl2ZSBhbmQgb2ZmbGluZSBjbG9uZSByZWFkZXJzIGFyZSBtb2RlPXJvL3F1ZXJ5X29ubHkgYW5kIFdBTC1hd2FyZSwgYmVmb3JlIGFueSBTdG9yZS9hZG1pbiBvcGVuLiBJbW11dGFibGUgcmVhZGVyIGlzIHVzZWQgb25seSBmb3IgZnJlc2hseSBjbG9zZWQgaGFzaC1ib3VuZCBwcml2YXRlIHNuYXBzaG90IHdpdGggYWJzZW50L3plcm8gV0FMIGZyYW1lcyBhbmQgc3RhYmxlIGlkZW50aXR5L21ldGFkYXRhL2RpZ2VzdCBiZWZvcmUvYWZ0ZXIgcmVhZC9jb3B5LiBNYWluIGFuZCBzaWRlY2FycyByZW1haW4gcmV0YWluZWQuIFNjaGVtYSBtdXN0IGVxdWFsNSwgaW50ZWdyaXR5IG9rLCBhbmQgZXhhY3Qgc25hcHNob3QvaXNvbGF0ZWQgY2xvbmUgY291bnRzIG1hdGNoIGJlZm9yZS9hZG1pbi9hZnRlci4gVGhlIGRldGFjaGVkIGxvY2FsIGNsb25lIGhhcyBuZXR3b3JrIG5vbmUsIHJlYWRvbmx5IHJvb3QsIG5vIHNlcnZpY2UvcnVudGltZSBjb25maWcvY3JlZGVudGlhbCBtb3VudHM7IG9ubHkgbmFycm93bHkgc2NvcGVkIFVJRDAgQ0FQX0NIT1dOIGluaXRpYWxpemVyIHByZWNlZGVzIFVJRDEwMDAxIHJlYWRzL2FkbWluLiBPcmlnaW5hbCBwcml2YXRlIGNvcHkgaXMgaGFzaC1zdGFibGUuIENsZWFudXAgcmVtb3ZlcyBvbmx5IHRoZSBkaXNwb3NhYmxlIHZvbHVtZSB3aG9zZSBub25jZS9sYWJlbHMvY3JlYXRpb24gbWV0YWRhdGEgbWF0Y2ggdGhpcyB0cmlhbCwgYmVmb3JlIGN1dG92ZXIuCgpFYWNoIHNuYXBzaG90IGlzIGJvdW5kZWQ1MTJNaUIuIEF0IG1vc3QgdHdvIG5ldyBzbmFwc2hvdHMgb2NjdXB5IGVhY2ggbmF0aXZlL29mZmNsdXN0ZXIgY3VzdG9keSAoMUdpQiBwYXlsb2FkIGVhY2gpOyB0aGUgZGlzcG9zYWJsZSBvZmZjbHVzdGVyIGNsb25lIGFkZHM1MTJNaUIgd2hpbGUgcHJlc2VudCwgcGx1czE2TWlCIHNpZGVjYXIvbWV0YWRhdGEgcmVzZXJ2ZS4gTmV3IG5hdGl2ZSBkcmlsbCBwaGFzZSBjaGVja3MgZnJlZSBzcGFjZSBmb3IgYm90aDsgbG9jYWwgY3VzdG9keSBjaGVja3MgdHdvIHNuYXBzaG90IGJvdW5kcyBwbHVzIHJlc2VydmUuIEV4aXN0aW5nIFQwNCByZXRlbnRpb24gY29uc3VtZXMgYWRkaXRpb25hbCBwcmUtZXhpc3Rpbmcgc3BhY2UuIEVVUjAgcmVjdXJyaW5nIGluZnJhc3RydWN0dXJlIGVzdGltYXRlOyBodW1hbi9jb21wdXRlIHRpbWUgdW5wcmljZWQuCgpDdXRvdmVyIHRha2VzIGEgZnJlc2ggbmF0aXZlIGJhY2t1cCBhbmQgZXhhY3Qgb2ZmY2x1c3RlciBjb3B5LiBSZWxlYXNlIHRoZW4gcmVxdWlyZXMgbGF0ZXN0IHNjaGVtYTUgcmVhZG9ubHkgcHJvb2YsIHNlYWxlZCBQb2QvRGVwbG95bWVudC9jb25maWcvUFZDIGN1c3RvZHkgYW5kIHNhbWUgYmFzZWxpbmUgaW1hZ2U3NjNjL2N1cnJlbnQgQXBwbGljYXRpb24gc291cmNlYzk2LCBhIGhlYWx0aHkgc2luZ2xlIHRhcmdldDkyLjIwNS42Mi4yMzkgbm9kZSBhbmQgZnJlc2ggcmVxdWVzdGVkIENQVSDiiaQgYWxsb2NhdGFibGUgY2FwYWNpdHkuIFJlY3JlYXRlIGFuZCByZXNvdXJjZXMgcmVtYWluIHVuY2hhbmdlZC4gU2VydmVyIGRyeS1ydW4vY2xpZW50IGRpZmYgbXVzdCBzaG93IG9ubHkgdGhlIGltYWdlLiBBcHBsaWNhdGlvbiBVSUQvcmVzb3VyY2VWZXJzaW9uL3NvdXJjZSBDQVMgZGlzcGF0Y2hlcyBtYW51YWwgZXhhY3QgZmluYWwgcmV2aXNpb24sIGluaXRpYXRlZEJ5IGN1c3RvZGlhbi1jb2RleCwgZXhwbGljaXQgcHJ1bmU9ZmFsc2UgYW5kIG9ubHkgYXBwcy9EZXBsb3ltZW50IGluZm9ybWVkLWRlY2lzaW9uIGluIGl0cyBuYW1lc3BhY2UuIE5vIHdob2xlLUFwcGxpY2F0aW9uIHN5bmMsIG5hbWVzcGFjZS9jb25maWcvY3JlZGVudGlhbC9yZXNvdXJjZSBjaGFuZ2Ugb3IgcHJ1bmluZy4KClZlcmlmaWNhdGlvbiByZWFkcyBpbWFnZUlEL3JlYWRpbmVzcy9vd25lciBjaGFpbi9leGFjdCBjb25maWd1cmVkIFBvZCBmaWVsZHMsIHNjaGVtYTUvaW50ZWdyaXR5L21ldGFkYXRhIGNvdW50cywgaW5zdGFsbGVkIHBvbGljeSBoYXNoIGFuZCBzeW50aGV0aWMgcHVycG9zZSByZWZ1c2FscywgaGVhbHRoMjAwLCBpbnN0YWxsZWQgZml4ZWQgemxpYiBhbmQgZXhhY3QgaW1hZ2UgcHJvb2YuIEFmdGVyIGV4YWN0IGNhbmRpZGF0ZSBSZWFkeSBhbmQgdmVyaWZpZWQgcm9sbG91dCwgcm9vdCBleGVjdXRlcyBhdHRhY2hlZCBwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IGluc2lkZSB0aGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kLiBJdCBjYWxscyBjYW5vbmljYWwgbGlmZWN5Y2xlLm91dGNvbWVzIGZvciBpbmZkLTIwMjYxMDExLXpsaWItcmVtZWRpYXRpb24tcjEgU09VUkNFdmVyc2lvbjEgYXQgZGlzcGF0Y2hlciBmaXhlZCBPUklHSU4gd2l0aCBOb1JlZGlyZWN0L3Byb3h5IGRpc2FibGVkOyBleGlzdGluZyBpbnRlcm5hbCB0b2tlbl9maWxlIHN0YXlzIGluc2lkZSB0aGF0IFBvZCBhbmQgbm8gdG9rZW4vYm9keS9wcml2YXRlIGNvbnRlbnQgaXMgZXhwb3J0ZWQuIFJvb3QgcmV0YWlucyBib3VuZGVkIEhUVFAtc3VjY2VzcyBtZXRhZGF0YS9vYnNlcnZhdGlvbnRpbWUgYW5kIGNvcnJlbGF0ZXMgdmVyaWZpZWQgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UsIHRoZW4gcmVjaGVja3MgdGhvc2UgaWRlbnRpdGllcy4gVGhpcyBhY3R1YWwgcHJvdmlkZXIvUERQLWdhdGVkIHByZXNlcnZhdGlvbiBwcm9vZiBpcyBzZXBhcmF0ZSBmcm9tIGluc3RhbGxlZCBzeW50aGV0aWMyYWxsb3c4cmVmdXNlOyBib3RoIGFyZSByZXF1aXJlZCBiZWZvcmUgdGFzayBjbG9zdXJlLiBJdCBkb2VzIG5vdCBhc3NlcnQgcHJvdmlkZXIgYWR2aXNvcnkgZW1pc3Npb25zIG9yIG5ldyBkb2N0cmluZS4gQXJnbzMuNS4zIG9taXRzIGZhbHNlIHBydW5lIGluIG9wZXJhdGlvbiBzdGF0dXM6IG1pc3Npbmcgb3IgZXhhY3RmYWxzZSBpcyBhY2NlcHRlZCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBqb3VybmFsJ3MgQ09NUExFVEUgZXhwbGljaXRmYWxzZSByZXF1ZXN0LCBleGFjdCBzb3VyY2UvcmVzb3VyY2VzL2luaXRpYXRpb24sIG9wZXJhdGlvbiBzdGFydCBhZnRlciBvdXIgZHVyYWJsZSBhdHRlbXB0LCBib3VuZGVkIGZpbmlzaCBhbmQgb25lIFN5bmNlZCBEZXBsb3ltZW50IHJlc3VsdC4gVHJ1ZS9udWxsL3N0cmluZy9wcmlvci9mb3JlaWduL2V4dHJhLXJlc291cmNlIHJlc3VsdHMgcmVmdXNlLgoKUm9sbGJhY2sg4oaSIHJvbGxiYWNrLXZlcmlmeSBpcyBzZXBhcmF0ZSBhbmQgcGVybWl0dGVkIG9ubHkgYWZ0ZXIgYSByZWNvcmRlZCByZWxlYXNlIGF0dGVtcHQuIEl0IHN3aXRjaGVzIG9ubHkgQXBwbGljYXRpb24gc291cmNlIGJhY2sgdG8gYzk2IGFuZCBEZXBsb3ltZW50IGltYWdlNzYzYzsgaXQgbmV2ZXIgcmVzdG9yZXMgYW4gb2xkIHNuYXBzaG90IG92ZXIgdGhlIGxhdGVzdCBkYXRhYmFzZS4gUmVjb3ZlcnkgZGlzcGF0Y2ggd29ya3MgZXZlbiBpZiBjYW5kaWRhdGUgUG9kIGlzIGFic2VudC91bnJlYWR5IGFuZCBuZXZlciBkZXBlbmRzIG9uIGNhbmRpZGF0ZSBEQiBpbnNwZWN0aW9uLiBSZWNvdmVyeSB2ZXJpZmljYXRpb24gc2VwYXJhdGVseSByZXF1aXJlcyBSZWFkeTEvb2xkIGltYWdlL2N1cnJlbnQgc2NoZW1hNS9kYXRhLWN1c3RvZHkgYW5kIGV4YWN0IHJlY29yZGVkIHNjb3BlZCBjb21wbGV0aW9uLiBBbGwgcGhhc2VzIG11c3QgYmVnaW4gYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVo7IHJlbGVhc2UgbXVzdCBiZWdpbiBhdCBsZWFzdDMwbWludXRlcyBlYXJsaWVyLiBCZXlvbmQgZXhwaXJ5IHN0b3AgYW5kIG9idGFpbiBhIG5ldyBmb3VuZGVyIGRlY2lzaW9uOyBubyBhdXRvbWF0aWMgZXh0ZW5zaW9uIG9yIGVtZXJnZW5jeSBncmFudC4gQSBmYWlsZWQvdW5jZXJ0YWluIGF0dGVtcHQgcmVxdWlyZXMgaW5mb3JtZWQgcmVjb3ZlcnkgcmF0aGVyIHRoYW4gcmV0cnkuCgpUMDUgcmVtYWlucyBwcm9ncmVzcyB1bnRpbCBhY3R1YWwgaW5zdGFsbGVkIGFjY2VwdGFuY2UgYW5kIG5hdGl2ZSByZXNjYW4gcHJvdmUgdGhlIGZpbmRpbmcgYWJzZW50LiBObyBSaXNrIEVuZ2luZSBncmFkZSBpcyBhc3NpZ25lZC4gT25seSB0aGVuIG1heSBvd25lciBjbG9zZSBUMDUvcmlzayBhbmQgY29uc2lkZXIgZmluaXNoaW5nIFdQOSwgd2l0aCBleGlzdGluZyByZXNpZHVhbHMgbGl2ZSBmaXJzdC4KCkFjdHVhbCByZWxlYXNlIGFuZCBpbnN0YWxsZWQgdmVyaWZpY2F0aW9uIGFsc28gcmVxdWlyZSBmaXhlZCBwcml2YXRlIHJvb3Qgc2NhbiByZWNlaXB0IGFuZCByZXRhaW5lZCBmdWxscmVwb3J0IGF0IC90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4te3JlY2VpcHQsZnVsbH0uanNvbiwgc3VwZXJ2aXNlZCBtZXRhZGF0YSBiaW5kaW5nIHRvIGV4YWN0IGltbXV0YWJsZWY1NTgvYXJ0aWZhY3Rzb3VyY2U5YjQvc2Nhbm5lcmRpZ2VzdDYyYjEuIEJlZm9yZSBqb3VybmFsIHN0YXJ0LCBmdWxscmVwb3J0aGFzaCBtdXN0IG1hdGNoLCBubyBzdXBwcmVzc2lvbi9hbGxzZXZlcml0eSBmbGFncyB0cnVlLCBleGl0MCwgbm9uZW1wdHkgdmFsaWQgZnVsbHJlc3VsdHMgY29udGFpbiB6ZXJvIGZpbmRpbmdzLCBzY2FuIGNvbXBsZXRlZCB3aXRoaW40aG91cnMgYW5kIG5vdyBwcmVjZWRlcyBEQiBOZXh0VXBkYXRlLiBUaGUgcHVibGlzaGVkIERCIGV4cGlyZXMyMDI2LTEwLTExVDE4OjU5OjUwWjsgaXQgaXMgbm90IHZhbGlkIHVudGlsIHJlbGVhc2UgZGVhZGxpbmUuIFJvb3QgcmVmcmVzaGVzIERCIGFuZCByZXNjYW5zIHRoZSBzYW1lIGltbXV0YWJsZSBpbWFnZSBhcyByb3V0aW5lIHJlYWQtb25seSB2ZXJpZmljYXRpb24gd2hlbiBuZWVkZWQsIHJldGFpbmluZyBhbGwgcmF3IHB1YmxpY3NjYW4gYXJ0aWZhY3RzLiBBbnkgbmV3IGZpbmRpbmcgcmVmdXNlcyByZWxlYXNlL2Nsb3N1cmUgYW5kIGlzIHJldGFpbmVkIGZvciBpbmZvcm1lZCByZWFzc2Vzc21lbnQvbmV3IGRlY2lzaW9uIGFzIG5lZWRlZCwgbmV2ZXIgZmlsdGVyZWQgb3IgaWdub3JlZC4gRXhpc3RpbmcgcmlzayBzdGF5cyBvcGVuIHVudGlsIGFjdHVhbCBpbnN0YWxsZWQgcHJvb2YvbmF0aXZlIHJlc2Nhbi4KClJlZmluZW1lbnQgcHJlc2VydmVzIHJldmlld2VkODEvc291cmNlIGJ5dGVzIGFuZCBleGFjdGRyYWZ0MjkgY29tcGxldGUgYXJjaGl2ZXMuIEluaXRpYWw2NyBtYW5pZmVzdCBoYXNoIGlzIGtub3duIGJ1dCBleGFjdCBvcmlnaW5hbDY3bWFuaWZlc3Qvc291cmNlIHNuYXBzaG90IHdhcyBub3QgcmV0YWluZWQgYmVmb3JlODE7IHByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIGRpc2Nsb3NlcyB0aGlzLiBObyBwcmlvcm5hdGl2ZWVmZmVjdCBvY2N1cnJlZC4gTmV3IGZ1bGwgQ0xJIHN5bnRoZXRpYyB0ZXN0cyBleGVyY2lzZSBtYWluIHNvdXJjZWhhc2gvcmVjZWlwdC9qb3VybmFsL2Rpc3BhdGNoIHdpcmluZyBmb3IgZHJpbGwtY29weSxyZWxlYXNlLHZlcmlmeSBhbmQgcmVmdXNlIHNvdXJjZSBkcmlmdCBiZWZvcmUgbmV3am91cm5hbC9uYXRpdmUgYm91bmRhcnkuIFJlbW90ZSBwYXlsb2FkIGNhcnJpZXMgZXhhY3QgZnJvemVuIHNuYXBzaG90IGlkZW50aXR5IGFuZCBjb21wbGV0ZWQgcmVsZWFzZSBpbnRlbnQuIEZ1bGwgc2NhbiBjb250cmFjdCBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgU2NoZW1hVmVyc2lvbjIvY29udGFpbmVyX2ltYWdlLCBwdWJsaXNoZWQgY29uZmlnSW1hZ2VJRDYyMiAobm90IGRhZW1vbnNlcmlhbGl6YXRpb25mMiksIGV4YWN0MTFEaWZmSURzL3Jvb3Rmcy9zb3VyY2UvY29udGV4dGxhYmVscywgZXhhY3RseTM4T1MrNlB5dGhvbiBwYWNrYWdlcyB3aXRoIGNhbm9uaWNhbFBVUkwvdmVyc2lvbiBpbnZlbnRvcnksIGZpeGVkemxpYnIxIGFuZCBubyBvbWlzc2lvbnMvZHVwbGljYXRlcy90cnVuY2F0ZWQvZW1wdHljb3ZlcmFnZS4gQXJjaGl2ZSBzY2FuIFJlcG9EaWdlc3RzIGFic2VudCBpcyBsZWdpdGltYXRlOyBub3QgZmFicmljYXRlZC4K" + }, + { + "digest": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQwOjE1LjU0MDg3NCswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMSwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImNjZmY3YzFlY2ZkOWViNTlmYzBjZTU2NmMxMDEzYTJhZjVkZjUxNGFmMDQ4YzY4NDc0YTI3Mjk5NzAyNGVmN2IiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iLAogICJwcm9qZWN0aW9uX3JlZmVyZW5jZV9maWxlcyI6IHsKICAgICJzZWFsZWRfbGl2ZV9kZXBsb3ltZW50IjogInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiIsCiAgICAic2VhbGVkX2RlcGVuZGVuY2llcyI6ICJzZWFsZWQtbmF0aXZlLWRlcGVuZGVuY2llcy5qc29uIiwKICAgICJjYW5kaWRhdGVfZGVwbG95bWVudCI6ICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIgogIH0KfQo=" + }, + { + "digest": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQzOjQyLjg1MTA4NiswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMCwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiIsCiAgInByb2plY3Rpb25fcmVmZXJlbmNlX2ZpbGVzIjogewogICAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiAic2VhbGVkLWxpdmUtZGVwbG95bWVudC5qc29uIiwKICAgICJzZWFsZWRfZGVwZW5kZW5jaWVzIjogInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iLAogICAgImNhbmRpZGF0ZV9kZXBsb3ltZW50IjogInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiIKICB9Cn0K" + }, + { + "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:2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtZXhlY3V0aW9uLXNvdXJjZS1idW5kbGUiLAogICJ2ZXJzaW9uIjogMSwKICAicHJvcG9zYWxfaWQiOiAiSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEiLAogICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgImZpbGVzIjogewogICAgImV4ZWN1dGlvbi9hY3R1YXRvci5weSI6IHsKICAgICAgInNoYTI1NiI6ICJlYjU4ZGVlOTg5MzRmZWYwZmQ5MTZjNzgwN2VlYTFkNjAwZDcxZWUzNWNkYTliOWZiYmM1NTY0ZTQyNTYwNDYxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIyMDE1LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcwOGFYUGJ4cExmOVN2bUtSOUEyandWSHpFZFpsZXhsTVJ2SGNrbEgwbEtwVUtCd0pCRUJBSUlEa21NNC8rK2Zjd01CZ2NwT1p0OXFWZlBGRERUMDlQVGQvZmc4UER3UEpaaUdkN0pRT1JsS3JPYk1JZWY2ZHJMNVVzUnl4dVppYXlNUmJFT2N4R1VXUml2Uko2VW1TOUZtc25VeTd3aVRPTFI0ZUhoUWJoSms2d1FYcmFDeDduVWZ3T2tkUlF1OUorLzUwbXNmeWY1d1RKTE5pTDFDaHdpMU9PMzhLY2VraGs0dVl5a1h5UlpiaDRVWG1GK2w0czBTM3laVjIrMzVtY1JidVRCUWJqRVo2Tmw1SzN5VVpMQ3cvQlBPVHNROEYvbXdhYkZ1MjFleU0zcFhWajBIUDArRUdGY3lBeTJXaUFoNUxJRTZqajlnNE8zUHgyL08zMG41cUxuQkZrWVJjT0Y1MStYcVRNUTZtOC9TYmY0VjdKY1JtRXNoMERJY0VsUC9FaDZjWmtPMVJ0blFEandmNDVmRmdrTXRjRHBKeHBnQm5TQXc4R2ZGY3dzaVNLY1l2L1dTd0syQjRGY0F2Wi9sR0VtZXpkZVZNb0IvT25CVWZTWkFrQ2NPQ2tFdlpvWmZKZ3VIL0hoYVpZbFdVL05VUUR6dGRmRG8xTXdnbkFsOHdKSW9rNThCTytQbmo3cjllbnRiVmlzNldSNUNweUFqSHRPdG5ENndzdmhMQUgwcGxwNW1XUmlFU1grTmRCZmhFRDdYdVJ0Rm9FM1V5Tkg4SDlCYnpvNWV2TG8wVkYvSUJhTzA1OVpkTlRZak1vMDhBclpJMWlNQ0J4bG1jWDYvVnJlOGErZTNsV2FoVGM0QmRFY3dMQ011RzQ3LzhHTGNxbkpGUzhUMktpMW5RaTVzYWRYWUVMMzhObm9uZnY2M2Nucml4N09HZVdGdTBrQzJVZUNHOUJDQW1SaEJsK2MvbGdmM0s5dHpJc0RvVitYWVNEbWM1Q2owUXAyRlFhOVByM1dvSDQrUHpsdHJBdWplNVBrK1dUU2djRWtlVGFadEJmclZjUGdWRFM0R0hqM0dzRk5nZnlPSXBwSWJtT1FHYi9NaXlUWWFrS1F3RnljbjcvWEpIUGRaUmhKMSszRE1lWkpkQ043L1JIb0RCa1hCNjlBckdBWWp0YVB6bjg1TzczUVU1M3hPdG5JOFMzb0FYODlSbVN5alF5R2dmVERIQlFSclBUcXc3djM1eWV2ajgrNnB4UnJPV1Q4UXE4YS9oc01yaWFPaFROU08xS0NtSStQSmtmUHBwUHBkQWhyQnNNL2diK0gyZFE1ZUhmKzZuOU9jV05PR1lkM3MvRjRmT05sWTlDWTR3QTRUbWFqSFA1eERsNy9mUHdqN3NzQmZGZnk5MlRrSjJXVWJCYjRPdlNpc2ZxenZhSC9aaUdhTFo4Ky9lYWI1Wk1YenhiVDVkR3o1OEhrdVIvNEw1WlBqeWJmeUdmTG8rWFJrK255K1pQRjg2OWYrRWRmdnpoNnNwaDgvWHh5QkZDbVgzdFA0WkZ6OFBIOHpZZWZDUWQ3QjBNNEFUaGFPZFQ3Y3c1K1B2N1YvZjYzOTZUZG5rNlB4Q09oNUV6cmtUTHVnWksvQWFtRFE1NmZKVEZvRTlTeFNWbk1YMHlVaUNneHF4VHpxSm9YeGlrTXhka3dVZDRWOC9jWmFpVGZTMkdPZEFFT3Z1ZUhHckQ2VjBzcG1oRVhjQytqb3NmL3FIV0xiRnNwQXRKbnNBMGNQWW9TTDhqVllPRGdnS0RoS0hubnk3UVF2VXJSRGNUN2Jjby8rM3ZVb1pON1M4bTJFdmJyeXhDZ2xMRjM0NFdSdDRqQWZzSVNQdkFlUFBSbFZuZ2hNSndnaTRkRXEra0toUlpUelFkUlJkR2FzTERuWVF3U0RTQzA2ZzVDdjJCSnB3Y28vRDNIaXlMWFgwdi9PbmRUTDg5aEpiRFlSTU9hUkR1TWJnQ2FnelErMlFnQldLWVIyTGlYc01sYndRZEFLbnN0b3dEOGdBVFBNME5iZ2pEQVRkaUVSUUdTUGhlZkdDQWFuaVlHYUl1OFczV2Nyb2FHajJQd0dtNms2NlhBRzdBRmw3QUlaZUF1dG02V0pJVlR4NWtSMTVOS0VPRzRDSDJRenNCZFpWNWNJRWgyU2x5MEMwa2NiZDBGSU1YbUZkN0ZYcHF2azhLODdZUnZSckhJMVNZdXRvWE1hMDlRZzFsYllWM2xLcTJ4RDM5UTB6Z3ZUUUkzOWpaUy8xYVBJeHhpTmdFS1MyNDhGMzJRVlJZV1d4ZjBSRnprbmVCcEpyOTNOOTRXSnZsUkdlQ2oyQzh6d2c1T0djNk45Z0htbDEwM0Z6a1FkSUFNYWxTOFlYWGF0UkRxYkJ4RmNGS1FhcW05RGpocGM1UzBHU0FGbUFyQ0RNeXdoMmNDc0ZFUWNFQUhiRDhLRWRFZ1hDNnRZMUNVNjFwQ2I0MHA5ZlNCeTZoamN0R25xb0VqU1lzaVlLeTB6TklFNERCRDh5bEZvYjgxYUhXQjVSRm9hYTBKNm1RcjBLaDZpWDhJTFAyVmdwWHhWalJyTGIyb1dMdG93OEhaekcwZUEyRUpBNW5oandVVFhmcm9HK285K0hTaXp1ZWFac2xCT1pDYTZJdHY1NVhvRHRCaXlic1VMRHZJc1pKNElFTVU1RWJ3bGJpVHhsTDZ6VVdWVjJ5MXE4NzhkcUJkTm1SbzlOaDZYeXFPRDJWOFN4dWp5NnFXYTdpdCtCK1A1NDFmNHJpcmZoZVdiWkh2NE1BSEwxb3A4OUd5aktLTlYvanJYdVpjZXNQbFpQamk2dE96SjU5aENSc24xTkdvaHRtSUFvL0F5OUFjaC9Lb0c4Y0JPRFFWVXdjK0dwY0NESmtpUTNNV0x3ODBKbE15RWQrS0hlT1FjWXhYMEdiOEp0bzVCRTU3a1NiZHVRZm5KaG8wL29xUGpLS3JVZjVIRkJiU0NvLzBrMzZiaWppN2lZN3lUbWdoNVZHd3Y3YmJzNWtlTlZ3YjlHY3VIWjZHbUF3aFJJdVg0UXArUTVEUzA0NGxPSk55a3hiYklZL1VnL28wWTUza2FMM1lpN3dTandVdDM2UXdZYVBjcFc1M0tKT2JCR01XTk1VWTJySDZIZ2kyc0NqdGhwaWdRY0I2Rm5wN2xTRkFZWXNMZXF3MitwWDRnUklEb05CS29DSExQR29MRUZIaExURWszbmg0akt4QmM0SHBBZ2dtN2lTZVNxWVRCUmdQamlwTlVta3pNTjRiRS9SZm5QOTRjZnd6K3hmZUZwMDE4aTVhZUR1ejlsNXFCbzMzQWNPYWp3YksrWUZYaWxBdGV6ZXphT2RvOXdTZUdqb2V0THdHVU5kZ08yYTJqOW1qS0dhc1h3NVJ0NEZIbjBiSmRnTjRqSENvMDZjWTFrWC90OWZ2dHdIRGVCbkQvbndnN0g3d1ROQ2hQZUZoUy9nZzl5SEd4enZnbS9kZmpMekpSM1FETmltS0w0WmJzMElBdlVkeDViajVacFJ1NjdEYW9Cb0dIa0NaYmVNVDE5anJCOENxMi9ZZG16YURPUFlDaGtxV25idkd6U2pEYUdIRkNzNll5QlpXYlBWelA4TW9aSzdsQ1Vha2tRZWhnK082YjQ5L2UzTitmT0s2RHFxSU5Pc1Jsa0c1U2ZPZUVybCt2MjltbUYzQzFCOC9IRjlZRXkxU2VmRkt1cXZTeTlwMDZ0ZDBiUzFpSTlXWjUydU9FY0lveFBCbU1pV3ZhVnVzay9ock1YU3VCbW83bGRvN21rejZXdWVSODZaVndUN1Y5enNJZWV4RlNxbHhRTzl5R0RRWDlmUWQyaW4xWmw3TDVIR0dwSm1lWTIyVmhhRHI1bnFaRWJxZ2w2eHB3SFplMnV0ZFhUcE1BZWVLcG03QVNjWGhNUHZ2YUhCYXVmSnJydVYycDF2emdFaW03WmIxMjZaWlkzd0ppMTBoa1FnSCtvdWNwd1N6eDZEbS81U3hRVmd3bDJqYlN3N1UzT3k5WmVkcjNtdmxxOTFuK0kwVDB3SDRmai9HNFJUNEF0ekdBRlBoR25VcmhVVm5uUVExMUUwVWQzV3czd0g4RXgzQTN1VlEvWHFrSC9YL0MvWUNVSnFlSUtPRDZiU01GaVU2TkpDSkV0K0xUT0lLUFEwY3hleUFhQ1k1WjFscDNBRC9QSGQvdVRnL2UvT2IrSXYvZW5WeGV2eGUvM0g2NjZzMyt2ZlorUS9uYjk2Yy96S3drNEpmaWUvRDJBTURiNmpEV1JTeFNzRDJrMU5RSk1MVEdWUnl2QWFxaGxBa1NUUUdQaWpHVWJKU250bElRWDFud0pIWFB5YmZ2WktOV3k4WDVOQmh3QzhXRWxoZG9tMlBzUmJCZFFud2tzT1lLeEZWc2hrMnNneUlBRXVNZG01VnF0a2FYTEUzUnNiSVA1alB2eTRYRUJSRjVNYUlZU3hhT1RuaGdLT0doL0s0SFFNQ0o0bWgzekZuT0JRUW5va3hibW1zS0RSR1EvRE4wOG1MNlRDYmpoRXFIbUNWZ1MweUw4NlhFcFdMbFVkN1MzdmFvVDdWUmxCMTB0bk03WW12MzU0T3VsQnUvUWR6WlpiWmMwOU9QNTU5ZVBPbXdrMlhZeEEzWFprWm5jaWxCOXJ0blhyUWF3OEgrN0FLYzB6bzY4MnBWTnpBQW5QNjhmVHN2UXU4ZVZJQkNFQXBZUUFKNjZFeEdHMFNrSllrRHYxZUgrZzJmVHF4VkJWNEFqZVVuSnBZcE56V1k3WGJOWVlGbUIrYnRVZ0N1aGpjV21TdmViWHVzTFZ1eHp3dC9ucitkeXFIWjdiUFA2b1JkdkxjSERjdVJPR0wwMTZEcXlJazNGUURhWkJ4aEVJWEorQ2s2S3h0RzRRcTloQ2tXU2MvTEFEMGRjZjJGR0VmendVc1loZFZ1cW1naG44NzM2ZVRrVHoyMEQyQlpqTi9ReTRBcFc5bGtMZXNEb2FoSFFTMGxjVnRGdGFMUTAzSkc5MTZZZEhUM3NmR3UrdE5CL3RZd3FyVkxHR1JLR3B3bmVFRHNwUzlIWXVxbyt3YUEyZG5ocVhnUmZmSWNLRFJhSitrR1hnZDRzRGQ3Mm1UdHFoVkZGcEdaYjYyM3FGU3piZXgzNnNOVWp6WDEvNFFGZERJN05RclltYkZyanczalI5eEhRMHJUSlJHbU8vam5WYXBDaXVTdk95T2ljb2h1aG8wZUNpTWRRWjhiSEwxTHdYbkVBZk45UGRYNGtJT1VmaUU5c1RHR09LcWlOanNVYnhIMndUL3M1TnpBeEk5TUdySWVReVZUUlpQL2ovN2daclNCTzdTWkphdjZ2U29IaVBWMU5nV2tlNmpZZDJCVXNHK0lVblQrOVBkQTVvKzlVek1wMGVQOUZKY05IZDk0THlDa3AxZHVkb1psellzcjlWUEtNalBWYjBCUmxERjlyT0tGbFMxblNGc2UvV1k0R0VaVHJNajIrV3ErNlUxQWREanRWakFXU1psdmp0U3NPT05acVJnc3JuQTRRWXUrOThNZGhlVEF6TlJodGNnVDdMVGNNbjFvYUc5NHpUWUpWWUpFMDVyb1N2alVaSGwweWVNNHNUb0ROeVV6NStkcXpyUGFTaWQwbTFGeEdhY0tzSlJyTFdJaTJIa3BSUDBZdXFNeFc2dU9qOXhRdmdKR2Evd0w0TjRmVDhSdWhpQnZadWJKQ3E1MkJMbDdWM3QyQkNENmR5T3FxYWlNRU4wb2dZcXZaMm53QXVJYk43TUZUaEJtS2RKanNWQndSZ0piNUZMMERoVk1TNnNBcVVFWCt4bWwwWnJDVHp4aWdKempTNktOaFBDVzBEZ1NvbTBsa3M2OGprWFp0V0RUWkU3bTdZS0hCMEFTcDZ2OGRDbFpKM1NiMDlRK01FazJodW5MSHhRcFR0UGkxL3lpWUY0M0hDcWxWaUNIOUlPdTFmRC9jMGZ0am16eWIwQUZmcHo4dFJ4QTM4UERKQnR2b05tekZZTk5sUUU2dVJEL1U2elhwR0ZhWThraWtGaGx4QXpHbzNFU01ReWNBM0RGc2E1cWdkMW5vVjZ2UXROTTd1SktGYXc1SzFtZUNPeVZxVmNyYTlHMU9yMUZWUzdaRzhrRk54UW5rVjdubkpSbkI1Y1RrQWd6aWcycjhoUmY4K0Y4emNrSXc0QllIbHArUldOR1NmTWlLeTRtQmRwR01sd2ZlaDVpalRQbmY1OU1OK0IycGMxa0lwc1laNUVKQjlOK3UxVTRaK3U1WFptVVlGU05iVUUwWmtxUEt1dHc2OFRJMXVNQ1B4NHhheDFERkVJQzZyV1F6RTZLRjJOYlR6QjVaV3JoUDNBSUtmOXAzT1loNjZ6K1BENlpESitkZnpXZmZYVCtTOW5nRnhZaEJEcS84bWNTdTZUMm4yUlFLd3Z4ZG5wTHhRa2EzTG9ITUpaSXJDV01zWlV1M2o3OGRXWXl5empJcm1HbUdCREdRVjVCMm82ZjZsekJpQUNrWWdwZE1EeXF5ekkyNUszSXlVTENoWHl5ZzRQRCt2dGpJTWtINkNyT3FBK3c4N1dRbTRYdVlDVllhZXFZZVMrdnNKbEVrSGtQWGZHU2k4NEwzV0pkbjc2Njl2VFYrOVBUM0ExOE1MUjVBUmgxdU1aL1ZtN09RV1poeXBQSmlHak9NaEtJd0VnZjcxSkFnVm1RSzFoZ0VZdzE4a2pmdkVZTVNMaTZBUmNsVC82eTJTUC9xcmxqdjZ5RWs0RGxVYmlpdWE4MlNINEVuMzkrZVNnbmJjeGFadkN5MEJPd0YyckIrNFV1ODJSK2tpT2VMUW9seHhmV08yQkI0MlFWMGUzdU9qamVTMlN4Wk9FcDk4OW5SNDlVdE03S0t2cHFRNkpDNTQ2REtVVUlna2xvMXdMTWw5MnR5V3FrU3JZZW1tQ0xQM2N4RmZVdE5kc1hQelhYRFBKSGx4QnFrUGJEY1FDdDh4eXpRUEo3ZTZqbms3QUsrUC9KOXpzMGJXWEI3QllETHJzMDJHakZlaHdWcUMzZnRqcHkvUEx6NEFKU0ZsVnI5RDhybXNPZXh6ZHZ0VmlxbDgyRzB3cE9xbGlaS3l6Z2x6L28vWGJqc3A0VnNZTU90dlF2eUgvRmN2aU5zbW9XeGY4Q09YZUlNOGEzd21RU1V2U3pGUCtjd054WVVhdnBrZmZiRG9jR0JnRFNvUjJNcGxORkF3dkJhOHBvVDdpNHpkdnFvZGVRRDBwcEhXN1llWFNMN0h6WWdncWkvRUVyRytIZUlMQWpTdXB2R2pTclBnVCt3em1yR0FHZWVhVGo2UnM3bVBoREFLUWVxUFVPaGNFQzVGdDB5UmtjRndGZ2wvVU9ZbEwrV2hIS3FWOFplVnVpYlBuM2IyR3BCYm1mUHdQN3phY1BsVTViN3RxeFF2eDg0VHRPckhRZis2UXJUTW1pWnZSLys4NTZ3ZWNZc2NhZit0UWRaekt0YVBLZzlTVWVneVV1ditVbGFlL3dIODE2SVkrdXRybGRUKzRWTnB2Rkd2VXNMYmJxb1BPRkQzMEZKT0xYS0V3ZlVsaXhYYUE3TGUrTDBFajN4RlJlQ1hTaE1TaXFpMnAxbytxVmxmdWJjUDExek03QTMxVHFNTlF2NUgrSFBzUk1GMTFIcnl5VXZzS0x5L1lnRHY0b0pOcVJURkRtbXlPN3A2eWdoVTczSHU4alVRV0xyUG5hSGdQTEtGMm4yMjFRZFU3Vmc4ckdHeFhTRkdmbzcxcGRSQWR2clJxVllPRDU0NUpiR1ZiU24vcmMxVVY0QytTTzZxdmxvdE5tT2NjRG54dUpBYnEyOUVwczFZaEZiRmlxODF1N3pFTkoxNkRsekhZcmRJbjEzbFQ1Z1c1UERuNkRnWDI2MFRvYWpZWmVLeEJqbFI5azI1dy9FZEY5MitLTGFLNlQyVGg5VkF6aDVLQmJyRTFwZDI4Y1BkSktpM1lLYVgxcVhQeFlLbmR4d04wWGgwOFFIMGpUbjlQcHZGdjVncVRMRnhoelVKMEpBMGJPVnhLVkRZU3VLMzJiNU9pTmFsWHppVE1xdFNFZm1QMXV5amFkWlBHSlVxemhGcHpiUHBiR3pITklTN0dHeTRvQnhVeHo3cjY0bmRGcnpNVHZUWW0ySW9DVzhTc1B5bDBaK3MvcTZ4L3hxR2dTekZwN2lhWnk3NmtTL2FXOEtLVWRUT3hqcGZ5Zk9sVzhvZk53Wms5b1d2UHBnR2FkNnZ6NE9yMm1hc28ya2lFLy85bGdQaG1VRHYvYWFXREd1blBqc3NiM2NrZzA4WDhKYWxTblYyLzNIbndWKzFNRTdkUm0wU1RTclJRdDZySzQ4Q1R2bTBmTkc2ZmNaYitvNVVMTW5mdjJubWpLb0ZIelNENU9reEJxWnBrWGowSmhNV2ptMTJIUjk1cDU3bXBhWjBKUnYxdVY0S3h0WmNIc1kyOTFMK1FRUnF5eUV4cTdzOTRtMFc0S2tGenZRVHdSQzA3YmZrQURZUTk1Ulh2dVhXTjVLbzlWcHJwb1BQaVNSemdSRjJYYWtsY3ZrdmtzTlRmVXdKR1YyTXhvNlN2eVk2T3MxV0pEWkJ2NlEzV1Zhbm5EUTUzN3JwQVROZnRXek5IRUxtNW5wclNBM3VyYjk5QVVBNUtJcC96eGRTQlNmSlFZTE1YQWw2NEdlS3Rtb1FpQlZVR0E1RGsvYitsYTVCZkNFMTFwS3JqKzd1Z09HZ2JWcGRSdmhTTkpRajVlcGo3WHZ6Z1hRRU05QlFWVlBvSDRlYU5xNTM0YUlScnVJWndycjRCTmpmM0RvdE5PallSbUhYcnJrWncxUUxha3FOcUNjVi9XaGp1aFYrbi9wQnY0YWhsT3J2ZXJJdmZlaE40cXpWdk5wenRhbStiREY5NHcrWFZweWNUdk45QWlEY2FxNXZ0YmZMTzh3dmRIODdYa3BxTGZTVSs4dDAwa0dwMTF4encwNzNsWTdwRHFJcVpxaWNNUFFMMFRneHA4YjRxU2ozaUNTK1VpeHQ1Y2QycW1CNWlCbzdCRFE3cTZzMnR1MzA0aUxRMVpvSjE4bDZqT2l4alhiUG42a0ExUEMwWFVaaXZKYkpzRVM2QkZGVmh1N3EyaHhkMGxQTUhZRkIxUlFKWUdhbklpTXJHc2VCTkgxemswdEZVVXJlTXJnZ3owSTkrVVhyWWZjSTN5U3ZXMVdhVG45Y2I5RWY2Mm5tenYvcHpKeTgxbXY5MzhsQ0ZMTmsxVnpGTUhXRnVEeCtiZ0dxTVRsYXVpbnVxTjUyUDZXRjliZlgyK2pwbzVXYjk4NEN2OGJieFJ0VTBSbHR2RS8wRFFMbU5Mc05XL3diQzNjZkNuYVRoeGx2SlhTZURYa3NtSXpyOGdiNTdCQzVNTjB1TklGVGI1RDJyUlppVDFlcnlOb2lUaHRYcUlVWU9WcG50TUhmejdRYXZrdXVyNnhDejhEdGlBY1ppSUp6bW5aS3VMb2I5RzhCcThHN2tiZHhJdTJwQWZjVFJXK1RnS1VDZ3hVZzZvNUdqUy8rTndTRDY0UDYzODV1NHV2bHdCa3dSWU9hOTFLQmVvNStLaC85Uit0bnJmem50dWtSMER3UHdqZjEvZUFjV0IxTUMxVmlQMmo1ME02KytudHpJQ1Y4NnE1Q1RVSzlVbXA5d1JTOGJYTGpiSGRZTGs1MHp6SDNxRFYwOVNJQTdNc3o5RmlrTXNwM2VkNk5RVmcxVzhZOWRCcktvMWNGL2hpWk14d3l2Q2hscFVzVWc3b1BTVm91djZldGMwMXJTaGF4N2lBZ1VHNUxUaEs5L09qMCthYWJ6RUV6M1R2RkZPOGpvT2c3RERBcDdYTWVxWjVtR3JwWjkwejFkLytZL0I5V0lnU0JmMFVWZnNaWloyZVBvOVhjTXJMdHJldnZLTjZ6bElIZkQzcGV0NWdIa1NOU1hNdmRWa1hBb1JqdHhNa2JlUkZoZE9xRnpTV01IVURPMFZ0enJTVFVNRXlKbVdwNHF2NEg4cy9wcEdvNmNWeWVtc1JwMFU3Uys0Y2I5S3NSVUp4Mng1TktKWCsyL2JqYWtweFNBbVV1dTFTUE9EcmUvMXROaGRDcTBLeTU4ZURqUmpuTDBmclR4cHhFQ1I5VDgrNllEME0zT2JaU3NybjdyNmJ6ekhOcXoyNnpOcEVESmRCR3QrWU8zaTBHSTJ1dExqYmdGcUsxczhlRHRBZk41RFROaWNBVHFxa0dhdmFtOFl0R1F0RWlYeUxEdTBWdnUyZEFIdGFLUHdhSE9tczE3ZzJQSDJpNTJ1R2JndzNjRkppWVlodmkzNmsvVm45Q3hUNVlmMlY4MnFneFR1SXFUVE83VzgrWVRPVWdSeXJRTWVZcXFlQ1p3VG9HOGExZlFhMDJ5L1diYWtGZnRUdWFyZEl2NXBwQ0tJOVdjNm5ZNVB0Uzc1a2FmM2k1SmExN3dxNzYxdFF3emNIdU11dUdCVkVyaEpLRW80L0NQVXBxR0dvV1VVK3VQMzF4alg0N0NCUzlRUGRjWHFQUVJtSGRkWndCZWcrZHpJMWVTVXp2OHpUTFhVeHJWUVRWMHRIUVgxRXNuSGducjJUS2p4cFR2NWdJLzRsTjkxdWV4bUQ2cnZ1clQwTXA0Z0h5UHVMQUtBWnI2YUtWQnJqZVlLQzZYeTlESGp5V283ZVBXdldzSmU4cnZhNTRZNEpWeU9TZlNETGd2eTAydTdheE9uVks3NFhSUjBQWXlzVTJxZDI4dkIvcXlHWjRhM2I2bDhOelhuY2JVNk04RG1SWGdTTGJjV0tVMnJyMkx1WFlzcWdQKzVPalFIY3NVNUV2ckI5U2syM2tGdmRQWTNPZHdraUhUQ211MjA4VEI3aXk3UGJ2ZmFIL3V0eitycE5NRlZJYXdaS3E2cGRBWFh3bHFZUUxldWZod2R2YjY3RWVkcGZIaXJSSXNDVGJlVjdjQWQ1alArcmYwYXAvQzZ6ZS92VUVWNEhualduQU51VzRqM3JvbmJPREtxSTRTcW94R0pXRUhFanR1Ryt5RjNQd3U0Szc5N1NqZ1dMQnp1V091dWx6eUpVUnBmUitpdThUQ3R0TmMreGZ0N1RVL1M2aHVWR3NIcWQ5MS9PMFBISnFQR3ZKMCtsaEZpeStYWVJ6bTY5bzIxVGZDYkQ4bkx1d0w4R3BBbjdwVGRiOEUzZXNabXhLVnN1UzV2dFJhdjFNeHNqOG05ajJzZWtvL01YNzBjaUd4SGE4NkZ2cHkyTHl6WnFGTGV2cGJGZlkybkNWb2VZd3AvWWdIMCtkZENIWi81TkpWWk5mdENQL1VOS3hHc2t2SVJHNTluK3lsTUZWZ2lkOGF3Z3NJdXFwaHRZdDNkYnAxZk9sTGwwRXNBZC9EUGZZK1AzM3V0ek9yU3BFMEJHUFBvU09SOXh3NXZlNDNQdTltZlFWMDJ2eFlXK3RLbjE1YjM5U2pyNHpxWXlDY1hSZXJQNjdyZEh5ZGp1dENOdGNZanBudHhzcXhzdlZHWSt0ZUJxMWsxZmRiT3o3bVZ2c0MzZjhDU3dmb1lQOVZBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vYXV0aG9yaXR5X2pvdXJuYWwucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiOTQ0MTY1MGM1OGUxNTZhNDg1ODEwMjkwZWM4NjAyOGIxYTIxNjU1OTYwZTgxOTZjYzYwZDcxMGY1MWI1MTc4OCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMTUwMiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E2VWFhMVBqeVBFN3YySnE4MEh5bld4a0F3YWJWWkk5OEY1SVdLQU11M2VKNDNLTnBSSFdJVXM2alFSNENmODkzZlBReXcrNGhLSkFtdW51NmU3cDU0dytmUGh3bXljc2ZRdzQ4MGpLWEJZa0dabkg4Y01EWTBrUTNWc2tpak5DSTBMemJNR2lMSEJwQnBBMFNkTDRrWVlFL3dVZVN6c2ZQbnpZQzVaSm5HYkVBNUFzV0RMOTdydFJGdXFYQmVXTE1KanIxOTk0SE9ubm1PdW5sTzM1YWJ3a0NjMFFtS2poRzNqVklEeWptWDdPODhEYjIvdDgvZlhxZkRRbURua3hIb0xJTTRiRUFORmdBY01pQnMvbk9BQ1FUaExTekkvVFpUdU40OHlLY3lkaGNSSXl5M09kaUdXQWV1L0ZTM3dMWTVlR3h1dmVsOUdYNjluRk9WQTJnc2ozMmoyNzErL2EzVzc3T3pEWFR0bVNlUUhOZ2pocXAxMWo3Mlo4ZlhOOSsra1N3Uyt1UHArM2Y3bHAyN1k5YU4vWlIvdUljWEprRDdvUzlHK2Zia2UzQUdnYVhocUVZWHRPM1ljOFFYN2x1eHNuSzN5TGZUOE1JdForWkduZ2l4RTNaRFRLazdhYU1hdzlVdndZYnA3RkFGb2hwMGMwd1pRQlBtZjRXTkpNNHpCRWxPcXpYcksxdDdmbk1SKzI1dmM4U0prSm01OHpDMTRwS0xnMUZLc0h2ckFXTVRVcytFa3BHQmY1aG9Pak5JMVRVK0VvZ254QlRkeG5SY01MN2huUFFDWEtVRG93M3p2cW15MHgreFJrQzJFR0VxVVRKeXd5alhSdXRBamxZQk5BZWxtdURKdE01ckNKRHlTSVNKQ3gxQXpwY3U3Um9ZTHN3Qi9QN05xOXd4OSs2TFVzTWplTTFyQ2lSODFOSjAvUXBrMUJTektTc2l4UEl6Mi9ZTS95eWRSU0pXbndpQ2pJcGdWZzRGcFpuSzZjenpUa1RLc3I4bU1RdENKT2lGWnQ2aFdrb2swYzY5ek9MbTdQTDhZbTRuUjRObHZHSG11aHdndlNoQUZsVWdDUFJ6L1hnVnMxd1dqa0VUME5Qa0VjQjl5dmN3OVNCWjdaRXRPYTFKZnI4MUZqWFlBMjdmall0amR3WU1kOTIxNWZ6Q3pCWUZjMHVRaHM5d0hKZFVIOWhsSWFpWjhpaURGdXpyUFlXMmxGZUlVSllpaUsweUJibVNwZ1dTVE9NemRlZ2owdTJUS2VnY2xZaE1kNTZySlp5aUMyZ1d0YUpBR0xZaGpQbnB5ck9OS2JBSEZyREdHQUxHRTE0cWNNakc1RnBNMlRDSno2a1duaWhBSkE4QXljWFk4dmZyNjR3bkVPc1k5a2k0Q1RCUXNoMkhUMkJOR3hDcVIrRURLKzc0ZjBuaE9hTXVFZFBMaEg2ZTVUR21XOFErNFEyYzhqRitNSGNSZk1mZUJBa1JIMlROMU1VT1ByRVJyY1Z3U2NVd0FMZUFZaEMvd2xqUmlIMWVJOGdvQmNhZ21BbHpTSUJGVkJEK2ptR0xwWnVndzQ2Z1lDUHVEUWROVWhGeG1KMktOQzEvRWVtQ2NRQ1VNY0JrbnpKWTA2V25uaVArZ1VEQm4vd3Q3cThOOHBIbURDTEY3d3ozZlFmd2UwV3JkMHNVSG9xaklzZ2tGSWRjdnhpaGxVa1pSRzBIUk5NS0E0aVRrTlp3R0FvVmtWc1JoTnNBWXFERVdEcVFDL1pyVHJHS0FhMUpoRTYyNEJraUZMd3VpQjNiUWJ4aXBSRzRPN0tjQ21vdk1VeU1hbkd4RCsyK2pjZUFOUG00bHdiWTE3L3VYaTZ1TDJialIrQXp1aktmeFhXQkJOdytYd0laOHpzRVN3bW4ySS9HRkFJNWZaM1gzMCtCUVNaZHRqcnBSeE4yWGhnbWg5QURwYk1tRFMwOHVBdTdhRlpiU0I4ZnNnYWtzL2JXTTBGK2xyTitVMGo5QUdaN1dLWmliOEVWWUFieFF4ZWpjTkZSSm12K2NzWFNtKzlzUEFaKzRLRXZNK2JqcmZOOGlQMnJMZ3lkaFhTUHd2eW9pY2JpMXJROTRXUGc4dURha3FBbjlUZ1NnQUg5Z1lBMm9PVVlBNkd6d1FxNm1BeDdnRmtHQVVoWW1oY1dZME02YVFEYUV5Y3BscC9Bc0xnQjl0ZTJqYlJxdnViaHFqazMwWDZRdlVoVUVOQTZyUWtrMCtRbTdBU05BdU9HcDFzamdEcCtUTWpTT1BRM29CbUc3UGJnZ3ZnaS9CM2RXQlYyOW9JU3FaTXhBQllpT1FYc200b0tUM0FCVHJvSGRJYjJENTF1N2E3Vzd2cm5jd1BCckFyeGEySml0SzhiR2dEQ3FSVlMrd3daNFpGRlFZT1orZzBBUXc5cHhVdGdLU29veFowaXRrcFZVcGlIUm0xNlRic05LNmt2NE1TanF4YlZHc2NkaDhrV2hTaU9mTElNb3hLR041VTNVVGJhWlk2SzBhc2lqYjJ4NzdCSElOQ3VNT2V3SlRlSGx0cVNnRkRMSmRQcUx3SnhwM0t2R0NLS01QYklZRkJTdGpoU2Rxem1LckVVR2JrNWpkZC9NMFplaVVTaEtFbUdHdHNyN09wSkJwMnNnT0JaTFRpQUp5cGxERk9pc2VCZ2RRdDd1ZzBYMnh0OVIxV1pJSk41czhpeTE0eHBSVjA1d1hjRWhEQWU0SkJ4a24wM281cEV6a1dTazFuNnMwWEZNUVdJRWZZTUEwMW5CUjA4OXJLMVUzQ2d4Z3J1aElmcmNRbWRRSVRMZm11YnBTUTZpNXRScmtQSFlvNEhzRno2UW9RZ1FZcG9CbXVLcm9VVDlPN0dtRG9kcXlHcXpJZDNFcTJkT05INHBVQjZvWmVtRUxhMmJib0t4NjJ3cGlOVjlXWjkrZ3RKRkFSY0QzMEtEWkppWVVDTVp0dEZ5Wk43VFNLeXRBck9BUTg5ekZXdFhVOGZNd0ZGTm1ha3hvMjdmYmcvYjA1YUQvQ29aVTdFaE4zR21yR3U0M0pNZ2FUZVNpdlozd0g2WW50MitOWXJHck5XS04xS0k4dTZvWTZkNlFubEpabWk5cEtBdVVobjJDaXQrUlV5b0tlMjhtclN5d0xabFdlWUNVcWZPcHBiMWErQlZ5STlCRUVWK3BqMFdEK3ZMQVZrTnRQQk40bVlxWUJROFl0ZXJtaktjT2RlTXNWcEttcGc4TFZNWFFlbFVObWNqY00rN1NxT3pJUUFWeEN2OGhKbVFwV09mV3hxdFMyU0NGNnVIVHFXNVZjQ0lDeXdaZVl4OGIweFZIQWFHckFUZXBOQ0hPLzl1QzFMd3NXTko3Q01lT1k0REs3dGx2Y2NlTjh6QmV6anM4ZGdNYTdxdlg5ZHIycjdJREdQcEhSeWNuL3VHZ1ArLzZ2ZjZ4WngrN25qdndqM3IyQ2V2N1BiOTMyUFdQRCtmSEJ3TzNkekRvSGM3dGcyTzdCMVM2Qi9RSWh0NnEzVk93WUZEUmJLMTlBSjRIODhQNXZIZmtIUUFqZ3hQS2pnNFAyREU3b1NmMHdEMDRHdlE4NE9ub3hIZmZXRU9wWHBDa3YrZFF5Ymo3R2ZUcEt5MWp2emZ2c3Y0Uk96bnBEK2J1NGZ6UTdWTjY2TlBldk5jOUdod0JpSHZzOXZ5KzNUMmhBMjlBdlg3WHBmN0pjZmZrMk8wTytvTTMxbytnZThyQlNCbFgrUWljNUM3TjJUb2tCb3NaVk0wY3EwTnNhSkQxRW1IM010Qkdaek5YZEVDT1kxczZvZ0pKRWl5WGVVYm5JU3lwOUMwTnRaSFFwS0k4NTkzRk45UUxTY2l5VGRWM0kyUkErME9CR25VS1hHOCswNFBHOUZRZVQ3Mjl0RWFaR0Y4bHhxZnRDNTlHMEliTUpPVS9RUGdLc0NUeDNTSVZVVEFNelkzeEQ2TlVKbUtVVXF5bHBMUXFqRzA0MUZKUUh4MkY5aEZqd3NjS2pqeU5nc0cyZ2xpcnZEODYzY05EMjE0anJhV1VGdk5OVjBpTzA5dVVyMVNpbXI3MER5RlAxVXVBdVQ0aXNBeFFTQzF4Q1lmREdQYVloK0IzZEE0dE5CU2h1TzRjVzRwNnA2SFZDRzRmY1pFUFRCVjR2Y0RONURuZTJweGtZc3g0SG1ZYzZvY3c0QXBVemsrS3VhbGw2REFyZlVFWnZwamRmaUpUTG5Mckx0aVNibEJWQ2ZKSk9kWGRLcEhCRmpNR0xwbk9aQUMyaklZYkZnQ1NIUzdXYUhLak4yc20xM0txUzM3UnJtTkJ4WHdxcXRaN3A0RWdJUytRZ3pNQklJQnJnbTdIdURoSFNYVHFtOGhNTXBNTGlVcXFaazgxL1BQQTl5L09lUjNmZzBIQTQ2b2lyaHFsSktwNkdzaW5QdCt4dEFLWXJtRzZwWWh5NEpMT1diaVJsTW8xb1FTWWJ2V1NtbFRYdDNWU3NiQXRzWDJDcW1LR2hIU0ZCUm1ZdjF5R3lHVUlLZ0NUa0ZqTkRTbm5qRHNUVTNWQlp6Z0FocXhlcFNXMXl1WnN6YXpyalFXSFNlYVppaXp3T1RHTkVIcStkdkp3RC8yYmtheXlSUnpoRzZ4aEF1OTZnb1lKWHIyMHBqcGZYTjhLRmR3SUJHbWRvaHRIQ1J2MkdVU1BVSURpbGNCRWNvUGNTcy9heUhKNWZKQlE5d0VJY2tkQ1M1bHYxS0RST29VSXdWeE1LMUNlUkpsemNJTE5wb1NkS0ZWTndjMjBHUExVdnI5Mk9sRUpHM3JGU3FUQUhsQVBnOGJxYXlxUFZmT2xxRnVWb2VVdk1Rb3A2L2N4MjVuYkhQRFVwTlRSRlYzQ1psazhTM2ZERmVGS2dLNTF6c1gxeVJiMGk2S3pxUGpUemRmeHBTSUlCcVhGMUVjTWRNN0xnNDdpaUVDcnJRTkZPb3M4YzlMWVJFdS9DNE9mV29yc1JBcGFlZGNDVllZcVRFTFRMYmliVGh1VzJVSEhNRnVuMWI3L0pjdWhhREVUNlYySnVGalQ4SzlnQ0llSDZtcEpXM2MxZnVqQlJ0VFlwTnpHN1I5ZUUzZThmSmx3czZCaUlYc3o2R1M0Zy9XZHhWbENVd296M0RIQk9TMWpDRUdnd3lLczZreDRxbHpTYmVScUJ1NGFSNEdMcFlETXp1RFhaZFlwclZnR0kwN2tGWFUrQjY5WVFJSUVSMVArMzljUklDbThzbDcwUkNzem1kZzFMMFM4Wk5MRE1id2oxZ01IT05EdEhIUjZlR0c4UWVsZ1R2S1dCTEVLQnhJblN0RzlXdmZkb1dWak9ZRlEyOHFKTWdCOXE1UXJBVWhzVGFZUUxERmdXQm1ZcHlrNnYxWkxoWVpLSFlHaTBMQjJFbElld0daazF4cEFMV0pQeEE4aUQyL0FVdWJuRU1DSk9uR1ZTUzZNZVo2eVJsTXNld1dwQ0wzWnc2SzQzakFKbGxBV2JjTnFHVjRDMU9yNTRaWXlIemt1U2xGanVMbHd4c3hTdGpGS1BHNE1iV3k0UlpvaWY0ZjBHTkZRM1psRER6NmJCUkcwTURPVHM5QzN3QkR3Nk5RcVFremxYaHNCT25LK3ZIM0d0M0lEOU8xMUJiUjZpWTN1MW1yU3l4WkFyVXA3SDgrbDFEbDUremZKYndjZDJhaWppZ3Q2Y2Ywc2J2TzNrUkJ3aG9WdzE3T3o4ZWpUSGZtUGZMbTYvbng5ZVhuOWkzNGZuLzh5dHByMzBPSWpsSTZQUk14aVdVc05YMTZmL1dNMitoVUlWTjZ2ZnRxcGtBM01sZkNRY1F1MWRNUVZMZlFWOVZUV0lKa3Q2dEZmREtOcGdHcEU5QXRqQ3MxSlNSWFB5R2NaV0kzWjZJS0tza1pUd01NMmFRVlErVGxPWVJNV01kUzJFQmY4WlYrVlhGc092dkVIUzRYaFZqWmZ5bldHMVVYRVhRaVlMM2w1ZlYxSDV2U1I0V2NUMnBERk84NVU5SlV4L05DSFF1eDloNGxCU0NndHpQY3FwbFdRMldSRm8xL1BMcmRaMUMvajY2dkxmNjdaVkphdTZ0b1FuNmNBaHUrSjlYdzhxbnZhL0cySy9pa3lXN2xmbGdJRzc0MVFpMDV2dlFoUkg3QThRWVNBL3ZyZmtiRVZ4QTl6dmpEWHA1Rk52b3BjVThNRmtOL2pwakVCbE83aUs5cmJZclBsSng0YjNWbHAvZnhpUERxN3V4Ny9zL1JYMUc2ZDFKcHFheXdYQzlXUklGTGlyZWxHUkV3RWJCTWllOFlEVHZJVDJPaElQSUl0MVNuOGlZeEZFMHdZZnVvbTdqSkFkR2cvc3dXMjZoQ21jUnN3QThGckR2T3BnUGJ5VkJVT0dRamZxZnNvZmhOVnNmbU1RcVdsSXJmOFRFVWZ6TGJXczdPOFc4VGtDS3RVdkZ6NTJSUlBiVU54aFVab2hydVc2WThvVGdFTGsyQnhQU2dERWZNZ1dYRW9wemdlZFVPbU43OEhpU20vd3BoMGh5ZEFVYjBNajZldHpaaVR0Uy9HcHNTcGZGSldEWTNGaHg1VkFzTzNncGdXVDlRQ3RhWEZ6TFIrVVZsY3BKMWRmN201SE4yTkduZnR4ZDFBZ3BsYTFBK0tMWGtZVTF5bjYveGRqKzZWKzEwdDRXWUJpdnZmN1p1bEtXZ2MvTndHcjNGVFQ5ejJxMkpHN3FUUnlMdDFZa29USWhaTEhReUpNZjU2ZFhWeDliTlJYR0RURUliMW83V3pGSy9vU1RHQXh4ZmkremtUdjdyczRKOURDQnJ2SmlOTVhkVklmK2ljdmxNZU43WmU5M2FtRU5nL1Z2Y202QklzK1YzaUJuL2Fyc2lKMHFKSW0xVkZhZ3RHejI0VTI3dTNSbDdCT0pLWDNWSkFOSVBHb2k2SHJJWXJNc0Q2WlZiY3VPS2F1QUxsZjVWTUlVcytoSXZMeHlaQVFiM2lnT1U1aExxK2dESmJmdkEyUzhRQlRuRzJMNDRraks5WFo2UHgzYWVMSzJPM29tUm9iNVFNUmNndmlyM1czbjhCeklsUit1NHNBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vZXhlY3V0aW9uLXBsYW4uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmZDM4Mzg1ZTM2ODdlYzZmOTg4NmQ1MDI1YjM5NDQ2M2MyNTJiODE5OGIwNDI2YzU2Zjk1NzQwMTM5ZWI3ZTliIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDQ3NzAsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZZMjQ3Y3hoRjk5MWNRK3h5dStuNnhYMkxFU1p3WEkwQU1CRWdRRExxcnEzZnA1WkFUa3FQVnh2Qy81L1RjVnRKS1QwRUUzWmJUck9xcU9uWHExUHo2VGRmZFBRMVR1ZnUydXh1bU9pOTdMbjFoR3RaaG51N1g0NEdYOThPS1ozdW14elFObE1aKzRaSFR5djFoVE5QZDc1cUY5N3kwOHpBaVR6OGZsdmt3cjJuY0RTZkRmL25wVHovMGYvOXJMNFNJL2MvQ3Z2dlBPT1JnUlpUOUlzOFd0bVc0SGNjOVN0K085RW9vSjRWOFBiWnVhZU4yNXJEd0lTMjQxM0ZLQjdoN3orVjhnajh3SGJkNTJkVmg1QlZIZjhWVFBFKzBIUk9lM3g5ZTJ2dWNiU2pNTVVSdEtsZFJTNVNPZkJDZU9jbmloQ2hlTW10TEpjVWNhODVrclROc2xIWEN1UE4xbXRuajlqZ3Z3L2F5KzJVK0xsTWFML2FqTWRKWlFUYXd0QzZaWUlNVUtncW00SVFLV1NhRnoyMTBnb09NanNnMWg2SmFtYTMwSVZ6dFQya2Izdk1PRVQ0c2FYOHhYcW1HU3RwR0hhWElpbU1zeGNvaWJVeGFKTnczV0UxRzFDcHdBZWVTVTZJb3dTa1ZDcWtxY1RXK01QRncySFpycXJ5OVhJeGJza1o3WFZVaGs0VXpRZ1NsTE1uZ3VHWlpiS3JJRzJrSGQ5cUtYSkpJVWhVdTBTT3dJdk1kYlA5MktnVUJKSitYQWJEWUFLQlVYdnB6YVAxODNHamU4OXJqNzMyYXl1VWF4Q0VrU3BaVmNRU3YyVnV0UXd5WllsYkc1UmF0Q1lwTUlxSXNFSUVoWTFHeUVLcjFOVjFqWENsTi9TWFErMS9XRTBqdkVuNGhkVTdtTExSalYxUXJDY2xjak5iYStsQUl4aW1ybkcyaWtKTnkwYWdvbFdTdmxYdzFqcG9UbjI0K2JEMktOTmVianl5Q2xDV3Bvbk5CcFlMWEd2WHdnVzBGQ0ZqRzVKQXppd2lVOXptSVhJRkc3Ymw0UlM3cGZQV0IrNWVoQVBab3k4TTR2K3g1ZWczRUJGK0ROZ1JVRmNya2t6Q2tkRlM1c1BDS0tkWGdDMG5wc3NrcEFlSGFjbzVrWTB6RlVyUlhKK2QyUWtIbXFhOXBHSThMOTQvRGluNTV1ZmtDTkNOdVdGUUt3aW5BeXpwZ0pFY3JvN1dWZ25ZQ0tKSElwZ2dwbElyUFVyVGFTWEtBWjNTM2xsbTJvYUlkVzlyZ2RJRDUxOEpJc2lXeU1yR1FFT2hDWTJKejZrUk4xWEVBMnBSdzJicEF2aUVRellnRU9tTnJ3aFhZM0pBOWoyTk85SVNhY0IySGg4ZXRyOGR4dlBrUk1nU1B0dEZXc1Nud1ppbXBXQnpLNHIxUlJhQ3AwTFZaWkkxVFZWYUR3aG1abFZWUmdUdmUrUGxDYldwSU1RbWZNclUzRkpYcU1oVmdxY1RxSXpoV2VDMk5KUzBMd2pRcHNxZ3NwZkVnR1NMRFZ4OTE0Zld4ditENE1DOElaZml3b1VJM1R4cVo4c0xvWkNpWnhsRkNtZXkwQXgrd0ZERnFrdWFFRGZiZ2cyQ1Z0VVN0WTRxdUdmLy9sR3krbGpNd2lVYk9EQ3FiMklCVmFrelo0SzZxVnZTa2pVb3FVRjQrUVN5VUFGYXpERVJYSVlsVmpiZW0rZmM0Ykx4ckpEQlA0NVYyb3NBMW5hazR6cnExZUFUeGdwbEx0U25WRS9HaTl6VWFNQ2xmU3dqQitFaXNWVXhLWUpUY2tIek00N0ErWWpKZ0tBMFZBNnVCK2haRUtRYnNWWUZVb1FzbEg1VVMwYVNRR1plTzJmdUV3dGNDbnF0c3RXTHRjd2xhbDVUYUtIb3R5c3BwaEk5THhsQjluZ3BQTlBENmlqR2p0RUxXUVRCRldVTTEycEk1Q3hJWUNLUXNxQ2U1Rkl4QkN5V3RGY1dvU2xYUmFCY2wvbnptYXJ3NCtuL0I3UFBpdjZJcnUrd1FSellZTWd5YnFJRzNjQld5TXlsWkFBR0pxZFdwNk1GZnp1ZkU3RkZ4VndGTHA3Nkk0eE1mOXh2dklTSzJWeVNEdVRJQ0NsR1NoeXV3aUFsR2l5aEF2YkdFQXBoN0RWN3hSa3FGWWVkQm9nRmtSMEFBMktGOHZmOWZLWk0wY3VFd0UyMFFBZE5YSzR4ZlFCcVQxNkVwcXJjZVJlSnMyQkZJUVBwY05TNGhBUTFtYytQK1lZSVlHVnRsVGxMbFUvS0hJYWRxY05XS0JGSUVQZVVJUWFCSllWNEZhVEdNaTR2Y3pwVFFvRkNJa1ZhTGJNSzd1NDMvNVRodHc1N2ZERENIdm5OZ1FJSnVNYktLSkN5YVAzc2dBYk00QlIwckZXQUt4ck9TQUorMFZGMkI1Y0kyaEJ1Mm1xWjc0TjNETVMzWHdaczFzOG9CeUVGVkZUaWpjaWxDdXFLakVObXhscFVvb2t1VHFGb3FXMEE3SHF5QUVRY09GZkxWTk5QVDdwYWxpL1drVGNJZzRRZ1RLa3VYQkZvZ1NLK3pKVWNtdGk3QStHYWhKRldER29kV0FlMjlibElrbGJkVDhaS2kxdzZINUhMUUpZU1JiUU5JVG1FSUtoTmdNbEdKWUVZQVdsZ0tDaVBBWXdBa1g2Q2JNS200d2N4OEFhNDBUOXVDaWZVNjI2WEdERXdlS1VJbHJHR05FRkJBcDRDaGpGa2xFSUtxcFdTVXA0Q3V5R3JCaW5UQmNNTUVmZFZJOC9QRXkrNnNJejdYU3VkbWZ6Y09FQXd2TlBLN1ZQYkRlaExtdC9CZkVZR0JTSzFTSUFLVGdBN2tqN0tMaENuZ25aU2tBSVVDcll0K2NXQlVNQjMwb1FHL1F0bGdxbDNEZnVOMGJSc0E4UmRjYWhBamFBdEdDM2d1NUtha0FJWUNGQmFJUjgyQW01TzIra2FFb1JnTG5WTkpaZVBBRHNxSHI3cDhPa0o1N0lmL25LbjdKZTNINWc1aURhSlFabkxlb2grTnRrWUNLdERUVUtKR0syamQwaVMyeFdRWEFSd09aZ0x4c29ZMjhCamdYM1czOEFPa3p0SzQrMjJRTWFOVFM3WVYvQXBoWHJUTUFyZ1U2SWhrWk5BQ2tzb3E3QWRRTFZEdTJjdUFhWmc1ZURTY2lmeXhITDdZM2czNzlIRGFZckJ2UGZBdjh6M054M0hlNS90MUpxeEI3eTQvdm51emtQMStmVXhZUUw2dEZrMWNUWFJaVnZBQWFKR2dXS3RWSURSWFZWWGdCRyt5MS9Ha0JxRmp0Ry9FUUZJbmkwZDNseTF0d0o3MFAxL0dnOVkwbWxOQktFTmdrR2s2V2lZbm5kTDRGK0lBK3JOWWhVdUZKcTVzTmpaNUtEQWlFWUpPbDgzdTNBSUx2eDh1cStUZEhqRG9NL2Y4b2FuRk9tQzc2ay85MHYvNHgrOS82SitIN2JHL0xuOTl4ZnY5bjZIQzh6am45UkxnSXphUTFsRC92RlIrR2NheGIzUGhlTGloNGZTTVp0RFQ1Y2xjTVRFbVB1dUgyMU1BSlUzSFEzLzU5UFlZdXlZT2ZtYjArdlJqczVldCtmcmpwOWF2OCtyTi9Mb2N3OU4vblVLNjdKdm4xamhWcmRGVXh4ODJidHZuK05LMUU5QUhUZmh3NlRDVnRnNTZFUm5DYXcvRDFKM25mTmZrVi9QUVpVWmR1ZU5FajkwcFlkOTFwNFIzWUwwNnRJcDNiVWEzNHZjbmEyVllzY1VON1FJZElOM1JjVm5nc0R2QUdtL2QzMzc4L3QyNW1OMTVML3F1dTB5dkxzL3oweFB6WVpnZXVtSHRKaGhMVTd2d1BNMzcrYmgyNi9Bd3dSOVczV243ZUozblhUNU5qL1o5UUM5Rkw5WFBTbjlySTM3LzQzeHVTYzg3YkpLSDQ3WnJ1SGprc1gyVnNDMUhQbjE4V2FQUmZXa0h6RC9QeTlNNHA3SkRuQWhqZC9IU1hxbHBYTS92WUk2V1Z1cmR5dGhMa2RDR3BMdnZ4L0djcHJVYkpocVBwUVh6c2RRRW5WQXIva3ZYOEl2MHRxUmZrM3lMNXI3N2FUNVZiV3BvNytibGxJWTlMRkRIZTBZblR2UnlUc1IzZVB0bFJxS3ZGK3JBam9kVDZ1ZThKVmhQM1JrRjZBR28wS1c3ZlgvVC9RRXIxc2diZDhBRTB0OCtocDBHK2RQN0RXYklHb3EvQURrOHpjZUh4MjZiT3dCcGZ1NXVnYlNNd2syejhUeE1aWDYrLzZSbjk3eWZkNTkvQlhUSmVPdG5mdjd5a1p0VTMxMVh3dDA1a1h5dDNUZS9mZk5mSGJsLzdLSVNBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vbmF0aXZlX3Byb2dyYW0ucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiZmNmOGZjMzU5MzkxMGIyZTk5ZGQ1MWQxNTlhMzBhYTliODUzYzQwZmYwMGM1NjZhNjIwZDIwZWFhZGM4YWYyMCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODg5OSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E5VThhM1BiU0hMZjcxY2d1ZzhpWkpBRXFZY2x5cmlLMXRKNlZmSGFLa20rMUoyb1FvSEFrTVFLQkxBWVVETHQ2TCtudStlQkFRaFNXbWR6bGRUZDJ1QThlbnA2K2owOTN0blorVG4reWlMcjFqMjBDcmJJU21ieHNJano4dFRpMmJJSW1aVVhMQStLb0l5ejFFclpJeXVzS09aNVVJWnp4cTI0N08zczdQemw2dnJ6aCt1elh5M1AyaDJuOFNMUGl0SUtzM3psUkVISnluakJuSG5BNTBrOGNYN2pXZXBrM0NtWXc1ZVR2TWhDeHJuRFZ4em1UUzM0dXpkTmdobnZaVGxNaTcreFVSSEVuRm5YeXhUQlhCUkZWblRHdTZvM3N1SzBaQVdnQ0g4Qy90TWxaOUY0MXg2bmViQktzaUR5Y0wwZWZ2R083MStkL2VQajU3TnozNGNCN0NzTG9lbkRsN05yMFpBRGlzeVQ4KzdHdS9SN3ZIdFBpTkVQSzgxS1dOQUNCS0lpVHBMdUpBZ2Zsdmw0MXhudmhzc3lBOXFZVFdJTWtxRTJRamNVTEdHMEJIeERSenlWelZtU0lKVGFqNjRhWUV1Qy9EMUlscG9jVXpyQ0ZNN29rVWxVQy9iN01pNGtNU0lXUkVtY01rOGRSMDkvVEl0c0VmTnNtaFdMb0FSUVEzZDQxQjI0M2NId2RyZy9PanlCLzc5eDNaSHJTa0JUQmJuemlCakFPUVpBWVhzMFRpMGdFeEtJMnRleGxBUEhxWnEvamt1YVBWV3QrTWUzTEdXOVpSbmE3OVFPZ0NSNGNFdml4cWM0amJJbmkzM045VTVaK3VoOTM5dkxlQSsrNGdKNGJiejdIMTkrdW5qLytkUFBseC9HdTZQeGJwK1ZZYjhJVXVEZm92K3d6L0cvM2lwWUpPUGRaN25EWmRvSml0bWpNOG1pbGZjSmtIQVFtMnhaZWljdWJSWDRiVm1rVnNYQlBUMG5Ubk1ZaHpPZGtuMHR2ZHNDcUJRR09VeGdQb0RBWG1wVElPWGZEcUlPLzJrcUIxSG5BVGJvcEFHSUQvNEJRaGN5dVR4ZkpxV0hhd0tqUGl3bkxDd1Q0cGNaSytIdmF0NTR0NXRDZzU2T0RSbU5STUVBN3JZSm5EZ1JBYlluTmhkbUVmTTgxMUhjdFdCbEFJY1RFR1kxVVZQVU1FUk5RdUpsQkR1RElad0ZDWXNNNFJJTnNQNnBGYkdjd1piVE1HYmNHR0Uya3hRbXdOd2VrWVU2azJ5MVlHbEplNGxUNUY4V2RTTVd4anpHamJXM0FpcmhRZ0VKczNRYXp4WkIzajY2V3dpZDB6MEtoOFBCOGR2anlEMGNiQUdjUDRZS01ueHVnSWtVM0liY25JVVB2cm4xVHJod0FKeGp0c0hBSU0vVll2Q1p4Q0hwNXkzRUFON01RbkZlNnJoaEl0QlpuU3ZRR0g0dFl6d1V6eHZ2SHB5Y0hCOGRUNGRkRmt6QzdrRTBQZWdHYkgvUW5SeWZoT3p3T0hwNzZFWUUrYXhhMy9weWVXNkY4eUNkc2JhbGVNNUNzWXd3TGVJYnpFdjI1ZnFqWEhaZWxqa2Y5ZnV3aHhuN0xldUYyVExKRnBNZXo4STRTUHJ5WjM5dGs3MVpETHdBekJpa2tiVnRPYkJjYzdtVzRLSitFazladUFvVHRuRit4SGdacDVMRU1QWDdlRmRMRk9tVWRwcHpWb0RhcGdGcVd5aXJSUXJXaXZkQXlnTVNFbVNXNTdhVmV5RE5jTUI4bFlaWEdkQVk3Y1AzWjFzMkIyQlBRR2NUcGEyWVc2aW5KQlFPQXpiU3dDYjhOZFVkUlJMNEtJRkxXSG5OSHVVZW5na2FLdlZXdkFnaUNLZmQ0SUxzS1FYVnlzSFFzUm8zZ0tJR1JRVjZBRTBnN0ovbCtORVJ1c0N1N0N5ZWpiSjNJeldwdHBtU0xmSUU5aTYzcHR0QnBNc0F6RVNCS3VQT3hhWjRFY3h3blBmKzdOUDU1Zm5aN1VWOW9jcmNrZzNEMFI2cW12L3Blb1plcFNaeUhINDZ1N2x3TkNLMlllQXRPWWhib0RGNUhJRWJCaHpXNWFBUkZvR1ZCM0VoZE8yZlJnN3hJVFZPdUN3S1VLWWQzTGlqbGpCTzVOL1dDS1gyaGpNVVA1UkJ1ZVExSGtVVnRicG14QnJJS0o0M2dMbkVWWXJHY3BKaXFtV09Ia0QwaCtaa0U1SzA2QU9EclVvcGhXbHlkRjNCell3eDkxSkc0MUM0ZHRlSTdZRG9MQ1RCTkZqRTdINmhaZVBlYW1OWGl5WGc5Z0RsVDQ0bWJuZ1VIUjhQMlBIaFlUU0lCb2ZIcnJzUFRlekVaZFA5RS9DemhteUlLbWNETjc1R2R6WUY5cDY0VExRNjI1Q3ZzWjUwOUEzZTAveUcyL2t4VER4UG9nRm5xaVZmeHhSeEt1MERPVExmdGJjOW9yL1JYaVdKVDd6Si9UemdjTmlqbjRPRWVvcmdTZnBSL2xOY3p1Y3NBZTB5SXBjSytBUTFNN3JCUGlCYlpPQ0wrblEwTVl2OHljb3ZzcXpFUlRSbDFDakJER3Jxc3B5RE5LQTZnMmt6OEJWTHRUN282YkpZU1c5WGVOci9zb0RBaUFGUUlQSU1QR0sreFFzRW9tWVJwNC91TnRlZ0t5WUJLWHFHZVlxelB0bzRiOE9jTlNkU2F3U0oxNW9iQ2UyVkUvbjdraFdydWhlSkcrTGVYVzdCZWxhT1pEVWNTZ1ZVZXBTb3lFRHBjU21HS0x3TlgwYXFoZ2hJaXNKK0M0NGNxSTBGSElSOWIyS2JzQlNCYzFRekZGd0VZV254T0owbGpOU05NR2FJbXhsU25jSnZENmVCVW0zc3ZVVS9TZDYyVWNBaGtFMEJPbWdLVW1oaTljMUtXMmsvR3IxMVpFTzllMytXb2RDckc3ZzI5cWRuMzFBSHVnVE8zYjNkaHJ1YWVkYzZDNWVXTUpIM0pNbGFPUENId1pKQmtnNFRxb3dmQmtUa3VUd25LUUI0RUc1R0hOVVJkUDM3ZVBmTm4wWDlIZ2M3V0FxZ3pzQytHNURtTm5reWlHQW01MzNoUDVqdWx2V2lqdHFna0ZxMDJMcU9za2QxcHQ4VVI0UUg0V1J3ZU9oMnB5d0t1Z2Z1eWR2dVNjUU91dEh4eVNBNE9udzdPVG9hRXVTc2lHZmdaQ2VXV042Nmd1MkJMUUk5WEs0YSsxS0UvQU5NanRPUXpxaE13UU5GRDFtTnMvL3JPekpaWEw0M3pnRVFtbWU4L01US3A2eDQwTCt2NUpIajkrWFZlMEVTRVNlK1Q4Qk9mU0syUmI5aUhoVHNTaVFIUGxXeHdyT3BMY0RHMWFXZmVPdUJyWUR0RlhLNmlkUWlmT0JaVmh0QmJnQ050UVN5Q2FaQXFvbkFkaWx6ZG5ESTAxS1Rqa1p4YiszTWxDdUYzZGRzeXNBZERKVWduNXJLVWdCQTJTYTVFVDhGMDJMYVFaNjY5Tjl1S2tNazhZT0R4QTNVamhQd2tiRnNJZDArbW1hQ0Z1cmdmbVBnWEJFVlpteGlSaE9nYUJNeFY3cnFaTXI5eEdiWW5JaEpOa0RTU2tQTkVoc25aWFZ1WkNib3lESThzQ1pTMjZpTlIxcVJUeEo0SHVkTjJVNmgzU3QyZG5aMHhyV1pZMFZ0OXIrYlpaVkoxT3VMcy9QUG56Nyt3MHlzM3B6OWZIRXJXb0JCNFp3ODN6OTdmM3Y1K1pQdm4wWVRJRlVmaWRIUGkvZ1IrTHlQemlsNzZ2SGZRZC9CVVo5T3N5U0NEVGFIZllNTkhoKzZKNE51TVVBN1VNdElPa1V0RWRtU2hEUnlFaG5IVTRBVDdTQXp1NjRyR1pxYVowYXpkZ3dsQzMrNVBPOS91RHh2cGxoQjF3b2NPN2tUUVh0WVpzWEtJNitSc09JZWdFN3dURHA1SlZJZGJPamQrSmMzNTVmWEhRNE9qcjhBbDhuR1RXZ29JcXJRSTY4dlBoZ2piUlVkVVJQc3g5eU5tdlByNS9NTFk0N25kZHpzcmV1MnJPSm1SNjZyWVhhcVh1QmxBcEFtY2ZvQWF5Q2Z5aDJyMUhPNDVHVVdyZXFVVVZScG5DUXdPeHBnY0tWa2Z6U0J3Uk9RZmNwVWh4bndJdS9FS2FyRzBrZjlrS1hKQ2tmWjFsK3RYNy9jM09MTlJNZ2dXZ0VCdG00QVI5WVBvZ1ZJVzVhenRFZWNMamp2dFM2Nk9DWmdlRHdwT2loWURiZU1iWUt2b0FPekpUMzJGYnhSRHYxdndCZCt3dmpCSHVHb044YlVxc3VBOGFnR1BFNzVPa25zMDJuQm1QZlltL3FUNERHSWt6MzhuQlp5c21JYS9QazNWeHd3Zkw3ekRnZkR2WUU3UE5qYkcxSXJRdm1iaDMxN25hR2xDVUZKcnhvVnhKa1A3RGVESXdVQUNETUI0a2ZWalFKUGc1elBRYUxDQUt3WW11UGFBVytEUHpKVk13cWxJbUFpS1NqRTNLNWtETFcvd1pNTFlDbHJ3cXhsR2tQTW9Jd1k3eTBlWUl5YzdSQXYyNmZRSE02QnYrdk5NRUd4bUd3bnZvUG1hUXdHRFdNY2liVldQaTlUVEROUHBiQmtibCtzQVdmZkJ6ZFFyV0NjWFJzUnhGUWtnaWExYUdyZFBqRzUxN2g3dUd2TE50TklZbldENjd2ZGFBSWYwWVMreFRwb2Jlbmp2djJxUWw5a3FFdUx3ZEExYnc1b29YckVSM3hvUkhCaWlJemZLQVdwbk8yUlFBOUNiU1dYV2NxQkxtQkRmVVVQR2VFLzY2MkFrd01PRWhPM2txanNaWlIvYWtVWk5RQXl4VW9RVEIyL0pET2VQQ3F6NVhRYWY1VzZRUWlxWTIvazE5cEp2UkZ6YmRTSlN0N3JQVXJpUmVpclR4VXN0UFdmWng5QlB0RWxQTFhpeFdKWkJwT0V0ZHlxUlBFTVFsWlBHdlVlT0pURHc2TU85bUNjUVVwT0xvbys2QVNER29ET1M0QzBvRzNnSmlkSmhybEZrRkV3M1owa1dFeWlZQ1RHOU1qbmtrSnZPeE9LWTBaaTFaNUl3M1ZvT2hHc3lMNngxSmM0eVVGejlsVjhFVlpxazAzVkhTWVo3RW1mcE1LNUJwR01XRTN6eXJOU2ROVDIwbjIzcHZFYVlrTUpMS1hCTUc0aHdQOEhhUXBzbVpZZEVwRm91Y2g1NTN0YjJrc2t0cW9VbnJDRHZqS1VNRUo5R25UUTQ2QmJ0Wm5kWXVQUXVYNlM1ckRKcWtTdmxDeWIyWTVxRFpxVmRxc3laM21BYVdSZjJ6T0Z2ZXdtOTNsa09GN1BOdVVZbTViYVRINFpPYkgyUkJob3dXenFiYU1kNW5FcXlvbVV1bzh1N2F3QVkrWUxmcTBUa3FhSURuOFJyR0IwbUN3amJFcGxyaHcrRjR1NFZNczhOKzJndnNBZ1oxMDQ2TXNpUWJaRFhnWmFZd2RZcTJXQ0JxZ1B6bmIva2FXUGZSalJ6MWZsUEV2M2U0Tmhud09YZGNIc1BrQjR6L1c5bDY5MGZEK25tNkVlaHVlbjJGdDVtUUoyTFRpcXVaQTR1dkkzVVYyckZuSWkzWFVIc2pZRFJtUkhCd2NVa3NFb2pFWXRnVXlWNW92aTZaVENhY0tpa2pHQldrM0dpTDlIb3NOdmwxTXhSc2lZYlRmVWo5NWpIUVNROWlSNkd3NG03Q0NjSEExT1RxTEJBWnU2UVFCQURxZkhoeWVIZytuQjRjUU53d2tNTzNiZDRPMDBZaWZESWF5NGYzaDBOSkhaaVdxUE1vVXRsbW5zTUY4V09XaTdOZU9NRVplb1cwQmxqNFlYZzFsUkt1RDdWMSt1cno3ZlhQaitLeXNHOXQxNndsVXN1cFp3clZBVzR0Zk5reUJrR0pvcVBDMGhMdFlVUEUwanVjTHhqczVNdnNvRjlIVit0YlljN0gwM2x2TXBGZVhMV2Y1alVNU0JFTEFCb2pXQllEbE9aejR5TXZkaFJ2YUVhNDlRandmUlk4ekI3Zk96QXNRdWtieXV6ZUxvMktIcjBISU9oai8wcFlLcjZ4ak01NE1GS0hUR0hzTVV1VjF4M2RBNHN4RHpOdGFuN0pvSnI3TlRsOUxlTDdlM1Y2cnZGeENKaElrbzA3SkU3Q2w2ZkRtOEF5cGs2dXdGeFl3N2Uzc1BUL2pSV3JNelowRUM0cURtTjNMaEtDVVEvVFpRbVN6akpQSkZYOGZBMkxaUHVVeFNldCtmbFowcTRMQlU2cTh2bHZ0R3ZOeW5MT2czZFpGUXlTVzRzeVNlNHI1NjFPOFBobTk3THZ4dk1EcDJqMTF3YUFsbTVRVzZKTHRBMWh4Y05pYWdtZVVrMU53VHVIbmUwSFYxSmxsM2tqUWZEMDcyYmZ1ZEIzK2I4WWVrRVhHcFFTQzkyVHRDNXg0QjQ5S1lHL0QxSmJQdi8vUGo1VSsrcjEySFdqZjR5L1JiYWxhWnRocjA5bnREeWl6b3V3QlIvU0tIQ1dOVHV3bW8yQjdobWVSbkNYR2tnOW9RajZHNVBwcFB5cUxUVlVaSEhrWkZQVEZkSGlCYWhTQi82RWRZK3lCWEpDeVh2Q0NUQWY5OTYvR3NSMXNRZC9JQ2RWeFczN3NGeEhKbThHWlJveWZpRmJWb3c1TGdpQ3BsZ2Z1NWM0bGV3aEdvR1lvTnBtV2JIU0dBZy90MUUwUWR3M3JIVEhmczM5ZVVITzBURWRwa2ZnejdneHN5cmMrYzVIclViblpFNXlhem93OU1HUnpDN1dBVGJtS1VnVm1EZ2U3VUVkeExMNXZNQ25LZDhoL3I0OGtYNDE2OTBURlp1OGJXOWhad1NtRUxvK0FKMWU0SWt5NDlScTltWEZVZkhpT3M0b0kzQUN3cEcvRUFYVWRJc0srMWsvcHdHdG9hUHlaTVpzdmFmR1BDdWQxYjNIcXRLbDNFOWZqLzlBOUYvd0xZRDhYK3ArdmhwN3JXQUIxMTgrbnM2dWFYejdlR25nSy9EczhrRGVGVERuU2lPQ3lsanlhYlZORkYzU2NIYVRLOGNqQU9XWUdLVk4rdGlLaXJ5dWpvQzVhNlV2aURzWnlDY3RjU1l0eWpjWHBOWkNmQzVUWlFNZ3dSZXVDRkFCQTdkUlFvZDB2bVJKVXF5c1hVQmxzWHJLSW5GT01tellRTnFPbVcvOGR4NWVhWTdzVXc4SlZSWkVzc0t1TSt6bDZzWmhiWm5yNklwdHBxbStrQ3hMTCthdDJVUlp4YjRCcGE3ejllV2hPcThCMVo2SFZidURyMXFDd1JrRDRpbGJ4TVNkQWRXZGxPV2VTZWNIQUYwa1lKa01FVjhscDJCelNGN3lPNWZOL3lQTkFNUHJpdGNlcjdzTmNkdks4VjVRSGlyb2IrN09FVkY3amhIUnhiM1p1QTVvSU9xcEttTmNET21BUFZaWW9hWmlJVnNqaUhzd2ltckZ5UnVOVm1xaXNYTmJPaDBNemFvM1ZOUjEwTmdEcFlXY2VsYmtEV2NhbDBYV051VTVjcG1ZUURib0FRTHQzNjBuWDdSMHVUcFd1cmprR1dFSm5RK0tYaW1MYXI3ZW9xc2h0dXE2cnBpcHRQaXVSRmk0ajVnQW1jd1dFamhGc0wzbXJGL0tBNndteUJXZUFxelZrRVR5cEpyTXFnbkpiY3A1cGJpK2RVSktkMXJ4eWtLa3VieWtLWFN6UVJtK0hsVHoxeWthWGZVaWxKd0VoSWtoTnZHMFZ4RUxvTm13c0s3UFhDcTdZRWtZcHNVaUFucVo5dFJWSTRpTGNWTloxV2VXQUpadjJVNEt0eU41Y3AzZGxnaUMrSlFiQk4wbGVnMWl1WmF0ZnNORk1XSldVcHMwUXhIUUdzaFIvWTROSGdSaWtTM21vSDZrQ2pDSTZGeXl2cWsyRnY2QjcyanVDdi9STjVTMDBCQ29KcEZNSEltV1IrYlYwaExOQ1FmWTE3NlRDRDhCNTFLb1NpSVZaanJISTgzRkZvUXFZMXd3MXJWaERnZDYxZ291cVJHN3VXNVR5NExTcm5FYkVJRmxZMHhqN1FHUEl2NVpZZkpBUDl5aFpac2JyQ3JTd0x3VWZuTVgrb05WeGRubGUvNllhZUtMQk1oWDlMbDZPNUhLQUlBVWRDRDZuUWoyeGhQOUU5WVpvSDhabUdJRWFyZEJqOGFFQmU0MGhBS0FML1pHSEpCRklMVTFJT3lqT0JDRjdVdFVabkNiZ1NXUHVJd2l5S3ZFZXEvT2hVNWlJZ3dFWXZBNndsWjBFUnpqc0ZIRnkrSEkvNW04NTRITDJ4RnpDRFZySjdNd2pUODg0QUhFSE05b1JlRzUrSkpRV1d4QVFBQzBSQzNUalNZalRvYnRRZDNOUDFPUDAwQzY4V3FLbkljT25SOWg3ZWhkZnFReFQrN3p3Rm5Bb3VRcERLVXNnV2RWdnZyNzZBOXhBeUZuRjk4ZG1vTlpHVjhhcWFJNitxajFVeC8rYlNhRDBheTh0WXJVdlZDeHJ2elhUWklPQjZ5NG9GdlViQTN6WVp0QmpmSjh5c3MyS1dXUnF3dmp6a3JDd1RreS9WWTRiWDF6ZHJMZnNqQmM2V1JRK3A2bFgvMWRJaDBDcU9STUhXdGtVTnAwZnJlVkY2R2hXck5oSERsekVyZGVkWnJQQkJqNmZlWkdEalZKbmxOZDN2R040ejRtN1hqaDFnclQrU0FsR1p5d0lSc1FiZDAzSWtac05DWW52WlNMRWlTR1dVbjRKMHl5TUp5eEw5Zjk1N2lHMDB4d2NMTlVlbHlINWo1REozMURaQXNRcU1xS0NRcUt4TUFsWm1sSFBrekFsYmdUNjJSRXBOb2lDT0RzS29WdlVJN1kxVGFqbVZTaVhDY09OTVNHcGNoMnBVd2lUR2xEZU9hRkdHV2xvOFdRUVlvK0w3Q1lPVjc1aGNZNFhRdnlPTStyRzZKUTdTTGk3eGRiejdMTExSb1JoYmljN0lFREVxa2xuU1BaMHNZTWVjRVk3V3oyZEdkekNiZENRdEExd3IzQkZSVlRhcTE1UTV5aUJzZkhYMDRzdWs1L3Ruc3FyMGh0ZkR4VE94TW1aOGpBZEIrRlpTbWFJKytWOVlsNDZSR3ZSdGZqejJMTGI0T3JDS0RIOEhGbFViMkxiRTJ2aFhMWWNDMFJjVCs4MkhDbXNMdnZKOXc5cTZNa3o1c2FVTmpsa0RESDVXQTZoaGFRd1l1dldaSEVGOGplbzFwSXFPWE92R2wxOE5kdXVQQjBtVG9rUG5DVDFKdndsbUYvTUdYajlpajMxUVkzSHRrWUIwWURUTEtXMk5DTDY1YTFQT05VbW5PWWFvS3hocktyajJCRTBiUWFXUzZqcFlLQ2lOUnN0Nk5iK1RSbTlka0dicFFDMVlUT0xaTWx2eXRuS1VSb2pVaUxiRVZaL0czNi84TGVwbzJHbXZwbXBFT2xvcUZrL0R1Rk5xeXBRZ1RoRVhxaWFSZFhYUXFBTCsrcjJNWitncnRDMjg5T2xXSElVUmI4b0JCN0l0RWpHaFpuMVVzeXBaM0VpSGtZNldyaVlqTWpiUzZTM1IzY3ZQWUxMYys4TisxaW1TQStpejdyZ1pFd1hKc0VHa2NMQWV5YXNuTEtwVEV0MFlrTFZsY2FuVHpPRlNnNEd6ZXVydy92T3ZWeDh2YmkrcUowQ1lyRm9nYjZFVnJiaGFRR2hlNVVoZThXcndCYmZKalRlODRMVjlhRzR6Z241Q3VUNUJtalFhUW16U01tYk5vN1NOSjJFNk15M25DRitWZlVXQmlzdGtoZi9HQk5WRnFaVndlMENwQWdYaHBYL0ZRR3hmUkJnNHdROUtpdWVuWU4vNS9CVUFOR2VvR1dlbGZ1aFJaYVArU1czNlgwZXdUOVU3UkovV2ZmMHFFczFYTGRLbzVzQjV2ZkliYW04OEM5UTArQTVZVkRMWDBOazBTbTF4VTc5YzVKMVhCL2ZPVXhNZGczL01xandKQ1Bkc2dSUElyYUJFTjdWc3hGQ2FDdVlycVp0bGlJRVhzcUZBQW1SUnMvTWFQNGxLWmMyVkttekNTVlMxREgvZjZkNTd6Yk4yVmNlL1hSUFUzRUpSdS9pQ1k2Z2gxeEN2SGt4N1hsMVc2bjMvY245UVgzYkw1RjRqampRT3RjcEFLcG1FRFlKRVZid012Ni9iTkk0WStNSWhZdWFyTVZBVFJqMHBBMlMxUWhRUDliclpCSU1TY2VDeXhtTk5Nd280bm9EZXNJTVFHWjJhajNKVW44NGNQWXFNa2ZOSWp6bkUwYTNEVUJmNXR0U0dCcERLTkFuK0ppeU1Lb1BxU0xmdm9ucDAvU2UvZzlaUGlncXI2aUpKcW1jUDZyNkx2TVZkY3gyRVJ5QUw1VVRCM2VFbXh3Rk5BVXhjeWRtaHpFdzBYMFJYWmgrZm1JUXNMNjJmWU1nRmZTS3VBYmNZM2lCVi8wREtKZzlMT0RaWTlJUVZWbFQvNDZGWDI2SDVkazlkNlpEdkk0ZDU2bDZxbnBHWFhpV3FHY1BuYThuTm53SXREU2R3N1k1T1lJeDNwVlFxRnBjZGVwd2hOL0pTWGw2VjhZL1QzYi84Tjk1UUlqVFRTUUFBIgogICAgfSwKICAgICJleGVjdXRpb24vcmVjZWlwdF9zYWZldHkucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiNWM1NDM3M2YyZGM0YjA2NDAwODIyNWMxODZlZmIxZDVhZmRlZWMzNmQxNTM1MGJkYTBhMTJkZWQ5NzYwMmQxYiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMDM2LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTQyVFRXL2JNQXlHNy9rVm5DOXlpcTRmQTNiWjJ0NjI2eTdETGtWZ0tESWRDMVVrZ1pLOEdzUCsreWpaU2QwMEE2cVRLTkVQWDc2aXE2cjZZYzBJSVZKU01aRTBvRnl5OGJxWG9RZENoZHJIQUVwYU1DZ0hoTmdqZU5LRGpBajRqQ3BGN1N4NFRzZXJxcXBXTFhZVElkU0ROQW5YWDFiQVMzZFFCNHp6R1h5NGh6OGlxQjczc2htUUFqUEVKUWlqTzFTak1wZ0RsK0xXUGVkZFNOdTlEamtwNUZEYmlEdlNjUlNYaFgxbUNVTFpObzQ3YXp4aDR6d1dmb2lPSThXYzBpNjI0dThyZ2lNb0FoOVB0VzJ5NHMrTCt4Y041VXE0Si9FZjBoa2xHOUFCckl2d2t4SXVpNzZSZDh6OExrM0Ewd3BIUXg4WHptMW1kL250SExYRk1CeVEzeVB2dUhxcjdlNXQyN25HQWpkN3o2eTd6RHA4eG9RV2pXWlhXQnNIVytQVTB6a1hUM0RMQnp3eUNiMmNPZG8ybmRHN1B1YUErKzgwN2FlYlpBbURNME11TW85U1hpUjFRUGlWNmQrSUhOV2l6TnpIN1BOaGFpSDAwdU4xaUhsVUNic1VzUDA2V1IzZ3Q0NTlqNllWNjhMc1dQT09YUEtnTGRUdm1jT0ZHSjV0YWNjNmpoNXJtL1picFBYaDJYaE1paDNsRk83Z1poRTl3TzNOeGNYdHA5TVo3bDVTV016a1lORzJ1WnJFMSt0RjhYZTdNVGMrR3pIM1Rjai8vRnhrOVE4SDRSU2ZEQVFBQUE9PSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL3Rlc3RfZXhlY3V0aW9uLnB5IjogewogICAgICAic2hhMjU2IjogImExZDI5ZWE2ODIyYmUxMjgxN2IyZDYwMTA5Y2VjNDRiMDYxZDE2N2YxNDdiMTBmOWFhMzUyNTI5ZTFhNGM0NzUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMzg0NjUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzE5L1hQYlJ0UFk3L3dyVUhWYWtEWklrYklrUzFReHJXSXBpVnBiVWlVNWFWNCtMQVlFamhJaUVrQUFVQmFqNGYvZTNiMFBITDVJU25HZTU1M082MGxzQXJqYnU5dmIyNi9iMjl2WjJibGRodGtEeXdMUDhCWnBGdm5MM1N4eHd6U09rc3pJV0pxbFBlTXlNa0kzQzU2WTRidVpheGxua2ZmSUVpTktERzhHZGVDbjYyVkJGUFoyZG5aYXdaeXFlbEc4bEwraEZqUXdaL0k1aU9TdjM5TW9sTCtqdERWTm9ya1J1OW5ETEpnWTR2VTFQTW9pNldJU0o1SEgwbFM5V2FxZkdadkgwMkNtV2xtRVFZWUQ0RkRsVTI4T25aZXdvU252Z1gvM29qQmp6NW5XY01MOElHRmU1cVNaSHkyeWxvUUxZMTI0V1pUd2V1NGllNGlTSUZzNnYwZUxKSFJuc3ZyLzVJOVdYc0l5cGdsTEg1elVjME5lbVdQVmdUSGRKKzVjamZqbTZxZWIweSs4Q1BTQUJURjB3cDJ5YkdrbzdDN0NMRzIxUHAzZW5oczI0YWp0T0RoNngrbjBvSlZvOXNUYW5WN3NKaXpNeEQrdHk2dGZvYkNjalo3ODBkN3I3eDFheHFBUC93OHNZODh5NEZmMlp4Qk9JMXNWeHIvK2pFTFdXMlJlcDNWei9zdkY3Y1hWSllBem1XbThNL2I3clU5WFh5L3Y0TVdMbVhvUGJPNDZUeXhKZ1NyTW9YRmdHV1lBK0wxSE5NQ3pHVDJhOENwaHJ1OUU0V3dKR0dCT0ZETXNlNWNzR0h3RFVvUjNNQ3RwbGl5OGpQbnc2VWQzbGpLclpjZy81aXlZTW0vcHpSaDhmQUZ3WHBUNEtmeitBQURZRXd3Wkg0N2dBVUQ3UVhnUFQ0T1ZEZ0RtZFJJOVUrMjhDQ0RBOU5rTVppYWhaZ2Y5Rlhab01aa0hLUTRvcGZMUXRXbVF6SGtKK0w0SUJkcnB4V3JWYXJWOE5nVnE4VmdNM1c5M2h0U3VHOE5zUHdHWkFPWUc0aytYL3RySHY0N2tvL3hqVXEyRVBRWHNHOWJodjdwNzRnLzk2TzdqWDBmeVVmN2hWZjBBMW5JYTRQckUrdmpZL1NEKzBJL3VQdjUxSkIvbEg5a3drUjlOSzNRY0lMa3pKOEFobWhlWFA1NTFmNzN1OXZ2OTQrNWQvMkQzVDFnOFJ3Zjk0MEUzR1pnYWxnV3U1MndlaWFwQVduNFhxVzdRaCtGaXZXN0NBSldCaTkyazZxSjhUa09EQm9qcGc3dDNjSWhRWFNURXczMmNLMWg3SG5NUVY2SzJKRmo0aUx6cWlSckNTcWZYc054K09UK3I2WEMrdE9lUno2ancyWmVMeTR2YnUvTWI3R0RtSnZjc3cvZEF5TFA1OEhFeFlVbklnTXZzSm00d0M5elFZLzNCTHE0anBKT3V6enplbldwVE1NeGdHbmpVSzJmT29GM0NVeEpGV1hjYVBFTmw2TWg5RUhZNXgraml5cG00SGw5RndBcGdjVHJZWFNCNWhNSjhCeGhLbUtrMVE1VHVSVkRxandWTGFBbnVxc1d6aTNoTWR6ZE95cTZBa2Y1M01TdjJvSEVvMEFPWFVJTUF1NE0rMFBSZGYyL1k3OE4vLzJiU0xQQjFVVk5zTUR3NDVzVXF3RG4xT3prcDhSY0lUNndyL2xvK1daemdCZjN6YjlxTEZUVWdoa1UwcmtNbXloK3BWMk5MdGsvcnY2WVBhZVlTSzVJNEI1Ym5QaktRSHpBamdrejhwYm1xRGt2ckVqS1gwVXRwT0pmQWVBc3NLSWVaczZFSzJPb2Z2U0VhQkV6V2hKWU96VWJ0cWpPcUk5M2NVS1hoeHVrcFQ4bWJnSHNnTEdnOGowRklDeWVHQWVCQ0k1emhpMFhnMi9ITXpYQXBkbkZaV2RIQ2psa1V6NWpsZXphc1dxaDY3MGR6ZkpwRm5qdXJtYWR0dXBMcHBLTVQrWGkxR3E4RVQ4MUFOWkNsTEVsL0lEQzhtWnVteHFua082ZWgvNG5yWkcybHZ0ekJYNS9jbEFseGdpSUczenZzR2JEZ2hQQVRtcHVDZXVDenhKSEtReGhsVGhiRnpneUU0c3lSMkcrbmJEWVZjRFJlYjJrTElwZGVXcWwwTVVPQm9OaGp1MXpSMG5peHhuajlKSmpOdXFnWXdzU0FMcExEeEk3MFlPZ3N5YzcvV0VEUGVDT2pBdG5BK3NzUnE3L3Z0SXFvRUpMY29lWG9mRXNpK0Uwa0l1bmFjVVBmbVFTOFZNS21pNVNWY1RGZlpNVDJVaGpvYU9iT0o3NXJKREJBbU56ZUlrYXRxSjNMRWR1OFByODh1N2o4eWV3MDBFdzlCRTErMmFiMzRJYjNzSXhmQjZJazZkNEtob3N5MjR4QWhDU3ZyS3N4Zkx2RXh3Vzdmd3U4Z2l5RVlibXpHVXU2bkVaZVBidzFJdEpHZlhNcmFORklzdit4d2o1UzJGK0NvSXNJVyttZzIwSXJ5STN4cUo5M3JDUXBiRjA5ZlRQMHdxdDhETHJJc0Q5OGIraTBjdTJjdGJ2M01JTWFaeTl3ZFhQMXR1Wjd3RkFBOTIxa1RqMmZzUmgvdE90NjJlbU1WUVBRTEdjVXpBakNuR1VNQ3ozNEZtUVBuTUZCaDVGN3Qza1ZtLy9UR1ZiNmkzMnM1NzBGN2dSa0RRV3JIL01HK1dxNWNZT1VwZTFmM05tQ25TZEpsTlEwU1paSnpzOEJiZ01QVDlpTWdmU1JETHdzZzJLd21IM25HMHhWOUkyNDdDSjhES052b1JNL1FLMEdYdHM4M3RjT1phc2h1TWtreUJJM3FVaWhHVTdrQnZ2NHd5YkxXQTFxVk5DRXh3QVk0ZmVDTkVKcWRiTy9lNWhKTkpzSkV3RWJMcytWdjBqY0NZaEhOTXZEREExd2ova3NkWkRnMFN0Q3N4ZUN2b0JhUkpZRTBKL1N0Rkd2cGRNRjlCTDBUQUJXejhocEVpWExkc2R3VThPWGo4VWhjSStFZEYyb1FrVnFqdEtlOXdDMlY1dVh0b3grOUxIZkw1YVJYaGRiT2x4VVlURFJrVktCUllBRkJSb1hBK1pRVjdVSEhETEoya0k5UVpRdFloT3JGM1hXSmlnVjNRVjlXcjFaNVBwcFc3YUFMcTBlZVR2UXg5VHVkRVltTFFoa0tjVjI0Wm1yOW1odDNIeTl2Q1N0b3JiYjNpeUN0ZFF4alA5c3BNRjhnWlBzRzE3aXBnL0doQUdOTWFHcUZTcWpqNFQ4R205QjJGczRpMnF3Q2MzL2dqYnk4Z0tIWlFXU21GV1VvQXJObVpnSFBYR0QwQkhzendGdEpQcVdjdDhWckpnc0NFSDVGbUNYMzNXaHFEV2d2dGN2QTIwK3RaSi95NVQrTHRHY0M0TXlobEV5RWhaUk1FcUhhZS82NTlQYjg5dlI4SERjREpScVZRSHlJdE1nRE5JSFZjYUVhWEM4QitZOXBrNE0vUmZldy9JeTM5eGRCVmt2VXdPZERQdC9EZ2IvRWxpU1BNdmFnY3FHYyttd0JobGFvVzF4WGIraVV1YUJGSUVscFJRQzd5R1krUTRZalBFaWM0TFV3ZkUrc0psZlhqeElTUk93Z0pHUTJpWVlzdDNmaFdYL3NsUHEwczR3UTkveFRoWTlzbkJudUJNbmFKK3g3aFBpYkdmVjVDQnBCcFNHYnB3K1JMaXlYUi9YK3M3d1phZm8zTjRaSHF4V1ptZjRsK2RPTFJJY25zTTVkenZmNytoOWl1YnhqQUdMditZdjJxTXgrZWtSTjRBTXM2T3BFMmp4QWo4b0tyUGtuaThWR2trSCtGZzRlRG5Da3VnYlJ4cDVzdCtzcHZCTmlqYTFsRGNzM3ZMdW9QQ2F6SEE3eWQvTkxSUlJ4Z0M1Wk1DTUE3LytZNEdLcFpGRklOcU1QMWtTOVVvRUJ0WThzRlFIUjRyVU5DRUhpTytJRVduS0RQTWVJbGFoTXVqREJGQXdNVk8xR3lhcUdvSnhHcE1sTkdTcUduNXdEKzFDSGNmaGV6S08wemFCTCtIV2xkbnBjYXUralhBN3ZRZjJ6SXRyT2g4WXRpN3VwaEhpNjljVzJqaVNBbEYwSUJzbnlkWkwvNWdGR1RQMUFyeDdRMlBHUXQ1cVBiWG5GWlRmbkhkTmh5WEpIVDdTTkRXQWlpTkFxanZYeFVzWDNtRzM4Tk9pb0RaMThUR25wVnh0eTVZeGE1cy84bEpDaEFHSWRnZVpEbUtJNzg1d2RRbC9Gb1E3My9mQnhRSS9KVTVYOEtkVGNGbUJFaGZqL2hLMHA2MnBhM3hWNERTZ25TVXVzWnFKQ1oyWW1CR3Q4ei9SYXQ1azFsRmRtLzZHdm0rVTk5Tm9CdnBGbFJFb2djOEwxRXA3NGJVRzFna0RDcUxlTFNqbzRmM0ZsZVM3K2g5Y0lzUnMyKy9jNUQ2MWpIZnZIci9ocndZelVIa25KYzdhbzNTWjl0Z3o4OERxQkpNQnByZnI0U1RuVzdBbldJSnZrL1ltaSttVUpiMXZZSi9BdkJydkFWS2NFRW5DYjQ0ZCtHRjJRTVBkMHIvS0FkdjZ4RjFjbjF2NG5pV0ovdjdzL0pmTHI1OC8xMkNCcG9zTW0xNDArUjNtb1MwWkxnemswOWZidTZ1ejMyQk1aSTF3eEhkZ0Vwc3FKR3dlMGZyanlIS0lXZHFTL0tEaVB4cUhSaURiWnBrS0FWWWErTXhoZ0R3dnMybkNPbFo1RDdyTko3MWg1b0lweCsrd3NmRzN1Z1lxUW9yNHJPUVg3YUpuTjdkQlgxYVdYT2lkV3JnTTFLbm1Gbk5QODNkdXRtUzJJYTlWSHVkb09uVkVWSU9TSHRTc3RPYlIzN3dGVUc0THRuV0NNblpML0x2RGJVSmkzY2p2aUcrM05nTGxSTkM3WnhuUkhkWTB6UzNxYmVvTUdwNXQvSWYyTzQzL2lwem40MGRrUUlmSWdJb0NOMEdOanR5b2dMRlpFRExuS1pvdDVvQXNOOFR0aGdsemZFWUtTMW5XQXBtSFdaQXRTZkpkY3ZtaFp2aVhxODlmdjhEYU5qKzdFNkFPNHU5aEJQWVhSUTNNUUlUZ2V1VXRuMmJxNVhlUUt3WDhtV0pRWGFGSkY4UU1HRlZpNkdMSWNrVHdUZjVjbFdWUUVLWXh3emdHM0ZCNGVmZE9GaXdQUitIVlhJMWJXM0V2bjZKeHlzeG9DOVdSSEJYK1loNm5iZFU3VGtza29PYWtsbjFIemRZRFd5ZGN4SkpnMnJWcnRFSzF2QnM5ajNRazFBc3RZMUFtUmttQ2NRUVByajhIUzEyRm01RHV4M2ZQUWFLaGh1YUFYb24waXdvWHF6VTRBREJnUTVvY0llTXFUWnAxOHlBVzNGSVhRTHNJZExOK3dJSGEvSjl0TklRR2p3RHZKQzVpdStROE95bnJEZzJxZytTZ05pKzJXMlFFSi9JemwrR0NQVTJrZFdEa0tySXNhR290eTNlVzRCb1ZkWVMwVFZzUkJhaWhxazYxTkxSSnp2K0sxaXFVMWpxZGxWVFdWZFU0NXRSbTEvTUZZQXVTSytSTTRVV1hNTU9jQTFDdlZsYUZTWUFpbitHc1p1UXhGSHdMK0lDRmRpdHdNTEVIUVhyWUVQZjBDeHhDMDFiOTFCNk5LeDg0dDdFbDB5enpUTVV5WDh4S3lFbVB1NEY0NEEyRmRxaEFEd3kycWFtd29QSnloREJ5ak1mcUVvYnJpb3VCNTZPMnpMTUVJNmpnRGQ5T3Q4eGJ3Q1BUbmpXK3A5eFRsbmtWaXpBSVFsQ3RPc3M1WGh2UStNUU5ZSnNIU0d6UWJFRS93aXFqL3RpMmFRam1rQ3ByZk5DY2hGbDM1c2I5L3NCc1Vsa2ttT0Vld0JtWmZGYWc0NEQ2TVFkb21xK3N5bG0rckY2YTJGZkNFcXhjQXRNR04rSmx4bXNHVnAzWkxyRlRrL3g0MEZ5enRsWnU3ZVdSTGZsYUhNR3ZNZkZWK01HWmFpbEMwTklpK1N6cGs3QUtJWGVkVmJQYUJSMFh6TlV1TWVWaEF5OFR1K1FhTDVQMTFrMjcyZTJDMEU2V2NRUnlRS0hFQUFFRDRtR1pQVVRiNEltV3Q5eHZ4S0tkRXhEVTBkUmU2NjZwR1RKYStnU3NZOXQ3MUFtRmhKS3NHbElESXkwRWMyeWJYcFFrQzFpeFcwOG9BVm1qeHllb0N4aW5KTHBoeWtnZGFKdUxrRDBMeFVjd0U4T0w1blBvYmdPbWhmMjVUbitoaGQrM3lQVlZwL211VVpkeVcwL293VlpUdWRQYmM5UEN2eHVMU01WTE45ejRPMUdsWU9ZbEM2RHoxNmhvZmF2Wk0xbHJtZkNQS3hOeDBzd0NGWkdRWXJQSitzcVprVkx6U2RpMVgyTmdGV042YXBRMUpiekgxZ2E2YnpUYnBJS25GQUxTOUJhaGpJY1p2OFVDM1VMZGZUVitLbmpKMTdHMVYxWnNlY0Q0ZEFGVWdGSGpqai9obSt4TDRkSDg1a3g1R0ZQYXRMZk9JNlpBYVFqbTdyMnVOVng4T2YwSmxBWVhGdXNVUThjcU1iUG04V1IvTXRrNzhEK0F4blY4NUxLRC9RL3NJenR5ajl3UDNvZUQ0ejEvTXBnZUhFMDk1TlJvOVpHd2QyRk1LZk4yTTZEUTVmL2c2dHJ3Y0c4eVlJY0g3T2pvOEhqaTdVLzJ2VVBYM1orNmU1Tzl3Y0h4QVJUeFBucDcwOFArNE1nOTlvOWQvM0RndWRPamo0T2pqOTdnK1BEWVJBM0tTUmR4RFBqZ3ZTTUhxVW1ZZ1RXU29tOFhsWDNzaVB6SW5vTU1WZ2lHN3NKYTh1UVNvNGpUaG9CVEV4QXMzVGlvU0gybEdCU3VvcWdhL2J2QnNZcGtOUy9aYzhhTEZhSHFaWDZSOFpSN0sycENhckdtYTc0NzNCZkRTQmk1a2RXM0NYNWJhWDV6RUQwd1ViYTJ2OXhHL3JSckVwVjBjZWhkV1lxMkVhU0RRV3c2YTBTQkxhMEh4TXQwaFY2MkZseUZvdk5qRGlvMGtJT3paUGNzREx3WW1mck1TVUlHSHFDWkRTcW94czZqOE9LaEN1d3FVb1ZOKzNNZHE2NGtrYjl0NHI1NGNBOURxUzBreURpUGc2c3JwQk9TclZQRm5oYndwbGNjRmFoS0JUYmxoR1BYVTJNQlNqd3liNGpYRlFPOWZsbk1vTVB1SkFEVExXQ0FwUmZ6Vm1BVVNPanoxYS9tYWx5RUkyc0thR0JvYlBqK1VvYWc5YVFYUjNGN1hUOUg1clhyUFFMcVgxdFlINk1JTFNOWFQ3bitsd3BlTDNDbUw4NXFKN0ZRWVdTZUJkUHB4VmxUMS9TU0JQUVR4bHJmNDZPbmZnbWpTN1grN3QwTENLUDdIanAxa2RwZGtBbEoyaVB5NjJuTWxYZHVWWS83VzFLUDViZ0g5WVZPQmVlK0E0TVdDRHVZc1hTWmdoVm12alpDRGFDV2xFK3hhanRXK1RVdTRzNkpDaitMWDcxbnJiTUdLeTd5QXhVQS9TT2VlTGlra3c3WC9HalUydmhud2FQS29pOWw3b3pjYldVK2g2NVAvckdMaDN6QTFJbG4wWEtPQjZYV3NUa3NXOWxWNVhDS2hmRElRSmtvN3hrdVV3b1czdDhyRjBmSDZ5SVZtN0IwU09BR3VoU0F6UzdQRm5FeFZIb2JUUURKVDh6L1NjR0dEL3Q3dWNpQWdZR1JBWFFJbkdFOUhzU3hFcjNDV2x4NDh3b205THB5Z2N6ZFdGZTh2RG10TXhObVB3cGhJRE1Ia1NRbG5pNVFrcWZBWXcxZGh0cCtnUGpZZHVLRVpsTVBsVnhvNXU1RE5HZTczNklFRE5QcWdaMWQzcEIyWWtiQTZxbStpQTQwb212RW5VczR4U0YrZkthbCtZeXJzdGc5c05KZ0RTTXhnSzcrUE9KaHIxRE5Oa3pPZnI0QVRqc1NuR29oZnZJMnpBaVUwT2NDSGt1RVIxNHZkRUgvZ0p2bm1rOGRiRlZ4TmtZcVJ2QWdkbmYzajQrUERvK21lMTNtVHJ6dXZqL2Q3N3JzdzZBN09UcjIyTUdSLy9HZzcvT2pmbnlZU2hNeXpNSEh1cU13Nkx5Z0JuaDU0WG1QbzY4M243SFNRNWJGNlhCM0Y3QjN6MzZQZWw2MG1FWHpTUytOdk1DZDdZckg2aFQyN29QTTNHckQwY1JnUGRwcUwwMTZmdVRySmo5WFpuckhoNU8rZCtnZkhRM1kwY0dCUC9BSEIwZjkvZ2Q0eFk3N2JQcmhHRVQ3SHR0YmQ1d0Vtc0lRTWxjZHk4RmQ5VFIyK2E1SHpma3hYTGNKT2RkeWpPU256NEFDcGk0STFWNEtVNzVhNVJQSkxkaVVKak5mT3hnMEFJdmZNclJGT3dTU1JaLzNFODRGL00wUFdNMUVWRDQvd1pQRGpkMGxycVlpRmVXaFRSdU80NGtvU3h3NG5iTWtqZ1JQL0VjdDFreWR0REdFUVh1ME5BNUJVR2haMVlOUkFVN0RXazRqUDI5Z05BMnc4eUNLbk51U2gxMlp1NzE0V1FSbG1mRWlBYnVZQ1p2ZkhBckZuQjZkSU1RREI0Q1Vhc1hhTHFqeURycDhHd2FwQ25HL01IbDVha2RKZTFQYVdXUWNXT25nc1lqcTNTMFhyZlIzMVNxNWV3UnBXcEtXY2p1WUJ4NHdaK28rY2hGdlZRcGJCcWhId2YwaVdxUzJPSHNuSEl6Y0tQYUZZYUNGWktJM2tNNzI1Q3dVZDVqRXE1YnViYWFHdWE4NUNPTkZ0dDdaVEZBSzdyMVduUTk2dUVjOEhmZzdMRnN2dzUxSkV3K1Qxa1JHb2dUQVRYQ3N0bGZkRlFDSVZDSlFTS3ozWjFBUW5TM0xqTEJPRlJpNU9YbUROa1h4cE9aYWFDOUNXdEdaeFlKOGFBZ01FbUxEMi9jbWc0T0RmbmZLZkxlNzN6LysyRDMyMlg3WFB6b2V1SWNISHllSGgzdm1HODdmNGM3dE45Q0didGlVQVNsNlRIUk5IaDRSR3RRdG94TWs1VDRtcWRiRkpPVWhTK090endGSzJTVlJyUE5Zak92R3IvQXZicFRNeU4wdjMyM2ZBSmZYUTUzUDNpekNFTThNY2Y3TjdZMWJLaWNIejRkWkowZkVpVlFSYnNaZFJCZG41dkRWSXhqbGJVdFRqdnVieHF1eG9RNCtObE5hSWpSYlBFNjludDdxbEJBeFZWYnQ1RGZpTnFlS3MzeVVhdjRGYXhsSmVUVFd0Zm9SRllLeHJUWU5MSXg4OXQzV0VBS2pBSWljRHBwMUN0ZjMwUzBpaVVBOElyamp2ZDVlLzZCM0NQOThPQVlDUnlFOHcwMDVDdS9pQVE3eGdyUzd0Vm9MVExtdm4xbkduVlg0OWNpV2VoZE5wQzJUMkJSYkVrNXVpT2pJOVdxWXhKbk4xYlpMdmJDTHhBRkJZMS9ZUEVxVzF6aEEya1NFS1EzU1IvMzUrdUpNUFhiR0RSVFo1QXJldUxOQlIvVHprTTRrV21CQVRldXRXeHVsNEF5a2s1b1luM1dpQklWbW5TeUJPa1hKT1B4TGV6QmtobUo3TW5yNyt3MjZucktiSTJWUmhWV0tsU01HbVFlQjhJaGlHZEM2ZWlVNlVmZGQxdUVUdHk4eUh0UlR0TDBxN0tQVFdQZHRmQlZhYkJkOStUZ0MxU3dYRDdqUkxmVnd2dDVxMk5wYld2OXUweXlSOE1vSkFhYnFKY0dFMWMzSmEzcGlubkxHQnpNb0xkUjArSS9RQVA1bmZOZy83TStOOXRIaGYrbjhnMnl1MS9Rdm1FNy9VdDl3WVhVSjJVTmpBdFAzai9DOWVGTEd6YXM3Ulh1U0RWekI3SGI5Wk5sTkZxRXRURXVLdkYrN204MlZhS25yYXJZRnFjbWRUbU1RaGxUVzEyMCsvbXNZa0c3bDl1QnRCRlYrN3dWUjFhRlFpLzJOZ2lMZitpNTVwL0FrSkUvNzFFTmRDRXovdHVrNDE2ZS9mYjQ2UFhNY2l1NkxrN2ErSGM5WGNvZDhUcnhHTVlUUmNYNzZlbnFqVmM0OWFMUW42dHd2M0tScVNtcnoxaEJpWHQxbXIyNTBGNktaMFlMYU5wZzVxd3QzUTNGRyt5NWdaNHFVQnhhcFJibnJVZ1VRQ2VGSFlaNE9uVThBREF3UkhhSUlQSlppU2Rnem5qdzJORWUxWmR5U0wvMzhPYWlMdGtiUlU5NWlMZm9WS3pHNkhhVDh5bHZPbEp1UG1yVXFVZmtpMHdaZmV4WTNOOHZSa0NnQjJUTWRTN3gzTklyR0ZGdmNVVXpieDdseUx5SWkvMWhRK3BDeUk3MXNidU1oQ25UeVM3OTdwNXBCcE5BOVdiNWd5WmVCMW00bmlpMSttZlNqaEtSeGJSMUNYRjRKZlRpQTl0cnc3ZHF0ZU43MURrV1pLZ3hJdk1GUStIY1VodDBCQ0VSK1RtcmMzQk5WZDRTSGkwaXF4ckJFMk5xTzFGUlM4Z21QQmhldG1oZnpIbFRPbUxJanhERVpzZldtalRRb2FsMktHNXlPcTNIekZMbmhzbDBqUWZRQXFVMVNpVFI3S2cyMWlHelc3VERuazRCS0NYbHMwWXpabFNyNEx0cG5sVU9JM0EySlIzcVNBTSs2dTRzc211ZnJRZVEvZEh5Z0ZHUlNVZXp3ZzlRT1A4eXlSWW9Zbmx0Q2Q1V082M2FETUJ1UkZ1bTlJV2RGTFZDdW9hbU5heUNTNndpK0wrMFhVd3lMbktndnE5WGJvWStrRTE2MTg0Z29tZ2QvTWhsUVFxYWYyTXdjcjc3RFFEaU5pMTNuTGFCcEcwM2ZDOU8wVTFMdUdJK2R4TWhiMnhUeWRrdHdKUitLMkhKUnFXbjA3VDY3Ly9kbkY5bWVtNWV5allpS2RRcldkK0Q2bXpuNUd2YS9nVThBdjZ3bWlVb1lidEU3dWptTUo5NFNuamZTSWVyT0JlYS9SQ1pXM05pVWFhajFsMUMxSGtXbE16NWkvOFBCbzdsQXBvNnlQVlJtRU5CMUhEenNHU1cwbDR1bXl0dFJWYlplS2QrbDNLSXB3M3Zsd3JLTTBpYTZyVVVaZlVkL3AzNWNqY3p5YWlNYmVPMm92TXVJTU9XRzJUK1hyUDY5NkY4VjhLaHdiSEIrR1VLZkdBMC8xRysxV0dLRDQ4MnFoNjcvNlhxYW5EYnJGYnZEbmFhbEIwbzh4UWJpVEtWS1JZSGxGa1poN0FhSllGU2tzMnc2eXVUTlRiR3BTNmQza1Y1ZmVXcnBEZUxrWkx0VnZlWHFIcFhpWXhCYXY5VVk1a3orWmhoMnZxUFJvQzhJano3UHNDdTFoWHJmdmdhWjlzY1Y2SUxlSUU5azBGa2RBVmRvRGZXZTUrL0xnMlNnSS9jaG1mOStaUGJKSzJTMFRLampGRklDQnFtVHN0aE5YTEdURHF0aDVvdGxJQmdiYldLL1dnNnRwVlI1eUV2UGcwa00yMWJXbHpDK2hPMVZNTDNXN2NGcGRsZWQyYVVhbERrYXQrWXBWYm1hMi84ODdaYzV4ck4xUEpXcytlbnF5L1huODd0ekRPZkdKREgxa2RJcXBsa2VobnZSb0NvWGdnekJya1IrOEVGWXdnUWU4dDE2emJZZGp1VHZjVFZ3cFNvNkJWZXd0VTdjOHVHb0hWTHpkdUY1alBtWUlWY083TFIrWEFNY0YwOStVMTltSU1hdUd1T0g3WUlzUUg3eEF4MEJCRDZkaU5ubTNEcWdzR3lmUGVPaE9KSVNkSlN3akpFR0hQQXFOd3JaNnl1K3ZIc25IeTIxQldmZUFnUTZVS3dIQS8yemZUVW5qV1ZybC9uV091czZuNFIrUUU1SmY2a2ZySlA2ZjBrS3ZRR3o2eEM3V2JjdmNrM2xYbmQ0SWovZ2wzb2VQLzlmWk1ya0lUcC9oeFZUMWh4THgyZ1FzQlBOQXpxa3VnUjhNRjhrQ1FLVktzR2dKY203eUJQRWt5bUxRUDgxMXA4WW5MMUJqdGovSVVYK1E0cjgveWxGeWx4M000c2pSWFhOMHE2ZStJbXNlQmcxenRxb1BHbjZtOXd3azI0QklwazFLWnYvdmpZeGJQQzd0cWxsb2Via1dEeEgxTS9QRWYxZEE4MnpXQ3ZpdFF1MHEwNjVmTmNlYUxTc3VYdGtCdlQ4aU5mZjFtaGhOMFpQdTAzMWJmTWFKOXpmM0lPNGpwbU9KRk44QzgycTAwRmx1Sno4WHVsZGppb25nNlFUMktvTmQxRkhnNkx5MFNDcE9nak5nUlFIdTRaWmxPdDlGOU95YWxsR2NSYmdOZ2FLZW13K1NwU0xSV3o1Z1Byb1VCeEQ5VVF0bllzdWJuaFhjcVNaM1N2VFNyT2tQa0o2MTFRK1F0eCtoOUpkTG1lc1BHd2UzdEgxTHlyWmMxY01IVDd0VWxvRURQcVVwY1F1dUxpQW9WeUUwMnBYY1gxTHVoUEhNQk14YllyenJXa2lNZ3NEQVpxMXRNdW9jS0M3eDdlbVVUYnBCemUxQ2hkaDIxUUlONUFja3hncXNjUVFEa2c4RjArZ2VFWTM3U0RZWWpiN05Bdk9SRTdxdGFmQWd2QXBraEhpUEVHc3lIQWc5djBxTWVBaWZaM0kyV2lsRDRzc21KVy9WcTczS2lRVnhJMUhTc0p6UXZjVCtQWm9mQ0lRdVNaazRrMnBBZEd6YnVzSnZFNkVMOURHTDdzeU80OHBYL2ZtajM2UXRER1RsMTJUQm9qMFlGdmUrR2JTWTVjbkwraUt3NDBuOUhJREhBcTRGVjJnMytZSi9TT3FRUyt4My9ScWwrY2lwamZxTTE4eXlMYzlncUdlemZ5VExGekpNSXhDaG5zMjllVmttWlZKNDYrTHQ2M3hkelhuRktvK1RrNGFsSDBPNTYxaFRXTnZMTlZwZWl4MnVjMkhpTmNseUFNV1BDc0pCZDZZTHl0ejNSRFhuVmkwTnA3anM5WWNtN09hRDdwWWRTZFByTHB6TEZZbHFzaGFjN1RFV25ObWZUUCs2VXdNb1pzd1dzVTBHVU4ydTNLRWF4ZkREVk9SRUtsd2NzOHl0ejNqVjFOUzdvcnpzTEdsTzUvVmxVcllmWkJTSnYzS3NjSEdhYWVCVkJFaWpEaStyTERNQ1g4ajcvdmpDNFkvY0h2Ym9uZ2dKM3JrZkYyVzErbVBzMGtaUjFYc1V6eHpRODNJQS9hTndQM3VJdVRIdDhnc2loZVRHUms5amtvcW9YWjloQ1ZYdUVKdTB3MXlwcExOZExnWjdKWndXTWdicGkyMkRrZmI5K2NHSzR2WWx1cEMzRU44Ri9zUjg5Wmo3a2tDN2daSVRZaGxVVXh1TDBpcE9qTDMwRGM0aFA5a2E0d0FjNG5oWE1vUWxZYnhpdm5XeGtyMFVUcUVvS0VsWjZkZG5NRWFycU1IRkVLSlRyM1dKdFFLTzcraTQwUjhVb2tZT0RibExYUGlVaU1oVzJVMlpLMHhVYkRUWTZRNXREdUZMTW1XbW5uc2xJVFdNUGYxZ3l3T1pBNWtDckxZZmxsVmxocEZFVm9VdHc4SUhiWE4zV3dldytMM0ZxUjA1Um5UaXRxWVlBYnFwSHh6dmFKcTFzVk5uRlN5VjRtR05kVUxPVGs0em5uZEY1VTBiY2d6c1c4SEJIT05ORUVZTjdJYWt2QmMvVUI4ZFhvNjE2bW5KMHFGcXpnTnp3N0lrd0tlaU9rWUVheXh6WXNVOVg3b3FzeGRJMHUvR2tYakV3MU1ReTlmYXBPdkZFanROZTNuMkIxM1ZpVWlsQ2svN2Z3cVRYT0lKRHNxOE1WeGpjTkxuWmN0M25sWjZHWkZ1N0JNYmZXWXcxY3RuK0k2d2NTMGRsMEdTQnh1MTVzRmVTcklFN21uYXRkRXRRcDNYakdwZVNtbmVTV2xlWjdSdkpvR3NzUmdLdW5XbXhORVdscjY4dUloeFR4NXVmNittTDZjRWtyYThzSU5vVVpiY29KTHNoTUVKVU5ETVVwU0d3Umtua0pNWFloUmV0RUxRSGw3NXRkY2RNWTFOMnZrRUpGbjZRMnN1VmdqTDJYVjNhNGg3RnAxaUFrbFYxN0Z0b3Q1MXhzRGw0bVIxRzNJRjRGSk0zY29tbTBrbGpWdTRhTDNkODJhS2ZnMi8xNC9lODI1c3Z6YUVtMEcrTENiTHM4b29hNW95QTdidWQ2SGNTaEZLMExkLzljcVo4MUVOZ2FpbXdKV09rTVJVQzU0RzRha3Q5RmR3YjlhMHJnVnoxVmc2UE9nVXhONStzMDEyVGZWcVpSOTJvcWpYQXhtOXhQM2tOQm9PamhMVDEzUUtuSERaTGg5RWtBNXkrOU5QSkZSbHcxd2JlTW8xenJDeXVrRzkyR1V2SzU1azlmeE56VE50eURUOUFHVnpQeHU0THJET0xyekljMWE5VG5rRXd6YmdzODkrc2xQQ0o3ZzhWQzduRjJFbCszeEsxU21CcEFwR21YUWV2dlpRZ0NuWUE3ZGgxd3p4UzFUclVCR0JUQ0FoWC9PZW9HUHlTVzVyOCtrTmlpeTZMbkhKWGphVVh0ZmVuSXhoSUs4UFFINXh2RGVVZXhvanlnTHo5Z1FEWGVFQjBXZUptcU1OZGw0NWRiYXk3Ym9oM2JIVnNNVld6cmJ3aHFLKy9GTXdKWDI4MU4xVXRxb2xPQmpTMTBMc0trSm1VYTRHWHlkczFnTlJlMjhGUnloM0d1NkZrS2l2TnFWZ3dtYkJFUVZPV3NGZ3lXMzAraWYxVi9NLzZscGNZS2QxaTdDallleVBuMitNTExFRFZOY2REV01FemdHS0J6Uk45N3VHalpYbVRqSmQ2d21ub2RnMFhOTkNwUGc2MVJwZjl4TFkxZzBiUkF6MXFBekdveUxsd1djYkk4bWhHMU5La2ZWMVAwZWR1T05LQklCL0hJZGNYOUlQdjdOTjRYUVJTRmIzUlB5WHQwUzBubFBkNE0wWFBxeDVzNlB3dGxhR0xvOUtqa0NsSk9kdTRmWE90aGZZd00yKytEZllCRktZRldiWmczQVJodHhyZSsvdFczTzNKdXJxenN6ZDIxdXlKbnJrVWh0S0hMMTYrWDVEZGk5blA3WDV1aTlPTDAwcmNrNllDcVhyMURBR3d1aTRWck0wOHVWb2NZS2RJWlJMdzh2R3BQNjZ1VWtyNmdyTEM1NjBZdnpsVlh1UnRsaHBmbXdTaW1FcXo2QVRaRHlCSHpiZ1lJUndKckY5V1JhbE03RzJ2cE9tcXJtMnZxclNYYm5iaERXbkZDaEFOcDFoZmdseU51cUNhUU5jK3VyVlNPYXVLWmlFVXlyY3FTenROT0luWEhBUXVhcG12SFM4VFRQVVl5eFJnQVVpcVRxc2huTzRFdWJqclJmV21pUmI1NktUUzlkQU5kc2c2SUZ6U1BjckwyYXp3UjJveUp4R2RGR1hzVUhZSW9PTlE2Y3F6Vmk2SG55VkhtVkp0ZERYanRnb1N1dEgremdWWU50NnIvc3FMd1psNGw3UDkwcDNoRWs3OUVsY25udEtLUVYvTThZaHJDUEtTMTJhYTliTUFjOFZhRDBvTGNPcGJ6cnlyY2JLdjNuNEViRlRmdUxGQTFKUHJhYU9yeFowdkhrQmpIbWkyWFpEengxOEduby93QlM0SE13QjcxcDNWWXhJUVpNN1hRR2JObTUvek9JbmNraTlHZE1MVVllQUtpaHJMb2toVmFEdFVsS0hlNWJ3aHVWM3lwSVFHdnlMT2N1TjE1a2JmcEtOTFBJWjhFM04vamVnTmlWQUtHTzIzeVZjeHhZQjJhRTlBd0xveDZ4TG05clJMREdQVW82MUs1aDI2U0w0ckI2UHNQbGltbHoybnlFdmNuaFByNzBXUnVyOHhNSUdEekpQd01oQWhPa2pTMCs3MXRtUCtlWHBuR0lpMUMyeVlTeVd4dlpVWEw4RVlTQzQ0OURFMzdDYlk0S2twck01MGRpcnFoeWEzYzVBV3h1YUtOVjJ4WjRGVE16NXBZdFZnQ2psbnRqYkFUaEpvbTczQmFSZVYwOFp2Ui83Y0dtV3pqYlY3YzhjOEg1MVk5Y2FuYUc1VWtVRUNzQnd5ZzRaNHJhc3l4MkFHbVB3Y1NaNFZLU1hJTHZYK0ltVmE3QU5DeUtLTStPZ0hsYTRzemUyZGtSMzRLSUREY0wxSW9XcWhZK2pOekpiK2RBbkJEeDBFY1MwckFnWVp6dHZyVWhUU3Z3aFdrU0lhbnpENDVLL3FrMllXbDBzcGVmNWR2VDZ3dnJ5K24vY1g0QVpYSXpDSmxIVmtENWhOcEE4dXBxcW5HYXJLYnFJQnpkUjFWSExpNG52eGpGdXNXZndPbVNuNEJ6Wnh3T1lnMFdoNnlHMm04TGpRb2VQeUwxT2JRcFQwUkNrclRBcExEc2JuNGxTMWNXcW1OVEp5eDhZalBRYkdzZzhON1hNcmVhb2JRbEpDdVZZM0x3OURhSmcrN0RZbUphOXpoR3V6amt0bDRBaHY4bkEzTEoycGpoVk54Z2crY0xFaCtqRVBYUEljdTZqeUExL0dqTzc3aEpvUVQwakF1V1d6NWJRTms4VkszZm92WGlrTzZYOENnai9yc3o1TmxBeUNzcWxnai9YcmFYYWRFU3VQZjJRQnJ3YW8rQnpoMmJMVUVtdHVnQVdQcHVITmc2cWJabFNsTVI5a2ZYSFl2all6MkhMb1Z3MnB3cVlUamxXMXprWEZJWXJ1d3Y4QnUxRVh2QzJRcS9TQmFOcXYrMnQ5OS9OK2p2N2Jjb0J1bkZ2RG4vMzEvUGIrK2NMK2QzUDErZG1VUHordW9XN0VQeit2VHVaK2ZpOHNjcmVMWDdOTmlWRTREU0NtcmMvT2JjM3QyZ3MyMW80dTFQVjVkMzU1ZDN6dDF2MStmY0d5OGpNWGVGN2ZyejNkMjFjL29WR3JtNStMZlRPekJab2R3UHdFZFprcXVmZWVJWFh2N2k3UHpMOVJWQS92U2I4Ny9PZjlPdWxscTFlSGltSlc4MmlZT2UxT25hTCsvZVRjZ3BJTHYxK2Z6eXA3dWZ6U0Y2YXhRcU9wYjVMYjBQZWhRWWFBNkRxUGNEeW9hTEsvNTVwWkFuQWtIdHZYNmZYS2Q1TEFrU0UzQnplYStzUFRFTjh6M1dmbysvM3JVbEgzby82S3BtdTROT0MvUGl2SzdIc29rMXZWWkZWcDJXU0lKVDVFc1lqUWFXRlI4VTY4bGg3UTgrdE5iYytTUEJHakplQURpelJFd1pFV0JQaEtVTldUVzNEbzVlQ0tGeUpBbm5MWTdrSStxOWtsTDY3aUdmbkU0THBOQ3I0empCd09FeWpCeDNkQ0hRaHFoSkN4aVpEZE1UQWFUd0tVaUFTNXZYdndFWlg1N0JWUDE2YzNGMy9zTnZkK2VmcnM2UThBZDZOcUtHUzNNS01aYWxZTW5LdVNxTkQrY2xvYU9kMFFiTVVnSUFNTnBsMWlRNjR1cHdDOElST1N5VldpMk03UDhIR1pLSlhVR1dBQUE9IgogICAgfQogIH0sCiAgIm5hdGl2ZV9leGVjdXRpb24iOiBmYWxzZSwKICAiY2FzZV9ldmlkZW5jZSI6IHsKICAgICJhcnRpZmFjdC1jb21wYXJpc29uLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYTFjNWQ5ZTI0OWRjMDA2MDA0NDk5OTgzNjBmYWY2ZThkYTAyMDZiNTY4Yzc2ZDE1NTYwMmM0NjQ1ZmE1ZmNlNCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyNjk3LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWV1NhL2JSZ3krNTFjSVBzZjI3RXR5VFFzVUtJb2VDdlJRQkFKbmh1TUlieXk1R3RrdlRwRC9Yc3JiYzRJc1RYcW9BY01XaHlJLzh1TXk3NTgxelNKQXhiYmJ3Z2JiT1BTNTI3UmRXcnhvRnZVTkNHMWVaS2tTQ2k2dGp5cHJoc0NrNFJGNGNzS2I2TkNLN0oxWDNrTVN6akZ1Z3VPQzBiTUZWTmI2eGZQWlNZUStkUWttYk1zUW9YekZueEVpWUl3U1EvSTJCbU9DUVJ1bHlWS0g3Q1VIbXpBbXI0d0tSanZOdVpDUngraWk5eTVaSFQ3MU4rS21xOU40YkZPM3dUcVJwMzVmeXZOYjVBV09PTloyTjJMRjhZQXpGSDg2N2ZIeGNrZ2ljUkpoemhpbjdrQlc5LzNVYmU4aVFIcW13RWgxR3ZkNDBoN2g4WG9lamhQV2o3UXlsSHBXSTdjZGxPNGRUTjNRdC8wdzRaeU5YM0VEOGRqTUVCdDh1eXRkN0taeWJLN0ttQnJjN3FiaittUm5QWWZVSk15d0wxTjkyZHlpYjE0TjhRSEhaWVVETm1jc3piRHRwdHJnMy92dUFJVUFOUS85OE5qZjNsNDFQNzJGT0RXeERKVzhYTVJOUDR6Ykc4cG02TXZ4WlhOSlFwTTdMS2syK3o2K2dYNkRhWFhtb0VEQVV0dUFlUmpubU42VGtNVER1RmtOTyt3SnpnUmRUL2xkbmFwaE5jZTZ1ckYwclFlYmRUUXhDQjk5dGd5WU1DR2paRlIzWGlwaFZVclJlR0c0c1NabWs1UTEyZkdVcEtBeVROektFNWF2dVIzeDBGVUthdllwVVFYeVJTWVFBVncwU2lvZHRkRlV5VUVEVlZrTWdSdDNOVnFIU0hTczRyQXZ3emFRcVlKekVEV1NwOW5lTDcvOS9HcjU1KzlMeHBoZi9zSFVlcmNmZDVUWDVYREFrWXByZWVCZk1GV0gvUmh4dFJ1SStlUHFuSXZab2s4MjhvQ0tPb043bjdqQ3pBQVFrczVPZTgyejBvRVJTbEp6aklITkNiMFE5TGJVY3l1SkJYbjdjRThQNUFuSEgyZkhTT3BOeFVSMGdkbzBLZ0tYT0JBZFF0SnZ6cDV6azdRUWlqdHJsZEJCYWJDTVV5S1pjeEsraXgwZlZBaENFN2ZhZUFlb2xVU0xEaHdRQ08xRkNqeHJsK01Qc3FQWDcwb1hsazR6ejVmak40aVpnZUxiNlk2WnFMVkNJOEFwb0puSllnQ3VrekllbERhT0twTkZ4YnlRcUIwTHpDSE5LcU5SQ010RW9JRnAwLzlXQ0xucmFTSmZlcmZOWGNINlZBK1VrVFhzSHRZcHJMdStUbERLYVVTZVQrY1pldTN1dnk2U2s4R0NsMmptanhMczZlSHpmeGRHT29rZ0hUTkNFYVdKUmowR1JCY0R0WHB3R01GSWNBamFHMHF4cFQwZ2JESlVaOEU3R3Z0c2NUSDErbXB6Y2Ezci80WXJhOCtzRWR3Ynl4a0tIUm5TR0JJSm1GRWlRbktnRXpGTm1mZEVMTXlzZ3lHK1ZlS2t5L2dOMStuM3c0WGlmUjNYYzJMcCs0NElYdkdWWEludnphcVgzMFFQSEVWa01zV0VLUUMxRERQQUdNSE93VmhneUFLblZTcTlNODR3akN6cWlJYldyYU5kcjFEYkg4cnF2OEJGKzkwRm4zSlVHb1BOSUtpek9jc1ppR2FocmJQU2VaWlF5K0JZUms5VFhGdHBnL0xNMktpeitDU3J0MHBPM1VqN2VhQmx2OFVKYUFFQ0xlRHREc1pUemQ0Vzg1TWFOVmsvdGZOb28zUEo1V2VQYjl2MHN6bzNUd25MQkRPSlp5dzFETnQyQi9IaGZORzU4NlBVbHhUdVBkMXJ6ZXYyeWY2NWh1WlpkVWZFNGxSRHk1SGRxTGhLTGpYNCtxbmY2YkxRVnZKMUFsUm8ybExUaytOK00vYzkvMFRuNlNaRnZWK1I5bFkzSGU5ZllPZUVoTGIyc0t0dmhxbXRzTVg3ZlBkd3VqTTlEdU5ER1NCZFI4MzFGdlRzdzdOL0FGaGthdWVKQ2dBQSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI0ODdmODM0Y2M4NmRjYmM3YTA0YzIzOTJiZGUwNzJlY2FmODdkYzExNmI0YmFhMTZjMzVlYjljNTk5YWQ1Yzk1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRU1lVEd2aXpEcmN4Q21nSGFuWjBkcHFQSXg0bEF0cnlTSEpwMitPK1Y1SVQ0SXRzcHZXd2Z5Z3RZT2pxWDcxd2xQdS9zN2pvb0llK0JDOEppNTBoL0phS3o2RHA3ZXV1UnhJRmVQSVdFc21VRXNjeldJNUFvUUJLcHZjL3FXek9KWXlhUlZFekV5NkplNWpPR2czMzlLK0hzWVord2p1UUlLNzR6bHhqV0pBNFpqeUJ3QThCRUszRmtOTmhJUEtwUWRDb3JSaXNqc0xLMWoxbEtXVFRkRnd3VFJEc29pSWpJR2N2WkFvSS9kaS9INTZmdTN4UFg4N3pCTGs2bFd1V09ZZnFjOFhaaUZJRlZZU2RISUJLRW02blN6R3pVR3c2aDZ5RjM1QVcrZXpnY0hyaWpRUS9jZmhBTXA4TVFNQnI1V3I2UjdvZ0U4QVpycGZPTWd4Q25nQUpLWXJnRnpPSkE0OTczdkpVWXJ2QWpHT25GN3N2U3dtanloZ2pKK1BLS1JFVHE3ZlVSQVJTdzJzbjdMMElTejYvUUZHamVyU1pva3YzSGRBbzhCZ2xDKzdVZW45V3A1d0tjUXNXQmhOa3lMMDB1RThQaUJqQUh0VnQwZ0lRb29YbzFyMTg1RUJ1QzhRZkZSMDVGSTRGVzBiTGloVm1Vc0ZpbjFGSG1HM2h5OXBxUHRFSzhCam1uVVRGMk1zWksvWWlsc2J3RnZpQVlqakhXWDNmc0ViVFZJYUlDY2dhcDRKSkloUm5YUnYyYjB6QnZvS0tEZUZFaXFCSVZNa2xqK3VHdnMzOU9qaWRuSHk1dmI5K2QzUlFRV0pFdkVFME4vVnpLUkJ4MU9vKzQ1RFNuZE9oNTd5dVZPSGs3dmp1K0hKL2Q2TC9PTHk4YTFWQ2VpME15UzdtSnNBNVgwSkVJOWg5RTNnOUZiMlEvOTBXdURvblF6SEJVM3B6QkF5dUg0dXF6V3U3K0ZIUGs5L3BIWVU5VmtmQncxSjkyUTc4L0NMd0JEdkFvN1BuZUVQcWhIL3FIM1hCd09CMGNqTEIvTVBJUHA5N0J3UE1WbCs0QjZxa2x4NmJRSktWMHdsVHhXQnA0d2pHVEUxVnQxclUvUjA3SkFtSlZoeWFjVGFFVThJWWdSSVNtSE83bTZ2eWNVVjM0RHNySUdxOWVnTFNjMTZVT3libkJmQTZJeXZrbm0yTVN4dVU2UEd6N0FzOGg4L1didTd0SmE2dzRDWERDZ2sxUlhSZklQTXNVWTJWNDNyQnVoVWhIQlV2bGhwRy8weUM0dGI4VTdCWGJaZHBMNms0eWpJYmUwTnVyejRVNkJGVVJsQXd6cW1udVRpYXZTVGVMSnQwR1RaNFlmNlFNQmEvUnBqSG5WRjhKeU8rZy9WNUJxMWl4bEN1Mk5pU3BuakNFSFNPY3BOcTRudWRGTnZNamlOU0lvaWxVbmJzbTdmWnorQzhGMFNhdFJWYi8wQ0txMFg0Qk9PVkVMazlVZU1OSFd6dzRpRkwyTk9Ga1FTak00RXhnUkUzanFIYmF0YklvUVZOQ2lTUlFZMDdBV1dJcEFHYnYrT3JLcWF6ZmI0RWZDdDdHZEhuRG1EeFhtb3FsVVBPV0VpSjVDczBRU01SbG1ueE5Qblg5M3dsVmc2WUVIcEhZQk1pMTRxMzc4ZHI0QUJhZDNMWkwyY3hwUC8zU3liVlh5L1FMUnRNSXJ2WDB0MlZITVhQalJpVTllamVVY2JQL2ltNVJsS0ltckU1YlZ5eUlYWTFrM3k1WlJrbVRITDM5elRJSzAyU1R0RmJDZFE3YnN2WTFtaTBRTjlnTGZSMlRvdXFEVHBKRlY1UFNxdnlwbTlJdm9TMUtBeUtibEswbCtQbTZiaTUrVFFwdnFGeVVrSitoK1hvd2N6bk1pTHJETnpwL0srS2ZqKzFxVnJDSDVWcDNRYVRVcjFTTnhDMjY3OVQxNE0xT2JqNTFnbGhzeXZVSlRiWFVjOEpGUGlUMXhLVWI3b2J3bUQ2aFpUNUtUS3NMVXBWMjQzVVpoaENsVkxvdkd3WHF4aEhHQ2NVRloybGlPcURuRmZyYmV1OWtqdUo4cDNrYjZ5bmltZ2p6ZWxSODFGQ2VPVzdnYUxiSHpEQllnVnJkZnllQVcwOHJVL1NyaWhwRlF0M3N5clBFNW4wcDZ3K25HU3lPMVRIUEJZank3eVRXOTVvU3pScjVLbDJ1UlY5d2hHRlNtak1PZXpuaXJEKzN2THNVbW0zNXJxZ2ZkbFVjeGZLOVlYVkNFWWxzVXhyV0crTzZLNmhiYmVUNTRDNGthZmxWS0VyazhwUndtMUFsZ3FSYUhlYzZtOEdySXhiNUJPdUhTcWRidVFuVTNhRXRBOEF2cDJOcGVHalNMK3Y4MXlpeEtiaEs3bXNXYUxiK3FEcGIxNzRzdUN1YzNENzIvZTV3TUF5OFhuYzc3WXZEeUpaMk5BNEYrbDcvQUZoQ3NJV1Z3MkhWRFM4WDBlcTk2TFB0cGlTc3I1ODIwdDFzTklBNGU5c1BLWHgwVVNybmxwYVF4ZFBIaEdUSWJQTDY0T1Z0dnZaNkk0MEtGcHJubmJhVisxZmxadFBjNDJUOTgzVytJT3J1K0JXZWVJVGx4bjRiU0cwUVZlQ29Sb2V4cHI3QVpSQjhFNHFOdzlpdkhkMjJnUDIrOGJxM25kWk5sYTQxdHVyNUZ1TU1vMzNNWlUzeUZpeGNVZFlRUGx2WDcydFF5NGVKeTlWODQ5WnovMUVKLzhNYVNYWFMzNnFMTkI3Ykp1ZmFwdlQvb1lwaHFocUZtclV6d1kzVnJFajZpcXJHRXAyemlOYStKYmFWdlNwKzlYRzFVNDY5MVQ5MDlYK3BkNTUzdmdDREI4Ym5UQ0FBQUE9PSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLXJ1bnRpbWUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJkNThlNjBiZGM2OTQ1OGZlNDJhZjgyNDhlMDJhY2Q5MjRiM2I2MDVjODI4ODc3MzUyYTdkOWEzOTUzZTkwMTI0IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDUyOTEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNjFZeTQ3Y3lCRzgreXNFbmQyTmVqOThzcStHQVJ0WUF6NFNXVmxaRWozOVdySmIydEhDLys0b3N0blRzNnRkK0dCQkFrWkZNaW9ySHhGUjgvUEgyMWcvL3VtRFZrcnBQMzc0K09uZC95N253OGl2dy95WmpBOVkvNWhyWkYzRWNRazY1NnFkTkVVa1ZIMUxQbnZkbkMrS3VlQzFwQlRGVmlVYmc2K3RENkVFOC9FTjlIaXUwaUhWT1RqM3RMN0dvN0JBbDh2UXhvTzg3Zi96eDJFWVQrTjFHUGFYMStYajFxU0ljcW1RVDFZaXRyQXRLRW5OdVp5OXF1eGJkWmthaTdFNTJhUWJhV2RGSkZrbk92ZDloK0ZJNCtrQmFRdmVDTEdScVM0MmJxcFVaWTJra0YxV3pua1ZvNmZhWXJBVUpMUXNMcVhFYkZtczFHekt4elh5NmZ5RkRnTWZSamxkNzhnK3NGRzZWckkrY1hGRm10YWtmY1YrdXBTUWZEQmNrVEN4c1RoS1NaV21rVDRmU1pKQnh0OGhmNzVlTDNmYzJvZ1lCNU9hRkttUWlHS2l4Q21XcEdySnVTREFTS214alNHS0ZNNDFtS0FwSitCYnV5U2ZiblhjNGxRQklRWjhZSjNYaUtSd0pJYzFVMXNJMVdlYnZYR3Nvd28rbFJTUmwxd011VWk2YU1YVmRqeW0wL2swTWgzR2I3SWRYOGRTT0pTa21aUE53WWFTWXdwV1NwVldMY0syMFZldG1zdmFvNnk1TktNVEtwR3pRYnI5QW5zK1hWRXNtVGJNNWxRMTFtZ1IyN3dKMFJxYmxNYWZJTkZwTklSQmFxS1lwSFZ1YU90V21GSEhXb3hLK0xsajFuRytuT2Z4T3A1UEcycXRWV2MyenJtV0pIQXVSZUViNVpUejNMUXhrWkFhN3dSajBsUXNhTG1JblgxcFNhWGNVa2VWTDJPVkUyK0gxeUVMVWtmc3JUUnZIWVZha3ZVRlowWWhqSTZSMGNzRmdFVTVveXphekRnalJ2dU1naG5kSVh2SmgrdEVKOFE3YmNXU1Nsa3BsREloWGVKUmhwbzBVaGRJQUZWMVpXcVpVSCtxdGsrdFY3YXFvSXFFRUt6TnRBRGZ5dkIxR3E5U2lGL3V1RG1WekVSSlpYUXRvMGhKdUtGYnNCa3BZc25KNFNneElJMWV1VlpWb3VEd28vYkI2MHhMRTR3bzFzdVdBWXJXb3VueFFjbUNtSXZoWk5CTFNsTWZ5WlFJL2E0cThvRkNHYTBzRGxTNTl6VVRFcExlQUlkdENMWnlHUnplQm95MVk4K2grWUJNTk4xcTVoaVJEekk2Z0o5YVNpaWRaSXQ2Z1FHc01HRjJPVDZGT2xRNWpGOWtlcjBqdXhpMU55QTBkS3Z4RloreVJVY29jSnRuVzZOMjVIMk92bytuSmtUTHlIbkRTU3YxbitvVE1uSjhCOFdIVkN2b1FzZXN3U0VKM1YxVWRDcEljelY2ZENqWWpFeE1qUXI0Z29yRlBLdUFPUlQ4ZTA3RUxOT1g4ZEZqR1hrMXlWTTBuakdaMFVjdGhrSm1LZDVqMWdQR2o4a0oyNnlEaW9SekdUUzF6MVdRRTcwQUg4WW0vTXFIRFZNTU1vYzVOMGs4V01xa2xMbGlJcWlKWW9tQWMxaHUxbXZ2clhMTXNXSTFCWFlPTDh0N3pJSFB4eU9kNm53SGo2QnNCc2ZVR3FWWlcxbHhxOUd3Um1jS0lmR3BncjFCdEUwSTNSRlNOUkhONFFQbG9oRFNlL0JuUm5RbGUyZDA5UTVkM3BRRHo2cmltZ01iWkZiYXVteFJKb3BSR1dPcE9KOGlPTmZydm9ZanZBZWVNTXZ5OVE1ZFFnMFowOFBvTWl1bU9ZMlIwZ29uZ1NCcVNDQ0lvZ1ZHT1VscGxCWGx4VXlDYnhPRFZFMStELzIrZ0thenYwbktRRmNERWk2SXByaFVJOXEvNjA5a1lBV05xYTJVMERpdEdaTXNaUnpYbyt6cVBmWnQzTHJZSlVIRk0yck9Ma1ZCR05WVmNFTzBpdEFORUVZSVorM01CbTZzclRVVTBSTCtGRWlQV3ViaktNZnpIUzdrcUR6aXNXaWxVQVhsY3BhTTZ5V2o1a1g3SG5pbmN2Ym9MV29oYXdpREN4N2lrNHBma25zZUsyOXd4VGlNUy9ZV0FvS1RhNlJKb3l0aVJOVlJNU1JUWjVCYVRaaGtIYmdMRFJwandjVmYvMllkdGpINGYzaVVTV1lJTnoyTGdzT1ptQ3RZRzRQSlR1UG9SdldKcWtWRWdmWUxBS1hnUHdSQjdvcUdkbklldll3WjltcUZQWCtSRTczSlFoVmxJSW1ZVFlNcEs1UVJjbzBPWTRCbXI0cDhqUzNwTGtIaVRJVE10QVRLQW5VYVpLcWxwVFNUOEhsNnpCVFlCSlhXWHFjTUZrRGlROUxPa1ZVeFZlVmpRSzV0Rit5TTNLRWRVQlVEZ2tEL2hrWUovTDRpL25pVCtmcFFXYWkrYUlLNGtXK29sa1BKeFRrRitrTTlVMDhFZUQzcTRpSFRNQmVHUUNvSjV4ZHdtTFdVVnN5bklhb09KVVFWT2dzSFR6bEhlSUdDV0lTN1V3RW4reUpwVFVSWFh3OC9BRU9nZXNnaEpWa0FiNmZyZUh5WUMrdXpBMTVGQkI2K0Fid0N1NU5qRGcweUFocEpIdjVIWmNpZ3F1SnFjS2dRU0pVck9ORHkwa1h6OWFreXdTQkZKUVpvSWhqVFFOOUJkTkhBUXpSNFRDdUFocFBER0lHUmNqUTFRd25ZUVlCaEFnUGM0QXA0bmg3a2pER0JQU3JDY0dSbzVJd3FxQWdjQWtOck5pQjg1V3R6aEJtRTBKaG1JNEpzMmlJUDBNM0ZBRHdtdWpXRmZGZU9hUE91dkNWMTVVeGRpS1BxclFjNnFFZzhvYmlZZHNXUXFPQ1l3SndRYlY1STZLdHNnbFFXOFVZMVNJblRTUWl1RUFVT3NCWUZLWERvSEJ3M3drZUNLeHRFSGh6ZEtrZ1V6UnJSbHd2YWVYbzVuS2x1a0ZBQUthMHpXTkxKb0dsS2daRnJ0ZFRRbE1BSmVxQUdjR1hHVVVBVXNHb2FnbHB6NzFySXhuOFdyL3N5WE9CSTZKUE1pL2tIK1BYeitiUkQ2YXRjNW9VeWxRbndabnFQQzR0YTJaVU9GempFWGFGWkR2UjZ2bDBYVjcrUGU3T2I5SGRmMkZXNjBtKzg5U0t2NjBiN3NKdlUwNE5KRGdLRTlUUGo5bnA3ZkhuWlhjL253N3crVVkvdnltMStMZWVmRmplNHQzR3ZkcFBWVHc5MlpUek5uMy85bUduSE1sM0hCanQ5bGJkVEI3MXQrWXMzZGdYNU9jaDNYdnhVeTNIZHdHeFI0WHkzNjNpWWQ0ZXh6T3V6c0xlN2Fia1Z2RXpGNytDNTIvb0FJWm5IOHR2N3hqeVNoa1djLzVjbngycjVadTRZKzdTYnduMFZmbUNRYVZxZnVMaDNieC93OUhxNW51MEs1ZnRIMjVQV3htMzFhVnM0b3NNanl1M1ZFOSttV2VhdnkwRHZ3M0JaOHVIMVUyQ24rYkNXVi9VS212dnFoVTV5K0wzUDV2bnd2ZGl1NDNUaGV3bjMvaTI2WmYwcGsrOGUzdFlyTDJKd3BxZCtXNGNSdlo2WEN4bmVOL2ZnanJmNWZzNmxJeDlydTZXS3YzeHlUOEFPWEg0Y1QrMjhOUDF2SFd1Q1JoN1Eyb3VNWU1zdGxKbDdOaDZSNTIzNXh3T3VESTgrd0pIc280Qkl6LzN1Kyt0K3ZuN2J4cTN2ei9jdmZ2cjJRRUpHKzk3TDhqY3NiaHN2MWQ2SUFZUnpxRSsvbWNCOU5rQUNZRVZjRGlZV2lob0tpYXNGRmhKSTBRaGtLc0Rtd21lNzFEV3Z3ajQ0YllwRXBZemNSM2ZvOC83OEM0Zjd0RmY1SW9jL0g4YjVPdS9YSldUcTl0UCtQSDNhNFRJSE9YTnFQODIwdjl6S25lNlZnVG5BbFp1YWRqbkJpdVlDazFrTGRGWkRKbExvMFZWVG9kaTRXVXFBUHdmNU50eXlZYytlaU9iM3RzYVZWek1rNVhscmplc1FyZ0xkRVVKWkRBNkNLeDlrMEZyam9KRU5yb0JoS3pSRUxLTGlFVll1V0RZbENvQ1U0djl4YThUclJYeCszdHJBN3pyWUR5aXFnaGtBbk04Qk4xRUVBNitKdTVUR3RReloxaEU2QXRzSW40YnJLZTZGTVBxNEhyYWx1aXZKNHlwMmtWTy9RbzkzOXUvOU94MmxJaW9lWnhpemRUUXd1VDNpZjd6KzlWLy9YS2RJKy8xS25BdUZmSnJvOG5uMUNLb1ArZkxremlGNGQxMjR2UEtGTUNuVG5ib1dTYVB4Q2h2NDRIR3pSTmNiY3JoN2p3RVR1Z1d5Tk9qV3NmMmljK20vdWZyZUMzais3YWx4aFJrMzR0cGdlYVgwWHp0bHFMMXEvZG9iREZReTJnU1pGSThrcVFZZkQyOFUreStJTWl4QXR6cnJyMFdPM2JIMnJiQWx3M2JNVU00bGROZjVnUTVyNm9ZMWVtbTNtUmF5c0k4MERmLytlaDIySXcvejhmelNlZUE2M2FUYmRaUmlYbm5uNy9qeGh4Lys5bUVodmcvR2Yvakw3ZE9IUHNnTDNjaTFHNEdCbUlFaW5kVWFOdW9RZmVZNytRd2Q2OTJUYm9ySEt0TnduZ2Erd1RNZDhYTi9mYmc5UWZ6bkQvOEZlL0h6N3FzVUFBQT0iCiAgICB9LAogICAgImNoYW5nZV9ndWFyZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJiM2VlMmI4OWRlMTRlMjA0ZWZlZGQwMTZkMzkwMGI2ZTMxZmNjOWYwZWEwZjMxMjVkM2E0Nzk0ZDkzOGNhMjAxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDMxNTMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNlZYMzAvak9CQis3MS9oNHlWQktxVk5mOElKNlhaaFY5cUhSYXM3amhlRUtzZWV0QWJIdG13SFVhMzQzMitjT0cxcEM4ZmQ5aVdPTXg1L005L01aL2ZvNk9oUG9QeEVLN2tpOEV5WkoxZGdwRjZWb0R5aGloUEtTK0djMElya3VsS2NXZ0h1ZDZJMEtTdFBmWmlubFY5cUsveXFkM1IwMUJHbDBkWVRwczJxSFMrcFcwcVJ0NjhQVHF0TzUvT252NzZRQzVJVTJpN2dRZmVZcnFRdTg1N1RURkI1R2w5UGhVS0RFdmdKQnlZQ2pEL2NrbWJqeWZsME1tVER5YWlmc1ZrT1U4WkdiSkR6QVowTUp0a1FuMFZ4TmhoTStEakxSb1BaZERyS3h2bG9US2Y5d1l5eC9tdzJwRW5uOHRQMTFiZXJUemUvQktNWWoyZXpZblEyeVFkRk5wbnkvcFJ4ZGxhTXMvNE1Ka1ZXNFBiRmRKUlBoMmNzRzU1bG83dy9uUFl6OURJWTBqRk9KWjFPaDBOQk9CaFFIQlJielkzVkQ4QkNhbE9tVlNFV0pUVmRZcDdZOFhtSDRFOFVaUE9odHdDZkpvOUM4ZVNZL0lhQlhOWmZ2bE9URUczSmpwMG9BMnU1QkRRV0RsbjA1TVpXVUx0dGY5dXI3cElTUE9YVTArVCtMbEcwQkdjb2crUyszbW92S2NsL2NQU1dqeE5iS1M5S09KbXdMRVBxWnJ3L0h1dzVkaGpOVG15MTh5NzUrWEpjSitKbkVoMzFRcjBsTDI5Q2ExYm5RbEc3dWdvK2ptT2V3ODlTNFlEY1VsbkJGMnUxVFpOS3diTkJlb0NUZFRaSjNDbzZKUUtKOU5nUXlmR2FNS1J2ajZvZllKMXdIbTF2dGF4S3VKUlVsSHVoNHNwZnBlR2dpemNKcUkwT3VHandPK3o2eWpXSmJtWU05amZFa0Q0SGpkaGJIT3BzNHdDenQ3MzhxWTc5T2lENmNPWnJLU0kvYmk4SnE1elh2TTEwelA4Rk9kUkQyeVk5bzAwc21lM3B1NFJScFpWZ1ZNN0R4M25UNVppcWkxYkZlczFVR3FxcXg2dlN1SFNOZWF2Y20weDNpVVBGbXovQ3lsMkVSc04zTU5SU3I2MjdTSk11NWlFNXg3QjcyUGlhUTRxakpUeHpzUURuMHdhWUJWOVpoZVc4ZHA2Y3g0MXdNV1lWWDdlaURUTFJ6TThiWHM1YlVsNmkwckFsc01mNVdtOVF6bmRrSm9Da0V2aEdiajRrVG9IL1p1RjdKTzUwQ2haSFlMRnRtTk5JSjRLa2FnSFlLQkgwMXJaUHdWdkVWbytSbTNEYTlEaUFDWU5vc1RGb3lGNFg3clZXOFN0V1BrRnVpRkFFa1lIVGxXVndHN29TbXdpenVBQUZ0ajdrd2h1elVJOXZFRDg2SzAyWUxLbWlDUFNyQU1sZHNsVy85YzdiWFZlandOM2VCUEJZNVJpaTdJV25WZURCOVlRK2xkVDVFMnFNRk5palRkYXFEU2ErUHF4M2xsbDRhclRnWFVoMUExS0YvVmw3Yk52NkFOSllocldMVjRYRUttdHgrelErOTR0bnUySWFtdytXU21OQnBIZ0M4dmUzcTQxb3gvajNpcVFCRkM0c0hrVWliUWM3a05ZaXNsczIwYXFWQTA4RnN1L1FyRjF4MTJnWDZxZUgwa2pxSVl6YnVjMlM1TDZOWFVMZEpuRytqbnNRNDRoemQvMS9rZVBrZ0wwb3NlYWFCZUVhOVZIUlJEbVE2R1RqYmZlZ2VtT2JDN0srS2gwZ3RVMXpIVjI3Mlh1UU5qZktTT0FPclRtc05LcTdYd0txSng2dU5ReGloRm9UN1MxVkx0d2w1OWkwbGZRcFBBcy9Ed3JhSmJyeXB2SnQrVzNkT01PN3Q2dWRkc0RnYWlXWG1uS1h4c1d4VGhnWVQ5SU45QzY1V1psbXVIMVF0UUpOcFp6WEplam1oanFIeXZ1VlNvZVFVRnBvdUlPY0IzcHhWOEUzRVpBbWduZy93Y3l1UXducDdMZW5KNWFDUXMxUkRCcDE2eEl1R0RZU2ZtNGtydW5rSFFTdkxubi9FN0ZkL3owd0Znb3BGc3VBdWFnYzhBajZsVFQ4QTFNSkV3bFJEQUFBIgogICAgfSwKICAgICJjaGVja19pbnN0YWxsZWQucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiYTM0YTUxYmU5YzlmMmIxNmEwNmE4ODE3M2I1YzZjNDkyYzk5NTdmZTAyMWNmNDEyYTg2YTE3Mzc3MzA2NDBhZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxOTEyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTRWVlMyL2pOaEMrKzFlb0owcGVXcHNOMnFEUWdvZHQwQjdUb3ZVdE1BUmFHc1ZjU3lSTFVrN2N3UDk5WjZpSHRVSGFYZ1EraHNPWjcwR3B6aG9Ya3NyWU0vL3FqZVpCZGJCcW5PbVNXZ2FnV2FLR21Ha2VRLzR4ZWd4VHVqR3VnN3Fzb1ZKZUdaMWIwNnJxUEIzN0k4N3VXd1U2OFB2Zkg3Wi9mcm5mY3Qvdk94VUNIVk5QNE1QS0tpMllQOGpibis0SzlvSHQyZnJ1eDVXRHY4VXJVelVybU9ya0UyeHM3Nnp4c0duVVMrZ2RNTTRDYUtrREJneUR3cll5VUVHNGhYZDhoUXIzeGhUK3JNTUJXNmpvMk5rQ0xZRTdxZW8vODF3NGMrQk43ekJzeXRSQlo0cEZEVU15V3FWcnp6NUFSeVdQeUd3bVpQN25HbGtGQ2lyd3ZpZUZPUnpHVjBZSGVLRWVMcGRWMVVydms2MlQyaE8weFNxcG9Va1FwQjRSVEQyMERWOUw5K1Q1ZW4xOHBrR0dJWWsyejRJb3krbVRacDhUSDJSblJTdTdmUzJUVUV5ODVrUW5EZUorR21hZTh6NVVXYTY4b1VKbFNETk11aGV2NnpXcEpxOEJMQTNTMTJPQnBUd2Vkd25HSlVjVVJwSk8vVjdKbU50Y3dIcHRNN3RrdEI0YkdwVkJMTTJ5QUpKRlREYXE1MjNzVzEybEdKQmRzR0RWSkFSUVBpcm9COEcrL1BMWHJ3OWJWdXdmMmJqSWRtSVpnNmRxOFZZN1N6S3Bhb2Z0bENkd2NhbVk5VDAzUWFjSkZrcXo0d3lhSmtxU3liWTF6NWdEQWEwT1dPNWdtbXNtZHZxMGxIQk1NYzEyUzBuR25YbUtXM3VsYTZXZnNESE9XdFZFYmttNVIxd240WVVXRTJzVHlqMGdVYmcxOEkweTJYeEM5T0hGS2t4WHlyRFkrWEIzazZGQ3JUTW5JblN3d2xpeWxkVVJ2WW1wcjQ1NHY1dnZEOHljb2ZYNXFIbDNMcjJXMWgvTXUvUlhBLzF3a20wdmczRjBad3N2RzltSHc4ZnI3Uk5GNWRENjNFVjJJU1U0d0RDZDNON2M4SHFGMkZkSEx4NTNLeEx0U1B3ZzNWRWZuRVdweW5xUFplTVF5TlVWZEJCbDNlc2pKa1l4UEtCUitHK3k5Y0J2K09PT3YxN0lmRUhNYmtYbmhVbFpZbFpZSlpidlk4b09JVmhmZkp5YXlaWEdYbEU2ZkxEclVvaEd0MmZHUnpERkZmd1JkQkV4L3g1clFWQ0hxU0lSME1sR1ZIa0VJVHBsUlQ3NUZ4U3lBbDhmd0JmZDVBWmZCTk9CRUtPTVA1dWM5STY2S2F2ZU9lcGs4ZUpnVmtCYzNqcyt0amYvTzFnaWRZMFJNNFAwVDBxVVR3aGVSQ3V5bFV0clFkY3B5aVVkYThVN3JGTjRMY1huZGQ5Wm42SnpOVkxmdHVpdStQY294K0R5SkozQ1Y4bXpvZ1dkRGttejJUZ2xQWE9vZitvTTBERzMrR1RWSjN6K1VKekdsWjFzeHgrZWc2YjNGUEV6djlKU1JscUtyZXNCWFNhRE91RzlhQnRWNDN0ZVJJRmNzTnB2dldpbSszZ0hBQUE9IgogICAgfSwKICAgICJmcmVzaC1zY2FuLWNvbnRyYWN0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA5NzMzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcxYVM0L2p4aEcrNzY4UTVwQ1R4ZW4zWXdNalJPQVlTQTZHRHdaOENBS2huelAwVXFSQ1VydXJOZnpmVXkyS0VzV1owWGgzeUFDenMyRHJxNnFQVmZWVk42bjUvZDFxZFZkc3pVTzRlNys2aTNYekVINnJNMWZ2eTNwcnM3WjJoU252VDVmM1JRV0FiZkJySDF6UkZuV1Z0NCtHY1BFK2NxNVVaRnBZSEltUUhrbm5uWTZjSUJWRUpKRXdIQ1d6a21wSHFDYk1JaW9SQVMrWUdnNUxkOStkYVd4Y1hjWGlZVlA0Uk9qa1h4QmlnM00wV0srbHMwSllFYVNqSWxKdW82YllTUERsTlJQTUNxNDR4b1E2N0p4eVdpc3Z1ZTM5K3lKRzhOdUM0My9EOWVyc25qS2xtTEUyYUtJRWpTNW9Tb09IQU5xaGdCZ1hFQ0dpNEpYdzNEbmtvL1ZSUis4TUk4SUY2bzd1Uis3Z0F4dUlFMEViaHdpaEVuUEtPZUZVd2orRkVVSk1DVWNzQS9iT0V1SWlsOWdLbzdqQnhQdUp1d0F4dlVIUlJtRTU4NVRSZ0NDaFhIZ2xCZWZVR2k0OVpGVjRpVFhjUHJQVVlCZVlqd2dMS3NURUhVTmFHWThvQlVJRTdsWVRvNHgySEN0d3BnVWkzRE9Kc0FwSUtvZWdvTkpyNTdsSWljRXhob203cUMwREJ3d1RneHlTaGlrZG1JaVdld3RGMXg1NXA1aG53VkVBcGFRWXF6bkZrYkdBdkk1NDRrNHd4VGcyeUhzREpmR0lDWVVESlpaRCthR3B1S2VHUldTOFlsRXFHalJQQlNiV0NTMElndXBNU3lFd284aGdqS2tXV2pKcXRRNVFFRXRRUklSNnptQlJVK3VpQnM0YXlxeFR6U0MrZGN4d1BYSG5vdU1hUEVubWhZd0NXY1l3ZGdSUzdYemdxVXNsSmlGQW8wdmhQTklNR3lJNWhudEJSbGhFSnU0STVGTmpwYUFIdERPYXg2QnRBS3FjUjRtTUJWR0pvQmd3cHRSeUFpYlVRKzZpcFZaeUV3eWR1TU9ZS3d6WmdwNjFQdERBb1JnRXcwMVJnZ2hrbnhMb0ZTQUtYUjZ4REFwQi8wQXFpZEthSWVtbmpZSkEwWXdnTEduU012d0dPVVB4SWxRSEdpaFloWWl4Z25rYzRDNGp3OXBFakswaEZCR0xlREIzNE8wL1Q0WGQxSFVYa3daLzc2TjFoOTF4OXBUbUVKcDI0UEJFcTdPcmRYYTl6cTdZMlRVN3UycG4xKzNzeXAxZHU3T3JkM2I5enF0ZzBERDgvbU9rNDdiZU55NXNTbU5ET2RJeEhCMnllaGNxa0hsbmlncTBuQjN4bVRWdHlIenhFTnB1dEtWTFFXRURaNGc0WldFdmQ4eGg2N0VSV0VCeG9acVFXZ3dDSnFBYkpTVWpITlJuVW8rRHBKV2laaGdVTDRadHdzZmpHU1hGaEc2M0ZrUkNJVElvS1hCUUpDUVFGQUFrdUNZZUpNTlZ2T3dleDNQUCtSalVoREtrbTJoZDNjK3FmLzcwNHcvclgzOWV3MlRRNjE4UXYvOVNGbmF0T05KNDNlQVh2UFI1eXhMUjhMbkwrandrYjQ1ekZnUkp3b21VSVdjTkJqMExiV0NXcVNnOGNxQi9BdjJna0lVREZSeG9CQStFd0FuS1lnS0Z2eDF2VjVlRk80ekNhWmlWMkFZRzV5aXN0Y2NzZ0RDaElUMlBpbXNPSXVjV09XY0JwaEF5TXFhT08vWXZUd2N2Y25mdWgzcFUvaC9OdGlnUHliOHBkMUNIZ2RSUFpudE1HYzBJeS9ERnRxZytocXFybThONXdwL25mR21xaC9YdXcwTjdhZWpkb1h1c3E3UjRXZnY1OEs5ZmY3bGNrZ3p6YkRTWUFQdCtkOWdWOTd2RGI1KzYvUFJ4MzlIZmZWTkFGMk54RmUvWmNBbVY5eCsrS1ZoejJIWDFRMk4yajRmTEtrY1plajdxQ0o2ZlVHOEovK1NvZi9rSVpTUkR6MUI0K25UUUk5OUNZM2R3TzlPMG9ia3MwV2VEbjRFNWZXUElUNmJvbXRDMlZ4RXo4a3pNQVpuM2dHZUQxdTBrNUpVNjREbzdjV2oybFErN0VSQm12a0FhNFF3aGpJaStqbTkySCs1N1QvY1RCL25FN20rbWNZL2ZWM1g2N3krK2FMdW0vdjZpeFc4ZzNGK3YwMVNISTF1OTc4YUpraG01RE1DblhKL1k1b05KVC9PekVodkJscUc1OXFZemIrRjZkTEE0NFEvaE1HNkNUS3diOUJySFpKUDMwS1ZvbmJiQWNmNlMwejlCN21TWm53M21wN2o3c083cXVweEk5bmJtQnB0OGdNNU95KzdiZzYwL1h4WndSbVdHMWcxOXVlbE9OdmtGdWhTdHRTMnE5dkZieVBXV1MxSjBadTFDMHhXeGNLWUwwNWtvOE0yMm14am5JNXVsaWE0dHpPQXl2SW52eWNlaXRCKzgzWTRyVDI1S0phSHpFMmgyS2pDNjlsMVJ0bXM0UUxkalRpS2o2NGE5U09yS0xoL2c4OU5yTEYrbkZ4ZGphdEQwNUdWaWcwWGVBNWVoTk0wV0liYzNzN05SZnNiT1RnemNROFN2bU1HOXdYSURHUHpiTCtTcWNwbGFOK0lXSVRESUI5d1NoRnk5M1lTbUdaTmlNbU92cE9sa2xaL0JpMUE3UGtMUWNRRjV5c050WnIxUlBtQ1hJSGIxMkpVQzNXejEzaUFmY0VzUUtxcXVuQXlFbTBsSytINGNMSktmeXUzaHlhZjlkRmtVbWRqc2pqc0l4NjlKY0xET3AwYUxVRzNMOGVFV3BRTWh1Y211TGZNQnR3U2huYWxDK1kyWjYyMy9MM2xyMi9Jcmhaa3NGbFZsVnpRN2QzVit6UGdydWp5YTVBTnlNVkpQTnV3L3lXell0cGVqdDk4WGZ0ei9qS1JqeTAxbXlTUS9JNWNnOVJGT24vWDQ5UTVOZy9PbUtvOG0rWUNjbmRSMjMxN04xK09qN2N1RUVqd2ZVSXVRV1IvUG1sOUpxVGRhanRocGNLKzcwR3pUdTdmanE0cHZtR1RQK2xsK3FqWEIrUEpxUlVFLzNaVERZSklQeU5sSnRTN045TW53MExjNG5TenlBVGcvcGYrV1JSY21KMzRZVWZUMnFYRmtscC9SODVOcnk0MHJpMUIxWC9VbTRXSzI1R3VFN3N2MUs3L1V6ZTVXem5xRGZNRE5UdWp6bDBrWllYZE9mZnd5bzVORlBnQm5wNVMrdUxydTlwdUg2d1RQQjlTclpDNS9BREI4MmJNQnRkUlY0VXk1dVh3aGhhUG5ObHJpcFVQTVNJcUZJWW9hYjROQmtiT0k0TWR4NDZ3bFdGbU1BMXdKS1cwTVNqb20rcGNFZDd1OUxZdjJNZmhOM0pkbEUzWjEwNDJDa0JpRkNsSndxNTNnUkJPQnNlZEdDdzNsTnJET0JKVVlJRDVFRjd4eDNCTW5CV1VJYWJnTW95RE9kRVZkYmJhbUttSm94MEdFTmNSUmhpM1R3bGdacFk3YThlZ3BOUnB1Q1RzU2xVOWZSQ0tzRExNc0NPa1ozSTlKTU92NmwveDM1NjhaLy9IWnVHNVZiTGY3enRneXJNNjN1RXFaTHo2R1ZlRWhyMFYzV0puS3I4NVovdXNxRnBVdnFvZDJCUnRSdDdKaDVSNkQrNUFNcS9CcFZWZXIySVQyY2ZYRDM3TzdkMys4K3gvTkpHK2NCU1lBQUE9PSIKICAgIH0sCiAgICAiZnJlc2gtc2Nhbi1yZWNlaXB0LXRlbXBsYXRlLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiOTJiYmY4YTg5MWM3ZWY3OGRmNDg0MzA5MDEyMTlkOGQwNzA3M2NiYTc0MTEyYTMwN2E2ZDhiZGVjNTA5ZThkZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA1NDksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMjJSd1k3Y0lBeUc3L01VS09kMkp4QWdzS2MrUk8rUk1XWkxSY0lza0ZGWFZkKzlKTE90VmxXUC9QN3g5OXYrZVdGc2lDdTgwUERNaHBETEMzM1BUNWozbEZmM1ZETkdTTmYzNXpWdTNiQ1MvK3dKWTQxNSsxSy9nVkQ2T1NobFRKQldPeDZFbnYwNG8wY2JsQmdONlNDQ2tEek0wczJUUlRGWklkMDR6YVBvWGZnRXFrdkRweU1HbEJZRFlGdHEzZ3ZTVXVoK1VvNWsxa25uaFBKVHgxa0RwT1JFTXhrd01PR2tyUENkckV6QVI2ZUtzRzFVam8vd3VrTWx2TFlTNzI5LzhtcmhPR2xGeG1qclVEcUpHa0FHRUU1d1pWVzM0SXdpNkpFYnNONkMxeHdobUptYkdiblY5a0VKZTBvTHBGVHBUaVcydCtYQWRtWXJPNTJHTFM5MXY5MEsxZmN4L2xib1Iyd0xabjlzZmV0dFRoSHpla3ZVeUMvUVB1cmVMU3MxOE5EZ0gva3h6a2Z4ekZUb2xrdjdUM1hMN2J6elYrb2thTVJpWlYxamZlazdKTmIzN1dsRFlya3c2TG56SGRKdytYWDVEVlVOYlhBbEFnQUEiCiAgICB9LAogICAgImZyZXNoLXNjYW4tcmVwb3J0LWZpeHR1cmUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzMDYwNzA0M2E0Y2E0NGU0MjAyNGI2MzY1OWFlMTA5OTNjMTRjN2EwNGU3YzU2ODUyNTVjY2FmZTRkM2ZiNTVjIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDExOTQ0LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWYTIyN2pSaEo5OTFjTTlMQlBJYWZ2N0I0Z1dBWVpCUEFpbXgwa2srUmhzVEQ2YW5OTmlWcVN5b3dtbUgvZmFsNWtXVnB6c2hicFBQaEdTZWZVNmFvNlhVMzY5NnRYcjFZLzJUdS8xci80dWltcXplck5LL0pWdlBwTjNSWkIyL2I5ZnV2aDRzcFdtMVlYRzEvZkZHdDk2MWZkbS83dVcrMTBxK0VOdjhQZmNPVTZ2bmo5Tm42aXVkT0VpemVDRU9PdHBkNDRsVmtqaEJFK3MxUUV5azFRRk92TWVlc1VFOHdJTGpuR2hGcHNyYlJLU1pkeDB6RUI4dHNpaE91M0RTRC9zN3Z3NnNCQW1aUk1HK01Wa1lJRzZ4V2wzZ0dIc3NnanhnV1FCT1NkRkk1Ymkxd3dMcWpnckdaRVdFL3R3SEFFQ0M4WlQ2endTbHRFQ00wd3A1d1RUalA0a2hnaHhLU3d4RENRWUEwaE52QU1HNkVsMTVnNGR3Ym9nZGRwRkV3UWhqTkhHZldJTU15Rms1bmduQnJOTTBjVkVTN0RDbGFCR2FxeDljd0ZoQVVWNGd5UUlTVzFRNVJDVUFRMEs2S2xWcFpqQ1hCS0lNSWR5eENXSG1YU0lvTkQ1cFIxWE1UbHdTSDRNOENnREFNSWhvbEdGbVdhU2VXWkNJWTd3M0JRRGprcm1XUGVVbmhUWEJwdEZLYzRNT2FSVXdHZkFRb21HY2NhT2FjaE9RNHhJYkdueEhDb2hReENjVlN6Z0xTVExHU1Nlc1ZqdG9teFFnbUNJRS9uU1JHWVVhUXh4bFFKbFRGcWxQS1FHa05RUUlRNnp1Q2lvc1lHQlhFclNMbUsyWU1JakdXYXF6TkFHeXhYZ0pVeEo3SWdrR0VNWTB0ZzBhM3pQSlp0aG9uM0pxT1pzQTRwaGpYSk9BWTlTQXVEeUJrZ2daVlZXRXFvQ0dXMTRzRXI0eUZjemtPR3RPRmNDaThaUkUycDRRUStRaDJzWVREVVpGeDdUYzhBTWVZU3c2cEJGUnZucWVlUUZvSkJHaVdJUUI0b2djcUJZS0h1QTg2OFJGQk5zS1JFS3NWUTVzN0xCa2xJR0VFNG84NnFBTjg1Z2NBZ2ZScEJPWGtqRWRGR01JYzlhQTBNS3gwd05wcFFSQXppWHE4NnZIOE5IZm1Qbnc1OUQzOTlwOWRGdVkrTnI4c3RHTVVEK1E5NjNWa0lUUWxMY1kveCthc2p2L2kyMm9UaTloaXNycW8yTkVkWDRGbzdPRkdwOStCVkIzaDR4WUUxM0JUdTJCc1c4WWRGUEdJUm4xakVLeGJ4aTBVOFl4SGZXTVE3RnZHUFJUeGtmaC9wdkdUNDdmUEJMZXlwR2NDMTc3WHg1V003Z0t0VmZadFdXNzg1akNaTjJzMG1xZEdOVDExeDY1djJhQkRKQklXeGd5RmlwWUVKeERLTGpjTmFZQUZWQUdtSHRjZmdBQVFhVG1ZWkl4eGFWOGZHQUUrUWt1ckhLL0VrZWUxL0s0WkphZ1ZOWWd6MEZ3VithRUxQb2FGaGphRnhJQlN1aUlOdTR6S2NGbTVsQzEybXR0cVYxZG9BWU9tam9NWld2UUZlLy9EZDIrVFhkd2xZakVyZUkvNzZVMW1ZUkhLa2NGTGpTYXltMnRYV3B6Rm8vN0ZOKzVYcHhqdk9tUmNrOWwyZ0RGbWpNZGlDVUJyc1VRYmhrQVViSVZBK0Voa2t3VDI1NEo2UURCS0tDZFRKSDJIZFZtVmg5MGVrQ2t3WUc4OWdLc1JLT2N3OGREZFVzdU5CY3NYQkxiaEIxaHA0bTBSSVp5R1dhVmY0UEk2UjVLR01QbDhkLzR6ZnU0SmEvZWliWGRrK2JBeUhEZWJiVWpmeDhxcHFrdTM5N2NOMnNob0gzdE5kN0oyMjk1RGZ4NXZNbzNvYzk3bDB1Mi92cWsxUzd6Yk9iNXZIUy9Nd1o2K2dBUVZTQ0tjSVlVUk9qT2JhK1ExTTRJV3ZUOG8raHZMemo5OUhBQWo4amQ3ZXYrNURmWDNDbTUvZy8xWFg5dTdyVFJWLy9NVVZUVnRYWHg5dnlZOVg4cWdsbjVEWnN5YXgyV0JMcm5idGswSnBtcVhrckRTZm9mQ01NaCtoZTNFZnBiZ1JiQkZ4U1hmT2VYbUZIZS9TTXUvOWZxSk1VNUhVYUM1bGtTcnZJUmNTTS9qbFJLNGl4WXlTQnNMOEFEeTdzTzE5MGxaVjJVeG9Rak5sYWFUS1I4aTV4Wmhkc3pmVnh5ZWw0SlJtS1VwcWVua3pEVlQ1QStSQ1loSlRiSnE3RjVUVUV5NG96T3JFK25nTHFMQzY5Vi9Zd3dTZXBaMU9PUE1qN0lYbEpRYTJ6TkwvR1NvSDZpWEYzanF6bnFoTk1vdHhSSko4QUp0YkFPd1p1N1lvbXdUbTNHWkNpVWhwVXJPTHBUeWl5MGZZMlVYVmhpZnhzRE1oQ0ZxYlhDNW5KTXA3d0VXRWZDRXpoTXd6SGgyNDhnUG0zSElBSFFpWDMybDduc1cyV1lBM244aFViYVV5cWNVY01vQW5IL0VXa0dHcjlZMnY2d2twTEV2WlRDa1p5UElENkJLQzZ2MjJyZWhFaWZHNGx2UG82Ym55RVhNQk9TRVVrMUptYWZ5ZUp4L3hGcEJSYk5weTJvcG5TVWlrNlkxNGlWeHM3SzV1ZlBQaFNTRWlGVGZiYnRiZ2VDNGJHMG56VS9BbEJEYmx4RUVWeGVNWG1VVlRVK1lqM2dJeXRucmp5NWZOVWsvNUVqbHFtdkpsekMwU0xlbHNiVkZ2N2RTcEx1VXplVnZIbEkrSVMwbjUwcmc1czU1eDZGeE0xRzVYdUFrM1lDUU83clBvaVV6NUFYRUJLYi9Ca2JCNlVndUNOU1F6T1Z2SGxJK0ljMHRaNzVxcFhiUzc4WGU1ak1pU2oyaExTRWk2QStETENPbTVGcE16N001SjYrdDFzUWxWZDIvNTVYYWUvMG0vK0M1VWUrM0s0OGMzcHpvbDFQOHM1akF5NVNQaTNGSWFHemZ1YWR0V2N5Z1ppUElSY0hZaC95bUwxay9mS1lDdGdzNXpsanRpeXcrb3MwdHF5aHRiRmhEY1M5ejdmV0JiOE1adisybnlRVmZzV1R0SGZucWVmTVNiVzhiSFQ5T0ZCak5qN05iTGRReEUrUWc0dDVENGJIK3k5MmM1WGtlV2ZFVDd2eVZjSGY4dnh5RG8vRWw3cVRlM1R6eHJIeDVjdzR2UGVkNytidiszWDk5UHpJR1lwODljb2UxK1c3emU3di85b2MwSG1PYzliWmk2UlFMQUY0VVh3Zk1lNUhuQmRYZUlibXU5dmRzLzNTNG9ub1V2aWZLSUpSL1FuaFZ1bkNIcXRYZUo4N2IvUDV1bmgyWTR3RjhROGhsVDNpTStLK3p0M200MURFTDExSTNsaTRwMHdJODNsSjhYNGdkZHRMVnZwaDh5a3d0aUhBbnlIdWlQZU1sVi9PM3oxWDhCbXJ2TzRhZ3VBQUE9IgogICAgfSwKICAgICJpbnN0YWxsZWQtemxpYi1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogIjZhZjYyZjg2ZjUwYWMxODVmYWI5NDE2M2MyNGFjODE1MGVhZDY5ZTYyZjhkODI1YjBkY2UxZTc1YTVhNTdiNjgiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDkyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTMyUVRXN0NNQkNGOTV3Q1pWMlM4ZmlmVmU5UlZkVjQ3R2xUQWtHa2JFRGN2VTZncTZxMVpHdG0zdlBUWjE5WDYzWFQ3K205Tk50MUkrUHB2WHlPTFkvbllkeW5kaHE1cDZGN3RGMS9xSVo5eVp0Y3VKLzY4ZkE4ZlJCYXR4VnJReEFUWFZLQ3ptZnduRG1LUlFqRkNRb2FKZDRrcnlPamptZ1NhQTlZVTVRbVcwZk4wNHh4R2ZyMGRpVGVQV2hVcTF2Y25OUmRsWDRvVXgxZmExUGI2dTNvdU92eWpEVjkwVENVWE5XWFJYM1lsNHZ6TWdnLzVlK2lFUnZCTzFUUmVRVUZMVU9KNGpFVE9JTk1PWkRObkFpSVlyR0JvTmJrckFzbXErb0YxU3hCci9lODVqeWR1aG11N2t2OXdIWjV4ZDlrVWY5RFZwaERpbG5ZMkpLOEVNWmtGSWdRazBQcmc5Y2hRaTVXcHdCU292TGFldTJUaWVBOFc4RUhXVDF2cTl2cUcxekxML3JzQVFBQSIKICAgIH0sCiAgICAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTY2Mzc5OTRkZmRhZTQ2YTZmOWFiNDQyYzJmZjliMjU5MjEyNjUwYjM1ZWI5OGQ4OTZjNWU4MzdmMDFjZTJmOSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMTIwOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMWNXWFBiT0JKKzk2OXc4WFZER2FSNGVsL1c2eHlUMnZnb3g1bXAzYTJVQ2dSQkNURkZjRUJRaVNibC83NEFTRWs4SUluMjVwaXRaUjVpbTJnMkd0Mk5Qb0N2K1BYazlOU0FhVHBEQzR3ZWlsa09pOEk0UCtXc3hDL2tFSTBLekZZNG5rRXVIaHMyc0QzVEFxWmwzWVB3M0FIbmxqdHhIUkQ0emw4QU9BZkFVQzlsa0pNVkZpeGhOc2V4ZUMrQmFWSHh5eG5sR0hIQk1JWWNSckRBTTRaaG02YkFpR0hlZng3alBLWHJKYzc0Ykk0enpNUXNOQk1VdHF1R0pmMWF2SlduQkVHNUNLdm1CbE14WFNvbDJuRVF3MS9GcUZ4OFRuN0ZyS2hZaWIveTRteGxxWFdJd1FlU1NSbU1sN3NYNjVFbDVsQXVZY3RJc3NveXlwVlVSZU94SEdCeml1S0ovQ0VVOEdsQzZCbG5FQW51YzVPb0NVaVdVTGJFc1JsalJLUXc1MHFTM2J6blBZcXozcE5hTmpWbGIzQ0NhSm5TWlRRcEtDSXdQWVB4a2hTTlpUTXF6UHpYMDdmWHIxK2F2OTJhQUFEL0ZKVmNQR1ZHemZaeHcxOVllSW0xWWhzdGtpS0g2QmhkV1NrQXVrR0FMUURORU1TMjZRVEIxQXg5RjV0ZUhBZFJrR0FFUTd1U281YkNLSEtNbXRvWEs1Z3pYQlF2aFIra0pNUHZNYUpaTEMzaEFiQ2RydXNmOWNPVmt1b1hVbkRLMXUvSWtrZ1BzWGF2RlRnVmJrdFoyNjVMeU5IaUhZeHcyamE0Y3F0ODhsQkdtR1dZNDBKYWZML090dTg5OWhSZENEL2hlTDV1ejh2WHVXSjFKM2VLR084YmlPTmxuc3FSdHJ4OXB6M291Ti9OazFyQ3FsbFNuUmExZWtSMG1kT3Myc1BLY3ZpejhlTFlTd09VdjFOL1M3YXVuMVVUaU9Vc2Fabng5eUk2RW9RdkVKSi8zZE1IbkRWajF2WUY0WW9jQ3Fka2Nvbi9ia25iWHJDZ3hkbXFSNlFqYk8xRXFlM1pQMTc5OC9MaTl0WHM3ZnYzSDE3ZGRiUlN2N0NDYWFuZVdIQ2VGK2RuWncrb1kxQ2o5OXJqaTJjSWMzbHpmWC94OXZyVm5menQ5ZHMzUjhRUmRzMFNNaStyc0g3R2hEckpFazgrRlcwYmRTMVYvZnZZNVcyUUpad3J2c0xlYy95SmRwMjIvck1mUlA5V0xLRHRldWUrTjBWVHp3RTJDaUxzSStRZ0s0b3Q2Rm1lUFJVL2t5UzBMQzkyYmR1eEF0OTNiRGR5WE9nREswQUlpT2dGRGIxSXQyV2EzbElSZ3RaS1VjazE1YmNpYXUweVMzTlBpSnlWaVloMnkyaUVlMXREa1NTUXBDWEQ5d3ZCWTBGVEdVcW5mVDByVzcvQlhNdERoazdJRjhvR0M1RXMrZUlQdmFseXl2akdjZlFVaGFnaUtnLzQ1ZjcrZHBBZkdUbG1oTWE3WUwwTHVrM0dKVUpDRWMxbFdob3k2VEcwNUR0bTlza1JBUVprc3RiNmkrRTdjN3ZsYnl1OUJTQUFMdzd0bXYxNmxWVVRSVFNWVlBlWHQ4L2ZvQnFacklNeWZhYnNJYVdpRUh1bVhFZjNxYXpheU9qazM5ZkpCVU5hTXNGY3I5OVUxanZGUHIyaHZKU0xkUUZZNmhXeXhFdFJOS24yd1BXdXlEQ05NUHg3aVl2anN4NmQwM08wVXg3VmllZ3lTa2I0K2xKc0NmeEY3eld5TTZLZmJ4bFprUlRQOGFzQ3dYVFRkZlJ5L0Vad21NT0lwSVFUdkhkeE1hTzVOcENvMFl0Mzd3ek55TWVCZW9YeFRaYXU3eWpscjRYVXhib1F0V0RkMGgxWENvZU1sL25UOXFKbGo1dnhDWnVSWTdZa21YS2pLekdEckFrMnlvang2cXd4YktaMGJneDVmMXRQU0l2MzMxalJ0RnppSzFtaFBpRi9xZnAySjVwc0d3Nm1Da1h4N016VW5rMVVmMmZITTNKcitycGcvRllTOEdWK2VENUo4STNtYWxXK2gyY2RRTHFKQVBvOS8xd1pWNUFwcTFTSE0wWGZPbWQ1NVlXSHhSY0JWWFNCZnlxNVlSa1RmbGpzQXlRL1MrcGRlM3RZOUIyZENYUHlJOWV3S1IxTmh1ZWs0T3lJYXd3ay8xbjZydXVWZmM2N1dVVkJPSmVuZWtmSWo2N2k1RkR1YjQ2Mkttb2p6b3BkTXJoTVN5bkJhOEtLdHZQS2VsQW0raDNwUmZvWnJ0dWVwRkpyWElydGVyMEo4RGlCWmNyTjdVQ0gva2hCWlNURkcwYkxYR1ZjQURyWmRETjZxUTZOZDVMZFpMS1N1U0tGT212ckh2UUltMTBjNUtvSXJxbGkwampYN2xKOEtERGJ3MEVzUzU0NGlaSW9rY20xWDgvc1R1T3FEUFN5VXBPeDEyU1BIYlUxVDVEMm5HbDFxRFlXMFZFMnlvTTNEQ0o4MjZsMkhMZEZYdFVHQTA2bFdtbSszeHZMSTNUaGJSbi9WVEc4VENGWjZpdElKSWV1OTdYZHBxNk1hRytIemhidm41OHRjNzUrU1poK2VqRVpLYVZveGxYVlEraUtQL0lIM2h3Q0c1YW1wOWwvanFBdFEvN1VFdmNLbVdQU1ZqWElGY3oxNHRaaDRvckdrcjBkNnJxRHZhY3VacTAvMDBPMmJRVitFQVBYR3I2V2RubjBwRlVkS1ZIa1djY25kWE0xYU5WQm9EUFN0Z25YZFg1ZjlkMWdvVDFoMWhPZlZxVUt6cXBibHlURlgweFk4b1UyQ1ZXZTl5VW5sYloyRVdMYXVDL1oyN2h4SllpVzZ2Rmt5TE9QLzlVZVAxeVoxVmVJejdjVUVUM3pFKzMwZ05jN3ZlalZkMXg1R2pYcC9FaXRibjhJclpUeVRmUjdwSHo4WDlrVk9qZi9IbDcrWXZnS0RrZlJBWDU0aUh2Ykp4R2NJTWIzQm9IV2ltdmF2YVNQZTBZKzd0VmwwNVZNSnVvdzg5QWNQeUo0Zk5jRTF1OWpCbWV2STY4TzNiUEhlNUNmR0I5Ukt0S1Q2Q0VxQVk3RXlUYnhzK01semVYT2grbUJVOXRqSWJXdjA4TWVlS0x6MWUzMS9zbm1mMlZTc2VleW1JaTZkd1NvakFDVkVhQXlBbFJHZ01vSVVEa09VRWxjRVpFU0ovUWlLN0U5UHdZK2lsR1l1RFlJc0pmWWllMVlpZTlFL2pSRTlqUzBuUWhNZldBTEx0WVV1dUxSQ0ZBWkFTb2pRR1VFcUl3QWxSR2dNZ0pVeHMwNEFsUkdnTW9JVUJrQktpTkFaUVNvakFDVkVhQXlBbFJHZ01vSVVCa0JLaU5BWlFTb2pBQ1ZFYUF5QWxSR2dNb0lVUG0vQktqVTMxQ0pjWTZ6V0NUdjVzbHg3YXpMbHJOMlFDdGJ2SXE2WkZ5V0hFYXFVMmwyTzFzb3krWFcrYmREV2xqQUFWREFzL0FzWjl1SmgwQlo5SFZncTNQNVByaUU1czMvRTZ2VXpwc0R3Qzg3K0VzSUxHc2EyN0hwT25Gb09qaXd6Y2lLcDJZSUlpZkVFWTd0eU8yalBCRE1hRVpFeGFvKzl6T3JicTRsdXdBang3Tmp5NTQ2dnVzRWlRczhqSEdVV0hpSzVNY1dmTThKZ0JXaUFQckJOQUJPRE1JSUlUK01RR0xiTVBIYVNKdDhoWVk1MzhiSGJyWGQ0QS8yTjYwUWczeXYxK0orVzE5cmNjNVhIYVJLSkhSb3loT0hGRmRsbGJIdW5QRnAzaEZGVUd4R2ExUGU3ektxR2hqZGkxV3pQNG1FL2pzY0pPNEp6ckVwQlZjTHJEZ3dtS0VGWnBJaXBjTFBUQldaZFR3NzdCUmNTdWdycTdLSVlVL0RpV2RQYk9CT1FudXlvQVdmcVBNaXJMNS94U1paSnhuc1lmc1VLYlZiT2lFaUQ0aGV1WWZETWRvekNaYzM2NDlwdFRySmo0UENROGVCbmg0TzRnQkV0aHRacHVWWTBIUWNLeklqb1RzekRCSm9KM0VZUkQ3cWg0TWVVc21BNmhKTHB2TGVldTh3akg5aklwSGZ5RzVSdThCOTE4YjdMMitOMmtMcUZPSU5HUUN1cXVqRjNpeUtUZmJWZXRyMkVxdnlwOGJWWm85bXcwZmE4RW1LN0FhOVdiNkFoV0wxZDduQmpHM0Nsb0ZvbDZGcm16bGhHSGhCWXBzWVJzaDA0c1F4SVo1YVpoU0VDTHRCN0x0Z0E2T29lNTRXZXJFdWVTcUk2bGxLRW96V3FIR2JKNUdMOU1QZHV5WjA2Nm5ZcHNtODBTd2JYQ3dEODdzYSs2anFyZENMQVBMaUlMQnc0THF4RlZ0dUFNQlVQTUlod01rMEJMWm40dzRRVXpnWHIwOGNteXNhQ2dDdElrQUxrYmJiaW5VeE9pbFdxRDJwUXVCQjN2NytuYngzVnZmSlRUbUVhL0Y3RVNKRUNTZm12U2VWY3pRL3RlZWZBM0R1MlA5cXlDUVNVVm1vYTJYRmI5MkJucTZ6VmthVTRSb3lITi9UOXZiVGErWnBJZUhKR3VwdHNhNnZEZk8zNytKejM4VHY5RWhaOWh4K0dvUGZsUHdtZVM4TjNLdlNwUlZtTVZ2UFJQbW5QdVdvdkcvN01jZHREVENqV2JxZUtiaWZLT3BUVmVoc3FhcWVaaGFUSkpuaEx4WE91RGV3cStRUVNoSWZXUmlKWUlVak4wd1FFTkhFODVBRnJDa1V0Wm9iSjY3bHdBUTRBZklDeDNlZzdkdGg2QVBid1lrZlZaK01sRGdXQkZWZk1FTjVPWk9ueVE2b0RrQTIwVngwSUp1aHFlTlZRdzM0Y1FOcy9IanlINlZXVzZuWVVnQUEiCiAgICB9LAogICAgIm5hdGl2ZS1wcmVmbGlnaHQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzYjZiNjdhMGI0ZDUxZWY3OTFlNzc1YjUyOGI2NGFhNWE2ZjE0ZWZmNjI5NzM3ZTY3YmFlZTdlMmY2ZjYwNzYyIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NzEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZWeTI3Yk9oRGQreXNDYjI5bFV6VDFvTC9nTGdvVVNOTk5OOEtJSE5wTXFVZEZLcWhSNU44N2xGOXlrZ0p0Y085T25NZVpNOFBSNGMvRjNkMFNuS3ZVSHRVM1gvWGcvWEo3RjRZUlAwUlhWM3NjbmxCWEVNaTg1SXpuU2NxU05IMWdjaXZZTnMxV21XQmxJZjVoYk12WWNrcHFJZGduSkVob2Q2Z3B6NER6Ujd4KzZBS3FRSUFhQXRUZ3NSb1FibU04cWdIRGE3dkczbldIQnR0UTdiREZnYXAwTFVYd2JITEgrQU5sOWM0cWlFMmtreG1HWFVlSG4vUk5wOUZHektXUXNzeEx3eE9FV2lWQ0c1RUFidEtrTHFYQ3JOUkZ4dlRVUzZUVGpZUENDMFJzQXNJK29od0pyWjAxcUE3SzRTbGo0dEozWCs0L3hxQjlDTDNmcnRlbUczYjQySzFVTjdxdXFWZStVeGJjK25SYzI1WUNHdFNKUm1VOU5iYmEyWEFGRE5RR2hudDhtbndSVjhtOFppclhaWmxpbVdVNjFXbFdNclloRTBxR1ppUHByamp5NVFUeGZHcEdvdysyUFUvdTBsRUxEZm9lcGphWHI2aGNhVXpMTU16YitqYldPTFFZMEs4MEdoaGRXUGtuZFZzVXh0QTFFRzVYZ2V4N0JEZE44c0xEZ1E4UEE3VGVSb1lQdHNHWFcxZlFsbTBGL3pyakZDQ004YjZYLzA1NGg5dmkvdENxZVFuVk5UME1xQis2bWZXM2svbWI2YnhqUWpPaWIrL2FuKzNiLzdKei84bmVUUTB1WGpSS1ZOK0I5OGFGZnhyREovTTVYdkRpWE9qNUpDSHhGaW85a0NDTTdhUnEwL1pkZEExMFkzMmtVSFd0TzFTMmdSMVdHbDJBZVpSeU5xcU50c1pVK01PR2k2ak1IWDRQUE11blZwUXhoVXBSR1MyeHpxUlJqTlFrejFYSzBnMXdNSmsyV1NyQU1GR3F2QlNGQUY1d0tRdkdCWnFpUHFvbnFYR25vamc2a3RCK3JCcUNGb3l4azhoOUgybFJTVC9Qcm8zSWp5NGZTQkZ4ZDRoTTdxT0UwdW1JYUVZUytBRVYyajdNNkJLelRTRWxxWjhHRkRua1JrSXRCRmZjR0ZuelRQS1U1eG1yTnhuV3N0U2x6RldHNWFZd0xGWElqWHdEL0x5cHh4Y2c2UWMwenU3MklZbFJxMGQvK2x2aU0vQkl6MENjUDRYZ2dLM0N5bGlIL2lyVm52NW02dFBGcCtRcS9SSDk2RW1pSjdsNnJ2RFhaUEppcXduZFRzam56Qk85dWZjbVcwR3JMVDFRTHd0ZjdLL0t4czFiUEM5K0FVR3htNUZQQndBQSIKICAgIH0sCiAgICAicG9zdC1yZWFkeS1uYXRpdmUtb3V0Y29tZXMtY29tbWFuZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJjZTg4YWNhNWUyZDZjZDVhYjc1MzM4OThiYzliMjQ2YmQxNTk0ODJjNGFjY2NiMGFmZTRjNDUxZWU4OGY1N2ZhIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE2NTUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNFZVWFcvYk5oUjkxNjhnL0VJSmtlVzRXTnZCZ1RkMGFMcmtwUXRjYnk5RklkRGlkWHdYaWRSSXlvNFQ1TC92VUlxY3BzQ3dCNXNpNy9jOTU5N0paTExxakxDbVBnbzJualVKdW1jZjJOd0twUnNPZ2JUNEVsU2dxMjRqYnF3V0h6NnRMMWRpVDQ2M0RGbWxqR1lOdVZpUjBzY2lTZFk3RWx1K2gremtTYk52VmFoMjVFUnRsZmFDQTM0bWtET3FGcFVqVFNhd3FpK0VzellJUTNBdkhQejVoRU1ocnRickcrRzdxaUx2UmV2c25ueU1hdzFYTUs5NVM5V3hxcW13WGFoc0ErSE54eHR4RzNOeUZEcG5TT2ZDd0s4eWlkSjc5dFlkWXdHYXF5Q29ZZS9ab2dWT0tBVFpJT1BRd1hTTEIwK3RjdEVQN2RFWlU1R3dtNXJoR1FhK1NGWXhXVWVWZFNncDdOaUxqZTJNUnVVTkJZV21xQ2dsYm9NNGNOaTlOQTE5L1BQNjQ0d2JkVXN6Ynp0WFVZRytjYXh1Q05sbkZFRTVPQTZvYUZDNlFCbHcrVTlIUGdob053cDRvYXV3bmt3bUNUZXRkVUZFTkFJM2xQL3RyY2s3VjllOEtaNnR4aXM1WjEyeWRiWVJxdVhDazlzejJsczAxTmh5aEVzOE8veGpkZjM3OWVmOHMxMlJabFFVOG1EdnlKUmJyaWxodlpSc3RucjY1dnpOdS9uNWZENTlRSUNwb3diS2ZTRlRONWNKNGk5ZnAxS3Noak1kM0ovSjJYNCswMVJ4aE1QUDVCbHJ2STJZL29ybVJjRnlMdk1kbUlIYjhsRis2TUxPT243bzQ4aUYvSTJVQTNYazJVdUNLZndxTjNPZG1Ya0MxWUtmK2NqbjZhN2J6SkM0ZFVoME9zYWRuZGcwN1YzSTdDbExiRXVHM0kvcGJ6cXVkVG5JMGg5a044N2VINjh3R2pWa2owL1pkNzFMc3l3SjdyaElCazRNOWtVOFVsam5FVGpVdkp5L3pZVHlBTnUzNkFaQlhUaDFXSTczSWs1SE9qLy82ZWUzNzk5bkVQSlcxTkdGT21TL0RNL3ZGazZ4Si9HWHFqdTZqSGluMHZaZGZDQVpUZHd5RXFUb0o3STNURUEvVEdYYVArdXVhWDM2S0h0R3NKWUwxcmtjYUZqMmI4K0F5TVU4bDNZVEdVUzZWRUV1UnY0VnB3OWpEK25wRXY4ZXJLRUN5R1lGcGpGQ29OQ1hYQnJndUtkU0FkVzRFQ3FZNlBJMDZlVUptM0praFZ5c1hVY253N2diTUtpdUJIMTM1VGo4bzlMTG5pa1JEN09JRHpocU8rVDhTZFVlS2c2RFRnZTVjTVV0aFhTOElyTTRFdFp6cEZsWlljaGgwcmQ3MFB0TzZtWCs5VnYyMmdKcGZuMjhXK2hlK1M3clY4c2Q5cDlJSlJxYlM5WEd4SkZOZjhNT2V0NUpaVTlVK2NyWFNYMW9ObVJncmg0dTJWUHZXa2ZYLzVYWnR5ZndqKzRyd2xLNjdJKzRhc0EwV3Z3ditNaW1ReTJ5TStNbVEveCtrNVJWclR4RTRkaFNTbGxSbGtZMVZKWUlkakd3OE12UkIyb3U3em1rOHl6NUY5ekJyc3QzQmdBQSIKICAgIH0sCiAgICAicHJlcGFyYXRpb24tZmFpbHVyZS1oaXN0b3J5Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMDcwLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTVWU3dXN2JNQXk5OXl1SW5Jc3VWcTFJWHUrN3JRTjJIWWFBa3FoWXFDMFprcHdzRy9idm81cm1zS0xEdG9OaG1INGtIOTk3UDI0QU5oRnJPTktldkNkYk4rL0I0MVRvdHYwSk1kU0EwMDd0WjR6QlU2bjdNcUtRTzBadE91cU54UHV0RmtQdnBOWldHYThrU1NjVW1WNUo3TWlKVnJIYXlrSDczaG1ocGZYYlR2YktHN0g1MHdwenJsVDJtU3FHU080UGhHeWFsNGtxN1V0YXMrVlh4S1dNcWY2dEw2WktqZjFqcW5EdHFlVEFrRStaWUkwWVkxcWpKYWM3d0ptaTQ2Yyt3Rk5NcHpoaUdXSEpWQ2dmeWQwQ2ZVTmJJWk5Oc2RTODJocFNCRnhkYUJNTExaaXgwblNHNEdGSnBRUXowUjA4SmlabWNyRFlVSGJDTUVQeWNPVU5LWWREaURqQnN3NTN2OG1rdTdlYzBCMDZNMUNuK3NIdGpCdDhOeWdwVVJqamxKR3N0eDRJbFJaOUwrVzlNc1o0R29Ta2pwSGFZNjllci9nWGJmbmNpN1F1bzY5aWVJdVhRdHU1M2FBdEd1RzhjYlF6ZG91Nk54YWRFL1plaU1HSjN2ZllveHc2SVQwcDBUS3k4NmdGYlY5NFhSZjhIeXRxWVM1YytzS2ZYUGpJRUhDaExGZ3RlNGlsVUlHMEVEdkVwdTFEckd3ejFNUSt6QndST0lVNnByWEMzUEFoSHFDWk9mUDYvTXlLSjM2K0FCYzhUd2tkVEdpZm11dFhWc0h4d0ZEUDcxNHZ1ZlovNEJ5TlVDeEdPSEFVQUsybHBVV0M1b1hiK0pSNGlRamoxcW1DVFVjZWRHZ1pkWlFocDFRNWVSUVdKc2tLT0t4NEhmM3BGQnVDam9GT25Pd0R4cDE2YU5sZSthZ2N2amVldFkyeTQ1b2pKSE1KdE80MjNQLzFXY0RDeCs1cjVrQzh5SHJ6OCtZWHFsd2NpaTRFQUFBPSIKICAgIH0sCiAgICAicHVibGlzaGVkLXZlcmlmaWNhdGlvbi5qc29uIjogewogICAgICAic2hhMjU2IjogImRkNGVlY2YwYzEwM2RjYTc5MjIwOTRhOGJlZWI5OWI3N2FlOTZmZDFkNWZlNTMyZTM3YmQ4MzNkYWEwMjYxNGUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNTkxMiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0EzMVkyVzdjUmhaOXoxY1FlclZicW4xUm5wSW9HUWlURFpObEFBK0NSaTIzSkk1YnBFS3k1U2hCL24xT2tleHVTWmJIc0MxMVYvSHU5NXg3K2RkblRYTjJQL1QzL1JoMjJ6YWZYVFpuMTk5L2M3WDU5NDhieHBqZi9NejB4Wis3Tm02Y1pwNXZCbjcydGo0eWhmSDlKNjR2RjRZV0Z3WksvWEM2OUsvcm4vNjVFVXdZempqZnZQdjIrc3RGNnZMRU9JV0o2dDJRcG4zWWJmb1BIUTJicjY0MzkvdTRhOGRieXB1MnkzUlArSytiTmc4MHRLVk5ZV3I3Ym5NZnhoSG5IVDQ5MEdiZmhYdjQ5RUI1a2J4Y3BiemRUNmtxcUNac09OdHcvalB6bDRwZENuV3VqRGZLdkdIc2tySFZubjQvSklJUEQrMElIZlZCSDFXTVFtY3B0UEV1a0ZhU0xMbmdna3hTZTVFakw5cVZ0QWhJN2JhR0NROXlycVU2ZkRmc3E2emp4K3IyZnF6U3gzMUtOSTVyL0tDV1BzRG0xWXk3MExXRnhtazczZ1pvci9ldFVDRW9heTFGbnB5M0pqdmpTQmZObExLeXFHZ3lqT0V5VzgyeXM0RkswTWxsblFLenl0SnFaZGp0ckRwb3VRMkk4d2hsVTdyZExubllwdjd1cnAyZ2NCcjJORDl5VE1pMnZRczN0TTN0RFN5YlhaaU51eXhhTzFlVU40aUhNRFl6bTNMeVJRdm15QlJSaE9MRnFtaWxUMEo2b1NLVGxvbE1pVXVZS09SaVdRd2pmVXFETllpNFVVd2tGOG1tcEJLUG1RZkRqWkQ0V1lybkhPNExhSExXS3FHajBzRXk3bEppenNsd0NQSk5PMDdESTN6c1NudnpzUm9qUktTVUpNWHNiWXJHUkFOdDBoU3BZL0dTQnd1anMxY0d3ZFpPY3k1azRpbTU1TDFEMk9PaWh2Nmd0SjhRcmwyZkVOQWM2Szd2VnMrV0hqckVUUkN6SkhOMjBrZXRROGs2YTQ0OHkyQ05EZ0kxcWxGN3BNZ2dwMGcwZk9NaGEyMWlOcGtkR2dubEhuYnRuM05yYkZONG9ERDdkRFhyYlhaOXlNMUFoMXMwTm92M256Y29oU2EzcFZ4ZmpSZjN1ekNWZnJpN29GSW8xYlphcjczWmhVaTdzWG5TaTd2SGhuNUhxVFJUM3h4QytublRVVHZkMHJBKzFuVDkwQ3llTjlkWHpiaVA0OVJPaU1yWVFNM3hzV2FPU3JNbVlpblFwUXlQdWNvMHBxRzluL3BoM0lZT1FRMlBoRjhQVGY2MFVHc0YrZlY4MzZYYjBOMDh2d0NNR0hDK3lzQ0ptTDh1KzkxdVRLSGJWZ0c3dHF1dzlCY09jUFRkMTFmWHYzeFhlL3J0OHNXU3dLOSsvWHBHdGhYUWNQVDNjMG40bDlzTWhOc2l5aU5WYTZmSGJVRVUyKzZtYW1iUDczZjlkdHdEeFFBSXlPTDQxT2d4M05HMjRPUjJlL1hsTnZiVDdWSkx6eTlCQ1BCem0rTVR4R0F5aFJRVlUxb2tpbGFod0VwRkE1R2lFOFY2SXVkVUxpRXhaZ2hkR3ZBaGg4eWxqQXdkWmM5ZWlyNmpLY0NwY0lyUHI0ampncFppRGREMzlNZjB5MzFld2YwSjluSjNxZjJsWnVmT2VjYVp0dUxkMmZyTWNqOS9NVDE3aEwxOHhBdDVmT1FLZkZGTCs1V25oTHlVQW4vUHBXTk1TaTc1dTFPR0R0NmMrdVNMM1QxU0xzK0Zha0ljVWQvTjF6OTgyd0R4cHVaREdEcmtDNjB5RjZWMFAvejB4dno0T04yaXFqTk5hQlJVWlRPRTdyeDVSMFBmM0ZIb3htYTZiY2ZtVUovTjFaZk5DSUlhYi92cExicGlhdmJkK3c3R2I4cCsyZy9VZ01yMmtKQ29RVi9ReklwTlpkUG1ab0IzNTJzT1luOEgxTnAzMVdLbFR0LzEzYTYyeU81cFRpcC80OU4vNWsvNHpNL2gzR1pnYStoTzM4eUYyelMvbmNxMzdTb0RMSTJEYXQzTlJiWUlPb1BVaTNELy9pTEhpN2FEbmJ2ZFNyZzQyNC9EUlQzSHZ6L1B4LzU4VmxDbC96Ykx6ZTB3eCtyeDZBT3k4dUxrVUZzbmJ4YWJ3TzJMSmNCT0pBY2p3SzQrYitiRG95SGJYNjZ2YXBkaUt1RXZUdjd4NHVTKzM3WHA4VW1iK0d4Qko2UUErTno3ekJVVkZnSUJhSXZUWHZPaWRHUXBSVnhEUVFWYk1ua2g4TFRVbFNIRTJWT3hkMzJlQzUvMVJxbG5KNHVGUzkrZjRHR2hoUU5sZkVTNzZRU0VNMmpoWThneHBQZFBieTV6MExiT1FJalJzSjBXVmlzQnlQTWlHUGY3QWJNZmJSOEM2S0NieGpreXE3cmxwTExBV0ZHci8zQUV5T2RuQTVYOVdKMTBDNnNpbyswZHpaYk41ZGpSOUtFZlVPUXprTDYwc2g3Vnh0MzJnQlRrZTZaOS9INW9rdnA3R21qT05SekFXRktucERrMEo0ZFdXVU1QTS9mUGZTMm9zRHdIYWtkVjlESWJ6a1Z6dWpTUHE2VSsvV0c2SGZyOXpXM05HYVpaTU5OZFFMaHF4MFBENXcwR3NVcDF5M3pXNUQwZGdjYlZkcTUwTjFVendIeXY5bS96eFF3ZHpXSnhzMlppNXVxTEdkU2JNZlgzd0luVmJ1QkttZ2ZRQm9TNXE0cC8zNk5IY2hNSjBRY3I3M3JneFFFWG5rN0ZOUzhBc2p1YUcrenNtM1lBZ2lFNURaS1ZUNHk3OG5NWUQvU01iczg3NEZCWEw1WDU4a0hYb1VxYnBUNmhoQXQ5M256VkQ3VnI2OFhIRjRQQlhJUGRUYk5BODlNSkFIR3QzVHUrV1VjT3lFU00zd0l0cVdzTzlYL2VmQStFWE5CMm5RMUthSGNuaDZsV09NRHkxTDRyNklWaGFzRmswd2J6NnoyS2UreTc4LytPeXh3ZmVOTFprMUErVjZwakdKZzlKalpwV0FuRmtNdUJDV2FpTmk1aHF1YVlyekJvWXNqVG1LQkxJblZBdVZxcW05bXF6UkxGb3dZVk1zWTJuNnd1MlpmRU1PbGlTbmZHNGx2dWlhY1k2b25WUGxVNjFwRHRBU1pCWk9GMDV1d1ZEWWNONEtqRFc1ZTB4VGFTYkN3c2svUVpvRVZlRzR5b1BtV01xWlpGUzFySHhLM1VObVlNMmlYS2lNR2NsZmhNeDlxMFIrRUNpQmVqTDhvcEU2SXF3WkJ3bUU0Tnhtc3R1VU9NdU9aRVVnZ3ZwVEZCYzhqTXhWbUJxVUU4RDFGbHB2T1UvemhLejlsbW81TFhsa3ZQUThvcTgrSk1RcHhOZ0NDdkFBTlJFV2xET25pTUpwNlNLTlhWN0xrT241Wit2dXR2cWdhSHg3RUZJY3BZTkNSeUNyT1kxNFFvWjBNR3V4SUxsREMzWjQ3TVpJUDF4RmlwcW1zR0NYdXVZUnJhaDhkTm5jMk9Ia2lDM1JJVUF2Umx6Q1ZLRXFZRmt0Z3ZwQkpGWnlXeG13UnN1b2dTV1oyTURDWllqOUF4Ri96L2szL3d3WnVnWEVZdUM2SUZONVRYQ2h3VXNIcGFnNHJSeUVoaWhTeG1KOHh2eE1GVUVpc3ErTXNhdC9MUVUzTDVLTXRZRU1td21KUHhDcnNpS1JHS0V3cUpGa2hLM2N4a05BeGJvM0JZTmFRV29Ub3B2WWI3akoreW5OcGxTMS9YOFI1ajAvQXcvMzVVaFRVQ3F4OVdscGg4cEFpZFRnY0VoYkJHWTduUlJsQ0owWUZKUWExT1J4U1laSUVMSWs0cXJyTm5wYTdYMmczVUd5STJjSVlGa2lMU2FMUEFtc0tjRnVER2pBTDF0bmlMelVvS1VMdTJFbGxncE9HNHhLWXNud3YvdU5OU3FPS1N3UW9HLzMxeDJGWVJkNDJWMnNWU2NoSk9PVTBtcG9BdFZ5ZTR5TkNaQldzdDQvNFlwaVB0YmxZQ1BaVVROa2N1a2lsSWhyQ2FLOFlSK29UT3paSVJtVkFZSjh3YkVTTnNxZEZCSHpKTTVja1NCcFJ3bkxzV21OMHNNTHNDQnlDNEw2ZFFrVTRNQ3lWbkhCc3FoaHh0UEdvWXBvdkNmTVU5NnlNS0N3SEVHb3ErMEFybEp5enVKN0w4V0xoUDg3MnNhMGNWTlZvY3RDVmRqb0FvcEJVb1MwVVZZVU53UmxORytsV3dLUUIvQlkvSUVSUEFFTmpDYkpIdW9LSU9FTnQxNmpuQStmbjlZMVZCSVVnT0NFSWhpZHJXUVJPUHlRSVBtZVRZd0pWVkZwaG9pK1dPU1lVbHhrc2xOYzhjOVpWRE9hbFlXUEJGa0NRaGpXQUloU29wU0dZV2lMdXRieE55NHJxZ3lnQlV5SXZNaFFOYVVOa29aQ3NRUGd0TzhjZk9RNzl0VDI5TER0MjN1SkFoRnNWSENaSDJMa0VEUisrQ0FSSnhFWFdTcURSQVVZQnJValBoWWJrcXlUbGRORm53eXVzNjZqcXpLaERhb1N1OHdkT0tDK0IrRVN4aWN0V29FQ0NzUjZOZzRhdmxRQTZiVlBBSkpDY3krQW5VWWFSL29xQ2EvUnFSZWkralk5R0R0RWdndTZoZURNUEtDd3V2Q3RNbzRhU0Nkcms2eXlPYUxTUWJsSkVWMExoTUwxVmdpaUNzOWtmNUdKbUZBUVVuY0tYaW1NS1pEaGpMclEvMWRWRndnTWJhM1NJN0VRWFhDc2xKeGFDYVhTYU5IZkVnL3lNQ1VwamFoSkZNZzBRWklBZ1RnSlBDNFVmaWtPQWlEZ0NJVWdEUzBScmVjZkNPTWRoU2hjVjErYXJnQTI1cjdxeU1FdUVBZVFLL2d1R09BcmdlSGVjZHEwTUh5QTdadExnaVN5QWJpcSt4d2tZaEFPUkg0Y2psUnlFSitPTTVNenlDek1Ga1dRZ1hlWDM5cGFRRXlZTXd2SElKVFJXQnIyQWdBV3hIOVFoT1ZncCtKTGJsamQ5bWVidjNvdndqY3h6ZEpiS01XWHNKYjJSaHpOYVhpNVFjY1JSbW5WMXF1VmhiQzZBUXBpY0xnQUtFQlhtY0xGN2hUVkVRWFFMZ1I1K01GbDRZYUFMRkcvU2xxRys1YW5Gd1hNbUVTU3NIREdvQ1E1aFVqSGw4cEUrSVBvUWUyQS9yRUYyV0JZcEhnZFc1ZDZhQVhwVG5WVUFBbHFGSXBaRWdiWUM2QjYrQ09xMHRLcGJsemMxbmYzLzJQeWVmN3A4WUZ3QUEiCiAgICB9LAogICAgInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRURya1k5bVVaYm1VVzBnelE3dXpzTUIxRlBra0VzdVdWNU5DMHczK3ZKQ2ZFRjlsTzZXWDdVRjVDcEtOeitjNVZ5dWVkM1YwSEplUTljRUZZN0J6cGI0bm9MSHhuVDI4OWtqalVpNmVRVUxhTUlKYlplZ1FTaFVnaXRmZFpmZGRNNHBoSkpCVVQ4YktvbC9tTTRYQmZmeVNjUGV3VDFwRWNZY1YzNWhMRG1zUlR4aU1JM1JBdzBVb2NHUTAyRW84cUZKM0tpdEhLQ0t4czdXT1dVaFpOOWdYREJORU9DaU1pY3NaeXRvRHdqOTNMMGZtcCsvZlk5VHh2dUl0VHFWYTVZNWcrWjd5ZEdFVmdWZGpKRVlnRTRXYXFORE1iOVlNQWZBKzVoMTdZZFh0QmNPQWVEdnZnRHNJd21BUlR3T2l3cStVYjZZNUlBRyt3VmpyUE9BaHhDaWlrSklaYndDd09OZTREejF1SjRRby9ncEZlOUYrV0ZrYVROMFJJeHBkWEpDSlNiNitQQ0tDQTFVN2VmeEdTZUg2RkprRHpialZCayt3L3BoUGdNVWdRMnEvMStLeE9QUmZnRkNvT0pNeVdlV2x5bVJnV040QTVxTjJpQXlSRUNkV3JlZjNLZ2RnUWpEOG9QbklxR2dtMGlwWVZMOHlpaE1VNnBZNHkzOENUczlkOHBCWGlOY2c1allxeGt6Rlc2a2NzamVVdDhBWEJjSXl4L25iSEhrRmJQVVZVUU00Z0ZWd1NxVERqMnFoL2N4cm1EVlIwRUM5S0JGV2lRaVpwVEQvOGRmYlB5Zkg0N01QbDdlMjdzNXNDQWl2eUJhS3BvWjlMbVlpalR1Y1JsNXptbEE0OTczMmxFaWR2UjNmSGw2T3pHLzNmK2VWRm94cktjL0dVekZKdUlxekRGWFFrZ3YwSGtmZEQwUnZaMzMyUnEwTWlORE1jbFRkbjhNREtvYmo2V2kxM2Y0bzU2dllIUjhQQkFUNFk5THd1RGlZd3hMaUgvVW5vbzRFLzZCNm96K24wMFBjSFliL2I3Zm5CY05qcjlpZTlQaHA2Zm9DeHB5b09jbXdLalZOS3gwd1ZqNldCWnpwaWNxeXF6YnIyNThncFdVQ3M2dENZc3dtVUF0NFFUQkdoS1llN3VUby9aMVFYdm9NeXNzYXJGeUF0NTNXcFEzSnVNSjhEb25MK3llYVloSEc1RGcvYnZzQnp5SHo5NXU1dTNCb3JUZ0tjc0hCVFZOY0ZNczh5eFZnWm5qZk1yeERwcUdDcDNERHE3alFJYnUwdkJYdkZkcG4ya3JyakRLUEFDN3k5K2x5b1ExQVZRY2t3bzVybTdtVDhtblN6YU9JM2FQTEUrQ05sS0h5Tk5vMDVwL3BLU0g0SDdmY0tXc1dLcFZ5eHRTRko5WVFoN0JqaEpOWEc5VDB2c3BrZlFhUkdGRTJoNnR3MWFiZWZ3MzhwaURacExiSUdQWXVvUnZzRjRKUVR1VHhSNFEwZmJmSGdJRXJaMDVpVEJhRXdnek9CRVRXTm85cHAxOHFpQkUwSUpaSkFqVGtoWjRtbEFKaTk0NnNycDdKK3Z3VitLSHdiMCtVTlkvSmNhU3FXUXMxYlNvamtLVFJESUJHWGFmSTErZVIzZnlkVURab1NlRVJpRXlEWGlyZnV4MnZqUTFoMGN0c3VaVE9uL2ZSTEo5ZGVMZE12R0UwanVOYlQzNVlkeGN5Tkc1WDA2TjFReHMzK0s3cEZVWXFhc0RwdFhiRWdkaldTZmJ0a0dTVk5jdlQyTjhzb1RKTk4wbG9KMXpsc3k5clhhTFpBM0dBdjlIVk1pcW9QT2trV1hVMUtxL0tuYmtxL2hMWW9EWWxzVXJhVzRPZnJ1cm40TlNtOG9YSlJRbjZHNXV2QnpPVXdJK29PMytqOHJZaC9QcmFyV2NFZWxtdmRCWkZTdjFJMUVyZm92bFBYZ3pjN3VmblVDV094S2Rjbk5OVlN6d2tYK1pEVUU1ZHV1QnZDWS9xRWx2a29NYTB1VEZYYWpkWmxHS1lvcGRKOTJTaFFONDR3emxSY2NKWW1wZ042WHFHL3JmZE81aWpPZDVxM3NaNGlyb2t3cjBmRlJ3M2xtZU1Ham1aN3hBeURGYWpWL1hjQ3VQVzBNa1cvcXFoUlpLcWJYWG1XMkx3dlpmM2hOSVBGc1RybXVRQlIvcDNFK2w1VG9sa2pYNlhMdGVnTGpqQ01TM05HcjU4anp2cHp5N3RMb2RtVzc0cjZZVmZGVVN6ZkcxWW5GSkhJTnFWaHZUR3F1NEs2MVVhZUQrNUNrcFpmaGFKRUxrOEp0d2xWSWtpcTFYR3VzeG04T21LUlQ3QitxSFQ4eWsyZzdnNXRHUUIrT1IxTHcwT1RmbG5udjBhSlRjRlZjbCt6VUxQdEhsWm42OXFYQlhlRmt6dkEzYTRmRElQUTYvdmJhVjhjUnJhMG8zRW8wUGY2QjhBU3dpMnNESUtxRzE0dW90VjcwV2ZiVFVsWVh6OXRwTHZaYUFCeDlyWS9wZkRSUmFtY1cxcENGazhmRTVJaHM4bnJnNWUzK2RycmpUUXFXR2llZDlwVzdsK1ZtMDF6ajVQMXo5ZjVncWk3NDFkNDRoR1dHL3R0SUxWQlZJR2pHaDNHbXZvQ2wwSHdUU2cyRG1PL2RuVGJBdmI3eHV2ZWRsbzNWYnJXMktyblc0d3pqUFl4bHpYSlc3QndSVmxEK0d4ZHY2OUJMUjhtTGxmempWdlAvVWNsL0E5ckpOVkpmNnN1MG5oc201eHJtOUwvaHlxR3FXb1VhdGJPQkRkV3N5THBLNm9hUzNUT0lscjdsdGhXOXFyNDFjZlZUam4yVmovbzZsK3BkNTUzdmdEblQrN0xUQ0FBQUE9PSIKICAgIH0sCiAgICAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIxMjA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxY1c1T2JPQlorNzEvUnhlc0dHekJnNkgyWjNzNWxVdHNYVjZjelU3TmJLWmNRd2xZYUVDdUVFMCtxLy90S0F0dGNaQnYzcHBQWkt1WmhrbGhIUjBmbkhKMkw5QlhmenM3UE5SREhjN2hFOERHZlp5RFB0WXR6Umd2MFNneVJJRWQwaGNJNVlQeG56VElzVnpjTjNUUWZEUC9Dbmx6WTFzaHpUTU56LzJZWUY0YWh5VWtwWUhpRk9FdVFMbERJNTBVZ3prdCtHU1VNUWNZWmhvQ0JBT1JvVGhGbzB1UUlVc1M2djRjb2k4azZRU21iTDFDS0tGK0ZwSnpDY3VTd29GL3pXVm1NSVJDYk1DdHVJT2JMeFVLaUhRYysvSTJQaXMxbitEZEU4NUlWLzFlV2oxZW0zQWNmZk1TcGtFRjd2WnRZalNTSUFiR0ZMU1BCS2swSmsxTGx0Wi9GQUYwUUdJN0VIMXdCbjBlWWpCa0ZrSE5mNkZndWdOT0kwQVNGZW9nZ0ZzSmNTRWwyNjE1MEtNYWRYeXJaNUpLZHdSRWtSVXlTWUpRVGlFRThCbUdDODlxMktlRm0vdnY1Kzl1M3IvWGZaN3BoR05OeldERCtLOVVxdGs4Yi90ekNDVktLclRWSThnekFZM1JGcVFEZ2VCNHlEYUQ3Um1qcHR1ZE5kSC9xSU4wTlF5L3dJZ1NCYjVWeVZGSm9lWVpnWGZ0OEJ3dUs4dncxOTRNWXArZ0RnaVFOaFNWY3c5Z3UxL2FQNnNlVmxPcFhuRE5DMTljNHdjSkR6TjIwSE1YY2JRbHQyalVCREM2dlFZRGlwc0dsVzJXanh5SkFORVVNNWNMaSszVzJuZmZVVVhUTy9ZU2h4YnE1TGx0bmt0VzlPQ2w4dkdzZ2hwSXNGaU5OZWJ0T2U5QnhYOHlUR3NMS1ZXS1ZGcFY2aENUSlNGcWVZV2s1OUVWN2RXeFNEK1h2MU4rUXJlMW41UUo4T3drcFV2YUJSMGNNMFNXRTRsOFA1QkdsOVppMW5jQmRrUUh1bEZSczhkOE5hWnNiNXJRb1hYV0lWSVNOa3lpMFBmL25teit1TG1kdjV1OC9mUGo0NXI2bGxXckNDc1NGbkxGa0xNc3Z4dU5IMkRLbzFwbjI5T29ad2x6ZDNUNWN2cjk5Y3kvKzl2Yjl1eVBpY0x1bUVWNFVaVmdmVTY1T25LRFI1N3hwbzdhbHl2OCt0WGxyT0FFTHlaZmJlNEUrazdiVFZ2L3NCdEZmOGlXd0hQZGk2azdneExVTkMzb0Jta0pvUXpNSVRlQ2FyalhoZjBhUmI1cHU2RmlXYlhyVHFXMDVnZTJBcVdGNkVCbzhlZ0ZOTGRLc2lPTVo0U0ZvTFJVVjNSSTI0MUZybDFucVo0TG5ySlJIdEJrbEFlb2NEVWtTQVJ3WEZEMHNPWThsaVVVb25YVDFMRzM5RGpFbER4RTZBVnRLR3l4NXNtVExQOVdteWdobEc4ZFJVK1M4aWlnOTROZUhoMWt2UDlJeVJERUpkOEY2RjNUcmpBc0l1U0xxMnpRVlpNSmpTTUYyekt5ekl3TDB5R1NOL2VmOVQrYjJ5TTlLdlhtR1o3dzZkR3IyNjFWVVRRU1NXRkE5WE0yZWYwQVZNcGtIWmZwQzZHTk1lQ0gyVExtT25sTlJ0ZUhCeVYvV3lUbERVbERPWEszZldOUTcrVDY5d2F3UW0zVU1JMUVySkVFSkw1cGtlK0M0TjdpZlJpajZUNEh5NDZzZVhkTzFsVXNlMVFudk1ncUsyZnFLSHduMFZlMDFvak1pWDJZVXIzQ01GdWhORGtHODZUbzZPWDRqT01oQWdHUE1NTnE3dVpDU1RCbEk1T2psOWJXbUdQblVVNjhndkV2ajlUMGg3QzJYT2wvbnZCYXNXcnJqU21HQXNpSTc3U3lhMW5BWVR6aU1ETkVFcDlLTmJ2Z0tvaWJZS0NORXEzRnRXSS9KUXVzemYxdFBDSXQzWjZ4SVhDVG9SbFNvSitRdldkL3VSQk50dzhGVUlTbWVuWm1hcS9IcWIzdzhJemVXcndyRzd5VUJTN0xENndtQzc3UldvL0k5dkdvUDBrMEVVSi81NThxNEFsUmFwYnljeWJ2V0dXZWxGeDRXbndkVTNnWCtwZVFHUllqWlliRVBrUHdzcVhmdDdXSFJkM1E2eVBDUDNNT21kTlFwV3VDYzBTT3UwWlA4WittN3FsZjJPZTltRnpsbVROenFIU0UvdW91elE3bS9QdHFvcUxVd3pYZko0Q291aEFSdk1jMmJ6aXZxUVpIb2Q2U1g4UmV3Ym5xU1RLMWh3WS9yN1NiQW93Z1VNZE8zQXkzNkl3V1ZGdVh2S0NreW1YRU5vNVZOTjZOWDh0SjRKOWxkS2lxWkc1ekx1N2IyUlErMzJlVkJycExnbGtnbXRYdnROc1hISE5FOUhQaTJ4STBUTDRraWtWeTc5Y3p1TnE3TVFLOUxOV2w3VGZiVVVsdjlCbW5QblZhTGFtTVJGV1d0UEhoSEFVU3pWclZqT3czeXNqYm9jU3ZWU1BQZDNsaGNvWE52Uzlsdmt1RlZESENpcmlDaEdMcmQxM2JycWpLaWVSeGFSN3g3ZjVaa2JQMGFVL1h5ZkRGY0NORzBtN0tIVUJWLytFKzB1UVRXVEVWUHMvOGVRVm1HL0tVbDdoUXl4NlF0YTVBYmtLbkZyY0xFRFFrRmU4dFhkUWQ3YjEzMFNuKzZDeTNMOUtaZWFEaG0vNzAweTZPVGRuV2tSQkYzSFovbHkxV3ZYWHVleWtqYkpselYrWDFUZDRPNThvWlpUWHhlbGlvb0xWOWRvaGg5MVVIQmxzb2tWSHJlMXd5WDJ0cEZpRW50dldSdjQ4YWtJRXFxcDdNK3YzMzZuODc0NGNxc2VrSjh2cVV3NzVsUHROTWpXdS8wb2xiZmNlVXAxS1R5STdtNy9TRzBWTXAzMGUrUjh2SC81VlNvM1B3bHZQeFYveDBjanFJOS9QQVE5NlpQUWpDQ2xPME5BbzBkVjdSN1NaLzJqSHphcTh1NksrbVUxMkg2b1RWK1JQQjQwUVRXN1dONlo2OGpVL3VlMmVNOXlFK01qekRtNlluM0VLVUFSK0pray9qWjhaSms0dVNEK01DdDdiR1EydFhwWVE4OFUvbnE5bm4vYlBOL2FWSis1dElRODdwM0FLZ01BSlVCb0RJQVZBYUF5Z0JRR1FBcXczUGhBRkFaQUNvRFFHVUFxQXdBbFFHZ01nQlVCb0RLQUZBWkFDb0RRR1VBcUF3QWxRR2dNZ0JVQm9ES0FGQVpBQ29EUUdVQXFBd0FsUUdnTWdCVUJvREtBRkFaQUNvdkFsQ3B2cUVTb2d5bElVL2U5WnZqeWxtVGhyTzJRQ3RidklwOFpFd0tCZ0xacWRTN25TMlU1V3JyL05zaEpTemdBQ2pnV1hpVzhYYmhQbEFXZFIzWTZGeGVCcGRRZi9rL3NVcHR6ZXdCZnRuQlgzekROQ2VoRmVxT0hmcTZqVHhMRDh4d292dEdZUHNvUUtFVk9GMlVCd1FwU1RHdldPWG5mdWJseTdWZzV5Rm91MVpvV2hONzZ0aGU1Qmd1UWlpSVREU0I0aTE3NnRxZVlmclFBMU52NGhsMmFQZ0JoRk0vTUNMTEFwSGJSTnBrSzlqUCtUWStObE4yZ3ovWTM1UkM5UEs5VG92N2ZYMnR3VGxidFpBcUFkZWhMbTRjWWxTV1ZkcTZkY2VubU1PTG9GQVAxcnA0MzZWRU5qQ3FpV1d6UHdxNC9sc2NCTzRKTEpBdUJKY2JMRGxRa01JbG9vSWlKdHpQZEJtWlZUeGI3Q1JjaXVzckxiT0laazM4a1d1TkxNTVorZFpvU1hJMmt2ZEZTSDcvaW83U1ZqTFl3L1lVS1pWSE9zSThEL0JldVlQRDBab3JjWmZYcTQ5cE5UckpUNzNDUTh1QlRnOEhvV2NFbGhPWXVtbWJRTGR0TTlBRHJqdmQ5eUpnUmFIdkJWUFlEUWNkcEpJRzVDT1dTT1dkL2Q0akVQNU9lU0svRTkyaWNvUDdubzMzUDk1cWxZWGtMY1E3M0FOY1ZkTHpzNW5ubSt5cjlMVHRJMWJwVDdXbnpRN05obyt3NFVtS2JBZTllYllFdVdUMUQzSEF0RzNDRm9Gb2w2RXJtOW0rNzdsZVpPa0lCRkMzdzhqV0FacVlldUQ1RURsZU9IV01EWXlpNm5rYTZNV3E1Q2tocXVNWVJ3aXVZZTAxVHlBWHljZjc2enAwNjFSczAyaFJhNVkxeHJlQjJIMkZmWlQxbHU4R0JuUkR6ek9SNXppaEdacU9aeGdUL2hQeURSUk5mTU55TGRRQ1luTG5ZdFdOWTMxSGZRR2daUVJvSU5KMlI3RXFSa2Y1Q2pZWGxRZzh3SnJmdnhQdnp2STl1UzRIZHkzMndFTUVMK0g0dWcrNGRJNzZwL2FtRjRaeFlWdi9xc25FRTFHUnkyZGx5Vy9kZ3A2dTAwWkdGT0VhVUJRK2tPYnhVMnZtdEpCd3NvWTZSNnp0YS8zODdVVjg3cnY0blJvcFM1L0RUMkh3dTRMZFJSK0VnVHRWdXJEQ1BLVHJPUy8vNUtjY3BmZHRQK2E0clFIbUpJM1hjd24zNDBWOUxBdWRMVlhaMDh4REhFVno5RlZlMkJxZGdWMGxoeVo4SjdadDhZQUZUV2phUG9pQ3lJYWU3N3RSNEZ1Mk5RWElOcEh0Mm43Z1Qyd0liTi94ZlRPWWVvNFY4TDJYbjR3VU9CWUlaRjh3aDFreEY3Zkp0bEZlZ0d5aU9lOUFOa01UMnkySGF2RGpHdGo0NmV5L2gvamlKdGhTQUFBPSIKICAgIH0sCiAgICAicm9sbGJhY2stcHJlZmxpZ2h0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNGMzYzMxNjYyMDU4MDhlODEzMjZjY2RhZTFiNTZhZmVmNzU3YjBjZWI0ZTZjOTZhMTdiZjM4NDMxN2FlZWU0YSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODcyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTdWVlRXL2pOaEM5KzFjRXZtNWxVeFFsaS80RmV5aXdRSnBlZWhGRzVOQm1Rb21xU0FVMUZ2bnZIY3JmU1Jab0YrMU41TXk4ZVk4Y1BYNWZQRHdzd2JsRzdWRzloR2FBRUpiYmh6aE8rRXNLK1RiZytJcTZnVWpiUzg1NGxlVXN5L01uSnJlaTJBcStxc3VjMWRVWHhyYU1MZWVpSHFKOVJZS0Vmb2VhNmd5NGNNUWJSaDlSUlFMVUVLR0ZnTTJJY0o4VFVJMFlQKzVySEp3L2ROakhab2M5anRURjk1VEJ5em1jOGc5VU5UaXJJSW5JNTIwWWQ1NFczK21iVnBOTm1Fc2haVjNWaG1jSXJjcUVOaUlETFBLc3JhWENzdGFia3VsWlM2TGpwMUhoQlNLSmdMaFBLRWRDYTJjTnFvTnllS3FZdVF6Kzk4ZGZVOUkreGlGczEydmp4eDArKzVYeWsvTmR1d3BlV1hEcjAzSnRlMHJvVUdjYWxRMGtiTFd6OFFvWVNRYkdSM3lkWXdsWHlhcGxxdEoxbldOZGxqclhlVmt6VnRBV1NvYW1rSFJYSFBseWhuZzdpZEVZb3UzUEozZFIxRU9IWVlCWjV2SURsU3VOZVJqR1cxa3ZVNHRqanhIRFNxT0J5Y1ZWZUZYM1RXR0t2b040UHdxMHYwZHc4MGxlZURnSThXbUVQdGpFOE1sMitIN3FOalJsTkhWLzNIQ0tFS2QwMzh1dk05N2h2bms0OU9xMmhmTGRBQ1BxSjMreis4T1QrVGVuOHhNbmRFUDA4MW43Wi9QMnY4emNmekozczhERk82RkU5U2Z3UHJud2IxUDhabjVMRjd3NE4zbzdXVWk2aFVhUFpBaFRQN3ZhUEgwWFh3UGQyWkFvTkw1M2g4WjJzTU5HbzR0d202V2NUVzZqclRFTi9tV1RCYklQZ2JBSFhsYUpEaGFrUkFndWE2TnlsUXNKcGpWQzFWSldwcFZjOEEyZ3lGRlVRcmF5RUFxRUxLWE0yMDFkOHBhMEg5MlQzTmlyWkk2T0xIU1ltbzZnQldQc1pISi9UalNvNUovblVDR3FZeWhFY2tUY0hSS1R4MlNodERvaW1va01ma1NGZG9nM2RGbGUxeHNwZFZGeUZGcElYU3JnVWxlWXk4MUdjTTA0eWdwRXk5cUNza3h1eEtZbS9pMHZ1ZVRZbHArQW55ZDE5TTYxb0Y2eVlVVGo3RzRmczVTM2VnNm4veVU5Qk0vMEVLUWJvQlFjc1ZmWUdPc3dYTTA2MFA5TVNsMTZUSzdtbi9DUGtTeEZzbXZrQ244dHBpajJtdER0akh5dVBENVIyVzMwcmxwQnJ5MDlVZThiWDRTOTc1cEdiL0cyK0J2ZUJ2bWhVQWNBQUE9PSIKICAgIH0sCiAgICAicnVudGltZS1yZWNlaXB0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNjQ0MjY3NmRjZmQ5NDFmMGEwNWE0Y2I3OWEwMmRlYTgzOWZjZDMzMmQ4MmIyMTU0YzE1Y2Y2ZGI2OGRlNTg4OSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MDgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMldTeTQ3YklCU0c5M2tLSzl0MldpNEdUSmJkZDllOWRlQWNFalEyUkJobkpxcjY3c1hqempSVkpVdTIwWDg1SC9EejBIWEhRcmU0eEp5T3ArNW9YZStjVUNpRjBuWUFVcjBrUXdNTUlMMVVWcURqUVEzQkh6OXZ6dXZxcHJoY0NFZU1aMXJxbHJCY29IbFBRYWxoQ0wzVnpTQzBRV1k4ZWh1VVlBUHBJSUxvZVRDOU05SjZJYTNvSFpPR0NTVFBKYWkydEJmY3FNUVFXMzZoYzF4cXVZOCtweERQLy9kcElSeDVMOG1oTmQ1cDdUUVpMM1dReWdVck9aaVdqYmJYdmROcVVKd0w2Ym4zZzdkMlFLUGMza2V2NU5mYStxWU11R0VCelRtTkVSL0pCREZERW5HUTFpa0ZBUlVxYmtRdndXZ0ZRbHV0MnZaUlQ5b29GaFFiak9HQVNtbUhHaG5mbStJTVp4cVh2QlpQV3pqNHVzTFVRY3JwUHVkMTZkN1JPNlRGbDNpdHVYeWQ0RTZsZytJdjhVYmRQbU43ZVppbSt4N3JJV0ZFcURUdUJlOUFyYUtXbGQ0MGllcExMczliYTJ1ajNWZ0ljTXhwdW84bDUvb29uOXNXbFB1bTVtTDRIci85S2JxdVMxdmorOCtGL0RPVkJ4eDZiVURkT2RibGtsKzZhMHlKME9kNWpuVzNKNmdOWWJ5V2ZJdlluSFUvelFEVFFvK0NiZENOYy9RWFNPYzNqcitheGdrT0ZocHpHUUhubUxhUGowaGZDQ25WMk9UL3VEN3UxRnI5TnFwZ1FqOXg5c1Q1RDJaUHNqM21pMkpDR1BXSnNSTmp4OE92dzIvTVFnSVdLQU1BQUE9PSIKICAgIH0sCiAgICAic2Nhbi1yZWNlaXB0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYWFhYTkxMDYxYmIwMzZlNmQyMjhiMWMxYmQ0MzMzNTc4ZGM5NDhjYjJiYjVhYzhiYTI2OTQyOTEyMWU3MzIxYSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0NTM4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxVnlXN2JNQkM5NXlzQ1h4dEtKTFZTcHhib3VhZTJoeFNGd1RWbVlva3FTVGxPaS94N0tjbHdMR2RCa3lib29RSU0wSHA4TTV3WjhzMzhPams5WFRoT20wYmFSWFc2b0Q4NjZpU1B2ZFdibS9kdVJYR1dWemxtU09hWkxNdWNNSjZ5bE9lVXBvcGlobEZHc2tEaEJjY3FoNmlrUkJBcWNzU3BLZ3RVRmh5Um5Dek8rbE1FVzQ3KytuTmd3aWxuS1V3enpDVXJVcXFFNGhRV21MTVNxNExJY0ZncUZPVVE1bExobElZUFFRVktFZ1lWUWNYZVpTMDlGZFRUNFBSWGdBTDRWVnFuVFJNQWZEWWluK1RXZjJrRFMvWkhZNGh6Z0NCQTZETXFxNHhVR1l6S2trQUVzd0tmTDNZMkkxOTg4Qk1UZUd4Q2NMSTMrV2l1bTdXaDRnRXJuRlFKRHI4b0tTRk1FcFNnODBVd3VoMnljTFNXUzJXbFd5MURRc3o0MVZMWDlFSzY0TVRiVGc2a3hpeGQxN2FCdFV0dXYyTWxOMWIwNUc5REhHTVp3Z2ExZktVM1E4NHNYQ29ZbkVhZTJsM0FnYUtNcmVrUTdLVUxYdmU0QzZ5US9iTHovS2hra0ZSSldTVnBWQlJwWHVCM0VGWVEzaG5LcmZaTGJrUi9LdHlqM05RMWJjUSt4QUVVaGwvSnUxZ0NBZ0EzamRJWGgxanM2emJXalJLZzdXeHJRaHB0eDliYXJhUUFHMm0xMHB6NlVKRlkxcTIvQWFQVEIvd0FzRExPSHlKZG83ZFZITWNiYW1QYk5mRm9Hcm13SE5MQzF0U1ByYWZmamZUWHhrNXNHdFBJbzhUYXpoMGlhTHBkeTlyWW13bGhHdjNtNFpyOFhHdDJVQkRDVXNad0pxbzRYSjhPNnZFdmNOSjNBeERVdVpKVlBDeUhWbS9YSDNZSERJOTBXaHpkdE4wa2tYMTI4U1B2ZWl4NUh6c1FlZ0xmendnQWQ2VmJJQmpveGhaeGYrK1NidWlqaExGM1RpNTMwNjJQM3N4T1p3ZllSRzhEeDNUKzZUeUhtZ1BWcmRmUllMMGpmaC9XMjdPL0VEKy80ZXZ3Wk1YMkdSMmdqTW9zeDFrNmQ0QzVBOHdkNEFVZDRMN28vcXdOT0dicWlJdnQ4NXJBYXc1L0VoV1lGS1NjcFQ5TC94OUsveitZK3k4ZCthODk3Vk1ZNVVVRzAxbnlzK1JueWIvOW9IOXF4cC8wLzI1UGZnTVUrSXZSdWhFQUFBPT0iCiAgICB9LAogICAgInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRURya1k5bVVaYm1VVzBnelE3dXpzTUIxRlBra0VzdVdWNU5DMHczK3ZKQ2ZFRjlsTzZXWDdVRjVDcEtOeitjNVZ5dWVkM1YwSEplUTljRUZZN0J6cGI0bm9MSHhuVDI4OWtqalVpNmVRVUxhTUlKYlplZ1FTaFVnaXRmZFpmZGRNNHBoSkpCVVQ4YktvbC9tTTRYQmZmeVNjUGV3VDFwRWNZY1YzNWhMRG1zUlR4aU1JM1JBdzBVb2NHUTAyRW84cUZKM0tpdEhLQ0t4czdXT1dVaFpOOWdYREJORU9DaU1pY3NaeXRvRHdqOTNMMGZtcCsvZlk5VHh2dUl0VHFWYTVZNWcrWjd5ZEdFVmdWZGpKRVlnRTRXYXFORE1iOVlNQWZBKzVoMTdZZFh0QmNPQWVEdnZnRHNJd21BUlR3T2l3cStVYjZZNUlBRyt3VmpyUE9BaHhDaWlrSklaYndDd09OZTREejF1SjRRby9ncEZlOUYrV0ZrYVROMFJJeHBkWEpDSlNiNitQQ0tDQTFVN2VmeEdTZUg2RkprRHpialZCayt3L3BoUGdNVWdRMnEvMStLeE9QUmZnRkNvT0pNeVdlV2x5bVJnV040QTVxTjJpQXlSRUNkV3JlZjNLZ2RnUWpEOG9QbklxR2dtMGlwWVZMOHlpaE1VNnBZNHkzOENUczlkOHBCWGlOY2c1allxeGt6Rlc2a2NzamVVdDhBWEJjSXl4L25iSEhrRmJQVVZVUU00Z0ZWd1NxVERqMnFoL2N4cm1EVlIwRUM5S0JGV2lRaVpwVEQvOGRmYlB5Zkg0N01QbDdlMjdzNXNDQWl2eUJhS3BvWjlMbVlpalR1Y1JsNXptbEE0OTczMmxFaWR2UjNmSGw2T3pHLzNmK2VWRm94cktjL0dVekZKdUlxekRGWFFrZ3YwSGtmZEQwUnZaMzMyUnEwTWlORE1jbFRkbjhNREtvYmo2V2kxM2Y0bzU2dllIUjhQQkFUNFk5THd1RGlZd3hMaUgvVW5vbzRFLzZCNm96K24wMFBjSFliL2I3Zm5CY05qcjlpZTlQaHA2Zm9DeHB5b09jbXdLalZOS3gwd1ZqNldCWnpwaWNxeXF6YnIyNThncFdVQ3M2dENZc3dtVUF0NFFUQkdoS1llN3VUby9aMVFYdm9NeXNzYXJGeUF0NTNXcFEzSnVNSjhEb25MK3llYVloSEc1RGcvYnZzQnp5SHo5NXU1dTNCb3JUZ0tjc0hCVFZOY0ZNczh5eFZnWm5qZk1yeERwcUdDcDNERHE3alFJYnUwdkJYdkZkcG4ya3JyakRLUEFDN3k5K2x5b1ExQVZRY2t3bzVybTdtVDhtblN6YU9JM2FQTEUrQ05sS0h5Tk5vMDVwL3BLU0g0SDdmY0tXc1dLcFZ5eHRTRko5WVFoN0JqaEpOWEc5VDB2c3BrZlFhUkdGRTJoNnR3MWFiZWZ3MzhwaURacExiSUdQWXVvUnZzRjRKUVR1VHhSNFEwZmJmSGdJRXJaMDVpVEJhRXdnek9CRVRXTm85cHAxOHFpQkUwSUpaSkFqVGtoWjRtbEFKaTk0NnNycDdKK3Z3VitLSHdiMCtVTlkvSmNhU3FXUXMxYlNvamtLVFJESUJHWGFmSTErZVIzZnlkVURab1NlRVJpRXlEWGlyZnV4MnZqUTFoMGN0c3VaVE9uL2ZSTEo5ZGVMZE12R0UwanVOYlQzNVlkeGN5Tkc1WDA2TjFReHMzK0s3cEZVWXFhc0RwdFhiRWdkaldTZmJ0a0dTVk5jdlQyTjhzb1RKTk4wbG9KMXpsc3k5clhhTFpBM0dBdjlIVk1pcW9QT2trV1hVMUtxL0tuYmtxL2hMWW9EWWxzVXJhVzRPZnJ1cm40TlNtOG9YSlJRbjZHNXV2QnpPVXdJK29PMytqOHJZaC9QcmFyV2NFZWxtdmRCWkZTdjFJMUVyZm92bFBYZ3pjN3VmblVDV094S2Rjbk5OVlN6d2tYK1pEVUU1ZHV1QnZDWS9xRWx2a29NYTB1VEZYYWpkWmxHS1lvcGRKOTJTaFFONDR3emxSY2NKWW1wZ042WHFHL3JmZE81aWpPZDVxM3NaNGlyb2t3cjBmRlJ3M2xtZU1Ham1aN3hBeURGYWpWL1hjQ3VQVzBNa1cvcXFoUlpLcWJYWG1XMkx3dlpmM2hOSVBGc1RybXVRQlIvcDNFK2w1VG9sa2pYNlhMdGVnTGpqQ01TM05HcjU4anp2cHp5N3RMb2RtVzc0cjZZVmZGVVN6ZkcxWW5GSkhJTnFWaHZUR3F1NEs2MVVhZUQrNUNrcFpmaGFKRUxrOEp0d2xWSWtpcTFYR3VzeG04T21LUlQ3QitxSFQ4eWsyZzdnNXRHUUIrT1IxTHcwT1RmbG5udjBhSlRjRlZjbCt6VUxQdEhsWm42OXFYQlhlRmt6dkEzYTRmRElQUTYvdmJhVjhjUnJhMG8zRW8wUGY2QjhBU3dpMnNESUtxRzE0dW90VjcwV2ZiVFVsWVh6OXRwTHZaYUFCeDlyWS9wZkRSUmFtY1cxcENGazhmRTVJaHM4bnJnNWUzK2RycmpUUXFXR2llZDlwVzdsK1ZtMDF6ajVQMXo5ZjVncWk3NDFkNDRoR1dHL3R0SUxWQlZJR2pHaDNHbXZvQ2wwSHdUU2cyRG1PL2RuVGJBdmI3eHV2ZWRsbzNWYnJXMktyblc0d3pqUFl4bHpYSlc3QndSVmxEK0d4ZHY2OUJMUjhtTGxmempWdlAvVWNsL0E5ckpOVkpmNnN1MG5oc201eHJtOUwvaHlxR3FXb1VhdGJPQkRkV3N5THBLNm9hUzNUT0lscjdsdGhXOXFyNDFjZlZUam4yVmovbzZsK3BkNTUzdmdEblQrN0xUQ0FBQUE9PSIKICAgIH0sCiAgICAic2VhbGVkLW5hdGl2ZS1kZXBlbmRlbmNpZXMuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIwNDIzMjdhMDM2ZWQyNTRjZjk1ZGJlYjBjMDU2YWMyNWIwM2E2YTg0NGI5NWEzMzJjOTkyZGYyOTQzNjkxMzY5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NDEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNzFVeTI3Yk1CQzg1eXNNblV0Wm9pVkxTbTlOa2FLSHBFRVB5YUVvQWo1V05odUpWRW5LUUJyazM3dVVaU2QrSUk5RGV4S3czSjJkblozVnc4bGtFZ21qYTdWb1dSZWRUaDR3Z0NIV3FXdXdUaG1Oc1dpVlJoL1djZFcydldlOEFReDcyOE1ZdmxOYWhzU3pBZWtDa2NhSEZqeVR6TE10Y3NEVzJuam1FZHM5QzRjSHV6QkN4dUhUV2ZNclZtYnFMUk1JdmlCcXdGZTZOcllGU1NRSUZkaWRUcmN0VHc4ZXB3Y1JZbnZ0VlF0a0xpaE55NktVU2I2WmJUM2Zma1VzVE4rWWxzZk9DTVdhS1pPdGNodGRXSWM4VnlBL1RyNWVubjhtTjFja1NaSmlJbnFQVVJ1TnNJOGIvRWl6Rm82TzhUS3ZvYzUxVEJ3dmZzcnIxeXBWU1pyT0pKVWt6MlJGTWlncDRhbWNrU3JoV1FVY0pPWDVtdHhJTFJKTUc2MEVhMjdEc203ZGt0RjhIcUJLRU5tY3lwVE9zaUxQeWpwUDVnREE2eFJtb2hBaUsrWlptYVNWS0ZsUnpzb2trMG5GaFNncW50U1Vzbm9lMmd4Tm9tNGxYcmZYeGtkWDRkRjUwUDdhTkgwTFp3MVQ3Zi96MU5IMmIvTFh3T3RmK2VrWmJyZUs3M29PVm9NSEY0YmlxQndScHUwYWpBeHozWU43dWNMMFdNTHZzVXA3YTVvR094eVdyUVlCWW82YTc5VTdieXhiQUFtVWg5SFc5Wlpwc1FRYk1ocURqaUlkODhzamlIdGcwSUJBNGtRYk9iaWN6cXA0VG1PYTVIRkY0NlZ4UG5ZZ2Vnc09MR29SWStYcm9POWhlSENzdGRLc1VYL1FDbGowNDZuVmJnKzBkY0QzeUQ0c2NVejcrWWFUMzdIS2UwOWNsZ21uT1U5Sm1xV01aRm5LQ1VldFNGWFdqTmF5S25raGRrL2NkU0IyTGtZSWNPNEM1ZDZiN3pzd2VXT1ZoMjhhMlJ3TWhCc3d2Uld3ZDJjV2Z2ZmcvRzQwdEYzdklIQk92NmhvKy9SNG9QZVlpYmZtM09XbzJoRUhqYXUrR0gxeXJocHc5M2lyN1g3R0JpTnM2QjF5UGY5aDNYWkw1Z2FRVCtGWW9wUEhrNzlxRkVnb01RY0FBQT09IgogICAgfSwKICAgICJzb3VyY2UtY29tbWl0LXByb29mLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjA4MTFkYTJkM2JkNTkzODczM2YwMDc4ZTVmZWM4ZTE5YTZkOTc1MmM0Mjc3YjgwYmZlOTgzN2VkNzJjNmEzYiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMzksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMTJPd1c2RU1BeEU3M3dGNHJ3SElEWTIvWldxaXB6WUtaRUtyQWd0V2xYOTk4Skt2ZlQ2TlBObXZxdTZiamI3eWlXdlMvTlNOMk9BRUhwVTErTXdzaGlDTXpJV0ZoY2RqcjJHTGlHbjJOeittbmFZK2xtV25LenN2a3h5Tmk4VDlTQUNSR1NoaXp6U29EeXdZY0lXZ0Z5Q01PZ3A2cHdTdHNva2xnUWpLMFpwQ2NqK0w5eGxuOHJwSlhqeU9aZFo5ampaeFY3Zm5tdzlGdHY4WnFKK1hUNGUvajFmZjlialRPemJwMVUvMVMvZFczMjc3d0FBQUE9PSIKICAgIH0sCiAgICAic3FsaXRlX3JlYWRvbmx5LnB5IjogewogICAgICAic2hhMjU2IjogIjkwOTNjNjRmN2YwZTM5YjI0OWRhOWZlZmRmNWFhZjRlNDI1OGJjMzFlN2EyN2ZkODg4NDc5Y2UzMjlhMjA1MDkiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDYxMCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E1VlliVy9iTmhEKzdsL0JaY0FrWmJMeXNxYkFraHBEbHFWWmdlWmxTYnRoQ0FLQkZrODJGMGwwU1NxTlcvUy83NDRTWmZtbGFlTXZOdC91am5mUFBYZjAxdGJXbFlhaG1rSEZURGFGa3UvSXlzSkVTenZmeVZSZFdUYlRTdVZIekZoUnlERlRWVEdQV1FVUG9GbW1LbU4xblZuRGJxelNrR3h0YlExa09WUGFNcTRuTTY0TkRIS3RTdHBwNGRHU2dIWTlLNVNSMWNSdm4zSXp4VlUvVk1iLzB1Qi9HY3V0Ly8yZlVWVWplY2J0dENmMkNvZmRnUStGdFBETFlEQVFrRE5abVJsa050WEFCVjBpcEpNeDI0NVpTcmFBU0UzRloyYXE3T2cxTHd4RWh3T0dIOXJGUms2dU94RzVXWm16U2xtM21FaVQ1cktBTUdKS2R6Tm1YaGF5dWc5YktmVFJYQnBnZi9PaWhsT3RsUTREZUpUR29oTlFWdFVlUUcvTEIyNkJDVzc1bU9NQkRSOXFxVUVFamVaYVN6VEhxZEZnVlBHQWloTnVVcHhIQzM1bXdXK2xFakRTS3NCQkdQd2t5N0pHU1FXTTlnSXllL1d5RFBDdUxHaWwvK2lkbHB5b3FrSjNTVlg1NExHU1Yzd0NKU0Ftb0JLR1djMHJ3OTBlYzhTa1pVS0JjWDV4T2hJbjhhTkUvN1hCRHIzd3JCRWVvdEV4M1dqMFR0Y1FNeXRMVUxVZEhVUVI0NGFKOGNKNVlwekFJMlMxaFRDNHVqNCtPejltSDJyUTg1UkNPYnE4YU8xZjNmcjc2ZG1iL2hxaTF0Q1ZScHNFMWdaMDJ1NElvaVFIbTAxVmhmNjkzYjNySktBTHZaQWZSdXhnWWVIbUVNOThjblh4bEkyTG1tUTdPTUw0NXFpWWxYS2l1WFdhKzdvMm1ObmxaNG9pc250dktTOEtCQURhZEJzRzZqNklvN3R2MlVhWk1DVC9MVVF5SjdLMVNmUk1LV1FPMlR3ckFGMzN1ZUlsSEM2WmRuUDY5dlRrSFR1NWZIL3hMdHlPMk92cnkzTkdDSFRRKzVvdmx6NDVaZzhKanBzemFCTUx5Y1pNYVdHQ21BV2RDYW1mak9MTm9qWjlNTnNlRUxrcmt0cTU1d25DY0FwRTg3SWtQeGxGWHhZWkQ2WXVMSGtzYU1MZG9ldlFnNmd2QTJlNzM1c01DakEzeHVvUnR3bUp5YlBCLzBTUkVDOUhvVG5FenE0djMxK3gzLzl0OXFDWkd6V1llbHhLUTRhWlo2cnBuZnhPWFIzb1VKTkRMSE9JZEJtZFl0NmtsRGU0MW5CRFlLakNwRjNKUVhRZU1rZlVYL3FacjFWUmpIbUd4RHRvSW1CclhiV0JXQ2tFSzBUWTFnTjRwRVdhbi9MOWc1Y3RmMk5odTZSRTRaNmY4VGZLNXJJQ0VUTXNSSjh3eFVzY0Rxa1VzSTVjSGZ0Vml2MXovQlozSWJwTk1uQUNUekJkc1lLV3RVRXlOWVI0YWFhb1BDdHFJeDk2RWpMMENkSENEaGNscGdTV0RMdURBaitpNDBESGpGZkN5VFAxYklZMjJTa1ZETW9PRUgyek1KUVRWSk93QzFlNGlYQW8zMmg3UWVvOE96V2MvY2JYREhiejExdlV3eWd1aHNsSmhTR2dvTkxLbitlazNIY0NaQ1hzSUF0VkU5d2hCV1JZL0J0cHA3N0srV2tVNTJ6SzhQSkt6Qms4NEVLVndSRVI0NVIySWtjS0tBRERzT01JYWFZSUxDTHhzWGk2TW1Namt0ZEZVWExrbkZBSHQ3dkRYL2t3di92ODhzV1hZRDNBcE93Q3FlbnBRbzFsenZ1ekMwM2owOVVDVFJBckVScmswdEJpR3dTMjF3VElLbGRvZERPZkZKUWc0UkxodTlxQXM4bE4rdWJtK3ZRc3BCT0pzU21WZGRkaStOWHp5ejlPVjFhUi9YZlZ5OTFkMnVaWEt0ZFc0TXJldDJ0VjAzcFFxUzVnNk00dGNOZ0dhK1cydlNRamhXN09CWGUwY01KYTI3VExYcmxOWko2Um40Qzl3a3E2dDgrMjJkN3Uvb3Z0N2YybllqSEdwclNIN3M3QURXSHdnT3QzWVFRMUs2M0VUZ1Y1ZWNFZGxBNm16blA1NkNwUE1QeklDNktrb1ptV1FiVHN1aVo2SG52SVI4MFZzZHcxRXFLbDNYaHBaUkxYc1JXdTR6UHJzRmlCeHlwKzF2ZmxYWHhyS1NpNjNwODA3RVYvc3J5S3c4T05wVzdkejUxald5OTJDR2lTdkErQW5sV3RDMGNqMW5qUWNZUTN4c1dhTVBwc0cvQjUwT05RYkRZN2hpSnEydEN2cklmN3RqSHREdDNiWlkyQWg3aXpUbFlxWGpKMU1TcXBNMDByczQ3NVRyeGJHVU5PUmFvanVsRVBnaDBxRzlyb1kvS0Jyb3liMjBkUTBqQlRqeGRjR1hFSW9wcUlYZEU0Y0IweVFnOTR1ZXhOQXZLNFVOakZJWTZwU0lRRkw4ZUNIN2E3RS9KWTJDWmFGTE54RUd3QW9qTXBxV2VJUWdpZHVMVzdOMXVtOE9ndjVGUGNqeW5VSzJ6N1ZHS3ZWZEdXWDF1OHRjNzE1WHZSS2J2M0tYcnZLdys4dGRjZDlSUE5TWjZqZTc3S1ZLRmI3bURTalJ4T3VoSG1XMjgwV1JvUmlKd1hRcDkvVHBJZk9FRzl2STM3YVJvdk1XVDBMTWUxcUZ4TjFhZEQ0MHBMaDFiYXNJTG03ekJoVVMzYW1BbDgzRkU5WDQxWkN5RVhPbXpMNkYyYVV2T2ZwbzQ2MHBRdWs2YUJmNE5yNHdMbC8xUklqdldrcG9mb2xWc0pCWmhNeXhrcEdLV3BVRm1hUnIyVENSY2k1ZTBScFBhaEdDTzEyL2tNUmxjT0k3NTI5TEdoSjhZOXRKMEE5MFVpZkNKYlBWLzRBd3NueXFYL0pCSlJsek1UcmtHUlRpWmlqT2xtbExicFBjeE5vNnVSaG4wZnpDeDJTdlNGbDFoMTljM2NXQ2l4a2JMOVYxdjdoRno3dzJiQ1hjdm1LSkY2cXViUG1iYUJkRTExeE54L0o5VDJEUDRIcFJPYm53SVNBQUE9IgogICAgfQogIH0KfQo=" + } + ] + }, + "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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json new file mode 100644 index 0000000..7c38280 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md new file mode 100644 index 0000000..18e3acb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md @@ -0,0 +1,25 @@ +# 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. + +Refinement 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. diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json new file mode 100644 index 0000000..153f9a4 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json @@ -0,0 +1,55 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+00:00", + "native_changed": false, + "protected_database_read": false, + "secret_read": false, + "deployment_generation": 25, + "ready_replicas": 1, + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate", + "full_receipt_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "full_receipt_path": "native-preflight-full.json", + "projection_reference_files": { + "sealed_live_deployment": "sealed-live-deployment.json", + "sealed_dependencies": "sealed-native-dependencies.json", + "candidate_deployment": "candidate-deployment.json" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py new file mode 100644 index 0000000..41a876c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py @@ -0,0 +1,20 @@ +"""Run only inside existing admitted StateHub Pod AFTER verified candidate Ready. + +The fixed existing dispatcher loads its internal credential; root never reads +it. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an +advisory verdict emission or a substitute for separate evidence obligations. +Root records this bounded metadata receipt with verified PodUID/image/source. +This preparation only writes source; no request is made here. +""" +import datetime,json,urllib.request,urllib.error +from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file +id='infd-20261011-zlib-remediation-r1' +req=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) +opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) +try: + with opener.open(req,timeout=15) as response: + raw=response.read(1048577) + if len(raw)>1048576: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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json new file mode 100644 index 0000000..31fe756 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json @@ -0,0 +1,18 @@ +{ + "native_effect": false, + "initial67_manifest_sha256": "1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2", + "initial67_manifest_bytes_retained": false, + "initial67_complete_source_snapshot_retained": false, + "initial67_note": "Not snapshotted before unannounced81 amendment; knownhash preserved, exact reconstruction audited separately if possible. No fabricated claim of retained original bytes.", + "initial81_manifest_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "initial81_complete_source_snapshot_retained": true, + "draft29_manifest_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "draft29_complete_source_snapshot_retained": true, + "defects": [ + "Main dispatch passes operation_intent to remote without matching parameter", + "Remote payload lacked snapshot_identity/operation_intent", + "Fresh scan gate accepted empty/truncated result coverage under rootreceipt metadata", + "Owner review began67; unauthorized stage churn observed81" + ], + "same_trial": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json new file mode 100644 index 0000000..02232fc --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json new file mode 100644 index 0000000..ff52810 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json new file mode 100644 index 0000000..d1475b3 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json @@ -0,0 +1,55 @@ +{ + "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, + "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", + "full_receipt_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "full_receipt_path": "rollback-preflight-full.json", + "projection_reference_files": { + "sealed_live_deployment": "sealed-live-deployment.json", + "sealed_dependencies": "sealed-native-dependencies.json", + "candidate_deployment": "rollback-deployment.json" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json new file mode 100644 index 0000000..73657f4 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json @@ -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-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md new file mode 100644 index 0000000..249eb1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md @@ -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-zlib-image-release/installed-zlib-proof.json b/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json @@ -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-zlib-image-release/intake.json b/docs/evidence/2026-10-11-zlib-image-release/intake.json new file mode 100644 index 0000000..2bb636f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/intake.json @@ -0,0 +1,232 @@ +{ + "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 fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b" + }, + { + "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:2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d" + }, + { + "item_id": "owner-product-final-ack-md", + "label": "owner-product-final-ack.md", + "hash": "sha256:fe7b2153e525a23980aee63e62efcd7fd3dad18145633f8f57d8d2b4640c99d4" + }, + { + "item_id": "owner-platform-final-ack-json", + "label": "owner-platform-final-ack.json", + "hash": "sha256:30c200b98f8692a8456e786d0c7a3acb5ff3634973911b088f56aa178d393fee" + }, + { + "item_id": "security-close-down-checklist-md", + "label": "security-close-down-checklist.md", + "hash": "sha256:94d5757bfd612c489d419f421c0abbaf3d5a991cc1a49d04a33f957aed3ddd8a" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery 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\n\n## Explicit recovery decision\n\nAlso approve the proposed item19 manual service-outage recovery term above: exact historical rootconfirmed acceptance captured before release may authorize only same763/c96 one-Deployment/latestDB-preserving rollback after failedf558 service outage, within30minutes AND the existingdeadline. Root must retain freshunavailable/failedcandidate witnesses and exactcache/journal/custody pins. Duringserviceoutage subsequentrevocation cannot bechecked; this bounded uncertainty is expressly disclosed and consented to in this new decision. No401/403/revoked/conflict/mismatch/healthyservice fallback, no backup/release fallback or future/customer-production reuse. Ordinaryfreshreadback remains preferred. Recovered placement is verified separately; rollback grants no claim of currentPDPsuccess or T05closure. See fullprotocol andclose-downchecklistitem19(PROPOSEDuntilactualacceptance).\n\n\nPost-Ready provider preservation proof records only fixed canonical sourceT05@1 request identity (derived from the authenticated route), HTTP200/timestamp and review-presence/disposition count. Actual native outcomes need not contain top-level memo identity. No review/disposition/state/actor body is exported or interpreted, and no currentapproval/acceptance is inferred from this provider proof. Actual founder go remains separate. Exact prior481 bytes and both completed contract reviews are retained by digest maps; unchanged history is not recopied.\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\": \"d871081999215bd3850ab1173064ed6cb6d7c23b26d9c3d5b3c5940e698d4c61\",\n \"execution_bundle_sha256\": \"2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d\",\n \"rollback_preflight_sha256\": \"0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5\",\n \"post_ready_native_provider_probe\": \"Fixed canonical SOURCE T05@1 authenticated GET inside existing StateHub dispatcher: HTTP200/timestamp plus has_review/disposition_count only. Request identity explicitly derived from fixed route; no bodyexport/dispositioninterpretation/approvalinference. Actual native service response shape verified synthetically with no database/provider.\",\n \"fresh_scan_contract_sha256\": \"b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2\",\n \"preparation_failure_history_sha256\": \"51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596\",\n \"bounded_outage_rollback_pre_authorization\": {\n \"status\": \"proposed-only-unapproved\",\n \"close_down_checklist_item\": 19,\n \"scope\": \"manual same763/c96 oneDeployment preserving latestDB, failedcandidate outage only\",\n \"maximum_seconds_from_release\": 1800,\n \"deadline\": \"2026-10-12T23:59:59Z\",\n \"normal_fresh_readback_preferred\": true,\n \"unavailable_revocation_check_disclosed\": true,\n \"forbidden\": [\n \"401\",\n \"403\",\n \"revoked\",\n \"conflict\",\n \"identity/scope mismatch\",\n \"healthy service\",\n \"other phase\",\n \"future/customer production reuse\"\n ]\n }\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\n\n## Proposed explicit manual service-outage recovery consent\n\nClose-down checklist item19 in the-custodian/docs/security-close-down-checklist.md is PROPOSED ONLY until the founder accepts this exact new packet. This term changes the recovery authority dependency for this trial; previous T04 approval and owner source reviews do not grant it. Ordinary fresh native sourceT05@1 confirmed founder readback remains preferred for every phase. No standing recovery/autopilot/signed grant is created.\n\nBefore release, root freshly authenticates the independently confirmed acceptance of these exact terms, marks its scoped receipt bounded_outage_rollback_pre_authorized=true, and captures exact receipt/outcome bytes into a unique0600 release-authority-cache.json in this trial's0700 ignored custody. Hash is recorded in durable release journal before remote effect. Cache is historical confirmed acceptance, never fabricated current outcomes. During failed-candidate service outage the ability to check subsequent revocation is unavailable. The founder explicitly accepts that narrow uncertainty for manual supervised rollback only, for at most30minutes from the actual durable release attempt AND beforeOct12 deadline. Root must personally evaluate the exact bounded recovery receipt; no agent promotion or automatic grant.\n\nIf fresh source1 readback is unavailable, a separate fixed private /tmp/security-infd-zlib-root-recovery-receipt.json must record fresh\u2264120second structural unavailable evidence (transport unavailable orHTTP502/503/504), rootmanualverification, exactproposal/source/memo/cache/releaseattempt/DeploymentUID/configmapUID/PVCUID and sameimage763/sourcec96 rollback scope. No401/403/explicitrevocation/currentconflict/identity-or-scope-mismatch/healthy-service fallback. Cached consent must have been rootverified\u2264120seconds before this release. Native rollback independently requires actual candidateimagef558 at exactnewsource andReady0 plus sealedDeployment/config/PVC. It changes only existingApplicationsource and oneDeployment, prune=false, while retaining latestschema5database; no candidatePod/DB open is required. No drill/backup/copy/release/normalverify fallback is permitted. A rejected current outcome is never disguised as an outage.\n\nFallback rollback-verify after completed recovery requires COMPLETE rollback in this same private journal, hashlinked original outage/failed-candidate witness, current recoveredimage763/sourcec96/Ready1 and sealedcustody. It does not require a candidate that has already been recovered. Original outage evidence is retained unchanged. Actual PDP preservation can remain unavailable or rejected; no currentapproval/PDPsuccess or taskclosure is inferred from rollback. Ordinary fresh outcome receipt is preferred once restored. Beyond30minutes/deadline or any mismatch, stop and obtain a new independently available founder disposition; neither expiry nor uncertainty grants emergency authority. Item19 is closed by actual disposition/trial outcome, preserving ordinaryfreshgate with no future/customer-production reuse. Standing recovery, if wanted later, needs separately reviewed independently obtainable authority.\n\nPost-Ready provider command now exports NO review/disposition/actor/submissionstate body. It records HTTP200 and timestamp, has_review and disposition_count, and request sourceID/version explicitly DERIVED from the fixed authenticated canonical route. Actual LifecycleService.outcomes returns only review/dispositions, without top-level source identity. ReviewNone/dict and dispositions list-of-dicts are checked; nullable comment states, SYSTEM actors, prepared/in_flight/confirmed/unresolved states and not_submitted/intake_created review states are accepted without interpreting them. Optional nativebodyidentity/version, if present, must match the route. No acceptance/currentapproval/go inference is made; founderconsent remains the separately independentlyrootverifiedauthority path. Freeform/unknown/private fields never leave; failures emit fixed metadata, never raw repr/body. Actual ownerPod verification also refuses any nonempty ephemeralContainers; current native estate is not claimed to have this drift. Document command-local content is deduplicated by digest while memo preserves both labels; actualtypedmemo/documents/intake andHTTPbodylimit are tested.\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\": \"43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 26242,\n \"content_base64\": \"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\"\n },\n \"execution/authority_journal.py\": {\n \"sha256\": \"db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 16345,\n \"content_base64\": \"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\"\n },\n \"execution/execution-plan.json\": {\n \"sha256\": \"d871081999215bd3850ab1173064ed6cb6d7c23b26d9c3d5b3c5940e698d4c61\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 4993,\n \"content_base64\": \"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\"\n },\n \"execution/native_program.py\": {\n \"sha256\": \"b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 20362,\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\": \"1e839623df15218ed46c7fb591029b9a653678cbde22898d5703a4ffbc082e99\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 58687,\n \"content_base64\": \"H4sIAAAAAAACA+19a3PbxrLgd/0Krm/tgrRBipQlRaYuaq9iK4nu2pJXkpPN5eGiQAKSEJMEAoCWZRX/+/ZjZjAABiAp28mpreM6RwGBefb09Gu6e549e3b1sMjugiyctqbLNIv8h90s8RZpHCVZKwvSLO21zqPWwsvCT0HL9zLPbr2Jph+DpBUlrekM6sCjN83CaNF79uzZTjinqtMofpDPUAs6mAfydxjJpz/SaCGfo3TnJonmrdjL7mbhpCVev4efski6nMRJNA3SVL15UI9ZMI9vwpnqZbkIM5wAtyp/9eYweNk2dDW94+/TaJEFnzOt4yTwwySYZm6a+dEy25HtwlyXXhYlXM9bZndREmYP7h/RMll4M1n9P/mnnZewWzdJkN656dRb2ND8NPoUJA+u+s4NMqRdmOdt4s0VFC4vfr48ecdFoGoQxjAw7ybIHloK4stFlu7svD65Om05BLe26yJEXLfTg56j2aeg3enFXhIsMvGfnfOL36CwXKGefGjv9fcO7dagD/8f2K09uwVP2ZdwcRM5qjD++RItgt4ym3Z2Lk9/Pbs6uziH5qzAaj1v7fd3Xl98OL+GF49WOr0L5p4LM04BU6xh68BuWSHA/BanDr+t6KMFr5LA891oMXsACARuFAdY9jpZBvAN0BPewUqlWbKcZoEPn37yZmlg77TkP2sW3gTTh+ksgI+PFkI58VN4fgkNBJ9gyvjjCH5A0364uIVfg5XeAKz1JPpMtfMiAADLD2awMgl1O+ivcEDLyTxMcUIplYeh3YTJnEvA9+VCgJ1erFY7Ozt+cAMYNA1iGH67M6R+vRhW+xOgDkBuIP516c8+/jmSP+U/i2olwacwuMc6/NTdE//oobuPf47kT/mPq/oh7O80xD2L9fFn96X4Rw/dffxzJH/Kf7JjQj9aVhg4tOTN3BCnaJ2d//Sm+9v7br/ff9W97h/sfoENdXTQfzXoJgNLg7KA9TyYR6IqoJbfRawb9GG6WK+bBADK0MNhUnVRPsehQU2L6Z23d3CIrXqIiIf7uFawH6eBi7AStSXCwkekX5+oI6x08h6226+nbwwDzrf7PPIDKvzm3dn52dX16SUOMPOS2yDD94DIs/nw43ISJIsAKM9u4oWz0FtMg/5gF/cR4knXD6Y8nGpXMM3wJpzSqNx5AP0SnJIoyro34WeoDAO5DRddphhd3DkTb8q7CEgBbE6iLYDy2Ergu0BQFpnaM4Tp0whK/bkEOoRt76rNs4twTHfXLsquaCP9n2JVnEHtVGAEHoEGG+wO+oDT1/29Yb8P//svi1aB94Wh2GB48IqLVRpn7HdzVOIX2J7YV/xa/rIZ4QX+8zftxYo6ENMiHNdbJswfqVdjW/ZP+98whjTziBRJmAPJ8z4GwFNgRQSa+A/WqjotbUhIXEaPpemcA+EtkKC8zZwMVZqt/tM7oknAYk1o69BqGHddqzrT9R1VOq5dnvKSPKnxKTALms/HcEEbJ4YJ4EYjmOGLZeg78czLcCt2cVvZ0dKJgyieBbY/dWDXQtVbP5rjr1k09WaGddpkKJmOOjqSj1er8UrQ1AzEBVnKlvgHDGM689K0dSLpzsnCf81yWluJNNfw57WXBoKdIIvB927wGaDgLuARursB8cAPElcKD4soc7ModmfAFGeuhH47DWY3oh2N1tvahsi5l1YqXc6QISjy2C5XtDVarBFePwlnsy4Ki7AwIIvkbeJAejD1IMlO/1zCyLiTUQFtxrYGWP19Z6cICsHJXdqO7n0SwTOhiMRr11v47iTkUklws0yDMizmy4zIXgoTHc28+cT3WglMEBa3t4xRKmrnfMSx3p+evzk7/9nq1OCMuQWNfznW9M5b3MI23q6JEqd7ajPMyhwrAhaSbFlXI/hOiY4Lcv+U9gq8EKblzWZB0mUc2Xp6DSzSQXlzo9aikST/YwV9xLCvakFnEY6SQTdtrcA3xqN+PrASp3B08fTJrRde5XPQWYbz8lu3TjvXyUm7dwsrqFH2AlW3Vk/rvgcEBWDfRuLU84Mgxoe2aZSdzlh1AN0yoQha4SInGcPCCO7D7I4JHAwYqXebqzj8n86wMl4co5n2FqgToDUUrH7MO+TdcumFaZC2f/Vmy+A0SaLE0CVpJjk9h3ZraHgSzALgPpKAl3lQDFq0797DUkX3RGWXi4+L6H7hxndQq4bW1s9326lsNAUvmYRZ4iUVLjTDhVyjH79cpxmrSY0KkvAYGsb2e2EaIbZ62feeZhLNZkJFwI7La+UvE28C7BHV8kWGCvg08IPURYRHSwmt3gLkBZQisiSE8ZSWjUYtDTEgl6BlAqD6hgwpUfLQ7rS8tOXLn8UpsEVCmi5UoSI2R2lvege6V5tL261+9EO/XywjLTGONMKowqCiI6YCiQANCiSuAIiDqWoPKGSStYV4giBbxhZWL8qsda1UZBe0c/VmkeenbdkDmrl6ZO1Au1O70xlZtCGQpBT7hd8s2qO2cfnh/JykCuOwp7MI9lKn1fq3VhrOl7jIfmuaeOldaxIAjgVCVCtUFpYoKPkEgD2FsqgO68D8N/SRlxcwLAuQRKyiBEVoJmJTGIkXLlxB/lyQRqL7lG1XsGOycAHCt7TyfdONovaA+m7eBtp6aiW/y5L+IcGcM4MyhJEzEhSRMUojau/9LydXp1ej4eG4vlGqVW2Qi9yEizC9U2UsWAZ3ehdMP6ZuDOMX1sPyNl8/XNWyXsbQOin2fw0Ev6pZ4jwPxonKjnPu0AAMrdCmsDbvqDSYAheBLaUEguldOPNdUBjjZeaGqYvzvQtmfnnzICZNQANGRGpboMh2/xCa/eOz0pCeDTO0HT/Loo/B4tnwWZygfhZ0PyHMnq3qDCT1DaULL07vItzZno97/dnw8VnRuP1seLBaWZ3hV6+d2iQ4PZcpdzs/A+m9jubxLAAS/55ftEdjstMjbAAYVkcTJ1DjBXpQFGbJPF8qNJIG8LEw8DLAkuiegUaW7CeLKXxI0aae8o7FWx4OMq/JDI+Y/N1cQxFlWsCXWrDiQK//XKJg2coiYG2tL0ES9UoIBto8kFQXZ4rYNCEDiO+KGWnCTDC9i4IKlsEYJgCCiZWqEzJRtSUIZ2vyAB1ZqoYf3kK/UMd1+UzGddsW0CU8zrI6Pdbq29hup3cXfObimswHiq2HJ2wEePPeQh1HYiCyDiTjxNl66Z+zMAssvQAPb9iaBQvu1YzteQVlN+eh6W1JdIePtEw1TcURANWb6+ylC+9wWPhpWRCbuvgzx6VcbMse4qBt/cSlBAuDJtodJDoIIT6dYXEJHwvMnc99cLPAo4TpCv51CiYrEOJiPF+C/rQ99R5fFSgNSGeJR6RmYsEgJlZE+/wLas3r1Dqq69BfGPtafn8TzUC+qBICxfC5gJHbC6s1kE6YUBj1rkBAX9yeXUi6q//DLULEtv3cS25Tu/X8+cd7fKpRA5V1UsKsPUof0l7wOZiC1gkqAyxvd4qLnB/LHmMJPjrtTZY3N0HSuwf9BNa19QJaihNCSXhm6MCD1QEJd0P7Kjfs6At39v7UxvdBkujv35z+ev7h7VsDFGi5SLHpRZM/YB3akuDCRF5/uLq+ePM7zIm0EQZ8BxaxrkISzCPafwwsl4ilI9EPKv6jdmrUZNsqYyG0lYZ+4AYAvGnm0IJ17PK5dJsXvWblwhuG77C286eaBipMiuispBftomU310EfV7bc6B1juwGIU/U95pbmb9xtSW1DWqssztHNjSs8HRT3oG6lNo/25g0aZV2wrSNUa7dEvzusExLpRnpHdHtnbaOMBL3bICO8w5qWtUG9dYNBxbON/6Hzztb/QMrzww9IgA6RABUZboISHZlRAWKzcBG4n6LZcg7A8hZ43DAJXD8ggaXMawHNF1mYPRDnO2f+oVb414u3H97B3rbeehPADqLviwj0L/IamAELwf3KPZ9k6uU34CsF+FliUl0hSRfYDChVYupiynJG8E0+rso8KFykcYB+DHig8Pj8uSxYno6Cq7Ua72xEvXzy0CkTow1ERzJU+Mt5nLbV6BiXiEHNSSz7hpLtFHSdxTKWCNM27tEK1vIwelOSkVAutFuDMjJKFIwj+OH5c9DUlbsJyX58eg4cDSU0F+RKxF8UuAKjwgENAzSkyrEIWKRJs27uxIJH6qLRLja6Xj7gRh3+zyYSQo1FgAeJm9gpGc+Oy7JDjeggKajDxXaLhOBYfmYeLsjTRGoHrVxElgUtrWf5zhZUoyKOkLTpKKQAMVTVqZaGPsn4X5FahdBqkllJZF1VlWPGNsdMF4AsSKqQE4VHncMMcwpAo1rZFSIBgnyGq5qRxVDQLaADNuqtQMHEGQTJYUM80y9QCE1a9VNnNK58YGrjSKJZppmKZD5aFZeTHpuB2PGGXDuUowc62xgqLKm8nCHMHP2xugRhU3Ex8XzWtvUmQQ8qeMPH6bZ1BXAMtN8a3VPmKdu6iIUbBAHIKM4yxWsDGD+xAuywg8QayRbkI6wy6o8dh6ZgDamyRgetySLrzry43x9YdSKLbGa4B+2MLF4VGDiAfswNWtaWVZnky+qlhd2yLUHKZWPa5EZcZtwwserKdomcWmTHg+7qpbVyb48fgwfeiyN4GhNdhQcmqiUPQVvz5LOlTcIuuNx1VvViFwxcEFenRJSHNbRMnJJrtEzWa1p2q9sFpp08xBHwAQWSFjAYYA8P2V20CZxoe8vzRizaOQZGHd04jeYaw5RR06fGOo6zR4NQQCjxqiF1MNJcMMeONY2SZAk7duMFpUYa5PgEZYHWCbFuWDISB9rWchF8FoKPICataTSfw3BrIC30zyb5hTZ+3ybTl0nybRCXcl1PyMF2XbmTq1PLxr+1RaTgpStu/E5UKah5yRLwfBsRrW/XWyaNmgl/XFkIk3oSqJCEBJt12ldOjJSYT8yuvY2CVfTpMQhrinmP7TV4X6u2SQFPCQQk6S0X0h9m/BQNdANxd2v4VOCS72N7ryzYshP5zRKwAD3JXX/Ch+wPwqJ5796wG1Nad7bOHlMgNIRz71aXGs7enfwMQoMHm/UGXccqPrPWq8n+ZLJ34L8EievVkRcc7L8MfgiOvCPv5fTlwas9fzK4OTi6mSKlRq2PmL0Hc0qD6W4GGPrwHyyuDQ/3JoPg8CA4Ojp8NZnuT/anh563f+PtTfYGB68OoMj0h+nezWF/cOS98l95/uFg6t0c/TA4+mE6eHX4ykIJyk2XcQzw4NGRgdQiyMAeSdG2i8I+DkR+DD6HGewQdN2FvTSVW4w8TmscTi0AsDTjoCD1gXxQWERRNfrXg1fKk9U6Dz5nXKzYql7mV+lPubeiLqQUa3nW88N9MY0kIDOy+jbBbyvNbg6sBxbK0c6X20ifdi3Cki5OvStL0TGCNDCIQ2cNKbCn5oa4TFfIZY3NVTA6D31QroHcnC2HZ6PjxcjSV04iMtAATW1QTjVO7oUXD5VjVxErHDqf69imkoT+joXn4uEtTMVYSKBx7gdnKqQjkqNjxZ7m8KZXHBWwSjk25YjjmLGx0Eo8si6J1hUdvX5dzmDA3iQE1S0MAEqP1pWAKKDQ24vfrNW42I6sKVoDRWPN98dyC9pIenEUt5vGObLee9OPAPptC+tzFK5lZOop139XgesZrvTZG+MiFiqMrDfhzc3Zm7qh6SWp0dfoa32LP6fqSShdqvfnzx+BGd320KiL2O4BT0jSHqFfTyOuPLiVGfZXJB7LeQ/MhU4E5b4GhRYQO5wF6UMKWpi1rYcatFoSPsWu7djl17iJO8fK/Sze+sxaJw12XKQHygH6J4x4OKdIh/ccGtXo/yxoVJn1pYE3I3Nbmc6h6ZM/djHIB1SdeBY9zDFQqonMYdnKqSq3UyyEIQNlpLwNcJuSs/D+Xrk4Gl6XqTiEpSCBSxhSCDq7jC1iNlR6G00AyJ8C/2fVNnzY38tZBkwMlAzAQ6AMzXAQYSV6hUZYTOcVSOh15QaZe7EueE3ntM8sWP1oAROZuQgkyfF0hpJ8CqdBzZChth8iPDZdOCHZmFslE5q1exfNg937KAHFtBqws8sdaREzoq2eGosYQC24RmxcwiVe4MfPtDU/464sDg+0NNjDiAwgq38esdsrVHNaFpOfdwDTjmxO9RB/mq5ZESihrwX8LCEeWb3QBP0jHp5rNnXQVUVsjBSM4Ic43d1/9ero8Ohmrxt4k2l337/Z73rBy0F3cvRqGhwc+T8c9H0O9eNpKkmoZQ1+MIXCoPGCOuDywvIeRx8u32KluyyL0+HuLkDvNvgj6k2j5SyaT3ppNA292a74WV3C3m2YWRsdOFrorEdH7aVFz0O+LvO4Mmv66nDSnx76R0eD4OjgwB/4g4Ojfv8lvApe9YObl6+Ate8Fe03hJNAVupB5KiwHT9XT2ONTD0P8GO7bhIxrOUTy6DPAgBsPmGovhSVfrfKFZA02pcXM9w46DcDmt1vaph0CyqLN+xOuBfzlAKuZ8MrnCJ683dh7wN1UxKLctWlNOJ7wssSJU5wlUST4xQ9GqFk6aqMLg/bT1igEtULbytyMcnAaGimN/LyG0NS0nTtR5NSWLOxK3e3FD8WmbCteJqAXB0Lnt4ZCMKefbrjAgAMASrWicQiqvIsm35pJqkJsFyYrj3GWdDalxSLjxEqBx8Krd7dctDLe1U7J3CNQ05a4lOvB7HgQuDfeR2bxdqWw3QLxKLxdRsvUEbF3wsDISrEv3wYxvAVeOVMvyGNdeW667DgrjTmsTmiOnGhDpIignPDiuVTpVTDzYuwURNhjcqOQruJOxbU8b4YEn9foCtUu1CkZcv6DCnJUzE7ZLr6I7tvTWWpnX8gg3hnqvhyqbyyVfem8KDiw+8Es8wC8QAL81BEzwHCHnR29B1oEtruHi3iZNRveCTYFU+eOyR4/3CP+BrwOSNg0w1NaCwNrDV6iyA3RIQCr7VVPSKBFKhEqhDLbdsih0JFlRlin2hiZfLlDhzyaUquxtUfBuSl+s8Ara5ykBAud7k8ng4ODfvcm8L3ufv/VD91XfrDf9Y9eDbzDgx8mh4d71hNiEfEU+x4kw8vgJoBtOQ3E0GQgjZAmrwKKpimPMUm1ISYpu2+NN46JVHz8+XMJZZ3loJs7FoD/4rnRjE4/5Dv7+fP2o6X26mulRVnDkQQmNDZZ3uJxB5u1NDszDpN8YWQDZORDN9ctRs+C0VBnaJfLxQKDs5hR8pCuqJyErBiagWGL0F/h18eDPntjDbeGzSjvW+rMDIHxatxSEab1aJwIFQLj1puR2STtCTywjZhVC9sc5d7ks1TIJWj4SDL+sa4+jagQzG21bmKLyA++2QbFxsjTJMeDeuHN8320P0kkED+xuVd7vb3+Qe8Q/vPyFaAlSjszPP0kPzr2JImXJEY3iodIlPXgcDzChqePwYM+RAtxyyIaGDwQTC4J6Rj9LWJm1mpTOlI4ruOGoLN3wTxKHt7jBOm0FpY0TD/qv9+fvVE/O+MajKyzua89QqJcCLnvbBIt0XNp56lnSCUvGMQTgzNVE59C6cTEqKBOUQQZftVhF+n72J90k/92kzZjdr1LMuoKSoJ1xSRzbxt23Zaew6stwYlKxoMJnnhOlLH3VFHJrZCPTm3dp9FV6LFdPDTBGahumT2gR4FUeHi/GcjaU3r/ZsssgbDlggBRnSbhJDCtyTYjsU6Y8MEKSlNAOvzHogX0r/Vy/7A/b7WPDv975x+k3G4zvvDm5qvGhhurS8AetiawfP9YvBC/lBa59aDo8LeGKjRqHOxK0O36yUM3WS4coeUrp4JcLnf2+n1T84bKGEHR6JXAao2U0zUdkUT8TqfWmUYqXU2HyH8PfdOtFT14G0GVP3phVDUMGRd3LR/KXRhKVkaMaOX0XT0Utbxp0LZc9/3J728vTt64Lnlpxklbd6tgQtEh2yHXKLqiuu7PH04utcq5JZTOtt3bpZdUTQLautWEClTdJaoOCwWvdNT+pFd826oos5ZN+uumbuuZybER+SmdsIUzmdzCJrksN1IrVzHBfcmh16VIFIDREAEmisDPktdQ8BljzFvakYTduqJTk9PPocmvHnlf+TC9aEGueGN3cG9U3golpDaocKcSfyFyqvDutFmZLvu9IgsOPlMA6q2r4TwmU+MjAXIUyLUL4fv655ISxZSPTMqGFQyXweMcecLSqeaKKQxPli/YbMqNGg+OhTOHTO9SAtLYWIcAl1dCax2A3eiob3S64KF3yJ9YQUDCDabC35EbdwfAkTkiblw/ElV3hGFkxNZj2ERB40AMlRSDxCDwolr1aN2CzBtTHow4JhXdrFtJjcZoPF5jXl6N65fIWzy06xkU8a91bJFUCyoNtQhtmnwJ8kVAqYhs86hH7UodYBcVxEq4KRuckcMmIWY18JZZNM/3g8h+6fqAKUikoljyYQ5b2iAZEGcR0Y3iY9O5H+ad0nz612QnMTbKIqJyUQAkeR/B9wfn0RLTInP542r19NZH8rhF9fMRQTQPvwTSdYh0T3FsPV59g4kwjgv/gg1a044UvxWk6UysPDD2kkUfa8cSHHnD5kpGHHG4ppIQ6Qe7Tv/755HZnJqX8sqIiiYR7BtQ/fWUvIH8r6ETQC+r6cCSAJ0xXF0fx9jGhDOEuoTdOcP8W3hi5cCCckrtfBWomkFUiuYSJ10uBmEDmrpK+VE5YEDWcTGsN0ro1B51paeDqqw+U2ZTeRhXbm/LjWW3Su4SjuZP9g0NrnpgItkFqp2sobWj8nkytimPRv9atPpnkb8qzaPAscb61hLyxGj40nyQZIvjmyeLHrr8p8tpctnsLfwAOnVbD4R48gLFlUqViALbbREtYi9MBKEimWVd0Np0bonje4rTRnzdMj7tCezkeLNdveHuHpU8obA1o8lDzBsN3jDt/EilRl4QRwqcS1lKC+bDBa1l8oRQTRfkBhl7Q1FZol0hNZhN39+WBkmXVjZiWf88PPt4Cx6tzGGF5I9h6qZB7CWe8JmA3TDzxTYQhI3cFbbmQ42YKsP59IynRLAdpX0J5UvoXgXVq+kQUNO7TGqX6lBm49yYplT5aq7/c4I3a4xRlJw02Hp98e7929PrU3Tcx3RAZp945b0uwx4ftVaVCUE621d8fHgStlCBh+xwoem2w5F8HlddlKqsU1AFRxvEFU9HHdFaV8vpNAh8zIUsJ3ZintcA58VpjsxlBmLuqjMOqwyzEOnFjxTsCXQ6EavN1DokB3w/+Izhj8QlKGi0DJEaGHCVSwXs5oqPz5/Ln7Y6A7SuoAU+AV+t/jZbzXFtWeM231hmbbJJ6KGQivtL+aCJ638VF3oCZJsAu162L1JNZYB3OWUj0Es9Y6P/N6kyuTPW99BiypJjKWAKG3ajeUjhyA8Aj8AX6aBApErQPU3SLrIEcdpsEdLRoP2JyTlr+IjzLy7yLy7y/ycXKVPd9SSOBNWGrV2N7YrseBjVrtqovGj6m1wxk2YBQpmG5Nzfr09yvvyWfWr5xhkdixFj/Txi7HtNNM9XrpDXKeCuimf6piPQcFkz98hc93kw33frtHAaoydYp/qO9R4X3F8/gthETEeSKD4FZ1UcWLldRr8trctRJQZMGoFto7+NCgKLykFgUnQQkgMJDo6BWJTrfRPVsqpZRnEW4jEGsnrsPkqUiUUc+YD46JKnQzV2miLgi0filWx4VvfCstMsMfvC71rKRogH9FC6y3zGzgMk4B1d9KPSenfF1OHTLiXAQK9TWUqcgourNspFGFe7iurb0pw4hpWI6VCcj6YJyWx0FaiX0s6jQuh+j4+mkTfpIbpahbNF21IAbyE6JjFUCpKWMEBiBgRqinP3VQRahNWMzMzKe9dVto/ywonb09g5YUvBbVMsLbZi5wEETxdtG5F3IzvoxkpOaSsAxt4qsCm7o8iumsKMQ4wVyU3/KCCn6FbBWPU02ViRNkR7R8spLIYjdUJGSKUhykzbuWhZjZ6gUAZzHn49z/53sf4762z/251ZbHJksfVpglM5S/j2QlzZ8nwXeLPsDpNE4QkRZsSAR0oBLMbZ+UrGs1OXz0T2PIw2VuadwU6N0RfaU+M3NPgUhIm/1hd0p2pJfgpSCFHtqUz7+DsxakmWJAEQl4ioPH1uOOfL6IJZyWvy76ZL7W0IU7ch7GqA2fr+RbrMpOupHLsxwu+v4+Lbek8VeXyT65TKmrCczV7PwjfiApfGlAnh4lMkwyn5NgWRDkywehEfyVtB/PCDRSgjJ/V0rpwFWqQ+t9O7ZRbOyl8rN+cWcnOjVxflsjyma758ZzQ+FlJqg8fqkzJsI1F39Dy4x+Kg1cEvuzLJpSVf9+Yf/TBpY0Jcx5BNk4yMjrxM2aKfXc4B1hU5Qo7p5Zp2KJxKDIGerWP6j6gGo8Rx06tdvtKD3qjPvAVQKZ5SG+q3lX+ShSsXdaAGz8xb11Vsq7Jo/Lp4aTG/M4T7Vg+QGTUoiTOuW43ChKOx1aDpZ3HIbZ4i3jom45Q5uR/5PVuPK6tpik2JP+y16TDshuwTdn28uG0K4LZN4eB2xanbbojQthtSP62HP4WWE7gJolVIk6XZaVcyIexiMEkq8ooWEmDY1qapMgwlpcshe+0/ePOZqVQS3IYpXUhVyb5Ru+w0kSpAhIWctxWWOeY38tps3jD8gw8zbHK2dqOPzDlkeR3/mIBKJ/XimIBFLzQLOujG2LjfXS44CwLZnOPlZEYWZVflZlMuNcJMXriJed1FzJYyfFCOIGv4uBgW0u9qm63DYPv21GBlE9lSQ4h7CO/iOGLuPWbmBtQNgJoQyaKIK5CLqDoSd2CU3MJ/czRCgCl5cS2l/2/NfMV6a3Ml/CiFmGpgyclpF1fQQHX0eA4o0TGbxITNxslvupN2CJXPjKEpL2sWd4MK3iovFdE6EwU7vYDMMiAw6peN2GrlcVCytZq1N0+yOJE5oCnwYudxVdlqFKJhU1QmAHTUtnazeQybf7oki1aeeLho6hLEQCWcqq9XtHt1UdhNJXmVYGioXkhtxzDnuo8q9/CQLzTarBFM2VfXwriW1BCHZ/ED4dXp6VTHjE90o4SiNJxkm3NrH4vlGFFbY4eLFI2qMFSZAlKW3hpE42OtmZpRPhpzGBZQbZv+c+iOO6sSEsrM+U5+I701RJQdFeji2HCaqNLOFK+OLwyzIl3YlrZ7rOFW26e4T/B+B8eUSB2n253Owjyj+rF0WHMMIUPirLR4N1DpaqDKzUD5xUDVbOolAlO5tag+z7qt3QJUzG+R3wGkvy/eAkR52R15b50Qo225wCXeCYwyQCt8lKQOMMg8E6+6V670oheC8PaZFfzO2HBBXd4i0iy9g4b76fJStumSOnFooELUkXPlVRyneH1RbVQYERKTt2Np0NoVcrkJAxO/0ChqcafhCL540t6whQrnyN/Xp8GQRCC/DFBbEJ523ZV0JUiycjusc5g0XdItMXNUoB9jW143Jk1H0rQeJ3znNLC6L8L72m64LltmodWuja8UOeKDXtN1UMgC19+rPMI76seO+Y76SrNTD7AH8Ai5tqu4tjWUIo1VlFisYcmWKxlzkeDWwbEJ3QpEOG9Af21Ak2mca+dip2jnbDQ7JtXH07iGtVEh4MBQQOe+1ZsJkFrrl79Wr309xjL63a9y85ZP+M3I8RKRQ11BquRxGqBRupvG0KcYR5N0YfDzRT24kCGY+eLmeTOP4XNa38K2GSdzNhBNAnUduOEmCpIv02WMamcKH3hPdqUB0CppT18lONTisfAlYtOapZZMux2kFhNG+iUiY1Sb8tUtiypxx+adWVYQ594CD1JzMCgDqCwhneGK+zd1pzMP7dKKAcgko+TbdX7xm26d1rW/CV9ij/5DB/2XqHSixTdEgQFNjXmDsmM0j0GJTH2QwMSQhxSvCnHnYTonw6fiRmxLcNVRj3ivxTeTxME4ZvD6t/OoAC6JSLouVMBGf3+9uHD/NxRUlF+kpZIDeYqZXmtN5sLc3JfPtsqnueR6VpMDXgscl13pfB497xOVe7a/MgsmdI5SdYCsyTkRZgvg2aWjP8KjzrH4aPCqNN9WQdWUO4y8CSA/x2FjBNNHy6eU6+oKaF4ph5oYlddvrJWrAqlSSR5n2EWQOYNOw7ApI25lscw1KkRDgkXxj9LhVc3sy6W8xRR4iSPgvm3fuRvTqEI5x7VAMnbyFF6VxMJwTpRfzklw9aSOqzOqdbCAUadutl/IXkqKspPE5gglPDkZKhENU7a6yhd1v/+yUonp6nqVvcEoMj7mjzXzl5KZMkGNLKPxST8uRJ7DhTaFU8nOM64ZjDT/VGT04qnUsJ2bajEur2j4lzd9dCp5MXGsgd+mAD6VFFNMAFN0tNF9i7/a8jxK/K42hj5glGcmv3iq4d4plSZon070KAux1X3NHmM0G2Thwadu7CVI6oabX38jKfQLC3PYmO7Baewc90xHHEx0w9tFlGzXvcV1/DVd80lmmt6hggpULgRaE/QHpuxI+nlhmplJJkLJd+Bzjx45Zdsx5utzynm1uWyPLw+/aQE9wnMU6L392cYGTtIUpsDGZDyY1QpkVAAD+vhz1gt9vFaJz5Qt6oP8XT732OiWdpRfgS7yYitojkE3tgAQqo0D7RFmYVYiwuGOOPSU+ZdqY++M0RDN+oZGr+lBnOaTcHH54fz87Pxnqza9k2To+h14lf7zNGfSQKQuwxzb6kLcxi7YjCGvrK/ID52GTk0utWqCKj7B4LLS2ELOzSrpW9ZZeqoga7TwFBWF1Vfeh1UgqGQIMW7NtcmtXr89a2WJt0hxKxrIKdARYA7RPffbQPwqCyepkV1HCbFZdK4gXVpQe6q0P+6lIE0BmR9a9qAzGoyLl+cebw4mbNueVFJ+qfuundobwiUA+LJ5cZ92Pv/1N2fTxdkb3Zv9Qt2a3XlBd2XXXILdcAd2IQUiTN0ZlU70lCuyUFOb3JC3Ocyp91R+wtGObKx6ONHQYO1hT6OHdI2BEGH3AoDXNYt+66BTIypWkU85nFVPWnNBXX7ixOLqp6GOelNB37ysL32Fyqhs4ucMDuKHeJZABf/9UFz7lydUa0stvbVceJ+A41Ou29p0fsV5lAei9SvoaPGobWfTa/8uLy6urdytZM21f1OSjWqKXPx2fnpp2YJkNV4zeHZybtmTpsbUdYTCSllbEA8Ni1cNslRbW4HS9+nl4UXtvYR6OUneTYXFXfV6cSaG5WGU0VHzHyhWryLj+qaq26HYZuGe3eLmEgi2iO4dvHJofV/5hUWl2xur58YSXEDTkWZYNqW8tzdKhmjUd1rkW026487XXk8498KFIeMTuRE3FSJxytlUzCRtig/cdgybnSVdm9q0KykSSw7BOBh3Ogv5kktAMz/Nb3fE0ARoFIqAPCUuw2RRoOQMTF6ShR7ZaVR4QOqimsGnEwkd+1nae4bP1OxakfM8osCYyrGvJQZUO3GWgMXU82vnpDmZJdZtJyzF6sbJDraabN345UDlzg5Szljp3YBK5PrLBFmDS+iy7SykufyvmIawadGFoqUQJEEm0GStJOanTqXsgsseZpXxc3OjogfyWYqGCJ6boQ53S9pAzRzrTjBpsrzRyD6JZxG494SpcOu5lrzs6x2w16wluVPTFzKZlwyajQkENtu0FMrWaEy1eJ4N7uOiJ3XDERr7VQ6CT5EwJuv5suooINfa77/M09bRWviY8IBXSmDk03aTaVmkw/eaJfo++FgGfYEUAiWFDacRRDH8p05bmhr+RqTUam1m0/ha/H4yhopoA7ypM8h+5EtbTxb+jyC8vg3noKE3xR3QIs+iNJ0B8XBvv4SxOwHCMwsUM+eEHBrJrbJ0oT9jbRKuD/dt4cCkinCjhhtucy8tLtJ45oxmPvJrYRMVu5MKR1ZQH/HYuhLPhnWAopNGa2MWEqzLfY2orXGPbiFpGwRAsnrgtHp+gNiN92i0eYa9yeE+vvSDNlbnU0NcJv4M6wzLR0dHjL0b3jtN1jmbW1wuZJ+BMKsYw1xKvmLUQsFXjFuTpwcbDIQMMrw+EnJF407eBrbNhl60qrYFXMXKjNmyihU6x+I0wMEmvCTxHjYFZF4X0/79Xy1EsEbcbl9ccSbx04ufWOruDMuLKFqsiXeW2I7HQgC0j+HEneFWkjSdXd7RrzlXcmo2RZRnK8eLG+LMefbsmfgWRmQitEFB2UElxYeZc8JjAjTChJCHPpKQDxsS5tnu22suyARydJNEiOr8wVXeGMpvn2YnR/lWvj15f2a/O/k/7o+gA69vQhoWRCuvUZtItq6mOqfFqqsOxNf7qOrIzeWCLixCH+wrfARKl/wMkl+2fhjizoBUtslY6KLniC2e/Wi6RC+GlFvDNYCtJiugCWAHbUocwCT1TLSFHsvGCyQPy+5aagRdWcjorhMsPgUzYD6GFhgWRlJpAExbtmSnEkIu5mYmXtO9W04s+xYh5hQB2NYLwPS/BIB8WRtvqmRQkiUt8THHiP55EWTdj8CD/GjexbiURQolYGTMpq547WGfcMBgf4d2n0uaaMIBcPzcGXKufzrjExuOv5eNY0QCqLkXzkAanpWTK4ln1o5AOkcMoN059uLQ0RG/La+mFOaKDGSShUgO2XPdRXDvum3GcZgO3vnkI644Gt605YqS5CBHzb4p84gM6SXEqq+higAvUZ1Bv8nD8EmNvBhtUgq+FboTFzTkJgxeFTJTmA8u/CX7ZQQt5kAt6dAIRImOaHVXPvOI8vCJY6bsZOCko8V/39vvPx/09/Z3KHLw0bo8/d8fTq+u3Xen179cvLGG1vuLq2sQCt6fXP/inp3/dAGvdj8NdiXWosAANS5/d6+uL/G8bWhZKJOdX5+eX7vXv78/ZadZ6VuyKwzVv1xfv3dPPkAnl2f/dXJ9dnEO5X4EVhYkuQUhvwuDy5+9OX33/gJafv27+79Of89dr63VDvsbCBdZB5Cxp6y/j8+fT+gEQA7r7en5z9e/WEM8mlGg6NjWfXob9ihXijUMo96PyJ7PLvjzSgFP5MbBK2rIWpxHgOEOBIaK4nCKqeUnVst6gbVf4NPztmQFLwZd1W13wEi43YhlFw2jVkVWCu2KrAFjSIOhmFTQk9PaH7xswkfZrI6HEjBlQIAisyiFUai1dXH2Qg4ou/cxQXYl8VXvlaCg+/zz4nR2QBDYOrXNFJRcEiPolA5FtM6aRDI2UH8Hb32ElhafwgQYpfX+d0Dj8zewVL9dnl2f/vj79enrizeI+AP9gpaKYGhIO1PKH1PRvjTmlZeEgXZGayCrqTYXfA71ThzsgnJzQZpco2aDfbIfZI1kBgCOHyq3vOBLhL1LPicSyLtWHKV4dOT5D6XTsVRycQqr0xO5iwLl7v+tdUJSpvApaoFgHgfD1sX529/xDCy439U9xo+BDcUqxKblTVJ07y0Pm9PKBffoU0ierxTmwe+6e+IfPXT38c+R/Cn/WQqHZSzkAsNRhEAgMu/N8jCE5eLjIrpfILm9PPv15PrUvYJdf3Z++haD/gou7xiMoDu8wxBhkSfoPAmA40gED6PE8YvwIk7pCiDsdTlRP4eKdto4usDUOXlHptxt9et4RS0KuUhOlVyGLBnwyX618GoFHLNu5ExKDAOPgdZw4DINHO/A2GDUxmGxmcQwLlJpU5k/rK2iVmkN3ZtZeHuHQyMfWpR9LVwuDA6ZYTwr0IvG1StpRHx9IJuJMYuni4iIZi1h4xc+arSD0Q7J+U5B7Ia/t1EZ99lZnGiEtj87xyQX0Gu5aUwGe4nZ5OmlkSnvRrl+4rNymMv9gYVbUuLd69IHFq7Ls4X9VbELGjANjNa17qNEyLrvjEJ1Xyt4QQUbjE0wp0KACa8gyJAHJnMTlZbWJl62hIhvXVlpjVJ1pH96fRWdGrh5DrLm+wi4qswMq1zRlUevuIIMDwjxE91k2C1fP1p1M2rGkpyMMk0o0bHxCrjWnZe6olTFPnyDW0HsCCLrDPwgCT57aBtNxXEFWuvv8GqGYHq36R5pytI5jPRcjMG9Y6J9HbtaXJ+gU62ztsoI4WRsWezVDRslES1aiESL6zp9XI1RBTjYOqdimcTIlImdne1OcUkQZWWoGaGi2pSKtSQGRQ5qu8cyMDpHNJupcouGChop4KBENnnrvPGqGCEUkfHtc4aJY1AJTO0m+5VWWNqxRC2Wrf56m1adZUko/fVWHN50BumvYtnZQhRk6fUyuk/bGB+L0MYlvAlAY6LTGFoC6SgHP0ANpouK4ZHda3B7iWbe/Ciquy7mfHVdtoXwhg98exb4t2g0IRxTb5mM0CenVJRbE7mauLH0z5mN1zvM2eMIry/96fLiXSsHMJ91UYYkKCzHTlMEYQm5rDUsqE/cqfs0oXTVWSmAqDkxZDirkxqhEF55ZnXDk4JVDhOteX7RClO6nxUBb+yowBI2B0Mh7DqXe/8+QbhjW5uIv+umogThsmBcK+rmHX83ARcXbK1TrdC+5NZtgaCRPCCNofOiwk7hBBqs+XAq6TZp1vqzVJ/y6+7a0gSAV7VTCgp/4rz5sV3esTut/8gJaU88AhXx1B6FdwsYNJpyO8OHMJj50NQOQChKAocIbu8qRPniXEZtt928jpM/2rQPi+5Y5vqSIQ/wrAeTSADKR8lDTW88Evpru2wVLnZCkNqR9hanZFMtk2mUJNkwo/WcPx6zuWY0Vg328qBu2S/bkG0y5ns8eS/LknTY5gJDakT6+EuxFpZNDFVoJNy8RJK2efrYcDjhdF/mElmwQAN7bvKw0NONZYd3p+8u3LM3INNiWJqyTGWssziOEkpL8uiKL6eWlFVeK03hFfhFGLWUyI4ursLMtImypIbCdYqCr6OYCXUlixjUDsdpHyD1LFLvfrV5gxKCxJh2XaGTeg2kWL5KeySIqn75JsNfUchSohXLVGUDYEG2wrsLF1qELY4TNJiEDznk+3+ZAEcbwnhcI/8KacudR5SPlKCeCAsELWjuiniDVLPOcUGTWe1lMkMyLBTPXOmK/OVMEtt39OMankF7j8OeIBNpj/aitIlboF9Qwd7F5dnPZ+cOhRkOd3cVEUC/F7QYW7LgeXQpfFOd4jh6eJogv/3i4SF7IivRMRXlnJG0D4XXoVU9lMj9cFgwBeIEhKSUcUNY1cvX2bPkGaAyK0TPguRqKvs5l1Kf80Fd4fJuFb8HDJJLkc+balbbjHUG4J5uYnURNTr50VEBh+mjUxipsC0T0gwro6JwESFh0xLYmB4WsVZJewJ87fK97s66W917fjjN2C+Z1zDFnFUNmDTkYrlLcwk7JstwJvG/5BXN82t3NnR7/lr7N+4iyj7kWC47j7nWdia26vXtJqtY9cCtWq8262vjZfEjLYcCU22EhMtAlecSTdRIkhzel6TKk2UUdz86DDJ9QssPWU23pknyJ7X8z0ygdvT9JKiUF84w6TOCtGOIVKkaiwoWHlGdtQJqEYQiAddKHnPDXjSQzMK4UFARj44jOmCBZVPK2kxYqsSlErJGINFXmCArwFO7PvY+pviobqbHla0fCxvg26mL2PnnpVENNror0o9PgfMAKL8rKePAzXunQkCOv+IcwUDWCtZ+LRuW7hVUbk1KaiKNgExsgFqykqmMxxiNhE/lhCyH5eU7Rm7FYf1gCqkWEG012U45F8vc8JX7XzZN2/k35v/6xnm/DImfGIu/JvFToYVtEz9tnYFMPJRSNVkeZT7ZOMOYNcHyeYChiPRwHlWeIrozzlDFltFQdPsax3YMt702T2b70pNBDVUGs9ztpzkbGNr6aExayp5vnUBrbfrhTZNpyRWS9/DlQQnGBFoGYJim/q8EWf9KkPU3JsgSyhutv034acvQUp66jRArSfgKNQSWilAfptiYoET4RxTjS4wHu/V9OuKUo8QDO2UDUTXYtm1qWexeBRWtJy0zqY1Btw13CrPJrcxO8wAa0+UzRTNdTdhK/Wl2bE/tP/Lb9Awb1tnvD9Qp8UbFX9YVL2/64gl0qXCZEDQWricOjdVKBKOxbJGIOBiGrU4falovkn559VDthHXSs0n7guw0FR1V93nxJhs9TVux7h9aXDNlaVNBp8Vy01FZOBlvKRjynSq1vW+VJ1RcuLutswJ1akzHV7qHi9Ohll4KKqBcHKi1bd0chiZSgw09ibg8sb+tSZuM3i10jiysel9dG1fKHvTtwUs7+4KSl2O+JOovn4QC4YwiWovsqByEqS4MzCMwOSJToTdH58vMifIitW/EoI4L6R5L13floZz/1GkgxXTN+RTNd2yvCUYeihlZ5tyOKNxUBZ7GDJQNdz9/S5xTK4YbqIn31145KBwVLcCxj5ReCddM6h2WOhIv07uNqJ0kbLW3DoqV+qMuNaYIw3WsD+evTy+vT87OrYY7B2kKdFlwI/rW3OJXbEvIsvHIKmF5/Q1w1UaktFtoxSAOGy5sU+lF4lFZRB47/W/DGxjdnoBoOzs7IZ4aocHNdVuO08qtbowoytlfJEX5f2cdUs4/5QAA\"\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\": \"H4sIAAAAAAACA+1ZW1PbOBR+51cwfsbEMeTGvizDrcxCmgHanZ0dpqPIx4lAtrySHJp2+O+V5IT4ItspvWwfygtYOjqX71wlPu/s7jooIe+BC8Ji50h/JaKz6Dp7euuRxIFePIWEsmUEsczWI5AoQBKpvc/qWzOJYyaRVEzEy6Je5jOGg339K+HsYZ+wjuQIK74zlxjWJA4ZjyBwA8BEK3FkNNhIPKpQdCorRisjsLK1j1lKWTTdFwwTRDsoiIjIGcvZAoI/di/H56fu3xPX87zBLk6lWuWOYfqc8XZiFIFVYSdHIBKEm6nSzGzUGw6h6yF35AW+ezgcHrijQQ/cfhAMp8MQMBr5Wr6R7ogE8AZrpfOMgxCngAJKYrgFzOJA4973vJUYrvAjGOnF7svSwmjyhgjJ+PKKRETq7fURARSw2sn7L0ISz6/QFGjerSZokv3HdAo8BglC+7Uen9Wp5wKcQsWBhNkyL00uE8PiBjAHtVt0gIQooXo1r185EBuC8QfFR05FI4FW0bLihVmUsFin1FHmG3hy9pqPtEK8BjmnUTF2MsZK/YilsbwFviAYjjHWX3fsEbTVIaICcgap4JJIhRnXRv2b0zBvoKKDeFEiqBIVMklj+uGvs39OjidnHy5vb9+d3RQQWJEvEE0N/VzKRBx1Oo+45DSndOh57yuVOHk7vju+HJ/d6L/OLy8a1VCei0MyS7mJsA5X0JEI9h9E3g9Fb2Q/90WuDonQzHBU3pzBAyuH4uqzWu7+FHPk9/pHYU9VkfBw1J92Q78/CLwBDvAo7PneEPqhH/qH3XBwOB0cjLB/MPIPp97BwPMVl+4B6qklx6bQJKV0wlTxWBp4wjGTE1Vt1rU/R07JAmJVhyacTaEU8IYgRISmHO7m6vycUV34DsrIGq9egLSc16UOybnBfA6Iyvknm2MSxuU6PGz7As8h8/Wbu7tJa6w4CXDCgk1RXRfIPMsUY2V43rBuhUhHBUvlhpG/0yC4tb8U7BXbZdpL6k4yjIbe0Nurz4U6BFURlAwzqmnuTiavSTeLJt0GTZ4Yf6QMBa/RpjHnVF8JyO+g/V5Bq1ixlCu2NiSpnjCEHSOcpNq4nudFNvMjiNSIoilUnbsm7fZz+C8F0SatRVb/0CKq0X4BOOVELk9UeMNHWzw4iFL2NOFkQSjM4ExgRE3jqHbatbIoQVNCiSRQY07AWWIpAGbv+OrKqazfb4EfCt7GdHnDmDxXmoqlUPOWEiJ5Cs0QSMRlmnxNPnX93wlVg6YEHpHYBMi14q378dr4ABad3LZL2cxpP/3SybVXy/QLRtMIrvX0t2VHMXPjRiU9ejeUcbP/im5RlKImrE5bVyyIXY1k3y5ZRkmTHL39zTIK02STtFbCdQ7bsvY1mi0QN9gLfR2TouqDTpJFV5PSqvypm9IvoS1KAyKblK0l+Pm6bi5+TQpvqFyUkJ+h+XowcznMiLrDNzp/K+Kfj+1qVrCH5Vp3QaTUr1SNxC2679T14M1Obj51glhsyvUJTbXUc8JFPiT1xKUb7obwmD6hZT5KTKsLUpV243UZhhClVLovGwXqxhHGCcUFZ2liOqDnFfrbeu9kjuJ8p3kb6ynimgjzelR81FCeOW7gaLbHzDBYgVrdfyeAW08rU/SrihpFQt3syrPE5n0p6w+nGSyO1THPBYjy7yTW95oSzRr5Kl2uRV9whGFSmjMOeznirD+3vLsUmm35rqgfdlUcxfK9YXVCEYlsUxrWG+O6K6hbbeT54C4kaflVKErk8pRwm1AlgqRaHec6m8GrIxb5BOuHSqdbuQnU3aEtA8Avp2NpeGjSL+v81yixKbhK7msWaLb+qDpb174suCuc3D72/e5wMAy8Xnc77YvDyJZ2NA4F+l7/AFhCsIWVw2HVDS8X0eq96LPtpiSsr5820t1sNIA4e9sPKXx0USrnlpaQxdPHhGTIbPL64OVtvvZ6I40KFprnnbaV+1flZtPc42T983W+IOru+BWeeITlxn4bSG0QVeCoRoexpr7AZRB8E4qNw9ivHd22gP2+8bq3ndZNla41tur5FuMMo33MZU3yFixcUdYQPlvX72tQy4eJy9V849Zz/1EJ/8MaSXXS36qLNB7bJufapvT/oYphqhqFmrUzwY3VrEj6iqrGEp2ziNa+JbaVvSp+9XG1U4691T909X+pd553vgCDB8bnTCAAAA==\"\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\": \"ddfe2619f4847238fe79ec779a15b0d8df5d178cbed989ac2d73c1480b57a706\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 2884,\n \"content_base64\": \"H4sIAAAAAAACA71WS2/cNhC+61cQ7oESrNWujDyabYQiRZ3ah9iGE+QSGARXnO2ylkiVpNbeGP7vHVLUvuoAPdUHL8UZzuOb4Tc8OTn5KB9BEC5a6RwuPjvu4KJfTG60IFb3poaSGOBiwet7wpcODFmDkUuJyjVXQgo8QG5RY1MkyS383YN1RApQTroNkZYIVF+Dt9ZAsyFLo1viVkCWg+ce16hbc+/e6N5BQT7UrudNorjDkwT3at2CxThcb5T/XUt4mAppO22lk1rZnDxIt0JN4nQ3aWANTQx/G0uRXCv0f/Hly83ZbJYTJ9Gm422XE7viHRDMhtS6V86SBjg6disMH123KCnIlY6O82TPc0547bRBG/2ildbiFrEexJx0mLcHZ6HFhmhDeNcZveYNkWoJBhTGFvzYIjk5OUlk22njiMfThzZ+/2W1Gte9aRq5KMyA8tEuGKNNknw6/3TNLn+vKHoRk7PZ2ZtyVpaT76gyMdCCkNzHPTElTb6e336+vL6qyiRJBCyJNywNpBhkD9k8Ifgnl0RpR8LWsOP/DJcWyFe/ee79pugOVaTAbHslsJTHxQsY0yx6snwJLMpYC45j2vzA7xiLtFIhoIjWIM6FrF2WBZ2fyHXnk0FMA8j7bVevoL7HOLQvOibBQ0/hujNgUS0nCrvEYDHW+AWiGLOlLbSaSUFR9K+09wH6ttW8q6oI+xDXEqt9DxtvIKXoxHcFzQf18TPbWUWnUfvI3b5Lt+lGv6h8l/kcpXKha3fbVRVrmh2ASIfO3aUUjo1pROGdN3mlFfhmPYZ9pxULEB3oB1sFheJPcCndv5M0+1Eh/am8kdZlIY4GVNjK3lfl7OxV2MNSHZ0Y/AZs8ctnEs6MTjw1kCca7wYbSzOPhckPJWMV5hGunXjsITbQB53TQFSTA6KaBKLCkq64ZRGY+Qto+pvjEc33gWGBZOh8m/aB1DKsKhjsUvRD5x95Y/H4yB0scIfZk9Q9firHthp1w5E+RoXneOFaLlUae86Zza7HAh/zThYWzFrWyEYBIB8Rd/WKRJK5vr384/Iqv9K3yCAGapc7fQ+KLWUDB9cDMawOeaqIUyEdbJzS6bqcCqilr4Cd0tNYIhSMbPFrrE9V0nyFswW/qif6AUugjfweCAwL8xtwgzeYnu5CSdE4N1PTq6mFGjG008DGk1W/mCJ22iA0k9H5tJFLqDd1A5NggmbP2TYZ3YECc5zLopeNYIMsPZLdGP24ucDubVD29JztoZVmO8N+UkXrhf9J4/nc0z4iUJWv8V74MYdNoewP+GCUFj6/3lYVDrXsUJM/VFstP8PTcvbq59dv32a/jEZCC/KHcPG86M2RBbB946qXydoPpqLRXNhgIksOTxV950dZunKuYzFGP3f1wjcaCMZdNc66YrtQ+iHdfvh/3/H2FOg6K6TVvnwcscyH4cIO7iTD54hWuG7Ytqxj1Lb6YnB0xGP+ouA1Nww7fMUG6gAxqGDPBAJAK+gKny64QCMdliXcp12aON6VG1AQfdvZdMg7AgGPNXSOnIcf/yjAgoYJPT/CqfrfOWsoBir1anzK4e6Sy6Y3/mxEaXz1sV7xNQr5wuNpWBz09Hl/fu1Rdcgy33+UFP7NFZ4JA9+HUTZIai3gYJSVs9n7aid7X71+927+QlN+o3uNhQN4d+Q/Fmj3ivm8sQ7a80fp0jIb+NBzNhInJsaY4tj1rKooY55EGaNDPAOjJv8AHu7dPkQLAAA=\"\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 \"root-authority-receipt-template.json\": {\n \"sha256\": \"2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 941,\n \"content_base64\": \"H4sIAAAAAAACA4VS0WobMRB891cIP+dydwaHJlBKwWnxQ01IA308ZGnOFtFJ15Xk2Cn9967u7DhpA30Tq9nd2Zn5NRFi2pPvfZC2MXp6I6bL1ZdF8eOuqKrqunio5uWzNesP8+q6LqieXuSODp0/oo1rdTGrZld1VddFhhaEDtrIaLx727EDBS5yW30uhq2cza+45pK1Qzn4RAoNYWeO8Jcv7KFS9NT0Vrp3Wh1v3aHxKSrf4R2AVAwYqGXyd7erxXL1daQoU9x6MvHQdF4jf39efFuult8fbu9HRJS0Qcw/BGm7m8e0BjlEhJKksUY6haouWRJPLEGhocYLhm6+3rRGDcubDrxsEJC8j0Vr9ozn7RvjivEIllHqtVSPYzclFw2flFmCnzwHutmQdJlQK23AgDud/jOBDnl+aU0LdVAWZdY7lP91rDzOCJ+Ohn2sX1/Aa2V8rWk2Ck/NORRntXvO1u6UrJeyNoEDZwYh/mpQCn38Z8PaJ6e5ysTkhpPhrc3KND2NgrBwz9BvdHA+Dh4+oOOsRAgTBNcEc9Vgn8oTt0txzw6IgBhEUL6H5qmnoYMkkRKEd/YgZBtBgjOUpBXKu9Zkn0U70MsfmX1OgfCtiFteiT2jhcOT6JkwYskDunAhCFEaF8RoeZ6WiNjXk+liDQ4RGGchAy6nk9+TP8/xgVatAwAA\"\n },\n \"root-recovery-receipt-template.json\": {\n \"sha256\": \"67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1033,\n \"content_base64\": \"H4sIAAAAAAACA22TTY+bMBCG7/srLM5L1pBAyJ56qCr1UlXVSj1awzAk7hob2SYqrfrfO3xoS7I9Ic/reefDD78fhEhetW2SZ5Fo2zrfUZM2hDpoZ3feuZiGoSd/1YEFN0Q4U+oJ3ZX8mDxO6b13vQtglJ5dPn/59DH9/jWVUp7SF1k8/TK6rgp5ylKfLRnBDR5JebrOZTjLDsbMUkedU+ECeVFuw/0FAm0DngxxSEGM1PVxqf2mIuCF/mMzzaO4c91qmhJaMIGWumAHHuHfrOptyO01HLwnG5WFqK+keB/oOgoKDejuztLVgb3YCeK2hzWVt1ZzixHiELYy/eyNRh2n7bhXuh1rrY7OtnzpxlY3rOg4KudVQNeT6nToIOJle2vqSPPqLwQmXsat1FBv3NhN/sPdNrmcPnfQ3wv9Fe9D3hlTA74q3TEpEw/M1Jl+uB26wbiu3gWHGszTenx6B92H5dmej+Ue9+VB5ljVdEQ8YFY3GZRZme/527anLCubIs8PWXU8HvKiPhRwlFmFKKtqD8ltPwtzU0N4KmuJZVNVGVVF0WRNVlRS7jlEJ0nt/iTzMqd8MWhBG35DBNvoBuINhNbN5+SFETSsCQ4IwMgkCWabXwRJOC+g59e+gtmJb2s7M4OjGAIFvqDP2jJ8y981gUeakV728LhyyD3MK92c2ZYpYJycXcdjEZqRHWYhCG1D5IhwrQCx0mPGZaS3iXbJw5+Hv9yIXHoJBAAA\"\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" + }, + { + "item_id": "owner-product-final-ack-md", + "media_type": "text/markdown", + "content": "# Exact509 zlib release Product source acknowledgment\n\n```yaml\nreviewer: informed-decision-owner (agent informed-decision, codex)\ndecision: approved\nwork_item: INFD-WP-ADHOC-2026-10-11-T09\nscope: exact509 distinct T05 release technical source preparation only\nmanifest_sha256: 767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c\ncomment: >-\n Same completed T09, with final source-refinement record prepared before\n formal acknowledgment. This resolves retained source findings; it is not\n human approval, privileged outage consent, a current native outcome,\n new scored trial or task closure. Exact final ACK/row19 memo-reference\n rebinding remains to be checked before first human post.\n```\n\nAll509 staged hashes independently verify. Prior481 source map reconstructs\nall481 exact bytes; Product135/5365327 and64/ad635 review-history maps reconstruct\nall prior file hashes and original manifest digests. This review additionally\nretains full previous135file review and exact5365327 manifest as deduplicated\ncontent objects with a complete path/hash mapping under\ndocs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/.\nInitialc67 and all earlier source findings remain historical, not rewritten as\nprior success. The unavailable original67 full snapshot remains disclosed.\n\nAll38 source/synthetic tests pass, including full mocked main phase dispatch,\nsource-hash/pre-journal refusal, private copy/created-volume/pre-admin/post\nintegrity, actual Pod ephemeral drift before effect, deterministic bundle\ncorruption/body-limit/native typed decoder, coverage/expiry mutations, exact\nnon-pruning current-operation relation, outage403 refusal and separate recovered\nrollback verification. No actual native phase, container, provider call or real\ndatabase/PDP was executed by this review.\n\nThe original wiring/emptycoverage/duplicate-document/body-export/native-shape\nfindings are corrected. Actual native typed decode accepts12unique contents\nunder13 memo labels. Default JSON register207511bytes is below256KiB, with\n54633bytes headroom before later review attachments. Gzip bundle decompresses\nto exact source hashes/lengths. Original five Product native-shape cases now\naccept without invented enums: native body without memo_id, comment/null,\nprepared, in_flight and system rows are counted, never interpreted as approval.\nFour independent optional-ID/version/shape mutations refuse. Review=None with\nempty dispositions is a valid source shape, not proof of current consent.\n\nMinimal postReady proof uses fixed existing authenticated canonical GET for\nsourceT05@1; request identity explicitly derives from that fixed route, not from\na claimed native body field. Optional response identity/version must match if\npresent. Native source contract returns only review/dispositions; shape is\nbounded and body size capped. Only HTTP200, UTC observationtime, derived request\nidentity, has_review and disposition_count plus explicit non-inference flags\nleave the helper. No review/disposition body, freeform notes/reasons, states or\nactors are exported. Full-command private-sentinel/token-error/HTTP403 tests\nprove suppression. Existing credential stays within the admitted StateHub Pod,\nNoRedirect/proxy-disabled path unchanged. Actual LifecycleService native-body\nfixture runs with synthetic callbacks, no DB/PDP. Later actual new-image Ready\ncorrelation and real canonical `_authorize` path success remain required and\nseparate from installed synthetic2allow/8refuse and from actual founder authority.\n\nThe new distinct image release keeps exact publishedf558/source9b4, native\nimage763/sourcec96 baseline, schema5/config/PVC/identity and source render pins.\nFresh private drill/copy, isolated offline initializer/UID10001 pre/admin/post\ncompatibility and exact created-clone cleanup precede fresh cutover backup/copy\nand manual one-Deployment explicitfalse-prune release. Intent is durable before\neffect; ambiguous/failed phases are retained and cannot replay. Rollback image\n763/sourcec96 preserves latest DB and does not depend on failed candidate DB.\nCurrent-attempt operation/revision/resource/initiator/time and explicitfalse\nrequest are required before accepting Argo omitted false; true/null/string and\nforeign operations refuse. Old approved R2 helpers/journals remain immutable,\nINFD-IN-0010 unpromoted/unimplemented.\n\nProposed outage recovery is explicit in the new memo question/terms/highlight\nand protocol, requiring a NEW exact human acceptance. It is only manual same763/\nc96/latestDB-preserving recovery after this recorded release and failed candidate\nservice outage, <=30minutes AND execution deadline. Pre-release actual confirmed\nconsent is cached privately and hash-linked to this release intent; it is historic\nand does not claim fresh later revocation knowledge. Root's fresh unavailable\nwitness/sealed UID/source/candidate Ready0 proof is required. No401/403/revoked/\nconflict/mismatch/healthy-service or backup/copy/release/normalverify/other-trial\nfallback. Subsequent recovery verification needs same-journal COMPLETE rollback,\noriginal outage link and exact763/c96 Ready1. Native window recheck immediately\nbefore patch prevents stale preparation from extending the term. Later-revocation\nuncertainty is disclosed; source acknowledgment neither grants that exception\nnor promotes autonomy. Item19 remains proposed until founder disposition.\n\nFresh full scan gate binds immutablef558 config622/eleven diffIDs/source labels\nand exact38OS+6Python/44PURLs with fixedzlibr1, report bytes/hash and no findings.\nNow must precede DBNextUpdate and scan age<=4hours; the retained Oct11 scan is\nnot valid through Oct12 execution expiry by assumption. Routine refresh/rescan\nof same image is permitted/required, new findings retained and release/closure\nrefused. No zero-stale, future-safety or estate-grade claim.\n\nT05 remains progress, WP0009 active. Independent final Platform review, root\nexact source/plan/memo binding, separate confirmed founder source1/newreviewown1\nacceptance, actual fresh native drill/release and installedpackage/runtime/full\nscan/canonical-provider proof remain pending. Root will add only the two final\nowner acknowledgments and proposed row19, then request narrow reference/hash\nconfirmation. No owner checkout write, native/privateDB/customer-data action,\ncredential access, publication or push occurred in this source review.\n" + }, + { + "item_id": "owner-platform-final-ack-json", + "media_type": "application/json", + "content": "{\n \"review_id\": \"RPF-REVIEW-20261011-INFD-ZLIB-NATIVE-R4\",\n \"work_record\": \"RPF-IN-0009\",\n \"role\": \"railiance-platform technical owner only\",\n \"status\": \"technical-agreement-source-prepared-new-human-proposal-only\",\n \"release_manifest_sha256\": \"767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c\",\n \"release_paths\": 509,\n \"actual_published_manifest_sha256\": \"6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9\",\n \"candidate_image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23\",\n \"rollback_image\": \"forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a\",\n \"rollback_source\": \"c96b0c6d881e855d1d158003c6de90ef390262e2\",\n \"artifact_source\": \"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc\",\n \"validation\": {\n \"source_manifest_sha256\": \"767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c\",\n \"source_paths\": 509,\n \"all_source_and_executor_case_hashes_match\": true,\n \"synthetic_test_methods_passed\": 38,\n \"additional_checks_passed\": 18,\n \"actual_owner_source_outcomes_shape_exercised_in_mocked_repository_fixture\": true,\n \"provider_synthetic_private_fields_never_emitted\": true,\n \"all_four_render_hashes_unchanged_from_previous_review\": true,\n \"authority_journal_actuator_native_program_unchanged_from_481\": true,\n \"current_public_scan_matches_exact_full_contract\": true,\n \"native_or_private_database_access\": false\n },\n \"reviewed_boundaries\": [\n \"Original operation/snapshot dispatch wiring fixed and complete mocked main source guards/journal/intent exercised; no uncertain phase retries.\",\n \"Exact four render files and helper/case/memo hash relations before authority/dispatch; root final source commit must match before human post.\",\n \"Native-only fresh fixed-origin confirmed founder/source1/companionreview1 normal authority, exact manual existingApplication UID/RV/source CAS, one Deployment explicitfalseprune and current completed exact operation proof; old R2 authority not reused.\",\n \"Exact Deployment/config/PVC/full Pod seals, owner chain/image/UID/GID/Ready and ephemeral refusal; source/admission drift refuses before effect.\",\n \"Protected bounded fresh drill/copy/isolated new volume/clone/pre+post schema5 integrity/counters and cutover backup; latestDB retaining763/c96rollback with separate recovery verify.\",\n \"Fresh immutableartifact scan binds exact622config/11diffIDs/rootfs/source labels/44canonicalPURLs/38OS6Python/zlibr1, zero all findings; age<=4h and DBNextUpdate/current report hash mandatory release+verify.\",\n \"PostReady proof uses actual native review/dispositions response, fixed request route/version andHTTP200/status/time/boundedshape/counts only. Private bodies/notes/reasons/actors/states never leave; no approval/advisory/provider-verdict inference. Root separately correlates exact ready candidate PodUID/image/source and checks current authority.\"\n ],\n \"proposed_manual_outage_recovery\": {\n \"requires_new_founder_consent_in_exact_packet\": true,\n \"scope\": \"Only this trial failedf558/source finalrevision ->763/c96 Deployment-only latest schema5 DB retaining manual supervised recovery.\",\n \"bound\": \"<=30minutes after actual release and before2026-10-12T23:59:59Z, checked again immediately beforepatch.\",\n \"evidence\": \"Independentroot-confirmed exact native accepted receipt cached before release, privateimmutablehash/journal/attempt pins; fresh transport-unavailable or502/503/504 and actualfailedcandidateplacement.\",\n \"forbidden\": [\n \"backup/release fallback\",\n \"401/403\",\n \"explicitrevoked\",\n \"conflict\",\n \"identity/scope mismatch\",\n \"healthy candidate\",\n \"foreign trial or futurecustomer reuse\"\n ],\n \"revocation_limitation_disclosed\": true,\n \"current_revocation_verified_during_outage\": false,\n \"autonomous_or_signed_grant\": false,\n \"recovered_verify\": \"Separate COMPLETE rollback/original outageanchor and actual763Ready1/data/custody/current operation; never implies PDP acceptance or taskclosure.\"\n },\n \"history\": {\n \"prior_review_manifest_sha256\": \"9d0ff679c63c58465b940ed72a258b8f9a12f413da97aad01ec7e311db55a445\",\n \"exact130_files_plus_manifest_losslessly_preserved\": true,\n \"dedup_distinct_blobs\": 82,\n \"path_map_entries\": 130,\n \"archive\": \"changes-requested-9d0ff679\",\n \"prior_unissued_draft_remains_explicitly_superseded\": true,\n \"original67_fullsnapshot_absence_not_fabricated\": true\n },\n \"remaining_gates\": [\n \"Attach exact two owner ACKs and proposed checklist row19 only; confirm narrow final packet rebinding before human post.\",\n \"Commit prepared source and retain exact actual revision/fourblob proof; NEW founder confirmed disposition for full proposal including bounded outage exception.\",\n \"Fresh exact source/native custody/admission/headroom/current authority before each applicable phase; actual current immutable artifact fullscan/DB freshness before release and verify.\",\n \"Actual native installed/schema/health/current canonical PDP preservation proof before T05/risk closure; preparation and synthetic tests do not establish completion.\"\n ],\n \"scope_limits\": {\n \"human_approval\": false,\n \"native_action\": false,\n \"backup_restore_database_access\": false,\n \"credentials_read\": false,\n \"owner_source_write\": false,\n \"push\": false,\n \"T05_complete\": false,\n \"risk_closed\": false,\n \"other_owner_role\": false\n }\n}\n" + }, + { + "item_id": "security-close-down-checklist-md", + "media_type": "text/markdown", + "content": "# Security close-down checklist\n\n**Owner:** the-custodian, on behalf of the founder. **Started:** 2026-10-03.\n**Purpose:** while the estate is in build mode (orientation \u00a70), agents may fix, simplify or relax parts of the security layer. Every such relaxation, and every control known to be unarmed, is listed here. At the production close-down the founder works this list, arms each item, and hands over the keys. After that, changes to the security system need elevated clearance.\n\nAdd a row whenever you loosen, shortcut or leave unarmed a control. Remove nothing; mark items armed with date and evidence.\n\n| # | Control | Current state (build mode) | Re-arm at close-down | Owner | Added |\n|---|---------|---------------------------|----------------------|-------|-------|\n| 1 | Warden secret-fetch policy check (`check_fetch_policy`) | Misrouted to the ops-warden SSH signing pin; caller auth there binds only `ops-warden`, so every other owner gets 403. Bug reports: ops-warden `faf11061`, access-engine `b792c5d0`. access-engine built a separate pin `flex-auth-ops-warden-fetch` (package `ops-warden.secret.read` v1, allowed set generated from the routing catalog, deny by default, caller auth enforced; access-engine `02b15a7`). Deployed 2026-10-03 (access-engine `424f1e5`, release `flex-auth-ops-warden-fetch`, ClusterIP 10.43.151.3, tunnel `:19091`). Probes: allow \u00d72; deny `unknown_need`, `wrong_system`, `wrong_resource_type`; unbound system 403; no token 401. ops-warden routes fetch checks there (`7d4381e`, live `fetch_flex_auth_url` set). The gate is armed with a correct policy; its residuals are rows 5 and 6. | Fetch checks go to an evaluator with an explicit secret-read policy per owner system, deny by default, caller auth enforced; positive and negative evidence recorded. | ops-warden, access-engine | 2026-10-03 |\n| 2 | informed-decision posing path | Each memo needs an attended requester login, a hand-edited exact-record admission package and a manual store load. Redesign specified in informed-decision `docs/specs/FrictionlessDecisionIntake.md`, workplan INFD-WP-0005 (`a973d36`; intake validation and hub write-back built and tested, nothing deployed). Its build-mode relaxations are rows 7\u201314; mark each live as it lands. | Attribute-based admission and workload-identity intake, with humans-only binding, MFA freshness, one question per memo and audit evidence verified. | informed-decision, access-engine, approval-engine | 2026-10-03 |\n| 3 | State Hub qualifier sync (C-41) | `statehub fix-consistency` reports PASS without pushing wait qualifiers; the direct checker run works. Reported: state-hub `70d08f35`. | CLI path fixed and covered by a regression test; hub decision and gate data trusted again. | state-hub | 2026-10-03 |\n| 4 | Provenance of `platform/workloads/tenant-engine/audit-core-sender` v1 | Value is correct (`already_identical`), but nothing records who first seeded it. | Audit-trail entry reconstructed or the secret rotated under a recorded lane. | railiance-platform, ops-mason | 2026-10-03 |\n| 5 | Fetch-pin subject identity | `subject.id` is asserted by warden (its subject env, or `operator`). The caller binding proves ops-warden asked, not which human operator did. | Bind the subject to an attended human identity (KeyCape/NetKingdom claim) on fetch checks. | access-engine, ops-warden | 2026-10-03 |\n| 6 | Fetch-pin lane set baked into the image | Any change to a secret lane in the catalog needs a regeneration (`tools/gen_ops_warden_fetch.py`) and an image rebuild. A new owner system also needs a binding redeploy. secrets-engine owns no lane and has no binding yet. | Lane changes flow through a reviewed regeneration pipeline, or the policy data is loaded at runtime with integrity checks. | access-engine | 2026-10-03 |\n| 7 | informed-decision intake submitters (R1) | Posing is no longer operator-gated: any listed intake submitter can put a memo in front of the founder. Not yet live (INFD-WP-0005). | Submitter and memo-class lists are reviewed data with a signed regeneration path. | informed-decision, access-engine | 2026-10-03 |\n| 8 | Posing via State Hub (R2) | Workstation agents pose through State Hub, whose API is unauthenticated on the loopback tunnel; `drafted_by` is asserted. Not yet live. | The hub authenticates its writers before forwarding; the forwarded submitter carries that identity. | state-hub | 2026-10-03 |\n| 9 | Admission on carried context (R3) | The decision point decides on context the review service carries (approval requester, human_control, digest, submitter, class). Not yet live. | access-engine verifies a signed approval-engine claim and a signed intake receipt itself. | access-engine, approval-engine, informed-decision | 2026-10-03 |\n| 10 | Requester client credential custody (R4) | The `informed-decision-sitting-requester` client credential moves from attended custody into workload custody (ESO into the review pod). Not yet live. | Rotation schedule, ESO read audit, sibling-path denial proof. | railiance-platform | 2026-10-03 |\n| 11 | Admission data baked into the image (R5) | Admitted classes and submitters are baked into the access-engine image. Not yet live. | Runtime-loaded policy data with integrity checks, or a reviewed regeneration pipeline (as row 6). | access-engine | 2026-10-03 |\n| 12 | Hub decision write-back (R6) | Answered memos resolve hub decisions through the unauthenticated hub API. Not yet live. | The hub requires the informed-decision workload identity on resolve and records it. | state-hub | 2026-10-03 |\n| 13 | Approval create idempotency (R7) | No idempotency key on approval create; a crash can leave orphan draft approvals. Not yet live. | Idempotent approval create. | approval-engine | 2026-10-03 |\n| 14 | Founder notification channel (R8) | The founder is notified only through the hub inbox. Not yet live. gate-house F3: any hub writer could send a fake memo notice. | An authenticated notification channel carrying only id and question. | informed-decision | 2026-10-03 |\n| 15 | Posing volume (gate-house F2) | With posing ungated, a submitter can flood the founder with memos; habituation would turn the human control into theatre. A per-submitter volume cap is a SHOULD in build mode. | Per-submitter volume budget enforced (MUST). | informed-decision | 2026-10-03 |\n| 16 | Intake doctrine conditions (gate-house C1\u2013C6) | Draft ruling GH-DEC-2026-023 (gate-house `aac350d`, status proposed, awaiting the founder). C1\u2013C6 apply now; R3 (row 9) is the main relaxation (F1), R2 (row 8) also covers C6, R5 (row 11) also covers C5. | Remove the `compact-sitting` exact-record branch once its memos are terminal; re-arm R3 with an access-engine approval-claim check and a signed intake receipt. | gate-house, informed-decision, access-engine | 2026-10-03 |\n| 17 | Owner reviews and approval recording (canon `delegated-owner-review_v0.1`) | Owner reviews required by CCRs and similar records are written by each owner repo's worker agent from its INTENT.md, not by a human owner. The requesting agent records the founder's resolved hub decision (status, binding confirmations, admission markers) and commits. The founder still decides; `decided_by` is unauthenticated (rows 8, 12). | Reviews and recordings signed by authenticated agent workload identities; recording tooling verifies an authenticated human resolver; human owner review restored for red-lane records if wanted. | the-custodian | 2026-10-07 |\n| 18 | Ordinary authenticated operator/PDP admission for User Engine application.register | Executed one-use exception USER-CATALOGUE-INFDEC-20261011-R1 under confirmed founder approval b859698b-5d08-4da5-9599-4760c6a799f1 (02:07:09Z). Exact executor b0dbbb97 and transport3e594e0e; packet307c4fc5, grant SHA 72ee846034809f4ae6848eac3a43f2b7390f1df7a67ede50eff7435d1b43f839. Two exact informed-decision catalogue records committed; genuine denial retained, three truthful audits, one consumed ledger and unsent/unclaimed registered event verified. Private grant removed. Ordinary management admission remains unmet; no IAM/human claim/future registration/targeted replay authority. Execution deadline2026-10-12T23:59:59Z does not erase facts. [Outcome](evidence/2026-10-10-security-consolidation/user-catalogue-independent-postapply-verification.json). | Before customer production, supported authenticated operator management with genuine ordinary allow/deny/attribution and unavailable refusal; retire bootstrap use, preserve/reconcile ledger/audits/events. Broader USER-WP-0026-T03/USER-WP-0028-T02 remain live; no human journey completion inferred. | user-engine, access-engine; Custodian tracks | 2026-10-11 |\n| 19 | Fresh informed-decision readback during a failed T05 rollout | Proposed only; no exception approved or used. The new INFD-WP-0009-T05/zlib-85091-r1 packet will request manual, supervised rollback to exact image763c/sourcec96 if the candidate makes informed-decision unavailable. Proposed limits: separately confirmed founder consent retained before release, exact same journal/source/Deployment/config/PVC, at most30minutes after release and before2026-10-12T23:59:59Z. Later revocation cannot be checked during the outage. No fallback on401/403, explicit revocation, conflicts or mismatches; no cached authority for backups or release. | Close this one-use entry with actual disposition and trial outcome. Preserve the ordinary fresh-authority gate; do not reuse the outage path after its window, for another trial or for customer production. A future standing recovery mechanism needs independently obtainable authority and its own review. | informed-decision, railiance-platform; Custodian tracks | 2026-10-11 |\n" + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json b/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json new file mode 100644 index 0000000..58e1bdf --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json @@ -0,0 +1,243 @@ +[ + { + "id": "infd-20261011-zlib-remediation-r1", + "register": { + "memo": { + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b" + }, + { + "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:2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d" + }, + { + "item_id": "owner-product-final-ack-md", + "label": "owner-product-final-ack.md", + "hash": "sha256:fe7b2153e525a23980aee63e62efcd7fd3dad18145633f8f57d8d2b4640c99d4" + }, + { + "item_id": "owner-platform-final-ack-json", + "label": "owner-platform-final-ack.json", + "hash": "sha256:30c200b98f8692a8456e786d0c7a3acb5ff3634973911b088f56aa178d393fee" + }, + { + "item_id": "security-close-down-checklist-md", + "label": "security-close-down-checklist.md", + "hash": "sha256:94d5757bfd612c489d419f421c0abbaf3d5a991cc1a49d04a33f957aed3ddd8a" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null + }, + "documents": [ + { + "digest": "sha256:82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35", + "media_type": "text/markdown", + "content_base64": "IyBSZXF1ZXN0ZWQgZGVjaXNpb24KCkFwcHJvdmUgdGhlIGV4YWN0IG5ldyBUMDUgemxpYi1vbmx5IGltYWdlIHJlbGVhc2UgYW5kIHByb3RlY3RlZCBzYW1lLXNjaGVtYSBjb21wYXRpYmlsaXR5IGRyaWxsLCBhZnRlciBmaW5hbCBpbmRlcGVuZGVudCBQcm9kdWN0IGFuZCBQbGF0Zm9ybSBhY2tub3dsZWRnbWVudHMuIFRoaXMgcGFja2V0IGlzIHByZXBhcmVkIGFuZCB1bmFwcHJvdmVkOyBmcmVzaCByb2xsYmFjayBzZXJ2ZXIgZHJ5LXJ1biBwYXNzZWQgd2l0aCBleGFjdGx5IHRoZSBiYXNlbGluZSBpbWFnZSBhbmQgZW1wdHkgZGlmZi4gUm9vdCByZXRhaW5zIGV4YWN0IGZpbmFsIG93bmVyIHNvdXJjZSByZXZpc2lvbiBhbmQgaW5kZXBlbmRlbnQgYWNrbm93bGVkZ21lbnRzIGJlZm9yZSBhc2tpbmcgZm9yIG5hdGl2ZSBmb3VuZGVyIGRpc3Bvc2l0aW9uLiBUaGUgcHJpb3IgVDA0IGFwcHJvdmFsIGlzIGV4Y2x1ZGVkLgoKVGhlIGFkbWl0dGVkIG93bmVyIENJIHB1Ymxpc2hlZCBpbW11dGFibGUgaW1hZ2UgZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyBmcm9tIHNvdXJjZTliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMuIEl0cyBhY3R1YWwgZnVsbCBzY2FuIHJlcG9ydHMgemVybyBmaW5kaW5ncyBhY3Jvc3M0NHBhY2thZ2VzLiBUaGUgc2FtZSBzY2FuIERCIGZpbmRzIG9uZU1FRElVTSBvbiBjdXJyZW50aW1hZ2U3NjNjLiBTaWduZWQgb2ZmaWNpYWwgQWxwaW5lIHpsaWIxLjMuMi1yMSBpcyB0aGUgc29sZSBwYWNrYWdlIGNoYW5nZTsgYWN0dWFsIHB1Ymxpc2hlZCBmaWxlc3lzdGVtIHByb29mIHNob3dzIG9ubHlsaWJ6IGFuZEFQS2luc3RhbGxlZGRhdGFiYXNlIGNoYW5nZXMsIHplcm8zMTNkaXJlY3RvcnltZXRhZGF0YSBjaGFuZ2VzLCByZXRhaW5lZG5pbmViYXNlbGF5ZXJzIGFuZCB1bmNoYW5nZWQzNmFwcGxpY2F0aW9uZmlsZXMvcHVycG9zZXBvbGljeS9jb25maWcvY3JlZGVudGlhbHMvYXVkaWVuY2UvcmVzb3VyY2VzLiBSZWdpc3RyeS10by1kYWVtb24gY29uZmlnIHNlcmlhbGl6YXRpb24gZGlmZmVycyB1bmRlciBjbG9zZWQgdmVyaWZpZWQgbm9ybWFsaXphdGlvbiwgd2l0aG91dCBydW50aW1lIGNoYW5nZS4KClRoZSBleGFjdCBvcmRlcmVkIHByb3RlY3RlZCBkcmlsbCBhbmQgcmVsZWFzZSBhcmUgc3BlY2lmaWVkIGluIG5hdGl2ZS1iYWNrdXAtcmVzdG9yZS1wcm90b2NvbC5tZCBhbmQgaGFzaC1ib3VuZCBleGVjdXRpb24gYnVuZGxlLiBOZXcgYmFja3VwIHBhdGhzLCBpc29sYXRlZCBjbG9uZSBhbmQgam91cm5hbCBhcmUgZGlzdGluY3QgZnJvbSBvbGQgZXZpZGVuY2UuIFJlYWwgcHJpdmF0ZSBkYXRhIHdpbGwgZW50ZXIgb25seSBhcHByb3ZlZCBwcml2YXRlIGN1c3RvZHkgYW5kIHRoZSBpc29sYXRlZCBuby1uZXR3b3JrIGNsb25lOyBjb250ZW50IG5ldmVyIGVudGVycyBwdWJsaWMgZXZpZGVuY2UuIEZhaWxlZC91bmNlcnRhaW4gcGhhc2Ugc3RhdGVzIHJlbWFpbiBkdXJhYmxlIGFuZCBjYW5ub3QgYmUgcmV0cmllZC4gUHJpb3IgVDA0IGZhaWxlZCBjb3B5L3ZlcmlmeSBhcmUgcHJlc2VydmVkLgoKQWZ0ZXIgc2NoZW1hNS9pbnRlZ3JpdHkvZXhhY3RjbG9uZWNvdW50cyBwYXNzIGFuZCBjbG9uZSBjbGVhbnVwIHN1Y2NlZWRzLCBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5IHByZWNlZGVzIHRoZSBleGFjdCBtYW51YWwgaW1hZ2Utb25seSBEZXBsb3ltZW50IHN5bmMuIEN1cnJlbnQgYmFzZWxpbmUgaXMgaGVhbHRoeWdlbmVyYXRpb24yNS9pbWFnZTc2M2MvQXBwbGljYXRpb25jOTYuIEltbXV0YWJsZUNNNmMvUFZDL1BvZGNvbmZpZ3VyYXRpb24vUERQIG9yaWdpbnMgcmVtYWluIHNlYWxlZC4gRnJlc2hub2RlQ1BVMzQ2MG9mNDAwMG0gc3VwcG9ydHMgdW5jaGFuZ2VkUmVjcmVhdGUsIHdpdGggYW5vdGhlciBjaGVjayBiZWZvcmUgZWZmZWN0LiBCcmllZiBhdmFpbGFiaWxpdHkgaW50ZXJydXB0aW9uIGV4cGVjdGVkLgoKUm9sbGJhY2sgcmVzdG9yZXMgRGVwbG95bWVudGltYWdlNzYzYyBhbmRBcHBsaWNhdGlvbmM5NiB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBvbGQgc25hcHNob3QgcmVzdG9yYXRpb24uIFNlcGFyYXRlIGluc3RhbGxlZC9uYXRpdmUgaGVhbHRoL2N1c3RvZHkvUERQLWdhdGVkIHJlYWRiYWNrIGFuZCBhY3R1YWwgbmF0aXZlIGltYWdlIHJlc2NhbiBwcmVjZWRlIFQwNSBjbG9zdXJlLiBBbGxwaGFzZSBzdGFydHMgZXhwaXJlT2N0MTIgMjM6NTk6NTlaOyByZWxlYXNlIHJlc2VydmVzMzBtaW51dGVzZm9ydmVyaWZpY2F0aW9uYW5kcmVjb3ZlcnkuIEFmdGVyZXhwaXJ5IGEgbmV3Zm91bmRlcmRlY2lzaW9uIGlzIHJlcXVpcmVkLiBFVVIwbmV3cmVjdXJyaW5naW5mcmFzdHJ1Y3R1cmUsIGJvdW5kZWRwcml2YXRlIHN0b3JhZ2UgYW5kdW5wcmljZWRhdHRlbmRlZHRpbWUuIE5vIG5ld2RvY3RyaW5lL2F1dG9waWxvdC9jcmVkZW50aWFsZ3JhbnQgaXMgYXV0aG9yaXplZC4KCgojIyBFeHBsaWNpdCByZWNvdmVyeSBkZWNpc2lvbgoKQWxzbyBhcHByb3ZlIHRoZSBwcm9wb3NlZCBpdGVtMTkgbWFudWFsIHNlcnZpY2Utb3V0YWdlIHJlY292ZXJ5IHRlcm0gYWJvdmU6IGV4YWN0IGhpc3RvcmljYWwgcm9vdGNvbmZpcm1lZCBhY2NlcHRhbmNlIGNhcHR1cmVkIGJlZm9yZSByZWxlYXNlIG1heSBhdXRob3JpemUgb25seSBzYW1lNzYzL2M5NiBvbmUtRGVwbG95bWVudC9sYXRlc3REQi1wcmVzZXJ2aW5nIHJvbGxiYWNrIGFmdGVyIGZhaWxlZGY1NTggc2VydmljZSBvdXRhZ2UsIHdpdGhpbjMwbWludXRlcyBBTkQgdGhlIGV4aXN0aW5nZGVhZGxpbmUuIFJvb3QgbXVzdCByZXRhaW4gZnJlc2h1bmF2YWlsYWJsZS9mYWlsZWRjYW5kaWRhdGUgd2l0bmVzc2VzIGFuZCBleGFjdGNhY2hlL2pvdXJuYWwvY3VzdG9keSBwaW5zLiBEdXJpbmdzZXJ2aWNlb3V0YWdlIHN1YnNlcXVlbnRyZXZvY2F0aW9uIGNhbm5vdCBiZWNoZWNrZWQ7IHRoaXMgYm91bmRlZCB1bmNlcnRhaW50eSBpcyBleHByZXNzbHkgZGlzY2xvc2VkIGFuZCBjb25zZW50ZWQgdG8gaW4gdGhpcyBuZXcgZGVjaXNpb24uIE5vNDAxLzQwMy9yZXZva2VkL2NvbmZsaWN0L21pc21hdGNoL2hlYWx0aHlzZXJ2aWNlIGZhbGxiYWNrLCBubyBiYWNrdXAvcmVsZWFzZSBmYWxsYmFjayBvciBmdXR1cmUvY3VzdG9tZXItcHJvZHVjdGlvbiByZXVzZS4gT3JkaW5hcnlmcmVzaHJlYWRiYWNrIHJlbWFpbnMgcHJlZmVycmVkLiBSZWNvdmVyZWQgcGxhY2VtZW50IGlzIHZlcmlmaWVkIHNlcGFyYXRlbHk7IHJvbGxiYWNrIGdyYW50cyBubyBjbGFpbSBvZiBjdXJyZW50UERQc3VjY2VzcyBvciBUMDVjbG9zdXJlLiBTZWUgZnVsbHByb3RvY29sIGFuZGNsb3NlLWRvd25jaGVja2xpc3RpdGVtMTkoUFJPUE9TRUR1bnRpbGFjdHVhbGFjY2VwdGFuY2UpLgoKClBvc3QtUmVhZHkgcHJvdmlkZXIgcHJlc2VydmF0aW9uIHByb29mIHJlY29yZHMgb25seSBmaXhlZCBjYW5vbmljYWwgc291cmNlVDA1QDEgcmVxdWVzdCBpZGVudGl0eSAoZGVyaXZlZCBmcm9tIHRoZSBhdXRoZW50aWNhdGVkIHJvdXRlKSwgSFRUUDIwMC90aW1lc3RhbXAgYW5kIHJldmlldy1wcmVzZW5jZS9kaXNwb3NpdGlvbiBjb3VudC4gQWN0dWFsIG5hdGl2ZSBvdXRjb21lcyBuZWVkIG5vdCBjb250YWluIHRvcC1sZXZlbCBtZW1vIGlkZW50aXR5LiBObyByZXZpZXcvZGlzcG9zaXRpb24vc3RhdGUvYWN0b3IgYm9keSBpcyBleHBvcnRlZCBvciBpbnRlcnByZXRlZCwgYW5kIG5vIGN1cnJlbnRhcHByb3ZhbC9hY2NlcHRhbmNlIGlzIGluZmVycmVkIGZyb20gdGhpcyBwcm92aWRlciBwcm9vZi4gQWN0dWFsIGZvdW5kZXIgZ28gcmVtYWlucyBzZXBhcmF0ZS4gRXhhY3QgcHJpb3I0ODEgYnl0ZXMgYW5kIGJvdGggY29tcGxldGVkIGNvbnRyYWN0IHJldmlld3MgYXJlIHJldGFpbmVkIGJ5IGRpZ2VzdCBtYXBzOyB1bmNoYW5nZWQgaGlzdG9yeSBpcyBub3QgcmVjb3BpZWQuCg==" + }, + { + "digest": "sha256:b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtcmVsZWFzZS1wcm9wb3NhbCIsCiAgInZlcnNpb24iOiAxLAogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWI4NTA5MS1yMSIsCiAgInRyaWFsX2lkIjogImluZmQtemxpYi0yMDI2MTAxMS1yMSIsCiAgInN0YXRlIjogInByZXBhcmVkLXVuYXBwcm92ZWQiLAogICJtZW1vX2lkIjogImluZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMSIsCiAgIm1lbW9fdmVyc2lvbiI6IDEsCiAgInRhc2siOiAiSU5GRC1XUC0wMDA5LVQwNSIsCiAgImNhbmRpZGF0ZV9pbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJhcnRpZmFjdF9zb3VyY2VfcmV2aXNpb24iOiAiOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYyIsCiAgInByaW9yX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInByaW9yX2FwcGxpY2F0aW9uX3JldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiLAogICJzb3VyY2VfcmV2aXNpb24iOiBudWxsLAogICJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQiOiB0cnVlLAogICJuYXRpdmVfYWN0aW9uc19leGVjdXRlZCI6IGZhbHNlLAogICJhcHByb3ZhbF9pZCI6IG51bGwsCiAgImF1dGhvcml0eV9tb2RlIjogIkFETUlOSVNURVIiLAogICJ0YXJnZXQiOiAicmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbiIsCiAgImNvc3RfZXN0aW1hdGVfZXVyIjogMCwKICAicmlzayI6ICJQcml2YXRlIHNhbWUtc2NoZW1hIGJhY2t1cCBjb3BpZXMgYW5kIGJyaWVmIFJlY3JlYXRlIGF2YWlsYWJpbGl0eSBnYXAuIEZhaWxlZCBvciBhbWJpZ3VvdXMgcGhhc2VzIHJldGFpbmVkOyBubyByZXBsYXkuIFJvbGxiYWNrIGNoYW5nZXMgRGVwbG95bWVudCBpbWFnZS9zb3VyY2Ugb25seSwgcmV0YWlucyBsYXRlc3QgZGF0YWJhc2UuIiwKICAiZXhlY3V0ZV9ieSI6ICIyMDI2LTEwLTEyVDIzOjU5OjU5WiIsCiAgInJlbGVhc2VfbXVzdF9zdGFydF9ieSI6ICIyMDI2LTEwLTEyVDIzOjI5OjU5WiIsCiAgIm1heF9zbmFwc2hvdF9ieXRlcyI6IDUzNjg3MDkxMiwKICAibWF4aW11bV9uZXdfc25hcHNob3RfcGF5bG9hZF9ieXRlc19lYWNoX3NpdGUiOiAxMDczNzQxODI0LAogICJsb2NhbF9leHRyYV9kaXNwb3NhYmxlX2Nsb25lX21heF9ieXRlcyI6IDUzNjg3MDkxMiwKICAicHJpdmF0ZV9tZXRhZGF0YV9hbmRfc3FsaXRlX3NpZGVjYXJzX2FkZGl0aW9uYWxfaGVhZHJvb21fYnl0ZXMiOiAxNjc3NzIxNiwKICAidW5ib3VuZF9pbnB1dHMiOiBbCiAgICAiZXhhY3QgY29tbWl0dGVkIG93bmVyIHJlbmRlcmluZyByZXZpc2lvbiByZXRhaW5lZCBpbiByb290IHN1cGVydmlzZWQgcmVjZWlwdCIsCiAgICAiUHJvZHVjdCBhbmQgUGxhdGZvcm0gZmluYWwgYWNrbm93bGVkZ21lbnRzIiwKICAgICJjb25maXJtZWQgZm91bmRlciBleGFjdCBuZXcgZGlzcG9zaXRpb24iCiAgXSwKICAicHVibGlzaGVkX3ZlcmlmaWNhdGlvbl9zaGEyNTYiOiAiZGQ0ZWVjZjBjMTAzZGNhNzkyMjA5NGE4YmVlYjk5Yjc3YWU5NmZkMWQ1ZmU1MzJlMzdiZDgzM2RhYTAyNjE0ZSIsCiAgIm5hdGl2ZV9yZWFkb25seV9wcmVmbGlnaHRfc2hhMjU2IjogIjU2NjM3OTk0ZGZkYWU0NmE2ZjlhYjQ0MmMyZmY5YjI1OTIxMjY1MGIzNWViOThkODk2YzVlODM3ZjAxY2UyZjkiLAogICJleGVjdXRvcl9wbGFuX3NoYTI1NiI6ICJkODcxMDgxOTk5MjE1YmQzODUwYWIxMTczMDY0ZWQ2Y2I2ZDdjMjNiMjZkOWMzZDViM2M1OTQwZTY5OGQ0YzYxIiwKICAiZXhlY3V0aW9uX2J1bmRsZV9zaGEyNTYiOiAiMmFkNjU4MTg0NDRhNzJkZjdlNjU0MzU3NWJhMDRhOTk4ZTkyYjQyZDU1NzQwOTcyNmE1NGZiYTExNmI1MjQ5ZCIsCiAgInJvbGxiYWNrX3ByZWZsaWdodF9zaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgInBvc3RfcmVhZHlfbmF0aXZlX3Byb3ZpZGVyX3Byb2JlIjogIkZpeGVkIGNhbm9uaWNhbCBTT1VSQ0UgVDA1QDEgYXV0aGVudGljYXRlZCBHRVQgaW5zaWRlIGV4aXN0aW5nIFN0YXRlSHViIGRpc3BhdGNoZXI6IEhUVFAyMDAvdGltZXN0YW1wIHBsdXMgaGFzX3Jldmlldy9kaXNwb3NpdGlvbl9jb3VudCBvbmx5LiBSZXF1ZXN0IGlkZW50aXR5IGV4cGxpY2l0bHkgZGVyaXZlZCBmcm9tIGZpeGVkIHJvdXRlOyBubyBib2R5ZXhwb3J0L2Rpc3Bvc2l0aW9uaW50ZXJwcmV0YXRpb24vYXBwcm92YWxpbmZlcmVuY2UuIEFjdHVhbCBuYXRpdmUgc2VydmljZSByZXNwb25zZSBzaGFwZSB2ZXJpZmllZCBzeW50aGV0aWNhbGx5IHdpdGggbm8gZGF0YWJhc2UvcHJvdmlkZXIuIiwKICAiZnJlc2hfc2Nhbl9jb250cmFjdF9zaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgInByZXBhcmF0aW9uX2ZhaWx1cmVfaGlzdG9yeV9zaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIsCiAgImJvdW5kZWRfb3V0YWdlX3JvbGxiYWNrX3ByZV9hdXRob3JpemF0aW9uIjogewogICAgInN0YXR1cyI6ICJwcm9wb3NlZC1vbmx5LXVuYXBwcm92ZWQiLAogICAgImNsb3NlX2Rvd25fY2hlY2tsaXN0X2l0ZW0iOiAxOSwKICAgICJzY29wZSI6ICJtYW51YWwgc2FtZTc2My9jOTYgb25lRGVwbG95bWVudCBwcmVzZXJ2aW5nIGxhdGVzdERCLCBmYWlsZWRjYW5kaWRhdGUgb3V0YWdlIG9ubHkiLAogICAgIm1heGltdW1fc2Vjb25kc19mcm9tX3JlbGVhc2UiOiAxODAwLAogICAgImRlYWRsaW5lIjogIjIwMjYtMTAtMTJUMjM6NTk6NTlaIiwKICAgICJub3JtYWxfZnJlc2hfcmVhZGJhY2tfcHJlZmVycmVkIjogdHJ1ZSwKICAgICJ1bmF2YWlsYWJsZV9yZXZvY2F0aW9uX2NoZWNrX2Rpc2Nsb3NlZCI6IHRydWUsCiAgICAiZm9yYmlkZGVuIjogWwogICAgICAiNDAxIiwKICAgICAgIjQwMyIsCiAgICAgICJyZXZva2VkIiwKICAgICAgImNvbmZsaWN0IiwKICAgICAgImlkZW50aXR5L3Njb3BlIG1pc21hdGNoIiwKICAgICAgImhlYWx0aHkgc2VydmljZSIsCiAgICAgICJvdGhlciBwaGFzZSIsCiAgICAgICJmdXR1cmUvY3VzdG9tZXIgcHJvZHVjdGlvbiByZXVzZSIKICAgIF0KICB9Cn0K" + }, + { + "digest": "sha256:eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b", + "media_type": "text/markdown", + "content_base64": "IyBUMDUgemxpYjg1MDkxIHJlbGVhc2Ug4oCUIHByZWxpbWluYXJ5LCB1bmFwcHJvdmVkCgpUaGlzIGlzIGEgZGlzdGluY3QgcHJvcG9zYWwvdHJpYWwgZm9yIGV4aXN0aW5nIElORkQtV1AtMDAwOS1UMDUuIFRoZSBhY3R1YWwgVDA0IHNvdXJjZTIgYWNjZXB0YW5jZSBkb2VzIG5vdCBhdXRob3JpemUgaXQuIFByZXZpb3VzIFIxIGNvcHkgYW5kIFIyIHZlcmlmeSBVTkNFUlRBSU4gam91cm5hbCBzdGF0ZXMgcmVtYWluIHVudG91Y2hlZC4gSU5GRC1JTi0wMDEwIHJlbWFpbnMgYW4gdW5wcm9tb3RlZCBnZW5lcmFsIHZlcmlmaWVyIHJlc2lkdWFsOyB0aGlzIG5ldyB0YXNrLXNwZWNpZmljIHZlcmlmaWVyIGlzIGEgcHJlcmVxdWlzaXRlIG9mIGFjdGl2ZSBUMDUsIG5vdCBhbiBhbWVuZG1lbnQgb2YgdGhlIG9sZCBhcHByb3ZlZCBoZWxwZXIuCgpFeGFjdCBpbnRlbmRlZCBpbWFnZSBmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzIHdhcyBidWlsdCBieSBhZG1pdHRlZCBvd25lciBDSTExNTM0L3J1bjQgZnJvbSA5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjLiBQdWJsaWNhdGlvbiBpcyBub3QgaW5zdGFsbGVkIGFjY2VwdGFuY2UuIEZpbmFsIHBhY2tldCByZXF1aXJlcyBpbmRlcGVuZGVudCBwdWJsaXNoZWQtaW1hZ2Ugc2Nhbi9ydW50aW1lL2ZpbGVzeXN0ZW0vc291cmNlIHByb29mIGFuZCBmcmVzaCByZWFkLW9ubHkgbmF0aXZlIHByb2plY3Rpb24vb25lLW9iamVjdCBkcnktcnVuIGV2aWRlbmNlLiBVbnRpbCBhbGwgZmluYWwgaW5wdXRzIGFuZCBpbmRlcGVuZGVudCBvd25lciBhY2tub3dsZWRnbWVudHMgYXJlIGZyb3plbiwgZXhlY3V0aW9uLXBsYW4gc3RhdGUgcmVtYWlucyBwcmVsaW1pbmFyeSBhbmQgdGhlIGFjdHVhdG9yIHJlZnVzZXMgYmVmb3JlIGFueSBhdXRob3JpdHksIGpvdXJuYWwgb3IgbmF0aXZlIGFjdGlvbi4KCkFmdGVyIGEgTkVXIGV4YWN0IGNvbmZpcm1lZCBmb3VuZGVyIGFjY2VwdGFuY2UsIHJvb3QgZnJlc2hseSBhdXRoZW50aWNhdGVzIGZpeGVkLW9yaWdpbiBuYXRpdmUgc291cmNlLXZlcnNpb24xIG91dGNvbWVzIGJlZm9yZSBlYWNoIHBoYXNlLiBSZWNlaXB0IGZpbGVzIGFyZSBzdXBlcnZpc2VkIGJvb2trZWVwaW5nLCBub3Qgc2lnbmVkIGdyYW50cyBvciBhdXRvbm9teS4gV3JvbmcgdGFzaywgc291cmNlLCBtZW1vL3ZlcnNpb24sIHN0YWxlL3BlbmRpbmcvYWdlbnQgZGlzcG9zaXRpb24sIG9sZCBUMDQgYWNjZXB0YW5jZSBvciBjaGFuZ2VkIGlucHV0cyByZWZ1c2UuIFJvb3QgcmV0YWlucyBleGFjdCBhcHByb3ZlZCBzb3VyY2UgcmV2aXNpb24vZGlnZXN0cyBhbmQgYWN0aW9uIHJlc3VsdHMgaW4gc3VwZXJ2aXNpb24uIEFwcHJvdmFsIGRvZXMgbm90IHByb21vdGUgYW55IGFnZW50LgoKRml4ZWQgcGhhc2Ugb3JkZXI6IGRyaWxsLWJhY2t1cCDihpIgZHJpbGwtY29weSDihpIgb2ZmbGluZS12ZXJpZnkg4oaSIGNsZWFudXAtb2ZmbGluZSDihpIgY3V0b3Zlci1iYWNrdXAg4oaSIGN1dG92ZXItY29weSDihpIgcmVsZWFzZSDihpIgdmVyaWZ5LiBOZXcgcHJpdmF0ZSBuYXRpdmUgL2RhdGEvcHJpdmF0ZS96bGliODUwOTEtcjEsIHJvb3QgLnByaXZhdGUtYmFja3Vwcy8yMDI2MTAxMS1pbmZkLXpsaWItcjEgYW5kIGxvY2FsIHZvbHVtZSBpbmZkLXpsaWItcjEtcmVzdG9yZS0yMDI2MTAxMSBhcmUgZGlzdGluY3QgZnJvbSBhbGwgVDA0IGN1c3RvZHkuIE5ldyBwcml2YXRlIGpvdXJuYWwgaW50ZW50IGlzIGZzeW5jZWQgUlVOTklORyBiZWZvcmUgZGlzcGF0Y2g7IG5vIGF0dGVtcHRlZCBwaGFzZSByZXBsYXkuIEZpeGVkIG91dHB1dCBzY2hlbWEgY29udGFpbnMgb25seSBjb3VudHMsIGhhc2hlcywgb2JqZWN0IGlkZW50aXR5IGFuZCBib29sZWFuIHJlc3VsdHM7IHJhdyBlcnJvcnMgYW5kIHByaXZhdGUgY29udGVudCBhcmUgd2l0aGhlbGQuIEV4aXN0aW5nIG5hdGl2ZSBzbmFwc2hvdHMvZGF0YWJhc2Uvc2lkZWNhcnMgYXJlIG5ldmVyIHJlbW92ZWQgb3IgcmVzdG9yZWQgb3ZlciBjdXJyZW50IGRhdGEuCgpGcmVzaCBiYWNrdXAgaW5zcGVjdGlvbiB1c2VzIGNvcGllZCBleHBsaWNpdC1jbG9zZSBTUUxpdGUgaGVscGVyczogbGl2ZSBhbmQgb2ZmbGluZSBjbG9uZSByZWFkZXJzIGFyZSBtb2RlPXJvL3F1ZXJ5X29ubHkgYW5kIFdBTC1hd2FyZSwgYmVmb3JlIGFueSBTdG9yZS9hZG1pbiBvcGVuLiBJbW11dGFibGUgcmVhZGVyIGlzIHVzZWQgb25seSBmb3IgZnJlc2hseSBjbG9zZWQgaGFzaC1ib3VuZCBwcml2YXRlIHNuYXBzaG90IHdpdGggYWJzZW50L3plcm8gV0FMIGZyYW1lcyBhbmQgc3RhYmxlIGlkZW50aXR5L21ldGFkYXRhL2RpZ2VzdCBiZWZvcmUvYWZ0ZXIgcmVhZC9jb3B5LiBNYWluIGFuZCBzaWRlY2FycyByZW1haW4gcmV0YWluZWQuIFNjaGVtYSBtdXN0IGVxdWFsNSwgaW50ZWdyaXR5IG9rLCBhbmQgZXhhY3Qgc25hcHNob3QvaXNvbGF0ZWQgY2xvbmUgY291bnRzIG1hdGNoIGJlZm9yZS9hZG1pbi9hZnRlci4gVGhlIGRldGFjaGVkIGxvY2FsIGNsb25lIGhhcyBuZXR3b3JrIG5vbmUsIHJlYWRvbmx5IHJvb3QsIG5vIHNlcnZpY2UvcnVudGltZSBjb25maWcvY3JlZGVudGlhbCBtb3VudHM7IG9ubHkgbmFycm93bHkgc2NvcGVkIFVJRDAgQ0FQX0NIT1dOIGluaXRpYWxpemVyIHByZWNlZGVzIFVJRDEwMDAxIHJlYWRzL2FkbWluLiBPcmlnaW5hbCBwcml2YXRlIGNvcHkgaXMgaGFzaC1zdGFibGUuIENsZWFudXAgcmVtb3ZlcyBvbmx5IHRoZSBkaXNwb3NhYmxlIHZvbHVtZSB3aG9zZSBub25jZS9sYWJlbHMvY3JlYXRpb24gbWV0YWRhdGEgbWF0Y2ggdGhpcyB0cmlhbCwgYmVmb3JlIGN1dG92ZXIuCgpFYWNoIHNuYXBzaG90IGlzIGJvdW5kZWQ1MTJNaUIuIEF0IG1vc3QgdHdvIG5ldyBzbmFwc2hvdHMgb2NjdXB5IGVhY2ggbmF0aXZlL29mZmNsdXN0ZXIgY3VzdG9keSAoMUdpQiBwYXlsb2FkIGVhY2gpOyB0aGUgZGlzcG9zYWJsZSBvZmZjbHVzdGVyIGNsb25lIGFkZHM1MTJNaUIgd2hpbGUgcHJlc2VudCwgcGx1czE2TWlCIHNpZGVjYXIvbWV0YWRhdGEgcmVzZXJ2ZS4gTmV3IG5hdGl2ZSBkcmlsbCBwaGFzZSBjaGVja3MgZnJlZSBzcGFjZSBmb3IgYm90aDsgbG9jYWwgY3VzdG9keSBjaGVja3MgdHdvIHNuYXBzaG90IGJvdW5kcyBwbHVzIHJlc2VydmUuIEV4aXN0aW5nIFQwNCByZXRlbnRpb24gY29uc3VtZXMgYWRkaXRpb25hbCBwcmUtZXhpc3Rpbmcgc3BhY2UuIEVVUjAgcmVjdXJyaW5nIGluZnJhc3RydWN0dXJlIGVzdGltYXRlOyBodW1hbi9jb21wdXRlIHRpbWUgdW5wcmljZWQuCgpDdXRvdmVyIHRha2VzIGEgZnJlc2ggbmF0aXZlIGJhY2t1cCBhbmQgZXhhY3Qgb2ZmY2x1c3RlciBjb3B5LiBSZWxlYXNlIHRoZW4gcmVxdWlyZXMgbGF0ZXN0IHNjaGVtYTUgcmVhZG9ubHkgcHJvb2YsIHNlYWxlZCBQb2QvRGVwbG95bWVudC9jb25maWcvUFZDIGN1c3RvZHkgYW5kIHNhbWUgYmFzZWxpbmUgaW1hZ2U3NjNjL2N1cnJlbnQgQXBwbGljYXRpb24gc291cmNlYzk2LCBhIGhlYWx0aHkgc2luZ2xlIHRhcmdldDkyLjIwNS42Mi4yMzkgbm9kZSBhbmQgZnJlc2ggcmVxdWVzdGVkIENQVSDiiaQgYWxsb2NhdGFibGUgY2FwYWNpdHkuIFJlY3JlYXRlIGFuZCByZXNvdXJjZXMgcmVtYWluIHVuY2hhbmdlZC4gU2VydmVyIGRyeS1ydW4vY2xpZW50IGRpZmYgbXVzdCBzaG93IG9ubHkgdGhlIGltYWdlLiBBcHBsaWNhdGlvbiBVSUQvcmVzb3VyY2VWZXJzaW9uL3NvdXJjZSBDQVMgZGlzcGF0Y2hlcyBtYW51YWwgZXhhY3QgZmluYWwgcmV2aXNpb24sIGluaXRpYXRlZEJ5IGN1c3RvZGlhbi1jb2RleCwgZXhwbGljaXQgcHJ1bmU9ZmFsc2UgYW5kIG9ubHkgYXBwcy9EZXBsb3ltZW50IGluZm9ybWVkLWRlY2lzaW9uIGluIGl0cyBuYW1lc3BhY2UuIE5vIHdob2xlLUFwcGxpY2F0aW9uIHN5bmMsIG5hbWVzcGFjZS9jb25maWcvY3JlZGVudGlhbC9yZXNvdXJjZSBjaGFuZ2Ugb3IgcHJ1bmluZy4KClZlcmlmaWNhdGlvbiByZWFkcyBpbWFnZUlEL3JlYWRpbmVzcy9vd25lciBjaGFpbi9leGFjdCBjb25maWd1cmVkIFBvZCBmaWVsZHMsIHNjaGVtYTUvaW50ZWdyaXR5L21ldGFkYXRhIGNvdW50cywgaW5zdGFsbGVkIHBvbGljeSBoYXNoIGFuZCBzeW50aGV0aWMgcHVycG9zZSByZWZ1c2FscywgaGVhbHRoMjAwLCBpbnN0YWxsZWQgZml4ZWQgemxpYiBhbmQgZXhhY3QgaW1hZ2UgcHJvb2YuIEFmdGVyIGV4YWN0IGNhbmRpZGF0ZSBSZWFkeSBhbmQgdmVyaWZpZWQgcm9sbG91dCwgcm9vdCBleGVjdXRlcyBhdHRhY2hlZCBwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IGluc2lkZSB0aGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kLiBJdCBjYWxscyBjYW5vbmljYWwgbGlmZWN5Y2xlLm91dGNvbWVzIGZvciBpbmZkLTIwMjYxMDExLXpsaWItcmVtZWRpYXRpb24tcjEgU09VUkNFdmVyc2lvbjEgYXQgZGlzcGF0Y2hlciBmaXhlZCBPUklHSU4gd2l0aCBOb1JlZGlyZWN0L3Byb3h5IGRpc2FibGVkOyBleGlzdGluZyBpbnRlcm5hbCB0b2tlbl9maWxlIHN0YXlzIGluc2lkZSB0aGF0IFBvZCBhbmQgbm8gdG9rZW4vYm9keS9wcml2YXRlIGNvbnRlbnQgaXMgZXhwb3J0ZWQuIFJvb3QgcmV0YWlucyBib3VuZGVkIEhUVFAtc3VjY2VzcyBtZXRhZGF0YS9vYnNlcnZhdGlvbnRpbWUgYW5kIGNvcnJlbGF0ZXMgdmVyaWZpZWQgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UsIHRoZW4gcmVjaGVja3MgdGhvc2UgaWRlbnRpdGllcy4gVGhpcyBhY3R1YWwgcHJvdmlkZXIvUERQLWdhdGVkIHByZXNlcnZhdGlvbiBwcm9vZiBpcyBzZXBhcmF0ZSBmcm9tIGluc3RhbGxlZCBzeW50aGV0aWMyYWxsb3c4cmVmdXNlOyBib3RoIGFyZSByZXF1aXJlZCBiZWZvcmUgdGFzayBjbG9zdXJlLiBJdCBkb2VzIG5vdCBhc3NlcnQgcHJvdmlkZXIgYWR2aXNvcnkgZW1pc3Npb25zIG9yIG5ldyBkb2N0cmluZS4gQXJnbzMuNS4zIG9taXRzIGZhbHNlIHBydW5lIGluIG9wZXJhdGlvbiBzdGF0dXM6IG1pc3Npbmcgb3IgZXhhY3RmYWxzZSBpcyBhY2NlcHRlZCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBqb3VybmFsJ3MgQ09NUExFVEUgZXhwbGljaXRmYWxzZSByZXF1ZXN0LCBleGFjdCBzb3VyY2UvcmVzb3VyY2VzL2luaXRpYXRpb24sIG9wZXJhdGlvbiBzdGFydCBhZnRlciBvdXIgZHVyYWJsZSBhdHRlbXB0LCBib3VuZGVkIGZpbmlzaCBhbmQgb25lIFN5bmNlZCBEZXBsb3ltZW50IHJlc3VsdC4gVHJ1ZS9udWxsL3N0cmluZy9wcmlvci9mb3JlaWduL2V4dHJhLXJlc291cmNlIHJlc3VsdHMgcmVmdXNlLgoKUm9sbGJhY2sg4oaSIHJvbGxiYWNrLXZlcmlmeSBpcyBzZXBhcmF0ZSBhbmQgcGVybWl0dGVkIG9ubHkgYWZ0ZXIgYSByZWNvcmRlZCByZWxlYXNlIGF0dGVtcHQuIEl0IHN3aXRjaGVzIG9ubHkgQXBwbGljYXRpb24gc291cmNlIGJhY2sgdG8gYzk2IGFuZCBEZXBsb3ltZW50IGltYWdlNzYzYzsgaXQgbmV2ZXIgcmVzdG9yZXMgYW4gb2xkIHNuYXBzaG90IG92ZXIgdGhlIGxhdGVzdCBkYXRhYmFzZS4gUmVjb3ZlcnkgZGlzcGF0Y2ggd29ya3MgZXZlbiBpZiBjYW5kaWRhdGUgUG9kIGlzIGFic2VudC91bnJlYWR5IGFuZCBuZXZlciBkZXBlbmRzIG9uIGNhbmRpZGF0ZSBEQiBpbnNwZWN0aW9uLiBSZWNvdmVyeSB2ZXJpZmljYXRpb24gc2VwYXJhdGVseSByZXF1aXJlcyBSZWFkeTEvb2xkIGltYWdlL2N1cnJlbnQgc2NoZW1hNS9kYXRhLWN1c3RvZHkgYW5kIGV4YWN0IHJlY29yZGVkIHNjb3BlZCBjb21wbGV0aW9uLiBBbGwgcGhhc2VzIG11c3QgYmVnaW4gYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVo7IHJlbGVhc2UgbXVzdCBiZWdpbiBhdCBsZWFzdDMwbWludXRlcyBlYXJsaWVyLiBCZXlvbmQgZXhwaXJ5IHN0b3AgYW5kIG9idGFpbiBhIG5ldyBmb3VuZGVyIGRlY2lzaW9uOyBubyBhdXRvbWF0aWMgZXh0ZW5zaW9uIG9yIGVtZXJnZW5jeSBncmFudC4gQSBmYWlsZWQvdW5jZXJ0YWluIGF0dGVtcHQgcmVxdWlyZXMgaW5mb3JtZWQgcmVjb3ZlcnkgcmF0aGVyIHRoYW4gcmV0cnkuCgpUMDUgcmVtYWlucyBwcm9ncmVzcyB1bnRpbCBhY3R1YWwgaW5zdGFsbGVkIGFjY2VwdGFuY2UgYW5kIG5hdGl2ZSByZXNjYW4gcHJvdmUgdGhlIGZpbmRpbmcgYWJzZW50LiBObyBSaXNrIEVuZ2luZSBncmFkZSBpcyBhc3NpZ25lZC4gT25seSB0aGVuIG1heSBvd25lciBjbG9zZSBUMDUvcmlzayBhbmQgY29uc2lkZXIgZmluaXNoaW5nIFdQOSwgd2l0aCBleGlzdGluZyByZXNpZHVhbHMgbGl2ZSBmaXJzdC4KCkFjdHVhbCByZWxlYXNlIGFuZCBpbnN0YWxsZWQgdmVyaWZpY2F0aW9uIGFsc28gcmVxdWlyZSBmaXhlZCBwcml2YXRlIHJvb3Qgc2NhbiByZWNlaXB0IGFuZCByZXRhaW5lZCBmdWxscmVwb3J0IGF0IC90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4te3JlY2VpcHQsZnVsbH0uanNvbiwgc3VwZXJ2aXNlZCBtZXRhZGF0YSBiaW5kaW5nIHRvIGV4YWN0IGltbXV0YWJsZWY1NTgvYXJ0aWZhY3Rzb3VyY2U5YjQvc2Nhbm5lcmRpZ2VzdDYyYjEuIEJlZm9yZSBqb3VybmFsIHN0YXJ0LCBmdWxscmVwb3J0aGFzaCBtdXN0IG1hdGNoLCBubyBzdXBwcmVzc2lvbi9hbGxzZXZlcml0eSBmbGFncyB0cnVlLCBleGl0MCwgbm9uZW1wdHkgdmFsaWQgZnVsbHJlc3VsdHMgY29udGFpbiB6ZXJvIGZpbmRpbmdzLCBzY2FuIGNvbXBsZXRlZCB3aXRoaW40aG91cnMgYW5kIG5vdyBwcmVjZWRlcyBEQiBOZXh0VXBkYXRlLiBUaGUgcHVibGlzaGVkIERCIGV4cGlyZXMyMDI2LTEwLTExVDE4OjU5OjUwWjsgaXQgaXMgbm90IHZhbGlkIHVudGlsIHJlbGVhc2UgZGVhZGxpbmUuIFJvb3QgcmVmcmVzaGVzIERCIGFuZCByZXNjYW5zIHRoZSBzYW1lIGltbXV0YWJsZSBpbWFnZSBhcyByb3V0aW5lIHJlYWQtb25seSB2ZXJpZmljYXRpb24gd2hlbiBuZWVkZWQsIHJldGFpbmluZyBhbGwgcmF3IHB1YmxpY3NjYW4gYXJ0aWZhY3RzLiBBbnkgbmV3IGZpbmRpbmcgcmVmdXNlcyByZWxlYXNlL2Nsb3N1cmUgYW5kIGlzIHJldGFpbmVkIGZvciBpbmZvcm1lZCByZWFzc2Vzc21lbnQvbmV3IGRlY2lzaW9uIGFzIG5lZWRlZCwgbmV2ZXIgZmlsdGVyZWQgb3IgaWdub3JlZC4gRXhpc3RpbmcgcmlzayBzdGF5cyBvcGVuIHVudGlsIGFjdHVhbCBpbnN0YWxsZWQgcHJvb2YvbmF0aXZlIHJlc2Nhbi4KClJlZmluZW1lbnQgcHJlc2VydmVzIHJldmlld2VkODEvc291cmNlIGJ5dGVzIGFuZCBleGFjdGRyYWZ0MjkgY29tcGxldGUgYXJjaGl2ZXMuIEluaXRpYWw2NyBtYW5pZmVzdCBoYXNoIGlzIGtub3duIGJ1dCBleGFjdCBvcmlnaW5hbDY3bWFuaWZlc3Qvc291cmNlIHNuYXBzaG90IHdhcyBub3QgcmV0YWluZWQgYmVmb3JlODE7IHByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIGRpc2Nsb3NlcyB0aGlzLiBObyBwcmlvcm5hdGl2ZWVmZmVjdCBvY2N1cnJlZC4gTmV3IGZ1bGwgQ0xJIHN5bnRoZXRpYyB0ZXN0cyBleGVyY2lzZSBtYWluIHNvdXJjZWhhc2gvcmVjZWlwdC9qb3VybmFsL2Rpc3BhdGNoIHdpcmluZyBmb3IgZHJpbGwtY29weSxyZWxlYXNlLHZlcmlmeSBhbmQgcmVmdXNlIHNvdXJjZSBkcmlmdCBiZWZvcmUgbmV3am91cm5hbC9uYXRpdmUgYm91bmRhcnkuIFJlbW90ZSBwYXlsb2FkIGNhcnJpZXMgZXhhY3QgZnJvemVuIHNuYXBzaG90IGlkZW50aXR5IGFuZCBjb21wbGV0ZWQgcmVsZWFzZSBpbnRlbnQuIEZ1bGwgc2NhbiBjb250cmFjdCBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgU2NoZW1hVmVyc2lvbjIvY29udGFpbmVyX2ltYWdlLCBwdWJsaXNoZWQgY29uZmlnSW1hZ2VJRDYyMiAobm90IGRhZW1vbnNlcmlhbGl6YXRpb25mMiksIGV4YWN0MTFEaWZmSURzL3Jvb3Rmcy9zb3VyY2UvY29udGV4dGxhYmVscywgZXhhY3RseTM4T1MrNlB5dGhvbiBwYWNrYWdlcyB3aXRoIGNhbm9uaWNhbFBVUkwvdmVyc2lvbiBpbnZlbnRvcnksIGZpeGVkemxpYnIxIGFuZCBubyBvbWlzc2lvbnMvZHVwbGljYXRlcy90cnVuY2F0ZWQvZW1wdHljb3ZlcmFnZS4gQXJjaGl2ZSBzY2FuIFJlcG9EaWdlc3RzIGFic2VudCBpcyBsZWdpdGltYXRlOyBub3QgZmFicmljYXRlZC4KCgojIyBQcm9wb3NlZCBleHBsaWNpdCBtYW51YWwgc2VydmljZS1vdXRhZ2UgcmVjb3ZlcnkgY29uc2VudAoKQ2xvc2UtZG93biBjaGVja2xpc3QgaXRlbTE5IGluIHRoZS1jdXN0b2RpYW4vZG9jcy9zZWN1cml0eS1jbG9zZS1kb3duLWNoZWNrbGlzdC5tZCBpcyBQUk9QT1NFRCBPTkxZIHVudGlsIHRoZSBmb3VuZGVyIGFjY2VwdHMgdGhpcyBleGFjdCBuZXcgcGFja2V0LiBUaGlzIHRlcm0gY2hhbmdlcyB0aGUgcmVjb3ZlcnkgYXV0aG9yaXR5IGRlcGVuZGVuY3kgZm9yIHRoaXMgdHJpYWw7IHByZXZpb3VzIFQwNCBhcHByb3ZhbCBhbmQgb3duZXIgc291cmNlIHJldmlld3MgZG8gbm90IGdyYW50IGl0LiBPcmRpbmFyeSBmcmVzaCBuYXRpdmUgc291cmNlVDA1QDEgY29uZmlybWVkIGZvdW5kZXIgcmVhZGJhY2sgcmVtYWlucyBwcmVmZXJyZWQgZm9yIGV2ZXJ5IHBoYXNlLiBObyBzdGFuZGluZyByZWNvdmVyeS9hdXRvcGlsb3Qvc2lnbmVkIGdyYW50IGlzIGNyZWF0ZWQuCgpCZWZvcmUgcmVsZWFzZSwgcm9vdCBmcmVzaGx5IGF1dGhlbnRpY2F0ZXMgdGhlIGluZGVwZW5kZW50bHkgY29uZmlybWVkIGFjY2VwdGFuY2Ugb2YgdGhlc2UgZXhhY3QgdGVybXMsIG1hcmtzIGl0cyBzY29wZWQgcmVjZWlwdCBib3VuZGVkX291dGFnZV9yb2xsYmFja19wcmVfYXV0aG9yaXplZD10cnVlLCBhbmQgY2FwdHVyZXMgZXhhY3QgcmVjZWlwdC9vdXRjb21lIGJ5dGVzIGludG8gYSB1bmlxdWUwNjAwIHJlbGVhc2UtYXV0aG9yaXR5LWNhY2hlLmpzb24gaW4gdGhpcyB0cmlhbCdzMDcwMCBpZ25vcmVkIGN1c3RvZHkuIEhhc2ggaXMgcmVjb3JkZWQgaW4gZHVyYWJsZSByZWxlYXNlIGpvdXJuYWwgYmVmb3JlIHJlbW90ZSBlZmZlY3QuIENhY2hlIGlzIGhpc3RvcmljYWwgY29uZmlybWVkIGFjY2VwdGFuY2UsIG5ldmVyIGZhYnJpY2F0ZWQgY3VycmVudCBvdXRjb21lcy4gRHVyaW5nIGZhaWxlZC1jYW5kaWRhdGUgc2VydmljZSBvdXRhZ2UgdGhlIGFiaWxpdHkgdG8gY2hlY2sgc3Vic2VxdWVudCByZXZvY2F0aW9uIGlzIHVuYXZhaWxhYmxlLiBUaGUgZm91bmRlciBleHBsaWNpdGx5IGFjY2VwdHMgdGhhdCBuYXJyb3cgdW5jZXJ0YWludHkgZm9yIG1hbnVhbCBzdXBlcnZpc2VkIHJvbGxiYWNrIG9ubHksIGZvciBhdCBtb3N0MzBtaW51dGVzIGZyb20gdGhlIGFjdHVhbCBkdXJhYmxlIHJlbGVhc2UgYXR0ZW1wdCBBTkQgYmVmb3JlT2N0MTIgZGVhZGxpbmUuIFJvb3QgbXVzdCBwZXJzb25hbGx5IGV2YWx1YXRlIHRoZSBleGFjdCBib3VuZGVkIHJlY292ZXJ5IHJlY2VpcHQ7IG5vIGFnZW50IHByb21vdGlvbiBvciBhdXRvbWF0aWMgZ3JhbnQuCgpJZiBmcmVzaCBzb3VyY2UxIHJlYWRiYWNrIGlzIHVuYXZhaWxhYmxlLCBhIHNlcGFyYXRlIGZpeGVkIHByaXZhdGUgL3RtcC9zZWN1cml0eS1pbmZkLXpsaWItcm9vdC1yZWNvdmVyeS1yZWNlaXB0Lmpzb24gbXVzdCByZWNvcmQgZnJlc2jiiaQxMjBzZWNvbmQgc3RydWN0dXJhbCB1bmF2YWlsYWJsZSBldmlkZW5jZSAodHJhbnNwb3J0IHVuYXZhaWxhYmxlIG9ySFRUUDUwMi81MDMvNTA0KSwgcm9vdG1hbnVhbHZlcmlmaWNhdGlvbiwgZXhhY3Rwcm9wb3NhbC9zb3VyY2UvbWVtby9jYWNoZS9yZWxlYXNlYXR0ZW1wdC9EZXBsb3ltZW50VUlEL2NvbmZpZ21hcFVJRC9QVkNVSUQgYW5kIHNhbWVpbWFnZTc2My9zb3VyY2VjOTYgcm9sbGJhY2sgc2NvcGUuIE5vNDAxLzQwMy9leHBsaWNpdHJldm9jYXRpb24vY3VycmVudGNvbmZsaWN0L2lkZW50aXR5LW9yLXNjb3BlLW1pc21hdGNoL2hlYWx0aHktc2VydmljZSBmYWxsYmFjay4gQ2FjaGVkIGNvbnNlbnQgbXVzdCBoYXZlIGJlZW4gcm9vdHZlcmlmaWVk4omkMTIwc2Vjb25kcyBiZWZvcmUgdGhpcyByZWxlYXNlLiBOYXRpdmUgcm9sbGJhY2sgaW5kZXBlbmRlbnRseSByZXF1aXJlcyBhY3R1YWwgY2FuZGlkYXRlaW1hZ2VmNTU4IGF0IGV4YWN0bmV3c291cmNlIGFuZFJlYWR5MCBwbHVzIHNlYWxlZERlcGxveW1lbnQvY29uZmlnL1BWQy4gSXQgY2hhbmdlcyBvbmx5IGV4aXN0aW5nQXBwbGljYXRpb25zb3VyY2UgYW5kIG9uZURlcGxveW1lbnQsIHBydW5lPWZhbHNlLCB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBjYW5kaWRhdGVQb2QvREIgb3BlbiBpcyByZXF1aXJlZC4gTm8gZHJpbGwvYmFja3VwL2NvcHkvcmVsZWFzZS9ub3JtYWx2ZXJpZnkgZmFsbGJhY2sgaXMgcGVybWl0dGVkLiBBIHJlamVjdGVkIGN1cnJlbnQgb3V0Y29tZSBpcyBuZXZlciBkaXNndWlzZWQgYXMgYW4gb3V0YWdlLgoKRmFsbGJhY2sgcm9sbGJhY2stdmVyaWZ5IGFmdGVyIGNvbXBsZXRlZCByZWNvdmVyeSByZXF1aXJlcyBDT01QTEVURSByb2xsYmFjayBpbiB0aGlzIHNhbWUgcHJpdmF0ZSBqb3VybmFsLCBoYXNobGlua2VkIG9yaWdpbmFsIG91dGFnZS9mYWlsZWQtY2FuZGlkYXRlIHdpdG5lc3MsIGN1cnJlbnQgcmVjb3ZlcmVkaW1hZ2U3NjMvc291cmNlYzk2L1JlYWR5MSBhbmQgc2VhbGVkY3VzdG9keS4gSXQgZG9lcyBub3QgcmVxdWlyZSBhIGNhbmRpZGF0ZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gcmVjb3ZlcmVkLiBPcmlnaW5hbCBvdXRhZ2UgZXZpZGVuY2UgaXMgcmV0YWluZWQgdW5jaGFuZ2VkLiBBY3R1YWwgUERQIHByZXNlcnZhdGlvbiBjYW4gcmVtYWluIHVuYXZhaWxhYmxlIG9yIHJlamVjdGVkOyBubyBjdXJyZW50YXBwcm92YWwvUERQc3VjY2VzcyBvciB0YXNrY2xvc3VyZSBpcyBpbmZlcnJlZCBmcm9tIHJvbGxiYWNrLiBPcmRpbmFyeSBmcmVzaCBvdXRjb21lIHJlY2VpcHQgaXMgcHJlZmVycmVkIG9uY2UgcmVzdG9yZWQuIEJleW9uZDMwbWludXRlcy9kZWFkbGluZSBvciBhbnkgbWlzbWF0Y2gsIHN0b3AgYW5kIG9idGFpbiBhIG5ldyBpbmRlcGVuZGVudGx5IGF2YWlsYWJsZSBmb3VuZGVyIGRpc3Bvc2l0aW9uOyBuZWl0aGVyIGV4cGlyeSBub3IgdW5jZXJ0YWludHkgZ3JhbnRzIGVtZXJnZW5jeSBhdXRob3JpdHkuIEl0ZW0xOSBpcyBjbG9zZWQgYnkgYWN0dWFsIGRpc3Bvc2l0aW9uL3RyaWFsIG91dGNvbWUsIHByZXNlcnZpbmcgb3JkaW5hcnlmcmVzaGdhdGUgd2l0aCBubyBmdXR1cmUvY3VzdG9tZXItcHJvZHVjdGlvbiByZXVzZS4gU3RhbmRpbmcgcmVjb3ZlcnksIGlmIHdhbnRlZCBsYXRlciwgbmVlZHMgc2VwYXJhdGVseSByZXZpZXdlZCBpbmRlcGVuZGVudGx5IG9idGFpbmFibGUgYXV0aG9yaXR5LgoKUG9zdC1SZWFkeSBwcm92aWRlciBjb21tYW5kIG5vdyBleHBvcnRzIE5PIHJldmlldy9kaXNwb3NpdGlvbi9hY3Rvci9zdWJtaXNzaW9uc3RhdGUgYm9keS4gSXQgcmVjb3JkcyBIVFRQMjAwIGFuZCB0aW1lc3RhbXAsIGhhc19yZXZpZXcgYW5kIGRpc3Bvc2l0aW9uX2NvdW50LCBhbmQgcmVxdWVzdCBzb3VyY2VJRC92ZXJzaW9uIGV4cGxpY2l0bHkgREVSSVZFRCBmcm9tIHRoZSBmaXhlZCBhdXRoZW50aWNhdGVkIGNhbm9uaWNhbCByb3V0ZS4gQWN0dWFsIExpZmVjeWNsZVNlcnZpY2Uub3V0Y29tZXMgcmV0dXJucyBvbmx5IHJldmlldy9kaXNwb3NpdGlvbnMsIHdpdGhvdXQgdG9wLWxldmVsIHNvdXJjZSBpZGVudGl0eS4gUmV2aWV3Tm9uZS9kaWN0IGFuZCBkaXNwb3NpdGlvbnMgbGlzdC1vZi1kaWN0cyBhcmUgY2hlY2tlZDsgbnVsbGFibGUgY29tbWVudCBzdGF0ZXMsIFNZU1RFTSBhY3RvcnMsIHByZXBhcmVkL2luX2ZsaWdodC9jb25maXJtZWQvdW5yZXNvbHZlZCBzdGF0ZXMgYW5kIG5vdF9zdWJtaXR0ZWQvaW50YWtlX2NyZWF0ZWQgcmV2aWV3IHN0YXRlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCBpbnRlcnByZXRpbmcgdGhlbS4gT3B0aW9uYWwgbmF0aXZlYm9keWlkZW50aXR5L3ZlcnNpb24sIGlmIHByZXNlbnQsIG11c3QgbWF0Y2ggdGhlIHJvdXRlLiBObyBhY2NlcHRhbmNlL2N1cnJlbnRhcHByb3ZhbC9nbyBpbmZlcmVuY2UgaXMgbWFkZTsgZm91bmRlcmNvbnNlbnQgcmVtYWlucyB0aGUgc2VwYXJhdGVseSBpbmRlcGVuZGVudGx5cm9vdHZlcmlmaWVkYXV0aG9yaXR5IHBhdGguIEZyZWVmb3JtL3Vua25vd24vcHJpdmF0ZSBmaWVsZHMgbmV2ZXIgbGVhdmU7IGZhaWx1cmVzIGVtaXQgZml4ZWQgbWV0YWRhdGEsIG5ldmVyIHJhdyByZXByL2JvZHkuIEFjdHVhbCBvd25lclBvZCB2ZXJpZmljYXRpb24gYWxzbyByZWZ1c2VzIGFueSBub25lbXB0eSBlcGhlbWVyYWxDb250YWluZXJzOyBjdXJyZW50IG5hdGl2ZSBlc3RhdGUgaXMgbm90IGNsYWltZWQgdG8gaGF2ZSB0aGlzIGRyaWZ0LiBEb2N1bWVudCBjb21tYW5kLWxvY2FsIGNvbnRlbnQgaXMgZGVkdXBsaWNhdGVkIGJ5IGRpZ2VzdCB3aGlsZSBtZW1vIHByZXNlcnZlcyBib3RoIGxhYmVsczsgYWN0dWFsdHlwZWRtZW1vL2RvY3VtZW50cy9pbnRha2UgYW5kSFRUUGJvZHlsaW1pdCBhcmUgdGVzdGVkLgo=" + }, + { + "digest": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQwOjE1LjU0MDg3NCswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMSwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImNjZmY3YzFlY2ZkOWViNTlmYzBjZTU2NmMxMDEzYTJhZjVkZjUxNGFmMDQ4YzY4NDc0YTI3Mjk5NzAyNGVmN2IiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iLAogICJwcm9qZWN0aW9uX3JlZmVyZW5jZV9maWxlcyI6IHsKICAgICJzZWFsZWRfbGl2ZV9kZXBsb3ltZW50IjogInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiIsCiAgICAic2VhbGVkX2RlcGVuZGVuY2llcyI6ICJzZWFsZWQtbmF0aXZlLWRlcGVuZGVuY2llcy5qc29uIiwKICAgICJjYW5kaWRhdGVfZGVwbG95bWVudCI6ICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIgogIH0KfQo=" + }, + { + "digest": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQzOjQyLjg1MTA4NiswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMCwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiIsCiAgInByb2plY3Rpb25fcmVmZXJlbmNlX2ZpbGVzIjogewogICAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiAic2VhbGVkLWxpdmUtZGVwbG95bWVudC5qc29uIiwKICAgICJzZWFsZWRfZGVwZW5kZW5jaWVzIjogInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iLAogICAgImNhbmRpZGF0ZV9kZXBsb3ltZW50IjogInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiIKICB9Cn0K" + }, + { + "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:2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtZXhlY3V0aW9uLXNvdXJjZS1idW5kbGUiLAogICJ2ZXJzaW9uIjogMSwKICAicHJvcG9zYWxfaWQiOiAiSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEiLAogICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgImZpbGVzIjogewogICAgImV4ZWN1dGlvbi9hY3R1YXRvci5weSI6IHsKICAgICAgInNoYTI1NiI6ICI0MzgzOWU3YzY5OGRjYzI5NDcyZTE0OTU5YzFjNzE5NzBkZTZhMzA1MTE4NDE0NTE2MjQ1MTk0YTIzOTlkNmExIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDI2MjQyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTgwOS9YZmJOcEsvKzYvZ3BqOVFTcWdQdTBuYXlNdmV1YkczbTczVXpuUFNkbnMrUHo2S2dpeXVLVkpMVXJiVk5QLzd6UWNBQWlRa0s5bmV2c3ZyYXlnU0dBd0dNNFA1QXZMa3laT0xYSGp6OUVITXZHcTlFdVZkV3NIamFoRlg0dGpMeFowb3ZYS2RlL1VpcmJ6WnVrenpHNjhxMW1VaXZGVXBWbkVaMTJtUkQ1ODhlWEtRTGxkRldYdHhlUU92SzZGK0E2UkZsazdWejM5VVJhNmVpK3BnWGhaTGJ4WFgyTVNUcjkvQlQ5V2sxSEFxa1lta0xzcEt2NmpqV2ordnA2dXlTRVRWZk4zb3h6cGRpb09EZEk3dmh2TXN2cW1HeFFwZXByK0p5WUVIZjhvWUp1MjkzMVMxV0o0OXBIWFBWOTluWHByWG9vU3Axa2dJTVY4RGRmeit3Y0c3djU2OFAzdnZoVjdQbjVWcGxnMm1jWEs3WHZtQkozOG54V3FEdjRyNVBFdHpNUUJDcG5ONmsyUWl6dGVyZ2Z6aUI0UUQvL0dUZFYxQVV3T2NlcU1BbGtBSFdCeDhiR0NXUlpaaEYvTlpEUW5ZSHN6RUhMRC81em90UmU4dXp0WWlnSjh4TEVXZktRREV5WXZhbzA4VGpRL1Q1V2Q4ZVZhV1JkbVRmU1RBYWhIM2NPa2tqRmw2STZvYVNDSlhmQWpmajE2ODdQWHA2MzFhTDJobHVRdXNnTWg3ZmpuMSsxNWN3Vm9DNkdVejhyd292V2xXSkxkQWZ5OEYydmV5ZURtZHhSUFpjZ2ovbS9VT3gwZlBuejQ5NmdmZTFQZjdFNE9PQ3B2aGVqV0xhOUVqV0l3SUxPVzZ6TlgzaFhqZ3A1NmExYXBNNzdBTG9obEFzNUs0YmhQK0pjNHFvY2lWend1WXFER2RETG14cDBaZ1F2ZnczZkI5OU9iOTZadkxIdllaVm5XMExHYWlqd1RYb0QwQmtEM2QrUExzQjd0eDM1cFluTTg4OVhtZHpyd3dCRGthM3NDczBsbXZUNThWcUI4dlRzOWE0MExyM3JqNFpqeDJZREF1WG83SDNjRjZUVE5ZRlFVdUI5NjlSWENIUUg1ZkVzMHI3bk9RbVdSZDFjVnNvd2hCQW5ONWNmRkJrU3lLNW1rbW9xZ1B5MWdWMlozbzlZZWdNMFJlSDd3R3NZSm0yRnE5dXZqbC9PeFNkZlZIaTJJcFJ2ZWdCNUxGQ0pFcGwySTJtSWtrclVBUndVaXZmM3IvNGVMMHpjbTV1MHU5RUFQR0w0MmI1cjlDNDZianlQT0hja1pTRUt2UjBmam81ZUg0OEhBQVk4NEd2d0YvRDhwRC8rRDl4ZXYvT3NPSitlczhmWmlNUnFPN3VCeUJ4aHpOZ09ORU9hemdMLy9nelk4blArQzhmTUQzUnZ5akdDYkZPaXVXVS95Y3h0bEkvdXhPNkQ5WmlDYnpGeSsrL1hiKy9OWEw2ZUg4Nk9VM3MvRTN5U3g1Tlg5eE5QNVd2SndmelkrZUg4Ni9lVDc5NXV0WHlkSFhyNDZlVDhkZmZ6TStBaWlIWDhjdjRKVi84UFBGMjU5K0pCek1HUXhnQldCcHhVRE56ei80OGVUdjBmZS9maUR0OXVMd3lIdnFTVGxUZW1TZDkwREozNEhVd1NLSDUwVU8yZ1IxYkxHdXcxZGpLU0pTekJyRlBHejZwZmtLbW1KdjZDZ2U2dkJEaVJvcGlWZlFSMFFBQjcvelN3VlkvcTJrRkxlUkNIQmZaM1dQLzVMajF1V21VUVNrejJBYTJIcVlGZkdza28yQmcyY0VEVnVKaDBTc2FxL1hLTHJBKzdCWjhXTi9oenIwcTNndWVLK0UrU1lpQlNqclBMNkwweXllWnJCL3doQUo4QjY4VEVSWnh5a3duRWM3SGhMTjBoVVNMYVphQXFLS29qVm1ZYS9TSENRYVFDalZQVXVUbWlXZFhxRHc5L3c0eTZKa0laTGJLbHJGVlFVandZNU5OTFFrMm1kMFo2QTVTT1BUSHVFQmxxc005cmhqbU9TOXh3dEFLbnNoc2huWUFRV3VaNGw3Q2NJQU0yR1oxalZJZXVoOVpJQzQ4YlF4d0wwb3ZwZkxHU2xvK0RvSHErRk9SUEVLZUFPbUVCRVdxWmhGMDAxVUZrWHQyemd6NHFyVEdrUTRyOU1FcEhNVzNaUnhYaU5JTmtvaTNCZUtQTnRFVTBDS3QxZjRsc2VyYWxIVStxc1R2bTdGSW1kMW5HNXFVVmx2VUlNWlUyRmRGVW10c1F0L1VOUFliMVhNb2p4ZUN2VXNYMmZZUkU4Q0ZKWll4aEhhSURkbFdtOGkwQk41WFRuQlUwLytIaTNqRFhSS3N2VU1YK1hKdWlUc1lKVmgzV2dlc1AyeTZSWWhCNElPRURPTGluZXNUbDBEb2M3R1ZnUm5CVkl0bE5VQks2MlhraVlEcElDdGdqQ0RiVGpHTlFIWUtBall3QUU3eVZKRWRKYk81OFl5U01xNWhsQlRZMHE5MkhNWXVVd1IybFFXT0pLMExBUEdXcTNMVlFGd21LRjVsYkkwMldpMFhHQzVCZTYwUmdlNXNnMW9WTDNFUHdTV2ZxMWdsNGx2cU5kQ3hGbTlpSEFQQjJPek1ua01oQ1dkaVJJZnBreDBrYUJ0cU9hUTBJcjZueXpOVW9GeUlEWFI5LzRjTnFJYjRJNGxIbGF3czRNY1M0a0hNbVN6U2d1K0ZIZlNXRksvUmFqeTZvMHkxWm5mRHBUSmhneU5GbHZ2YzhWeFg4WTN0REdhckhLNGx0bUtmN2c5VC93SzIxMzNYVmgyUmQ3QmdYc1AyaWp6NFh5ZFpjdTRUaGE5MHIrS0IvUHg0TlgxeDVmUFA4RVFKazZvbzFFTjh5WUtQQUlmVTcwYzBxSnVMUWZnMEZaTURud1VMalZzWkpJTTdWNDhQTkNZdHBLeDkyZHZTenRrSEcwVmRCbS9qWFlGanROT3BFbDM3c0M1alFhMXYrWWxJKzlxV1AwelMydGh1RWZxVGI5TFJlemRSa2RhSnpTUXRDallYdHR1MlJ3ZXRVd2J0R2V1Zk82R21BekFSY3ZuNlEwOGc1UFNVNFlsR0pOaXVhbzNBMjZwR3ZXcHg2S29jUGRpSy9MYWUrYlI4RzBLRXpiU1hIS2JRNlZZRnVpejRGYU1yaDJyNzhEakhSYWxYUk1UTkFqc25yV2FYck1Sb0xEbHRYcTlya0VmUlVyQnNQZURrS1hDa1Y0b3Fxa1M5K0dZTzBvS2ZlWDloU0lLb0FuWFFIeFdGcWhtUUxhOWVJNis5RExHOVdmVlcza1lad0F2NUVIZ2NwWXF3b0NPNUxCUlFZMGFoRjEvcWFNRmx4Yy9YSjc4eUlaSnZFRXJqOHlTem9UOVNaY0kxazdJQklCbTdWZll5cVlITnJMZm1OcTRTeHhvditOcklLMHlhQ1ZYc0xNUlQ0eEY5WlhkQkcvMUFoOTB6Qm5ZUjJCVG01akdiNC9jcTVINk9FQ2xDNjdHS2lzMlM1am5FSnY2ZlhLdUl6VE1lLzErRnpDMEZ6blFMNEdGMncyZUYyeGdkdGh2aUFRVVVvcU8reGI0K3Z0bkk2OERKVzdBT25ieTJYQ3Q3UkdnOThqaEhiVy9ERmNiRzFZWFZNdnlBRkI2MnZnbTBvYkVIckJzbzJQTHBIVWpkZ3FCb1lxNWM5WTRHYmxqRzFpeDV0Vjdkd2NyTmtlcXBFVDNLRlR5Q2kxV1dRdytqUjlGNzA1K2ZYdHhjaHBGUG1xWVZka2pMR2ZyNWFycVNaSHU5L3U2aDU0bGRQM2hwNU5MbzZOQnFqZ0g2YnhaeDJXWFRuMXJFN0JjU2RMcFZiVmc1eVhOVXZTN3hvZGt6bTNxUlpGLzdRMzg2MEJPcDlISFIrTnhYeWxqc2lxVnF0bWxrLzhCUXA3SG1WU2FIR21JMkQ4TFBUdXVpQnVvL0JKYUlVWU8zYlRqaHF3Tnl4UjBhYWlHR2FKdGZNV2FCamIxSzNPODZ5dWZLZUJmVTljbFdNL1lISHAveWRaQ0l6Y0cxNjNZYkxXMzluQ3h1dlppdjJzektJeXZZTEJySkJMaFFML0lxaXN3ckEzYnlHOGkxd2g3ekNYS0tDRExMdFJ6N3hnZ2xsbmRHSkdQV1NUYXVuSUFmdHpBOGprMlB3Vjdkb1l4ZW9XNkVWdWp0UzVtRnVyYXZidysyRzJaL29hV2FlOXFJSitlcWxmOS80QzVBSlMyaWNyb1lKeXZwRUdKRGkxa3NpS0pNeDFSUXhNSVd6RTdJSnBGeGVGZmFoZmd6NHZvbDh1TDg3ZS9lci96cjllWFp5Y2YxSSt6djc5K3E1N1BMLzV5OGZidHhTK0JHYTM4eXZzK3pXTXdJRFIxT0x6ajNSUmdXNURSVVJkZXJFSzdaQkVHTXJsUkYwVTJBajZvUjFseEkwM0dvWVQ2WG9NamQyUkVUa1VqRy9keDVaR2xpWkVJYnlxQTFRWGFEamttU1RoaEF1Wjdtbk9LcEltQ3cwVG1NeUxBSE4yd2V4a0ROeG8zN0kwdU8vSVBKaHB1MTFQdzFqSXlrN3hCN25XQ2haNFBGaVF1eXJPdWN3cWM1QTBTUjUvQndBTy8wUnZobEVhU1FpUGNDTDU5TVg1MU9DZ1BSd2dWRjdBSkRkZGxuRmR6Z2NyRkNQQzlvemx0VVo5eUlxZzZhVzFDcytPYmQyZUJDK1hPSCtncnl0THNlM3IyOC9sUGI5ODJ1S2s4RWVLbVVrYkRVekdQUWJ1OWx5OTYzZWF3UDl5a0ZXWWExT1JrakRBd3dKejlmSGIrSVFMZVBHMEF6RUFwb1djTDQrRm1NRndXSUMxRm5pYTlQdER0OE1YWVVGVmdDZHhSMUd4c2tISmpPNUgzQy9SWE1IQTM2WkFFZERHWXpjaGVZVFB1b0RPdW81OFNmOVgvT3hsYzFOUG5oNmFGR2RYWHk0MERrVi9sZDhmZ2RBMEpOeVZuV21RY290RGxCUmdwS3B6Y0JTR3pVQVJwNHVTSEtZQytkVXhQRXZaWjZNRWdacmJIVFFYWi9NL2hMcDJNNURHYjd2Q0EyNEVsTWdFb3JpeG1WV2ZYUWYvWVFVQlRXZHlYcVoyMWFrdmU4RDVPNjU2eVBwYnhRKzh3Mk1VU1JoSnBEb05rV1l2ck5CL1FUdG5iTXFoY1NsY2JXRHZkYkFWV2RJODJEdHcwdWl1cEc5Nm0ySEQ3ZDVxa0tXb05oZWJadWxvWTMxQ3BWcHM4NlZtTkpNLzFsVDFFbVQzYWR1eFVuUjdSRllDbjlrTk84R0hxaStJYjRTN2U2ZVRRTUZYS3cyN3BLQTJpNjZERlEybXVRdk1qblVRNDlqaTRHYlRqOGw5NWwyS0F3dWNwUzJ5RUxyVDB1UFVjdlErNE44Ri9adFF3SU5HRFRRMDVqNkh5bHNXZC8yVTdVRkdhd0YzcGtQZTFUWS9tTlZKTnR1MFE2VEVhMmdhVURDWm9rclN0UDFYV29PaGpoNGcrUG4ycWh1SnNmcFFBNTlVVWhYVUZrU2VjY3pHczFxU2dJRUlsRXlIUWdvSXBuNlMzSU1zQUdNS21aL3NFKzRWZTlZeE1rOHUyU3kwQlVPMlZXTUJhRnV0cXU2ZGcraHR0VDBHSG1ZSEROVnkydnhuc05pWUhacUxRczBhZVpLZGxrcXRGdy8yTzQzTlhtTDRzT042R3BreE0yWitQSDlHTDg0Ym5ZS1o4K3VSZjJ6eW5vRGlsMi9DSWRUdVpIU1JmYTVyWGd5eGVqZEdLc1JtTHpWeTVmdDRwNGVlSi9BWi9hY1R0K1dSb1lzek0yZHdWMlpxelFGblZuZFdXQ1RFWTUzUmttaGVGR2J3VDJWRHE3V29GdklESVZ1MVlnVDlMcTFWUllkYlNZNHk4ZUZvSjBEaE5sakJ0SEtVQ1AyeG5sMWJOQzd5SjZ4cURvQkdLTmhNaW5vTGpTb0c2amtrNlREZ1daaVNxZGZhOVBPeGtYaHdBMXR4ZjRhRnkzQ3JYME8wZzhZTk9ORGNPV1NTZ1NyZXVGbi9rRlFQeHVPTVlNTEVFdjZRWnVrZkQrWVg3VFU1UGNpZEFpWDVJbGpwTzRNdkFBTm5DTFRSanRtcXhvU1NRa3cvVk44VjZkWm11ZWlSUkRBckxsNWpScUNWNklzWUcxOXJZMHJ5U2lTcm5Xc2pQMjlEVXZkdUlZbXBOM0N1RzF5SnJwUERsK0xLRlZValFRRFZyQ2JTRWdobkt2V2pPaDV5dHB4ZFhZeENJYy9MTkczTFkzem1qLzVaa3hDY0FMQzhkdTZMVjQ1UVprUlVYOHlJMUl4bTJtMTZza09hVjMzOE01bnRRKzhJQ0tjbVdWa1ZHOHRHbTMxWVYvdkZXYkNZR0ZTaFVZd1dJem1WR1hFNGRuazYxYkRFaThQQ2FXZXNFdkJBV1ZLV0hjalJRWEJWMzNDSGlrWnVFUUtDUlUvYlRCZlJEMDluNzZjM3BlUFQ2NUYzMCtxOFh2NXdEY21tZGdxdi9HM01xbVU5eTluVUJ2cjd3enM5K0lTZFprVVBGRU00TEQ1TThJd3kxZSs5K2ZqM2kvTStvTG03QkoxaFNSRUU4Z0pxdWpsWE1BRVFnODNKeUhUQXZMR3F5dHNUOVVNcUNSSVdzc2lkUG50aDFsa0ZSQldpcUJsUUE2YXg1NURxV1N4Z1paaW9yV1I0cmVKd1hHWGplb1QrU2VzRS9Wcm5qOE96djc4NWVmemc3eGRIQUNzY3RaNWFXUGU3Um4zU3JacEI1S0NXbUF6S1NnNHd3RWdCS0ZzdGlKc0VFVkxNR2FNeENGVHppRDg4UUl5S09Dc0ExOGFQZmRmVG9keXQyOUxzUmNBcGtHSWxUcldHN2RQRVliZjF3Zk5DTjIraXdUUjJYSUNkZ3J0bU9PL2x1SVZJZnlaRVBwK3M1K3hkRzNlSkJ5K1ZWM2kwTytpeTBQRmxjU1hqNzNZdkRvNmV5dTRPeWlwNXlrVGdUcTl4UUNpR1NVRExLbHBONTdLNlhsQzJsczNXc25TejFYdnRYVkUzWXJxajhVNmlZWkFldUlOV3BhUVppNWwyVWxlS0I0bjc3VWgrT3dTcmoveE51Wm12cjR3RU1sb011Ky9pa1ZhUDBaRktqdGY3RWFjdnp4MCtBQ1VoWms2OVEvSzV5RGpzTTNiNVIrNm8rdGl0ZnlUdHBmR1JNQUlOYy82R0paVWZLdmx6bkRMcGMwdDhwLzhwRmZWK1VWRVlNZG9RMGI1Qm50ZTBFeUt6V3BKa1ArZWNTL01LU1BoMGVmYnQwR0REUUJwUUl6V1E4R1VzWThRcXNwb0lLbkUvZXZtMWV4ak1xbGlHdDY0WlZpV1NOSlNFRFVGbU1KMkI5UDhBVkJHNjhFZEtLSnMyS2oxZ0FFYktDQ2FveUlSdEo3cm5QUEQrWWdkUnJwZVljRUhhSWNyTXFVZ2JIV1NCNG9wSk9IQ3JCZmFSUnl0ZEc3Slk0TzNRWFFaSmFDSG41OXkrRFBId2hZOTVtMW9vSDR2Y0Y3K3ZFUXYrK1JUYldtQ1J1UXYvZnNkWjdyS0pqakM5YVZPV25jdTZvc1NBVnBaNEJwUjVmWlducFQvRnZCYnFsajY2M1dkMTdwMHI3cldTTmJOWTFXNVhUdVVJTGZZWEJSYzVRNklJcDc0YjNBZHEvMVVFT2F2bWVpTUlqa1NZa0ZwWDFVbGFockJ4ZG1yY3QwMS8xZERyNk9sR0hybjRyL0RsS01tQzZaajE0WktuMkpWN3hiQW5tNEY0cjFmRmlCdFJaTDkwamFRWERkM2gwZVZ1QkxCeG14OUx3SEZoQ3pRTGdab0t5cU0xMkt4aXN5Nld3K3locldpNkV3NWFXTlhTdzhGektpVFYyYzVGc0VzNnFBdnhwOFVENTFmVjBtVllWdXdPZldvRUJlem9xWk5aSnBDSld2R3V6Mlh0Q3pZblg0R01PKzlZNklkTjV1YTVxTW5rcXRCMXFyQWZLME5Sc00vQklnUnpLL0NZZExmbTNpdTRYaWkyaXVrdGs0Zk5BTVllVUFiZlk2dFJ1VlVlN0pKVUdkRXFwM1RYMDlwYmFYVHhBNitYZ0Fhb2I4ZnM3SW8xZkdDc3N5dlFHY3hhZUkyallpdUZTb0xJVndPM1VwZXNRclE2OWNpUmgwb1FtMUJlajNrWFN6azJhaUNqTkVtcjBNZWx2VEVRWGgwVG9iMFNnSEtUSFBIRVY3Ry96WGlmYWUyMTFNQlVGbG9nWlA4bDE1OTEvMHV6K0pidUNFZm1rVlZTVUVkdVNFZTIzaEJmWC83VUM2M2hhTUJGUkkzK3FwazEzY00xWlYyYnpiRlVjWEI2TGl5UkZXNEh3LzdzSUVCOVo2c1kvalhCUUsvenBPRlhpRGdicDh1clBDWldxNlByVjFvVy83a2FhdUw1YkI1cGtvSVhLYUdVY0I5NzB6ZjFCNGZZSmU2a2ZuVmlRUGhUWWpSczFBVHdxQnFrVzZRcVVxZzdtMlVFZ1RCN2RiVnM4c2s2ZDZ5YTdPUU9NNnR1MkFHTm5MbnV4alRuVW41QkJXckxJVEtvUDlzVExhWHF6QnMxMURPQ0pXbWJZY2c4TmhNWHVEZTlGdGthSzVCd2J6WFRnUEJHVHo3Q2p5a3QxSks3YUpuS1k2dTlKQWFNenV4aFJVdWQzaHlmbHpSb0xJTi9SRjh5clVzMGJMRzRZUlVETUtPb2JQWWZndVVXeDdOS0QvVllkQ3dLbkhKUkVGZktKMlVBSGVjaXgyUWtCVHdJTjhMaFBRWjZDVElNQlNMTCszOUg1ek0rRUppdFM1Zko5S1NoMjJnYk5LWm5QUldNT1FyNFlWRW1jL3lHelVxWEZMbURTM2l4djBNNlVRT2d2QkZPMVRxemlxeUdDakRUWkkzV3dMZFRIS2V2bGFxVDlOK013b2JWY3NvQzBJNFhORUpKN2xTZzlDdDlldXdFZkxwTERPR3ZtalBQc2FoSjRXTGRxbDZ0dEs0NGJEMTdGZy9uMXgrZGpQTFpCaUxmS3N0dkZjZUloVG1wVnZjNm5yZHFEZmVYOXpFZnVRQ2ZJSS9TQW42cDhIOUhSU0prS2xSVmxhRStnYmFOSmk4ZHdVV2NnbnZCQkdzaFpuTnQ3a3E1QVp1RG9HbUVqVjJXdmJUUmlJOUwxR0VkV29YK0Y2bUNkcTR3LzV4YWE1cXYxTkV1ckJaYTBsM1U2QjFJMGFmSG1OQ0tlTzVLbUk0QkJ4WmQ1SUFoSVJVWlV0SllGRHpEaElGZStvcEk4UEhWTm1JRjJUZXAxakxVcmZFQytZVjIxNmZKNysvakFVSjJtYjFkbmYzTHlVdXRvd2xZZWFwQ2xYVEdTREdNanpNWGxJKzJPamRCRXEyUnFVRmEyOHpMdFZ4Vm5GK2Zib0tXUjlzY0R2c1ZEMUV1WkVSbHU0bVgyQndEbElyd1NEd3EwRUhZdkM5ZWhwc3Y0Um14YkdiUjVTcEhSNGdmcVNCVVlRRzZXR29LanQ2eDZSb0V4aDdybG1YUVFKd1dyVTRHTUhDemo0bWtWVlpzbG5wQlhKL0xCNCtGdnhBS01SZUQ1N1JNdnJocUkzUlBBWFBKMjVFM2NTTHNxUUgzRU1aNVdZR2VBbThaSStzT2hyd29IV28xQjlNRjU2RVpIY1hSOUh3aDA4Y0JJaUZjYWRZdCswcHYrUStsbmp2LzV0SE9KNkE0RzRJc0kvdUFaR0J4TTRWZTllMWp6VUtYQTZ0UjFLNko4NWQra0hNSjZMWk1FaEN2YTZHQUEzbS9adlRCVU9zSElxWnJROVY0QzdJaFA5enVrME1nNmJmZFdtcTFwTEwwbk00bGtVTXZCZjVvbVRNY1NEeHBwYVpLcEpLNmlVcnNXM3o2Z0lsVUxRY2ZGSGlFaVVHeEFSaE4rL3V2WnlXazdHSWhnM0RQRkQxMFh4YlVjbWhrazlqaU9rUTNUNVdDZC9VMVZoUDJOZndaTmk4QWpTek5DUzlNNHZLZS9XN0dhSGNaZmYwdEQyNFJUSkpIMm9oWFYzQTU3Vi95Ykc1QnhZUStsaitZaU1WRzB0dUtrTjM3dHM3bjBoSE5JdlRlZ3R1aU11Tk82YW0xV2lKZ3VvbXBzQ2JMWjdCVjJucnM4TnM0T0VuNTAxdkpZSFNSTVl2QXRRMzJsaEZWUm5zNE5pN3NOeHJSZTNTZVpxUytmTzZLWWNuUFBVUGVhb1paNTM4RTUzTU45YUhzeWlwenkvS1ZuSUs2YjhxSFNXbDVpaGJ0UXkrM284bTBiTjdzOStBMnJERytqNEVGREp4KzNRWFRaV0M4QlN5ZWFNblFUbFVWbkJLVVlJMVJOaHZvQkJUNnRDaTRKVk54NTVldjdNdUlhZGl5ZG1mNXZXSlpuNC9Ga1BQWmJPRWkyS3Fab0R1NHhVb3NFc0ZYS25udVBxQ1hLbk9Hdy9vMnVUakw0anJpbWhaNmpXVUFwUDlYUzQ1WWNhV3JaZXpzUitDNXNEUlg0bEVKanFJc1Vjd01wVm5YR0NkNEpnNmRYRkJieXBnbDVDcG04TXBLRVpsUzl3NFNOQmxackZyaTFvYTJzV3FjdFVjdW9GQVFtWUpVd09EZVBSbEt0UzIyYWlndmpUSkc4TTBPT0duNHVadDNOM2diSTJuTlIxeXQ1aXdYb0JtbFc5cDZQRDRQbjQ2OVpXVGo3aVFmZ3ZDUkZDYnNyYnBYcmlQM1IwdGplcjdua0pKOERnSHJmZmlxc2ltSHZDa3ZNSXBBRGlnSHNDNEZUU1g3dzhWTmYrODFZT21qMkRoUitIZ3lYQW9QaDdCSVpLcFVZbzErdnhrYkxkWnJPR2pYbnpXT3BlcnYwLzMranBjbmFNQUlWU2pTcG9QTkdnSEVETTNkTVpBOE5mYXpheVBLWG9MbVp6YlpBYVRlTWNCc0laZE9SdWpQUENDWlNLOGI3V0pwUnJUN052cTdDQ054YTRkR00wK0JtUWpLWHlkeW5EV2xyUUZqeWRVekhKcFIxWjNZdzRkdGRPdXY0TDJ4YVpwck9tR1VZZHJxejRGRVRaUjRCeThsZ014VW55TGtiUEVITm5VYVlGWVF5U1hEbE43bVBNUHpvcTdpUlAyRS9UdjJtOHZLZ2UzZUNVMkdTU2xWb1Q1U3VIVm1hMWpjdHY0bXkra1p1bSs5VG9HK0FVT2tlandPQ1lQZWpsYTRTU280TlMyMGRZZGRHNzdXcEhsajhGRmlVQ3R6emNCS2dmUlhBNkhOdWhkamFlZDg3SDlyN2xjdjRSY0UrTUsxWVU4ZDFyc0YwaEQwYXptLzhvUDBEMnQwb3ZhS25Dait4dnNNV1ZvVFp0Y0pkRmRkRnlUaVZhcngxaTNLMzl6WmhSdXVUZGR2ZTA4VXd1SnlyMW0wR0lMZXFNQnVFb1lVWjZRa0VHc2xHV2x0NHZrVkRzcFMzNllabXlqMFRlbUFWTFdrY0h1TlhZN3A0UXFzRVFYVXhxczYrNE42dHoxZXB1eW5ObGVWWDVwV2h6Y2FVM3VSRktiWkhHdlRkazBnUnloUU91SXVzMkN0Z25XYmlvVnNCYWgzeTZyZlQzanlxdXhoRnBndjFaWjNTV0pGOW1tdWI4S1dhTlJlcTk3WkpXdnVDaXVZUzIzbGFWblZqSUhOREtnWGlKTGUzenROL3JvVXVDSmRJK2RiNXp1VXQxcFdyL2QrVEplSG1FdWh2cmpWSTRsV2M4RUdFb3FMam5IZnpTblZwVmJmSnBzTjVOS1d6SU41VHozZzNMNm13K3J2UXc5c3htL3N5bjNtSEw1dnJNbHN4QUZ4QTFvbTFVY2lpcUk5eElwRHJKUlk2ck9kek1JRHhLaUlaRTRDcHgyQUpBdzBmSy80TjhNb2xFUkpwQWo1WEVCVzNaaHJScHRSMk9DNEttbkZPTFBQdlBWcUxqTkhVRWxlTmJvK2hCRkdpVHNyUlFWVnV5S3dBUzdMaGd3Rnk0bW9YRFZWb3ExbGcwd2p3WEZhQTZ3b2w1emI0V01qVHRoTzJPbVdlYlNzOEhpTDYxTjhlclNINUNFTzl5Ylh1dGlNNzhxTnZ4OVA4aWRLSHJWaVpQL2xzMTNNdjIyaFBNK3V6VEtqdVBEL0hrcmQ2RzBkRkdrQ0JjZlRqOThkUGlnU09LNUZkUjBIY2wxaXJQL28ySTBZazRIWkJTcm9nUE9vZnl6dXQrVHlHL3orNDY4cFhuWU1YNnIxMXNMMXRZNWl1U1NQSGlocEtobWltcDI4dXoxNS91TGlVMUxnOFJjcTBULzl2SnMzcGVnWE9icVB1Rk1CREdIUTVnS09kY3FPb1JzellNSm9qNUgzdks0K0dBY1Y0K2RQNStadnpIMVFTUE00M2N0Y1E4emxBSGo0dU05YXBNR000MWNJSVJWc3VUTkR5ZS9ybVVDMFQxUjAxSllIWmkyTWRUdFdWN1ZCZGEzdzdQbFRYUXVvY2hqT24zVUk5MHFsdlk5bzdIUEF2SENYT0UwRGFEN29oVi9jS0duY3E2U3Z2clN2dysyMmFVNEYxMkxwMXkySXZaN0tsZXcyWGhpc3lHeVcwYUZxRmVsdVEySEtZZnlmazlyOEhzRzErVytvakRkaVYyTkpYM3Qzd09VVHAzQXZwcm1DVUVUQVZjUEs2MDJ0SG9PU0ZaVXBNKzY3bDcvN0RCazM4aXJxN0w2bnNYTW00NjdyS2JSV1pDakY0Tk81dnZIWUlmNE5LVjhtQlFreEJjNXNVbDllVW14NWhYcHRYM2NrR2ZUcUhxazVHMEEwZUl5TjJRTkpUcWV1cjdOc1RobWJvOTNzWTlZd2VNY2dJKzVPd3c4QjBlWG5vckU1VXhidnFWa3B6R3Y0YzdHSE0veVlaTjZZYlpnbDJmeGpScFdOUjVFalZ5bTVZZHl3ek5iVGVuU3ZTanoxZDd5M3d1bU1Nd2F1UWtuRXczSFdtelhIWnVDcDROSFRORGtZMjUybEdjM1VWbE55VldqSzZZOUdSeUR1V25ENzNXemZNRy84UXlXSDd2dmpPNVQxcWJIVW5ELzFESjJvWkNPY293anJQS1BJZEYrUnpCYWpKTlpwakp0dXg4bzNLT20zSHFWTUxhc2VXLzRTTTR6NTU2eEw4L3dXS3lTaFBnbVlBQUE9PSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL2F1dGhvcml0eV9qb3VybmFsLnB5IjogewogICAgICAic2hhMjU2IjogImRiMzhhYzYwNWI0OGNlNWM4M2I0ZmM1ZWIzMjNhZDM0ZjA2ZmE2MGE0NDVmOWVmMjc2YjMwMmQzNThhYTQ1ZmIiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTYzNDUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBODA3MjNiYlNITHYrZ29jNXdIZ0xFaUJGRW1SdEpIRWEya21TbXpKUi9MTTdJYmh3V2tDRFJFakVPRGdJb2wyL08rcDZoc2FGMUthMlgzSW5GMkxRRmRWZDFmWHZScHYzcnk1SzNjMGU0eHlHaGdaOVdtMEs0eDFtajQ4VUxxTGtudmJTTkxDSUlsQnltSkRreUx5U1FHUVpMZkwwa2NTRy9nbkNtZzJlUFBtelVtMDNhVlpZUVFBVWtSYktwOURQeWxpK2JBaCtTYU8xdkx4dHp4TjVPODBsNzh5ZWhKbTZkYllrUUtCRGZINk16eEtrTHdnaGZ4ZGxsRndjdkxqemMvWEY1ZTNobXQ4TXgraUpEQVhoZ2xiZ3dsTTJ6RHpjbzB2QU5MZHhhUUkwMnpiejlLMHNOUFMzZEYwRjFNNzhOMkVGb0I2SDZSYmZJcFRuOFRtOTVOUGw1OXV2S3NMb0d4R1NSajBSODVvT25TR3cvNVhXRncvbzFzYVJLU0kwcVNmRGMyVHo3YzNuMi91M245RThLdnJIeS82djM3dU80NHo3Mzl4SnFlSU1aczQ4eUVIL1kvM2Q1ZDNBR2laUVJiRmNYOU4vSWR5aCt2bHozNjYyK05UR29aeGxORCtJODJpa0wzeFkwcVNjdGNYSTZaOVlxai9UTDhzVWdEVnlNazNrbUJHQVQrbitMT2ltYVZ4akNqNmJ6bGw3K1RrSktBaEhNM3ZaWlJSQ3c2L3BEWThFbUJ3YjhGbWowSW1MV3hvb2RhVEVSQXU0eGQ4ZVpsbGFXWUpIRUV3M3hBTHoxblFDS0o3bWhmQUVpRW9BeGdmVGFaV2o0MCtSY1dHaVFGSEdhUTdtbGhtdGpaN0JzbEJKb0QwdHBvWkR0bFl3eUUrR0ZGaVJBWE5ySmhzMXdGWkNNZ0IvQk5ZUTJjMC91R0hVYzgyMXFiWlcyaDhsS3NabER1VWFZdlI0Z3ZKYUZGbWlSemYwR2YreTVLNzJtWFJJNkxnTW0wQUE5VXEwbXp2L2tqaW5FcDJKV0VLRzlXMkU2TlVXM0lHem1nTDN3M3V2S3U3aTZ0YkMzRUdlZUZ0MDREMmtPR0t0RUdCc3FHQWJ5OS9xZ1AzYWhzalNXRElZZEFKdzNWQi9RYjNzS3Nvc0hwc1dKTDZkSE54MlpnWG9DMG5QWGVjamhVNDZkUngycE5aRlJpY2lpU1hnT3crSUxraHNOOFVURFBTcHdSc2pGL21SUnJzSlNNQ0pZSm9pdElzS3ZhV01GaTJrWmFGbjI1QkhyZDBtM29nTXJhUnAyWG1VeStqWU50QU5XMWpCeEpGMFo0OXVkZHBJZzhCN05ZdG1BRmpDN01aWVVaQjZQWUdsM2tqQWFWK3BKSzRRUUFnZW9hVjNkeGUvWFIxamU5enNIMUdzWWx5WTBOak1EYURFMGIwVmhqU01JcHBmaHJHNUQ0M1NFYVpkdVRSUGU3dVBpTkprUStNTDRnY2xvbVA5c1B3TjlSL3lJRWlOZWd6OFF0R0xXOWJhRkJmWm5EZUFsaVVGMkN5UUYreWhPWXdXMW9tWUpBckxnSHdsa1FKbzhyb0FkMFNUVGZOdGxHT3ZBR0REemdrMncrTXE4Skk2S05BbC9ZZUZtK0FKWXp4TmV5MDNKSmtJSm5IL2dKUFFaRHhYemhiYWY0SDZnY01XT29CLy9rSy9COEFWK3VTemc0SVZaV2JSUkFJem03K1hoTURIVWx3QkVYWEFnRktkMmxPWWk4Q01CUXJaWXRSQkd1Z1RGQWttRER3TGFGdFl3QnJrR01jYlhnQWlKc3NEaU5mSEtmZEVGYU8ybmg1bkFJY0tpcVBRamJmZjRiTi8zSjVZYjZBSjhXRXFiYkV2ZmgwZFgxMTkrWHk5Z1hzZ21Ud1YyQ0JOWTIzaTRkeVRVRVNRV3BPd2ZMSEVVbDg2Z3hQVWVNemNKVDlnUHA4ajhjcE14VkU2UU5RYjB0aGtZR2NCdFMxenlTakR3dS9qNUkrMTlNK1duUG12bzVUenNvRVpkQ3JSVFFlMDBlWUFiU1IyZWpqTklSSjhINHZhYllYNnpxTm81RDZlM0RNcDNqbythbHAvRVZLRnZ3eVR3VlMvbTlDaU54aHpXdUQzMlk2RHlvTnJpb0JmUk9HS0FJZDZMUUJOWVZRb0c2SEJtSTBGZVVwSGdFNEdFRmhhVW9janhUbUNyd2hSRVkrdGN6L3hnRGdMNDZ6Y0J5elYxYzNpVEVvdmpMM0JleENvNFlHbFhISk1kNkJiMEJMMEZjcjZnMkt0QUNsekttZkprRU83Z1ZnaGlPbnNYbG1mQTA4WFdsNDVZR3FyUnByQ2xzQTJ3aWs5OXd1aU4wSEFJcHgwQ3QyYjJMNDFoODYvZUhveStoc01abkQvK1JtYTN2RlhieFRsSUVsUE9xRlpkQm5DZ0VWV3M0bkNEUUJqRDd2dEtNQXA4aHRGdGNLSG1scEFaSDA3SkowSDJacU0rbGZnVWt6eDJIQldnNkh6eHhOQnZaOEd5VWxHbVVNYjNRMWtXS0tnZDYrc1JjaGU0ZHRIME91UWFIZG9VOGdDdCsrOTRTVmdnWFNZem9pOEpjU2Q4WHhvcVFnRDlURGdJSld0aUpnTWFjNmFrU1E0c1JHVC8weXl5Z3FwZGdKUW5nWXE3VG5XYW85clJyZVFTRzVEU3ZBUnhRcjJrc0owRGdBdS8wTlNlN1YyUkxmcDd1Q3FkbnltUjNCTTdxc0d1ZUNLQWMzRk9HWjVMREg1YW9lRGdrUmVSWk1MZGZDRGRjWUJGSVFSbWd3elJZdWN2cTVOWk4rVUNBQWEwR0hyL2NBa1dXTndPcWduNnN6TllhWVc3S0JqMk9HQXJxbjFteW9JSVNCb1F0b21pdU5qL0xuMGxrMUZsU2JWb0lwZjVkbWZIa3k4Y010MVlGcWdxNWtvU1cyRGNvaXQ5VVFkWCtwajc1QXFaT0F0c0hYMENCRjF5SUVDTnB0bEZ6dU55VFR0Um5BVnVSZzgveE5LMm9haEdVY3N5RXJNNWVrSHpyOWVYLzE3V3o2SFFSSm5VaHR1NnVlYnU0N0hHU05KcTZpZjVqd0g2YkhqNjlGVVoxcWpWakR0UWpOMWhuRDFSdmNVOFpEOHkySmVZRFNrRTlnOFN0OGlzYXcxM3BTYllKRHpsUmZBN2hNNlU5dHFkVk1yM0ExREkwRjhWcDh6QkxVYnc5MHY1RENzNFNIRmJOWjhBT3RWbDJjc2VwUUYwNDFFeGMxV1N3UUVVUHZ1MGpJbU9mMmNwOGtWVVlHTEVneitBczJvY2hBT2c4bVhscGtneFQwNHROYm1hcmdRQUtTRFd0TlEweE05emx1RUxJYVVCTXRDWEgvMFJTa3BtWFJsdHlET1haZEUxaDJUMzlMQjM1YXh1bDJQY2hUUHlMeHFYaHN4N2IvempPQVJUaVp6R2JoZUQ1ZEQ4UFI5RHh3enYzQW40ZVRrVE9qMDNBVWpzYkQ4SHk4UGorYis2T3orV2k4ZHM3T25SRlFHWjZSQ2J4NktYYlBRSUtCUlY0cmZZQTF6OWZqOVhvMENjNWdJZk1ab1pQeEdUMm5NeklqWi83WlpENEtZRTJUV2VpL01JZGdQU05KZmk4aGt2RlBDOGpUOTNLUDA5RjZTS2NUT3B0TjUydC92Qjc3VTBMR0lSbXRSOFBKZkFJZy9yay9DcWZPY0VibXdad0UwNkZQd3RuNWNIYnVEK2ZUK1F2eko1QTlsU0NrTkJmK0NKVGtTMWJTTmlRYUN3K2k1aHlqUTB4b2NPa1Z3dkZwSUkwdVBKOWxRSzdyMk5LaUFra2oybTdMZ3F4am1GTHdtd3RxdzZGeFJnWHVxNE52aUJkMk1TMjZvdStHeVlEMGh3QTE0aXJjWU8zSmwrYnFMUzlQdlR5MVJGbWFQM09NOTRjbmZwdEFHdUp4eW4rQThEVmdjZUxIdDZTc1lCeGJuZllQclZUQmJKUmdyQzEyYVdzTDZ5aHFDYWgzcmtCN2h6YmhuWWJEcTFId3NpOGdXcEgzTzNjNEhqdE9pN1RjSlplWVgyU0U1THFqTG44bEhOWHEyM1FNZnFvZUFxeGxpY0EyZ1NFMXg4VVVEbTNZWXhtRDNwRTFwTkFRaE9LOGEwd3A2cG1HWkNPb2ZaSXpmMkFKd3h0RWZzSHJlSzB4dm9oYm1wZHhrVVA4RUVlNUFPWGpTelcyc2sxcFpya3VDTUZubzRjck10VWtkLzZHYmtrSHF5cVE5MEtwdnV4MzNOaWl4OEFwTTQ4YllOdHNxS0VDNE12SjJSek4xY2pEOHZoY3JqN2xKNms2TmtUTWIxblVldTgyRURqa0ZhN2dBd05nd0xXTkhzYTR1c0NkU05lMzVKN0U0eE94U0tvbVR6WDhpeWdNcnk3eU9uNEFMd0V2RnhHeExwU2NxTWhwd0orRytaR3BCY0NxaGVsWFcrUXZQcEkxalR0SkNWOFRjNERWUVMycDdlcm1yazRxWmJMRmpvOVJGWXN4WXJMSGdBekVuMDlqOEdrTVpBQTZJVGFiSDVNOHA3bTd0RVFXOUFGZmdDQ0xSeTVKdlNvNWE0bDFQYkhJWVpBR2xpQUw2MXhhWmd3NVgzLzNjQS81bTduYkY1czB3U2VZdzRLMXl3RVM3N0QxMGx0SmYzRnp4MWp3bVNGdzZXVFpPTzZ3SVo5UjhnZ0JLTFlFbG53MXVGcXVXWjFMcnNvSE8rSS9BTUhjNWRCOHo1L0ZTN1AzRml3RTlkR3RRSGlTRk83WkRKTk5EcnNVckZxQm1zbHQ4S3I5dEZXZDBNeUduRkd6RkpnRHl0ZkFzZnFjUW1QRmVMWFZnOHlRKzY4dzFDN3IvWmpEaStzMmVHS1E4K2lhYk9HdzdMeklqc01wYzhWQVc1bXphcDhjUUw5U21ZV21UNTkvdnYwb0NJSkF5VzNLRWdOWjUxV2hRNVVJSk5zR0VLVFRKTENXalVPMDVUTVQrSlV0eUM3NVJyVm51U0h0bGJaSVNMclo2bGFyaG1RT1VER3MzbHM5Ny85V2xCQzBXRHV1WFR2V1dKUHczMEVReG1QUldwTFNyZHNQK2JKaE5icVkyK2orWVp0NEVKVGJYVzRwS2pZdXo0Tk1KbmN4dnJOenVpTVpnWkhjdFVBNWJYTUJSbUJBRTR6cUxQaWxOZWs2VitXQnVxWko1R01vd0wwejZIWGxkU29wNXNZb04zaUx1bHlEVm16QVFZS2lDZjJmU2d1d1UxcFpEM3FTdmJWYk9qVXRSTHpkY29UdnNFY3NYNXpoaStIZ2JERENobkVIMDBHY2VKY0VzWlFDc1lwU2NpL21mYlZwNlF3bkVPcFFPRkVab0YrMGNDV0NIZHZMRlJoTE5CaDJBZUpwc2N5djF4T21RWXNqY0Nza3JsVkNxZ0pzWVJ5YkE2Z2w5TWtJb3lUQURsaEd3eElNdUNFcXJ0ekp4V2xlWnJTUkZQTmNnVE5DSHZaQ0JkY2RneUFKVmRDMjBNUHdDcUFXenk4T2hQbTRZaFdLbW92dXdCazlTNVhHaU8zbDVzTDVycHJ3dk1qcmRiUkNmUUx4a0czOEJ2NHpJYkhlRWExYW9Ua2xNZFlSQW9xR0JWUUV1SG1rUVhyNXZJc2pQOExXNEJOdi94a0Z6YllMUFhjWDFRY0RLOVdSVC9zcHFBMHo5SHlsb2pINkFSY1g2R1ZCYkoyQ2tNQW1RUEVNaXBkSjRMVzRkbUtJRWpBdVBSVkZicXdOUTREQWl6UmxrU2JwTmkzelU3MnRPakN3c21EbXZEQmhpS1ZJMnFMQkdaSjF4cnViUEtnUU04a216Y0M0U2VJOTcrMUN2a3RpRTZPUUhPVUpwbUZCeTZtSVVlUWU4VlpNREp4czlVYmRmMXBuMU5MdWFMU3ZhTmltMkdwSStBaHlWNjZ1bjhKK2xCNHdEWEdGa0lqbUtVNlNhejVMZGk0cUQxRFRmVGFvR1FieFJyVUtXQ21icmZuMjUrdnJxK3VmWU1rL1gzKzR2UDN5L3VvYWZuKzQrZlQ1NCtXWFMxdzNMaklMbUdTd2dvOVM0YUtnMjNhdkM2aG54YXR5YlVabWFRb0Vwb0s5dDdMdjR2N1RXa1dDL3NHdTJEdVhaNXdjckN2am5Ea09BOFZzVmJXY1RLbFZTc1E2KzAyZDFTdDJCUXJ6cVZaMWFzQTZxSlh1Q2wzdHE5YlI4VkpKcmNudXVvZGI3QjFWS2ZuN2hjYTU2NzZ1YlM0NmdLN0xGYVRkNnVYbjd3a3hFaXRXVXFHOVhoMmZpQmxWYlhrMVdWZXpxRlo2SGZ5RmRqUWNoaWZMcXNmcVcyQjJTeFFhZFc1ZTFldDdYWkZMMkRpUGw4TTlhZW84eUh5aXJaeWNkZlprUXROaDRKVW9IdWhEcDJ2V3JQd0RoVENKOFdJZFREVXpCY0pMNmliaHV2UnQ1TmhtelQxd1lPbGpPaXNiZFFVVFhBUjFXUFBlWnNueVpSUGl5aVRINEtGZkp1U1JSREdHanliYWZ4WUl2VXlESFVPVUZQb0JManRCVjh5K1RweVJQWEhPNFAvalh1K2xNaWYzNUtpVTZVUHR5QStMQytibWdQWDYyeEV5ci9IU3pNdjlkRWU5cWcxMVpENFJPbmdiaUU2S3piNG1qbzF3UXNWNk1CTlc0cXY0NEZTdTlsU1FrUkhKTVZzSmNWQ2M3cmU0MlpMYkNCNGhZVnRaVmxtWGVIZFVsRTdxYkdLbGl5M1pTVnc5cWxwV3c3eEwzU0QzZ24xNzlMdUp3c0NmSUNjREJ1OGY3MnljVDgvOHMrbllHZm16TlQzMy9iRS9YQWRETWgxT1IyZndOd3pudytFMG1JeEc0K0hzL0h3OG1xekhFM0x1REdlKzc4eG1aOFI4NVVxNUQrRjF3ZmwwN2ZqVFlEWWIwdGxrRWd5RDRRUzg1aG04b25PSGhtZHpjTllqT2pLVjhZSTB1TTlpdDBwdU9pNFZzcG9LT2lZSUkxMW11WmZjS0N0N2JxNVVCQ1FCK1RLRlRmUzRkSHBxMVFBbHNiL3FScDNuS3p5Q3hsU05pbnVIb0piWTRJQjRFLzRxUktNaDlJMkxQaThhV0xuV1kvZDgvdXcxSDdDd0lwanBIN3ptSTZ5c3oyTitkckZIQy96WnhuZDQ2Z0Z0aG4zaUhtWkRaUm1obzlFQ1Qva3FzQ01SU0x1UVdxRUJleEtOdW9pU2w4cXVvYnJwTUN1eFNaNG9pTFRnRkNGa3JVRHNwTXAwM0Nwems4ZGtDOW1yZTJjZ3JqSTRsY0JWMTdjVjgyc1hqMEJiVko2Z0ZRN3gxTkhJdWZXK0diZ29yTndCRXlLV2YzYkcrd3BaaS9qVnUvKy8vZExHRWxtR0ppNFZWcWFsRnBVeUo5MUFZL2VSc0NTQXlFMFByV0NYVGJnVmF5VnkvaHFLdnhWQzYxNWJROU94TXFzVlo4U0pWdklvTXJaVjNXWWV5TmZFcUo2d2lWZTFqQTFPVHlWbWJSdGR3NUJXVHhZamhGVFZ3bVQ5emlTN3JBa0dvc0tyZ1o4Y0tiQWVueGhBTm5nWmlPL05OcG5oRjF3eVZQMUZyWjZmV2haQlJDWXM3Rk5VNE4zcHJySjBaN3dnWmdhdFVUS3Y0clNHazExMVpTVVMrNUE0TmttSnNWWG5MYTUyVkhsVVhDdnFMV0VkQXV0NEVWVmNQemZVVWp1RXRsRlQrK0dIeXJyWkxjOG9CWHZCM2FBTUxhdTRyVXFCRml6a3cxSVg2OGdZLzhrUFVud2VRa1BEODZJRVFsalB5bWtjMnVCSWtaU3RxdW5hSnh3SU1PRGoxWWNXK0ZTZHIveFFRd1BWdjlmQTVmYWE5SW9OVU5OcG4rSVZMSEVsVkFyZUFHdldaaDJWZll2Q3ZyUmdINjRjSXNIZ1RCdmhicndQdDVmdnZ4ai95eCt1YjM2OCtmang1bGY1Zkh2eDY2M2QvT1NDZlc4MUNKR0lwYWExeGV1UE54Lyt5N3Y4R3hEUW5xLy9lcFFoSFl1cjRNSG5LTFlNMk5jSTRQcnJYWnNHeVdKVDEzWDJHc05ZWUEwcjlNY3BnZmlob29xUzZoWDB1YkFhK1kwcXYwZ0t1by9HVzNQeXlUWk1aUS9BWnNySzNZRTdubTNiMjF6bXQycWVoVDZKc01nTDQ5djM3MjNrbkR4Uy9FSklDako3eGhHTlgxaVJTRE1Db2VvclJBeWl5VXJDd2tBVExVV21TNG91Ly9iaDR5R0ordlgyNXZyajMxc3lWV1Q3T2pmWWwxaUFFUVpzdmhCdnBUMTFmNFlsLzFOTm5PcThiQUVNMm92SlRlR08ydjAyOGEzV0V3UkxFTFArVDJJZUJBbmpNdDlZN1dGY1pyNVBmRXZDZ1VOTzBxWXdBWlNNakRYdUhaRFo2bXVtVG5VV1hMKzR1cjM4OE9YbTl1K1Z2aUozNjZSYXJLMHRXVTFVUndvajlvRkFKeUtyVVhjaDBtZU12bzIvZ294ZXNwOGdTM1VLLzJMY3N2c2VWYkVjbk1HR1prYXh3VnNwWUtQeEdMRFpBbzhsakdjTU9pZ3owU01yTUdhcTZ5aCsvcWZKUEdZTjBuTHpob084Zzlock42SjRYUTlURDVoRjAzSVorZUFGeFpnNU1sa3FsdDhMdlFVczlFMHFtQkpwSGdTTDRPblRMTWRiblJBdVdGK2puY1UvT0ZvT0Z6T2dLQjRXNTZ0ZU4rYXlWWGxmR2E3MjlhUnVHbFhsWGlld2VNbUkxUUs3MnRSc1pGVy9rNi91akt2QXplN3NyNW84MjhMVEU4dmlXWjM2Y2tTR1NuWHJybjNLME00cDlBMm9yT1R3WWFrUVRPRGdsMldxOXQ4bytwc052MXNuSmpqQmJESG53Y0tvR2cyR3V0Z0tyK1ZQKzJqWFdlT1RWaGRtbjRwYStJSHhBUDhaZzlGNE5SbXQ2YkQ0UTcyZlFaWEQ5NzZmSEhVaGNINjByazBQRkt3Vyt3UzNRNThPTTNJcHVNamNwczVJS2NHbzJZMis4dkdqNGJlTlhiNlc0N3NBYXhhQjVhN3RnemQrdFQzQS9KVlg3Snl4dFYyRzhtZDNKcEQ1T3BpSzg1OU5BRVZkVThEcXlvM0lPK1BZNDk5MmVqdDJWMG1WK2RudEc2MHZkcHhSM0xRM1FnWmw4bFd3MXp2NVA2NkRyc3ZaUHdBQSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL2V4ZWN1dGlvbi1wbGFuLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiZDg3MTA4MTk5OTIxNWJkMzg1MGFiMTE3MzA2NGVkNmNiNmQ3YzIzYjI2ZDljM2Q1YjNjNTk0MGU2OThkNGM2MSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0OTkzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTdWWTI0N2N4aEY5OTFjUSt4eEtmYi9JTHpIaUpNNkxFU0FHQWlRSUJ0WGQxYnYwY3NnSnlkRnFiZmpmYzNwdUsybWx2QVFSZEZ0T3M2cXI2dFNwVS9Qck4xMTM5emhNNWU1ZGR6ZE1kVjcyWFByQ2VWaUhlWHF6SGcrOHZCOVdQTnR6ZnFCcHlEVDJDNDlNSy9lSGthYTczelVMNzNscDUyRkVubjQrTFBOaFhtbmNEU2ZEZi9ueFQ5LzNmLzlyTDRTSS9VL0N2djFsSEZLd0lzcCtrV2NMMnpMY2p1TWVwVzlIZWlXVWswSytIRnMzMnJpZE9TeDhvQVgzT2s1MGdMdjNYTTRuK0FQbjR6WXZ1enFNdk9Mb3IzaUs1NVMzSStINW04TnplOS9vb0NQNzdHSW9PYXRvdkdKcG9vMVpaaStqRjRVZGFXR2xERVlhSzUzQ1g5R1EwakVXUitmck5MUEg3V0ZlaHUxNTkvTjhYQ1lhTC9aTDBvR3lFemFaa05ubW9KT3AyWExTU2xQUnBncFh5UWt5eHRiSVZYbVh0RkJGMjBDRVIrbHFmNkp0ZU04N1JIaS8wUDVpUEFsbnFqU1VTc0xkWWlCYmJIYVZxMGhVVlBVK0NiTEJJc1pRaGRaWldTRjBWVktRQ3RvVnVocGZPUE53MkhZclZkNmVMOFp0eG9zZXgwczJ6WkVRUVNtYlpYQmNreXlXYW1IT01DT3R0aUlWRWlSVjRSSzlRd0F5M2NIMmI2ZFNaSURrOHpJQUZoc0FST1c1UDRmV3o4Y3R6M3RlZS95OXA2bGNFMWdxby9peG1vRGE2RkRaUjg3ZVI1STJpUkpLdFVYNmtCTThoMGhaRmErek5FRWs2OGtMZDQxeHpUVDFsMERmL0x5ZVFIcEgrQldsY0RJbG9SMjdvbFJJTXN0VWpOYmFlbUFpb201SnBXUXBoMFRLUmFPaVZKSzlWdktXd0JVMXozeTYrYkQxS05KY2J6NlNDRklXUWsxVHNWRUhyM1VWd2dlMmxYTmdHY2toWjFabG8xQXczTHR5RE5wejhTb0RlamNFNFA1bEtJQTkydkl3enM5N25sNENNY0hYb0UzT3daV2NzaWRoTWlDcVVtRUJSR2Vxd1pjc3BVc21FVW1YTlNBWXM0MlJBSmxvcjA3TzdZU0N6Rk5mYVJpUEMvY1B3NHArZWI3NXNqSkYzTEFvQ2dMdElLcDF3RWlLNkF0ckt4RHVCRkFpa1UwUkNQWEJaeFN0ZGpLN2dnemNLb0lzYmYydGI2NjE2VGZlZzFBMnZ2bFRwR1BDN1cycUFBQnVIbDF5dFpKQWYycm5oZlVSYVNUSDJYbERXZGFJdnRGVlI3U0VpVm5jV25UWmhvcjJiMlZDa0FQTXZ3QkJabHNpS3hOTEZzSUpZVXhzUVRwUnFUb09RTGNTTGxrWHNtK0l0OEI0Tmc0ZFNnaVp6VXRNNDVnb1B3SURYTWZoL21IcjYzRWNiMzZFRE1HRE9iUlZiQXE4MlV3S1JBSVllRzlVRVlxakkvUmJhdnhTWlRVQWlwRkpXUlVWSi92S3p4ZXdVQU5GSklkU2JtK29YS3BMdVFDN0pWWWZ3ZW5DYTlCRjFySWdURU9SUldVcGpXZWpjalo4OVZFWFhoLzZTOThjNWdXaERCODJJT0xtU1NOVFhoaE5Kb1BBOExwUUpqbnRiQ1NXSXNiV2lDY3NnbUNST3F1c3pZQWlJdGMxNGYrZmt0dlhjbWFkMDhpWkFaS0lqU05YSXlXRHU2cGFJeklUbFZRT0RIU0NkQ2doT3ZBck9xZ0ttVm5WZUd2U2Y0L0R4cnRHT3ZNMFhta3VDbHdUTklyakRKdzFCRkFFaFlKWGlHb0x5b2FFWExFbjVXc0pBVFFVTTJzVlNRbU1ybHZuSE5NNHJBK1lSQmlDUThXQWJFMTBDNklVQTdhczZBeWhTeVlmbFJJWUl5RXhMZzE0ZTBMaGF3R3ZWclphc2ZhcEJLMExVUnQ5TDBWWm1VYjR1R1FNMWVlcDhKUUhYbDh3WnBSV3lEb0lyU2hyTXZxaEpFNGlDK3ZBajJCTlRZNkNNV2haMGxybEdGV3BHSDNhUllrL243a2FMNDcrWHpEN3ZQZ3Y2RXJvYzhTUlRMR1NZUk0xOEJhdVFuS0d5QUlJU0V5dFRrVVB2blErRWJOSHhWMEZMSjM2SW82L3dqRmd5b1NBUXNUVWh5dXdGc2FORmxHQTZpT0dER0NPc1pMSUd5bkJSd2pibFFCeXpVQUEyS0Y4d21ud0FoMnkvQmRLdzEyRkZ0a3JYTnhua2VHMEpFeTBCS2hERDZHWHZBcGc4RmdhNmlCTWlCRXdDa3ZabzFMKzYzVHpNaEV5cUZJNkI1QUdFVGhJclZ6TzZDQUpGa01QVm05eGljekpzTXZnSE9sVDFZaFpBb25NNWpiYWhnbGFhMnhBT0NteFQyY2JERGxWZzZ0V2dIZ0QyREJGSXgyVUJvZzRTQ3ZRYXk1eU8xTkNRMTdKakNwYUZBL2VYYmpGY1p5MlljK3Y1ck5EbXpzUWJxNEZkcXNnWWNFMUNjTWZFb01KMHEzbUFnakRlRklTV0pjMlYxZGd1YkFONFFibEpsbnZlWGQvcE9XcUs1Sm1WaWtBcUFDUkFrVlZMa1ZJVjNRVUlqbldzdVljUVFva3FwYktGckNjQndsaGdvT3loWHd4emZseGQ4dlN4VHBwUTVpVEhHRkNKZWxJb09PQzlEcEJvR1VUVzlOWlgxa29tYXNCcEVLckFNQ2dtOUtpOG5yb1gxTDBRaWcyc0lQc2duSTFGcW9JMktoQm1RQ1RsRXNFRWFOL0JBU253c1R4bURma1M4UWt0Wm9icXMwWHVpUFAwN1pnUUw1SUY2a3g0c2tqUmFpRU5hd1JBZ3JvRkRDVVJCdkJFR2UxbElUeUZMQmp0bHF3eXJwZ2xrSWd2RWpBK1duaVpYZVdTWjlMd1RPM3ZCMEg2S0huUFBKYkt2dGhQZTBkdC9CZkVJSDVtMXVsd0R1R2dBN2tMeWNYTTRhT2QxSm1CU2dVZzJLQ0pVRGdJTlphaFFHZFE3aGhpRjdEZnVWMGJRdE81aSs0eEliUVdCSkdDMmcxcENZVUFZWUNGQlpvWTgyQW01TzIrc2E3b1JnTEdWZXpTc2FCakpRUFgzWDVlSVN3MmcrL25DZkZNKzNINWc1YU5LTmRFOVNNUlQ4YWJZMEVWSUlURU5wR0t3R2xJbFJFVy9zb0FrWUdpQkE4enhwU3hFTXZmTlhkd3ZkUWNrc2JGYStEak5nWTBEaFFUbGxCVGhjdGt3QXVCVHFDakF3Z0syMnRxaWxCSkZsd2haY0J3emR4OEdnNEUvbGp0WCt4dlJ2MmRIOWEwckJPM3ZQUDg1czhIOGQ1bjk2c2M4YVc5L2J5NDl0WCsrYnYxd2RTMXIyckZrMWNEZlNlck9BQnNIQ0dJSzlXZ2RCY1ZWV0JFN3hKWHNlVDJJVnMwcjRSUTVhYUxCN2RYWmJRQVd2Zy8zd1pEMXJUYUU2RlBRQjZKcHUySmtCMllpWFUrQmRhQlBLNldJVkxoYWJsc1BGWkxDQXk1Q3hDMEhSWlhNOHRzUEQ3NGJJcDMrMEJnejV4engrYU9LMERsc2YrMUMvOUQzLzg3dnYrYWRnZSt1dHUyMWU4My84WlMwWWE1N1JlQW56QWd0VWE2cCtYeWkvRE9QWnRMaHdQTnpTY251VVo5SFI1TWxkTWpJblBjdVgyRkVDaDZYam9MNS9lSG1PVnhzSFBqRjZmZm16MjhxWEE5Y2RQclYvbjFhdjVkVG1HcC84NmhYUlpDODZ0Y2FwYW82bU9QMnpjbHV2eHVXc25JRWVhenVMU3RibmJRWjRpUTNqdGZwaTZzNnpvbXRwckhyckVxQ3QzVFBtaE95WHMyKzZVOEE2c1Y0ZFc4YTdONkZiOC9tU3REQ3VXMUtGZG9BT2t1M3hjRmpqc0RyREdXL2UzSDc1N2V5NW1kMTc3dnUwdTA2dEw4L3o0eUh3WXB2dHVXTHNKeG1ocUY1Nm5lVDhmMTI0ZDdpZjR3eVkvYlI5L1c4RzdkSm9lN2V1T1hvcGVxcCtVZm1jamZ2L2pmRzZocHgwVzVjTngyelZjUFBEWXZpblpsaU9mUHI1OFM0RHVveDB3L3pRdmorTk1aWWM0RWNidTRxVzlVbWxjeis5Z2pwWlc2dDNLV0x1UjBJYWt1Ky9HOFp5bXRSdW1QQjVMQytaalpmdjJxbks2aGwra3R5WDltdVJiTkcrNkgrZFQxYWFHOW01ZVRtbll3MEx1ZU0vb3hDay9ueFB4TGQ1K25wSG82NFU2c09QaGxQbzViUVRyMUoxUmdCNkE2RjI2MjlkVDNSK3cwWTI4Y1FkTUlQM3RZOWhwa0QrOTMyQ0dyS0g0QzVERDAzeThmK2kydVFPUTVxZnVGa2pMS053MEcwL0RWT2FuTjUvMDdKNzM4Kzd6YjdndUdXLzl6RTlmUG5MYkRIYlhEWFIzVGlSZmEvZk5iOS84QngrSmprS0JFd0FBIgogICAgfSwKICAgICJleGVjdXRpb24vbmF0aXZlX3Byb2dyYW0ucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiYjA2NGYxNGFiZGIxNDU5OGE1ZDVjNmZlZjBiYWQyZjc3YjBhNTg1NDM4OGYwMzNjMjUwMDNmMjEwYTI4MzZkYSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMDM2MiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E5VThhM1BieUpIZjh5dHd6Z2NSTmg4ZzliQkVHYW1UTGExWEZhK3RrdVJjSmFJS0JRSkRFaXNRd0dJQXliUlAvLzI2ZXg0WWdDQWwrN3lwdTByV0J1ZlIwOVBUNytueGl4Y3Zmb20rc05DNmR2YXRuQzNUZ2xrOHlLT3NPTFo0V3VZQnM3S2NaWDd1RjFHYVdBbTdaN2tWUmp6emkyREJ1QlVWL1Jjdlh2emw0dkxUKzh1VDN5elgycGtrMFRKTDg4SUswbXpWRGYyQ0ZkR1NkUmMrWDhUUnRQczdUNU51eXJzNTYvSnltdVZwd0RqdjhoV0hlVE1ML3U3UFluL08rMmtHMDZLdmJKejdFV2ZXWlprZ21MTThUL1BPWkVmMWhsYVVGQ3dIRk9GUHdIOVdjaFpPZHV4Smt2bXJPUFZERjlmcjR4ZnZlTjdGeVQ4L2ZEbzU5VHdZd0w2d0FKcmVmejY1RkEwWm9NaGNPZTltc2tPL0p6dTNoQmo5c0pLMGdBVXRRQ0RNb3pqdVRmM2dyc3dtTzkzSlRsQVdLZERHYkJKamtBeTFFYm9oWnpHakplQWJPcUtaYkU3akdLSFVmdlRVQUZzUzVCOStYR3B5ek9nSUV6aWpleVpSemRrZlpaUkxZb1RNRCtNb1lhNDZqcjcrbU9YcE11THBMTTJYZmdHZ1JzN29vRGQwZXNQUjlXaDN2SDhFLzMvbE9HUEhrWUJtQ25MbkhqR0FjL1NCd3ZaNGtsaEFKaVFRdGE5aktRZE9FalYvSFpja2ZhaGE4WSt2YWNMNlpSSFliOVFPZ0NSNGNDVng0ME9VaE9tRHhiNWtlcWNzdVhlL3ZYeVo4ajU4UlRudzJtVG43NS9mbnIzNzlQR1g4L2VUbmZGa1o4Q0tZSkQ3Q2ZCdlByamI1ZmhmZitVdjQ4bk9vOXhobVhUOGZIN2ZuYWJoeXYwSVNIUVJtN1FzM0NPSHRncjhWdWFKVlhGd1g4K0prZ3pHNGN4dXdiNFU3blVPVkFyOERDWXdEMEJnTDdVcGtQTHZMcUlPLzJrcSsySG5EamJZVFh3UUgvd0RoQzVnY25sZXhvV0xhd0tqM3BWVEZoUXg4Y3VjRmZCM05XK3kwMHVnUVUvSGhwUkdvbUFBZDlzRVRweUlBTnNYbXd2U2tMbXUwMVhjdFdTRkQ0ZmpFMlkxVVZQVU1FUk5RdUpGQ0R1RElaejVNUXNONFJJTnNQNnhGYktNd1phVElHTGNHR0Uya3hUR3dOd3VrWVU2NDNTMVpFbEJlNGtTNUY4VzlrSVdSRHpDamJXM0FpckJVZ0VKMG1RV3paZCsxajY2bHd1ZDB6c0lScVBoNGV2RDBOa2ZiZ0djM1FjS01ueHVnSWtVM0liY2dnVjNucm4xVHJEc0FyaXUyUVlEL1N4VGk4Rm5IQVdrbjdjUUEzZ3pEY1I1cWVPR2lVQm5kYTVBWS9oVlJuZ29yanZaMlRzNk9qdzRuSTE2eko4R3ZiMXd0dGZ6MmU2d056MDhDdGorWWZoNjN3a0o4a20xdnZYNS9OUUtGbjR5WjIxTDhZd0ZZaGxoV3NRM21KZjA4K1VIdWV5aUtESStIZ3hnRDNQMmU5b1AwakpPbDlNK1Q0UElqd2Z5NTJCdGsvMTVCTHdBek9nbm9iVnRPYkJjQzdtVzRLSkJITTFZc0FwaXRuRit5SGdSSlpMRU1QWGJaRWRMRk9tVWRwcHpsb1BhcGdGcVd5aXJlUUxXaXZkQnluMFNFbVNXeDdhVit5RE5jTUI4bFFRWEtkQVk3Y08zUjFzMisyQlBRR2NUcGEySVc2aW5KQlFPQXpiU3dDYjhOZFc3aWlUd1VRQ1hzT0tTM2NzOVBCSTBWT3F0ZUJGRUVFNjd3UVhwUXdLcWxZT2hZelZ1QUVVTmlncjBBSnBBMkQvTDhLTWpkSUZkMlZrOEcyWHZ4bXBTYlRNRlcyWXg3RjF1VGJlRFNCYyttSWtjVmNhTmcwM1IwcC9qT1BmZHljZlQ4OU9UNjdQNlFwVzVKUnVHbzExVU5mL2I5UXk5U2sza09Mdzl1VHJyYWtSc3c4QmJjaEMzUUdQeUtBUTNERGlzeDBFakxIMHI4Nk5jNk5xZlJnN3hJVFZPVU9ZNUtOTU9icnlybHBBbklqU3lQSE5BRHFaNU9RdlFseUYveE5pb2NEMkVoL1NFRzlOVnNDd0ZDL2RPUEJOYWFSS3ZyQ0lWSkNoeUVIekxXSkVXRkw4OERpeGJQT25XVkZaRlQ1VE9sd0RBUXM4dlVEU09LMU5vTHRBdnZxS0VJNFlvRENocEpCbk9HL2U3M0poZUhhemRMOUxDanowT3JRbFlUZnVOT3p4MDBPUktWMjZhbHFEenc0cEVMUjZQdFlHWjFVNStCaSs3bGZEUXZoR21VZ0tGWDVTOHBwalFMcTB1R2VrRDdIRkE0emlBNkpPcXVhbCtZRjNEWTZDQmNHNjYxMkFoSlVSeTA5enlnNklFcnBuNUVhZ1dLNENWSXp3U3l5ZFZsZ00xUTBzdFRXSVZjL2FUU1lheS92M1VBbG9OZjVCV2dNL1J3ZFFKRHNMRHd5RTczTjhQaCtGd0h4aHFGNXJZa2NObXUwZmczWS9ZaUdTeUtYNGtta3FGYTBMS2JpUVhDS00xQlVaRFA1eW9wamp2UDliVXFFbkpIOXE2T2dJNVNabWNNc05UREw5clRqb2xPeHkrWjNCUTBvYkRORG02N3Y3TWpURzMwb0pIZ1FqOExoSGJJVzFjRUg4cmMxcHR4b3pZelBxZWM5cG9xNTdqV2EzeENLbG0wZHJkaG56Tk1NazBnR0dadERXcVNjMTNjcXRFQTg1VSt3VTY0eEFsMG51a01PZWJqc1hIOURkNnMzSHNrZVhpWHVaek9PenhMMzVNUGJuL0lLTXM3eUVxRmdzV2c1b2NVOEFGZktJMHF5ZVVBT2hld2ZWZ0FLWmdFOUswd0VVMFpkUW93UXhxYWxrc3dGYWlwTUMwT1VTU2hWb2Z2TGdpWDQwTnBmenZTeGNZR1FJVWlDeUZlSmx2aVJHQnFHbkk2YU8zTFhEb2lVbEFpcjdodkVicEFEMWdkOE9jdFJDemNoRUVYbXRCSnJSWEllWWZKU3FrV295SkcrTHVUV2JCZWxhR1pEWENUUVZVeHB1b2hrRmxjeW1HS0x5TlNFZXFoaEJJaXNKK0RVWWExTVlTRHNLK05iR05XWUxBT2FvWlNqMkFYYkY0bE14alJ1cEd1THFJbTVsd09ZYmZMazREazlEWWU0dCtrcnh0bzRCZmxra0MwRUZUa0VJVHEyODJPVXI3MGVpdEk1dkc2V2U1a1hwMUE5ZkcvdlRzSytyQWdLRjdjMnUzNGE1bTNyVE93cVVsVE9ROVNiSVdEdnhoc0dTUVpEaUZLdU9IQVJGNXprOUpDZ0JlSDBKM2p1b0l1djV6c3ZQcVoxRy96OEVPRmdKb2QyamZERWx6bXp6cGh6Q1Q4NEdJTHN4Z3pIcFNSMjFRU0MxYWJGMUgyZU02MDIvS01nUjd3WFM0disvMFppejBlM3ZPMGV2ZVVjajJldUhoMGRBLzJIODlQVGlRM2tvZXpTRUVqeTJ4dkhVQjJ3TmJCSHE0V0RYMnBRajVIVXh1U2ltcEMxT1c1Sm15REVJeDhBN2lkOGFCSUwybHJ5bklqbmdCVVMwOTJqTFBqL0REQnRUYUVBaGpvSzRRc3YvN0czSnpWSmp3QWZ3aTVjVkhWanlrK1ozK2ZTRjVDNy9QTDk0SjJvdDAxYnNZRE9KSGtnOTBZQloremk1RWp2SmpsYko0TkRjTXhyU3p2dUU3dGdMNVVzanBKdEsvOElGTVUyMmtsUXdpdjFiS3F3UGdwbG1oejRoR2NYZU5PWlRQaHQyWGJBYU9aeElvalhGc2FtVUJBSlVJQ2FqNEthUURzNStTdmFTamVGVlpQSWtmY0F4dW9NWTNnSTlNcWVYU3Y2UnBKbWloZDI0MzV1OHFvc0tNVFZ4dkFoUnR3dHRQVnAxVStibllESnNUcVpFTmtMUjJVclBFeGtrcm5ob0pVanF5RkErc2lkUTJhdU9SVnVTVEJGNUVXVk9KSk5EdTVpOWV2TkFYUDgyckhsU2JmKzVsajd6THVUdzdPZjMwOGNNL3pmdWRxNU5menE1RkN6QW9uSlByZVNmdnJzOC9mZlM4NDNBS3BCb2dNUVpaSHQwRG53L1FDMllQZmY0SEtGWTQ2dU5aR29ld3dlYXdyN0RCdzMzbmFOakxoMmh3YWhjajNieDJIOUp5RjJLa1JsT09wd0FuMmtGbWRoeEhNalExejQzbUtpMGdXUGp6K2VuZy9mbHA4NllIbExyQXNaTjFRMmdQaWpSZnVlU2VFbGJjQmRBeG5ra25xMFNxZ3czOUsrLzg2dlQ4c3NQQmsvS1c0SnZadUFrTlJZUXZldVRsMlh0anBLM0NNR3FDL1ppN1VYTisrM1I2WnN4eDNZNlR2bmFjbGxXYzlNQnhOTXhPMVF1OFRBQVNDRVB2WUEza1U3bGpkUU1XbEx4SXcxV2RNb29xalpNRVprZExEejZiN0Erbk1GaUZ1VzZRQWkveVRwU2dhaXc4MUErWW5NSlJ0dlZYNjdmUFY5ZDRRUnF3RUROQ0src0tjR1FEUDF5Q3RLVVpTL3JFNllMem5oc0xpR01DaHNlVG9vT0MxWERMMkNiNENqb3dhZHRuWDhEdDVkRC9DcHp1Qnd4VTdER09lbVZNcmJvTUdQZHF3UDJNcjVQRVBwN2xqTG4zL1prMzllLzlLSDZKbjdOY1RsWk1nei8vNW9nRGhzODM3djV3OUhMb2pQWmV2aHhSSzBMNW00dDlMenNqU3hPQ2N1ODFLb2d6SDlxdmhnY0tBQkJHcGIva3NmTEV6L2dDSkNyd3dZcWgzYThkOERiNDQ2YUJWd1NNSlFXRm1OdVZqS0gyTjNoeUNTeGxUWmxWSmhFRUo4cUk4Zjd5RHNiSTJWM2laZnNZbW9NRjhIZTlHU1lvRnBQdHhIZlFQSXZBb0dFd0piSFd5dWRwaW1ubXFSU1d2R0lVYThEWkQ4RGZWQ3NZWjlkR0JERVZpYUJKTFpwYXQwOU03amF1UUcvYUxyMW9KTEc2d2ZXOVhqaUZqM0JLMzJJZHRMYjBjZHQrWTZydlU5WGQ2WERrbUJlWXRGQTl0Q1ErTkVKRk1VUUdpblFUb3J6NnNVQVBZbm9sbDJuQ2dTNWdRejFGRDVsS2VOUmJBU2NISENRbWlpTlEyY3Qwd3JFVnB0UUF5S2lrdFRwK1NXWThlVlJtNVd3V2ZaRzZRUWhxMTk3SXI3V1RlaVhtMnFnVGxielhlNVRFaXhoYm55bzZxUDkxOGdIa0UxM0NZeXRhTHN2Q244YXM1WEkzak9ZUUc3dlNxUGZCb1J6dEgzU3dCd01hVW5KeVVmUkJweGc5QVhSZUFLUWxiUU0zT1kxVHZPSUFHUVhUM1luOTVUVDB4MkpNbjN3dUtmUjJkMG9CMDFpczJoZjV2ZzVOSjRMbDZWZVdlQkluT1dqQnZvZ3Z3a3B0c3FtNmd6aUZQZW1UVkRqWElKSVJxMmxlZVZhS2p0cGVPbS9XTkY1RGJDaFRwalFZQmtnRStQOGdUWUV0azZKREloS1d5NHgzdnJYbDEwUUdyY29WQ2p2b1ZmbmdzZm8wNktESFFiZHFNN3ZGeHFGei9TVE5ZZE5WZ1Y0cFdUYXpIZFVhTkN2dFZxWG9NaDl2c3p4dHp4VDJzcHZjNTdIaGVEM2FsTXhzV21venkyWWszOW96YnFBRjA1bTdqWGFZTUtvb0oyNzJQSFJwNXprWU0wL3dhNTJRTkVWMGVFdC9CYU9EdUF5eEtaRlhkdkM1WEVhRld1YXhhUWYxUFNvNTY4SkJML01ZMlE1NUdXaU5IV0N0eWhnTjBBQ2M3Y0U5Uys0SE1HS1FyWXBGbXV6Mmg2TUJCeTdyZ2RtOTgrRjg5UFc3cDNUOElLTUw2ajdtQVk2eHQvSXlCZXhhY0ZSeklYRjA1VytpdWxZdDVFUTY2dzVrYlFhTVNBLzI5aWdrZzFFWWpWb0NtU3FmR0VheldSVi9WekltVUt2SkdQSDNXSFI0N1hJcXhnZ1pzKzJHK3RGN3JJTUEwaDZGcjRQaGxPMEYwNFBoMFZFNDNHTXp4L2NCeVA3c2NQOW9mempiMjU4NlFUQ0ZZWWVPNDcrZWhleG9OSUlWZC9jUERxWXlEVkx0VWViS3hUS05IV1psbm9HMld6UE9HSEdKOGlsVTltaDRNWmdWRlV1ZWQvSDU4dUxUMVpublBiTndhZGVwWjNiRm9tdVozUXBsSVg2OUxQWURocUdwd3RNUzRpSnY2M1FXaDJPcGdKbmxsUXZvcXFKcWJUblkvV1lzNTFIT3k1T3p2SHMvajN3aFlFTkVhd3JCY3BUTVBXUms3c0dNOUFIWEhxTWU5OFA3aUlQYjU2VTVpRjBzZVYyYnhmRmhsNm95aWdVWS9zQ1RDcTZ1WS9EaUFDeEFycThHTUV5UjJ4WDNHbzB6Q3pCdlkzMU1MNW53T2p0MUtlMy9lbjE5b2ZwK0JaR0ltWWd5TFV2RW5xTEhrOE03b0VKbTNaZCtQdWZkbHkvdkh2Q2p0WFJ3d2Z3WXhFSE5ieVRkVVVvZyttMmdNaTJqT1BSRVg4ZkEyTGFQdWN5R3V0OGVsWjNLNGJCVWpuRWdsdnRLdkR5Z2RPdFhkV05SeVNXNHN5U2VvbXhtUEJnTVI2LzdEdnh2T0Q1MERoMXdhQWxtNVFVNkpMdEExZ3hjTmlhZ21WVnQxTndYdUxudXlIRjB5bHAza2pRZkRvOTJiZnVOQzMrYjhZZWtFWEdwUVNDOTJSdEM1eFlCNDlLWUcvQjByWXZuL2V2RCtWdlAwNjVEclJ2OFpmb3ROYXRNV3czN3UvMFJaUmIwcFlNb3dwUERoTEdwWFRsVWJJL3dUUEt6bURpeWk5b1FqNkc1UHBwUFN0ZlRuVWxISGtaRlBURmRIaUJhQlQrN0c0UllnaVZYSkN4TG5wUEpnUCsrOW5uYXB5MkkvS2hBSFpmVkYzdytzWndadkZuVTZJcDRSUzNhc0NRNG9rcFo0SDV1SEtLWGNBUnFobUtEYWRsbVJ3amc4SGJkQkZISHFONHgxeDI3dHpVbFIvdEVoRGFaSDhQKzRJWk02N01ndVI2M214M1J1Y25zNkFOVEJvZHcyOXVFbXhobFlOWmdvQnQxQkxmU3l5YXpnbHluL01mNmVQTEZ1RnR2N0pxc1hXTnJld3M0cGJDRlVYQ0ZhdThLa3k0OVJyZG1YRlVmSGlPczRvQTNBQ3dwRy9FQW5hNlFZRTlySi9YUmJXaHIvSmd5bVMxcjg0MEo1M1p2Y2V2OXJYUVIxK1AvNCsrSy9nV3dINHI5ajlmRFQzVi9BanJxNnVQSnhkV3ZuNjROUFFWK0haNUpFc0NuSE5nTm82Q1FQcHBzVXRVZGRaOGNwTW53eXJHR0pFZEZxaTl4Uk5SVlpYVDBUVTVkS1h4bkxLZWczTFNFR0xkb25KNFQyWWx3dVEyVURFTnVaZW5YMWdBUU8zVVVLSGRMNWtUVnI4bkYxQVpiRjZ5aUp4VGpKczJFRGFqcGx2L0hjZVhtbU83Sk1QQ1pVV1JMTENyalBzNmVmRlFoc2owREVVMjFQYkdnQ3hETCtxdDFWZVJSWm9GcmFMMzdjRzVONmFIQjJFS3ZXNVkxUW8vS0VnSHBRMUxKWlVLQzNwVVBiQ2lMM0JjT3JrRGFOVXNZTlZmSSs5OFhvQ2s4RDhubGVaYnJnbWJ3d0cyTkVzK0R2YjdBaTJGUmh5RHVhdWpQUGw1eGdSdmV3YkhWdlFsb0x1aWd4eHEwQnRnWmM2QzZURkhEYW5XVkxNcmdMUHdaSzFZa2JyV1o2c3BGeld3b05MUElhVjNUVVZjRG9BNVcxbkdwRzVCMVhDcGQxNWpiMUdWS0p1R0FHeUNFUzdlK2ROMyswZEprNmRyS2NKQWxSQ1kwZXFvS3ArME92YnFLN0FYYnluZDY0dWFUSW5uUkltSStZSUx1Y0w4UndxMEZiN1UzUmFBNmduU0pXZUFxelpuN0R5cEpyT3F0dWkyNVR6VzNGcytwU0U3clhqbElGYmczbFlXdXkyZ2lOc2ZMbjNya0lsK2dTS1VrQVNNaFNVN2NiUlRGUWVnMmJLNWNzTmNydk5vU1JDcXlTWUNjcEg2MlZXUGhJTjVXUFhWYzVZRWxtUFZUZ3EvSzNTd1R1clBCRUY4U2cyQ2JwSzlBclpkTTFhN1phYWFzZnNLcVoxRzFSd0JyNFFjMnVEUzRVZk9FdDlxK090QXdoR1BoOG9yNmFOUWZPZnY5QS9ocjkwamVVbE9BZ21BYTFUWnlKcGxmV3o5VUVHakl2c2E5TkZaVVI2aFRJUlFOc094amxlSGhqZ01UTXEwWmJGaXpnZ0MvYXdVVFZZL2MyS1dzRzhKdFVkMlFpRVd3c0tJeDlvN0drSDhwdDN3bkdlZzN0a3p6MVFWdXBjd0ZINTFHL0s3V2NIRitXdjJtRzNxaVFKa0kvNVl1UnpNNVFCRUNqb1RlYzZJZjJjSitvbnZLTkEvaWF6RkJqRmJwTVBqUmdMekdrWUJRQ1A3SjBwSUpwQmFtcEJ5VWF3SVJ2S2lMbWs1aWNDV3d5QktGV2J3MUdhczZwMk9aaTRBQUc3ME1zSmFjK1htdzZPUndjRms1bWZCWG5ja2tmR1V2WVFhdFpQZm5FS1publNFNGdwanRDZHcyUGhOTENpeUpDUUFXaUlTNmNhVEZhTkROdURlOHBldHgrbWxXZUMxUlU1SGgwcVB0bDNnWFhxc1BVZmkvY1JWd0tyZ0lRQ29MSVZ2VWJiMjcrQXplUThCWXlQWEZaNlBXUkQ3UVVkVWNXVlhtck1ySU45ZGc2OUZZeDhacVhhb3cwWGoycXVzVEFkZHJsaS9wVVJUK3RzbWdSZmhNYW02ZDVQUFUwb0QxNVNGblJSR2JmS25lVkQyL2tGcHIyUitwcExZc2VzOVpmM3hVTGEwZkNUeXhxT0gwYUQwdmFsekRmTlVtWXZoQWI2WHVQUE1Wdml0MDFkTXdiSndwczd5bSs3dUc5NHk0MjdWakIxanJielZCVkJheVFFU3NRZmUwbkl1aWZ0TkNZbnZSU0xFaVNHV1VIL3hreTFzdHl4TDlQKzlaMWphYTQxdUttcU9TcDc4emNwazdhaHVnV0FWR1ZMbElWRlltQVNzemlnVnk1cFN0UUI5YklxVW1VUkJIQjJGVXEzcUU5c1lwdFp4S3BSSmh1SEVtSkRWT2wycFVnampDbERlT2FGR0dXbHBjV1FRWW9lSjdpOEhLTjB5dXNWem8zekZHL1ZqZEV2bEpENWY0TXRsNUZObm9RSXl0Ukdkc2lCZ1Z5WlIwVHljcjVURm5oS1AxSzc3eERjd21IVW5MQU5jS2QwUlVsWTNyTldWZFpSQTJQbjU4OG9IazQrMGpXVlg2cHdSY1hEd1ZLMlBHeDNpWGlFKzJsU2tha1ArRkJmQVlxVUhmNWplc2oyS0x6d09yeVBBUFlGRzFnVzFMckkxLzFuSW9FQU14Y2RCOEViRzI0RE1mVXF5dEs4T1VIMXZhNEpnMXdPQm5OWUFhbHNhQW9Wc2Z5UkhFUi9GdVE2cm95TFZ1ZlByeGNxLytocGswS1RwMHJ0Q1Q5SnRnOWpCdjRBNUNkajhBTlJiVlhpTklCMGF6bk5MV2lPQ3JtemJsWEpOMG1tT0l1b0t4cG9KckwyRzFFVlFxcVJtbC9Ebi9GZ0lvT3FBanM5aHNCa1EzNnIyZmVzeFoxVGY4dVM4Yk43eG9WSGlUYXU1UnZxUzJCYUhROWJHMW5FL05UNmZSV3crSVp1bkExbDlPbzNtWmxyeXRmS2NSVWphaVUzRTFxcy9icS94VDZtajROVzVOTll2MHZWVEVyb1p4bzlTNnFYRTRSYWlveWtXV3VvdE9DT0N2SHpLNWhuNUhXOHdMajZvSVVIbGhaUUhnUUxaWUlpYk1rb2RtU1NYWEcrbERzbW5TTldkRXhzYjFRMHMwL1BUN3BEUnp2OXN2UFVaeUFIM1dIVjFqb2lBWk5vaVVGOVp2dVEyKzE2Y2t1akdBYmN0NlU2ZVo4NllHQTJmMUJ1WGRwOTh1UHB4ZG4xVnZzekM1dDBUZVFxK2owZ0lDUXZQcVMvS0tXNE12dUUxdXZCRTFyTzFEYzV1UkpDR1U2eE9rQzBCRGlFMWF4cXg1NExieFZrOW44dVVjNGR1RDhJSkFSUVZJYXhoeHFpTlRLK0gyNUJQckoxOXBpKzJMaU14OGt6MERmNGd2bmdGQWM0YWFjVkxvRnpoVjl1NWYxS2IvVVJ2N1dEMFFmZVpqOHRUZ1drVHpXWXMwcWw5dzNxWkg1WFYwTm8xU1c5elVMeGQ1NDliQnZYSFZ4SzdCUDJZVm93U0VlN2JBYWVhV1g2QmJYelFzbHFhQytYenRxZ3d3VUVVMkZFaUFMR3AyWHVNblVkbXR1VktGbVRpSnFyemg3eHZkZTZ0NTFxN2VQV3pYQkRVM1d0UjZQdUZJYThnMXhLdC81OEoxNjdKUzcvdTMrOCs2T0VBYTFVYmNiUnhxbGJGVk1na2JCSW1xZUJsK1g3WnBIREh3aVVQRVRHRmpvQ2FNZXVzSHlHcUZLRjVROXRJcEJuSGl3R1ZOekpwbUZIQmNBYjFoQnlHU1BEWWZNYWsrbldtN0Z4bTI3ajA5ZmhGSHR3NURGVDdZVWhzYVFDclRKUGlic0RDcU1xb2ozYjZMK3I4cjhCTWZxT3NuV0xsVmRaRWsxYk10ZGQ5RjNucXZ1UTdDSTVDRmhhSkFjWCtUNDZBZFB2UGZEWERYbnFwWFpoK2Y1QVFzSzZ5M01PU01QaEZYZkN1SE4yN1Z2MnUxeWNNU2pnMFdpV0ZGR3RWTHVSZ0ZkR2krM1ZkWFlPVDd5R0d1dXNlcjMyQklMeHpWak9IenRkeGxIQU10RFNkdzdVNVRZSXgzeTFSYUZ4VWRlc3dpTi9MVVBZWjY5akJKZHY3eVAxUU1XNGVLVHdBQSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL3JlY2VpcHRfc2FmZXR5LnB5IjogewogICAgICAic2hhMjU2IjogIjVjNTQzNzNmMmRjNGIwNjQwMDgyMjVjMTg2ZWZiMWQ1YWZkZWVjMzZkMTUzNTBiZGEwYTEyZGVkOTc2MDJkMWIiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTAzNiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E0MlRUVy9iTUF5Rzcva1ZuQzl5aXE0ZkEzYloydDYyNnk3RExrVmdLRElkQzFVa2daSzhHc1ArK3lqWlNkMDBBNnFUS05FUFg3NmlxNnI2WWMwSUlWSlNNWkUwb0Z5eThicVhvUWRDaGRySEFFcGFNQ2dIaE5namVOS0RqQWo0akNwRjdTeDRUc2VycXFwV0xYWVRJZFNETkFuWFgxYkFTM2RRQjR6ekdYeTRoejhpcUI3M3NobVFBalBFSlFpak8xU2pNcGdEbCtMV1BlZGRTTnU5RGprcDVGRGJpRHZTY1JTWGhYMW1DVUxaTm80N2F6eGg0endXZm9pT0k4V2MwaTYyNHU4cmdpTW9BaDlQdFcyeTRzK0wreGNONVVxNEovRWYwaGtsRzlBQnJJdndreEl1aTc2UmQ4ejhMazNBMHdwSFF4OFh6bTFtZC9udEhMWEZNQnlRM3lQdnVIcXI3ZTV0MjduR0FqZDd6Nnk3ekRwOHhvUVdqV1pYV0JzSFcrUFUwemtYVDNETEJ6d3lDYjJjT2RvMm5kRzdQdWFBKys4MDdhZWJaQW1ETTBNdU1vOVNYaVIxUVBpVjZkK0lITldpek56SDdQTmhhaUgwMHVOMWlIbFVDYnNVc1AwNldSM2d0NDU5ajZZVjY4THNXUE9PWFBLZ0xkVHZtY09GR0o1dGFjYzZqaDVybS9aYnBQWGgyWGhNaWgzbEZPN2daaEU5d08zTnhjWHRwOU1aN2w1U1dNemtZTkcydVpyRTErdEY4WGU3TVRjK0d6SDNUY2ovL0Z4azlROEg0UlNmREFRQUFBPT0iCiAgICB9LAogICAgImV4ZWN1dGlvbi90ZXN0X2V4ZWN1dGlvbi5weSI6IHsKICAgICAgInNoYTI1NiI6ICIxZTgzOTYyM2RmMTUyMThlZDQ2YzdmYjU5MTAyOWI5YTY1MzY3OGNiZGUyMjg5OGQ1NzAzYTRmZmJjMDgyZTk5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDU4Njg3LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxOWEzUGJ4ckxnZC8wS3JtL3RnclJCaXBRbFJhWXVhcTlpSzRudTJwSlhrcFBONWVHaVFBS1NFSk1FQW9DV1pSWC8rL1pqWmpBQUJpQXAyOG1wcmVNNlJ3R0JlZmIwOUd1NmU1NDllM2Ixc01qdWdpeWN0cWJMTkl2OGg5MHM4UlpwSENWWkt3dlNMTzIxenFQV3dzdkNUMEhMOXpMUGJyMkpwaCtEcEJVbHJla002c0NqTjgzQ2FORjc5dXpaVGppbnF0TW9mcERQVUFzNm1BZnlkeGpKcHovU2FDR2ZvM1RuSm9ubXJkakw3bWJocENWZXY0ZWZza2k2bk1SSk5BM1NWTDE1VUk5Wk1JOXZ3cG5xWmJrSU01d0F0eXAvOWVZd2VOazJkRFc5NCsvVGFKRUZuek90NHlUd3d5U1labTZhK2RFeTI1SHR3bHlYWGhZbFhNOWJabmRSRW1ZUDdoL1JNbGw0TTFuOVAvbW5uWmV3V3pkSmtONjU2ZFJiMk5EOE5Qb1VKQSt1K3M0Tk1xUmRtT2R0NHMwVkZDNHZmcjQ4ZWNkRm9Hb1F4akF3N3liSUhsb0s0c3RGbHU3c3ZENjVPbTA1QkxlMjZ5SkVYTGZUZzU2ajJhZWczZW5GWGhJc012R2ZuZk9MMzZDd1hLR2VmR2p2OWZjTzdkYWdELzhmMkswOXV3VlAyWmR3Y1JNNXFqRCsrUkl0Z3Q0eW0zWjJMazkvUGJzNnV6aUg1cXpBYWoxdjdmZDNYbDk4T0wrR0Y0OVdPcjBMNXA0TE0wNEJVNnhoNjhCdVdTSEEvQmFuRHIrdDZLTUZyNUxBODkxb01Yc0FDQVJ1RkFkWTlqcFpCdkFOMEJQZXdVcWxXYktjWm9FUG4zN3labWxnNzdUa1Ayc1czZ1RUaCtrc2dJK1BGa0k1OFZONGZna05CSjlneXZqakNINUEwMzY0dUlWZmc1WGVBS3oxSlBwTXRmTWlBQURMRDJhd01nbDFPK2l2Y0VETHlUeE1jVUlwbFllaDNZVEpuRXZBOStWQ2dKMWVyRlk3T3p0K2NBTVlOQTFpR0g2N002Uit2UmhXK3hPZ0RrQnVJUDUxNmM4Ky9qbVNQK1UvaTJvbHdhY3d1TWM2L05UZEUvL29vYnVQZjQ3a1QvbVBxL29oN084MHhEMkw5ZkZuOTZYNFJ3L2RmZnh6SkgvS2Y3SmpRajlhVmhnNHRPVE4zQkNuYUoyZC8vU20rOXY3YnIvZmY5Vzk3aC9zZm9FTmRYVFFmelhvSmdOTGc3S0E5VHlZUjZJcW9KYmZSYXdiOUdHNldLK2JCQURLME1OaFVuVlJQc2VoUVUyTDZaMjNkM0NJclhxSWlJZjd1RmF3SDZlQmk3QVN0U1hDd2tla1g1K29JNngwOGg2MjI2K25id3dEenJmN1BQSURLdnptM2RuNTJkWDE2U1VPTVBPUzJ5REQ5NERJcy9udzQzSVNKSXNBS005dTRvV3owRnRNZy81Z0YvY1I0a25YRDZZOG5HcFhNTTN3SnB6U3FOeDVBUDBTbkpJb3lybzM0V2VvREFPNURSZGRwaGhkM0RrVGI4cTdDRWdCYkU2aUxZRHkyRXJndTBCUUZwbmFNNFRwMHdoSy9ia0VPb1J0NzZyTnM0dHdUSGZYTHNxdWFDUDluMkpWbkVIdFZHQUVIb0VHRyt3TytvRFQxLzI5WWI4UC8vc3ZpMWFCOTRXaDJHQjQ4SXFMVlJwbjdIZHpWT0lYMko3WVYveGEvcklaNFFYKzh6ZnR4WW82RU5NaUhOZGJKc3dmcVZkalcvWlArOTh3aGpUemlCUkptQVBKOHo0R3dGTmdSUVNhK0EvV3Fqb3RiVWhJWEVhUHBlbWNBK0V0a0tDOHpad01WWnF0L3RNN29rbkFZazFvNjlCcUdIZGRxenJUOVIxVk9xNWRudktTUEtueEtUQUxtcy9IY0VFYko0WUo0RVlqbU9HTFplZzc4Y3pMY0N0MmNWdlowZEtKZ3lpZUJiWS9kV0RYUXRWYlA1cmpyMWswOVdhR2RkcGtLSm1PT2pxU2oxZXI4VXJRMUF6RUJWbktsdmdIREdNNjg5SzBkU0xwenNuQ2Y4MXlXbHVKTk5mdzU3V1hCb0tkSUl2QjkyN3dHYURnTHVBUnVyc0I4Y0FQRWxjS0Q0c29jN01vZG1mQUZHZXVoSDQ3RFdZM29oMk4xdHZhaHNpNWwxWXFYYzZRSVNqeTJDNVh0RFZhckJGZVB3bG5zeTRLaTdBd0lJdmtiZUpBZWpEMUlNbE8vMXpDeUxpVFVRRnR4cllHV1AxOVo2Y0lDc0hKWGRxTzduMFN3VE9oaU1ScjExdjQ3aVRrVWtsd3MweURNaXpteTR6SVhnb1RIYzI4K2NUM1dnbE1FQmEzdDR4Ukttcm5mTVN4M3ArZXZ6azcvOW5xMU9DTXVRV05mem5XOU01YjNNSTIzcTZKRXFkN2FqUE15aHdyQWhhU2JGbFhJL2hPaVk0TGN2K1U5Z3E4RUtibHpXWkIwbVVjMlhwNkRTelNRWGx6bzlhaWtTVC9Zd1Y5eExDdmFrRm5FWTZTUVRkdHJjQTN4cU4rUHJBU3AzQjA4ZlRKclJkZTVYUFFXWWJ6OGx1M1Rqdlh5VW03ZHdzcnFGSDJBbFczVmsvcnZnY0VCV0RmUnVMVTg0TWd4b2UyYVpTZHpsaDFBTjB5b1FoYTRTSW5HY1BDQ083RDdJNEpIQXdZcVhlYnF6ajhuODZ3TWw0Y281bjJGcWdUb0RVVXJIN01PK1RkY3VtRmFaQzJmL1ZteStBMFNhTEUwQ1ZwSmprOWgzWnJhSGdTekFMZ1BwS0FsM2xRREZxMDc5N0RVa1gzUkdXWGk0K0w2SDdoeG5kUXE0YlcxczkzMjZsc05BVXZtWVJaNGlVVkxqVERoVnlqSDc5Y3B4bXJTWTBLa3ZBWUdzYjJlMkVhSWJaNjJmZWVaaExOWmtKRndJN0xhK1V2RTI4QzdCSFY4a1dHQ3ZnMDhJUFVSWVJIU3dtdDNnTGtCWlFpc2lTRThaU1dqVVl0RFRFZ2w2QmxBcUQ2aGd3cFVmTFE3clM4dE9YTG44VXBzRVZDbWk1VW9TSTJSMmx2ZWdlNlY1dEwyNjErOUVPL1h5d2pMVEdPTk1Lb3dxQ2lJNllDaVFBTkNpU3VBSWlEcVdvUEtHU1N0WVY0Z2lCYnhoWldMOHFzZGExVVpCZTBjL1Zta2VlbmJka0Rtcmw2Wk8xQXUxTzcweGxadENHUXBCVDdoZDhzMnFPMmNmbmgvSnlrQ3VPd3A3TUk5bEtuMWZxM1Zock9sN2pJZm11YWVPbGRheElBamdWQ1ZDdFVGcFlvS1BrRWdEMkZzcWdPNjhEOE4vU1JseGN3TEF1UVJLeWlCRVZvSm1KVEdJa1hMbHhCL2x5UVJxTDdsRzFYc0dPeWNBSEN0N1R5ZmRPTm92YUErbTdlQnRwNmFpVy95NUwrSWNHY000TXloSkV6RWhTUk1Vb2phdS85THlkWHAxZWo0ZUc0dmxHcVZXMlFpOXlFaXpDOVUyVXNXQVozZWhkTVA2WnVET01YMXNQeU5sOC9YTld5WHNiUU9pbjJmdzBFdjZwWjRqd1B4b25Lam5QdTBBQU1yZENtc0RidnFEU1lBaGVCTGFVRWd1bGRPUE5kVUJqalplYUdxWXZ6dlF0bWZubnpJQ1pOUUFOR1JHcGJvTWgyL3hDYS9lT3owcENlRFRPMEhUL0xvby9CNHRud1daeWdmaFowUHlITW5xM3FEQ1QxRGFVTEwwN3ZJdHpabm85Ny9kbnc4Vm5SdVAxc2VMQmFXWjNoVjYrZDJpUTRQWmNwZHpzL0ErbTlqdWJ4TEFBUy81NWZ0RWRqc3RNamJBQVlWa2NUSjFEakJYcFFGR2JKUEY4cU5KSUc4TEV3OERMQWt1aWVnVWFXN0NlTEtYeEkwYWFlOG83Rld4NE9NcS9KREkrWS9OMWNReEZsV3NDWFdyRGlRSy8vWEtKZzJjb2lZRzJ0TDBFUzlVb0lCdG84a0ZRWFo0cllOQ0VEaU8rS0dXbkNUREM5aTRJS2xzRVlKZ0NDaVpXcUV6SlJ0U1VJWjJ2eUFCMVpxb1lmM2tLL1VNZDErVXpHZGRzVzBDVTh6ckk2UGRicTI5aHVwM2NYZk9iaW1zd0hpcTJISjJ3RWVQUGVRaDFIWWlDeURpVGp4Tmw2Nlorek1Bc3N2UUFQYjlpYUJRdnUxWXp0ZVFWbE4rZWg2VzFKZEllUHRFdzFUY1VSQU5XYjYreWxDKzl3V1BocFdSQ2J1dmd6eDZWY2JNc2U0cUJ0L2NTbEJBdURKdG9kSkRvSUlUNmRZWEVKSHd2TW5jOTljTFBBbzRUcEN2NTFDaVlyRU9KaVBGK0MvclE5OVI1ZkZTZ05TR2VKUjZSbVlzRWdKbFpFKy93TGFzM3IxRHFxNjlCZkdQdGFmbjhUelVDK3FCSUN4ZkM1Z0pIYkM2czFrRTZZVUJqMXJrQkFYOXllWFVpNnEvL0RMVUxFdHYzY1MyNVR1L1g4K2NkN2ZLcFJBNVYxVXNLc1BVb2YwbDd3T1ppQzFna3FBeXh2ZDRxTG5CL0xIbU1KUGpydFRaWTNOMEhTdXdmOUJOYTE5UUphaWhOQ1NYaG02TUNEMVFFSmQwUDdLamZzNkF0Mzl2N1V4dmRCa3VqdjM1eitldjdoN1ZzREZHaTVTTEhwUlpNL1lCM2FrdURDUkY1L3VMcStlUE03ekltMEVRWjhCeGF4cmtJU3pDUGFmd3dzbDRpbEk5RVBLdjZqZG1yVVpOc3FZeUcwbFlaKzRBWUF2R25tMElKMTdQSzVkSnNYdldibHdodUc3N0MyODZlYUJpcE1pdWlzcEJmdG9tVTMxMEVmVjdiYzZCMWp1d0dJVS9VOTVwYm1iOXh0U1cxRFdxc3N6dEhOalNzOEhSVDNvRzZsTm8vMjVnMGFaVjJ3clNOVWE3ZEV2enVzRXhMcFJucEhkSHRuYmFPTUJMM2JJQ084dzVxV3RVRzlkWU5CeGJPTi82SHp6dGIvUU1yend3OUlnQTZSQUJVWmJvSVNIWmxSQVdLemNCRzRuNkxaY2c3QThoWjQzREFKWEQ4Z2dhWE1hd0hORjFtWVBSRG5PMmYrb1ZiNDE0dTNIOTdCM3JiZWVoUEFEcUx2aXdqMEwvSWFtQUVMd2YzS1BaOWs2dVUzNENzRitGbGlVbDBoU1JmWURDaFZZdXBpeW5KRzhFMCtyc284S0Z5a2NZQitESGlnOFBqOHVTeFlubzZDcTdVYTcyeEV2WHp5MENrVG93MUVSekpVK010NW5MYlY2QmlYaUVITlNTejdocEx0RkhTZHhUS1dDTk0yN3RFSzF2SXdlbE9Ta1ZBdXRGdURNakpLRkl3aitPSDVjOURVbGJzSnlYNThlZzRjRFNVMEYrUkt4RjhVdUFLandnRU5BelNreXJFSVdLUkpzMjd1eElKSDZxTFJMamE2WGo3Z1JoMyt6eVlTUW8xRmdBZUptOWdwR2MrT3k3SkRqZWdnS2FqRHhYYUxoT0JZZm1ZZUxzalRSR29IclZ4RWxnVXRyV2Y1emhaVW95S09rTFRwS0tRQU1WVFZxWmFHUHNuNFg1RmFoZEJxa2xsSlpGMVZsV1BHTnNkTUY0QXNTS3FRRTRWSG5jTU1jd3BBbzFyWkZTSUJnbnlHcTVxUnhWRFFMYUFETnVxdFFNSEVHUVRKWVVNODB5OVFDRTFhOVZObk5LNThZR3JqU0tKWnBwbUtaRDVhRlplVEhwdUIyUEdHWER1VW93YzYyeGdxTEttOG5DSE1IUDJ4dWdSaFUzRXg4WHpXdHZVbVFROHFlTVBINmJaMUJYQU10TjhhM1ZQbUtkdTZpSVViQkFISUtNNHl4V3NER0QreEF1eXdnOFFheVJia0k2d3k2bzhkaDZaZ0RhbXlSZ2V0eVNMcnpyeTQzeDlZZFNLTGJHYTRCKzJNTEY0VkdEaUFmc3dOV3RhV1Zabmt5K3FsaGQyeUxVSEtaV1BhNUVaY1p0d3dzZXJLZG9tY1dtVEhnKzdxcGJWeWI0OGZnd2ZlaXlONEdoTmRoUWNtcWlVUFFWdno1TE9sVGNJdXVOeDFWdlZpRnd4Y0VGZW5SSlNITmJSTW5KSnJ0RXpXYTFwMnE5c0ZwcDA4eEJId0FRV1NGakFZWUE4UDJWMjBDWnhvZTh2elJpemFPUVpHSGQwNGplWWF3NVJSMDZmR09vNnpSNE5RUUNqeHFpRjFNTkpjTU1lT05ZMlNaQWs3ZHVNRnBVWWE1UGdFWllIV0NiRnVXRElTQjlyV2NoRjhGb0tQSUNhdGFUU2Z3M0JySUMzMHp5YjVoVForM3liVGwwbnliUkNYY2wxUHlNRjJYYm1UcTFQTHhyKzFSYVRncFN0dS9FNVVLYWg1eVJMd2ZCc1JyVy9YV3lhTm1nbC9YRmtJazNvU3FKQ0VCSnQxMmxkT2pKU1lUOHl1dlkyQ1ZmVHBNUWhyaW5tUDdUVjRYNnUyU1FGUENRUWs2UzBYMGg5bS9CUU5kQU54ZDJ2NFZPQ1M3Mk43cnl6WXNoUDV6Ukt3QUQzSlhYL0NoK3dQd3FKNTc5NndHMU5hZDdiT0hsTWdOSVJ6NzFhWEdzN2VuZndNUW9NSG0vVUdYY2NxUHJQV3E4bitaTEozNEw4RWlldlZrUmNjN0w4TWZnaU92Q1B2NWZUbHdhczlmeks0T1RpNm1TS2xScTJQbUwwSGMwcUQ2VzRHR1Byd0h5eXVEUS8zSm9QZzhDQTRPanA4TlpudVQvYW5oNTYzZitQdFRmWUdCNjhPb01qMGgrbmV6V0YvY09TOThsOTUvdUZnNnQwYy9UQTQrbUU2ZUhYNHlrSUp5azJYY1F6dzROR1JnZFFpeU1BZVNkRzJpOEkrRGtSK0RENkhHZXdRZE4yRnZUU1ZXNHc4VG1zY1RpMEFzRFRqb0NEMWdYeFFXRVJSTmZyWGcxZktrOVU2RHo1blhLellxbDdtVitsUHViZWlMcVFVYTNuVzg4TjlNWTBrSURPeStqYkJieXZOYmc2c0J4YkswYzZYMjBpZmRpM0NraTVPdlN0TDBUR0NORENJUTJjTktiQ241b2E0VEZmSVpZM05WVEE2RDMxUXJvSGNuQzJIWjZQanhjalNWMDRpTXRBQVRXMVFUalZPN29VWEQ1VmpWeEVySERxZjY5aW1rb1Qram9YbjR1RXRUTVZZU0tCeDdnZG5LcVFqa3FOanhaN204S1pYSEJXd1NqazI1WWpqbUxHeDBFbzhzaTZKMWhVZHZYNWR6bURBM2lRRTFTME1BRXFQMXBXQUtLRFEyNHZmck5XNDJJNnNLVm9EUldQTjk4ZHlDOXBJZW5FVXQ1dkdPYkxlZTlPUEFQcHRDK3R6Rks1bFpPb3AxMzlYZ2VzWnJ2VFpHK01pRmlxTXJEZmh6YzNabTdxaDZTV3AwZGZvYTMyTFA2ZnFTU2hkcXZmbnp4K0JHZDMyMEtpTDJPNEJUMGpTSHFGZlR5T3VQTGlWR2ZaWEpCN0xlUS9NaFU0RTViNEdoUllRTzV3RjZVTUtXcGkxclljYXRGb1NQc1d1N2RqbDE3aUpPOGZLL1N6ZStzeGFKdzEyWEtRSHlnSDZKNHg0T0tkSWgvY2NHdFhvL3l4b1ZKbjFwWUUzSTNOYm1jNmg2Wk0vZGpISUIxU2RlQlk5ekRGUXFvbk1ZZG5LcVNxM1V5eUVJUU5scEx3TmNKdVNzL0QrWHJrNEdsNlhxVGlFcFNDQlN4aFNDRHE3akMxaU5sUjZHMDBBeUo4Qy8yZlZObnpZMzh0WkJrd01sQXpBUTZBTXpYQVFZU1Y2aFVaWVRPY1ZTT2gxNVFhWmU3RXVlRTNudE04c1dQMW9BUk9adVFna3lmRjBocEo4Q3FkQnpaQ2h0aDhpUERaZE9DSFptRnNsRTVxMWV4Zk5nOTM3S0FIRnRCcXdzOHNkYVJFem9xMmVHb3NZUUMyNFJteGN3aVZlNE1mUHREVS80NjRzRGcrME5OakRpQXdncTM4ZXNkc3JWSE5hRnBPZmR3RFRqbXhPOVJCL21xNVpFU2locndYOExDRWVXYjNRQlAwakhwNXJOblhRVlVWc2pCU000SWM0M2QxLzllcm84T2htcnh0NGsybDMzNy9aNzNyQnkwRjNjdlJxR2h3YytUOGM5SDBPOWVOcEtrbW9aUTErTUlYQ29QR0NPdUR5d3ZJZVJ4OHUzMktsdXl5TDArSHVMa0R2TnZnajZrMmo1U3lhVDNwcE5BMjkyYTc0V1YzQzNtMllXUnNkT0Zyb3JFZEg3YVZGejBPK0x2TzRNbXY2Nm5EU254NzZSMGVENE9qZ3dCLzRnNE9qZnY4bHZBcGU5WU9ibDYrQXRlOEZlMDNoSk5BVnVwQjVLaXdIVDlYVDJPTlREMFA4R083YmhJeHJPVVR5NkRQQWdCc1BtR292aFNWZnJmS0ZaQTAycGNYTTl3NDZEY0RtdDF2YXBoMEN5cUxOK3hPdUJmemxBS3VaOE1ybkNKNjgzZGg3d04xVXhLTGN0V2xOT0o3d3NzU0pVNXdsVVNUNHhROUdxRms2YXFNTGcvYlQxaWdFdFVMYnl0eU1jbkFhR2ltTi9MeUcwTlMwblR0UjVOU1dMT3hLM2UzRkQ4V21iQ3RlSnFBWEIwTG50NFpDTUtlZmJyakFnQU1BU3JXaWNRaXF2SXNtMzVwSnFrSnNGeVlyajNHV2REYWx4U0xqeEVxQng4S3JkN2RjdERMZTFVN0ozQ05RMDVhNGxPdkI3SGdRdURmZVIyYnhkcVd3M1FMeEtMeGRSc3ZVRWJGM3dzRElTckV2M3dZeHZBVmVPVk12eUdOZGVXNjY3RGdyalRtc1RtaU9uR2hEcElpZ25QRGl1VlRwVlREell1d1VSTmhqY3FPUXJ1Sk94YlU4YjRZRW45Zm9DdFV1MUNrWmN2NkRDbkpVekU3WkxyNkk3dHZUV1dwblg4Z2czaG5xdmh5cWJ5eVZmZW04S0Rpdys4RXM4d0M4UUFMODFCRXp3SENIblIyOUIxb0V0cnVIaTNpWk5SdmVDVFlGVStlT3lSNC8zQ1ArQnJ3T1NOZzB3MU5hQ3dOckRWNml5QTNSSVFDcjdWVlBTS0JGS2hFcWhETGJkc2loMEpGbFJsaW4yaGlaZkxsRGh6eWFVcXV4dFVmQnVTbCtzOEFyYTV5a0JBdWQ3azhuZzRPRGZ2Y204TDN1ZnYvVkQ5MVhmckRmOVk5ZURiekRneDhtaDRkNzFoTmlFZkVVK3g0a3c4dmdKb0J0T1EzRTBHUWdqWkFtcndLS3BpbVBNVW0xSVNZcHUyK05ONDZKVkh6OCtYTUpaWjNsb0pzN0ZvRC80cm5SakU0LzVEdjcrZlAybzZYMjZtdWxSVm5Ea1FRbU5EWlozdUp4QjV1MU5Ec3pEcE44WVdRRFpPUkROOWN0UnMrQzBWQm5hSmZMeFFLRHM1aFI4cEN1cUp5RXJCaWFnV0dMMEYvaDE4ZURQbnRqRGJlR3pTanZXK3JNRElIeGF0eFNFYWIxYUp3SUZRTGoxcHVSMlNUdENUeXdqWmhWQzlzYzVkN2tzMVRJSldqNFNETCtzYTQramFnUXpHMjFibUtMeUErKzJRYkZ4c2pUSk1lRGV1SE44MzIwUDBra0VEK3h1VmQ3dmIzK1FlOFEvdlB5RmFBbFNqc3pQUDBrUHpyMkpJbVhKRVkzaW9kSWxQWGdjRHpDaHFlUHdZTStSQXR4eXlJYUdEd1FUQzRKNlJqOUxXSm0xbXBUT2xJNHJ1T0dvTE4zd1R4S0h0N2pCT20wRnBZMFREL3F2OStmdlZFL08rTWFqS3l6dWE4OVFxSmNDTG52YkJJdDBYTnA1NmxuU0NVdkdNUVRnek5WRTU5QzZjVEVxS0JPVVFRWmZ0VmhGK243Mko5MGsvOTJrelpqZHIxTE11b0tTb0oxeFNSemJ4dDIzWmFldzZzdHdZbEt4b01Kbm5oT2xMSDNWRkhKclpDUFRtM2RwOUZWNkxGZFBEVEJHYWh1bVQyZ1I0RlVlSGkvR2NqYVUzci9ac3NzZ2JEbGdnQlJuU2JoSkRDdHlUWWpzVTZZOE1FS1NsTkFPdnpIb2dYMHIvVnkvN0EvYjdXUER2OTc1eCtrM0c0enZ2RG01cXZHaGh1clM4QWV0aWF3ZlA5WXZCQy9sQmE1OWFEbzhMZUdLalJxSE94SzBPMzZ5VU0zV1M0Y29lVXJwNEpjTG5mMituMVQ4NGJLR0VIUjZKWEFhbzJVMHpVZGtVVDhUcWZXbVVZcVhVMkh5SDhQZmRPdEZUMTRHMEdWUDNwaFZEVU1HUmQzTFIvS1hSaEtWa2FNYU9YMFhUMFV0YnhwMExaYzkvM0o3Mjh2VHQ2NExubHB4a2xiZDZ0Z1F0RWgyeUhYS0xxaXV1N1BIMDR1dGNxNUpaVE90dDNicFpkVVRRTGF1dFdFQ2xUZEphb09Dd1d2ZE5UK3BGZDgyNm9vczVaTit1dW1idXVaeWJFUitTbWRzSVV6bWR6Q0pya3NOMUlyVnpIQmZjbWgxNlZJRklEUkVBRW1pc0RQa3RkUThCbGp6RnZha1lUZHVxSlRrOVBQb2NtdkhubGYrVEM5YUVHdWVHTjNjRzlVM2dvbHBEYW9jS2NTZnlGeXF2RHV0Rm1aTHZ1OUlnc09QbE1BNnEycjRUd21VK01qQVhJVXlMVUw0ZnY2NTVJU3haU1BUTXFHRlF5WHdlTWNlY0xTcWVhS0tReFBsaS9ZYk1xTkdnK09oVE9IVE85U0F0TFlXSWNBbDFkQ2F4MkEzZWlvYjNTNjRLRjN5SjlZUVVEQ0RhYkMzNUViZHdmQWtUa2libHcvRWxWM2hHRmt4TlpqMkVSQjQwQU1sUlNEeENEd29scjFhTjJDekJ0VEhvdzRKaFhkckZ0SmpjWm9QRjVqWGw2TjY1ZklXenkwNnhrVThhOTFiSkZVQ3lvTnRRaHRtbndKOGtWQXFZaHM4NmhIN1VvZFlCY1Z4RXE0S1J1Y2tjTW1JV1kxOEpaWk5NLzNnOGgrNmZxQUtVaWtvbGp5WVE1YjJpQVpFR2NSMFkzaVk5TzVIK2FkMG56NjEyUW5NVGJLSXFKeVVRQWtlUi9COXdmbjBSTFRJblA1NDJyMTlOWkg4cmhGOWZNUlFUUVB2d1RTZFloMFQzRnNQVjU5ZzRrd2pndi9nZzFhMDQ0VXZ4V2s2VXlzUEREMmtrVWZhOGNTSEhuRDVrcEdISEc0cHBJUTZRZTdUdi83NTVIWm5KcVg4c3FJaWlZUjdCdFEvZldVdklIOHI2RVRRQytyNmNDU0FKMHhYRjBmeDlqR2hET0V1b1RkT2NQOFczaGk1Y0NDY2tydGZCV29ta0ZVaXVZU0oxMHVCbUVEbXJwSytWRTVZRURXY1RHc04wcm8xQjUxcGFlRHFxdytVMlpUZVJoWGJtL0xqV1czU3U0U2p1WlA5ZzBOcm5wZ0l0a0ZxcDJzb2JXajhua3l0aW1QUnY5YXRQcG5rYjhxemFQQXNjYjYxaEx5eEdqNDBueVFaSXZqbXllTEhycjhwOHRwY3Ruc0xmd0FPblZiRDRSNDhnTEZsVXFWaUFMYmJSRXRZaTlNQktFaW1XVmQwTnAwYm9uamU0clRSbnpkTWo3dENlemtlTE5kdmVIdUhwVThvYkExbzhsRHpCc04zakR0L0VpbFJsNFFSd3FjUzFsS0MrYkRCYTFsOG9SUVRSZmtCaGw3UTFGWm9sMGhOWmhOMzkrV0JrbVhWalppV2Y4OFBQdDRDeDZ0ekdHRjVJOWg2cVpCN0NXZThKbUEzVER6eFRZUWhJM2NGYmJtUTQyWUtzUDU5SXluUkxBZHBYMEo1VXZvWGdYVnEra1FVTk83VEdxWDZsQm00OXlZcGxUNWFxNy9jNEkzYTR4UmxKdzAySHA5OGU3OTI5UHJVM1RjeDNSQVpwOTQ1YjB1d3g0ZnRWYVZDVUU2MjFkOGZIZ1N0bENCaCt4d29lbTJ3NUY4SGxkZGxLcXNVMUFGUnh2RUZVOUhIZEZhVjh2cE5BaDh6SVVzSjNaaW50Y0E1OFZwanN4bEJtTHVxak1PcXd5ekVPbkZqeFRzQ1hRNkVhdk4xRG9rQjN3LytJemhqOFFsS0dpMERKRWFHSENWU3dYczVvcVB6NS9MbjdZNkE3U3VvQVUrQVYrdC9qWmJ6WEZ0V2VNMjMxaG1iYkpKNktHUWl2dEwrYUNKNjM4VkYzb0NaSnNBdTE2MkwxSk5aWUIzT1dVajBFczlZNlAvTjZreXVUUFc5OUJpeXBKaktXQUtHM2FqZVVqaHlBOEFqOEFYNmFCQXBFclFQVTNTTHJJRWNkcHNFZExSb1AySnlUbHIrSWp6THk3eUx5N3kveWNYS1ZQZDlTU09CTldHclYyTjdZcnNlQmpWcnRxb3ZHajZtMXd4azJZQlFwbUc1TnpmcjA5eXZ2eVdmV3I1eGhrZGl4RmovVHhpN0h0Tk5NOVhycERYS2VDdWltZjZwaVBRY0Zrejk4aGM5M2t3MzNmcnRIQWFveWRZcC9xTzlSNFgzRjgvZ3RoRVRFZVNLRDRGWjFVY1dMbGRScjh0cmN0UkpRWk1Hb0Z0bzcrTkNnS0x5a0ZnVW5RUWtnTUpEbzZCV0pUcmZSUFZzcXBaUm5FVzRqRUdzbnJzUGtxVWlVVWMrWUQ0NkpLblF6VjJtaUxnaTBmaWxXeDRWdmZDc3RNc01mdkM3MXJLUm9nSDlGQzZ5M3pHemdNazRCMWQ5S1BTZW5mRjFPSFRMaVhBUUs5VFdVcWNnb3VyTnNwRkdGZTdpdXJiMHB3NGhwV0k2VkNjajZZSnlXeDBGYWlYMHM2alF1aCtqNCtta1RmcElicGFoYk5GMjFJQWJ5RTZKakZVQ3BLV01FQmlCZ1JxaW5QM1ZRUmFoTldNek16S2U5ZFZ0by95d29uYjA5ZzVZVXZCYlZNc0xiWmk1d0VFVHhkdEc1RjNJenZveGtwT2FTc0F4dDRxc0NtN284aXVtc0tNUTR3VnlVMy9LQ0NuNkZiQldQVTAyVmlSTmtSN1I4c3BMSVlqZFVKR1NLVWh5a3pidVdoWmpaNmdVQVp6SG40OXovNTNzZjQ3NjJ6LzI1MVpiSEprc2ZWcGdsTTVTL2oyUWx6Wjhud1hlTFBzRHBORTRRa1Jac1NBUjBvQkxNYlorVXJHczFPWHowVDJQSXcyVnVhZHdVNk4wUmZhVStNM05QZ1VoSW0vMWhkMHAycEpmZ3BTQ0ZIdHFVejcrRHN4YWttV0pBRVFsNGlvUEgxdU9PZkw2SUpaeVd2eTc2Wkw3VzBJVTdjaDdHcUEyZnIrUmJyTXBPdXBITHN4d3UrdjQrTGJlazhWZVh5VDY1VEttckNjelY3UHdqZmlBcGZHbEFuaDRsTWt3eW41TmdXUkRreXdlaEVmeVZ0Qi9QQ0RSU2dqSi9WMHJwd0ZXcVErdDlPN1pSYk95bDhyTitjV2NuT2pWeGZsc2p5bWE3NThaelErRmxKcWc4ZnFrekpzSTFGMzlEeTR4K0tnMWNFdnV6TEpwU1ZmOStZZi9UQnBZMEpjeDVCTms0eU1qcnhNMmFLZlhjNEIxaFU1UW83cDVacDJLSnhLRElHZXJXUDZqNmdHbzhSeDA2dGR2dEtEM3FqUHZBVlFLWjVTRytxM2xYK1NoU3NYZGFBR3o4eGIxMVZzcTdKby9McDRhVEcvTTRUN1ZnK1FHVFVvaVRPdVc0M0NoS094MWFEcFozSEliWjRpM2pvbTQ1UTV1Ui81UFZ1UEs2dHBpazJKUCt5MTZURHNodXdUZG4yOHVHMEs0TFpONGVCMnhhbmJib2pRdGh0U1A2MkhQNFdXRTdnSm9sVklrNlhaYVZjeUlleGlNRWtxOG9vV0VtRFkxcWFwTWd3bHBjc2hlKzAvZVBPWnFWUVMzSVlwWFVoVnliNVJ1K3cwa1NwQWhJV2N0eFdXT2VZMzh0cHMzakQ4Z3c4emJISzJkcU9QekRsa2VSMy9tSUJLSi9YaW1JQkZMelFMT3VqRzJMamZYUzQ0Q3dMWm5PUGxaRVlXWlZmbFpsTXVOY0pNWHJpSmVkMUZ6Sll5ZkZDT0lHdjR1QmdXMHU5cW02M0RZUHYyMUdCbEU5bFNRNGg3Q08vaU9HTHVQV2JtQnRRTmdKb1F5YUtJSzVDTHFEb1NkMkNVM01KL2N6UkNnQ2w1Y1MybC8yL05mTVY2YTNNbC9DaUZtR3BneWNscEYxZlFRSFgwZUE0bzBUR2J4SVROeHNsdnVwTjJDSlhQaktFcEwyc1dkNE1LM2lvdkZkRTZFd1U3dllETU1pQXc2cGVOMkdybGNWQ3l0WnExTjAreU9KRTVvQ253WXVkeFZkbHFGS0poVTFRbUFIVFV0bmF6ZVF5YmY3b2tpMWFlZUxobzZoTEVRQ1djcXE5WHRIdDFVZGhOSlhtVllHaW9Ya2h0eHpEbnVvOHE5L0NRTHpUYXJCRk0yVmZYd3JpVzFCQ0haL0VENGRYcDZWVEhqRTkwbzRTaU5KeGttM05ySDR2bEdGRmJZNGVMRkkycU1GU1pBbEtXM2hwRTQyT3RtWnBSUGhwekdCWlFiWnYrYytpT082c1NFc3JNK1U1K0k3MDFSSlFkRmVqaTJIQ2FxTkxPRksrT0x3eXpJbDNZbHJaN3JPRlcyNmU0VC9CK0I4ZVVTQjJuMjUzT3dqeWorckYwV0hNTUlVUGlyTFI0TjFEcGFxREt6VUQ1eFVEVmJPb2xBbE81dGFnK3o3cXQzUUpVekcrUjN3R2t2eS9lQWtSNTJSMTViNTBRbzIyNXdDWGVDWXd5UUN0OGxLUU9NTWc4RTYrNlY2NzBvaGVDOFBhWkZmek8ySEJCWGQ0aTBpeTlnNGI3NmZKU3R1bVNPbkZvb0VMVWtYUGxWUnluZUgxUmJWUVlFUktUdDJOcDBOb1ZjcmtKQXhPLzBDaHFjYWZoQ0w1NDB0NndoUXJueU4vWHA4R1FSQ0MvREZCYkVKNTIzWlYwSlVpeWNqdXNjNWcwWGRJdE1YTlVvQjlqVzE0M0prMUgwclFlSjN6bk5MQzZMOEw3Mm02NExsdG1vZFd1amE4VU9lS0RYdE4xVU1nQzE5K3JQTUk3NnNlTytZNzZTck5URDdBSDhBaTV0cXU0dGpXVUlvMVZsRmlzWWNtV0t4bHprZURXd2JFSjNRcEVPRzlBZjIxQWsybWNhK2RpcDJqbmJEUTdKdFhIMDdpR3RWRWg0TUJRUU9lKzFac0prRnJybDc5V3IzMDl4akw2M2E5eTg1WlArTTNJOFJLUlExMUJxdVJ4R3FCUnVwdkcwS2NZUjVOMFlmRHpSVDI0a0NHWStlTG1lVE9QNFhOYTM4SzJHU2R6TmhCTkFuVWR1T0VtQ3BJdjAyV01hbWNLSDNoUGRxVUIwQ3BwVDE4bE9OVGlzZkFsWXRPYXBaWk11eDJrRmhORytpVWlZMVNiOHRVdGl5cHh4K2FkV1ZZUTU5NENEMUp6TUNnRHFDd2huZUdLK3pkMXB6TVA3ZEtLQWNna28rVGJkWDd4bTI2ZDFyVy9DVjlpai81REIvMlhxSFNpeFRkRWdRRk5qWG1Ec21NMGowR0pUSDJRd01TUWh4U3ZDbkhuWVRvbnc2ZmlSbXhMY05WUmozaXZ4VGVUeE1FNFp2RDZ0L09vQUM2SlNMb3VWTUJHZjMrOXVIRC9OeFJVbEYra3BaSURlWXFaWG10TjVzTGMzSmZQdHNxbnVlUjZWcE1EWGdzY2wxM3BmQjQ5N3hPVmU3YS9NZ3NtZEk1U2RZQ3N5VGtSWmd2ZzJhV2pQOEtqenJINGFQQ3FOTjlXUWRXVU80eThDU0EveDJGakJOTkh5NmVVNitvS2FGNHBoNW9ZbGRkdnJKV3JBcWxTU1I1bjJFV1FPWU5PdzdBcEkyNWxzY3cxS2tSRGdrWHhqOUxoVmMzc3k2Vzh4UlI0aVNQZ3ZtM2Z1UnZUcUVJNXg3VkFNbmJ5RkY2VnhNSndUcFJmemtsdzlhU09xek9xZGJDQVVhZHV0bC9JWGtxS3NwUEU1Z2dsUERrWktoRU5VN2E2eWhkMXYvK3lVb25wNm5xVnZjRW9NajdtanpYemw1S1pNa0dOTEtQeFNUOHVSSjdEaFRhRlU4bk9NNjRaakRUL1ZHVDA0cW5Vc0oyYmFqRXVyMmo0bHpkOWRDcDVNWEdzZ2QrbUFENlZGRk5NQUZOMHRORjlpNy9hOGp4Sy9LNDJoajVnbEdjbXYzaXE0ZDRwbFNab24wNzBLQXV4MVgzTkhtTTBHMlRod2FkdTdDVkk2b2FiWDM4aktmUUxDM1BZbU83QmFld2M5MHhISEV4MHc5dEZsR3pYdmNWMS9EVmQ4MGxtbXQ2aGdncFVMZ1JhRS9RSHB1eEkrbmxobXBsSkprTEpkK0J6ang0NVpkc3g1dXR6eW5tMXVXeVBMdysvYVFFOXduTVU2TDM5MmNZR1R0SVVwc0RHWkR5WTFRcGtWQUFEK3ZoejFndDl2RmFKejVRdDZvUDhYVDczMk9pV2RwUmZnUzd5WWl0b2prRTN0Z0FRcW8wRDdSRm1ZVllpd3VHT09QU1UrWmRxWSsrTTBSRE4rb1pHcitsQm5PYVRjSEg1NGZ6ODdQeG5xemE5azJUbytoMTRsZjd6TkdmU1FLUXV3eHpiNmtMY3hpN1lqQ0d2cksvSUQ1MkdUazB1dFdxQ0tqN0I0TExTMkVMT3pTcnBXOVpaZXFvZ2E3VHdGQldGMVZmZWgxVWdxR1FJTVc3TnRjbXRYcjg5YTJXSnQwaHhLeHJJS2RBUllBN1JQZmZiUVB3cUN5ZXBrVjFIQ2JGWmRLNGdYVnBRZTZxMFArNmxJRTBCbVI5YTlxQXpHb3lMbCtjZWJ3NG1iTnVlVkZKK3FmdXVuZG9id2lVQStMSjVjWjkyUHYvMU4yZlR4ZGtiM1p2OVF0MmEzWGxCZDJYWFhJTGRjQWQySVFVaVROMFpsVTcwbEN1eVVGT2IzSkMzT2N5cDkxUit3dEdPYkt4Nk9OSFFZTzFoVDZPSGRJMkJFR0gzQW9EWE5ZdCs2NkJUSXlwV2tVODVuRlZQV25OQlhYN2l4T0xxcDZHT2VsTkIzN3lzTDMyRnlxaHM0dWNNRHVLSGVKWkFCZi85VUZ6N2x5ZFVhMHN0dmJWY2VKK0E0MU91MjlwMGZzVjVsQWVpOVN2b2FQR29iV2ZUYS84dUx5NnVyZHl0Wk0yMWYxT1NqV3FLWFB4MmZucHAyWUprTlY0emVIWnlidG1UcHNiVWRZVENTbGxiRUE4TmkxY05zbFJiVzRIUzkrbmw0VVh0dllSNk9VbmVUWVhGWGZWNmNTYUc1V0dVMFZIekh5aFdyeUxqK3FhcTI2SFladUdlM2VMbUVnaTJpTzRkdkhKb2ZWLzVoVVdsMnh1cjU4WVNYRURUa1daWU5xVzh0emRLaG1qVWQxcmtXMDI2NDg3WFhrODQ5OEtGSWVNVHVSRTNGU0p4eXRsVXpDUnRpZy9jZGd5Ym5TVmRtOXEwS3lrU1N3N0JPQmgzT2d2NWtrdEFNei9OYjNmRTBBUm9GSXFBUENVdXcyUlJvT1FNVEY2U2hSN1phVlI0UU9xaW1zR25Fd2tkKzFuYWU0YlAxT3hha2ZNOG9zQ1l5ckd2SlFaVU8zR1dnTVhVODJ2bnBEbVpKZFp0Snl6RjZzYkpEcmFhYk4zNDVVRGx6ZzVTemxqcDNZQks1UHJMQkZtRFMraXk3U3lrdWZ5dm1JYXdhZEdGb3FVUUpFRW0wR1N0Sk9hblRxWHNnc3NlWnBYeGMzT2pvZ2Z5V1lxR0NKNmJvUTUzUzlwQXpSenJUakJwc3J6UnlENkpaeEc0OTRTcGNPdTVscnpzNngydzE2d2x1VlBURnpLWmx3eWFqUWtFTnR1MEZNcldhRXkxZUo0Tjd1T2lKM1hERVJyN1ZRNkNUNUV3SnV2NXN1b29JTmZhNzcvTTA5YlJXdmlZOElCWFNtRGswM2FUYVZta3cvZWFKZm8rK0ZnR2ZZRVVBaVdGRGFjUlJESDhwMDVibWhyK1JxVFVhbTFtMC9oYS9INHlob3BvQTd5cE04aCs1RXRiVHhiK2p5Qzh2ZzNub0tFM3hSM1FJcytpTkowQjhYQnZ2NFN4T3dIQ013c1VNK2VFSEJySnJiSjBvVDlqYlJLdUQvZHQ0Y0NraW5DamhodHVjeTh0THRKNDVveG1QdkpyWVJNVnU1TUtSMVpRSC9IWXVoTFBobldBb3BOR2EyTVdFcXpMZlkyb3JYR1BiaUZwR3dSQXNucmd0SHArZ05pTjkyaTBlWWE5eWVFK3Z2U0RObGJuVTBOY0p2NE02d3pMUjBkSGpMMGIzanROMWptYlcxd3VaSitCTUtzWXcxeEt2bUxVUXNGWGpGdVRwd2NiRElRTU1ydytFbkpGNDA3ZUJyYk5obDYwcXJZRlhNWEtqTm15aWhVNngrSTB3TUVtdkNUeEhqWUZaRjRYMC83OVh5MUVzRWJjYmw5Y2NTYngwNHVmV09ydURNdUxLRnFzaVhlVzJJN0hRZ0MwaitIRW5lRldralNkWGQ3UnJ6bFhjbW8yUlpSbks4ZUxHK0xNZWZic21mZ1dSbVFpdEVGQjJVRWx4WWVaYzhKakFqVENoSkNIUHBLUUR4c1M1dG51MjJzdXlBUnlkSk5FaU9yOHdWWGVHTXB2bjJZblIvbFd2ajE1ZjJhL08vay83bytnQTY5dlFob1dSQ3V2VVp0SXRxNm1PcWZGcXFzT3hOZjdxT3JJemVXQ0xpeENIK3dyZkFSS2wvd01rbCsyZmhqaXpvQlV0c2xZNktMbmlDMmUvV2k2UkMrR2xGdkROWUN0Sml1Z0NXQUhiVW9jd0NUMVRMU0ZIc3ZHQ3lRUHkrNWFhZ1JkV2Nqb3JoTXNQZ1V6WUQ2R0ZoZ1dSbEpwQUV4YnRtU25Fa0l1NW1ZbVh0TzlXMDRzK3hZaDVoUUIyTllMd1BTL0JJQjhXUnR2cW1SUWtpVXQ4VEhIaVA1NUVXVGRqOENEL0dqZXhiaVVSUW9sWUdUTXBxNTQ3V0dmY01CZ2Y0ZDJuMHVhYU1JQmNQemNHWEt1ZnpyakV4dU92NWVOWTBRQ3FMa1h6a0FhbnBXVEs0bG4xbzVBT2tjTW9OMDU5dUxRMFJHL0xhK21GT2FLREdTU2hVZ08yWFBkUlhEdnVtM0djWmdPM3Zua0k2NDRHdDYwNVlxUzVDQkh6YjRwODRnTTZTWEVxcStoaWdBdlVaMUJ2OG5EOEVtTnZCaHRVZ3ErRmJvVEZ6VGtKZ3hlRlRKVG1BOHUvQ1g3WlFRdDVrQXQ2ZEFJUkltT2FIVlhQdk9JOHZDSlk2YnNaT0NrbzhWLzM5dnZQeC8wOS9aM0tITHcwYm84L2Q4ZlRxK3UzWGVuMTc5Y3ZMR0cxdnVMcTJzUUN0NmZYUC9pbnAzL2RBR3ZkajhOZGlYV29zQUFOUzUvZDYrdUwvRzhiV2haS0pPZFg1K2VYN3ZYdjc4L1phZFo2VnV5S3d6VnYxeGZ2M2RQUGtBbmwyZi9kWEo5ZG5FTzVYNEVWaFlrdVFVaHZ3dUR5NSs5T1gzMy9nSmFmdjI3Kzc5T2Y4OWRyNjNWRHZzYkNCZFpCNUN4cDZ5L2o4K2ZUK2dFUUE3cjdlbjV6OWUvV0VNOG1sR2c2TmpXZlhvYjlpaFhpalVNbzk2UHlKN1BMdmp6U2dGUDVNYkJLMnJJV3B4SGdPRU9CSWFLNG5DS3FlVW5Wc3Q2Z2JWZjROUHp0bVFGTHdaZDFXMTN3RWk0M1lobEZ3MmpWa1ZXQ3UyS3JBRmpTSU9obUZUUWs5UGFIN3hzd2tmWnJJNkhFakJsUUlBaXN5aUZVYWkxZFhIMlFnNG91L2N4UVhZbDhWWHZsYUNnKy96ejRuUjJRQkRZT3JYTkZKUmNFaVBvbEE1RnRNNmFSREkyVUg4SGIzMkVsaGFmd2dRWXBmWCtkMERqOHpld1ZMOWRubDJmL3ZqNzllbnJpemVJK0FQOWdwYUtZR2hJTzFQS0gxUFJ2alRtbFplRWdYWkdheUNycVRZWGZBNzFUaHpzZ25KelFacGNvMmFEZmJJZlpJMWtCZ0NPSHlxM3ZPQkxoTDFMUGljU3lMdFdIS1Y0ZE9UNUQ2WFRzVlJ5Y1FxcjB4TzVpd0xsN3YrdGRVSlNwdkFwYW9GZ0hnZkQxc1g1MjkveERDeTQzOVU5eG8rQkRjVXF4S2JsVFZKMDd5MFBtOVBLQmZmb1UwaWVyeFRtd2UrNmUrSWZQWFQzOGMrUi9Dbi9XUXFIWlN6a0FzTlJoRUFnTXUvTjhqQ0U1ZUxqSXJwZklMbTlQUHYxNVByVXZZSmRmM1orK2hhRC9nb3U3eGlNb0R1OHd4QmhrU2ZvUEFtQTQwZ0VENlBFOFl2d0lrN3BDaURzZFRsUlA0ZUtkdG80dXNEVU9YbEhwdHh0OWV0NFJTMEt1VWhPbFZ5R0xCbnd5WDYxOEdvRkhMTnU1RXhLREFPUGdkWnc0RElOSE8vQTJHRFV4bUd4bWNRd0xsSnBVNWsvcksyaVZta04zWnRaZUh1SFF5TWZXcFI5TFZ3dURBNlpZVHdyMEl2RzFTdHBSSHg5SUp1Sk1ZdW5pNGlJWmkxaDR4YythclNEMFE3SitVNUI3SWEvdDFFWjk5bFpuR2lFdGo4N3h5UVgwR3U1YVV3R2U0blo1T21sa1NudlJybCs0ck55bU12OWdZVmJVdUxkNjlJSEZxN0xzNFg5VmJFTEdqQU5qTmExN3FORXlMcnZqRUoxWHl0NFFRVWJqRTB3cDBLQUNhOGd5SkFISm5NVGxaYldKbDYyaElodlhWbHBqVkoxcEg5NmZSV2RHcmg1RHJMbSt3aTRxc3dNcTF6UmxVZXZ1SUlNRHdqeEU5MWsyQzFmUDFwMU0yckdrcHlNTWswbzBiSHhDcmpXblplNm9sVEZQbnlEVzBIc0NDTHJEUHdnQ1Q1N2FCdE54WEVGV3V2djhHcUdZSHEzNlI1cHl0STVqUFJjak1HOVk2SjlIYnRhWEorZ1U2Mnp0c29JNFdSc1dlelZEUnNsRVMxYWlFU0w2enA5WEkxUkJUallPcWRpbWNUSWxJbWRuZTFPY1VrUVpXV29HYUdpMnBTS3RTUUdSUTVxdThjeU1EcEhOSnVwY291R0Nob3A0S0JFTm5ucnZQR3FHQ0VVa2ZIdGM0YUpZMUFKVE8wbSs1VldXTnF4UkMyV3JmNTZtMWFkWlVrby9mVldITjUwQnVtdll0blpRaFJrNmZVeXVrL2JHQitMME1ZbHZBbEFZNkxUR0ZvQzZTZ0hQMEFOcG91SzRaSGRhM0I3aVdiZS9DaXF1eTdtZkhWZHRvWHdoZzk4ZXhiNHQyZzBJUnhUYjVtTTBDZW5WSlJiRTdtYXVMSDB6NW1OMXp2TTJlTUlyeS85NmZMaVhTc0hNSjkxVVlZa0tDekhUbE1FWVFtNXJEVXNxRS9jcWZzMG9YVFZXU21BcURreFpEaXJreHFoRUY1NVpuWERrNEpWRGhPdGVYN1JDbE82bnhVQmIreW93QkkyQjBNaDdEcVhlLzgrUWJoalc1dUl2K3Vtb2dUaHNtQmNLK3JtSFg4M0FSY1hiSzFUcmRDKzVOWnRnYUNSUENDTm9mT2l3azdoQkJxcytYQXE2VFpwMXZxelZKL3k2KzdhMGdTQVY3VlRDZ3AvNHJ6NXNWM2VzVHV0LzhnSmFVODhBaFh4MUI2RmR3c1lOSnB5TzhPSE1KajUwTlFPUUNoS0FvY0lidThxUlBuaVhFWnR0OTI4anBNLzJyUVBpKzVZNXZxU0lRL3dyQWVUU0FES1I4bERUVzg4RXZwcnUyd1ZMblpDa05xUjloYW5aRk10azJtVUpOa3dvL1djUHg2enVXWTBWZzMyOHFCdTJTL2JrRzB5NW5zOGVTL0xrblRZNWdKRGFrVDYrRXV4RnBaTkRGVm9KTnk4UkpLMmVmclljRGpoZEYvbUVsbXdRQU43YnZLdzBOT05aWWQzcCs4dTNMTTNJTk5pV0pxeVRHV3NzemlPRWtwTDh1aUtMNmVXbEZWZUswM2hGZmhGR0xXVXlJNHVyc0xNdElteXBJYkNkWXFDcjZPWUNYVWxpeGpVRHNkcEh5RDFMRkx2ZnJWNWd4S0N4SmgyWGFHVGVnMmtXTDVLZXlTSXFuNzVKc05mVWNoU29oWExWR1VEWUVHMndyc0xGMXFFTFk0VE5KaUVEem5rKzMrWkFFY2J3bmhjSS84S2FjdWRSNVNQbEtDZUNBc0VMV2p1aW5pRFZMUE9jVUdUV2UxbE1rTXlMQlRQWE9tSy9PVk1FdHQzOU9NYW5rRjdqOE9lSUJOcGovYWl0SWxib0Y5UXdkN0Y1ZG5QWitjT2hSa09kM2NWRVVDL0Y3UVlXN0xnZVhRcGZGT2Q0amg2ZUpvZ3YvM2k0U0Y3SWl2Uk1SWGxuSkcwRDRYWG9WVTlsTWo5Y0Znd0JlSUVoS1NVY1VOWTFjdlgyYlBrR2FBeUswVFBndVJxS3ZzNWwxS2Y4MEZkNGZKdUZiOEhESkpMa2MrYmFsYmJqSFVHNEo1dVluVVJOVHI1MFZFQmgrbWpVeGlwc0MwVDBnd3JvNkp3RVNGaDB4TFltQjRXc1ZaSmV3Sjg3Zks5N3M2Nlc5MTdmampOMkMrWjF6REZuRlVObURUa1lybExjd2s3SnN0d0p2Ry81QlhOODJ0M05uUjcvbHI3Tis0aXlqN2tXQzQ3ajduV2RpYTI2dlh0SnF0WTljQ3RXcTgyNjJ2alpmRWpMWWNDVTIyRWhNdEFsZWNTVGRSSWtoemVsNlRLazJVVWR6ODZEREo5UXNzUFdVMjNwa255SjdYOHoweWdkdlQ5SktpVUY4NHc2VE9DdEdPSVZLa2Fpd29XSGxHZHRRSnFFWVFpQWRkS0huUERYalNRek1LNFVGQVJqNDRqT21DQlpWUEsya3hZcXNTbEVySkdJTkZYbUNBcndGTzdQdlkrcHZpb2JxYkhsYTBmQ3h2ZzI2bUwyUG5ucFZFTk5yb3IwbzlQZ2ZNQUtMOHJLZVBBelh1blFrQ092K0ljd1VEV0N0WitMUnVXN2hWVWJrMUthaUtOZ0V4c2dGcXlrcW1NeHhpTmhFL2xoQ3lINWVVN1JtN0ZZZjFnQ3FrV0VHMDEyVTQ1Rjh2YzhKWDdYelpOMi9rMzV2LzZ4bm0vREltZkdJdS9KdkZUb1lWdEV6OXRuWUZNUEpSU05Wa2VaVDdaT01PWU5jSHllWUNoaVBSd0hsV2VJcm96emxERmx0RlFkUHNheDNZTXQ3MDJUMmI3MHBOQkRWVUdzOXp0cHprYkdOcjZhRXhheXA1dm5VQnJiZnJoVFpOcHlSV1M5L0RsUVFuR0JGb0dZSmltL3E4RVdmOUtrUFUzSnNnU3lodXR2MDM0YWN2UVVwNjZqUkFyU2ZnS05RU1dpbEFmcHRpWW9FVDRSeFRqUzR3SHUvVjlPdUtVbzhRRE8yVURVVFhZdG0xcVdleGVCUld0SnkwenFZMUJ0dzEzQ3JQSnJjeE84d0FhMCtVelJUTmRUZGhLL1dsMmJFL3RQL0xiOUF3YjF0bnZEOVFwOFViRlg5WVZMMi82NGdsMHFYQ1pFRFFXcmljT2pkVktCS094YkpHSU9CaUdyVTRmYWxvdmtuNTU5VkR0aEhYU3MwbjdndXcwRlIxVjkzbnhKaHM5VFZ1eDdoOWFYRE5sYVZOQnA4VnkwMUZaT0JsdktSanluU3ExdlcrVkoxUmN1THV0c3dKMWFrekhWN3FIaTlPaGxsNEtLcUJjSEtpMWJkMGNoaVpTZ3cwOWliZzhzYit0U1p1TTNpMTBqaXlzZWw5ZEcxZktIdlR0d1VzNys0S1NsMk8rSk9vdm40UUM0WXdpV292c3FCeUVxUzRNekNNd09TSlRvVGRINTh2TWlmSWl0Vy9Fb0k0TDZSNUwxM2Zsb1p6LzFHa2d4WFROK1JUTmQyeXZDVVllaWhsWjV0eU9LTnhVQlo3R0RKUU5kejkvUzV4VEs0WWJxSW4zMTE0NUtCd1ZMY0N4ajVSZUNkZE02aDJXT2hJdjA3dU5xSjBrYkxXM0RvcVYrcU11TmFZSXczV3NEK2V2VHkrdlQ4N09yWVk3QjJrS2RGbHdJL3JXM09KWGJFdklzdkhJS21GNS9RMXcxVWFrdEZ0b3hTQU9HeTVzVStsRjRsRlpSQjQ3L1cvREd4amRub0JvT3pzN0laNGFvY0hOZFZ1TzA4cXRib3dveXRsZkpFWDVmMmNkVXM0LzVRQUEiCiAgICB9CiAgfSwKICAibmF0aXZlX2V4ZWN1dGlvbiI6IGZhbHNlLAogICJjYXNlX2V2aWRlbmNlIjogewogICAgImFydGlmYWN0LWNvbXBhcmlzb24uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJhMWM1ZDllMjQ5ZGMwMDYwMDQ0OTk5ODM2MGZhZjZlOGRhMDIwNmI1NjhjNzZkMTU1NjAyYzQ2NDVmYTVmY2U0IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDI2OTcsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBOFZXU2EvYlJneSs1MWNJUHNmMjdFdHlUUXNVS0lvZUN2UlFCQUpuaHVNSWJ5eTVHdGt2VHBEL1hzcmJjNElzVFhxb0FjTVdoeUkvOHVNeTc1ODF6U0pBeGJiYndnYmJPUFM1MjdSZFdyeG9GdlVOQ0cxZVpLa1NDaTZ0anlwcmhzQ2s0UkY0Y3NLYjZOQ0s3SjFYM2tNU3pqRnVndU9DMGJNRlZOYjZ4ZlBaU1lRK2RRa21iTXNRb1h6Rm54RWlZSXdTUS9JMkJtT0NRUnVseVZLSDdDVUhtekFtcjR3S1Jqdk51WkNSeCtpaTl5NVpIVDcxTitLbXE5TjRiRk8zd1RxUnAzNWZ5dk5iNUFXT09OWjJOMkxGOFlBekZIODY3Zkh4Y2tnaWNSSmh6aGluN2tCVzkvM1ViZThpUUhxbXdFaDFHdmQ0MGg3aDhYb2VqaFBXajdReWxIcFdJN2NkbE80ZFROM1F0LzB3NFp5TlgzRUQ4ZGpNRUJ0OHV5dGQ3S1p5Yks3S21CcmM3cWJqK21SblBZZlVKTXl3TDFOOTJkeWliMTROOFFISFpZVURObWNzemJEdHB0cmczL3Z1QUlVQU5RLzk4TmpmM2w0MVA3MkZPRFd4REpXOFhNUk5QNHpiRzhwbTZNdnhaWE5KUXBNN0xLazIrejYrZ1g2RGFYWG1vRURBVXR1QWVSam5tTjZUa01URHVGa05PK3dKemdSZFQvbGRuYXBoTmNlNnVyRjByUWViZFRReENCOTl0Z3lZTUNHalpGUjNYaXBoVlVyUmVHRzRzU1ptazVRMTJmR1VwS0F5VE56S0U1YXZ1UjN4MEZVS2F2WXBVUVh5UlNZUUFWdzBTaW9kdGRGVXlVRURWVmtNZ1J0M05WcUhTSFNzNHJBdnd6YVFxWUp6RURXU3A5bmVMNy85L0dyNTUrOUx4cGhmL3NIVWVyY2ZkNVRYNVhEQWtZcHJlZUJmTUZXSC9SaHh0UnVJK2VQcW5JdlpvazgyOG9DS09vTjduN2pDekFBUWtzNU9lODJ6MG9FUlNsSnpqSUhOQ2IwUTlMYlVjeXVKQlhuN2NFOFA1QW5ISDJmSFNPcE54VVIwZ2RvMEtnS1hPQkFkUXRKdnpwNXprN1FRaWp0cmxkQkJhYkNNVXlLWmN4SytpeDBmVkFoQ0U3ZmFlQWVvbFVTTERod1FDTzFGQ2p4cmwrTVBzcVBYNzBvWGxrNHp6NWZqTjRpWmdlTGI2WTZacUxWQ0k4QXBvSm5KWWdDdWt6SWVsRGFPS3BORnhieVFxQjBMekNITktxTlJDTXRFb0lGcDAvOVdDTG5yYVNKZmVyZk5YY0g2VkErVWtUWHNIdFlwckx1K1RsREthVVNlVCtjWmV1M3V2eTZTazhHQ2wyam1qeExzNmVIemZ4ZEdPb2tnSFROQ0VhV0pSajBHUkJjRHRYcHdHTUZJY0FqYUcwcXhwVDBnYkRKVVo4RTdHdnRzY1RIMSttcHpjYTNyLzRZcmE4K3NFZHdieXhrS0hSblNHQklKbUZFaVFuS2dFekZObWZkRUxNeXNneUcrVmVLa3kvZ04xK24zdzRYaWZSM1hjMkxwKzQ0SVh2R1ZYSW52emFxWDMwUVBIRVZrTXNXRUtRQzFERFBBR01IT3dWaGd5QUtuVlNxOU04NHdqQ3pxaUliV3JhTmRyMURiSDhycXY4QkYrOTBGbjNKVUdvUE5JS2l6T2NzWmlHYWhyYlBTZVpaUXkrQllSazlUWEZ0cGcvTE0yS2l6K0NTcnQwcE8zVWo3ZWFCbHY4VUphQUVDTGVEdERzWlR6ZDRXODVNYU5Way90Zk5vbzNQSjVXZVBiOXYwc3pvM1R3bkxCRE9KWnl3MUROdDJCL0hoZk5HNTg2UFVseFR1UGQxcnpldjJ5ZjY1aHVaWmRVZkU0bFJEeTVIZHFMaEtMalg0K3FuZjZiTFFWdkoxQWxSbzJsTFRrK04rTS9jOS8wVG42U1pGdlYrUjlsWTNIZTlmWU9lRWhMYjJzS3R2aHFtdHNNWDdmUGR3dWpNOUR1TkRHU0JkUjgzMUZ2VHN3N04vQUZoa2F1ZUpDZ0FBIgogICAgfSwKICAgICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIjogewogICAgICAic2hhMjU2IjogIjQ4N2Y4MzRjYzg2ZGNiYzdhMDRjMjM5MmJkZTA3MmVjYWY4N2RjMTE2YjRiYWExNmMzNWViOWM1OTlhZDVjOTUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogODI2OCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMVpXMVBiT0JSKzUxY3dmc2JFTWVUR3ZpekRyY3hDbWdIYW5aMGRwcVBJeDRsQXRyeVNISnAyK08rVjVJVDRJdHNwdld3ZnlndFlPanFYNzF3bFB1L3M3am9vSWUrQkM4Smk1MGgvSmFLejZEcDdldXVSeElGZVBJV0VzbVVFc2N6V0k1QW9RQktwdmMvcVd6T0pZeWFSVkV6RXk2SmU1ak9HZzMzOUsrSHNZWit3anVRSUs3NHpseGpXSkE0Wmp5QndBOEJFSzNGa05OaElQS3BRZENvclJpc2pzTEsxajFsS1dUVGRGd3dUUkRzb2lJaklHY3ZaQW9JL2RpL0g1NmZ1M3hQWDg3ekJMazZsV3VXT1lmcWM4WFppRklGVllTZEhJQktFbTZuU3pHelVHdzZoNnlGMzVBVytlemdjSHJpalFRL2NmaEFNcDhNUU1CcjVXcjZSN29nRThBWnJwZk9NZ3hDbmdBSktZcmdGek9KQTQ5NzN2SlVZcnZBakdPbkY3c3ZTd21qeWhnakorUEtLUkVUcTdmVVJBUlN3MnNuN0wwSVN6Ni9RRkdqZXJTWm9rdjNIZEFvOEJnbEMrN1VlbjlXcDV3S2NRc1dCaE5reUwwMHVFOFBpQmpBSHRWdDBnSVFvb1hvMXIxODVFQnVDOFFmRlIwNUZJNEZXMGJMaWhWbVVzRmluMUZIbUczaHk5cHFQdEVLOEJqbW5VVEYyTXNaSy9ZaWxzYndGdmlBWWpqSFdYM2ZzRWJUVklhSUNjZ2FwNEpKSWhSblhSdjJiMHpCdm9LS0RlRkVpcUJJVk1rbGordUd2czM5T2ppZG5IeTV2YjkrZDNSUVFXSkV2RUUwTi9WektSQngxT28rNDVEU25kT2g1N3l1Vk9Iazd2anUrSEovZDZML09MeThhMVZDZWkwTXlTN21Kc0E1WDBKRUk5aDlFM2c5RmIyUS85MFd1RG9uUXpIQlUzcHpCQXl1SDR1cXpXdTcrRkhQazkvcEhZVTlWa2ZCdzFKOTJRNzgvQ0x3QkR2QW83UG5lRVBxaEgvcUgzWEJ3T0IwY2pMQi9NUElQcDk3QndQTVZsKzRCNnFrbHg2YlFKS1Ywd2xUeFdCcDR3akdURTFWdDFyVS9SMDdKQW1KVmh5YWNUYUVVOElZZ1JJU21ITzdtNnZ5Y1VWMzREc3JJR3E5ZWdMU2MxNlVPeWJuQmZBNkl5dmtubTJNU3h1VTZQR3o3QXM4aDgvV2J1N3RKYTZ3NENYRENnazFSWFJmSVBNc1VZMlY0M3JCdWhVaEhCVXZsaHBHLzB5QzR0YjhVN0JYYlpkcEw2azR5akliZTBOdXJ6NFU2QkZVUmxBd3pxbW51VGlhdlNUZUxKdDBHVFo0WWY2UU1CYS9ScGpIblZGOEp5TytnL1Y1QnExaXhsQ3UyTmlTcG5qQ0VIU09jcE5xNG51ZEZOdk1qaU5TSW9pbFVuYnNtN2ZaeitDOEYwU2F0UlZiLzBDS3EwWDRCT09WRUxrOVVlTU5IV3p3NGlGTDJOT0ZrUVNqTTRFeGdSRTNqcUhiYXRiSW9RVk5DaVNSUVkwN0FXV0lwQUdiditPcktxYXpmYjRFZkN0N0dkSG5EbUR4WG1vcWxVUE9XRWlKNUNzMFFTTVJsbW54TlBuWDkzd2xWZzZZRUhwSFlCTWkxNHEzNzhkcjRBQmFkM0xaTDJjeHBQLzNTeWJWWHkvUUxSdE1JcnZYMHQyVkhNWFBqUmlVOWVqZVVjYlAvaW01UmxLSW1yRTViVnl5SVhZMWszeTVaUmttVEhMMzl6VElLMDJTVHRGYkNkUTdic3ZZMW1pMFFOOWdMZlIyVG91cURUcEpGVjVQU3F2eXBtOUl2b1MxS0F5S2JsSzBsK1BtNmJpNStUUXB2cUZ5VWtKK2grWG93Y3puTWlMckROenAvSytLZmorMXFWckNINVZwM1FhVFVyMVNOeEMyNjc5VDE0TTFPYmo1MWdsaHN5dlVKVGJYVWM4SkZQaVQxeEtVYjdvYndtRDZoWlQ1S1RLc0xVcFYyNDNVWmhoQ2xWTG92R3dYcXhoSEdDY1VGWjJsaU9xRG5GZnJiZXU5a2p1SjhwM2tiNnluaW1nanplbFI4MUZDZU9XN2dhTGJIekRCWWdWcmRmeWVBVzA4clUvU3JpaHBGUXQzc3lyUEU1bjBwNncrbkdTeU8xVEhQQllqeTd5VFc5NW9TelJyNUtsMnVSVjl3aEdGU21qTU9lem5pckQrM3ZMc1VtbTM1cnFnZmRsVWN4Zks5WVhWQ0VZbHNVeHJXRytPNks2aGJiZVQ1NEM0a2FmbFZLRXJrOHBSd20xQWxncVJhSGVjNm04R3JJeGI1Qk91SFNxZGJ1UW5VM2FFdEE4QXZwMk5wZUdqU0wrdjgxeWl4S2JoSzdtc1dhTGIrcURwYjE3NHN1Q3VjM0Q3Mi9lNXdNQXk4WG5jNzdZdkR5SloyTkE0RitsNy9BRmhDc0lXVncySFZEUzhYMGVxOTZMUHRwaVNzcjU4MjB0MXNOSUE0ZTlzUEtYeDBVU3JubHBhUXhkUEhoR1RJYlBMNjRPVnR2dlo2STQwS0Zwcm5uYmFWKzFmbFp0UGM0MlQ5ODNXK0lPcnUrQldlZUlUbHhuNGJTRzBRVmVDb1JvZXhwcjdBWlJCOEU0cU53OWl2SGQyMmdQMis4YnEzbmRaTmxhNDF0dXI1RnVNTW8zM01aVTN5Rml4Y1VkWVFQbHZYNzJ0UXk0ZUp5OVY4NDlaei8xRUovOE1hU1hYUzM2cUxOQjdiSnVmYXB2VC9vWXBocWhxRm1yVXp3WTNWckVqNmlxckdFcDJ6aU5hK0piYVZ2U3ArOVhHMVU0NjkxVDkwOVgrcGQ1NTN2Z0NEQjhiblRDQUFBQT09IgogICAgfSwKICAgICJjYW5kaWRhdGUtcnVudGltZS5qc29uIjogewogICAgICAic2hhMjU2IjogImQ1OGU2MGJkYzY5NDU4ZmU0MmFmODI0OGUwMmFjZDkyNGIzYjYwNWM4Mjg4NzczNTJhN2Q5YTM5NTNlOTAxMjQiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNTI5MSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E2MVl5NDdjeUJHOCt5c0VuZDJOZWo5OHNxK0dBUnRZQXo0U1dWbFpFajM5V3JKYjJ0SEMvKzRvc3RuVHM2dGQrR0JCQWtaRk1pb3JIeEZSOC9QSDIxZy8vdW1EVmtycFAzNzQrT25kL3k3bnc4aXZ3L3laakE5WS81aHJaRjNFY1FrNjU2cWRORVVrVkgxTFBudmRuQytLdWVDMXBCVEZWaVViZzYrdEQ2RUU4L0VOOUhpdTBpSFZPVGozdEw3R283QkFsOHZReG9PODdmL3p4MkVZVCtOMUdQYVgxK1hqMXFTSWNxbVFUMVlpdHJBdEtFbk51Wnk5cXV4YmRaa2FpN0U1MmFRYmFXZEZKRmtuT3ZkOWgrRkk0K2tCYVF2ZUNMR1JxUzQyYnFwVVpZMmtrRjFXem5rVm82ZmFZckFVSkxRc0xxWEViRm1zMUd6S3h6WHk2ZnlGRGdNZlJqbGQ3OGcrc0ZHNlZySStjWEZGbXRha2ZjVit1cFNRZkRCY2tUQ3hzVGhLU1pXbWtUNGZTWkpCeHQ4aGY3NWVMM2ZjMm9nWUI1T2FGS21RaUdLaXhDbVdwR3JKdVNEQVNLbXhqU0dLRk00MW1LQXBKK0JidXlTZmJuWGM0bFFCSVFaOFlKM1hpS1J3SkljMVUxc0kxV2VidlhHc293bytsUlNSbDF3TXVVaTZhTVhWZGp5bTAvazBNaDNHYjdJZFg4ZFNPSlNrbVpQTndZYVNZd3BXU3BWV0xjSzIwVmV0bXN2YW82eTVOS01US3BHelFicjlBbnMrWFZFc21UYk01bFExMW1nUjI3d0owUnFibE1hZklORnBOSVJCYXFLWXBIVnVhT3RXbUZISFdveEsrTGxqMW5HK25PZnhPcDVQRzJxdFZXYzJ6cm1XSkhBdVJlRWI1WlR6M0xReGtaQWE3d1JqMGxRc2FMbUluWDFwU2FYY1VrZVZMMk9WRTIrSDF5RUxVa2ZzclRSdkhZVmFrdlVGWjBZaGpJNlIwY3NGZ0VVNW95emF6RGdqUnZ1TWdobmRJWHZKaCt0RUo4UTdiY1dTU2xrcGxESWhYZUpSaHBvMFVoZElBRlYxWldxWlVIK3F0ayt0VjdhcW9JcUVFS3pOdEFEZnl2QjFHcTlTaUYvdXVEbVZ6RVJKWlhRdG8waEp1S0Zic0JrcFlzbko0U2d4SUkxZXVWWlZvdUR3by9iQjYweExFNHdvMXN1V0FZcldvdW54UWNtQ21JdmhaTkJMU2xNZnlaUUkvYTRxOG9GQ0dhMHNEbFM1OXpVVEVwTGVBSWR0Q0xaeUdSemVCb3kxWTgraCtZQk1OTjFxNWhpUkR6STZnSjlhU2lpZFpJdDZnUUdzTUdGMk9UNkZPbFE1akY5a2VyMGp1eGkxTnlBMGRLdnhGWit5UlVjb2NKdG5XNk4yNUgyT3ZvK25Ka1RMeUhuRFNTdjFuK29UTW5KOEI4V0hWQ3ZvUXNlc3dTRUozVjFVZENwSWN6VjZkQ2pZakV4TWpRcjRnb3JGUEt1QU9SVDhlMDdFTE5PWDhkRmpHWGsxeVZNMG5qR1owVWN0aGtKbUtkNWoxZ1BHajhrSjI2eURpb1J6R1RTMXoxV1FFNzBBSDhZbS9NcUhEVk1NTW9jNU4wazhXTXFrbExsaUlxaUpZb21BYzFodTFtdnZyWExNc1dJMUJYWU9MOHQ3eklIUHh5T2Q2bndIajZCc0JzZlVHcVZaVzFseHE5R3dSbWNLSWZHcGdyMUJ0RTBJM1JGU05SSE40UVBsb2hEU2UvQm5SblFsZTJkMDlRNWQzcFFEejZyaW1nTWJaRmJhdW14UkpvcFJHV09wT0o4aU9OZnJ2b1lqdkFlZU1Ndnk5UTVkUWcwWjA4UG9NaXVtT1kyUjBnb25nU0JxU0NDSW9nVkdPVWxwbEJYbHhVeUNieE9EVkUxK0QvMitnS2F6djBuS1FGY0RFaTZJcHJoVUk5cS82MDlrWUFXTnFhMlUwRGl0R1pNc1pSelhvK3pxUGZadDNMcllKVUhGTTJyT0xrVkJHTlZWY0VPMGl0QU5FRVlJWiszTUJtNnNyVFVVMFJMK0ZFaVBXdWJqS01mekhTN2txRHppc1dpbFVBWGxjcGFNNnlXajVrWDdIbmluY3Zib0xXb2hhd2lEQ3g3aWs0cGZrbnNlSzI5d3hUaU1TL1lXQW9LVGE2UkpveXRpUk5WUk1TUlRaNUJhVFpoa0hiZ0xEUnBqd2NWZi8yWWR0akg0ZjNpVVNXWUlOejJMZ3NPWm1DdFlHNFBKVHVQb1J2V0pxa1ZFZ2ZZTEFLWGdQd1JCN29xR2RuSWV2WXdaOW1xRlBYK1JFNzNKUWhWbElJbVlUWU1wSzVRUmNvME9ZNEJtcjRwOGpTM3BMa0hpVElUTXRBVEtBblVhWktxbHBUU1Q4SGw2ekJUWUJKWFdYcWNNRmtEaVE5TE9rVlV4VmVWalFLNXRGK3lNM0tFZFVCVURna0QvaGtZSi9MNGkvbmlUK2ZwUVdhaSthSUs0a1crb2xrUEp4VGtGK2tNOVUwOEVlRDNxNGlIVE1CZUdRQ29KNXhkd21MV1VWc3luSWFvT0pVUVZPZ3NIVHpsSGVJR0NXSVM3VXdFbit5SnBUVVJYWHc4L0FFT2dlc2doSlZrQWI2ZnJlSHlZQyt1ekExNUZCQjYrQWJ3Q3U1TmpEZzB5QWhwSkh2NUhaY2lncXVKcWNLZ1FTSlVyT05EeTBrWHo5YWt5d1NCRkpRWm9JaGpUUU45QmROSEFRelI0VEN1QWhwUERHSUdSY2pRMVF3bllRWUJoQWdQYzRBcDRuaDdrakRHQlBTckNjR1JvNUl3cXFBZ2NBa05yTmlCODVXdHpoQm1FMEpobUk0SnMyaUlQME0zRkFEd211aldGZkZlT2FQT3V2Q1YxNVV4ZGlLUHFyUWM2cUVnOG9iaVlkc1dRcU9DWXdKd1FiVjVJNkt0c2dsUVc4VVkxU0luVFNRaXVFQVVPc0JZRktYRG9IQnczd2tlQ0t4dEVIaHpkS2tnVXpSclJsd3ZhZVhvNW5LbHVrRkFBS2EweldOTEpvR2xLZ1pGcnRkVFFsTUFKZXFBR2NHWEdVVUFVc0dvYWdscHo3MXJJeG44V3Ivc3lYT0JJNkpQTWkva0grUFh6K2JSRDZhdGM1b1V5bFFud1pucVBDNHRhMlpVT0Z6akVYYUZaRHZSNnZsMFhWNytQZTdPYjlIZGYyRlc2MG0rODlTS3Y2MGI3c0p2VTA0TkpEZ0tFOVRQajlucDdmSG5aWGMvbnc3dytVWS92eW0xK0xlZWZGamU0dDNHdmRwUFZUdzkyWlR6Tm4zLzltR25ITWwzSEJqdDlsYmRUQjcxdCtZczNkZ1g1T2NoM1h2eFV5M0hkd0d4UjRYeTM2M2lZZDRleHpPdXpzTGU3YWJrVnZFekY3K0M1Mi9vQUlabkg4dHY3eGp5U2hrV2MvNWNueDJyNVp1NFkrN1Nid24wVmZtQ1FhVnFmdUxoM2J4L3c5SHE1bnUwSzVmdEgyNVBXeG0zMWFWczRvc01qeXUzVkU5K21XZWF2eTBEdnczQlo4dUgxVTJDbitiQ1dWL1VLbXZ2cWhVNXkrTDNQNXZud3ZkaXU0M1RoZXduMy9pMjZaZjBways4ZTN0WXJMMkp3cHFkK1c0Y1J2WjZYQ3huZU4vZmdqcmY1ZnM2bEl4OXJ1NldLdjN4eVQ4QU9YSDRjVCsyOE5QMXZIV3VDUmg3UTJvdU1ZTXN0bEpsN05oNlI1MjM1eHdPdURJOCt3SkhzbzRCSXovM3UrK3Qrdm43YnhxM3Z6L2N2ZnZyMlFFSkcrOTdMOGpjc2Joc3YxZDZJQVlSenFFKy9tY0I5TmtBQ1lFVmNEaVlXaWhvS2lhc0ZGaEpJMFFoa0tzRG13bWU3MURXdndqNDRiWXBFcFl6Y1IzZm84Lzc4QzRmN3RGZjVJb2MvSDhiNU91L1hKV1RxOXRQK1BIM2E0VElIT1hOcVA4MjB2OXpLbmU2VmdUbkFsWnVhZGpuQml1WUNrMWtMZEZaREpsTG8wVlZUb2RpNFdVcUFQd2Y1TnR5eVljK2VpT2IzdHNhVlZ6TWs1WGxyamVzUXJnTGRFVUpaREE2Q0t4OWswRnJqb0pFTnJvQmhLelJFTEtMaUVWWXVXRFlsQ29DVTR2OXhhOFRyUlh4KzN0ckE3enJZRHlpcWdoa0FuTThCTjFFRUE2K0p1NVRHdFF6WjFoRTZBdHNJbjRicktlNkZNUHE0SHJhbHVpdko0eXAya1ZPL1FvOTM5dS85T3gybElpb2VaeGl6ZFRRd3VUM2lmN3orOVYvL1hLZEkrLzFLbkF1RmZKcm84bm4xQ0tvUCtmTGt6aUY0ZDEyNHZQS0ZNQ25UbmJvV1NhUHhDaHY0NEhHelJOY2Jjcmg3andFVHVnV3lOT2pXc2YyaWMrbS91ZnJlQzNqKzdhbHhoUmszNHRwZ2VhWDBYenRscUwxcS9kb2JERlF5MmdTWkZJOGtxUVlmRDI4VSt5K0lNaXhBdHpycnIwV08zYkgycmJBbHczYk1VTTRsZE5mNWdRNXI2b1kxZW1tM21SYXlzSTgwRGYvK2VoMjJJdy96OGZ6U2VlQTYzYVRiZFpSaVhubm43L2p4aHgvKzltRWh2Zy9HZi9qTDdkT0hQc2dMM2NpMUc0R0JtSUVpbmRVYU51b1FmZVk3K1F3ZDY5MlRib3JIS3ROd25nYSt3VE1kOFhOL2ZiZzlRZnpuRC84RmUvSHo3cXNVQUFBPSIKICAgIH0sCiAgICAiY2hhbmdlX2d1YXJkLnB5IjogewogICAgICAic2hhMjU2IjogImIzZWUyYjg5ZGUxNGUyMDRlZmVkZDAxNmQzOTAwYjZlMzFmY2M5ZjBlYTBmMzEyNWQzYTQ3OTRkOTM4Y2EyMDEiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMzE1MywKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E2VlgzMC9qT0JCKzcxL2g0eVZCS3FWTmY4SUo2WFpoVjlxSFJhczdqaGVFS3NlZXRBYkh0bXdIVWEzNDMyK2NPRzFwQzhmZDlpV09NeDUvTTkvTVovZm82T2hQb1B4RUs3a2k4RXlaSjFkZ3BGNlZvRHloaWhQS1MrR2MwSXJrdWxLY1dnSHVkNkkwS1N0UGZaaW5sVjlxSy95cWQzUjAxQkdsMGRZVHBzMnFIUytwVzBxUnQ2OFBUcXRPNS9PbnY3NlFDNUlVMmk3Z1FmZVlycVF1ODU3VFRGQjVHbDlQaFVLREV2Z0pCeVlDakQvY2ttYmp5ZmwwTW1URHlhaWZzVmtPVThaR2JKRHpBWjBNSnRrUW4wVnhOaGhNK0RqTFJvUFpkRHJLeHZsb1RLZjl3WXl4L213MnBFbm44dFAxMWJlclR6ZS9CS01ZajJlelluUTJ5UWRGTnBueS9wUnhkbGFNcy80TUprVlc0UGJGZEpSUGgyY3NHNTVsbzd3L25QWXo5RElZMGpGT0paMU9oME5CT0JoUUhCUmJ6WTNWRDhCQ2FsT21WU0VXSlRWZFlwN1k4WG1INEU4VVpQT2h0d0NmSm85QzhlU1kvSWFCWE5aZnZsT1RFRzNKanAwb0EydTVCRFFXRGxuMDVNWldVTHR0Zjl1cjdwSVNQT1hVMCtUK0xsRzBCR2NvZytTKzNtb3ZLY2wvY1BTV2p4TmJLUzlLT0ptd0xFUHFacncvSHV3NWRoak5UbXkxOHk3NStYSmNKK0puRWgzMVFyMGxMMjlDYTFiblFsRzd1Z28ram1PZXc4OVM0WURjVWxuQkYydTFUWk5Ld2JOQmVvQ1RkVFpKM0NvNkpRS0o5TmdReWZHYU1LUnZqNm9mWUoxd0htMXZ0YXhLdUpSVWxIdWg0c3BmcGVHZ2l6Y0pxSTBPdUdqd08rejZ5aldKYm1ZTTlqZkVrRDRIamRoYkhPcHM0d0N6dDczOHFZNzlPaUQ2Y09acktTSS9iaThKcTV6WHZNMTB6UDhGT2RSRDJ5WTlvMDBzbWUzcHU0UlJwWlZnVk03RHgzblQ1WmlxaTFiRmVzMVVHcXFxeDZ2U3VIU05lYXZjbTB4M2lVUEZtei9DeWwyRVJzTjNNTlJTcjYyN1NKTXU1aUU1eDdCNzJQaWFRNHFqSlR4enNRRG4wd2FZQlY5WmhlVzhkcDZjeDQxd01XWVZYN2VpRFRMUnpNOGJYczViVWw2aTByQWxzTWY1V205UXpuZGtKb0NrRXZoR2JqNGtUb0gvWnVGN0pPNTBDaFpIWUxGdG1OTklKNEtrYWdIWUtCSDAxclpQd1Z2RVZvK1JtM0RhOURpQUNZTm9zVEZveUY0WDdyVlc4U3RXUGtGdWlGQUVrWUhUbFdWd0c3b1Ntd2l6dUFBRnRqN2t3aHV6VUk5dkVEODZLMDJZTEttaUNQU3JBTWxkc2xXLzljN2JYVmVqd04zZUJQQlk1UmlpN0lXblZlREI5WVErbGRUNUUycU1GTmlqVGRhcURTYStQcXgzbGxsNGFyVGdYVWgxQTFLRi9WbDdiTnY2QU5KWWhyV0xWNFhFS210eCt6USs5NHRudTJJYW13K1dTbU5CcEhnQzh2ZTNxNDFveC9qM2lxUUJGQzRzSGtVaWJRYzdrTllpc2xzMjBhcVZBMDhGc3UvUXJGMXgxMmdYNnFlSDBranFJWXpidWMyUzVMNk5YVUxkSm5HK2puc1E0NGh6ZC8xL2tlUGtnTDBvc2VhYUJlRWE5VkhSUkRtUTZHVGpiZmVnZW1PYkM3SytLaDBndFUxekhWMjcyWHVRTmpmS1NPQU9yVG1zTktxN1h3S3FKeDZ1TlF4aWhGb1Q3UzFWTHR3bDU5aTBsZlFwUEFzL0R3cmFKYnJ5cHZKdCtXM2RPTU83dDZ1ZGRzRGdhaVdYbW5LWHhzV3hUaGdZVDlJTjlDNjVXWmxtdUgxUXRRSk5wWnpYSmVqbWhqcUh5dnVWU29lUVVGcG91SU9jQjNweFY4RTNFWkFtZ25nL3djeXVRd25wN0xlbko1YUNRczFSREJwMTZ4SXVHRFlTZm00a3J1bmtIUVN2TG5uL0U3RmQvejB3RmdvcEZzdUF1YWdjOEFqNmxUVDhBMU1KRXdsUkRBQUEiCiAgICB9LAogICAgImNoZWNrX2luc3RhbGxlZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJhMzRhNTFiZTljOWYyYjE2YTA2YTg4MTczYjVjNmM0OTJjOTk1N2ZlMDIxY2Y0MTJhODZhMTczNzczMDY0MGFkIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE5MTIsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNFZWUzIvak5oQysrMWVvSjBwZVdwc04ycURRZ29kdDBCN1RvdlV0TUFSYUdzVmNTeVJMVWs3Y3dQOTlaNmlIdFVIYVhnUStoc09aNzBHcHpob1hrc3JZTS8vcWplWkJkYkJxbk9tU1dnYWdXYUtHbUdrZVEvNHhlZ3hUdWpHdWc3cXNvVkplR1oxYjA2cnFQQjM3STg3dVd3VTY4UHZmSDdaL2ZybmZjdC92T3hVQ0hWTlA0TVBLS2kyWVA4amJuKzRLOW9IdDJmcnV4NVdEdjhVclV6VXJtT3JrRTJ4czc2enhzR25VUytnZE1NNENhS2tEQmd5RHdyWXlVRUc0aFhkOGhRcjN4aFQrck1NQlc2am8yTmtDTFlFN3Flby84MXc0YytCTjd6QnN5dFJCWjRwRkRVTXlXcVZyeno1QVJ5V1B5R3dtWlA3bkdsa0ZDaXJ3dmllRk9SekdWMFlIZUtFZUxwZFYxVXJ2azYyVDJoTzB4U3Fwb1VrUXBCNFJURDIwRFY5TDkrVDVlbjE4cGtHR0lZazJ6NElveSttVFpwOFRIMlJuUlN1N2ZTMlRVRXk4NWtRbkRlSitHbWFlOHo1VVdhNjhvVUpsU0ROTXVoZXY2eldwSnE4QkxBM1MxMk9CcFR3ZWR3bkdKVWNVUnBKTy9WN0ptTnRjd0hwdE03dGt0QjRiR3BWQkxNMnlBSkpGVERhcTUyM3NXMTJsR0pCZHNHRFZKQVJRUGlyb0I4RysvUExYcnc5YlZ1d2YyYmpJZG1JWmc2ZHE4Vlk3U3pLcGFvZnRsQ2R3Y2FtWTlUMDNRYWNKRmtxejR3eWFKa3FTeWJZMXo1Z0RBYTBPV081Z21tc21kdnEwbEhCTU1jMTJTMG5HblhtS1czdWxhNldmc0RIT1d0VkVia201UjF3bjRZVVdFMnNUeWowZ1ViZzE4STB5Mlh4QzlPSEZLa3hYeXJEWStYQjNrNkZDclRNbkluU3d3bGl5bGRVUnZZbXByNDU0djV2dkQ4eWNvZlg1cUhsM0xyMlcxaC9NdS9SWEEvMXdrbTB2ZzNGMFp3c3ZHOW1IdzhmcjdSTkY1ZEQ2M0VWMklTVTR3RENkM043YzhIcUYyRmRITHg1M0t4THRTUHdnM1ZFZm5FV3B5bnFQWmVNUXlOVVZkQkJsM2VzakprWXhQS0JSK0creTljQnYrT09PdjE3SWZFSE1ia1huaFVsWllsWllKWmJ2WThvT0lWaGZmSnlheVpYR1hsRTZmTERyVW9oR3QyZkdSekRGRmZ3UmRCRXgveDVyUVZDSHFTSVIwTWxHVkhrRUlUcGxSVDc1RnhTeUFsOGZ3QmZkNUFaZkJOT0JFS09NUDV1YzlJNjZLYXZlT2VwazhlSmdWa0JjM2pzK3RqZi9PMWdpZFkwUk00UDBUMHFVVHdoZVJDdXlsVXRyUWRjcHlpVWRhOFU3ckZONExjWG5kZDlabjZKek5WTGZ0dWl1K1Bjb3grRHlKSjNDVjhtem9nV2REa216MlRnbFBYT29mK29NMERHMytHVFZKM3orVUp6R2xaMXN4eCtlZzZiM0ZQRXp2OUpTUmxxS3Jlc0JYU2FET3VHOWFCdFY0M3RlUklGY3NOcHZ2V2ltKzNnSEFBQT0iCiAgICB9LAogICAgImZyZXNoLXNjYW4tY29udHJhY3QuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJiMTM4MDZhN2UxNDY0NDU0ZTM4MTdlMWU2MmI1NmIwZmEwN2ZlMmZkZGJkOTRkN2ZkYzUzMGUyYzNkZDllM2QyIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDk3MzMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNzFhUzQvanhoRys3NjhRNXBDVHhlbjNZd01qUk9BWVNBNkdEd1o4Q0FLaG56UDBVcVJDVXJ1ck5memZVeTJLRXNXWjBYaDN5QUN6czJEcnE2cVBWZlZWTjZuNS9kMXFkVmRzelVPNGU3KzZpM1h6RUg2ck0xZnZ5M3ByczdaMmhTbnZUNWYzUlFXQWJmQnJIMXpSRm5XVnQ0K0djUEUrY3E1VVpGcFlISW1RSGtubm5ZNmNJQlZFSkpFd0hDV3prbXBIcUNiTUlpb1JBUytZR2c1TGQ5K2RhV3hjWGNYaVlWUDRST2prWHhCaWczTTBXSytsczBKWUVhU2pJbEp1bzZiWVNQRGxOUlBNQ3E0NHhvUTY3Snh5V2lzdnVlMzkreUpHOE51QzQzL0Q5ZXJzbmpLbG1MRTJhS0lFalM1b1NvT0hBTnFoZ0JnWEVDR2k0Slh3M0Rua28vVlJSKzhNSThJRjZvN3VSKzdnQXh1SUUwRWJod2loRW5QS09lRlV3aitGRVVKTUNVY3NBL2JPRXVJaWw5Z0tvN2pCeFB1SnV3QXh2VUhSUm1FNTg1VFJnQ0NoWEhnbEJlZlVHaTQ5WkZWNGlUWGNQclBVWUJlWWp3Z0xLc1RFSFVOYUdZOG9CVUlFN2xZVG80eDJIQ3R3cGdVaTNET0pzQXBJS29lZ29OSnI1N2xJaWNFeGhvbTdxQzBEQnd3VGd4eVNoaWtkbUlpV2V3dEYxeDU1cDVobndWRUFwYVFZcXpuRmtiR0F2STU0NGs0d3hUZzJ5SHNESmZHSUNZVURKWlpEK2FHcHVLZUdSV1M4WWxFcUdqUlBCU2JXQ1MwSWd1cE1TeUV3bzhoZ2pLa1dXakpxdFE1UUVFdFFSSVI2em1CUlUrdWlCczRheXF4VHpTQytkY3h3UFhIbm91TWFQRW5taFl3Q1djWXdkZ1JTN1h6Z3FVc2xKaUZBbzB2aFBOSU1HeUk1aG50QlJsaEVKdTRJNUZOanBhQUh0RE9heDZCdEFLcWNSNG1NQlZHSm9CZ3dwdFJ5QWliVVErNmlwVlp5RXd5ZHVNT1lLd3paZ3A2MVB0REFvUmdFdzAxUmdnaGtueExvRlNBS1hSNnhEQXBCLzBBcWlkS2FJZW1uallKQTBZd2dMR25TTXZ3R09VUHhJbFFIR2loWWhZaXhnbmtjNEM0anc5cEVqSzBoRkJHTGVEQjM0TzAvVDRYZDFIVVhrd1ovNzZOMWg5MXg5cFRtRUpwMjRQQkVxN09yZFhhOXpxN1kyVFU3dTJwbjErM3N5cDFkdTdPcmQzYjl6cXRnMEREOC9tT2s0N2JlTnk1c1NtTkRPZEl4SEIyeWVoY3FrSGxuaWdxMG5CM3htVFZ0eUh6eEVOcHV0S1ZMUVdFRFo0ZzRaV0V2ZDh4aDY3RVJXRUJ4b1pxUVdnd0NKcUFiSlNVakhOUm5VbytEcEpXaVpoZ1VMNFp0d3NmakdTWEZoRzYzRmtSQ0lUSW9LWEJRSkNRUUZBQWt1Q1llSk1OVnZPd2V4M1BQK1JqVWhES2ttMmhkM2MrcWYvNzA0dy9yWDM5ZXcyVFE2MThRdi85U0ZuYXRPTko0M2VBWHZQUjV5eExSOExuTCtqd2tiNDV6RmdSSndvbVVJV2NOQmowTGJXQ1dxU2c4Y3FCL0F2MmdrSVVERlJ4b0JBK0V3QW5LWWdLRnZ4MXZWNWVGTzR6Q2FaaVYyQVlHNXlpc3RjY3NnRENoSVQyUGltc09JdWNXT1djQnBoQXlNcWFPTy9ZdlR3Y3ZjbmZ1aDNwVS9oL050aWdQeWI4cGQxQ0hnZFJQWm50TUdjMEl5L0RGdHFnK2hxcXJtOE41d3AvbmZHbXFoL1h1dzBON2FlamRvWHVzcTdSNFdmdjU4SzlmZjdsY2tnenpiRFNZQVB0K2Q5Z1Y5N3ZEYjUrNi9QUngzOUhmZlZOQUYyTnhGZS9aY0FtVjl4KytLVmh6MkhYMVEyTjJqNGZMS2tjWmVqN3FDSjZmVUc4Si8rU29mL2tJWlNSRHoxQjQrblRRSTk5Q1kzZHdPOU8wb2JrczBXZURuNEU1ZldQSVQ2Ym9tdEMyVnhFejhrek1BWm4zZ0dlRDF1MGs1SlU2NERvN2NXajJsUSs3RVJCbXZrQWE0UXdoaklpK2ptOTJIKzU3VC9jVEIvbkU3bSttY1kvZlYzWDY3eSsrYUx1bS92Nml4VzhnM0YrdjAxU0hJMXU5NzhhSmtobTVETUNuWEovWTVvTkpUL096RWh2QmxxRzU5cVl6YitGNmRMQTQ0US9oTUc2Q1RLd2I5QnJIWkpQMzBLVm9uYmJBY2Y2UzB6OUI3bVNabnczbXA3ajdzTzdxdXB4STluYm1CcHQ4Z001T3krN2JnNjAvWHhad1JtV0cxZzE5dWVsT052a0Z1aFN0dFMycTl2RmJ5UFdXUzFKMFp1MUMweFd4Y0tZTDA1a284TTIybXhqbkk1dWxpYTR0ek9BeXZJbnZ5Y2VpdEIrODNZNHJUMjVLSmFIekUyaDJLakM2OWwxUnRtczRRTGRqVGlLajY0YTlTT3JLTGgvZzg5TnJMRituRnhkamF0RDA1R1ZpZzBYZUE1ZWhOTTBXSWJjM3M3TlJmc2JPVGd6Y1E4U3ZtTUc5d1hJREdQemJMK1NxY3BsYU4rSVdJVERJQjl3U2hGeTkzWVNtR1pOaU1tT3ZwT2xrbFovQmkxQTdQa0xRY1FGNXlzTnRacjFSUG1DWElIYjEySlVDM1d6MTNpQWZjRXNRS3FxdW5BeUVtMGxLK0g0Y0xKS2Z5dTNoeWFmOWRGa1VtZGpzampzSXg2OUpjTERPcDBhTFVHM0w4ZUVXcFFNaHVjbXVMZk1CdHdTaG5hbEMrWTJaNjIzL0wzbHIyL0lyaFprc0ZsVmxWelE3ZDNWK3pQZ3J1anlhNUFOeU1WSlBOdXcveVd6WXRwZWp0OThYZnR6L2pLUmp5MDFteVNRL0k1Y2c5UkZPbi9YNDlRNU5nL09tS284bStZQ2NuZFIyMzE3TjErT2o3Y3VFRWp3ZlVJdVFXUi9QbWw5SnFUZGFqdGhwY0srNzBHelR1N2ZqcTRwdm1HVFArbGwrcWpYQitQSnFSVUUvM1pURFlKSVB5TmxKdFM3TjlNbncwTGM0blN6eUFUZy9wZitXUlJjbUozNFlVZlQycVhGa2xwL1I4NU5yeTQwcmkxQjFYL1VtNFdLMjVHdUU3c3YxSzcvVXplNVd6bnFEZk1ETlR1anpsMGtaWVhkT2Zmd3lvNU5GUGdCbnA1Uyt1THJ1OXB1SDZ3VFBCOVNyWkM1L0FEQjgyYk1CdGRSVjRVeTV1WHdoaGFQbk5scmlwVVBNU0lxRklZb2FiNE5Ca2JPSTRNZHg0NndsV0ZtTUExd0pLVzBNU2pvbStwY0VkN3U5TFl2Mk1maE4zSmRsRTNaMTA0MkNrQmlGQ2xKd3E1M2dSQk9Cc2VkR0N3M2xOckRPQkpVWUlENUVGN3h4M0JNbkJXVUlhYmdNb3lET2RFVmRiYmFtS21Kb3gwR0VOY1JSaGkzVHdsZ1pwWTdhOGVncE5ScHVDVHNTbFU5ZlJDS3NETE1zQ09rWjNJOUpNT3Y2bC94MzU2OFovL0hadUc1VmJMZjd6dGd5ck02M3VFcVpMejZHVmVFaHIwVjNXSm5Lcjg1Wi91c3FGcFV2cW9kMkJSdFJ0N0poNVI2RCs1QU1xL0JwVlZlcjJJVDJjZlhEMzdPN2QzKzgreC9OSkcrY0JTWUFBQT09IgogICAgfSwKICAgICJmcmVzaC1zY2FuLXJlY2VpcHQtdGVtcGxhdGUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI5MmJiZjhhODkxYzdlZjc4ZGY0ODQzMDkwMTIxOWQ4ZDA3MDczY2JhNzQxMTJhMzA3YTZkOGJkZWM1MDllOGRkIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDU0OSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0EyMlJ3WTdjSUF5RzcvTVVLT2QySnhBZ3NLYytSTytSTVdaTFJjSXNrRkZYVmQrOUpMT3RWbFdQL1A3eDk5ditlV0ZzaUN1ODBQRE1ocERMQzMzUFQ1ajNsRmYzVkROR1NOZjM1elZ1M2JDUy8rd0pZNDE1KzFLL2dWRDZPU2hsVEpCV094NkVudjA0bzBjYmxCZ042U0NDa0R6TTBzMlRSVEZaSWQwNHphUG9YZmdFcWt2RHB5TUdsQllEWUZ0cTNndlNVdWgrVW81azFrbm5oUEpUeDFrRHBPUkVNeGt3TU9Ha3JQQ2RyRXpBUjZlS3NHMVVqby93dWtNbHZMWVM3MjkvOG1yaE9HbEZ4bWpyVURxSkdrQUdFRTV3WlZXMzRJd2k2SkVic042QzF4d2htSm1iR2JuVjlrRUplMG9McEZUcFRpVzJ0K1hBZG1Zck81MkdMUzkxdjkwSzFmY3gvbGJvUjJ3TFpuOXNmZXR0VGhIemVrdlV5Qy9RUHVyZUxTczE4TkRnSC9reHprZnh6RlRvbGt2N1QzWEw3Ynp6Vitva2FNUmlaVjFqZmVrN0pOYjM3V2xEWXJrdzZMbnpIZEp3K1hYNURWVU5iWEFsQWdBQSIKICAgIH0sCiAgICAiZnJlc2gtc2Nhbi1yZXBvcnQtZml4dHVyZS5qc29uIjogewogICAgICAic2hhMjU2IjogIjMwNjA3MDQzYTRjYTQ0ZTQyMDI0YjYzNjU5YWUxMDk5M2MxNGM3YTA0ZTdjNTY4NTI1NWNjYWZlNGQzZmI1NWMiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTE5NDQsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBOFZhMjI3alJoSjk5MWNNOUxCUElhZnY3QjRnV0FZWkJQQWlteDBraytSaHNURDZhbk5OaVZxU3lvd21tSC9mYWw1a1dWcHpzaGJwUFBoR1NlZlU2YW82WFUzNjk2dFhyMVkvMlR1LzFyLzR1aW1xemVyTksvSlZ2UHBOM1JaQjIvYjlmdXZoNHNwV20xWVhHMS9mRkd0OTYxZmRtLzd1VysxMHErRU52OFBmY09VNnZuajlObjZpdWRPRWl6ZUNFT090cGQ0NGxWa2poQkUrczFRRXlrMVFGT3ZNZWVzVUU4d0lMam5HaEZwc3JiUktTWmR4MHpFQjh0c2loT3UzRFNEL3M3dnc2c0JBbVpSTUcrTVZrWUlHNnhXbDNnR0hzc2dqeGdXUUJPU2RGSTViaTF3d0xxamdyR1pFV0UvdHdIQUVDQzhaVDZ6d1NsdEVDTTB3cDV3VFRqUDRraGdoeEtTd3hEQ1FZQTBoTnZBTUc2RWwxNWc0ZHdib2dkZHBGRXdRaGpOSEdmV0lNTXlGazVuZ25Cck5NMGNWRVM3RENsYUJHYXF4OWN3RmhBVVY0Z3lRSVNXMVE1UkNVQVEwSzZLbFZwWmpDWEJLSU1JZHl4Q1dIbVhTSW9ORDVwUjFYTVRsd1NINE04Q2dEQU1JaG9sR0ZtV2FTZVdaQ0lZN3czQlFEamtybVdQZVVuaFRYQnB0RktjNE1PYVJVd0dmQVFvbUdjY2FPYWNoT1E0eEliR254SENvaFF4Q2NWU3pnTFNUTEdTU2VzVmp0b214UWdtQ0lFL25TUkdZVWFReHhsUUpsVEZxbFBLUUdrTlFRSVE2enVDaW9zWUdCWEVyU0xtSzJZTUlqR1dhcXpOQUd5eFhnSlV4SjdJZ2tHRU1ZMHRnMGEzelBKWnRob24zSnFPWnNBNHBoalhKT0FZOVNBdUR5QmtnZ1pWVldFcW9DR1cxNHNFcjR5RmN6a09HdE9GY0NpOFpSRTJwNFFRK1FoMnNZVERVWkZ4N1RjOEFNZVlTdzZwQkZSdm5xZWVRRm9KQkdpV0lRQjRvZ2NxQllLSHVBODY4UkZCTnNLUkVLc1ZRNXM3TEJrbElHRUU0bzg2cUFOODVnY0FnZlJwQk9Ya2pFZEZHTUljOWFBME1LeDB3TnBwUVJBemlYcTg2dkg4TkhmbVBudzU5RDM5OXA5ZEZ1WStOcjhzdEdNVUQrUTk2M1ZrSVRRbExjWS94K2FzanYvaTIyb1RpOWhpc3JxbzJORWRYNEZvN09GR3A5K0JWQjNoNHhZRTEzQlR1MkJzVzhZZEZQR0lSbjFqRUt4YnhpMFU4WXhIZldNUTdGdkdQUlR4a2ZoL3B2R1Q0N2ZQQkxleXBHY0MxNzdYeDVXTTdnS3RWZlp0V1c3ODVqQ1pOMnMwbXFkR05UMTF4NjV2MmFCREpCSVd4Z3lGaXBZRUp4REtMamNOYVlBRlZBR21IdGNmZ0FBUWFUbVlaSXh4YVY4ZkdBRStRa3VySEsvRWtlZTEvSzRaSmFnVk5ZZ3owRndWK2FFTFBvYUZoamFGeElCU3VpSU51NHpLY0ZtNWxDMTJtdHRxVjFkb0FZT21qb01aV3ZRRmUvL0RkMitUWGR3bFlqRXJlSS83NlUxbVlSSEtrY0ZMalNheW0ydFhXcHpGby83Rk4rNVhweGp2T21SY2s5bDJnREZtak1kaUNVQnJzVVFiaGtBVWJJVkErRWhra3dUMjU0SjZRREJLS0NkVEpIMkhkVm1WaDkwZWtDa3dZRzg5Z0tzUktPY3c4ZERkVXN1TkJjc1hCTGJoQjFocDRtMFJJWnlHV2FWZjRQSTZSNUtHTVBsOGQvNHpmdTRKYS9laWJYZGsrYkF5SERlYmJVamZ4OHFwcWt1Mzk3Y04yc2hvSDN0TmQ3SjIyOTVEZng1dk1vM29jOTdsMHUyL3ZxazFTN3piT2I1dkhTL013WjYrZ0FRVlNDS2NJWVVST2pPYmErUTFNNElXdlQ4bytodkx6ajk5SEFBajhqZDdldis1RGZYM0NtNS9nLzFYWDl1N3JUUlYvL01VVlRWdFhYeDl2eVk5WDhxZ2xuNURac3lheDJXQkxybmJ0azBKcG1xWGtyRFNmb2ZDTU1oK2hlM0VmcGJnUmJCRnhTWGZPZVhtRkhlL1NNdS85ZnFKTVU1SFVhQzVsa1NydklSY1NNL2psUks0aXhZeVNCc0w4QUR5N3NPMTkwbFpWMlV4b1FqTmxhYVRLUjhpNXhaaGRzemZWeHllbDRKUm1LVXBxZW5rekRWVDVBK1JDWWhKVGJKcTdGNVRVRXk0b3pPckUrbmdMcUxDNjlWL1l3d1NlcFoxT09QTWo3SVhsSlFhMnpOTC9HU29INmlYRjNqcXpucWhOTW90eFJKSjhBSnRiQU93WnU3WW9td1RtM0daQ2lVaHBVck9McFR5aXkwZlkyVVhWaGlmeHNETWhDRnFiWEM1bkpNcDd3RVdFZkNFemhNd3pIaDI0OGdQbTNISUFIUWlYMzJsN25zVzJXWUEzbjhoVWJhVXlxY1VjTW9BbkgvRVdrR0dyOVkydjZ3a3BMRXZaVENrWnlQSUQ2QktDNnYyMnJlaEVpZkc0bHZQbzZibnlFWE1CT1NFVWsxSm1hZnllSngveEZwQlJiTnB5Mm9wblNVaWs2WTE0aVZ4czdLNXVmUFBoU1NFaUZUZmJidGJnZUM0YkcwbnpVL0FsQkRibHhFRVZ4ZU1YbVVWVFUrWWozZ0l5dG5yank1Zk5Vay81RWpscW12Smx6QzBTTGVsc2JWRnY3ZFNwTHVVemVWdkhsSStJUzBuNTByZzVzNTV4NkZ4TTFHNVh1QWszWUNRTzdyUG9pVXo1QVhFQktiL0JrYkI2VWd1Q05TUXpPVnZIbEkrSWMwdFo3NXFwWGJTNzhYZTVqTWlTajJoTFNFaTZBK0RMQ09tNUZwTXo3TTVKNit0MXNRbFZkMi81NVhhZS8wbS8rQzVVZSszSzQ4YzNwem9sMVA4czVqQXk1U1BpM0ZJYUd6ZnVhZHRXY3lnWmlQSVJjSFloL3ltTDFrL2ZLWUN0Z3M1emxqdGl5dytvczB0cXlodGJGaERjUzl6N2ZXQmI4TVp2KzJueVFWZnNXVHRIZm5xZWZNU2JXOGJIVDlPRkJqTmo3TmJMZFF4RStRZzR0NUQ0YkgreTkyYzVYa2VXZkVUN3Z5VmNIZjh2eHlEby9FbDdxVGUzVHp4ckh4NWN3NHZQZWQ3K2J2KzNYOTlQeklHWXA4OWNvZTErVzd6ZTd2LzlvYzBIbU9jOWJaaTZSUUxBRjRVWHdmTWU1SG5CZFhlSWJtdTl2ZHMvM1M0b25vVXZpZktJSlIvUW5oVnVuQ0hxdFhlSjg3Yi9QNXVuaDJZNHdGOFE4aGxUM2lNK0srenQzbTQxREVMMTFJM2xpNHAwd0k4M2xKOFg0Z2RkdExWdnBoOHlrd3RpSEFueUh1aVBlTWxWL08zejFYOEJtcnZPNGFndUFBQT0iCiAgICB9LAogICAgImluc3RhbGxlZC16bGliLXByb29mLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNmFmNjJmODZmNTBhYzE4NWZhYjk0MTYzYzI0YWM4MTUwZWFkNjllNjJmOGQ4MjViMGRjZTFlNzVhNWE1N2I2OCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0OTIsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMzJRVFc3Q01CQ0Y5NXdDWlYyUzhmaWZWZTlSVmRWNDdHbFRBa0drYkVEY3ZVNmdxNnExWkd0bTN2UFRaMTlYNjNYVDcrbTlOTnQxSStQcHZYeU9MWS9uWWR5bmRocTVwNkY3dEYxL3FJWjl5WnRjdUovNjhmQThmUkJhdHhWclF4QVRYVktDem1md25EbUtSUWpGQ1FvYUpkNGtyeU9qam1nU2FBOVlVNVFtVzBmTjA0eHhHZnIwZGlUZVBXaFVxMXZjbk5SZGxYNG9VeDFmYTFQYjZ1M291T3Z5akRWOTBUQ1VYTldYUlgzWWw0dnpNZ2cvNWUraUVSdkJPMVRSZVFVRkxVT0o0akVUT0lOTU9aRE5uQWlJWXJHQm9OYmtyQXNtcStvRjFTeEJyL2U4NWp5ZHVobXU3a3Y5d0haNXhkOWtVZjlEVnBoRGlsblkySks4RU1aa0ZJZ1FrMFByZzljaFFpNVdwd0JTb3ZMYWV1MlRpZUE4VzhFSFdUMXZxOXZxRzF6TEwvcnNBUUFBIgogICAgfSwKICAgICJuYXRpdmUtcHJlZmxpZ2h0LWZ1bGwuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIxMjA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxY1dYUGJPQkorOTY5dzhYVkRHYVI0ZWwvVzZ4eVQydmdveDVtcDNhMlVDZ1JCQ1RGRmNFQlFpU2JsLzc0QVNFazhJSW4yNXBpdFpSNWltMmcyR3QyTlBvQ3YrUFhrOU5TQWFUcERDNHdlaWxrT2k4STRQK1dzeEMva0VJMEt6Rlk0bmtFdUhoczJzRDNUQXFabDNZUHczQUhubGp0eEhSRDR6bDhBT0FmQVVDOWxrSk1WRml4aE5zZXhlQytCYVZIeHl4bmxHSEhCTUlZY1JyREFNNFpobTZiQWlHSGVmeDdqUEtYckpjNzRiSTR6ek1Rc05CTVV0cXVHSmYxYXZKV25CRUc1Q0t2bUJsTXhYU29sMm5FUXcxL0ZxRng4VG43RnJLaFlpYi95NG14bHFYV0l3UWVTU1JtTWw3c1g2NUVsNWxBdVljdElzc295eXBWVVJlT3hIR0J6aXVLSi9DRVU4R2xDNkJsbkVBbnVjNU9vQ1VpV1VMYkVzUmxqUktRdzUwcVMzYnpuUFlxejNwTmFOalZsYjNDQ2FKblNaVFFwS0NJd1BZUHhraFNOWlRNcXpQelgwN2ZYcjErYXY5MmFBQUQvRkpWY1BHVkd6Zlp4dzE5WWVJbTFZaHN0a2lLSDZCaGRXU2tBdWtHQUxRRE5FTVMyNlFUQjFBeDlGNXRlSEFkUmtHQUVRN3VTbzViQ0tIS01tdG9YSzVnelhCUXZoUitrSk1Qdk1hSlpMQzNoQWJDZHJ1c2Y5Y09Wa3VvWFVuREsxdS9Ja2tnUHNYYXZGVGdWYmt0WjI2NUx5TkhpSFl4dzJqYTRjcXQ4OGxCR21HV1k0MEphZkwvT3R1ODk5aFJkQ0QvaGVMNXV6OHZYdVdKMUozZUtHTzhiaU9ObG5zcVJ0cng5cHozb3VOL05rMXJDcWxsU25SYTFla1IwbWRPczJzUEtjdml6OGVMWVN3T1V2MU4vUzdhdW4xVVRpT1VzYVpueDl5STZFb1F2RUpKLzNkTUhuRFZqMXZZRjRZb2NDcWRrY29uL2JrbmJYckNneGRtcVI2UWpiTzFFcWUzWlAxNzk4L0xpOXRYczdmdjNIMTdkZGJSU3Y3Q0NhYW5lV0hDZUYrZG5adytvWTFDajk5cmppMmNJYzNsemZYL3g5dnJWbmZ6dDlkczNSOFFSZHMwU01pK3JzSDdHaERySkVrOCtGVzBiZFMxVi9mdlk1VzJRSlp3cnZzTGVjL3lKZHAyMi9yTWZSUDlXTEtEdGV1ZStOMFZUendFMkNpTHNJK1FnSzRvdDZGbWVQUlUva3lTMExDOTJiZHV4QXQ5M2JEZHlYT2dESzBBSWlPZ0ZEYjFJdDJXYTNsSVJndFpLVWNrMTViY2lhdTB5UzNOUGlKeVZpWWgyeTJpRWUxdERrU1NRcENYRDl3dkJZMEZUR1VxbmZUMHJXNy9CWE10RGhrN0lGOG9HQzVFcytlSVB2YWx5eXZqR2NmUVVoYWdpS2cvNDVmNytkcEFmR1RsbWhNYTdZTDBMdWszR0pVSkNFYzFsV2hveTZURzA1RHRtOXNrUkFRWmtzdGI2aStFN2M3dmxieXU5QlNBQUx3N3RtdjE2bFZVVFJUU1ZWUGVYdDgvZm9CcVpySU15ZmFic0lhV2lFSHVtWEVmM3FhemF5T2prMzlmSkJVTmFNc0Zjcjk5VTFqdkZQcjJodkpTTGRRRlk2aFd5eEV0Uk5LbjJ3UFd1eURDTk1QeDdpWXZqc3g2ZDAzTzBVeDdWaWVneVNrYjQrbEpzQ2Z4Rjd6V3lNNktmYnhsWmtSVFA4YXNDd1hUVGRmUnkvRVp3bU1PSXBJUVR2SGR4TWFPNU5wQ28wWXQzN3d6TnlNZUJlb1h4VFphdTd5amxyNFhVeGJvUXRXRGQwaDFYQ29lTWwvblQ5cUpsajV2eENadVJZN1lrbVhLakt6R0RyQWsyeW9qeDZxd3hiS1owYmd4NWYxdFBTSXYzMzFqUnRGemlLMW1oUGlGL3FmcDJKNXBzR3c2bUNrWHg3TXpVbmsxVWYyZkhNM0pyK3JwZy9GWVM4R1YrZUQ1SjhJM21hbFcraDJjZFFMcUpBUG85LzF3WlY1QXBxMVNITTBYZk9tZDU1WVdIeFJjQlZYU0JmeXE1WVJrVGZsanNBeVEvUytwZGUzdFk5QjJkQ1hQeUk5ZXdLUjFOaHVlazRPeUlhd3drLzFuNnJ1dVZmYzY3V1VWQk9KZW5la2ZJajY3aTVGRHViNDYyS21vanpvcGRNcmhNU3luQmE4S0t0dlBLZWxBbStoM3BSZm9acnR1ZXBGSnJYSXJ0ZXIwSjhEaUJaY3JON1VDSC9raEJaU1RGRzBiTFhHVmNBRHJaZERONnFRNk5kNUxkWkxLU3VTS0ZPbXZySHZRSW0xMGM1S29JcnFsaTBqalg3bEo4S0REYncwRXNTNTQ0aVpJb2tjbTFYOC9zVHVPcURQU3lVcE94MTJTUEhiVTFUNUQybkdsMXFEWVcwVkUyeW9NM0RDSjgyNmwySExkRlh0VUdBMDZsV21tKzN4dkxJM1RoYlJuL1ZURzhUQ0ZaNml0SUpJZXU5N1hkcHE2TWFHK0h6aGJ2bjU4dGM3NStTWmgrZWpFWkthVm94bFhWUStpS1AvSUgzaHdDRzVhbXA5bC9qcUF0US83VUV2Y0ttV1BTVmpYSUZjejE0dFpoNG9yR2tyMGQ2cnFEdmFjdVpxMC8wME8yYlFWK0VBUFhHcjZXZG5uMHBGVWRLVkhrV2NjbmRYTTFhTlZCb0RQU3RnblhkWDVmOWQxZ29UMWgxaE9mVnFVS3pxcGJseVRGWDB4WThvVTJDVldlOXlVbmxiWjJFV0xhdUMvWjI3aHhKWWlXNnZGa3lMT1AvOVVlUDF5WjFWZUl6N2NVRVQzekUrMzBnTmM3dmVqVmQxeDVHalhwL0VpdGJuOElyWlR5VGZSN3BIejhYOWtWT2pmL0hsNytZdmdLRGtmUkFYNTRpSHZiSnhHY0lNYjNCb0hXaW12YXZhU1BlMFkrN3RWbDA1Vk1KdW93ODlBY1B5SjRmTmNFMXU5akJtZXZJNjhPM2JQSGU1Q2ZHQjlSS3RLVDZDRXFBWTdFeVRieHMrTWx6ZVhPaCttQlU5dGpJYld2MDhNZWVLTHoxZTMxL3NubWYyVlNzZWV5bUlpNmR3U29qQUNWRWFBeUFsUkdnTW9JVURrT1VFbGNFWkVTSi9RaUs3RTlQd1kraWxHWXVEWUlzSmZZaWUxWWllOUUvalJFOWpTMG5RaE1mV0FMTHRZVXV1TFJDRkFaQVNvalFHVUVxSXdBbFJHZ01nSlV4czA0QWxSR2dNb0lVQmtCS2lOQVpRU29qQUNWRWFBeUFsUkdnTW9JVUJrQktpTkFaUVNvakFDVkVhQXlBbFJHZ01vSVVQbS9CS2pVMzFDSmNZNnpXQ1R2NXNseDdhekxsck4yUUN0YnZJcTZaRnlXSEVhcVUybDJPMXNveStYVytiZERXbGpBQVZEQXMvQXNaOXVKaDBCWjlIVmdxM1A1UHJpRTVzMy9FNnZVenBzRHdDODcrRXNJTEdzYTI3SHBPbkZvT2ppd3pjaUtwMllJSWlmRUVZN3R5TzJqUEJETWFFWkV4YW8rOXpPcmJxNGx1d0FqeDdOank1NDZ2dXNFaVFzOGpIR1VXSGlLNU1jV2ZNOEpnQldpQVByQk5BQk9ETUlJSVQrTVFHTGJNUEhhU0p0OGhZWTUzOGJIYnJYZDRBLzJONjBRZzN5djErSitXMTlyY2M1WEhhUktKSFJveWhPSEZGZGxsYkh1blBGcDNoRkZVR3hHYTFQZTd6S3FHaGpkaTFXelA0bUUvanNjSk80SnpyRXBCVmNMckRnd21LRUZacElpcGNMUFRCV1pkVHc3N0JSY1N1Z3JxN0tJWVUvRGlXZFBiT0JPUW51eW9BV2ZxUE1pckw1L3hTWlpKeG5zWWZzVUtiVmJPaUVpRDRoZXVZZkRNZG96Q1pjMzY0OXB0VHJKajRQQ1E4ZUJuaDRPNGdCRXRodFpwdVZZMEhRY0t6SWpvVHN6REJKb0ozRVlSRDdxaDRNZVVzbUE2aEpMcHZMZWV1OHdqSDlqSXBIZnlHNVJ1OEI5MThiN0wyK04ya0xxRk9JTkdRQ3VxdWpGM2l5S1RmYlZldHIyRXF2eXA4YlZabzltdzBmYThFbUs3QWE5V2I2QWhXTDFkN25CakczQ2xvRm9sNkZybXpsaEdIaEJZcHNZUnNoMDRzUXhJWjVhWmhTRUNMdEI3THRnQTZPb2U1NFdlckV1ZVNxSTZsbEtFb3pXcUhHYko1R0w5TVBkdXlaMDY2bllwc204MFN3YlhDd0Q4N3NhKzZqcXJkQ0xBUExpSUxCdzRMcXhGVnR1QU1CVVBNSWh3TWswQkxabjR3NFFVemdYcjA4Y215c2FDZ0N0SWtBTGtiYmJpblV4T2lsV3FEMnBRdUJCM3Y3K25ieDNWdmZKVFRtRWEvRjdFU0pFQ1NmbXZTZVZjelEvdGVlZkEzRHUyUDlxeUNRU1VWbW9hMlhGYjkyQm5xNnpWa2FVNFJveUhOL1Q5dmJUYStacEllSEpHdXB0c2E2dkRmTzM3K0p6MzhUdjlFaFo5aHgrR29QZmxQd21lUzhOM0t2U3BSVm1NVnZQUlBtblB1V292Ry83TWNkdERUQ2pXYnFlS2JpZktPcFRWZWhzcWFxZVpoYVRKSm5oTHhYT3VEZXdxK1FRU2hJZldSaUpZSVVqTjB3UUVOSEU4NUFGckNrVXRab2JKNjdsd0FRNEFmSUN4M2VnN2R0aDZBUGJ3WWtmVlorTWxEZ1dCRlZmTUVONU9aT255UTZvRGtBMjBWeDBJSnVocWVOVlF3MzRjUU5zL0hqeUg2VldXNm5ZVWdBQSIKICAgIH0sCiAgICAibmF0aXZlLXByZWZsaWdodC5qc29uIjogewogICAgICAic2hhMjU2IjogIjNiNmI2N2EwYjRkNTFlZjc5MWU3NzViNTI4YjY0YWE1YTZmMTRlZmY2Mjk3MzdlNjdiYWVlN2UyZjZmNjA3NjIiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTg3MSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E3VlZ5MjdiT2hEZCt5c0NiMjlsVXpUMW9ML2dMZ29VU05OTk44S0lITnBNcVVkRktxaFI1Tjg3bEY5eWtnSnRjTzlPbk1lWk04UFI0Yy9GM2QwU25LdlVIdFUzWC9YZy9YSjdGNFlSUDBSWFYzc2NubEJYRU1pODVJem5TY3FTTkgxZ2NpdllOczFXbVdCbElmNWhiTXZZY2twcUlkZ25KRWhvZDZncHo0RHpSN3grNkFLcVFJQWFBdFRnc1JvUWJtTThxZ0hEYTd2RzNuV0hCdHRRN2JERmdhcDBMVVh3YkhMSCtBTmw5YzRxaUUya2t4bUdYVWVIbi9STnA5Rkd6S1dRc3N4THd4T0VXaVZDRzVFQWJ0S2tMcVhDck5SRnh2VFVTNlRUallQQ0MwUnNBc0krb2h3SnJaMDFxQTdLNFNsajR0SjNYKzQveHFCOUNMM2ZydGVtRzNiNDJLMVVON3F1cVZlK1V4YmMrblJjMjVZQ0d0U0pSbVU5TmJiYTJYQUZETlFHaG50OG1ud1JWOG04WmlyWFpabGltV1U2MVdsV01yWWhFMHFHWmlQcHJqank1UVR4ZkdwR293KzJQVS91MGxFTERmb2VwamFYcjZoY2FVekxNTXpiK2piV09MUVkwSzgwR2hoZFdQa25kVnNVeHRBMUVHNVhnZXg3QkRkTjhzTERnUThQQTdUZVJvWVB0c0dYVzFmUWxtMEYvenJqRkNDTThiNlgvMDU0aDl2aS90Q3FlUW5WTlQwTXFCKzZtZlczay9tYjZieGpRak9pYisvYW4rM2IvN0p6LzhuZVRRMHVYalJLVk4rQjk4YUZmeHJESi9NNVh2RGlYT2o1SkNIeEZpbzlrQ0NNN2FScTAvWmRkQTEwWTMya1VIV3RPMVMyZ1IxV0dsMkFlWlJ5TnFxTnRzWlUrTU9HaTZqTUhYNFBQTXVuVnBReGhVcFJHUzJ4enFSUmpOUWt6MVhLMGcxd01KazJXU3JBTUZHcXZCU0ZBRjV3S1F2R0JacWlQcW9ucVhHbm9qZzZrdEIrckJxQ0ZveXhrOGg5SDJsUlNUL1BybzNJank0ZlNCRnhkNGhNN3FPRTB1bUlhRVlTK0FFVjJqN002Qkt6VFNFbHFaOEdGRG5rUmtJdEJGZmNHRm56VFBLVTV4bXJOeG5Xc3RTbHpGV0c1YVl3TEZYSWpYd0QvTHlweHhjZzZRYzB6dTcySVlsUnEwZC8rbHZpTS9CSXowQ2NQNFhnZ0szQ3lsaUgvaXJWbnY1bTZ0UEZwK1FxL1JIOTZFbWlKN2w2cnZEWFpQSmlxd25kVHNqbnpCTzl1ZmNtVzBHckxUMVFMd3RmN0svS3hzMWJQQzkrQVVHeG01RlBCd0FBIgogICAgfSwKICAgICJwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IjogewogICAgICAic2hhMjU2IjogImRkZmUyNjE5ZjQ4NDcyMzhmZTc5ZWM3NzlhMTViMGQ4ZGY1ZDE3OGNiZWQ5ODlhYzJkNzNjMTQ4MGI1N2E3MDYiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMjg4NCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E3MVdTMi9jTmhDKzYxY1E3b0VTck5XdWpEeWFiWVFpUlozYWg5aUdFK1FTR0FSWG5PMnlsa2lWcE5iZUdQN3ZIVkxVdnVvQVBkVUhMOFVaenVPYjRUYzhPVG41S0I5QkVDNWE2Und1UGp2dTRLSmZURzYwSUZiM3BvYVNHT0Jpd2V0N3dwY09ERm1Ea1V1SnlqVlhRZ284UUc1UlkxTWt5UzM4M1lOMVJBcFFUcm9Oa1pZSVZGK0R0OVpBc3lGTG8xdmlWa0NXZytjZTE2aGJjKy9lNk41QlFUN1VydWROb3JqRGt3VDNhdDJDeFRoY2I1VC9YVXQ0bUFwcE8yMmxrMXJabkR4SXQwSk40blEzYVdBTlRReC9HMHVSWEN2MGYvSGx5ODNaYkpZVEo5R200MjJYRTd2aUhSRE1odFM2Vjg2U0JqZzZkaXNNSDEyM0tDbklsWTZPODJUUGMwNTQ3YlJCRy8yaWxkYmlGckVleEp4MG1MY0haNkhGaG1oRGVOY1p2ZVlOa1dvSkJoVEdGdnpZSWprNU9VbGsyMm5qaU1mVGh6WisvMlcxR3RlOWFScTVLTXlBOHRFdUdLTk5rbnc2LzNUTkxuK3ZLSG9SazdQWjJadHlWcGFUNzZneU1kQ0NrTnpIUFRFbFRiNmUzMzYrdkw2cXlpUkpCQ3lKTnl3TnBCaGtEOWs4SWZnbmwwUnBSOExXc09QL0RKY1d5RmUvZWU3OXB1Z09WYVRBYkhzbHNKVEh4UXNZMHl4NnNud0pMTXBZQzQ1ajJ2ekE3eGlMdEZJaG9JaldJTTZGckYyV0JaMmZ5SFhuazBGTUE4ajdiVmV2b0w3SE9MUXZPaWJCUTAvaHVqTmdVUzBuQ3J2RVlESFcrQVdpR0xPbExiU2FTVUZSOUsrMDl3SDZ0dFc4cTZvSSt4RFhFcXQ5RHh0dklLWG94SGNGelFmMThUUGJXVVduVWZ2STNiNUx0K2xHdjZoOGwva2NwWEtoYTNmYlZSVnJtaDJBU0lmTzNhVVVqbzFwUk9HZE4zbWxGZmhtUFlaOXB4VUxFQjNvQjFzRmhlSlBjQ25kdjVNMCsxRWgvYW04a2RabElZNEdWTmpLM2xmbDdPeFYyTU5TSFowWS9BWnM4Y3RuRXM2TVRqdzFrQ2NhN3dZYlN6T1BoY2tQSldNVjVoR3VuWGpzSVRiUUI1M1RRRlNUQTZLYUJLTENrcTY0WlJHWStRdG8rcHZqRWMzM2dXR0JaT2g4bS9hQjFES3NLaGpzVXZSRDV4OTVZL0g0eUIwc2NJZlprOVE5ZmlySHRocDF3NUUrUm9YbmVPRmFMbFVhZTg2WnphN0hBaC96VGhZV3pGcld5RVlCSUI4UmQvV0tSSks1dnIzODQvSXF2OUszeUNBR2FwYzdmUStLTFdVREI5Y0RNYXdPZWFxSVV5RWRiSnpTNmJxY0NxaWxyNENkMHROWUloU01iUEZyckU5VjBueUZzd1cvcWlmNkFVdWdqZndlQ0F3TDh4dHdnemVZbnU1Q1NkRTROMVBUcTZtRkdqRzAwOERHazFXL21DSjIyaUEwazlINXRKRkxxRGQxQTVOZ2dtYlAyVFlaM1lFQ2M1ekxvcGVOWUlNc1BaTGRHUDI0dWNEdWJWRDI5Snp0b1pWbU84TitVa1hyaGY5SjQvbmMwejRpVUpXdjhWNzRNWWROb2V3UCtHQ1VGajYvM2xZVkRyWHNVSk0vVkZzdFA4UFRjdmJxNTlkdjMyYS9qRVpDQy9LSGNQRzg2TTJSQmJCOTQ2cVh5ZG9QcHFMUlhOaGdJa3NPVHhWOTUwZFp1bkt1WXpGR1AzZjF3amNhQ01aZE5jNjZZcnRRK2lIZGZ2aC8zL0gyRk9nNks2VFZ2bndjc2N5SDRjSU83aVRENTRoV3VHN1l0cXhqMUxiNlluQjB4R1Arb3VBMU53dzdmTVVHNmdBeHFHRFBCQUpBSytnS255NjRRQ01kbGlYY3AxMmFPTjZWRzFBUWZkdlpkTWc3QWdHUE5YU09uSWNmL3lqQWdvWUpQVC9DcWZyZk9Xc29CaXIxYW56SzRlNlN5NlkzL214RWFYejFzVjd4TlFyNXd1TnBXQnowOUhsL2Z1MVJkY2d5MzMrVUZQN05GWjRKQTkrSFVUWklhaTNnWUpTVnM5bjdhaWQ3WDcxKzkyNytRbE4rbzN1TmhRTjRkK1EvRm1qM2l2bThzUTdhODBmcDBqSWIrTkJ6TmhJbkpzYVk0dGoxcktvb1k1NUVHYU5EUEFPakp2OEFIdTdkUGtRTEFBQT0iCiAgICB9LAogICAgInByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIjogewogICAgICAic2hhMjU2IjogIjUxYjk5ODNkMmE4MDYyNDBmNTYyZGNiOTUxOTU1ZmM4MzYwYzE4MWU2ZDA4YThkZmRjYmE5NTM2MWM2ZGQ1OTYiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTA3MCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E1VlN3VzdiTUF5OTl5dUluSXN1VnExSVh1KzdyUU4ySFlhQWtxaFlxQzBaa3B3c0cvYnZvNXJtc0tMRHRvTmhtSDRrSDk5N1AyNEFOaEZyT05LZXZDZGJOKy9CNDFUb3R2MEpNZFNBMDA3dFo0ekJVNm43TXFLUU8wWnRPdXFOeFB1dEZrUHZwTlpXR2E4a1NTY1VtVjVKN01pSlZySGF5a0g3M2htaHBmWGJUdmJLRzdINTB3cHpybFQybVNxR1NPNFBoR3lhbDRrcTdVdGFzK1ZYeEtXTXFmNnRMNlpLamYxanFuRHRxZVRBa0UrWllJMFlZMXFqSmFjN3dKbWk0NmMrd0ZOTXB6aGlHV0hKVkNnZnlkMENmVU5iSVpOTnNkUzgyaHBTQkZ4ZGFCTUxMWml4MG5TRzRHRkpwUVF6MFIwOEppWm1jckRZVUhiQ01FUHljT1VOS1lkRGlEakJzdzUzdjhta3U3ZWMwQjA2TTFDbitzSHRqQnQ4TnlncFVSampsSkdzdHg0SWxSWjlMK1c5TXNaNEdvU2tqcEhhWTY5ZXIvZ1hiZm5jaTdRdW82OWllSXVYUXR1NTNhQXRHdUc4Y2JRemRvdTZOeGFkRS9aZWlNR0ozdmZZb3h3NklUMHAwVEt5ODZnRmJWOTRYUmY4SHl0cVlTNWMrc0tmWFBqSUVIQ2hMRmd0ZTRpbFVJRzBFRHZFcHUxRHJHd3oxTVErekJ3Uk9JVTZwclhDM1BBaEhxQ1pPZlA2L015S0ozNitBQmM4VHdrZFRHaWZtdXRYVnNIeHdGRFA3MTR2dWZaLzRCeU5VQ3hHT0hBVUFLMmxwVVdDNW9YYitKUjRpUWpqMXFtQ1RVY2VkR2daZFpRaHAxUTVlUlFXSnNrS09LeDRIZjNwRkJ1Q2pvRk9uT3dEeHAxNmFObGUrYWdjdmplZXRZMnk0NW9qSkhNSnRPNDIzUC8xV2NEQ3grNXI1a0M4eUhyejgrWVhxbHdjaWk0RUFBQT0iCiAgICB9LAogICAgInB1Ymxpc2hlZC12ZXJpZmljYXRpb24uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJkZDRlZWNmMGMxMDNkY2E3OTIyMDk0YThiZWViOTliNzdhZTk2ZmQxZDVmZTUzMmUzN2JkODMzZGFhMDI2MTRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDU5MTIsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMzFZMlc3Y1JoWjl6MWNRZXJWYnFuMVJucElvR1FpVERaTmxBQStDUmkyM0pJNWJwRUt5NVNoQi9uMU9rZXh1U1piSHNDMTFWL0h1OTV4NytkZG5UWE4yUC9UMy9SaDIyemFmWFRabjE5OS9jN1g1OTQ4YnhwamYvTXoweForN05tNmNacDV2Qm43MnRqNHloZkg5SjY0dkY0WVdGd1pLL1hDNjlLL3JuLzY1RVV3WXpqamZ2UHYyK3N0RjZ2TEVPSVdKNnQyUXBuM1liZm9QSFEyYnI2NDM5L3U0YThkYnlwdTJ5M1JQK0srYk5nODB0S1ZOWVdyN2JuTWZ4aEhuSFQ0OTBHYmZoWHY0OUVCNWtieGNwYnpkVDZrcXFDWnNPTnR3L2pQemw0cGRDbld1akRmS3ZHSHNrckhWbm40L0pJSVBEKzBJSGZWQkgxV01RbWNwdFBFdWtGYVNMTG5nZ2t4U2U1RWpMOXFWdEFoSTdiYUdDUTl5cnFVNmZEZnNxNnpqeCtyMmZxelN4MzFLTkk1ci9LQ1dQc0RtMVl5NzBMV0Z4bWs3M2dab3IvZXRVQ0VvYXkxRm5weTNKanZqU0JmTmxMS3lxR2d5ak9FeVc4MnlzNEZLME1sbG5RS3p5dEpxWmRqdHJEcG91UTJJOHdobFU3cmRMbm5ZcHY3dXJwMmdjQnIyTkQ5eVRNaTJ2UXMzdE0zdERTeWJYWmlOdXl4YU8xZVVONGlITURZem0zTHlSUXZteUJSUmhPTEZxbWlsVDBKNm9TS1Rsb2xNaVV1WUtPUmlXUXdqZlVxRE5ZaTRVVXdrRjhtbXBCS1BtUWZEalpENFdZcm5ITzRMYUhMV0txR2owc0V5N2xKaXpzbHdDUEpOTzA3REkzenNTbnZ6c1JvalJLU1VKTVhzYllyR1JBTnQwaFNwWS9HU0J3dWpzMWNHd2RaT2N5NWs0aW01NUwxRDJPT2lodjZndEo4UXJsMmZFTkFjNks3dlZzK1dIanJFVFJDekpITjIwa2V0UThrNmE0NDh5MkNORGdJMXFsRjdwTWdncDBnMGZPTWhhMjFpTnBrZEdnbmxIbmJ0bjNOcmJGTjRvREQ3ZERYcmJYWjl5TTFBaDFzME5vdjNuemNvaFNhM3BWeGZqUmYzdXpDVmZyaTdvRklvMWJaYXI3M1poVWk3c1huU2k3dkhobjVIcVRSVDN4eEMrbm5UVVR2ZDByQSsxblQ5MEN5ZU45ZFh6YmlQNDlST2lNcllRTTN4c1dhT1NyTW1ZaW5RcFF5UHVjbzBwcUc5bi9waDNJWU9RUTJQaEY4UFRmNjBVR3NGK2ZWODM2WGIwTjA4dndDTUdIQyt5c0NKbUw4dSs5MXVUS0hiVmdHN3RxdXc5QmNPY1BUZDExZlh2M3hYZS9ydDhzV1N3SzkrL1hwR3RoWFFjUFQzYzBuNGw5c01oTnNpeWlOVmE2ZkhiVUVVMis2bWFtYlA3M2Y5ZHR3RHhRQUl5T0w0MU9neDNORzI0T1IyZS9YbE52YlQ3VkpMenk5QkNQQnptK01UeEdBeWhSUVZVMW9raWxhaHdFcEZBNUdpRThWNkl1ZFVMaUV4WmdoZEd2QWhoOHlsakF3ZFpjOWVpcjZqS2NDcGNJclByNGpqZ3BaaURkRDM5TWYweTMxZXdmMEo5bkozcWYybFp1Zk9lY2FadHVMZDJmck1jajkvTVQxN2hMMTh4QXQ1Zk9RS2ZGRkwrNVduaEx5VUFuL1BwV05NU2k3NXUxT0dEdDZjK3VTTDNUMVNMcytGYWtJY1VkL04xejk4MndEeHB1WkRHRHJrQzYweUY2VjBQL3oweHZ6NE9OMmlxak5OYUJSVVpUT0U3cng1UjBQZjNGSG94bWE2YmNmbVVKL04xWmZOQ0lJYWIvdnBMYnBpYXZiZCt3N0diOHArMmcvVWdNcjJrSkNvUVYvUXpJcE5aZFBtWm9CMzUyc09ZbjhIMU5wMzFXS2xUdC8xM2E2MnlPNXBUaXAvNDlOLzVrLzR6TS9oM0daZ2EraE8zOHlGMnpTL25jcTM3U29ETEkyRGF0M05SYllJT29QVWkzRC8vaUxIaTdhRG5idmRTcmc0MjQvRFJUM0h2ei9QeC81OFZsQ2wvemJMemUwd3grcng2QU95OHVMa1VGc25ieGFid08yTEpjQk9KQWNqd0s0K2IrYkRveUhiWDY2dmFwZGlLdUV2VHY3eDR1UyszN1hwOFVtYitHeEJKNlFBK056N3pCVVZGZ0lCYUl2VFh2T2lkR1FwUlZ4RFFRVmJNbmtoOExUVWxTSEUyVk94ZDMyZUM1LzFScWxuSjR1RlM5K2Y0R0doaFFObGZFUzc2UVNFTTJqaFk4Z3hwUGRQYnk1ejBMYk9RSWpSc0owV1Zpc0J5UE1pR1BmN0FiTWZiUjhDNktDYnhqa3lxN3JscExMQVdGR3IvM0FFeU9kbkE1WDlXSjEwQzZzaW8rMGR6WmJONWRqUjlLRWZVT1F6a0w2MHNoN1Z4dDMyZ0JUa2U2WjkvSDVva3ZwN0dtak9OUnpBV0ZLbnBEazBKNGRXV1VNUE0vZlBmUzJvc0R3SGFrZFY5REliemtWenVqU1BxNlUrL1dHNkhmcjl6VzNOR2FaWk1OTmRRTGhxeDBQRDV3MEdzVXAxeTN6VzVEMGRnY2JWZHE1ME4xVXp3SHl2OW0venhRd2R6V0p4czJaaTV1cUxHZFNiTWZYM3dJblZidUJLbWdmUUJvUzVxNHAvMzZOSGNoTUowUWNyNzNyZ3hRRVhuazdGTlM4QXNqdWFHK3pzbTNZQWdpRTVEWktWVDR5NzhuTVlEL1NNYnM4NzRGQlhMNVg1OGtIWG9VcWJwVDZoaEF0OTNuelZEN1ZyNjhYSEY0UEJYSVBkVGJOQTg5TUpBSEd0M1R1K1dVY095RVNNM3dJdHFXc085WC9lZkErRVhOQjJuUTFLYUhjbmg2bFdPTUR5MUw0cjZJVmhhc0ZrMHdiejZ6MktlK3k3OC8rT3l4d2ZlTkxaazFBK1Y2cGpHSmc5SmpacFdBbkZrTXVCQ1dhaU5pNWhxdWFZcnpCb1lzalRtS0JMSW5WQXVWcXFtOW1xelJMRm93WVZNc1kybjZ3dTJaZkVNT2xpU25mRzRsdnVpYWNZNm9uVlBsVTYxcER0QVNaQlpPRjA1dXdWRFljTjRLakRXNWUweFRhU2JDd3NrL1Fab0VWZUc0eW9QbVdNcVpaRlMxckh4SzNVTm1ZTTJpWEtpTUdjbGZoTXg5cTBSK0VDaUJlakw4b3BFNklxd1pCd21FNE54bXN0dVVPTXVPWkVVZ2d2cFRGQmM4ak14Vm1CcVVFOEQxRmxwdk9VL3poS3o5bG1vNUxYbGt2UFE4b3E4K0pNUXB4TmdDQ3ZBQU5SRVdsRE9uaU1KcDZTS05YVjdMa09uNVordnV0dnFnYUh4N0VGSWNwWU5DUnlDck9ZMTRRb1owTUd1eElMbERDM1o0N01aSVAxeEZpcHFtc0dDWHV1WVJyYWg4ZE5uYzJPSGtpQzNSSVVBdlJsekNWS0VxWUZrdGd2cEJKRlp5V3htd1JzdW9nU1daMk1EQ1pZajlBeEYvei9rMy93d1p1Z1hFWXVDNklGTjVUWENod1VzSHBhZzRyUnlFaGloU3htSjh4dnhNRlVFaXNxK01zYXQvTFFVM0w1S010WUVNbXdtSlB4Q3JzaUtSR0tFd3FKRmtoSzNjeGtOQXhibzNCWU5hUVdvVG9wdlliN2pKK3luTnBsUzEvWDhSNWowL0F3LzM1VWhUVUNxeDlXbHBoOHBBaWRUZ2NFaGJCR1k3blJSbENKMFlGSlFhMU9SeFNZWklFTElrNHFyck5ucGE3WDJnM1VHeUkyY0lZRmtpTFNhTFBBbXNLY0Z1REdqQUwxdG5pTHpVb0tVTHUyRWxsZ3BPRzR4S1lzbnd2L3VOTlNxT0tTd1FvRy8zMXgyRllSZDQyVjJzVlNjaEpPT1UwbXBvQXRWeWU0eU5DWkJXc3Q0LzRZcGlQdGJsWUNQWlVUTmtjdWtpbElockNhSzhZUitvVE96WklSbVZBWUo4d2JFU05zcWRGQkh6Sk01Y2tTQnBSd25Mc1dtTjBzTUxzQ0J5QzRMNmRRa1U0TUN5Vm5IQnNxaGh4dFBHb1lwb3ZDZk1VOTZ5TUtDd0hFR29xKzBBcmxKeXp1SjdMOFdMaFA4NzJzYTBjVk5Wb2N0Q1Zkam9Bb3BCVW9TMFVWWVVOd1JsTkcrbFd3S1FCL0JZL0lFUlBBRU5qQ2JKSHVvS0lPRU50MTZqbkErZm45WTFWQklVZ09DRUloaWRyV1FST1B5UUlQbWVUWXdKVlZGcGhvaStXT1NZVWx4a3NsTmM4YzlaVkRPYWxZV1BCRmtDUWhqV0FJaFNvcFNHWVdpTHV0YnhOeTRycWd5Z0JVeUl2TWhRTmFVTmtvWkNzUVBndE84Y2ZPUTc5dFQyOUxEdDIzdUpBaEZzVkhDWkgyTGtFRFIrK0NBUkp4RVhXU3FEUkFVWUJyVWpQaFlia3F5VGxkTkZud3l1czY2anF6S2hEYW9TdTh3ZE9LQytCK0VTeGljdFdvRUNDc1I2Tmc0YXZsUUE2YlZQQUpKQ2N5K0FuVVlhUi9vcUNhL1JxUmVpK2pZOUdEdEVnZ3U2aGVETVBLQ3d1dkN0TW80YVNDZHJrNnl5T2FMU1FibEpFVjBMaE1MMVZnaWlDczlrZjVHSm1GQVFVbmNLWGltTUtaRGhqTHJRLzFkVkZ3Z01iYTNTSTdFUVhYQ3NsSnhhQ2FYU2FOSGZFZy95TUNVcGphaEpGTWcwUVpJQWdUZ0pQQzRVZmlrT0FpRGdDSVVnRFMwUnJlY2ZDT01kaFNoY1YxK2FyZ0EyNXI3cXlNRXVFQWVRSy9ndUdPQXJnZUhlY2RxME1IeUE3WnRMZ2lTeUFiaXEreHdrWWhBT1JINGNqbFJ5RUorT001TXp5Q3pNRmtXUWdYZVgzOXBhUUV5WU13dkhJSlRSV0JyMkFnQVd4SDlRaE9WZ3ArSkxibGpkOW1lYnYzb3Z3amN4emRKYktNV1hzSmIyUmh6TmFYaTVRY2NSUm1uVjFxdVZoYkM2QVFwaWNMZ0FLRUJYbWNMRjdoVFZFUVhRTGdSNStNRmw0WWFBTEZHL1NscUcrNWFuRndYTW1FU1NzSERHb0NRNWhVakhsOHBFK0lQb1FlMkEvckVGMldCWXBIZ2RXNWQ2YUFYcFRuVlVBQWxxRklwWkVnYllDNkI2K0NPcTB0S3BibHpjMW5mMy8yUHllZjdwOFlGd0FBIgogICAgfSwKICAgICJyb2xsYmFjay1kZXBsb3ltZW50Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiZjhhOWEwN2FiYzJlYjUyY2RmNmJjZGJhMmQ5Zjc5ZGVjMDczMTQ1YzMxZDA0NDRhOWUwZmUxMTQ3ZTQyY2M0ZSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MjY4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxWlcxUGJPQlIrNTFjd2ZzYkVEcmtZOW1VWmJtVVcwZ3pRN3V6c01CMUZQa2tFc3VXVjVOQzB3Myt2SkNmRUY5bE82V1g3VUY1Q3BLTnorYzVWeXVlZDNWMEhKZVE5Y0VGWTdCenBiNG5vTEh4blQyODlrampVaTZlUVVMYU1JSmJaZWdRU2hVZ2l0ZmRaZmRkTTRwaEpKQlVUOGJLb2wvbU00WEJmZnlTY1Bld1QxcEVjWWNWMzVoTERtc1JUeGlNSTNSQXcwVW9jR1EwMkVvOHFGSjNLaXRIS0NLeHM3V09XVWhaTjlnWERCTkVPQ2lNaWNzWnl0b0R3ajkzTDBmbXArL2ZZOVR4dnVJdFRxVmE1WTVnK1o3eWRHRVZnVmRqSkVZZ0U0V2FxTkRNYjlZTUFmQSs1aDE3WWRYdEJjT0FlRHZ2Z0RzSXdtQVJUd09pd3ErVWI2WTVJQUcrd1ZqclBPQWh4Q2lpa0pJWmJ3Q3dPTmU0RHoxdUo0UW8vZ3BGZTlGK1dGa2FUTjBSSXhwZFhKQ0pTYjYrUENLQ0ExVTdlZnhHU2VINkZKa0R6YmpWQmsrdy9waFBnTVVnUTJxLzErS3hPUFJmZ0ZDb09KTXlXZVdseW1SZ1dONEE1cU4yaUF5UkVDZFdyZWYzS2dkZ1FqRDhvUG5JcUdnbTBpcFlWTDh5aWhNVTZwWTR5MzhDVHM5ZDhwQlhpTmNnNWpZcXhrekZXNmtjc2plVXQ4QVhCY0l5eC9uYkhIa0ZiUFVWVVFNNGdGVndTcVREajJxaC9jeHJtRFZSMEVDOUtCRldpUWlacFRELzhkZmJQeWZINDdNUGw3ZTI3czVzQ0FpdnlCYUtwb1o5TG1ZaWpUdWNSbDV6bWxBNDk3MzJsRWlkdlIzZkhsNk96Ry8zZitlVkZveHJLYy9HVXpGSnVJcXpERlhRa2d2MEhrZmREMFJ2WjMzMlJxME1pTkRNY2xUZG44TURLb2JqNldpMTNmNG81NnZZSFI4UEJBVDRZOUx3dURpWXd4TGlIL1Vub280RS82QjZveituMDBQY0hZYi9iN2ZuQmNOanI5aWU5UGhwNmZvQ3hweW9PY213S2pWTkt4MHdWajZXQlp6cGljcXlxemJyMjU4Z3BXVUNzNnRDWXN3bVVBdDRRVEJHaEtZZTd1VG8vWjFRWHZvTXlzc2FyRnlBdDUzV3BRM0p1TUo4RG9uTCt5ZWFZaEhHNURnL2J2c0J6eUh6OTV1NXUzQm9yVGdLY3NIQlRWTmNGTXM4eXhWZ1puamZNcnhEcHFHQ3AzRERxN2pRSWJ1MHZCWHZGZHBuMmtycmpES1BBQzd5OStseW9RMUFWUWNrd281cm03bVQ4bW5TemFPSTNhUExFK0NObEtIeU5ObzA1cC9wS1NINEg3ZmNLV3NXS3BWeXh0U0ZKOVlRaDdCamhKTlhHOVQwdnNwa2ZRYVJHRkUyaDZ0dzFhYmVmdzM4cGlEWnBMYklHUFl1b1J2c0Y0SlFUdVR4UjRRMGZiZkhnSUVyWjA1aVRCYUV3Z3pPQkVUV05vOXBwMThxaUJFMElKWkpBalRraFo0bWxBSmk5NDZzcnA3Sit2d1YrS0h3YjArVU5ZL0pjYVNxV1FzMWJTb2prS1RSRElCR1hhZkkxK2VSM2Z5ZFVEWm9TZUVSaUV5RFhpcmZ1eDJ2alExaDBjdHN1WlRPbi9mUkxKOWRlTGRNdkdFMGp1TmJUMzVZZHhjeU5HNVgwNk4xUXhzMytLN3BGVVlxYXNEcHRYYkVnZGpXU2ZidGtHU1ZOY3ZUMk44c29USk5OMGxvSjF6bHN5OXJYYUxaQTNHQXY5SFZNaXFvUE9ra1dYVTFLcS9LbmJrcS9oTFlvRFlsc1VyYVc0T2ZydXJuNE5TbThvWEpSUW42RzV1dkJ6T1V3SStvTzMrajhyWWgvUHJhcldjRWVsbXZkQlpGU3YxSTFFcmZvdmxQWGd6Yzd1Zm5VQ1dPeEtkY25OTlZTendrWCtaRFVFNWR1dUJ2Q1kvcUVsdmtvTWEwdVRGWGFqZFpsR0tZb3BkSjkyU2hRTjQ0d3psUmNjSlltcGdONlhxRy9yZmRPNWlqT2Q1cTNzWjRpcm9rd3IwZkZSdzNsbWVNR2ptWjd4QXlERmFqVi9YY0N1UFcwTWtXL3FxaFJaS3FiWFhtVzJMd3ZaZjNoTklQRnNUcm11UUJSL3AzRStsNVRvbGtqWDZYTHRlZ0xqakNNUzNOR3I1OGp6dnB6eTd0TG9kbVc3NHI2WVZmRlVTemZHMVluRkpISU5xVmh2VEdxdTRLNjFVYWVEKzVDa3BaZmhhSkVMazhKdHdsVklraXExWEd1c3htOE9tS1JUN0IrcUhUOHlrMmc3ZzV0R1FCK09SMUx3ME9UZmxubnYwYUpUY0ZWY2wrelVMUHRIbFpuNjlxWEJYZUZrenZBM2E0ZkRJUFE2L3ZiYVY4Y1JyYTBvM0VvMFBmNkI4QVN3aTJzRElLcUcxNHVvdFY3MFdmYlRVbFlYejl0cEx2WmFBQng5clkvcGZEUlJhbWNXMXBDRms4ZkU1SWhzOG5yZzVlMytkcnJqVFFxV0dpZWQ5cFc3bCtWbTAxemo1UDF6OWY1Z3FpNzQxZDQ0aEdXRy90dElMVkJWSUdqR2gzR212b0NsMEh3VFNnMkRtTy9kblRiQXZiN3h1dmVkbG8zVmJyVzJLcm5XNHd6alBZeGx6WEpXN0J3UlZsRCtHeGR2NjlCTFI4bUxsZnpqVnZQL1VjbC9BOXJKTlZKZjZzdTBuaHNtNXhybTlML2h5cUdxV29VYXRiT0JEZFdzeUxwSzZvYVMzVE9JbHI3bHRoVzlxcjQxY2ZWVGpuMlZqL282bCtwZDU1M3ZnRG5UKzdMVENBQUFBPT0iCiAgICB9LAogICAgInJvbGxiYWNrLXByZWZsaWdodC1mdWxsLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMTIwOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMWNXNU9iT0JaKzcxL1J4ZXNHR3pCZzZIMlozczVsVXRzWFY2Y3pVN05iS1pjUXdsWWFFQ3VFRTArcS8vdEtBdHRjWkJ2M3BwUFpLdVpoa2xoSFIwZm5ISjJMOUJYZnpzN1BOUkRIYzdoRThER2ZaeURQdFl0elJndjBTZ3lSSUVkMGhjSTVZUHhuelRJc1Z6Y04zVFFmRFAvQ25selkxc2h6VE1Oei8yWVlGNGFoeVVrcFlIaUZPRXVRTGxESTUwVWd6a3QrR1NVTVFjWVpob0NCQU9Sb1RoRm8wdVFJVXNTNnY0Y29pOGs2UVNtYkwxQ0tLRitGcEp6Q2N1U3dvRi96V1ZtTUlSQ2JNQ3R1SU9iTHhVS2lIUWMrL0kyUGlzMW4rRGRFODVJVi8xZVdqMWVtM0FjZmZNU3BrRUY3dlp0WWpTU0lBYkdGTFNQQktrMEprMUxsdFovRkFGMFFHSTdFSDF3Qm4wZVlqQmtGa0hOZjZGZ3VnTk9JMEFTRmVvZ2dGc0pjU0VsMjYxNTBLTWFkWHlyWjVKS2R3UkVrUlV5U1lKUVRpRUU4Qm1HQzg5cTJLZUZtL3Z2NSs5dTNyL1hmWjdwaEdOTnpXREQrSzlVcXRrOGIvdHpDQ1ZLS3JUVkk4Z3pBWTNSRnFRRGdlQjR5RGFEN1JtanB0dWROZEgvcUlOME5ReS93SWdTQmI1VnlWRkpvZVlaZ1hmdDhCd3VLOHZ3MTk0TVlwK2dEZ2lRTmhTVmN3OWd1MS9hUDZzZVZsT3BYbkROQzE5YzR3Y0pEek4yMEhNWGNiUWx0MmpVQkRDNnZRWURpcHNHbFcyV2p4eUpBTkVVTTVjTGkrM1cybmZmVVVYVE8vWVNoeGJxNUxsdG5rdFc5T0NsOHZHc2docElzRmlOTmVidE9lOUJ4WDh5VEdzTEtWV0tWRnBWNmhDVEpTRnFlWVdrNTlFVjdkV3hTRCtYdjFOK1FyZTFuNVFKOE93a3BVdmFCUjBjTTBTV0U0bDhQNUJHbDlaaTFuY0Jka1FIdWxGUnM4ZDhOYVpzYjVyUW9YWFdJVklTTmt5aTBQZi9ubXordUxtZHY1dTgvZlBqNDVyNmxsV3JDQ3NTRm5MRmtMTXN2eHVOSDJES28xcG4yOU9vWndsemQzVDVjdnI5OWN5Lys5dmI5dXlQaWNMdW1FVjRVWlZnZlU2NU9uS0RSNTd4cG83YWx5djgrdFhsck9BRUx5WmZiZTRFK2s3YlRWdi9zQnRGZjhpV3dIUGRpNms3Z3hMVU5DM29CbWtKb1F6TUlUZUNhcmpYaGYwYVJiNXB1NkZpV2JYclRxVzA1Z2UyQXFXRjZFQm84ZWdGTkxkS3NpT01aNFNGb0xSVVYzUkkyNDFGcmwxbnFaNExuckpSSHRCa2xBZW9jRFVrU0FSd1hGRDBzT1k4bGlVVW9uWFQxTEczOURqRWxEeEU2QVZ0S0d5eDVzbVRMUDlXbXlnaGxHOGRSVStTOGlpZzk0TmVIaDFrdlA5SXlSREVKZDhGNkYzVHJqQXNJdVNMcTJ6UVZaTUpqU01GMnpLeXpJd0wweUdTTi9lZjlUK2IyeU05S3ZYbUdaN3c2ZEdyMjYxVlVUUVNTV0ZBOVhNMmVmMEFWTXBrSFpmcEM2R05NZUNIMlRMbU9ubE5SdGVIQnlWL1d5VGxEVWxET1hLM2ZXTlE3K1Q2OXdhd1FtM1VNSTFFckpFRUpMNXBrZStDNE43aWZSaWo2VDRIeTQ2c2VYZE8xbFVzZTFRbnZNZ3FLMmZxS0h3bjBWZTAxb2pNaVgyWVVyM0NNRnVoTkRrRzg2VG82T1g0ak9NaEFnR1BNTU5xN3VaQ1NUQmxJNU9qbDliV21HUG5VVTY4Z3ZFdmo5VDBoN0MyWE9sL252QmFzV3JyalNtR0FzaUk3N1N5YTFuQVlUemlNRE5FRXA5S05idmdLb2liWUtDTkVxM0Z0V0kvSlF1c3pmMXRQQ0l0M1o2eElYQ1RvUmxTb0orUXZXZC91UkJOdHc4RlVJU21lblptYXEvSHFiM3c4SXplV3J3ckc3eVVCUzdMRDZ3bUM3N1JXby9JOXZHb1AwazBFVUovNTU4cTRBbFJhcGJ5Y3lidldHV2VsRng0V253ZFUzZ1grcGVRR1JZalpZYkVQa1B3c3FYZnQ3V0hSZDNRNnlQQ1AzTU9tZE5RcFd1Q2MwU091MFpQOForbTdxbGYyT2U5bUZ6bG1UTnpxSFNFL3VvdXpRN20vUHRxb3FMVXd6WGZKNENvdWhBUnZNYzJieml2cVFaSG9kNlNYOFJld2JucVNUSzFod1kvcjdTYkFvd2dVTWRPM0F5MzZJd1dWRnVYdktDa3ltWEVObzVWTk42Tlg4dEo0SjlsZEtpcVpHNXpMdTdiMlJRKzMyZVZCcnBMZ2xrZ210WHZ0TnNYSEhORTlIUGkyeEkwVEw0a2lrVnk3OWN6dU5xN01RSzlMTldsN1RmYlVVbHY5Qm1uUG5WYUxhbU1SRldXdFBIaEhBVVN6VnJWak93M3lzamJvY1N2VlNQUGQzbGhjb1hOdlM5bHZrdUZWREhDaXJpQ2hHTHJkMTNicnFqS2llUnhhUjd4N2Y1WmtiUDBhVS9YeWZERmNDTkcwbTdLSFVCVi8rRSswdVFUV1RFVlBzLzhlUVZtRy9LVWw3aFF5eDZRdGE1QWJrS25GcmNMRURRa0ZlOHRYZFFkN2IxMzBTbis2Q3kzTDlLWmVhRGhtLzcwMHk2T1RkbldrUkJGM0haL2x5MVd2WFh1ZXlramJKbHpWK1gxVGQ0TzU4b1paVFh4ZWxpb29MVjlkb2hoOTFVSEJsc29rVkhyZTF3eVgydHBGaUVudHZXUnY0OGFrSUVxcXA3TSt2MzM2bjg3NDRjcXNla0o4dnFVdzc1bFB0Tk1qV3UvMG9sYmZjZVVwMUtUeUk3bTcvU0cwVk1wMzBlK1I4dkgvNVZTbzNQd2x2UHhWL3gwY2pxSTkvUEFROTZaUFFqQ0NsTzBOQW8wZFY3UjdTWi8yakh6YXE4dTZLK21VMTJINm9UVitSUEI0MFFUVzdXTjZaNjhqVS91ZTJlTTl5RStNanpEbTZZbjNFS1VBUitKa2svalo4WkprNHVTRCtNQ3Q3YkdRMnRYcFlRODhVL25xOW5uL2JQTi9hVkorNXRJUTg3cDNBS2dNQUpVQm9ESUFWQWFBeWdCUUdRQXF3M1BoQUZBWkFDb0RRR1VBcUF3QWxRR2dNZ0JVQm9ES0FGQVpBQ29EUUdVQXFBd0FsUUdnTWdCVUJvREtBRkFaQUNvRFFHVUFxQXdBbFFHZ01nQlVCb0RLQUZBWkFDb3ZBbENwdnFFU29neWxJVS9lOVp2anlsbVRock8yUUN0YnZJcDhaRXdLQmdMWnFkUzduUzJVNVdyci9Oc2hKU3pnQUNqZ1dYaVc4WGJoUGxBV2RSM1k2RnhlQnBkUWYvay9zVXB0emV3QmZ0bkJYM3pETkNlaEZlcU9IZnE2alR4TEQ4eHdvdnRHWVBzb1FLRVZPRjJVQndRcFNUR3ZXT1huZnVibHk3Vmc1eUZvdTFab1doTjc2dGhlNUJndVFpaUlURFNCNGkxNzZ0cWVZZnJRQTFOdjRobDJhUGdCaEZNL01DTExBcEhiUk5wa0s5alArVFkrTmxOMmd6L1kzNVJDOVBLOVRvdjdmWDJ0d1RsYnRaQXFBZGVoTG00Y1lsU1dWZHE2ZGNlbm1NT0xvRkFQMXJwNDM2VkVOakNxaVdXelB3cTQvbHNjQk80SkxKQXVCSmNiTERsUWtNSWxvb0lpSnR6UGRCbVpWVHhiN0NSY2l1c3JMYk9JWmszOGtXdU5MTU1aK2Rab1NYSTJrdmRGU0g3L2lvN1NWakxZdy9ZVUtaVkhPc0k4RC9CZXVZUEQwWm9yY1pmWHE0OXBOVHJKVDczQ1E4dUJUZzhIb1djRWxoT1l1bW1iUUxkdE05QURyanZkOXlKZ1JhSHZCVlBZRFFjZHBKSUc1Q09XU09XZC9kNGpFUDVPZVNLL0U5Mmljb1A3bm8zM1A5NXFsWVhrTGNRNzNBTmNWZEx6czVubm0reXI5TFR0STFicFQ3V256UTdOaG8rdzRVbUtiQWU5ZWJZRXVXVDFEM0hBdEczQ0ZvRm9sNkVybTltKzc3bGVaT2tJQkZDM3c4aldBWnFZZXVENUVEbGVPSFdNRFl5aTZua2E2TVdxNUNraHF1TVlSd2l1WWUwMVR5QVh5Y2Y3NnpwMDYxUnMwMmhSYTVZMXhyZUIySDJGZlpUMWx1OEdCblJEenpPUjV6aWhHWnFPWnhnVC9oUHlEUlJOZk1OeUxkUUNZbkxuWXRXTlkzMUhmUUdnWlFSb0lOSjJSN0VxUmtmNUNqWVhsUWc4d0pyZnZ4UHZ6dkk5dVM0SGR5MzJ3RU1FTCtINHVnKzRkSTc2cC9hbUY0WnhZVnYvcXNuRUUxR1J5MmRseVcvZGdwNnUwMFpHRk9FYVVCUStrT2J4VTJ2bXRKQndzb1k2UjZ6dGEvMzg3VVY4N3J2NG5Sb3BTNS9EVDJId3U0TGRSUitFZ1R0VnVyRENQS1RyT1MvLzVLY2NwZmR0UCthNHJRSG1KSTNYY3duMzQwVjlMQXVkTFZYWjA4eERIRVZ6OUZWZTJCcWRnVjBsaHlaOEo3WnQ4WUFGVFdqYVBvaUN5SWFlNzd0UjRGdTJOUVhJTnBIdDJuN2dUMndJYk4veGZUT1llbzRWOEwyWG40d1VPQllJWkY4d2gxa3hGN2ZKdGxGZWdHeWlPZTlBTmtNVDJ5MkhhdkRqR3RqNDZleS9oL2ppSnRoU0FBQT0iCiAgICB9LAogICAgInJvbGxiYWNrLXByZWZsaWdodC5qc29uIjogewogICAgICAic2hhMjU2IjogIjRjM2MzMTY2MjA1ODA4ZTgxMzI2Y2NkYWUxYjU2YWZlZjc1N2IwY2ViNGU2Yzk2YTE3YmYzODQzMTdhZWVlNGEiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTg3MiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E3VlZUVy9qTmhDOSsxY0V2bTVsVXhRbGkvNEZleWl3UUpwZWVoRkc1TkJtUW9tcVNBVTFGdm52SGNyZlNSWm9GKzFONU15OGVZOGNQWDVmUER3c3dibEc3Vkc5aEdhQUVKYmJoemhPK0VzSytUYmcrSXE2Z1VqYlM4NTRsZVVzeS9NbkpyZWkyQXErcXN1YzFkVVh4cmFNTGVlaUhxSjlSWUtFZm9lYTZneTRjTVFiUmg5UlJRTFVFS0dGZ00ySWNKOFRVSTBZUCs1ckhKdy9kTmpIWm9jOWp0VEY5NVRCeXptYzhnOVVOVGlySUluSTUyMFlkNTRXMyttYlZwTk5tRXNoWlYzVmhtY0lyY3FFTmlJRExQS3NyYVhDc3RhYmt1bFpTNkxqcDFIaEJTS0pnTGhQS0VkQ2EyY05xb055ZUtxWXVReis5OGRmVTlJK3hpRnMxMnZqeHgwKys1WHlrL05kdXdwZVdYRHIwM0p0ZTByb1VHY2FsUTBrYkxXejhRb1lTUWJHUjN5ZFl3bFh5YXBscXRKMW5XTmRsanJYZVZrelZ0QVdTb2Fta0hSWEhQbHlobmc3aWRFWW91M1BKM2RSMUVPSFlZQlo1dklEbFN1TmVSakdXMWt2VTR0amp4SERTcU9CeWNWVmVGWDNUV0dLdm9ONFB3cTB2MGR3ODBsZWVEZ0k4V21FUHRqRThNbDIrSDdxTmpSbE5IVi8zSENLRUtkMDM4dXZNOTdodm5rNDlPcTJoZkxkQUNQcUozK3orOE9UK1Rlbjh4TW5kRVAwODFuN1ovUDJ2OHpjZnpKM3M4REZPNkZFOVNmd1BybndiMVA4Wm41TEY3dzROM283V1VpNmhVYVBaQWhUUDd2YVBIMFhYd1BkMlpBb05MNTNoOFoyc01OR280dHdtNldjVFc2anJURU4vbVdUQmJJUGdiQUhYbGFKRGhha1JBZ3VhNk55bFFzSnBqVkMxVkpXcHBWYzhBMmd5RkZVUXJheUVBcUVMS1hNMjAxZDhwYTBIOTJUM05pclpJNk9MSFNZbW82Z0JXUHNaSEovVGpTbzVKL25VQ0dxWXloRWNrVGNIUktUeDJTaHREb2ltb2tNZmtTRmRvZzNkRmxlMXhzcGRWRnlGRnBJWFNyZ1VsZVl5ODFHY00wNHlncEV5OXFDc2t4dXhLWW0vaTB2dWVUWWxwK0FueWQxOU02MW9GNnlZVVRqN0c0ZnM1UzNlZzZuL3lVOUJNLzBFS1Fib0JRY3NWZllHT3N3WE0wNjBQOU1TbDE2VEs3bW4vQ1BrU3hGc212a0NuOHRwaWoybXREdGpIeXVQRDVSMlczMHJscEJyeTA5VWU4Ylg0Uzk3NXBHYi9HMitCdmVCdm1oVUFjQUFBPT0iCiAgICB9LAogICAgInJvb3QtYXV0aG9yaXR5LXJlY2VpcHQtdGVtcGxhdGUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIyYTM5YjdkYzViZjcyM2MzNTk2YjZmZmEwNzE5MzY3MDU3OThlMWE2ZWM2NzRhYzFmOTVmYjNmMzk0NTk0OWMwIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDk0MSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E0VlMwV29iTVJCODkxY0lQK2R5ZHdhSEpsQkt3V254UTAxSUEzMDhaR25PRnRGSjE1WGsyQ245OTY3dTdEaHBBMzBUcTluZDJabjVOUkZpMnBQdmZaQzJNWHA2STZiTDFaZEY4ZU91cUtycXVuaW81dVd6TmVzUDgrcTZMcWllWHVTT0RwMC9vbzFyZFRHclpsZDFWZGRGaGhhRUR0cklhTHg3MjdFREJTNXlXMzB1aHEyY3phKzQ1cEsxUXpuNFJBb05ZV2VPOEpjdjdLRlM5TlQwVnJwM1doMXYzYUh4S1NyZjRSMkFWQXdZcUdYeWQ3ZXJ4WEwxZGFRb1U5eDZNdkhRZEY0amYzOWVmRnV1bHQ4ZmJ1OUhSSlMwUWN3L0JHbTdtOGUwQmpsRWhKS2tzVVk2aGFvdVdSSlBMRUdob2NZTGhtNiszclJHRGN1YkRyeHNFSkM4ajBWcjlvem43UnZqaXZFSWxsSHF0VlNQWXpjbEZ3MmZsRm1Dbnp3SHV0bVFkSmxRSzIzQWdEdWQvak9CRG5sK2FVMExkVkFXWmRZN2xQOTFyRHpPQ0orT2huMnNYMS9BYTJWOHJXazJDay9OT1JSbnRYdk8xdTZVckpleU5vRURad1loL21wUUNuMzhaOFBhSjZlNXlzVGtocFBocmMzS05EMk5nckJ3ejlCdmRIQStEaDQrb09Pc1JBZ1RCTmNFYzlWZ244b1R0MHR4enc2SWdCaEVVTDZINXFtbm9ZTWtrUktFZC9ZZ1pCdEJnak9VcEJYS3U5WmtuMFU3ME1zZm1YMU9nZkN0aUZ0ZWlUMmpoY09UNkprd1lza0R1bkFoQ0ZFYUY4Um9lWjZXaU5qWGsrbGlEUTRSR0djaEF5Nm5rOStUUDgveGdWYXRBd0FBIgogICAgfSwKICAgICJyb290LXJlY292ZXJ5LXJlY2VpcHQtdGVtcGxhdGUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI2N2IwMzBjNzI3Mzc3YzBjYzdlZGI5YTFiNjYzODUwNDRlNzI4NGMyOWQ3YTI3ZGNjYWVhYTUwNDJhYzdmMjk3IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDEwMzMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMjJUVFkrYk1CQ0c3L3NyTE01TDFwQkF5SjU2cUNyMVVsWFZTajFhd3pBazdob2IyU1lxcmZyZk8zeG9TN0k5SWMvcmVlZkRENzhmaEVoZXRXMlNaNUZvMnpyZlVaTTJoRHBvWjNmZXVaaUdvU2QvMVlFRk4wUTRVK29KM1pYOG1EeE82YjEzdlF0Z2xKNWRQbi81OURIOS9qV1ZVcDdTRjFrOC9USzZyZ3A1eWxLZkxSbkJEUjVKZWJyT1pUakxEc2JNVWtlZFUrRUNlVkZ1dy8wRkFtMERuZ3h4U0VHTTFQVnhxZjJtSXVDRi9tTXp6YU80YzkxcW1oSmFNSUdXdW1BSEh1SGZyT3B0eU8wMUhMd25HNVdGcUsra2VCL29PZ29LRGVqdXp0TFZnYjNZQ2VLMmh6V1Z0MVp6aXhIaUVMWXkvZXlOUmgybjdiaFh1aDFyclk3T3RuenB4bFkzck9nNEt1ZFZRTmVUNm5Ub0lPSmxlMnZxU1BQcUx3UW1Yc2F0MUZCdjNOaE4vc1BkTnJtY1BuZlEzd3Y5RmU5RDNobFRBNzRxM1RFcEV3L00xSmwrdUIyNndiaXUzZ1dIR3N6VGVueDZCOTJINWRtZWorVWU5K1ZCNWxqVmRFUThZRlkzR1pSWm1lLzUyN2FuTEN1YklzOFBXWFU4SHZLaVBoUndsRm1GS0t0cUQ4bHRQd3R6VTBONEttdUpaVk5WR1ZWRjBXUk5WbFJTN2psRUowbnQvaVR6TXFkOE1XaEJHMzVEQk52b0J1SU5oTmJONStTRkVUU3NDUTRJd01na0NXYWJYd1JKT0MrZzU5ZStndG1KYjJzN000T2pHQUlGdnFEUDJqSjh5OTgxZ1VlYWtWNzI4TGh5eUQzTUs5MmMyWllwWUp5Y1hjZGpFWnFSSFdZaENHMUQ1SWh3clFDeDBtUEdaYVMzaVhiSnc1K0h2OXlJWEhvSkJBQUEiCiAgICB9LAogICAgInJ1bnRpbWUtcmVjZWlwdC5qc29uIjogewogICAgICAic2hhMjU2IjogIjY0NDI2NzZkY2ZkOTQxZjBhMDVhNGNiNzlhMDJkZWE4MzlmY2QzMzJkODJiMjE1NGMxNWNmNmRiNjhkZTU4ODkiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogODA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTJXU3k0N2JJQlNHOTNrS0s5dDJXaTRHVEpiZGQ5ZTlkZUFjRWpRMlJCaG5KcXI2N3NYanpqUlZKVXUyMFg4NUgvRHowSFhIUXJlNHhKeU9wKzVvWGUrY1VDaUYwbllBVXIwa1F3TU1JTDFVVnFEalFRM0JIejl2enV2cXByaGNDRWVNWjFycWxyQmNvSGxQUWFsaENMM1Z6U0MwUVdZOGVodVVZQVBwSUlMb2VUQzlNOUo2SWEzb0haT0dDU1RQSmFpMnRCZmNxTVFRVzM2aGMxeHF1WTgrcHhEUC8vZHBJUng1TDhtaE5kNXA3VFFaTDNXUXlnVXJPWmlXamJiWHZkTnFVSndMNmJuM2c3ZDJRS1BjM2tldjVOZmErcVlNdUdFQnpUbU5FUi9KQkRGREVuR1ExaWtGQVJVcWJrUXZ3V2dGUWx1dDJ2WlJUOW9vRmhRYmpPR0FTbW1IR2huZm0rSU1aeHFYdkJaUFd6ajR1c0xVUWNycFB1ZDE2ZDdSTzZURmwzaXR1WHlkNEU2bGcrSXY4VWJkUG1ON2VaaW0reDdySVdGRXFEVHVCZTlBcmFLV2xkNDBpZXBMTHM5YmEydWozVmdJY014cHVvOGw1L29vbjlzV2xQdW01bUw0SHIvOUticXVTMXZqKzgrRi9ET1ZCeHg2YlVEZE9kYmxrbCs2YTB5SjBPZDVqblczSjZnTllieVdmSXZZbkhVL3pRRFRRbytDYmRDTmMvUVhTT2MzanIrYXhna09GaHB6R1FIbm1MYVBqMGhmQ0NuVjJPVC91RDd1MUZyOU5xcGdRajl4OXNUNUQyWlBzajNtaTJKQ0dQV0pzUk5qeDhPdncyL01RZ0lXS0FNQUFBPT0iCiAgICB9LAogICAgInNjYW4tcmVjZWlwdC5qc29uIjogewogICAgICAic2hhMjU2IjogImFhYWE5MTA2MWJiMDM2ZTZkMjI4YjFjMWJkNDMzMzU3OGRjOTQ4Y2IyYmI1YWM4YmEyNjk0MjkxMjFlNzMyMWEiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDUzOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMVZ5VzdiTUJDOTV5c0NYeHRLSkxWU3B4Ym91YWUyaHhTRndUVm1Zb2txU1RsT2kveDdLY2x3TEdkQmt5Ym9vUUlNMEhwOE01d1o4czM4T2prOVhUaE9tMGJhUlhXNm9EODY2aVNQdmRXYm0vZHVSWEdXVnpsbVNPYVpMTXVjTUo2eWxPZVVwb3BpaGxGR3NrRGhCY2NxaDZpa1JCQXFjc1NwS2d0VUZoeVJuQ3pPK2xNRVc0Nysrbk5nd2lsbktVd3p6Q1VyVXFxRTRoUVdtTE1TcTRMSWNGZ3FGT1VRNWxMaGxJWVBRUVZLRWdZVlFjWGVaUzA5RmRUVDRQUlhnQUw0VlZxblRSTUFmRFlpbitUV2Yya0RTL1pIWTRoemdDQkE2RE1xcTR4VUdZektra0FFc3dLZkwzWTJJMTk4OEJNVGVHeENjTEkzK1dpdW03V2g0Z0VybkZRSkRyOG9LU0ZNRXBTZzgwVXd1aDJ5Y0xTV1MyV2xXeTFEUXN6NDFWTFg5RUs2NE1UYlRnNmt4aXhkMTdhQnRVdHV2Mk1sTjFiMDVHOURIR01ad2dhMWZLVTNRODRzWENvWW5FYWUybDNBZ2FLTXJla1E3S1VMWHZlNEM2eVEvYkx6L0toa2tGUkpXU1ZwVkJScFh1QjNFRllRM2huS3JmWkxia1IvS3R5ajNOUTFiY1EreEFFVWhsL0p1MWdDQWdBM2pkSVhoMWpzNnpiV2pSS2c3V3hyUWhwdHg5YmFyYVFBRzJtMTBwejZVSkZZMXEyL0FhUFRCL3dBc0RMT0h5SmRvN2RWSE1jYmFtUGJOZkZvR3Jtd0hOTEMxdFNQcmFmZmpmVFh4azVzR3RQSW84VGF6aDBpYUxwZHk5clltd2xoR3YzbTRacjhYR3QyVUJEQ1VzWndKcW80WEo4TzZ2RXZjTkozQXhEVXVaSlZQQ3lIVm0vWEgzWUhESTkwV2h6ZHROMGtrWDEyOFNQdmVpeDVIenNRZWdMZnp3Z0FkNlZiSUJqb3hoWnhmKytTYnVpamhMRjNUaTUzMDYyUDNzeE9ad2ZZUkc4RHgzVCs2VHlIbWdQVnJkZlJZTDBqZmgvVzI3Ty9FRCsvNGV2d1pNWDJHUjJnak1vc3gxazZkNEM1QTh3ZDRBVWQ0TDdvL3F3Tk9HYnFpSXZ0ODVyQWF3NS9FaFdZRktTY3BUOUwveDlLL3orWSt5OGQrYTg5N1ZNWTVVVUcwMW55cytSbnliLzlvSDlxeHAvMC8yNVBmZ01VK0l2UnVoRUFBQT09IgogICAgfSwKICAgICJzZWFsZWQtbGl2ZS1kZXBsb3ltZW50Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiZjhhOWEwN2FiYzJlYjUyY2RmNmJjZGJhMmQ5Zjc5ZGVjMDczMTQ1YzMxZDA0NDRhOWUwZmUxMTQ3ZTQyY2M0ZSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MjY4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxWlcxUGJPQlIrNTFjd2ZzYkVEcmtZOW1VWmJtVVcwZ3pRN3V6c01CMUZQa2tFc3VXVjVOQzB3Myt2SkNmRUY5bE82V1g3VUY1Q3BLTnorYzVWeXVlZDNWMEhKZVE5Y0VGWTdCenBiNG5vTEh4blQyODlrampVaTZlUVVMYU1JSmJaZWdRU2hVZ2l0ZmRaZmRkTTRwaEpKQlVUOGJLb2wvbU00WEJmZnlTY1Bld1QxcEVjWWNWMzVoTERtc1JUeGlNSTNSQXcwVW9jR1EwMkVvOHFGSjNLaXRIS0NLeHM3V09XVWhaTjlnWERCTkVPQ2lNaWNzWnl0b0R3ajkzTDBmbXArL2ZZOVR4dnVJdFRxVmE1WTVnK1o3eWRHRVZnVmRqSkVZZ0U0V2FxTkRNYjlZTUFmQSs1aDE3WWRYdEJjT0FlRHZ2Z0RzSXdtQVJUd09pd3ErVWI2WTVJQUcrd1ZqclBPQWh4Q2lpa0pJWmJ3Q3dPTmU0RHoxdUo0UW8vZ3BGZTlGK1dGa2FUTjBSSXhwZFhKQ0pTYjYrUENLQ0ExVTdlZnhHU2VINkZKa0R6YmpWQmsrdy9waFBnTVVnUTJxLzErS3hPUFJmZ0ZDb09KTXlXZVdseW1SZ1dONEE1cU4yaUF5UkVDZFdyZWYzS2dkZ1FqRDhvUG5JcUdnbTBpcFlWTDh5aWhNVTZwWTR5MzhDVHM5ZDhwQlhpTmNnNWpZcXhrekZXNmtjc2plVXQ4QVhCY0l5eC9uYkhIa0ZiUFVWVVFNNGdGVndTcVREajJxaC9jeHJtRFZSMEVDOUtCRldpUWlacFRELzhkZmJQeWZINDdNUGw3ZTI3czVzQ0FpdnlCYUtwb1o5TG1ZaWpUdWNSbDV6bWxBNDk3MzJsRWlkdlIzZkhsNk96Ry8zZitlVkZveHJLYy9HVXpGSnVJcXpERlhRa2d2MEhrZmREMFJ2WjMzMlJxME1pTkRNY2xUZG44TURLb2JqNldpMTNmNG81NnZZSFI4UEJBVDRZOUx3dURpWXd4TGlIL1Vub280RS82QjZveituMDBQY0hZYi9iN2ZuQmNOanI5aWU5UGhwNmZvQ3hweW9PY213S2pWTkt4MHdWajZXQlp6cGljcXlxemJyMjU4Z3BXVUNzNnRDWXN3bVVBdDRRVEJHaEtZZTd1VG8vWjFRWHZvTXlzc2FyRnlBdDUzV3BRM0p1TUo4RG9uTCt5ZWFZaEhHNURnL2J2c0J6eUh6OTV1NXUzQm9yVGdLY3NIQlRWTmNGTXM4eXhWZ1puamZNcnhEcHFHQ3AzRERxN2pRSWJ1MHZCWHZGZHBuMmtycmpES1BBQzd5OStseW9RMUFWUWNrd281cm03bVQ4bW5TemFPSTNhUExFK0NObEtIeU5ObzA1cC9wS1NINEg3ZmNLV3NXS3BWeXh0U0ZKOVlRaDdCamhKTlhHOVQwdnNwa2ZRYVJHRkUyaDZ0dzFhYmVmdzM4cGlEWnBMYklHUFl1b1J2c0Y0SlFUdVR4UjRRMGZiZkhnSUVyWjA1aVRCYUV3Z3pPQkVUV05vOXBwMThxaUJFMElKWkpBalRraFo0bWxBSmk5NDZzcnA3Sit2d1YrS0h3YjArVU5ZL0pjYVNxV1FzMWJTb2prS1RSRElCR1hhZkkxK2VSM2Z5ZFVEWm9TZUVSaUV5RFhpcmZ1eDJ2alExaDBjdHN1WlRPbi9mUkxKOWRlTGRNdkdFMGp1TmJUMzVZZHhjeU5HNVgwNk4xUXhzMytLN3BGVVlxYXNEcHRYYkVnZGpXU2ZidGtHU1ZOY3ZUMk44c29USk5OMGxvSjF6bHN5OXJYYUxaQTNHQXY5SFZNaXFvUE9ra1dYVTFLcS9LbmJrcS9oTFlvRFlsc1VyYVc0T2ZydXJuNE5TbThvWEpSUW42RzV1dkJ6T1V3SStvTzMrajhyWWgvUHJhcldjRWVsbXZkQlpGU3YxSTFFcmZvdmxQWGd6Yzd1Zm5VQ1dPeEtkY25OTlZTendrWCtaRFVFNWR1dUJ2Q1kvcUVsdmtvTWEwdVRGWGFqZFpsR0tZb3BkSjkyU2hRTjQ0d3psUmNjSlltcGdONlhxRy9yZmRPNWlqT2Q1cTNzWjRpcm9rd3IwZkZSdzNsbWVNR2ptWjd4QXlERmFqVi9YY0N1UFcwTWtXL3FxaFJaS3FiWFhtVzJMd3ZaZjNoTklQRnNUcm11UUJSL3AzRStsNVRvbGtqWDZYTHRlZ0xqakNNUzNOR3I1OGp6dnB6eTd0TG9kbVc3NHI2WVZmRlVTemZHMVluRkpISU5xVmh2VEdxdTRLNjFVYWVEKzVDa3BaZmhhSkVMazhKdHdsVklraXExWEd1c3htOE9tS1JUN0IrcUhUOHlrMmc3ZzV0R1FCK09SMUx3ME9UZmxubnYwYUpUY0ZWY2wrelVMUHRIbFpuNjlxWEJYZUZrenZBM2E0ZkRJUFE2L3ZiYVY4Y1JyYTBvM0VvMFBmNkI4QVN3aTJzRElLcUcxNHVvdFY3MFdmYlRVbFlYejl0cEx2WmFBQng5clkvcGZEUlJhbWNXMXBDRms4ZkU1SWhzOG5yZzVlMytkcnJqVFFxV0dpZWQ5cFc3bCtWbTAxemo1UDF6OWY1Z3FpNzQxZDQ0aEdXRy90dElMVkJWSUdqR2gzR212b0NsMEh3VFNnMkRtTy9kblRiQXZiN3h1dmVkbG8zVmJyVzJLcm5XNHd6alBZeGx6WEpXN0J3UlZsRCtHeGR2NjlCTFI4bUxsZnpqVnZQL1VjbC9BOXJKTlZKZjZzdTBuaHNtNXhybTlML2h5cUdxV29VYXRiT0JEZFdzeUxwSzZvYVMzVE9JbHI3bHRoVzlxcjQxY2ZWVGpuMlZqL282bCtwZDU1M3ZnRG5UKzdMVENBQUFBPT0iCiAgICB9LAogICAgInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiMDQyMzI3YTAzNmVkMjU0Y2Y5NWRiZWIwYzA1NmFjMjViMDNhNmE4NDRiOTVhMzMyYzk5MmRmMjk0MzY5MTM2OSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODQxLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcxVXkyN2JNQkM4NXlzTW5VdFpvaVZMU205TmthS0hwRUVQeWFFb0FqNVdOaHVKVkVuS1FCcmszN3VVWlNkK0lJOURleEt3M0oyZG5aM1Z3OGxrRWdtamE3Vm9XUmVkVGg0d2dDSFdxV3V3VGhtTnNXaVZSaC9XY2RXMnZXZThBUXg3MjhNWXZsTmFoc1N6QWVrQ2tjYUhGanlUekxNdGNzRFcybmptRWRzOUM0Y0h1ekJDeHVIVFdmTXJWbWJxTFJNSXZpQnF3RmU2TnJZRlNTUUlGZGlkVHJjdFR3OGVwd2NSWW52dFZRdGtMaWhOeTZLVVNiNlpiVDNmZmtVc1ROK1lsc2ZPQ01XYUtaT3RjaHRkV0ljOFZ5QS9UcjVlbm44bU4xY2tTWkppSW5xUFVSdU5zSThiL0VpekZvNk84VEt2b2M1MVRCd3Zmc3JyMXlwVlNack9KSlVrejJSRk1pZ3A0YW1ja1NyaFdRVWNKT1g1bXR4SUxSSk1HNjBFYTI3RHNtN2RrdEY4SHFCS0VObWN5cFRPc2lMUHlqcFA1Z0RBNnhSbW9oQWlLK1pabWFTVktGbFJ6c29razBuRmhTZ3FudFNVc25vZTJneE5vbTRsWHJmWHhrZFg0ZEY1MFA3YU5IMExadzFUN2YvejFOSDJiL0xYd090Zitla1picmVLNzNvT1ZvTUhGNGJpcUJ3UnB1MGFqQXh6M1lON3VjTDBXTUx2c1VwN2E1b0dPeHlXclFZQllvNmE3OVU3Ynl4YkFBbVVoOUhXOVpacHNRUWJNaHFEamlJZDg4c2ppSHRnMElCQTRrUWJPYmljenFwNFRtT2E1SEZGNDZWeFBuWWdlZ3NPTEdvUlkrWHJvTzloZUhDc3RkS3NVWC9RQ2xqMDQ2blZiZyswZGNEM3lENHNjVXo3K1lhVDM3SEtlMDljbGdtbk9VOUptcVdNWkZuS0NVZXRTRlhXak5heUtua2hkay9jZFNCMkxrWUljTzRDNWQ2Yjd6c3dlV09WaDI4YTJSd01oQnN3dlJXd2QyY1dmdmZnL0c0MHRGM3ZJSEJPdjZobysvUjRvUGVZaWJmbTNPV28yaEVIamF1K0dIMXlyaHB3OTNpcjdYN0dCaU5zNkIxeVBmOWgzWFpMNWdhUVQrRllvcFBIazc5cUZFZ29NUWNBQUE9PSIKICAgIH0sCiAgICAic291cmNlLWNvbW1pdC1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogImIwODExZGEyZDNiZDU5Mzg3MzNmMDA3OGU1ZmVjOGUxOWE2ZDk3NTJjNDI3N2I4MGJmZTk4MzdlZDcyYzZhM2IiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMjM5LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTEyT3dXNkVNQXhFNzN3RjRyd0hJRFkyL1pXcWlwellLWkVLckFndFdsWDk5OEpLdmZUNk5QTm12cXU2YmpiN3lpV3ZTL05TTjJPQUVIcFUxK013c2hpQ016SVdGaGNkanIyR0xpR24yTnorbW5hWStsbVduS3pzdmt4eU5pOFQ5U0FDUkdTaGl6elNvRHl3WWNJV2dGeUNNT2dwNnB3U3Rzb2tsZ1FqSzBacENjaitMOXhsbjhycEpYanlPWmRaOWpqWnhWN2ZubXc5RnR2OFpxSitYVDRlL2oxZmY5YmpUT3picDFVLzFTL2RXMzI3N3dBQUFBPT0iCiAgICB9LAogICAgInNxbGl0ZV9yZWFkb25seS5weSI6IHsKICAgICAgInNoYTI1NiI6ICI5MDkzYzY0ZjdmMGUzOWIyNDlkYTlmZWZkZjVhYWY0ZTQyNThiYzMxZTdhMjdmZDg4ODQ3OWNlMzI5YTIwNTA5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDQ2MTAsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNVZZYlcvYk5oRCs3bC9CWmNBa1piTHlzcWJBa2hwRGxxVlpnZVpsU2J0aENBS0JGazgyRjBsMFNTcU5XL1MvNzQ0U1pmbWxhZU12TnQvdWpuZlBQWGYwMXRiV2xZYWhta0hGVERhRmt1L0l5c0pFU3p2ZnlWUmRXVGJUU3VWSHpGaFJ5REZUVlRHUFdRVVBvRm1tS21OMW5WbkRicXpTa0d4dGJRMWtPVlBhTXE0bk02NE5ESEt0U3RwcDRkR1NnSFk5SzVTUjFjUnZuM0l6eFZVL1ZNYi8wdUIvR2N1dC8vMmZVVlVqZWNidHRDZjJDb2ZkZ1ErRnRQRExZREFRa0ROWm1SbGtOdFhBQlYwaXBKTXgyNDVaU3JhQVNFM0ZaMmFxN09nMUx3eEVod09HSDlyRlJrNnVPeEc1V1ptelNsbTNtRWlUNXJLQU1HSktkek5tWGhheXVnOWJLZlRSWEJwZ2YvT2lobE90bFE0RGVKVEdvaE5RVnRVZVFHL0xCMjZCQ1c3NW1PTUJEUjlxcVVFRWplWmFTelRIcWRGZ1ZQR0FpaE51VXB4SEMzNW13VytsRWpEU0tzQkJHUHdreTdKR1NRV005Z0l5ZS9XeURQQ3VMR2lsLytpZGxweW9xa0ozU1ZYNTRMR1NWM3dDSlNBbW9CS0dXYzBydzkwZWM4U2taVUtCY1g1eE9oSW44YU5FLzdYQkRyM3dyQkVlb3RFeDNXajBUdGNRTXl0TFVMVWRIVVFSNDRhSjhjSjVZcHpBSTJTMWhUQzR1ajQrT3o5bUgyclE4NVJDT2JxOGFPMWYzZnI3NmRtYi9ocWkxdENWUnBzRTFnWjAydTRJb2lRSG0wMVZoZjY5M2IzckpLQUx2WkFmUnV4Z1llSG1FTTk4Y25YeGxJMkxtbVE3T01MNDVxaVlsWEtpdVhXYSs3bzJtTm5sWjRvaXNudHZLUzhLQkFEYWRCc0c2ajZJbzd0djJVYVpNQ1QvTFVReUo3SzFTZlJNS1dRTzJUd3JBRjMzdWVJbEhDNlpkblA2OXZUa0hUdTVmSC94THR5TzJPdnJ5M05HQ0hUUSs1b3ZsejQ1Wmc4Smpwc3phQk1MeWNaTWFXR0NtQVdkQ2FtZmpPTE5valo5TU5zZUVMa3JrdHE1NXduQ2NBcEU4N0lrUHhsRlh4WVpENll1TEhrc2FNTGRvZXZRZzZndkEyZTczNXNNQ2pBM3h1b1J0d21KeWJQQi8wU1JFQzlIb1RuRXpxNHYzMSt4My85dDlxQ1pHeldZZWx4S1E0YVpaNnJwbmZ4T1hSM29VSk5ETEhPSWRCbWRZdDZrbERlNDFuQkRZS2pDcEYzSlFYUWVNa2ZVWC9xWnIxVlJqSG1HeER0b0ltQnJYYldCV0NrRUswVFkxZ040cEVXYW4vTDlnNWN0ZjJOaHU2UkU0WjZmOFRmSzVySUNFVE1zUko4d3hVc2NEcWtVc0k1Y0hmdFZpdjF6L0JaM0licE5NbkFDVHpCZHNZS1d0VUV5TllSNGFhYW9QQ3RxSXg5NkVqTDBDZEhDRGhjbHBnU1dETHVEQWoraTQwREhqRmZDeVRQMWJJWTIyU2tWRE1vT0VIMnpNSlFUVkpPd0MxZTRpWEFvMzJoN1FlbzhPeldjL2NiWERIYnoxMXZVd3lndWhzbEpoU0dnb05MS24rZWszSGNDWkNYc0lBdFZFOXdoQldSWS9CdHBwNzdLK1drVTUyeks4UEpLekJrODRFS1Z3UkVSNDVSMklrY0tLQUREc09NSWFhWUlMQ0x4c1hpNk1tTWprdGRGVVhMa25GQUh0N3ZEWC9rd3Yvdjg4c1dYWUQzQXBPd0NxZW5wUW8xbHp2dXpDMDNqMDlVQ1RSQXJFUnJrMHRCaUd3UzIxd1RJS2xkb2RET2ZGSlFnNFJMaHU5cUFzOGxOK3VibSt2UXNwQk9Kc1NtVmRkZGkrTlh6eXo5T1YxYVIvWGZWeTkxZDJ1WlhLdGRXNE1yZXQydFYwM3BRcVM1ZzZNNHRjTmdHYStXMnZTUWpoVzdPQlhlMGNNSmEyN1RMWHJsTlpKNlJuNEM5d2txNnQ4KzIyZDd1L292dDdmMm5ZakhHcHJTSDdzN0FEV0h3Z090M1lRUTFLNjNFVGdWNWVjRWRsQTZtem5QNTZDcFBNUHpJQzZLa29abVdRYlRzdWlaNkhudklSODBWc2R3MUVxS2wzWGhwWlJMWHNSV3U0elByc0ZpQnh5cCsxdmZsWFh4cktTaTYzcDgwN0VWL3NyeUt3OE9OcFc3ZHo1MWpXeTkyQ0dpU3ZBK0FubFd0QzBjajFualFjWVEzeHNXYU1QcHNHL0I1ME9OUWJEWTdoaUpxMnRDdnJJZjd0akh0RHQzYlpZMkFoN2l6VGxZcVhqSjFNU3FwTTAwcnM0NzVUcnhiR1VOT1Jhb2p1bEVQZ2gwcUc5cm9ZL0tCcm95YjIwZFEwakJUanhkY0dYRUlvcHFJWGRFNGNCMHlRZzk0dWV4TkF2SzRVTmpGSVk2cFNJUUZMOGVDSDdhN0UvSlkyQ1phRkxOeEVHd0Fvak1wcVdlSVFnaWR1TFc3TjF1bThPZ3Y1RlBjanluVUsyejdWR0t2VmRHV1gxdTh0YzcxNVh2UktidjNLWHJ2S3crOHRkY2Q5UlBOU1o2amU3N0tWS0ZiN21EU2pSeE91aEhtVzI4MFdSb1JpSndYUXA5L1RwSWZPRUc5dkkzN2FSb3ZNV1QwTE1lMXFGeE4xYWRENDBwTGgxYmFzSUxtN3pCaFVTM2FtQWw4M0ZFOVg0MVpDeUVYT216TDZGMmFVdk9mcG80NjBwUXVrNmFCZjROcjR3TGwvMVJJanZXa3BvZm9sVnNKQlpoTXl4a3BHS1dwVUZtYVJyMlRDUmNpNWUwUnBQYWhHQ08xMi9rTVJsY09JNzUyOUxHaEo4WTl0SjBBOTBVaWZDSmJQVi80QXdzbnlxWC9KQkpSbHpNVHJrR1JUaVppak9sbWxMYnBQY3hObzZ1UmhuMGZ6Q3gyU3ZTRmwxaDE5YzNjV0NpeGtiTDlWMXY3aEZ6N3cyYkNYY3ZtS0pGNnF1YlBtYmFCZEUxMXhOeC9KOVQyRFA0SHBST2Jud0lTQUFBPSIKICAgIH0KICB9Cn0K" + }, + { + "digest": "sha256:fe7b2153e525a23980aee63e62efcd7fd3dad18145633f8f57d8d2b4640c99d4", + "media_type": "text/markdown", + "content_base64": "IyBFeGFjdDUwOSB6bGliIHJlbGVhc2UgUHJvZHVjdCBzb3VyY2UgYWNrbm93bGVkZ21lbnQKCmBgYHlhbWwKcmV2aWV3ZXI6IGluZm9ybWVkLWRlY2lzaW9uLW93bmVyIChhZ2VudCBpbmZvcm1lZC1kZWNpc2lvbiwgY29kZXgpCmRlY2lzaW9uOiBhcHByb3ZlZAp3b3JrX2l0ZW06IElORkQtV1AtQURIT0MtMjAyNi0xMC0xMS1UMDkKc2NvcGU6IGV4YWN0NTA5IGRpc3RpbmN0IFQwNSByZWxlYXNlIHRlY2huaWNhbCBzb3VyY2UgcHJlcGFyYXRpb24gb25seQptYW5pZmVzdF9zaGEyNTY6IDc2N2M2ZTkzYWRmYTFhODQ0YjFlMjU5NDdmMzNlNzgyYjA4N2E3NDc0NTI1NzVmMDU2YjNkZjI1YmM4ODg3M2MKY29tbWVudDogPi0KICBTYW1lIGNvbXBsZXRlZCBUMDksIHdpdGggZmluYWwgc291cmNlLXJlZmluZW1lbnQgcmVjb3JkIHByZXBhcmVkIGJlZm9yZQogIGZvcm1hbCBhY2tub3dsZWRnbWVudC4gVGhpcyByZXNvbHZlcyByZXRhaW5lZCBzb3VyY2UgZmluZGluZ3M7IGl0IGlzIG5vdAogIGh1bWFuIGFwcHJvdmFsLCBwcml2aWxlZ2VkIG91dGFnZSBjb25zZW50LCBhIGN1cnJlbnQgbmF0aXZlIG91dGNvbWUsCiAgbmV3IHNjb3JlZCB0cmlhbCBvciB0YXNrIGNsb3N1cmUuIEV4YWN0IGZpbmFsIEFDSy9yb3cxOSBtZW1vLXJlZmVyZW5jZQogIHJlYmluZGluZyByZW1haW5zIHRvIGJlIGNoZWNrZWQgYmVmb3JlIGZpcnN0IGh1bWFuIHBvc3QuCmBgYAoKQWxsNTA5IHN0YWdlZCBoYXNoZXMgaW5kZXBlbmRlbnRseSB2ZXJpZnkuIFByaW9yNDgxIHNvdXJjZSBtYXAgcmVjb25zdHJ1Y3RzCmFsbDQ4MSBleGFjdCBieXRlczsgUHJvZHVjdDEzNS81MzY1MzI3IGFuZDY0L2FkNjM1IHJldmlldy1oaXN0b3J5IG1hcHMgcmVjb25zdHJ1Y3QKYWxsIHByaW9yIGZpbGUgaGFzaGVzIGFuZCBvcmlnaW5hbCBtYW5pZmVzdCBkaWdlc3RzLiBUaGlzIHJldmlldyBhZGRpdGlvbmFsbHkKcmV0YWlucyBmdWxsIHByZXZpb3VzMTM1ZmlsZSByZXZpZXcgYW5kIGV4YWN0NTM2NTMyNyBtYW5pZmVzdCBhcyBkZWR1cGxpY2F0ZWQKY29udGVudCBvYmplY3RzIHdpdGggYSBjb21wbGV0ZSBwYXRoL2hhc2ggbWFwcGluZyB1bmRlcgpkb2NzL2V2aWRlbmNlLzIwMjYtMTAtMTEtemxpYi1yZWxlYXNlLXByb2R1Y3QtZmluYWwtcmV2aWV3L2NoYW5nZXMtcmVxdWVzdGVkLTUzNjUzMjdiLy4KSW5pdGlhbGM2NyBhbmQgYWxsIGVhcmxpZXIgc291cmNlIGZpbmRpbmdzIHJlbWFpbiBoaXN0b3JpY2FsLCBub3QgcmV3cml0dGVuIGFzCnByaW9yIHN1Y2Nlc3MuIFRoZSB1bmF2YWlsYWJsZSBvcmlnaW5hbDY3IGZ1bGwgc25hcHNob3QgcmVtYWlucyBkaXNjbG9zZWQuCgpBbGwzOCBzb3VyY2Uvc3ludGhldGljIHRlc3RzIHBhc3MsIGluY2x1ZGluZyBmdWxsIG1vY2tlZCBtYWluIHBoYXNlIGRpc3BhdGNoLApzb3VyY2UtaGFzaC9wcmUtam91cm5hbCByZWZ1c2FsLCBwcml2YXRlIGNvcHkvY3JlYXRlZC12b2x1bWUvcHJlLWFkbWluL3Bvc3QKaW50ZWdyaXR5LCBhY3R1YWwgUG9kIGVwaGVtZXJhbCBkcmlmdCBiZWZvcmUgZWZmZWN0LCBkZXRlcm1pbmlzdGljIGJ1bmRsZQpjb3JydXB0aW9uL2JvZHktbGltaXQvbmF0aXZlIHR5cGVkIGRlY29kZXIsIGNvdmVyYWdlL2V4cGlyeSBtdXRhdGlvbnMsIGV4YWN0Cm5vbi1wcnVuaW5nIGN1cnJlbnQtb3BlcmF0aW9uIHJlbGF0aW9uLCBvdXRhZ2U0MDMgcmVmdXNhbCBhbmQgc2VwYXJhdGUgcmVjb3ZlcmVkCnJvbGxiYWNrIHZlcmlmaWNhdGlvbi4gTm8gYWN0dWFsIG5hdGl2ZSBwaGFzZSwgY29udGFpbmVyLCBwcm92aWRlciBjYWxsIG9yIHJlYWwKZGF0YWJhc2UvUERQIHdhcyBleGVjdXRlZCBieSB0aGlzIHJldmlldy4KClRoZSBvcmlnaW5hbCB3aXJpbmcvZW1wdHljb3ZlcmFnZS9kdXBsaWNhdGUtZG9jdW1lbnQvYm9keS1leHBvcnQvbmF0aXZlLXNoYXBlCmZpbmRpbmdzIGFyZSBjb3JyZWN0ZWQuIEFjdHVhbCBuYXRpdmUgdHlwZWQgZGVjb2RlIGFjY2VwdHMxMnVuaXF1ZSBjb250ZW50cwp1bmRlcjEzIG1lbW8gbGFiZWxzLiBEZWZhdWx0IEpTT04gcmVnaXN0ZXIyMDc1MTFieXRlcyBpcyBiZWxvdzI1NktpQiwgd2l0aAo1NDYzM2J5dGVzIGhlYWRyb29tIGJlZm9yZSBsYXRlciByZXZpZXcgYXR0YWNobWVudHMuIEd6aXAgYnVuZGxlIGRlY29tcHJlc3Nlcwp0byBleGFjdCBzb3VyY2UgaGFzaGVzL2xlbmd0aHMuIE9yaWdpbmFsIGZpdmUgUHJvZHVjdCBuYXRpdmUtc2hhcGUgY2FzZXMgbm93CmFjY2VwdCB3aXRob3V0IGludmVudGVkIGVudW1zOiBuYXRpdmUgYm9keSB3aXRob3V0IG1lbW9faWQsIGNvbW1lbnQvbnVsbCwKcHJlcGFyZWQsIGluX2ZsaWdodCBhbmQgc3lzdGVtIHJvd3MgYXJlIGNvdW50ZWQsIG5ldmVyIGludGVycHJldGVkIGFzIGFwcHJvdmFsLgpGb3VyIGluZGVwZW5kZW50IG9wdGlvbmFsLUlEL3ZlcnNpb24vc2hhcGUgbXV0YXRpb25zIHJlZnVzZS4gUmV2aWV3PU5vbmUgd2l0aAplbXB0eSBkaXNwb3NpdGlvbnMgaXMgYSB2YWxpZCBzb3VyY2Ugc2hhcGUsIG5vdCBwcm9vZiBvZiBjdXJyZW50IGNvbnNlbnQuCgpNaW5pbWFsIHBvc3RSZWFkeSBwcm9vZiB1c2VzIGZpeGVkIGV4aXN0aW5nIGF1dGhlbnRpY2F0ZWQgY2Fub25pY2FsIEdFVCBmb3IKc291cmNlVDA1QDE7IHJlcXVlc3QgaWRlbnRpdHkgZXhwbGljaXRseSBkZXJpdmVzIGZyb20gdGhhdCBmaXhlZCByb3V0ZSwgbm90IGZyb20KYSBjbGFpbWVkIG5hdGl2ZSBib2R5IGZpZWxkLiBPcHRpb25hbCByZXNwb25zZSBpZGVudGl0eS92ZXJzaW9uIG11c3QgbWF0Y2ggaWYKcHJlc2VudC4gTmF0aXZlIHNvdXJjZSBjb250cmFjdCByZXR1cm5zIG9ubHkgcmV2aWV3L2Rpc3Bvc2l0aW9uczsgc2hhcGUgaXMKYm91bmRlZCBhbmQgYm9keSBzaXplIGNhcHBlZC4gT25seSBIVFRQMjAwLCBVVEMgb2JzZXJ2YXRpb250aW1lLCBkZXJpdmVkIHJlcXVlc3QKaWRlbnRpdHksIGhhc19yZXZpZXcgYW5kIGRpc3Bvc2l0aW9uX2NvdW50IHBsdXMgZXhwbGljaXQgbm9uLWluZmVyZW5jZSBmbGFncwpsZWF2ZSB0aGUgaGVscGVyLiBObyByZXZpZXcvZGlzcG9zaXRpb24gYm9keSwgZnJlZWZvcm0gbm90ZXMvcmVhc29ucywgc3RhdGVzIG9yCmFjdG9ycyBhcmUgZXhwb3J0ZWQuIEZ1bGwtY29tbWFuZCBwcml2YXRlLXNlbnRpbmVsL3Rva2VuLWVycm9yL0hUVFA0MDMgdGVzdHMKcHJvdmUgc3VwcHJlc3Npb24uIEV4aXN0aW5nIGNyZWRlbnRpYWwgc3RheXMgd2l0aGluIHRoZSBhZG1pdHRlZCBTdGF0ZUh1YiBQb2QsCk5vUmVkaXJlY3QvcHJveHktZGlzYWJsZWQgcGF0aCB1bmNoYW5nZWQuIEFjdHVhbCBMaWZlY3ljbGVTZXJ2aWNlIG5hdGl2ZS1ib2R5CmZpeHR1cmUgcnVucyB3aXRoIHN5bnRoZXRpYyBjYWxsYmFja3MsIG5vIERCL1BEUC4gTGF0ZXIgYWN0dWFsIG5ldy1pbWFnZSBSZWFkeQpjb3JyZWxhdGlvbiBhbmQgcmVhbCBjYW5vbmljYWwgYF9hdXRob3JpemVgIHBhdGggc3VjY2VzcyByZW1haW4gcmVxdWlyZWQgYW5kCnNlcGFyYXRlIGZyb20gaW5zdGFsbGVkIHN5bnRoZXRpYzJhbGxvdy84cmVmdXNlIGFuZCBmcm9tIGFjdHVhbCBmb3VuZGVyIGF1dGhvcml0eS4KClRoZSBuZXcgZGlzdGluY3QgaW1hZ2UgcmVsZWFzZSBrZWVwcyBleGFjdCBwdWJsaXNoZWRmNTU4L3NvdXJjZTliNCwgbmF0aXZlCmltYWdlNzYzL3NvdXJjZWM5NiBiYXNlbGluZSwgc2NoZW1hNS9jb25maWcvUFZDL2lkZW50aXR5IGFuZCBzb3VyY2UgcmVuZGVyIHBpbnMuCkZyZXNoIHByaXZhdGUgZHJpbGwvY29weSwgaXNvbGF0ZWQgb2ZmbGluZSBpbml0aWFsaXplci9VSUQxMDAwMSBwcmUvYWRtaW4vcG9zdApjb21wYXRpYmlsaXR5IGFuZCBleGFjdCBjcmVhdGVkLWNsb25lIGNsZWFudXAgcHJlY2VkZSBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5CmFuZCBtYW51YWwgb25lLURlcGxveW1lbnQgZXhwbGljaXRmYWxzZS1wcnVuZSByZWxlYXNlLiBJbnRlbnQgaXMgZHVyYWJsZSBiZWZvcmUKZWZmZWN0OyBhbWJpZ3VvdXMvZmFpbGVkIHBoYXNlcyBhcmUgcmV0YWluZWQgYW5kIGNhbm5vdCByZXBsYXkuIFJvbGxiYWNrIGltYWdlCjc2My9zb3VyY2VjOTYgcHJlc2VydmVzIGxhdGVzdCBEQiBhbmQgZG9lcyBub3QgZGVwZW5kIG9uIGZhaWxlZCBjYW5kaWRhdGUgREIuCkN1cnJlbnQtYXR0ZW1wdCBvcGVyYXRpb24vcmV2aXNpb24vcmVzb3VyY2UvaW5pdGlhdG9yL3RpbWUgYW5kIGV4cGxpY2l0ZmFsc2UKcmVxdWVzdCBhcmUgcmVxdWlyZWQgYmVmb3JlIGFjY2VwdGluZyBBcmdvIG9taXR0ZWQgZmFsc2U7IHRydWUvbnVsbC9zdHJpbmcgYW5kCmZvcmVpZ24gb3BlcmF0aW9ucyByZWZ1c2UuIE9sZCBhcHByb3ZlZCBSMiBoZWxwZXJzL2pvdXJuYWxzIHJlbWFpbiBpbW11dGFibGUsCklORkQtSU4tMDAxMCB1bnByb21vdGVkL3VuaW1wbGVtZW50ZWQuCgpQcm9wb3NlZCBvdXRhZ2UgcmVjb3ZlcnkgaXMgZXhwbGljaXQgaW4gdGhlIG5ldyBtZW1vIHF1ZXN0aW9uL3Rlcm1zL2hpZ2hsaWdodAphbmQgcHJvdG9jb2wsIHJlcXVpcmluZyBhIE5FVyBleGFjdCBodW1hbiBhY2NlcHRhbmNlLiBJdCBpcyBvbmx5IG1hbnVhbCBzYW1lNzYzLwpjOTYvbGF0ZXN0REItcHJlc2VydmluZyByZWNvdmVyeSBhZnRlciB0aGlzIHJlY29yZGVkIHJlbGVhc2UgYW5kIGZhaWxlZCBjYW5kaWRhdGUKc2VydmljZSBvdXRhZ2UsIDw9MzBtaW51dGVzIEFORCBleGVjdXRpb24gZGVhZGxpbmUuIFByZS1yZWxlYXNlIGFjdHVhbCBjb25maXJtZWQKY29uc2VudCBpcyBjYWNoZWQgcHJpdmF0ZWx5IGFuZCBoYXNoLWxpbmtlZCB0byB0aGlzIHJlbGVhc2UgaW50ZW50OyBpdCBpcyBoaXN0b3JpYwphbmQgZG9lcyBub3QgY2xhaW0gZnJlc2ggbGF0ZXIgcmV2b2NhdGlvbiBrbm93bGVkZ2UuIFJvb3QncyBmcmVzaCB1bmF2YWlsYWJsZQp3aXRuZXNzL3NlYWxlZCBVSUQvc291cmNlL2NhbmRpZGF0ZSBSZWFkeTAgcHJvb2YgaXMgcmVxdWlyZWQuIE5vNDAxLzQwMy9yZXZva2VkLwpjb25mbGljdC9taXNtYXRjaC9oZWFsdGh5LXNlcnZpY2Ugb3IgYmFja3VwL2NvcHkvcmVsZWFzZS9ub3JtYWx2ZXJpZnkvb3RoZXItdHJpYWwKZmFsbGJhY2suIFN1YnNlcXVlbnQgcmVjb3ZlcnkgdmVyaWZpY2F0aW9uIG5lZWRzIHNhbWUtam91cm5hbCBDT01QTEVURSByb2xsYmFjaywKb3JpZ2luYWwgb3V0YWdlIGxpbmsgYW5kIGV4YWN0NzYzL2M5NiBSZWFkeTEuIE5hdGl2ZSB3aW5kb3cgcmVjaGVjayBpbW1lZGlhdGVseQpiZWZvcmUgcGF0Y2ggcHJldmVudHMgc3RhbGUgcHJlcGFyYXRpb24gZnJvbSBleHRlbmRpbmcgdGhlIHRlcm0uIExhdGVyLXJldm9jYXRpb24KdW5jZXJ0YWludHkgaXMgZGlzY2xvc2VkOyBzb3VyY2UgYWNrbm93bGVkZ21lbnQgbmVpdGhlciBncmFudHMgdGhhdCBleGNlcHRpb24Kbm9yIHByb21vdGVzIGF1dG9ub215LiBJdGVtMTkgcmVtYWlucyBwcm9wb3NlZCB1bnRpbCBmb3VuZGVyIGRpc3Bvc2l0aW9uLgoKRnJlc2ggZnVsbCBzY2FuIGdhdGUgYmluZHMgaW1tdXRhYmxlZjU1OCBjb25maWc2MjIvZWxldmVuIGRpZmZJRHMvc291cmNlIGxhYmVscwphbmQgZXhhY3QzOE9TKzZQeXRob24vNDRQVVJMcyB3aXRoIGZpeGVkemxpYnIxLCByZXBvcnQgYnl0ZXMvaGFzaCBhbmQgbm8gZmluZGluZ3MuCk5vdyBtdXN0IHByZWNlZGUgREJOZXh0VXBkYXRlIGFuZCBzY2FuIGFnZTw9NGhvdXJzOyB0aGUgcmV0YWluZWQgT2N0MTEgc2NhbiBpcwpub3QgdmFsaWQgdGhyb3VnaCBPY3QxMiBleGVjdXRpb24gZXhwaXJ5IGJ5IGFzc3VtcHRpb24uIFJvdXRpbmUgcmVmcmVzaC9yZXNjYW4Kb2Ygc2FtZSBpbWFnZSBpcyBwZXJtaXR0ZWQvcmVxdWlyZWQsIG5ldyBmaW5kaW5ncyByZXRhaW5lZCBhbmQgcmVsZWFzZS9jbG9zdXJlCnJlZnVzZWQuIE5vIHplcm8tc3RhbGUsIGZ1dHVyZS1zYWZldHkgb3IgZXN0YXRlLWdyYWRlIGNsYWltLgoKVDA1IHJlbWFpbnMgcHJvZ3Jlc3MsIFdQMDAwOSBhY3RpdmUuIEluZGVwZW5kZW50IGZpbmFsIFBsYXRmb3JtIHJldmlldywgcm9vdApleGFjdCBzb3VyY2UvcGxhbi9tZW1vIGJpbmRpbmcsIHNlcGFyYXRlIGNvbmZpcm1lZCBmb3VuZGVyIHNvdXJjZTEvbmV3cmV2aWV3b3duMQphY2NlcHRhbmNlLCBhY3R1YWwgZnJlc2ggbmF0aXZlIGRyaWxsL3JlbGVhc2UgYW5kIGluc3RhbGxlZHBhY2thZ2UvcnVudGltZS9mdWxsCnNjYW4vY2Fub25pY2FsLXByb3ZpZGVyIHByb29mIHJlbWFpbiBwZW5kaW5nLiBSb290IHdpbGwgYWRkIG9ubHkgdGhlIHR3byBmaW5hbApvd25lciBhY2tub3dsZWRnbWVudHMgYW5kIHByb3Bvc2VkIHJvdzE5LCB0aGVuIHJlcXVlc3QgbmFycm93IHJlZmVyZW5jZS9oYXNoCmNvbmZpcm1hdGlvbi4gTm8gb3duZXIgY2hlY2tvdXQgd3JpdGUsIG5hdGl2ZS9wcml2YXRlREIvY3VzdG9tZXItZGF0YSBhY3Rpb24sCmNyZWRlbnRpYWwgYWNjZXNzLCBwdWJsaWNhdGlvbiBvciBwdXNoIG9jY3VycmVkIGluIHRoaXMgc291cmNlIHJldmlldy4K" + }, + { + "digest": "sha256:30c200b98f8692a8456e786d0c7a3acb5ff3634973911b088f56aa178d393fee", + "media_type": "application/json", + "content_base64": "ewogICJyZXZpZXdfaWQiOiAiUlBGLVJFVklFVy0yMDI2MTAxMS1JTkZELVpMSUItTkFUSVZFLVI0IiwKICAid29ya19yZWNvcmQiOiAiUlBGLUlOLTAwMDkiLAogICJyb2xlIjogInJhaWxpYW5jZS1wbGF0Zm9ybSB0ZWNobmljYWwgb3duZXIgb25seSIsCiAgInN0YXR1cyI6ICJ0ZWNobmljYWwtYWdyZWVtZW50LXNvdXJjZS1wcmVwYXJlZC1uZXctaHVtYW4tcHJvcG9zYWwtb25seSIsCiAgInJlbGVhc2VfbWFuaWZlc3Rfc2hhMjU2IjogIjc2N2M2ZTkzYWRmYTFhODQ0YjFlMjU5NDdmMzNlNzgyYjA4N2E3NDc0NTI1NzVmMDU2YjNkZjI1YmM4ODg3M2MiLAogICJyZWxlYXNlX3BhdGhzIjogNTA5LAogICJhY3R1YWxfcHVibGlzaGVkX21hbmlmZXN0X3NoYTI1NiI6ICI2YmEyYzM0MWI0OTZhYjdmNzlmOWM1ZmQzM2E5MjgzMWMyZjhkYjI1ZDAxOGE0YjRlNjdkNDFlMGFmOWM1YmM5IiwKICAiY2FuZGlkYXRlX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6ZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyIsCiAgInJvbGxiYWNrX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInJvbGxiYWNrX3NvdXJjZSI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAiYXJ0aWZhY3Rfc291cmNlIjogIjliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMiLAogICJ2YWxpZGF0aW9uIjogewogICAgInNvdXJjZV9tYW5pZmVzdF9zaGEyNTYiOiAiNzY3YzZlOTNhZGZhMWE4NDRiMWUyNTk0N2YzM2U3ODJiMDg3YTc0NzQ1MjU3NWYwNTZiM2RmMjViYzg4ODczYyIsCiAgICAic291cmNlX3BhdGhzIjogNTA5LAogICAgImFsbF9zb3VyY2VfYW5kX2V4ZWN1dG9yX2Nhc2VfaGFzaGVzX21hdGNoIjogdHJ1ZSwKICAgICJzeW50aGV0aWNfdGVzdF9tZXRob2RzX3Bhc3NlZCI6IDM4LAogICAgImFkZGl0aW9uYWxfY2hlY2tzX3Bhc3NlZCI6IDE4LAogICAgImFjdHVhbF9vd25lcl9zb3VyY2Vfb3V0Y29tZXNfc2hhcGVfZXhlcmNpc2VkX2luX21vY2tlZF9yZXBvc2l0b3J5X2ZpeHR1cmUiOiB0cnVlLAogICAgInByb3ZpZGVyX3N5bnRoZXRpY19wcml2YXRlX2ZpZWxkc19uZXZlcl9lbWl0dGVkIjogdHJ1ZSwKICAgICJhbGxfZm91cl9yZW5kZXJfaGFzaGVzX3VuY2hhbmdlZF9mcm9tX3ByZXZpb3VzX3JldmlldyI6IHRydWUsCiAgICAiYXV0aG9yaXR5X2pvdXJuYWxfYWN0dWF0b3JfbmF0aXZlX3Byb2dyYW1fdW5jaGFuZ2VkX2Zyb21fNDgxIjogdHJ1ZSwKICAgICJjdXJyZW50X3B1YmxpY19zY2FuX21hdGNoZXNfZXhhY3RfZnVsbF9jb250cmFjdCI6IHRydWUsCiAgICAibmF0aXZlX29yX3ByaXZhdGVfZGF0YWJhc2VfYWNjZXNzIjogZmFsc2UKICB9LAogICJyZXZpZXdlZF9ib3VuZGFyaWVzIjogWwogICAgIk9yaWdpbmFsIG9wZXJhdGlvbi9zbmFwc2hvdCBkaXNwYXRjaCB3aXJpbmcgZml4ZWQgYW5kIGNvbXBsZXRlIG1vY2tlZCBtYWluIHNvdXJjZSBndWFyZHMvam91cm5hbC9pbnRlbnQgZXhlcmNpc2VkOyBubyB1bmNlcnRhaW4gcGhhc2UgcmV0cmllcy4iLAogICAgIkV4YWN0IGZvdXIgcmVuZGVyIGZpbGVzIGFuZCBoZWxwZXIvY2FzZS9tZW1vIGhhc2ggcmVsYXRpb25zIGJlZm9yZSBhdXRob3JpdHkvZGlzcGF0Y2g7IHJvb3QgZmluYWwgc291cmNlIGNvbW1pdCBtdXN0IG1hdGNoIGJlZm9yZSBodW1hbiBwb3N0LiIsCiAgICAiTmF0aXZlLW9ubHkgZnJlc2ggZml4ZWQtb3JpZ2luIGNvbmZpcm1lZCBmb3VuZGVyL3NvdXJjZTEvY29tcGFuaW9ucmV2aWV3MSBub3JtYWwgYXV0aG9yaXR5LCBleGFjdCBtYW51YWwgZXhpc3RpbmdBcHBsaWNhdGlvbiBVSUQvUlYvc291cmNlIENBUywgb25lIERlcGxveW1lbnQgZXhwbGljaXRmYWxzZXBydW5lIGFuZCBjdXJyZW50IGNvbXBsZXRlZCBleGFjdCBvcGVyYXRpb24gcHJvb2Y7IG9sZCBSMiBhdXRob3JpdHkgbm90IHJldXNlZC4iLAogICAgIkV4YWN0IERlcGxveW1lbnQvY29uZmlnL1BWQy9mdWxsIFBvZCBzZWFscywgb3duZXIgY2hhaW4vaW1hZ2UvVUlEL0dJRC9SZWFkeSBhbmQgZXBoZW1lcmFsIHJlZnVzYWw7IHNvdXJjZS9hZG1pc3Npb24gZHJpZnQgcmVmdXNlcyBiZWZvcmUgZWZmZWN0LiIsCiAgICAiUHJvdGVjdGVkIGJvdW5kZWQgZnJlc2ggZHJpbGwvY29weS9pc29sYXRlZCBuZXcgdm9sdW1lL2Nsb25lL3ByZStwb3N0IHNjaGVtYTUgaW50ZWdyaXR5L2NvdW50ZXJzIGFuZCBjdXRvdmVyIGJhY2t1cDsgbGF0ZXN0REIgcmV0YWluaW5nNzYzL2M5NnJvbGxiYWNrIHdpdGggc2VwYXJhdGUgcmVjb3ZlcnkgdmVyaWZ5LiIsCiAgICAiRnJlc2ggaW1tdXRhYmxlYXJ0aWZhY3Qgc2NhbiBiaW5kcyBleGFjdDYyMmNvbmZpZy8xMWRpZmZJRHMvcm9vdGZzL3NvdXJjZSBsYWJlbHMvNDRjYW5vbmljYWxQVVJMcy8zOE9TNlB5dGhvbi96bGlicjEsIHplcm8gYWxsIGZpbmRpbmdzOyBhZ2U8PTRoIGFuZCBEQk5leHRVcGRhdGUvY3VycmVudCByZXBvcnQgaGFzaCBtYW5kYXRvcnkgcmVsZWFzZSt2ZXJpZnkuIiwKICAgICJQb3N0UmVhZHkgcHJvb2YgdXNlcyBhY3R1YWwgbmF0aXZlIHJldmlldy9kaXNwb3NpdGlvbnMgcmVzcG9uc2UsIGZpeGVkIHJlcXVlc3Qgcm91dGUvdmVyc2lvbiBhbmRIVFRQMjAwL3N0YXR1cy90aW1lL2JvdW5kZWRzaGFwZS9jb3VudHMgb25seS4gUHJpdmF0ZSBib2RpZXMvbm90ZXMvcmVhc29ucy9hY3RvcnMvc3RhdGVzIG5ldmVyIGxlYXZlOyBubyBhcHByb3ZhbC9hZHZpc29yeS9wcm92aWRlci12ZXJkaWN0IGluZmVyZW5jZS4gUm9vdCBzZXBhcmF0ZWx5IGNvcnJlbGF0ZXMgZXhhY3QgcmVhZHkgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UgYW5kIGNoZWNrcyBjdXJyZW50IGF1dGhvcml0eS4iCiAgXSwKICAicHJvcG9zZWRfbWFudWFsX291dGFnZV9yZWNvdmVyeSI6IHsKICAgICJyZXF1aXJlc19uZXdfZm91bmRlcl9jb25zZW50X2luX2V4YWN0X3BhY2tldCI6IHRydWUsCiAgICAic2NvcGUiOiAiT25seSB0aGlzIHRyaWFsIGZhaWxlZGY1NTgvc291cmNlIGZpbmFscmV2aXNpb24gLT43NjMvYzk2IERlcGxveW1lbnQtb25seSBsYXRlc3Qgc2NoZW1hNSBEQiByZXRhaW5pbmcgbWFudWFsIHN1cGVydmlzZWQgcmVjb3ZlcnkuIiwKICAgICJib3VuZCI6ICI8PTMwbWludXRlcyBhZnRlciBhY3R1YWwgcmVsZWFzZSBhbmQgYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVosIGNoZWNrZWQgYWdhaW4gaW1tZWRpYXRlbHkgYmVmb3JlcGF0Y2guIiwKICAgICJldmlkZW5jZSI6ICJJbmRlcGVuZGVudHJvb3QtY29uZmlybWVkIGV4YWN0IG5hdGl2ZSBhY2NlcHRlZCByZWNlaXB0IGNhY2hlZCBiZWZvcmUgcmVsZWFzZSwgcHJpdmF0ZWltbXV0YWJsZWhhc2gvam91cm5hbC9hdHRlbXB0IHBpbnM7IGZyZXNoIHRyYW5zcG9ydC11bmF2YWlsYWJsZSBvcjUwMi81MDMvNTA0IGFuZCBhY3R1YWxmYWlsZWRjYW5kaWRhdGVwbGFjZW1lbnQuIiwKICAgICJmb3JiaWRkZW4iOiBbCiAgICAgICJiYWNrdXAvcmVsZWFzZSBmYWxsYmFjayIsCiAgICAgICI0MDEvNDAzIiwKICAgICAgImV4cGxpY2l0cmV2b2tlZCIsCiAgICAgICJjb25mbGljdCIsCiAgICAgICJpZGVudGl0eS9zY29wZSBtaXNtYXRjaCIsCiAgICAgICJoZWFsdGh5IGNhbmRpZGF0ZSIsCiAgICAgICJmb3JlaWduIHRyaWFsIG9yIGZ1dHVyZWN1c3RvbWVyIHJldXNlIgogICAgXSwKICAgICJyZXZvY2F0aW9uX2xpbWl0YXRpb25fZGlzY2xvc2VkIjogdHJ1ZSwKICAgICJjdXJyZW50X3Jldm9jYXRpb25fdmVyaWZpZWRfZHVyaW5nX291dGFnZSI6IGZhbHNlLAogICAgImF1dG9ub21vdXNfb3Jfc2lnbmVkX2dyYW50IjogZmFsc2UsCiAgICAicmVjb3ZlcmVkX3ZlcmlmeSI6ICJTZXBhcmF0ZSBDT01QTEVURSByb2xsYmFjay9vcmlnaW5hbCBvdXRhZ2VhbmNob3IgYW5kIGFjdHVhbDc2M1JlYWR5MS9kYXRhL2N1c3RvZHkvY3VycmVudCBvcGVyYXRpb247IG5ldmVyIGltcGxpZXMgUERQIGFjY2VwdGFuY2Ugb3IgdGFza2Nsb3N1cmUuIgogIH0sCiAgImhpc3RvcnkiOiB7CiAgICAicHJpb3JfcmV2aWV3X21hbmlmZXN0X3NoYTI1NiI6ICI5ZDBmZjY3OWM2M2M1ODQ2NWI5NDBlZDcyYTI1OGI4ZjlhMTJmNDEzZGE5N2FhZDAxZWM3ZTMxMWRiNTVhNDQ1IiwKICAgICJleGFjdDEzMF9maWxlc19wbHVzX21hbmlmZXN0X2xvc3NsZXNzbHlfcHJlc2VydmVkIjogdHJ1ZSwKICAgICJkZWR1cF9kaXN0aW5jdF9ibG9icyI6IDgyLAogICAgInBhdGhfbWFwX2VudHJpZXMiOiAxMzAsCiAgICAiYXJjaGl2ZSI6ICJjaGFuZ2VzLXJlcXVlc3RlZC05ZDBmZjY3OSIsCiAgICAicHJpb3JfdW5pc3N1ZWRfZHJhZnRfcmVtYWluc19leHBsaWNpdGx5X3N1cGVyc2VkZWQiOiB0cnVlLAogICAgIm9yaWdpbmFsNjdfZnVsbHNuYXBzaG90X2Fic2VuY2Vfbm90X2ZhYnJpY2F0ZWQiOiB0cnVlCiAgfSwKICAicmVtYWluaW5nX2dhdGVzIjogWwogICAgIkF0dGFjaCBleGFjdCB0d28gb3duZXIgQUNLcyBhbmQgcHJvcG9zZWQgY2hlY2tsaXN0IHJvdzE5IG9ubHk7IGNvbmZpcm0gbmFycm93IGZpbmFsIHBhY2tldCByZWJpbmRpbmcgYmVmb3JlIGh1bWFuIHBvc3QuIiwKICAgICJDb21taXQgcHJlcGFyZWQgc291cmNlIGFuZCByZXRhaW4gZXhhY3QgYWN0dWFsIHJldmlzaW9uL2ZvdXJibG9iIHByb29mOyBORVcgZm91bmRlciBjb25maXJtZWQgZGlzcG9zaXRpb24gZm9yIGZ1bGwgcHJvcG9zYWwgaW5jbHVkaW5nIGJvdW5kZWQgb3V0YWdlIGV4Y2VwdGlvbi4iLAogICAgIkZyZXNoIGV4YWN0IHNvdXJjZS9uYXRpdmUgY3VzdG9keS9hZG1pc3Npb24vaGVhZHJvb20vY3VycmVudCBhdXRob3JpdHkgYmVmb3JlIGVhY2ggYXBwbGljYWJsZSBwaGFzZTsgYWN0dWFsIGN1cnJlbnQgaW1tdXRhYmxlIGFydGlmYWN0IGZ1bGxzY2FuL0RCIGZyZXNobmVzcyBiZWZvcmUgcmVsZWFzZSBhbmQgdmVyaWZ5LiIsCiAgICAiQWN0dWFsIG5hdGl2ZSBpbnN0YWxsZWQvc2NoZW1hL2hlYWx0aC9jdXJyZW50IGNhbm9uaWNhbCBQRFAgcHJlc2VydmF0aW9uIHByb29mIGJlZm9yZSBUMDUvcmlzayBjbG9zdXJlOyBwcmVwYXJhdGlvbiBhbmQgc3ludGhldGljIHRlc3RzIGRvIG5vdCBlc3RhYmxpc2ggY29tcGxldGlvbi4iCiAgXSwKICAic2NvcGVfbGltaXRzIjogewogICAgImh1bWFuX2FwcHJvdmFsIjogZmFsc2UsCiAgICAibmF0aXZlX2FjdGlvbiI6IGZhbHNlLAogICAgImJhY2t1cF9yZXN0b3JlX2RhdGFiYXNlX2FjY2VzcyI6IGZhbHNlLAogICAgImNyZWRlbnRpYWxzX3JlYWQiOiBmYWxzZSwKICAgICJvd25lcl9zb3VyY2Vfd3JpdGUiOiBmYWxzZSwKICAgICJwdXNoIjogZmFsc2UsCiAgICAiVDA1X2NvbXBsZXRlIjogZmFsc2UsCiAgICAicmlza19jbG9zZWQiOiBmYWxzZSwKICAgICJvdGhlcl9vd25lcl9yb2xlIjogZmFsc2UKICB9Cn0K" + }, + { + "digest": "sha256:94d5757bfd612c489d419f421c0abbaf3d5a991cc1a49d04a33f957aed3ddd8a", + "media_type": "text/markdown", + "content_base64": "IyBTZWN1cml0eSBjbG9zZS1kb3duIGNoZWNrbGlzdAoKKipPd25lcjoqKiB0aGUtY3VzdG9kaWFuLCBvbiBiZWhhbGYgb2YgdGhlIGZvdW5kZXIuICoqU3RhcnRlZDoqKiAyMDI2LTEwLTAzLgoqKlB1cnBvc2U6Kiogd2hpbGUgdGhlIGVzdGF0ZSBpcyBpbiBidWlsZCBtb2RlIChvcmllbnRhdGlvbiDCpzApLCBhZ2VudHMgbWF5IGZpeCwgc2ltcGxpZnkgb3IgcmVsYXggcGFydHMgb2YgdGhlIHNlY3VyaXR5IGxheWVyLiBFdmVyeSBzdWNoIHJlbGF4YXRpb24sIGFuZCBldmVyeSBjb250cm9sIGtub3duIHRvIGJlIHVuYXJtZWQsIGlzIGxpc3RlZCBoZXJlLiBBdCB0aGUgcHJvZHVjdGlvbiBjbG9zZS1kb3duIHRoZSBmb3VuZGVyIHdvcmtzIHRoaXMgbGlzdCwgYXJtcyBlYWNoIGl0ZW0sIGFuZCBoYW5kcyBvdmVyIHRoZSBrZXlzLiBBZnRlciB0aGF0LCBjaGFuZ2VzIHRvIHRoZSBzZWN1cml0eSBzeXN0ZW0gbmVlZCBlbGV2YXRlZCBjbGVhcmFuY2UuCgpBZGQgYSByb3cgd2hlbmV2ZXIgeW91IGxvb3Nlbiwgc2hvcnRjdXQgb3IgbGVhdmUgdW5hcm1lZCBhIGNvbnRyb2wuIFJlbW92ZSBub3RoaW5nOyBtYXJrIGl0ZW1zIGFybWVkIHdpdGggZGF0ZSBhbmQgZXZpZGVuY2UuCgp8ICMgfCBDb250cm9sIHwgQ3VycmVudCBzdGF0ZSAoYnVpbGQgbW9kZSkgfCBSZS1hcm0gYXQgY2xvc2UtZG93biB8IE93bmVyIHwgQWRkZWQgfAp8LS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18CnwgMSB8IFdhcmRlbiBzZWNyZXQtZmV0Y2ggcG9saWN5IGNoZWNrIChgY2hlY2tfZmV0Y2hfcG9saWN5YCkgfCBNaXNyb3V0ZWQgdG8gdGhlIG9wcy13YXJkZW4gU1NIIHNpZ25pbmcgcGluOyBjYWxsZXIgYXV0aCB0aGVyZSBiaW5kcyBvbmx5IGBvcHMtd2FyZGVuYCwgc28gZXZlcnkgb3RoZXIgb3duZXIgZ2V0cyA0MDMuIEJ1ZyByZXBvcnRzOiBvcHMtd2FyZGVuIGBmYWYxMTA2MWAsIGFjY2Vzcy1lbmdpbmUgYGI3OTJjNWQwYC4gYWNjZXNzLWVuZ2luZSBidWlsdCBhIHNlcGFyYXRlIHBpbiBgZmxleC1hdXRoLW9wcy13YXJkZW4tZmV0Y2hgIChwYWNrYWdlIGBvcHMtd2FyZGVuLnNlY3JldC5yZWFkYCB2MSwgYWxsb3dlZCBzZXQgZ2VuZXJhdGVkIGZyb20gdGhlIHJvdXRpbmcgY2F0YWxvZywgZGVueSBieSBkZWZhdWx0LCBjYWxsZXIgYXV0aCBlbmZvcmNlZDsgYWNjZXNzLWVuZ2luZSBgMDJiMTVhN2ApLiBEZXBsb3llZCAyMDI2LTEwLTAzIChhY2Nlc3MtZW5naW5lIGA0MjRmMWU1YCwgcmVsZWFzZSBgZmxleC1hdXRoLW9wcy13YXJkZW4tZmV0Y2hgLCBDbHVzdGVySVAgMTAuNDMuMTUxLjMsIHR1bm5lbCBgOjE5MDkxYCkuIFByb2JlczogYWxsb3cgw5cyOyBkZW55IGB1bmtub3duX25lZWRgLCBgd3Jvbmdfc3lzdGVtYCwgYHdyb25nX3Jlc291cmNlX3R5cGVgOyB1bmJvdW5kIHN5c3RlbSA0MDM7IG5vIHRva2VuIDQwMS4gb3BzLXdhcmRlbiByb3V0ZXMgZmV0Y2ggY2hlY2tzIHRoZXJlIChgN2Q0MzgxZWAsIGxpdmUgYGZldGNoX2ZsZXhfYXV0aF91cmxgIHNldCkuIFRoZSBnYXRlIGlzIGFybWVkIHdpdGggYSBjb3JyZWN0IHBvbGljeTsgaXRzIHJlc2lkdWFscyBhcmUgcm93cyA1IGFuZCA2LiB8IEZldGNoIGNoZWNrcyBnbyB0byBhbiBldmFsdWF0b3Igd2l0aCBhbiBleHBsaWNpdCBzZWNyZXQtcmVhZCBwb2xpY3kgcGVyIG93bmVyIHN5c3RlbSwgZGVueSBieSBkZWZhdWx0LCBjYWxsZXIgYXV0aCBlbmZvcmNlZDsgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGV2aWRlbmNlIHJlY29yZGVkLiB8IG9wcy13YXJkZW4sIGFjY2Vzcy1lbmdpbmUgfCAyMDI2LTEwLTAzIHwKfCAyIHwgaW5mb3JtZWQtZGVjaXNpb24gcG9zaW5nIHBhdGggfCBFYWNoIG1lbW8gbmVlZHMgYW4gYXR0ZW5kZWQgcmVxdWVzdGVyIGxvZ2luLCBhIGhhbmQtZWRpdGVkIGV4YWN0LXJlY29yZCBhZG1pc3Npb24gcGFja2FnZSBhbmQgYSBtYW51YWwgc3RvcmUgbG9hZC4gUmVkZXNpZ24gc3BlY2lmaWVkIGluIGluZm9ybWVkLWRlY2lzaW9uIGBkb2NzL3NwZWNzL0ZyaWN0aW9ubGVzc0RlY2lzaW9uSW50YWtlLm1kYCwgd29ya3BsYW4gSU5GRC1XUC0wMDA1IChgYTk3M2QzNmA7IGludGFrZSB2YWxpZGF0aW9uIGFuZCBodWIgd3JpdGUtYmFjayBidWlsdCBhbmQgdGVzdGVkLCBub3RoaW5nIGRlcGxveWVkKS4gSXRzIGJ1aWxkLW1vZGUgcmVsYXhhdGlvbnMgYXJlIHJvd3MgN+KAkzE0OyBtYXJrIGVhY2ggbGl2ZSBhcyBpdCBsYW5kcy4gfCBBdHRyaWJ1dGUtYmFzZWQgYWRtaXNzaW9uIGFuZCB3b3JrbG9hZC1pZGVudGl0eSBpbnRha2UsIHdpdGggaHVtYW5zLW9ubHkgYmluZGluZywgTUZBIGZyZXNobmVzcywgb25lIHF1ZXN0aW9uIHBlciBtZW1vIGFuZCBhdWRpdCBldmlkZW5jZSB2ZXJpZmllZC4gfCBpbmZvcm1lZC1kZWNpc2lvbiwgYWNjZXNzLWVuZ2luZSwgYXBwcm92YWwtZW5naW5lIHwgMjAyNi0xMC0wMyB8CnwgMyB8IFN0YXRlIEh1YiBxdWFsaWZpZXIgc3luYyAoQy00MSkgfCBgc3RhdGVodWIgZml4LWNvbnNpc3RlbmN5YCByZXBvcnRzIFBBU1Mgd2l0aG91dCBwdXNoaW5nIHdhaXQgcXVhbGlmaWVyczsgdGhlIGRpcmVjdCBjaGVja2VyIHJ1biB3b3Jrcy4gUmVwb3J0ZWQ6IHN0YXRlLWh1YiBgNzBkMDhmMzVgLiB8IENMSSBwYXRoIGZpeGVkIGFuZCBjb3ZlcmVkIGJ5IGEgcmVncmVzc2lvbiB0ZXN0OyBodWIgZGVjaXNpb24gYW5kIGdhdGUgZGF0YSB0cnVzdGVkIGFnYWluLiB8IHN0YXRlLWh1YiB8IDIwMjYtMTAtMDMgfAp8IDQgfCBQcm92ZW5hbmNlIG9mIGBwbGF0Zm9ybS93b3JrbG9hZHMvdGVuYW50LWVuZ2luZS9hdWRpdC1jb3JlLXNlbmRlcmAgdjEgfCBWYWx1ZSBpcyBjb3JyZWN0IChgYWxyZWFkeV9pZGVudGljYWxgKSwgYnV0IG5vdGhpbmcgcmVjb3JkcyB3aG8gZmlyc3Qgc2VlZGVkIGl0LiB8IEF1ZGl0LXRyYWlsIGVudHJ5IHJlY29uc3RydWN0ZWQgb3IgdGhlIHNlY3JldCByb3RhdGVkIHVuZGVyIGEgcmVjb3JkZWQgbGFuZS4gfCByYWlsaWFuY2UtcGxhdGZvcm0sIG9wcy1tYXNvbiB8IDIwMjYtMTAtMDMgfAp8IDUgfCBGZXRjaC1waW4gc3ViamVjdCBpZGVudGl0eSB8IGBzdWJqZWN0LmlkYCBpcyBhc3NlcnRlZCBieSB3YXJkZW4gKGl0cyBzdWJqZWN0IGVudiwgb3IgYG9wZXJhdG9yYCkuIFRoZSBjYWxsZXIgYmluZGluZyBwcm92ZXMgb3BzLXdhcmRlbiBhc2tlZCwgbm90IHdoaWNoIGh1bWFuIG9wZXJhdG9yIGRpZC4gfCBCaW5kIHRoZSBzdWJqZWN0IHRvIGFuIGF0dGVuZGVkIGh1bWFuIGlkZW50aXR5IChLZXlDYXBlL05ldEtpbmdkb20gY2xhaW0pIG9uIGZldGNoIGNoZWNrcy4gfCBhY2Nlc3MtZW5naW5lLCBvcHMtd2FyZGVuIHwgMjAyNi0xMC0wMyB8CnwgNiB8IEZldGNoLXBpbiBsYW5lIHNldCBiYWtlZCBpbnRvIHRoZSBpbWFnZSB8IEFueSBjaGFuZ2UgdG8gYSBzZWNyZXQgbGFuZSBpbiB0aGUgY2F0YWxvZyBuZWVkcyBhIHJlZ2VuZXJhdGlvbiAoYHRvb2xzL2dlbl9vcHNfd2FyZGVuX2ZldGNoLnB5YCkgYW5kIGFuIGltYWdlIHJlYnVpbGQuIEEgbmV3IG93bmVyIHN5c3RlbSBhbHNvIG5lZWRzIGEgYmluZGluZyByZWRlcGxveS4gc2VjcmV0cy1lbmdpbmUgb3ducyBubyBsYW5lIGFuZCBoYXMgbm8gYmluZGluZyB5ZXQuIHwgTGFuZSBjaGFuZ2VzIGZsb3cgdGhyb3VnaCBhIHJldmlld2VkIHJlZ2VuZXJhdGlvbiBwaXBlbGluZSwgb3IgdGhlIHBvbGljeSBkYXRhIGlzIGxvYWRlZCBhdCBydW50aW1lIHdpdGggaW50ZWdyaXR5IGNoZWNrcy4gfCBhY2Nlc3MtZW5naW5lIHwgMjAyNi0xMC0wMyB8CnwgNyB8IGluZm9ybWVkLWRlY2lzaW9uIGludGFrZSBzdWJtaXR0ZXJzIChSMSkgfCBQb3NpbmcgaXMgbm8gbG9uZ2VyIG9wZXJhdG9yLWdhdGVkOiBhbnkgbGlzdGVkIGludGFrZSBzdWJtaXR0ZXIgY2FuIHB1dCBhIG1lbW8gaW4gZnJvbnQgb2YgdGhlIGZvdW5kZXIuIE5vdCB5ZXQgbGl2ZSAoSU5GRC1XUC0wMDA1KS4gfCBTdWJtaXR0ZXIgYW5kIG1lbW8tY2xhc3MgbGlzdHMgYXJlIHJldmlld2VkIGRhdGEgd2l0aCBhIHNpZ25lZCByZWdlbmVyYXRpb24gcGF0aC4gfCBpbmZvcm1lZC1kZWNpc2lvbiwgYWNjZXNzLWVuZ2luZSB8IDIwMjYtMTAtMDMgfAp8IDggfCBQb3NpbmcgdmlhIFN0YXRlIEh1YiAoUjIpIHwgV29ya3N0YXRpb24gYWdlbnRzIHBvc2UgdGhyb3VnaCBTdGF0ZSBIdWIsIHdob3NlIEFQSSBpcyB1bmF1dGhlbnRpY2F0ZWQgb24gdGhlIGxvb3BiYWNrIHR1bm5lbDsgYGRyYWZ0ZWRfYnlgIGlzIGFzc2VydGVkLiBOb3QgeWV0IGxpdmUuIHwgVGhlIGh1YiBhdXRoZW50aWNhdGVzIGl0cyB3cml0ZXJzIGJlZm9yZSBmb3J3YXJkaW5nOyB0aGUgZm9yd2FyZGVkIHN1Ym1pdHRlciBjYXJyaWVzIHRoYXQgaWRlbnRpdHkuIHwgc3RhdGUtaHViIHwgMjAyNi0xMC0wMyB8CnwgOSB8IEFkbWlzc2lvbiBvbiBjYXJyaWVkIGNvbnRleHQgKFIzKSB8IFRoZSBkZWNpc2lvbiBwb2ludCBkZWNpZGVzIG9uIGNvbnRleHQgdGhlIHJldmlldyBzZXJ2aWNlIGNhcnJpZXMgKGFwcHJvdmFsIHJlcXVlc3RlciwgaHVtYW5fY29udHJvbCwgZGlnZXN0LCBzdWJtaXR0ZXIsIGNsYXNzKS4gTm90IHlldCBsaXZlLiB8IGFjY2Vzcy1lbmdpbmUgdmVyaWZpZXMgYSBzaWduZWQgYXBwcm92YWwtZW5naW5lIGNsYWltIGFuZCBhIHNpZ25lZCBpbnRha2UgcmVjZWlwdCBpdHNlbGYuIHwgYWNjZXNzLWVuZ2luZSwgYXBwcm92YWwtZW5naW5lLCBpbmZvcm1lZC1kZWNpc2lvbiB8IDIwMjYtMTAtMDMgfAp8IDEwIHwgUmVxdWVzdGVyIGNsaWVudCBjcmVkZW50aWFsIGN1c3RvZHkgKFI0KSB8IFRoZSBgaW5mb3JtZWQtZGVjaXNpb24tc2l0dGluZy1yZXF1ZXN0ZXJgIGNsaWVudCBjcmVkZW50aWFsIG1vdmVzIGZyb20gYXR0ZW5kZWQgY3VzdG9keSBpbnRvIHdvcmtsb2FkIGN1c3RvZHkgKEVTTyBpbnRvIHRoZSByZXZpZXcgcG9kKS4gTm90IHlldCBsaXZlLiB8IFJvdGF0aW9uIHNjaGVkdWxlLCBFU08gcmVhZCBhdWRpdCwgc2libGluZy1wYXRoIGRlbmlhbCBwcm9vZi4gfCByYWlsaWFuY2UtcGxhdGZvcm0gfCAyMDI2LTEwLTAzIHwKfCAxMSB8IEFkbWlzc2lvbiBkYXRhIGJha2VkIGludG8gdGhlIGltYWdlIChSNSkgfCBBZG1pdHRlZCBjbGFzc2VzIGFuZCBzdWJtaXR0ZXJzIGFyZSBiYWtlZCBpbnRvIHRoZSBhY2Nlc3MtZW5naW5lIGltYWdlLiBOb3QgeWV0IGxpdmUuIHwgUnVudGltZS1sb2FkZWQgcG9saWN5IGRhdGEgd2l0aCBpbnRlZ3JpdHkgY2hlY2tzLCBvciBhIHJldmlld2VkIHJlZ2VuZXJhdGlvbiBwaXBlbGluZSAoYXMgcm93IDYpLiB8IGFjY2Vzcy1lbmdpbmUgfCAyMDI2LTEwLTAzIHwKfCAxMiB8IEh1YiBkZWNpc2lvbiB3cml0ZS1iYWNrIChSNikgfCBBbnN3ZXJlZCBtZW1vcyByZXNvbHZlIGh1YiBkZWNpc2lvbnMgdGhyb3VnaCB0aGUgdW5hdXRoZW50aWNhdGVkIGh1YiBBUEkuIE5vdCB5ZXQgbGl2ZS4gfCBUaGUgaHViIHJlcXVpcmVzIHRoZSBpbmZvcm1lZC1kZWNpc2lvbiB3b3JrbG9hZCBpZGVudGl0eSBvbiByZXNvbHZlIGFuZCByZWNvcmRzIGl0LiB8IHN0YXRlLWh1YiB8IDIwMjYtMTAtMDMgfAp8IDEzIHwgQXBwcm92YWwgY3JlYXRlIGlkZW1wb3RlbmN5IChSNykgfCBObyBpZGVtcG90ZW5jeSBrZXkgb24gYXBwcm92YWwgY3JlYXRlOyBhIGNyYXNoIGNhbiBsZWF2ZSBvcnBoYW4gZHJhZnQgYXBwcm92YWxzLiBOb3QgeWV0IGxpdmUuIHwgSWRlbXBvdGVudCBhcHByb3ZhbCBjcmVhdGUuIHwgYXBwcm92YWwtZW5naW5lIHwgMjAyNi0xMC0wMyB8CnwgMTQgfCBGb3VuZGVyIG5vdGlmaWNhdGlvbiBjaGFubmVsIChSOCkgfCBUaGUgZm91bmRlciBpcyBub3RpZmllZCBvbmx5IHRocm91Z2ggdGhlIGh1YiBpbmJveC4gTm90IHlldCBsaXZlLiBnYXRlLWhvdXNlIEYzOiBhbnkgaHViIHdyaXRlciBjb3VsZCBzZW5kIGEgZmFrZSBtZW1vIG5vdGljZS4gfCBBbiBhdXRoZW50aWNhdGVkIG5vdGlmaWNhdGlvbiBjaGFubmVsIGNhcnJ5aW5nIG9ubHkgaWQgYW5kIHF1ZXN0aW9uLiB8IGluZm9ybWVkLWRlY2lzaW9uIHwgMjAyNi0xMC0wMyB8CnwgMTUgfCBQb3Npbmcgdm9sdW1lIChnYXRlLWhvdXNlIEYyKSB8IFdpdGggcG9zaW5nIHVuZ2F0ZWQsIGEgc3VibWl0dGVyIGNhbiBmbG9vZCB0aGUgZm91bmRlciB3aXRoIG1lbW9zOyBoYWJpdHVhdGlvbiB3b3VsZCB0dXJuIHRoZSBodW1hbiBjb250cm9sIGludG8gdGhlYXRyZS4gQSBwZXItc3VibWl0dGVyIHZvbHVtZSBjYXAgaXMgYSBTSE9VTEQgaW4gYnVpbGQgbW9kZS4gfCBQZXItc3VibWl0dGVyIHZvbHVtZSBidWRnZXQgZW5mb3JjZWQgKE1VU1QpLiB8IGluZm9ybWVkLWRlY2lzaW9uIHwgMjAyNi0xMC0wMyB8CnwgMTYgfCBJbnRha2UgZG9jdHJpbmUgY29uZGl0aW9ucyAoZ2F0ZS1ob3VzZSBDMeKAk0M2KSB8IERyYWZ0IHJ1bGluZyBHSC1ERUMtMjAyNi0wMjMgKGdhdGUtaG91c2UgYGFhYzM1MGRgLCBzdGF0dXMgcHJvcG9zZWQsIGF3YWl0aW5nIHRoZSBmb3VuZGVyKS4gQzHigJNDNiBhcHBseSBub3c7IFIzIChyb3cgOSkgaXMgdGhlIG1haW4gcmVsYXhhdGlvbiAoRjEpLCBSMiAocm93IDgpIGFsc28gY292ZXJzIEM2LCBSNSAocm93IDExKSBhbHNvIGNvdmVycyBDNS4gfCBSZW1vdmUgdGhlIGBjb21wYWN0LXNpdHRpbmdgIGV4YWN0LXJlY29yZCBicmFuY2ggb25jZSBpdHMgbWVtb3MgYXJlIHRlcm1pbmFsOyByZS1hcm0gUjMgd2l0aCBhbiBhY2Nlc3MtZW5naW5lIGFwcHJvdmFsLWNsYWltIGNoZWNrIGFuZCBhIHNpZ25lZCBpbnRha2UgcmVjZWlwdC4gfCBnYXRlLWhvdXNlLCBpbmZvcm1lZC1kZWNpc2lvbiwgYWNjZXNzLWVuZ2luZSB8IDIwMjYtMTAtMDMgfAp8IDE3IHwgT3duZXIgcmV2aWV3cyBhbmQgYXBwcm92YWwgcmVjb3JkaW5nIChjYW5vbiBgZGVsZWdhdGVkLW93bmVyLXJldmlld192MC4xYCkgfCBPd25lciByZXZpZXdzIHJlcXVpcmVkIGJ5IENDUnMgYW5kIHNpbWlsYXIgcmVjb3JkcyBhcmUgd3JpdHRlbiBieSBlYWNoIG93bmVyIHJlcG8ncyB3b3JrZXIgYWdlbnQgZnJvbSBpdHMgSU5URU5ULm1kLCBub3QgYnkgYSBodW1hbiBvd25lci4gVGhlIHJlcXVlc3RpbmcgYWdlbnQgcmVjb3JkcyB0aGUgZm91bmRlcidzIHJlc29sdmVkIGh1YiBkZWNpc2lvbiAoc3RhdHVzLCBiaW5kaW5nIGNvbmZpcm1hdGlvbnMsIGFkbWlzc2lvbiBtYXJrZXJzKSBhbmQgY29tbWl0cy4gVGhlIGZvdW5kZXIgc3RpbGwgZGVjaWRlczsgYGRlY2lkZWRfYnlgIGlzIHVuYXV0aGVudGljYXRlZCAocm93cyA4LCAxMikuIHwgUmV2aWV3cyBhbmQgcmVjb3JkaW5ncyBzaWduZWQgYnkgYXV0aGVudGljYXRlZCBhZ2VudCB3b3JrbG9hZCBpZGVudGl0aWVzOyByZWNvcmRpbmcgdG9vbGluZyB2ZXJpZmllcyBhbiBhdXRoZW50aWNhdGVkIGh1bWFuIHJlc29sdmVyOyBodW1hbiBvd25lciByZXZpZXcgcmVzdG9yZWQgZm9yIHJlZC1sYW5lIHJlY29yZHMgaWYgd2FudGVkLiB8IHRoZS1jdXN0b2RpYW4gfCAyMDI2LTEwLTA3IHwKfCAxOCB8IE9yZGluYXJ5IGF1dGhlbnRpY2F0ZWQgb3BlcmF0b3IvUERQIGFkbWlzc2lvbiBmb3IgVXNlciBFbmdpbmUgYXBwbGljYXRpb24ucmVnaXN0ZXIgfCBFeGVjdXRlZCBvbmUtdXNlIGV4Y2VwdGlvbiBVU0VSLUNBVEFMT0dVRS1JTkZERUMtMjAyNjEwMTEtUjEgdW5kZXIgY29uZmlybWVkIGZvdW5kZXIgYXBwcm92YWwgYjg1OTY5OGItNWQwOC00ZGE1LTk1OTktNDc2MGM2YTc5OWYxICgwMjowNzowOVopLiBFeGFjdCBleGVjdXRvciBiMGRiYmI5NyBhbmQgdHJhbnNwb3J0M2U1OTRlMGU7IHBhY2tldDMwN2M0ZmM1LCBncmFudCBTSEEgNzJlZTg0NjAzNDgwOWY0YWU2ODQ4ZWFjM2E0M2YyYjczOTBmMWRmN2E2N2VkZTUwZWZmNzQzNWQxYjQzZjgzOS4gVHdvIGV4YWN0IGluZm9ybWVkLWRlY2lzaW9uIGNhdGFsb2d1ZSByZWNvcmRzIGNvbW1pdHRlZDsgZ2VudWluZSBkZW5pYWwgcmV0YWluZWQsIHRocmVlIHRydXRoZnVsIGF1ZGl0cywgb25lIGNvbnN1bWVkIGxlZGdlciBhbmQgdW5zZW50L3VuY2xhaW1lZCByZWdpc3RlcmVkIGV2ZW50IHZlcmlmaWVkLiBQcml2YXRlIGdyYW50IHJlbW92ZWQuIE9yZGluYXJ5IG1hbmFnZW1lbnQgYWRtaXNzaW9uIHJlbWFpbnMgdW5tZXQ7IG5vIElBTS9odW1hbiBjbGFpbS9mdXR1cmUgcmVnaXN0cmF0aW9uL3RhcmdldGVkIHJlcGxheSBhdXRob3JpdHkuIEV4ZWN1dGlvbiBkZWFkbGluZTIwMjYtMTAtMTJUMjM6NTk6NTlaIGRvZXMgbm90IGVyYXNlIGZhY3RzLiBbT3V0Y29tZV0oZXZpZGVuY2UvMjAyNi0xMC0xMC1zZWN1cml0eS1jb25zb2xpZGF0aW9uL3VzZXItY2F0YWxvZ3VlLWluZGVwZW5kZW50LXBvc3RhcHBseS12ZXJpZmljYXRpb24uanNvbikuIHwgQmVmb3JlIGN1c3RvbWVyIHByb2R1Y3Rpb24sIHN1cHBvcnRlZCBhdXRoZW50aWNhdGVkIG9wZXJhdG9yIG1hbmFnZW1lbnQgd2l0aCBnZW51aW5lIG9yZGluYXJ5IGFsbG93L2RlbnkvYXR0cmlidXRpb24gYW5kIHVuYXZhaWxhYmxlIHJlZnVzYWw7IHJldGlyZSBib290c3RyYXAgdXNlLCBwcmVzZXJ2ZS9yZWNvbmNpbGUgbGVkZ2VyL2F1ZGl0cy9ldmVudHMuIEJyb2FkZXIgVVNFUi1XUC0wMDI2LVQwMy9VU0VSLVdQLTAwMjgtVDAyIHJlbWFpbiBsaXZlOyBubyBodW1hbiBqb3VybmV5IGNvbXBsZXRpb24gaW5mZXJyZWQuIHwgdXNlci1lbmdpbmUsIGFjY2Vzcy1lbmdpbmU7IEN1c3RvZGlhbiB0cmFja3MgfCAyMDI2LTEwLTExIHwKfCAxOSB8IEZyZXNoIGluZm9ybWVkLWRlY2lzaW9uIHJlYWRiYWNrIGR1cmluZyBhIGZhaWxlZCBUMDUgcm9sbG91dCB8IFByb3Bvc2VkIG9ubHk7IG5vIGV4Y2VwdGlvbiBhcHByb3ZlZCBvciB1c2VkLiBUaGUgbmV3IElORkQtV1AtMDAwOS1UMDUvemxpYi04NTA5MS1yMSBwYWNrZXQgd2lsbCByZXF1ZXN0IG1hbnVhbCwgc3VwZXJ2aXNlZCByb2xsYmFjayB0byBleGFjdCBpbWFnZTc2M2Mvc291cmNlYzk2IGlmIHRoZSBjYW5kaWRhdGUgbWFrZXMgaW5mb3JtZWQtZGVjaXNpb24gdW5hdmFpbGFibGUuIFByb3Bvc2VkIGxpbWl0czogc2VwYXJhdGVseSBjb25maXJtZWQgZm91bmRlciBjb25zZW50IHJldGFpbmVkIGJlZm9yZSByZWxlYXNlLCBleGFjdCBzYW1lIGpvdXJuYWwvc291cmNlL0RlcGxveW1lbnQvY29uZmlnL1BWQywgYXQgbW9zdDMwbWludXRlcyBhZnRlciByZWxlYXNlIGFuZCBiZWZvcmUyMDI2LTEwLTEyVDIzOjU5OjU5Wi4gTGF0ZXIgcmV2b2NhdGlvbiBjYW5ub3QgYmUgY2hlY2tlZCBkdXJpbmcgdGhlIG91dGFnZS4gTm8gZmFsbGJhY2sgb240MDEvNDAzLCBleHBsaWNpdCByZXZvY2F0aW9uLCBjb25mbGljdHMgb3IgbWlzbWF0Y2hlczsgbm8gY2FjaGVkIGF1dGhvcml0eSBmb3IgYmFja3VwcyBvciByZWxlYXNlLiB8IENsb3NlIHRoaXMgb25lLXVzZSBlbnRyeSB3aXRoIGFjdHVhbCBkaXNwb3NpdGlvbiBhbmQgdHJpYWwgb3V0Y29tZS4gUHJlc2VydmUgdGhlIG9yZGluYXJ5IGZyZXNoLWF1dGhvcml0eSBnYXRlOyBkbyBub3QgcmV1c2UgdGhlIG91dGFnZSBwYXRoIGFmdGVyIGl0cyB3aW5kb3csIGZvciBhbm90aGVyIHRyaWFsIG9yIGZvciBjdXN0b21lciBwcm9kdWN0aW9uLiBBIGZ1dHVyZSBzdGFuZGluZyByZWNvdmVyeSBtZWNoYW5pc20gbmVlZHMgaW5kZXBlbmRlbnRseSBvYnRhaW5hYmxlIGF1dGhvcml0eSBhbmQgaXRzIG93biByZXZpZXcuIHwgaW5mb3JtZWQtZGVjaXNpb24sIHJhaWxpYW5jZS1wbGF0Zm9ybTsgQ3VzdG9kaWFuIHRyYWNrcyB8IDIwMjYtMTAtMTEgfAo=" + } + ] + }, + "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-zlib-image-release/memo.json b/docs/evidence/2026-10-11-zlib-image-release/memo.json new file mode 100644 index 0000000..0667377 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/memo.json @@ -0,0 +1,132 @@ +{ + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b" + }, + { + "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:2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d" + }, + { + "item_id": "owner-product-final-ack-md", + "label": "owner-product-final-ack.md", + "hash": "sha256:fe7b2153e525a23980aee63e62efcd7fd3dad18145633f8f57d8d2b4640c99d4" + }, + { + "item_id": "owner-platform-final-ack-json", + "label": "owner-platform-final-ack.json", + "hash": "sha256:30c200b98f8692a8456e786d0c7a3acb5ff3634973911b088f56aa178d393fee" + }, + { + "item_id": "security-close-down-checklist-md", + "label": "security-close-down-checklist.md", + "hash": "sha256:94d5757bfd612c489d419f421c0abbaf3d5a991cc1a49d04a33f957aed3ddd8a" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md b/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md new file mode 100644 index 0000000..8fda8a8 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md @@ -0,0 +1,38 @@ +# 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. + +Refinement 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. + + +## Proposed explicit manual service-outage recovery consent + +Close-down checklist item19 in the-custodian/docs/security-close-down-checklist.md is PROPOSED ONLY until the founder accepts this exact new packet. This term changes the recovery authority dependency for this trial; previous T04 approval and owner source reviews do not grant it. Ordinary fresh native sourceT05@1 confirmed founder readback remains preferred for every phase. No standing recovery/autopilot/signed grant is created. + +Before release, root freshly authenticates the independently confirmed acceptance of these exact terms, marks its scoped receipt bounded_outage_rollback_pre_authorized=true, and captures exact receipt/outcome bytes into a unique0600 release-authority-cache.json in this trial's0700 ignored custody. Hash is recorded in durable release journal before remote effect. Cache is historical confirmed acceptance, never fabricated current outcomes. During failed-candidate service outage the ability to check subsequent revocation is unavailable. The founder explicitly accepts that narrow uncertainty for manual supervised rollback only, for at most30minutes from the actual durable release attempt AND beforeOct12 deadline. Root must personally evaluate the exact bounded recovery receipt; no agent promotion or automatic grant. + +If fresh source1 readback is unavailable, a separate fixed private /tmp/security-infd-zlib-root-recovery-receipt.json must record fresh≤120second structural unavailable evidence (transport unavailable orHTTP502/503/504), rootmanualverification, exactproposal/source/memo/cache/releaseattempt/DeploymentUID/configmapUID/PVCUID and sameimage763/sourcec96 rollback scope. No401/403/explicitrevocation/currentconflict/identity-or-scope-mismatch/healthy-service fallback. Cached consent must have been rootverified≤120seconds before this release. Native rollback independently requires actual candidateimagef558 at exactnewsource andReady0 plus sealedDeployment/config/PVC. It changes only existingApplicationsource and oneDeployment, prune=false, while retaining latestschema5database; no candidatePod/DB open is required. No drill/backup/copy/release/normalverify fallback is permitted. A rejected current outcome is never disguised as an outage. + +Fallback rollback-verify after completed recovery requires COMPLETE rollback in this same private journal, hashlinked original outage/failed-candidate witness, current recoveredimage763/sourcec96/Ready1 and sealedcustody. It does not require a candidate that has already been recovered. Original outage evidence is retained unchanged. Actual PDP preservation can remain unavailable or rejected; no currentapproval/PDPsuccess or taskclosure is inferred from rollback. Ordinary fresh outcome receipt is preferred once restored. Beyond30minutes/deadline or any mismatch, stop and obtain a new independently available founder disposition; neither expiry nor uncertainty grants emergency authority. Item19 is closed by actual disposition/trial outcome, preserving ordinaryfreshgate with no future/customer-production reuse. Standing recovery, if wanted later, needs separately reviewed independently obtainable authority. + +Post-Ready provider command now exports NO review/disposition/actor/submissionstate body. It records HTTP200 and timestamp, has_review and disposition_count, and request sourceID/version explicitly DERIVED from the fixed authenticated canonical route. Actual LifecycleService.outcomes returns only review/dispositions, without top-level source identity. ReviewNone/dict and dispositions list-of-dicts are checked; nullable comment states, SYSTEM actors, prepared/in_flight/confirmed/unresolved states and not_submitted/intake_created review states are accepted without interpreting them. Optional nativebodyidentity/version, if present, must match the route. No acceptance/currentapproval/go inference is made; founderconsent remains the separately independentlyrootverifiedauthority path. Freeform/unknown/private fields never leave; failures emit fixed metadata, never raw repr/body. Actual ownerPod verification also refuses any nonempty ephemeralContainers; current native estate is not claimed to have this drift. Document command-local content is deduplicated by digest while memo preserves both labels; actualtypedmemo/documents/intake andHTTPbodylimit are tested. diff --git a/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json b/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json b/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json new file mode 100644 index 0000000..153f9a4 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json @@ -0,0 +1,55 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+00:00", + "native_changed": false, + "protected_database_read": false, + "secret_read": false, + "deployment_generation": 25, + "ready_replicas": 1, + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate", + "full_receipt_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "full_receipt_path": "native-preflight-full.json", + "projection_reference_files": { + "sealed_live_deployment": "sealed-live-deployment.json", + "sealed_dependencies": "sealed-native-dependencies.json", + "candidate_deployment": "candidate-deployment.json" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/owner-packet-reference-diff.json b/docs/evidence/2026-10-11-zlib-image-release/owner-packet-reference-diff.json new file mode 100644 index 0000000..e630313 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/owner-packet-reference-diff.json @@ -0,0 +1,47 @@ +{ + "kind": "informed-decision.owner-ack-packet-reference-only-diff", + "original_manifest_sha256": "767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c", + "original_paths": 509, + "changed_existing_paths": [ + "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json" + ], + "unchanged_existing_paths": 505, + "executor_render_plan_runtime_unchanged": true, + "memo_fields_changed": [ + "packet" + ], + "exact_attachments": [ + { + "label": "owner-product-final-ack.md", + "source_path": "/tmp/infd-zlib-release-product-final-ack-stage/owner/docs/reviews/2026-10-11-zlib-release-product-owner-final-ack.md", + "source_repo_path": "docs/reviews/2026-10-11-zlib-release-product-owner-final-ack.md", + "source_manifest_sha256": "84f7fb6acc9a5c7a5af2d41376a4b94aaaad680900456b9027f1ae664d3c54ad", + "sha256": "fe7b2153e525a23980aee63e62efcd7fd3dad18145633f8f57d8d2b4640c99d4", + "bytes": 6420 + }, + { + "label": "owner-platform-final-ack.json", + "source_path": "/tmp/infd-zlib-release-platform-postcontract-ack-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/postcontract-technical-agreement.json", + "source_repo_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/postcontract-technical-agreement.json", + "source_manifest_sha256": "185bdec062548be8bd89edd89ae3f4b29dc87716123bbab87ee7a406ee5c5609", + "sha256": "30c200b98f8692a8456e786d0c7a3acb5ff3634973911b088f56aa178d393fee", + "bytes": 5559 + }, + { + "label": "security-close-down-checklist.md", + "source_path": "/home/worsch/the-custodian/docs/security-close-down-checklist.md", + "sha256": "94d5757bfd612c489d419f421c0abbaf3d5a991cc1a49d04a33f957aed3ddd8a", + "bytes": 9710, + "status": "row19-proposed-only-unapproved" + } + ], + "register_bytes": 237367, + "native_body_limit_bytes": 262144, + "unique_documents": 15, + "memo_labels": 16, + "native_actions": false, + "owner_reviews_unmodified": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/owner-platform-final-ack.json b/docs/evidence/2026-10-11-zlib-image-release/owner-platform-final-ack.json new file mode 100644 index 0000000..0cfa577 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/owner-platform-final-ack.json @@ -0,0 +1,80 @@ +{ + "review_id": "RPF-REVIEW-20261011-INFD-ZLIB-NATIVE-R4", + "work_record": "RPF-IN-0009", + "role": "railiance-platform technical owner only", + "status": "technical-agreement-source-prepared-new-human-proposal-only", + "release_manifest_sha256": "767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c", + "release_paths": 509, + "actual_published_manifest_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "candidate_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "rollback_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "rollback_source": "c96b0c6d881e855d1d158003c6de90ef390262e2", + "artifact_source": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "validation": { + "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 + }, + "reviewed_boundaries": [ + "Original operation/snapshot dispatch wiring fixed and complete mocked main source guards/journal/intent exercised; no uncertain phase retries.", + "Exact four render files and helper/case/memo hash relations before authority/dispatch; root final source commit must match before human post.", + "Native-only fresh fixed-origin confirmed founder/source1/companionreview1 normal authority, exact manual existingApplication UID/RV/source CAS, one Deployment explicitfalseprune and current completed exact operation proof; old R2 authority not reused.", + "Exact Deployment/config/PVC/full Pod seals, owner chain/image/UID/GID/Ready and ephemeral refusal; source/admission drift refuses before effect.", + "Protected bounded fresh drill/copy/isolated new volume/clone/pre+post schema5 integrity/counters and cutover backup; latestDB retaining763/c96rollback with separate recovery verify.", + "Fresh immutableartifact scan binds exact622config/11diffIDs/rootfs/source labels/44canonicalPURLs/38OS6Python/zlibr1, zero all findings; age<=4h and DBNextUpdate/current report hash mandatory release+verify.", + "PostReady proof uses actual native review/dispositions response, fixed request route/version andHTTP200/status/time/boundedshape/counts only. Private bodies/notes/reasons/actors/states never leave; no approval/advisory/provider-verdict inference. Root separately correlates exact ready candidate PodUID/image/source and checks current authority." + ], + "proposed_manual_outage_recovery": { + "requires_new_founder_consent_in_exact_packet": true, + "scope": "Only this trial failedf558/source finalrevision ->763/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-zlib-image-release/owner-product-final-ack.md b/docs/evidence/2026-10-11-zlib-image-release/owner-product-final-ack.md new file mode 100644 index 0000000..deff9a6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/owner-product-final-ack.md @@ -0,0 +1,97 @@ +# Exact509 zlib release Product source acknowledgment + +```yaml +reviewer: informed-decision-owner (agent informed-decision, codex) +decision: approved +work_item: INFD-WP-ADHOC-2026-10-11-T09 +scope: exact509 distinct T05 release technical source preparation only +manifest_sha256: 767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c +comment: >- + Same completed T09, with final source-refinement record prepared before + formal acknowledgment. This resolves retained source findings; it is not + human approval, privileged outage consent, a current native outcome, + new scored trial or task closure. Exact final ACK/row19 memo-reference + rebinding remains to be checked before first human post. +``` + +All509 staged hashes independently verify. Prior481 source map reconstructs +all481 exact bytes; Product135/5365327 and64/ad635 review-history maps reconstruct +all prior file hashes and original manifest digests. This review additionally +retains full previous135file review and exact5365327 manifest as deduplicated +content objects with a complete path/hash mapping under +docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/. +Initialc67 and all earlier source findings remain historical, not rewritten as +prior success. The unavailable original67 full snapshot remains disclosed. + +All38 source/synthetic tests pass, including full mocked main phase dispatch, +source-hash/pre-journal refusal, private copy/created-volume/pre-admin/post +integrity, actual Pod ephemeral drift before effect, deterministic bundle +corruption/body-limit/native typed decoder, coverage/expiry mutations, exact +non-pruning current-operation relation, outage403 refusal and separate recovered +rollback verification. No actual native phase, container, provider call or real +database/PDP was executed by this review. + +The original wiring/emptycoverage/duplicate-document/body-export/native-shape +findings are corrected. Actual native typed decode accepts12unique contents +under13 memo labels. Default JSON register207511bytes is below256KiB, with +54633bytes headroom before later review attachments. Gzip bundle decompresses +to exact source hashes/lengths. Original five Product native-shape cases now +accept without invented enums: native body without memo_id, comment/null, +prepared, in_flight and system rows are counted, never interpreted as approval. +Four independent optional-ID/version/shape mutations refuse. Review=None with +empty dispositions is a valid source shape, not proof of current consent. + +Minimal postReady proof uses fixed existing authenticated canonical GET for +sourceT05@1; request identity explicitly derives from that fixed route, not from +a claimed native body field. Optional response identity/version must match if +present. Native source contract returns only review/dispositions; shape is +bounded and body size capped. Only HTTP200, UTC observationtime, derived request +identity, has_review and disposition_count plus explicit non-inference flags +leave the helper. No review/disposition body, freeform notes/reasons, states or +actors are exported. Full-command private-sentinel/token-error/HTTP403 tests +prove suppression. Existing credential stays within the admitted StateHub Pod, +NoRedirect/proxy-disabled path unchanged. Actual LifecycleService native-body +fixture runs with synthetic callbacks, no DB/PDP. Later actual new-image Ready +correlation and real canonical `_authorize` path success remain required and +separate from installed synthetic2allow/8refuse and from actual founder authority. + +The new distinct image release keeps exact publishedf558/source9b4, native +image763/sourcec96 baseline, schema5/config/PVC/identity and source render pins. +Fresh private drill/copy, isolated offline initializer/UID10001 pre/admin/post +compatibility and exact created-clone cleanup precede fresh cutover backup/copy +and manual one-Deployment explicitfalse-prune release. Intent is durable before +effect; ambiguous/failed phases are retained and cannot replay. Rollback image +763/sourcec96 preserves latest DB and does not depend on failed candidate DB. +Current-attempt operation/revision/resource/initiator/time and explicitfalse +request are required before accepting Argo omitted false; true/null/string and +foreign operations refuse. Old approved R2 helpers/journals remain immutable, +INFD-IN-0010 unpromoted/unimplemented. + +Proposed outage recovery is explicit in the new memo question/terms/highlight +and protocol, requiring a NEW exact human acceptance. It is only manual same763/ +c96/latestDB-preserving recovery after this recorded release and failed candidate +service outage, <=30minutes AND execution deadline. Pre-release actual confirmed +consent is cached privately and hash-linked to this release intent; it is historic +and does not claim fresh later revocation knowledge. Root's fresh unavailable +witness/sealed UID/source/candidate Ready0 proof is required. No401/403/revoked/ +conflict/mismatch/healthy-service or backup/copy/release/normalverify/other-trial +fallback. Subsequent recovery verification needs same-journal COMPLETE rollback, +original outage link and exact763/c96 Ready1. Native window recheck immediately +before patch prevents stale preparation from extending the term. Later-revocation +uncertainty is disclosed; source acknowledgment neither grants that exception +nor promotes autonomy. Item19 remains proposed until founder disposition. + +Fresh full scan gate binds immutablef558 config622/eleven diffIDs/source labels +and exact38OS+6Python/44PURLs with fixedzlibr1, report bytes/hash and no findings. +Now must precede DBNextUpdate and scan age<=4hours; the retained Oct11 scan is +not valid through Oct12 execution expiry by assumption. Routine refresh/rescan +of same image is permitted/required, new findings retained and release/closure +refused. No zero-stale, future-safety or estate-grade claim. + +T05 remains progress, WP0009 active. Independent final Platform review, root +exact source/plan/memo binding, separate confirmed founder source1/newreviewown1 +acceptance, actual fresh native drill/release and installedpackage/runtime/full +scan/canonical-provider proof remain pending. Root will add only the two final +owner acknowledgments and proposed row19, then request narrow reference/hash +confirmation. No owner checkout write, native/privateDB/customer-data action, +credential access, publication or push occurred in this source review. diff --git a/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py b/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py new file mode 100644 index 0000000..bd136e8 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py @@ -0,0 +1,56 @@ +"""Fixed admitted StateHub-Pod source1 readback after verified candidate Ready. + +Request identity is derived solely from the fixed authenticated route. Actual +native outcomes returns review/dispositions, without top-level source identity. +Only HTTP200, timestamp, shape and counts leave this command. No review, +disposition, actor, submission state, private body or approval inference leaves. +""" +import datetime +import json +import urllib.request +import urllib.error + +MEMO_ID='infd-20261011-zlib-remediation-r1' +VERSION=1 + + +def require(value): + if not value: + raise ValueError('invalid bounded native outcomes shape') + + +def safe_outcome_metadata(value): + require(isinstance(value,dict)) + # Optional body identity is checked only if actually present, never invented. + if 'memo_id' in value: + require(value['memo_id']==MEMO_ID) + for key in ('version','memo_version'): + if key in value: + require(type(value[key]) is int and value[key]==VERSION) + require('review' in value and (value['review'] is None or isinstance(value['review'],dict))) + rows=value.get('dispositions') + require(isinstance(rows,list) and len(rows)<=1024 and all(isinstance(row,dict) for row in rows)) + return {'request_memo_id':MEMO_ID,'request_memo_version':VERSION,'request_identity_source':'fixed-authenticated-route','has_review':value['review'] is not None,'disposition_count':len(rows),'dispositions_interpreted':False,'approval_inferred':False,'current_approval_claimed':False} + + +def main(): + try: + from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file + request=urllib.request.Request(ORIGIN+'/v1/decisions/'+MEMO_ID+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) + opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) + with opener.open(request,timeout=15) as response: + require(response.status==200) + raw=response.read(1048577);require(len(raw)<=1048576) + result=safe_outcome_metadata(json.loads(raw)) + result.update(http_status=200,observed_at=datetime.datetime.now(datetime.timezone.utc).isoformat(),native_authenticated_canonical_lifecycle_outcomes=True,native_provider_path_returned=True,credential_material_output=False) + print(json.dumps(result)) + except Exception as error: + result={'request_memo_id':MEMO_ID,'request_memo_version':VERSION,'request_identity_source':'fixed-authenticated-route','status':'unverified','failure':'native_readback_unavailable_or_invalid'} + if isinstance(error,urllib.error.HTTPError) and type(error.code) is int and 100<=error.code<=599: + result['http_status']=error.code + print(json.dumps(result)) + raise SystemExit(1) from None + + +if __name__=='__main__': + main() diff --git a/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/archive-map.json new file mode 100644 index 0000000..373ee19 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/archive-map.json @@ -0,0 +1,2547 @@ +[ + { + "original_path": "deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "d871081999215bd3850ab1173064ed6cb6d7c23b26d9c3d5b3c5940e698d4c61", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "1e839623df15218ed46c7fb591029b9a653678cbde22898d5703a4ffbc082e99", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": "2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "original_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "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": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "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": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_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", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_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" + }, + { + "original_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", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_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" + }, + { + "original_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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_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" + }, + { + "original_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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_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" + }, + { + "original_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", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_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" + }, + { + "original_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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_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", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_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" + }, + { + "original_path": "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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_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" + }, + { + "original_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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_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" + }, + { + "original_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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_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" + }, + { + "original_path": "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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "original_sha256": "b511ecca1f21626495ae07725f5761e251d3d4beca9e3be6e7cdfdfbfe2073bc", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "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": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "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": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_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", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_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" + }, + { + "original_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", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_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" + }, + { + "original_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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_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" + }, + { + "original_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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_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" + }, + { + "original_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", + "original_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "retained_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" + }, + { + "original_path": "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": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json" + }, + { + "original_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", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_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" + }, + { + "original_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", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_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" + }, + { + "original_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", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_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" + }, + { + "original_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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_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" + }, + { + "original_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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_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" + }, + { + "original_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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_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" + }, + { + "original_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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_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" + }, + { + "original_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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_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" + }, + { + "original_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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_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" + }, + { + "original_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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_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" + }, + { + "original_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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_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" + }, + { + "original_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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_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" + }, + { + "original_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", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_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" + }, + { + "original_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", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_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" + }, + { + "original_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", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_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" + }, + { + "original_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", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_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" + }, + { + "original_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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_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" + }, + { + "original_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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_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" + }, + { + "original_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", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_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" + }, + { + "original_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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_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" + }, + { + "original_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", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_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" + }, + { + "original_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", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_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" + }, + { + "original_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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_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" + }, + { + "original_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", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_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" + }, + { + "original_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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_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" + }, + { + "original_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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_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" + }, + { + "original_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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_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" + }, + { + "original_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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_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" + }, + { + "original_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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_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" + }, + { + "original_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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_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" + }, + { + "original_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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_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" + }, + { + "original_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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_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" + }, + { + "original_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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json" + }, + { + "original_path": "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": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_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", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_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" + }, + { + "original_path": "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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_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", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "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": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json" + }, + { + "original_path": "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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_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" + }, + { + "original_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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_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" + }, + { + "original_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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_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" + }, + { + "original_path": "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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "original_path": "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": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json", + "original_sha256": "68e79957aaaaa65252700db528caf651751f36b71d71a356efef7366859e84e5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "original_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "original_sha256": "b511ecca1f21626495ae07725f5761e251d3d4beca9e3be6e7cdfdfbfe2073bc", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "original_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "original_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": "39ae68166d42e74f956ee7e28df9a8e6589b30e511babda37ff87304069f2545", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/intake.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "f683d222842804acd1833b97cd4fada9d24177ec1c77c86b42c24b992e43e4f7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/lifecycle-commands.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "6255cb65bd4bd1f0fb0d2dd605f6f468e5096425feed24f07652d91ec6cb6a8f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ddfe2619f4847238fe79ec779a15b0d8df5d178cbed989ac2d73c1480b57a706", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/archive-map.json", + "original_sha256": "c0d2b830a65d34378037bf2da36b4c7d9a9dda4db645ef434d74fda91142e1a9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md", + "original_sha256": "670b5b01e237b551f64f46f00271beba50a2b7652c769990e525c08a3d18809b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json", + "original_sha256": "5d373de0b737d586fad3428f58bbd977cbe7fda880fec556805236f84c450b9e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py", + "original_sha256": "22ba8e719113976ed780e17c25f089da17ded60db0c3c90525d8189c8ef1e20e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json", + "original_sha256": "ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json", + "original_sha256": "7864b23f4fcf3d9aa95759a9e91994771b722c482e83ced868812c050fdd91be", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json", + "original_sha256": "7b658eddf4177ca12125c9e75eb5a1412197e11254a571e16bb2780323702a06", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json", + "original_sha256": "0dfd6454405cf6a0b08d48443c532e9396c426ed164b3f59ecfb84389193050d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md", + "original_sha256": "446c172a1847a2c72f8cdb47223de849392fd8de23aff07dcea55302cc3a0bd7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py", + "original_sha256": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json", + "original_sha256": "7fff0df04402d2c2979aa4e85396c4490f6ce0ef04fec944e880cada8617b5b9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json", + "original_sha256": "912b68eed07e2fbb85cbba8660e054f6efde37a68ce1fbb7879c5db4cb02bed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json", + "original_sha256": "3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "original_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json", + "original_sha256": "247e340f77b892a7997e112405e1e05ec959fe441222069909cc7f3da6231201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json", + "original_sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "original_sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "original_sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "original_sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "original_sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "original_sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "original_sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/archive-map.json", + "original_sha256": "59a183221d04cdaac3480c3463a03027d42028b3e0dec9cd021157ad828f9d3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6", + "original_sha256": "8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f", + "original_sha256": "be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43", + "original_sha256": "c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa", + "original_sha256": "d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785", + "original_sha256": "e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a", + "original_sha256": "faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/original-manifest.json", + "original_sha256": "9d0ff679c63c58465b940ed72a258b8f9a12f413da97aad01ec7e311db55a445", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json", + "original_sha256": "932ced6cbd48c84e3442c0ae47c74e2dba8f56ec9444d7efdb28caac2ad48221", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json", + "original_sha256": "ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md", + "original_sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/archive-map.json", + "original_sha256": "fcfdfb7ffab192606433bc21c3dbb7f9715243638b7151db5f4c5c0c7b2b4667", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/archive-map.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240", + "original_sha256": "53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4", + "original_sha256": "5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3", + "original_sha256": "7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03", + "original_sha256": "896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660", + "original_sha256": "dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/original-manifest.json", + "original_sha256": "5365327bc651711da992f8d7abb4e57bb96e1c1c00f1d1cabaf184e38eed2cb7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/original-manifest.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "original_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json", + "original_sha256": "2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json", + "original_sha256": "67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": "6f95c61cf6b62fd1d07369d2f621510ced18c081e99c929bfe8927da4d884785", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/submission-proof.json" + }, + { + "original_path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "60fd6b2db75ee6ff4a7cd4a0601051d5ee461d423b59f3cca2facb3b174dde9e", + "retained_path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/intake.json b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/intake.json new file mode 100644 index 0000000..9bf46ed --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/intake.json @@ -0,0 +1,202 @@ +{ + "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 fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b" + }, + { + "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:2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery 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\n\n## Explicit recovery decision\n\nAlso approve the proposed item19 manual service-outage recovery term above: exact historical rootconfirmed acceptance captured before release may authorize only same763/c96 one-Deployment/latestDB-preserving rollback after failedf558 service outage, within30minutes AND the existingdeadline. Root must retain freshunavailable/failedcandidate witnesses and exactcache/journal/custody pins. Duringserviceoutage subsequentrevocation cannot bechecked; this bounded uncertainty is expressly disclosed and consented to in this new decision. No401/403/revoked/conflict/mismatch/healthyservice fallback, no backup/release fallback or future/customer-production reuse. Ordinaryfreshreadback remains preferred. Recovered placement is verified separately; rollback grants no claim of currentPDPsuccess or T05closure. See fullprotocol andclose-downchecklistitem19(PROPOSEDuntilactualacceptance).\n\n\nPost-Ready provider preservation proof records only fixed canonical sourceT05@1 request identity (derived from the authenticated route), HTTP200/timestamp and review-presence/disposition count. Actual native outcomes need not contain top-level memo identity. No review/disposition/state/actor body is exported or interpreted, and no currentapproval/acceptance is inferred from this provider proof. Actual founder go remains separate. Exact prior481 bytes and both completed contract reviews are retained by digest maps; unchanged history is not recopied.\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\": \"d871081999215bd3850ab1173064ed6cb6d7c23b26d9c3d5b3c5940e698d4c61\",\n \"execution_bundle_sha256\": \"2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d\",\n \"rollback_preflight_sha256\": \"0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5\",\n \"post_ready_native_provider_probe\": \"Fixed canonical SOURCE T05@1 authenticated GET inside existing StateHub dispatcher: HTTP200/timestamp plus has_review/disposition_count only. Request identity explicitly derived from fixed route; no bodyexport/dispositioninterpretation/approvalinference. Actual native service response shape verified synthetically with no database/provider.\",\n \"fresh_scan_contract_sha256\": \"b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2\",\n \"preparation_failure_history_sha256\": \"51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596\",\n \"bounded_outage_rollback_pre_authorization\": {\n \"status\": \"proposed-only-unapproved\",\n \"close_down_checklist_item\": 19,\n \"scope\": \"manual same763/c96 oneDeployment preserving latestDB, failedcandidate outage only\",\n \"maximum_seconds_from_release\": 1800,\n \"deadline\": \"2026-10-12T23:59:59Z\",\n \"normal_fresh_readback_preferred\": true,\n \"unavailable_revocation_check_disclosed\": true,\n \"forbidden\": [\n \"401\",\n \"403\",\n \"revoked\",\n \"conflict\",\n \"identity/scope mismatch\",\n \"healthy service\",\n \"other phase\",\n \"future/customer production reuse\"\n ]\n }\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\n\n## Proposed explicit manual service-outage recovery consent\n\nClose-down checklist item19 in the-custodian/docs/security-close-down-checklist.md is PROPOSED ONLY until the founder accepts this exact new packet. This term changes the recovery authority dependency for this trial; previous T04 approval and owner source reviews do not grant it. Ordinary fresh native sourceT05@1 confirmed founder readback remains preferred for every phase. No standing recovery/autopilot/signed grant is created.\n\nBefore release, root freshly authenticates the independently confirmed acceptance of these exact terms, marks its scoped receipt bounded_outage_rollback_pre_authorized=true, and captures exact receipt/outcome bytes into a unique0600 release-authority-cache.json in this trial's0700 ignored custody. Hash is recorded in durable release journal before remote effect. Cache is historical confirmed acceptance, never fabricated current outcomes. During failed-candidate service outage the ability to check subsequent revocation is unavailable. The founder explicitly accepts that narrow uncertainty for manual supervised rollback only, for at most30minutes from the actual durable release attempt AND beforeOct12 deadline. Root must personally evaluate the exact bounded recovery receipt; no agent promotion or automatic grant.\n\nIf fresh source1 readback is unavailable, a separate fixed private /tmp/security-infd-zlib-root-recovery-receipt.json must record fresh\u2264120second structural unavailable evidence (transport unavailable orHTTP502/503/504), rootmanualverification, exactproposal/source/memo/cache/releaseattempt/DeploymentUID/configmapUID/PVCUID and sameimage763/sourcec96 rollback scope. No401/403/explicitrevocation/currentconflict/identity-or-scope-mismatch/healthy-service fallback. Cached consent must have been rootverified\u2264120seconds before this release. Native rollback independently requires actual candidateimagef558 at exactnewsource andReady0 plus sealedDeployment/config/PVC. It changes only existingApplicationsource and oneDeployment, prune=false, while retaining latestschema5database; no candidatePod/DB open is required. No drill/backup/copy/release/normalverify fallback is permitted. A rejected current outcome is never disguised as an outage.\n\nFallback rollback-verify after completed recovery requires COMPLETE rollback in this same private journal, hashlinked original outage/failed-candidate witness, current recoveredimage763/sourcec96/Ready1 and sealedcustody. It does not require a candidate that has already been recovered. Original outage evidence is retained unchanged. Actual PDP preservation can remain unavailable or rejected; no currentapproval/PDPsuccess or taskclosure is inferred from rollback. Ordinary fresh outcome receipt is preferred once restored. Beyond30minutes/deadline or any mismatch, stop and obtain a new independently available founder disposition; neither expiry nor uncertainty grants emergency authority. Item19 is closed by actual disposition/trial outcome, preserving ordinaryfreshgate with no future/customer-production reuse. Standing recovery, if wanted later, needs separately reviewed independently obtainable authority.\n\nPost-Ready provider command now exports NO review/disposition/actor/submissionstate body. It records HTTP200 and timestamp, has_review and disposition_count, and request sourceID/version explicitly DERIVED from the fixed authenticated canonical route. Actual LifecycleService.outcomes returns only review/dispositions, without top-level source identity. ReviewNone/dict and dispositions list-of-dicts are checked; nullable comment states, SYSTEM actors, prepared/in_flight/confirmed/unresolved states and not_submitted/intake_created review states are accepted without interpreting them. Optional nativebodyidentity/version, if present, must match the route. No acceptance/currentapproval/go inference is made; founderconsent remains the separately independentlyrootverifiedauthority path. Freeform/unknown/private fields never leave; failures emit fixed metadata, never raw repr/body. Actual ownerPod verification also refuses any nonempty ephemeralContainers; current native estate is not claimed to have this drift. Document command-local content is deduplicated by digest while memo preserves both labels; actualtypedmemo/documents/intake andHTTPbodylimit are tested.\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\": \"43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 26242,\n \"content_base64\": \"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\"\n },\n \"execution/authority_journal.py\": {\n \"sha256\": \"db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 16345,\n \"content_base64\": \"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\"\n },\n \"execution/execution-plan.json\": {\n \"sha256\": \"d871081999215bd3850ab1173064ed6cb6d7c23b26d9c3d5b3c5940e698d4c61\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 4993,\n \"content_base64\": \"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\"\n },\n \"execution/native_program.py\": {\n \"sha256\": \"b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 20362,\n \"content_base64\": \"H4sIAAAAAAACA9U8a3PbyJHf8ytwzgcRNh8g9bBEGamTLa1XFa+tkuRcJaIKBQJDEisQwGIAybRP//26ex4YgCAl+7ypu0rWBufR09PT7+nxixcvfom+sNC6dvatnC3Tglk8yKOsOLZ4WuYBs7KcZX7uF1GaWAm7Z7kVRjzzi2DBuBUV/RcvXvzl4vLT+8uT3yzX2pkk0TJL88IK0mzVDf2CFdGSdRc+X8TRtPs7T5Nuyrs56/JymuVpwDjv8hWHeTML/u7PYn/O+2kG06KvbJz7EWfWZZkgmLM8T/POZEf1hlaUFCwHFOFPwH9WchZOduxJkvmrOPVDF9fr4xfveN7FyT8/fDo59TwYwL6wAJrefz65FA0ZoMhcOe9mskO/Jzu3hBj9sJK0gAUtQCDMozjuTf3grswmO93JTlAWKdDGbBJjkAy1EbohZzGjJeAbOqKZbE7jGKHUfvTUAFsS5B9+XGpyzOgIEzijeyZRzdkfZZRLYoTMD+MoYa46jr7+mOXpMuLpLM2XfgGgRs7ooDd0esPR9Wh3vH8E/3/lOGPHkYBmCnLnHjGAc/SBwvZ4klhAJiQQta9jKQdOEjV/HZckfaha8Y+vacL6ZRHYb9QOgCR4cCVx40OUhOmDxb5keqcsuXe/vXyZ8j58RTnw2mTn75/fnr379PGX8/eTnfFkZ8CKYJD7CfBvPrjb5fhff+Uv48nOo9xhmXT8fH7fnabhyv0ISHQRm7Qs3COHtgr8VuaJVXFwX8+JkgzG4cxuwb4U7nUOVAr8DCYwD0BgL7UpkPLvLqIO/2kq+2HnDjbYTXwQH/wDhC5gcnlexoWLawKj3pVTFhQx8cucFfB3NW+y00ugQU/HhpRGomAAd9sETpyIANsXmwvSkLmu01XctWSFD4fjE2Y1UVPUMERNQuJFCDuDIZz5MQsN4RINsP6xFbKMwZaTIGLcGGE2kxTGwNwukYU643S1ZElBe4kS5F8W9kIWRDzCjbW3AirBUgEJ0mQWzZd+1j66lwud0zsIRqPh4evD0NkfbgGc3QcKMnxugIkU3IbcggV3nrn1TrDsAriu2QYD/SxTi8FnHAWkn7cQA3gzDcR5qeOGiUBnda5AY/hVRngorjvZ2Ts6Ojw4nI16zJ8Gvb1wttfz2e6wNz08Ctj+Yfh63wkJ8km1vvX5/NQKFn4yZ21L8YwFYhlhWsQ3mJf08+UHueyiKDI+HgxgD3P2e9oP0jJOl9M+T4PIjwfy52Btk/15BLwAzOgnobVtObBcC7mW4KJBHM1YsApitnF+yHgRJZLEMPXbZEdLFOmUdppzloPapgFqWyireQLWivdByn0SEmSWx7aV+yDNcMB8lQQXKdAY7cO3R1s2+2BPQGcTpa2IW6inJBQOAzbSwCb8NdW7iiTwUQCXsOKS3cs9PBI0VOqteBFEEE67wQXpQwKqlYOhYzVuAEUNigr0AJpA2D/L8KMjdIFd2Vk8G2XvxmpSbTMFW2Yx7F1uTbeDSBc+mIkcVcaNg03R0p/jOPfdycfT89OT67P6QpW5JRuGo11UNf/b9Qy9Sk3kOLw9uTrrakRsw8BbchC3QGPyKAQ3DDisx0EjLH0r86Nc6NqfRg7xITVOUOY5KNMObryrlpAnIjSyPHNADqZ5OQvQlyF/xNiocD2Eh/SEG9NVsCwFC/dOPBNaaRKvrCIVJChyEHzLWJEWFL88DixbPOnWVFZFT5TOlwDAQs8vUDSOK1NoLtAvvqKEI4YoDChpJBnOG/e73JheHazdL9LCjz0OrQlYTfuNOzx00ORKV26alqDzw4pELR6PtYGZ1U5+Bi+7lfDQvhGmUgKFX5S8ppjQLq0uGekD7HFA4ziA6JOqual+YF3DY6CBcG6612AhJURy09zyg6IErpn5EagWK4CVIzwSyydVlgM1Q0stTWIVc/aTSYay/v3UAloNf5BWgM/RwdQJDsLDwyE73N8Ph+FwHxhqF5rYkcNmu0fg3Y/YiGSyKX4kmkqFa0LKbiQXCKM1BUZDP5yopjjvP9bUqEnJH9q6OgI5SZmcMsNTDL9rTjolOxy+Z3BQ0obDNDm67v7MjTG30oJHgQj8LhHbIW1cEH8rc1ptxozYzPqec9poq57jWa3xCKlm0drdhnzNMMk0gGGZtDWqSc13cqtEA85U+wU64xAl0nukMOebjsXH9Dd6s3HskeXiXuZzOOzxL35MPbn/IKMs7yEqFgsWg5ocU8AFfKI0qyeUAOhewfVgAKZgE9K0wEU0ZdQowQxqalkswFaipMC0OUSShVofvLgiX40NpfzvSxcYGQIUiCyFeJlviRGBqGnI6aO3LXDoiUlAir7hvEbpAD1gd8OctRCzchEEXmtBJrRXIeYfJSqkWoyJG+LuTWbBelaGZDXCTQVUxpuohkFlcymGKLyNSEeqhhBIisJ+DUYa1MYSDsK+NbGNWYLAOaoZSj2AXbF4lMxjRupGuLqIm5lwOYbfLk4Dk9DYe4t+krxto4BflkkC0EFTkEITq282OUr70eitI5vG6We5kXp1A9fG/vTsK+rAgKF7c2u34a5m3rTOwqUlTOQ9SbIWDvxhsGSQZDiFKuOHARF5zk9JCgBeH0J3juoIuv5zsvPqZ1G/z8EOFgJod2jfDElzmzzphzCT84GILsxgzHpSR21QSC1abF1H2eM602/KMgR7wXS4v+/0Ziz0e3vO0eveUcj2euHh0dA/2H89PTiQ3koezSEEjy2xvHUB2wNbBHq4WDX2pQj5HUxuSimpC1OW5JmyDEIx8A7id8aBIL2lrynIjngBUS092jLPj/DDBtTaEAhjoK4Qsv/7G3JzVJjwAfwi5cVHVjyk+Z3+fSF5C7/PL94J2ot01bsYDOJHkg90YBZ+zi5EjvJjlbJ4NDcMxrSzvuE7tgL5UsjpJtK/8IFMU22klQwiv1bKqwPgplmhz4hGcXeNOZTPht2XbAaOZxIojXFsamUBAJUICaj4KaQDs5+SvaSjeFVZPIkfcAxuoMY3gI9MqeXSv6RpJmihd2435u8qosKMTVxvAhRtwttPVp1U+bnYDJsTqZENkLR2UrPExkkrnhoJUjqyFA+sidQ2auORVuSTBF5EWVOJJNDu5i9evNAXP82rHlSbf+5lj7zLuTw7Of308cM/zfudq5Nfzq5FCzAonJPreSfvrs8/ffS843AKpBogMQZZHt0Dnw/QC2YPff4HKFY46uNZGoewweawr7DBw33naNjLh2hwahcj3bx2H9JyF2KkRlOOpwAn2kFmdhxHMjQ1z43mKi0gWPjz+eng/flp86YHlLrAsZN1Q2gPijRfueSeElbcBdAxnkknq0Sqgw39K+/86vT8ssPBk/KW4JvZuAkNRYQveuTl2XtjpK3CMGqC/Zi7UXN++3R6Zsxx3Y6TvnacllWc9MBxNMxO1Qu8TAASCEPvYA3kU7ljdQMWlLxIw1WdMooqjZMEZkdLDz6b7A+nMFiFuW6QAi/yTpSgaiw81A+YnMJRtvVX67fPV9d4QRqwEDNCK+sKcGQDP1yCtKUZS/rE6YLznhsLiGMChseTooOC1XDL2Cb4CjowadtnX8Dt5dD/CpzuBwxU7DGOemVMrboMGPdqwP2Mr5PEPp7ljLn3/Zk39e/9KH6Jn7NcTlZMgz//5ogDhs837v5w9HLojPZevhxRK0L5m4t9LzsjSxOCcu81KogzH9qvhgcKABBGpb/ksfLEz/gCJCrwwYqh3a8d8Db446aBVwSMJQWFmNuVjKH2N3hyCSxlTZlVJhEEJ8qI8f7yDsbI2V3iZfsYmoMF8He9GSYoFpPtxHfQPIvAoGEwJbHWyudpimnmqRSWvGIUa8DZD8DfVCsYZ9dGBDEViaBJLZpat09M7jauQG/aLr1oJLG6wfW9XjiFj3BK32IdtLb0cdt+Y6rvU9Xd6XDkmBeYtFA9tCQ+NEJFMUQGinQTorz6sUAPYnoll2nCgS5gQz1FD5lKeNRbAScHHCQmiiNQ2ct0wrEVptQAyKiktTp+SWY8eVRm5WwWfZG6QQhq197Ir7WTeiXm2qgTlbzXe5TEixhbnyo6qP918gHkE13CYytaLsvCn8as5XI3jOYQG7vSqPfBoRztH3SwBwMaUnJyUfRBpxg9AXReAKQlbQM3OY1TvOIAGQXT3Yn95TT0x2JMn3wuKfR2d0oB01is2hf5vg5NJ4Ll6VeWeBInOWjBvogvwkptsqm6gziFPemTVDjXIJIRq2leeVaKjtpeOm/WNF5DbChTpjQYBkgE+P8gTYEtk6JDIhKWy4x3vrXl10QGrcoVCjvoVfngsfo06KDHQbdqM7vFxqFz/STNYdNVgV4pWTazHdUaNCvtVqXoMh9vszxtzxT2spvc57HheD3alMxsWmozy2Yk39ozbqAF05m7jXaYMKooJ272PHRp5zkYM0/wa52QNEV0eEt/BaODuAyxKZFXdvC5XEaFWuaxaQf1PSo568JBL/MY2Q55GWiNHWCtyhgN0ACc7cE9S+4HMGKQrYpFmuz2h6MBBy7rgdm98+F89PW7p3T8IKML6j7mAY6xt/IyBexacFRzIXF05W+iulYt5EQ66w5kbQaMSA/29igkg1EYjVoCmSqfGEazWRV/VzImUKvJGPH3WHR47XIqxggZs+2G+tF7rIMA0h6Fr4PhlO0F04Ph0VE43GMzx/cByP7scP9ofzjb2586QTCFYYeO47+ehexoNIIVd/cPDqYyDVLtUebKxTKNHWZlnoG2WzPOGHGJ8ilU9mh4MZgVFUued/H58uLT1ZnnPbNwadepZ3bFomuZ3QplIX69LPYDhqGpwtMS4iJv63QWh2OpgJnllQvoqqJqbTnY/WYs51HOy5OzvHs/j3whYENEawrBcpTMPWRk7sGM9AHXHqMe98P7iIPb56U5iF0seV2bxfFhl6oyigUY/sCTCq6uY/DiACxArq8GMEyR2xX3Go0zCzBvY31ML5nwOjt1Ke3/en19ofp+BZGImYgyLUvEnqLHk8M7oEJm3Zd+Pufdly/vHvCjtXRwwfwYxEHNbyTdUUog+m2gMi2jOPREX8fA2LaPucyGut8elZ3K4bBUjnEglvtKvDygdOtXdWNRySW4sySeomxmPBgMR6/7DvxvOD50Dh1waAlm5QU6JLtA1gxcNiagmVVt1NwXuLnuyHF0ylp3kjQfDo92bfuNC3+b8YekEXGpQSC92RtC5xYB49KYG/B0rYvn/evD+VvP065DrRv8ZfotNatMWw37u/0RZRb0pYMowpPDhLGpXTlUbI/wTPKzmDiyi9oQj6G5PppPStfTnUlHHkZFPTFdHiBaBT+7G4RYgiVXJCxLnpPJgP++9nnapy2I/KhAHZfVF3w+sZwZvFnU6Ip4RS3asCQ4okpZ4H5uHKKXcARqhmKDadlmRwjg8HbdBFHHqN4x1x27tzUlR/tEhDaZH8P+4IZM67MguR63mx3Rucns6ANTBodw29uEmxhlYNZgoBt1BLfSyyazglyn/Mf6ePLFuFtv7JqsXWNrews4pbCFUXCFau8Kky49RrdmXFUfHiOs4oA3ACwpG/EAna6QYE9rJ/XRbWhr/JgymS1r840J53Zvcev9rXQR1+P/4++K/gWwH4r9j9fDT3V/Ajrq6uPJxdWvn64NPQV+HZ5JEsCnHNgNo6CQPppsUtUddZ8cpMnwyrGGJEdFqi9xRNRVZXT0TU5dKXxnLKeg3LSEGLdonJ4T2YlwuQ2UDENuZenX1gAQO3UUKHdL5kTVr8nF1AZbF6yiJxTjJs2EDajplv/HceXmmO7JMPCZUWRLLCrjPs6efFQhsj0DEU21PbGgCxDL+qt1VeRRZoFraL37cG5N6aHB2EKvW5Y1Qo/KEgHpQ1LJZUKC3pUPbCiL3BcOrkDaNUsYNVfI+98XoCk8D8nleZbrgmbwwG2NEs+Dvb7Ai2FRhyDuaujPPl5xgRvewbHVvQloLuigxxq0BtgZc6C6TFHDanWVLMrgLPwZK1YkbrWZ6spFzWwoNLPIaV3TUVcDoA5W1nGpG5B1XCpd15jb1GVKJuGAGyCES7e+dN3+0dJk6drKcJAlRCY0eqoKp+0OvbqK7AXbynd64uaTInnRImI+YILucL8Rwq0Fb7U3RaA6gnSJWeAqzZn7DypJrOqtui25TzW3Fs+pSE7rXjlIFbg3lYWuy2giNsfLn3rkIl+gSKUkASMhSU7cbRTFQeg2bK5csNcrvNoSRCqySYCcpH62VWPhIN5WPXVc5YElmPVTgq/K3SwTurPBEF8Sg2CbpK9ArZdM1a7ZaaasfsKqZ1G1RwBr4Qc2uDS4UfOEt9q+OtAwhGPh8or6aNQfOfv9A/hr90jeUlOAgmAa1TZyJplfWz9UEGjIvsa9NFZUR6hTIRQNsOxjleHhjgMTMq0ZbFizggC/awUTVY/c2KWsG8JtUd2QiEWwsKIx9o7GkH8pt3wnGeg3tkzz1QVupcwFH51G/K7WcHF+Wv2mG3qiQJkI/5YuRzM5QBECjoTec6If2cJ+onvKNA/iazFBjFbpMPjRgLzGkYBQCP7J0pIJpBampByUawIRvKiLmk5icCWwyBKFWbw1Gas6p2OZi4AAG70MsJac+Xmw6ORwcFk5mfBXnckkfGUvYQatZPfnEKZnnSE4gpjtCdw2PhNLCiyJCQAWiIS6caTFaNDNuDe8petx+mlWeC1RU5Hh0qPtl3gXXqsPUfi/cRVwKrgIQCoLIVvUbb27+AzeQ8BYyPXFZ6PWRD7QUdUcWVXmrMrIN9dg69FYx8ZqXaow0Xj2qusTAddrli/pURT+tsmgRfhMam6d5PPU0oD15SFnRRGbfKneVD2/kFpr2R+ppLYses9Zf3xULa0fCTyxqOH0aD0valzDfNUmYvhAb6XuPPMVvit01dMwbJwps7ym+7uG94y427VjB1jrbzVBVBayQESsQfe0nIuiftNCYnvRSLEiSGWUH/xky1styxL9P+9Z1jaa41uKmqOSp78zcpk7ahugWAVGVLlIVFYmASszigVy5pStQB9bIqUmURBHB2FUq3qE9sYptZxKpRJhuHEmJDVOl2pUgjjClDeOaFGGWlpcWQQYoeJ7i8HKN0yusVzo3zFG/VjdEvlJD5f4Mtl5FNnoQIytRGdsiBgVyZR0Tycr5TFnhKP1K77xDcwmHUnLANcKd0RUlY3rNWVdZRA2Pn588oHk4+0jWVX6pwRcXDwVK2PGx3iXiE+2lSkakP+FBfAYqUHf5jesj2KLzwOryPAPYFG1gW1LrI1/1nIoEAMxcdB8EbG24DMfUqytK8OUH1va4Jg1wOBnNYAalsaAoVsfyRHER/FuQ6royLVufPrxcq/+hpk0KTp0rtCT9Jtg9jBv4A5Cdj8ANRbVXiNIB0aznNLWiOCrmzblXJN0mmOIuoKxpoJrL2G1EVQqqRml/Dn/FgIoOqAjs9hsBkQ36r2fesxZ1Tf8uS8bN7xoVHiTau5RvqS2BaHQ9bG1nE/NT6fRWw+IZunA1l9Oo3mZlrytfKcRUjaiU3E1qs/bq/xT6mj4NW5NNYv0vVTEroZxo9S6qXE4RaioykWWuotOCOCvHzK5hn5HW8wLj6oIUHlhZQHgQLZYIibMkodmSSXXG+lDsmnSNWdExsb1Q0s0/PT7pDRzv9svPUZyAH3WHV1joiAZNoiUF9ZvuQ2+16ckujGAbct6U6eZ86YGA2f1BuXdp98uPpxdn1VvszC5t0TeQq+j0gICQvPqS/KKW4MvuE1uvBE1rO1Dc5uRJCGU6xOkC0BDiE1axqx54LbxVk9n8uUc4duD8IJARQVIaxhxqiNTK+H25BPrJ19pi+2LiMx8kz0Df4gvngFAc4aacVLoFzhV9u5f1Kb/URv7WD0QfeZj8tTgWkTzWYs0ql9w3qZH5XV0No1SW9zULxd549bBvXHVxK7BP2YVowSEe7bAaeaWX6BbXzQslqaC+XztqgwwUEU2FEiALGp2XuMnUdmtuVKFmTiJqrzh7xvde6t51q7ePWzXBDU3WtR6PuFIa8g1xKt/58J167JS7/u3+8+6OEAa1UbcbRxqlbFVMgkbBImqeBl+X7ZpHDHwiUPETGFjoCaMeusHyGqFKF5Q9tIpBnHiwGVNzJpmFHBcAb1hByGSPDYfMak+nWm7Fxm27j09fhFHtw5DFT7YUhsaQCrTJPibsDCqMqoj3b6L+r8r8BMfqOsnWLlVdZEk1bMtdd9F3nqvuQ7CI5CFhaJAcX+T46AdPvPfDXDXnqpXZh+f5AQsK6y3MOSMPhFXfCuHN27Vv2u1ycMSjg0WiWFFGtVLuRgFdGi+3VdXYOT7yGGuuser32BILxzVjOHztdxlHAMtDSdw7U5TYIx3y1RaFxUdeswiN/LUPYZ69jBJdv7yP1QMW4eKTwAA\"\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\": \"1e839623df15218ed46c7fb591029b9a653678cbde22898d5703a4ffbc082e99\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 58687,\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\": \"ddfe2619f4847238fe79ec779a15b0d8df5d178cbed989ac2d73c1480b57a706\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 2884,\n \"content_base64\": \"H4sIAAAAAAACA71WS2/cNhC+61cQ7oESrNWujDyabYQiRZ3ah9iGE+QSGARXnO2ylkiVpNbeGP7vHVLUvuoAPdUHL8UZzuOb4Tc8OTn5KB9BEC5a6RwuPjvu4KJfTG60IFb3poaSGOBiwet7wpcODFmDkUuJyjVXQgo8QG5RY1MkyS383YN1RApQTroNkZYIVF+Dt9ZAsyFLo1viVkCWg+ce16hbc+/e6N5BQT7UrudNorjDkwT3at2CxThcb5T/XUt4mAppO22lk1rZnDxIt0JN4nQ3aWANTQx/G0uRXCv0f/Hly83ZbJYTJ9Gm422XE7viHRDMhtS6V86SBjg6disMH123KCnIlY6O82TPc0547bRBG/2ildbiFrEexJx0mLcHZ6HFhmhDeNcZveYNkWoJBhTGFvzYIjk5OUlk22njiMfThzZ+/2W1Gte9aRq5KMyA8tEuGKNNknw6/3TNLn+vKHoRk7PZ2ZtyVpaT76gyMdCCkNzHPTElTb6e336+vL6qyiRJBCyJNywNpBhkD9k8Ifgnl0RpR8LWsOP/DJcWyFe/ee79pugOVaTAbHslsJTHxQsY0yx6snwJLMpYC45j2vzA7xiLtFIhoIjWIM6FrF2WBZ2fyHXnk0FMA8j7bVevoL7HOLQvOibBQ0/hujNgUS0nCrvEYDHW+AWiGLOlLbSaSUFR9K+09wH6ttW8q6oI+xDXEqt9DxtvIKXoxHcFzQf18TPbWUWnUfvI3b5Lt+lGv6h8l/kcpXKha3fbVRVrmh2ASIfO3aUUjo1pROGdN3mlFfhmPYZ9pxULEB3oB1sFheJPcCndv5M0+1Eh/am8kdZlIY4GVNjK3lfl7OxV2MNSHZ0Y/AZs8ctnEs6MTjw1kCca7wYbSzOPhckPJWMV5hGunXjsITbQB53TQFSTA6KaBKLCkq64ZRGY+Qto+pvjEc33gWGBZOh8m/aB1DKsKhjsUvRD5x95Y/H4yB0scIfZk9Q9firHthp1w5E+RoXneOFaLlUae86Zza7HAh/zThYWzFrWyEYBIB8Rd/WKRJK5vr384/Iqv9K3yCAGapc7fQ+KLWUDB9cDMawOeaqIUyEdbJzS6bqcCqilr4Cd0tNYIhSMbPFrrE9V0nyFswW/qif6AUugjfweCAwL8xtwgzeYnu5CSdE4N1PTq6mFGjG008DGk1W/mCJ22iA0k9H5tJFLqDd1A5NggmbP2TYZ3YECc5zLopeNYIMsPZLdGP24ucDubVD29JztoZVmO8N+UkXrhf9J4/nc0z4iUJWv8V74MYdNoewP+GCUFj6/3lYVDrXsUJM/VFstP8PTcvbq59dv32a/jEZCC/KHcPG86M2RBbB946qXydoPpqLRXNhgIksOTxV950dZunKuYzFGP3f1wjcaCMZdNc66YrtQ+iHdfvh/3/H2FOg6K6TVvnwcscyH4cIO7iTD54hWuG7Ytqxj1Lb6YnB0xGP+ouA1Nww7fMUG6gAxqGDPBAJAK+gKny64QCMdliXcp12aON6VG1AQfdvZdMg7AgGPNXSOnIcf/yjAgoYJPT/CqfrfOWsoBir1anzK4e6Sy6Y3/mxEaXz1sV7xNQr5wuNpWBz09Hl/fu1Rdcgy33+UFP7NFZ4JA9+HUTZIai3gYJSVs9n7aid7X71+927+QlN+o3uNhQN4d+Q/Fmj3ivm8sQ7a80fp0jIb+NBzNhInJsaY4tj1rKooY55EGaNDPAOjJv8AHu7dPkQLAAA=\"\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\": \"H4sIAAAAAAACA31Y2W7cRhZ9z1cQerVbqn1RnpIoGQiTDZNlAA+CRi23JI5bpEKy5ShB/n1OkexuSZbHsC11V/Hu95x7+ddnTXN2P/T3/Rh22zafXTZn199/c7X5948bxpjf/Mz0xZ+7Nm6cZp5vBn72tj4yhfH9J64vF4YWFwZK/XC69K/rn/65EUwYzjjfvPv2+stF6vLEOIWJ6t2Qpn3YbfoPHQ2br6439/u4a8dbypu2y3RP+K+bNg80tKVNYWr7bnMfxhHnHT490GbfhXv49EB5kbxcpbzdT6kqqCZsONtw/jPzl4pdCnWujDfKvGHskrHVnn4/JIIPD+0IHfVBH1WMQmcptPEukFaSLLnggkxSe5EjL9qVtAhI7baGCQ9yrqU6fDfsq6zjx+r2fqzSx31KNI5r/KCWPsDm1Yy70LWFxmk73gZor/etUCEoay1Fnpy3JjvjSBfNlLKyqGgyjOEyW82ys4FK0MllnQKzytJqZdjtrDpouQ2I8whlU7rdLnnYpv7urp2gcBr2ND9yTMi2vQs3tM3tDSybXZiNuyxaO1eUN4iHMDYzm3LyRQvmyBRRhOLFqmilT0J6oSKTlolMiUuYKORiWQwjfUqDNYi4UUwkF8mmpBKPmQfDjZD4WYrnHO4LaHLWKqGj0sEy7lJizslwCPJNO07DI3zsSnvzsRojRKSUJMXsbYrGRANt0hSpY/GSBwujs1cGwdZOcy5k4im55L1D2OOihv6gtJ8Qrl2fENAc6K7vVs+WHjrETRCzJHN20ketQ8k6a448y2CNDgI1qlF7pMggp0g0fOMha21iNpkdGgnlHnbtn3NrbFN4oDD7dDXrbXZ9yM1Ah1s0Nov3nzcohSa3pVxfjRf3uzCVfri7oFIo1bZar73ZhUi7sXnSi7vHhn5HqTRT3xxC+nnTUTvd0rA+1nT90CyeN9dXzbiP49ROiMrYQM3xsWaOSrMmYinQpQyPuco0pqG9n/ph3IYOQQ2PhF8PTf60UGsF+fV836Xb0N08vwCMGHC+ysCJmL8u+91uTKHbVgG7tquw9BcOcPTd11fXv3xXe/rt8sWSwK9+/XpGthXQcPT3c0n4l9sMhNsiyiNVa6fHbUEU2+6mambP73f9dtwDxQAIyOL41Ogx3NG24OR2e/XlNvbT7VJLzy9BCPBzm+MTxGAyhRQVU1okilahwEpFA5GiE8V6IudULiExZghdGvAhh8yljAwdZc9eir6jKcCpcIrPr4jjgpZiDdD39Mf0y31ewf0J9nJ3qf2lZufOecaZtuLd2frMcj9/MT17hL18xAt5fOQKfFFL+5WnhLyUAn/PpWNMSi75u1OGDt6c+uSL3T1SLs+FakIcUd/N1z982wDxpuZDGDrkC60yF6V0P/z0xvz4ON2iqjNNaBRUZTOE7rx5R0Pf3FHoxma6bcfmUJ/N1ZfNCIIab/vpLbpiavbd+w7Gb8p+2g/UgMr2kJCoQV/QzIpNZdPmZoB352sOYn8H1Np31WKlTt/13a62yO5pTip/49N/5k/4zM/h3GZga+hO38yF2zS/ncq37SoDLI2Dat3NRbYIOoPUi3D//iLHi7aDnbvdSrg424/DRT3Hvz/Px/58VlCl/zbLze0wx+rx6AOy8uLkUFsnbxabwO2LJcBOJAcjwK4+b+bDoyHbX66vapdiKuEvTv7x4uS+37Xp8Umb+GxBJ6QA+Nz7zBUVFgIBaIvTXvOidGQpRVxDQQVbMnkh8LTUlSHE2VOxd32eC5/1RqlnJ4uFS9+f4GGhhQNlfES76QSEM2jhY8gxpPdPby5z0LbOQIjRsJ0WVisByPMiGPf7AbMfbR8C6KCbxjkyq7rlpLLAWFGr/3AEyOdnA5X9WJ10C6sio+0dzZbN5djR9KEfUOQzkL60sh7Vxt32gBTke6Z9/H5okvp7GmjONRzAWFKnpDk0J4dWWUMPM/fPfS2osDwHakdV9DIbzkVzujSPq6U+/WG6Hfr9zW3NGaZZMNNdQLhqx0PD5w0GsUp1y3zW5D0dgcbVdq50N1UzwHyv9m/zxQwdzWJxs2Zi5uqLGdSbMfX3wInVbuBKmgfQBoS5q4p/36NHchMJ0Qcr73rgxQEXnk7FNS8AsjuaG+zsm3YAgiE5DZKVT4y78nMYD/SMbs874FBXL5X58kHXoUqbpT6hhAt93nzVD7Vr68XHF4PBXIPdTbNA89MJAHGt3Tu+WUcOyESM3wItqWsO9X/efA+EXNB2nQ1KaHcnh6lWOMDy1L4r6IVhasFk0wbz6z2Ke+y78/+OyxwfeNLZk1A+V6pjGJg9JjZpWAnFkMuBCWaiNi5hquaYrzBoYsjTmKBLInVAuVqqm9mqzRLFowYVMsY2n6wu2ZfEMOliSnfG4lvuiacY6onVPlU61pDtASZBZOF05uwVDYcN4KjDW5e0xTaSbCwsk/QZoEVeG4yoPmWMqZZFS1rHxK3UNmYM2iXKiMGclfhMx9q0R+ECiBejL8opE6IqwZBwmE4NxmstuUOMuOZEUggvpTFBc8jMxVmBqUE8D1FlpvOU/zhKz9lmo5LXlkvPQ8oq8+JMQpxNgCCvAANREWlDOniMJp6SKNXV7LkOn5Z+vutvqgaHx7EFIcpYNCRyCrOY14QoZ0MGuxILlDC3Z47MZIP1xFipqmsGCXuuYRrah8dNnc2OHkiC3RIUAvRlzCVKEqYFktgvpBJFZyWxmwRsuogSWZ2MDCZYj9AxF/z/k3/wwZugXEYuC6IFN5TXChwUsHpag4rRyEhihSxmJ8xvxMFUEisq+Msat/LQU3L5KMtYEMmwmJPxCrsiKRGKEwqJFkhK3cxkNAxbo3BYNaQWoTopvYb7jJ+ynNplS1/X8R5j0/Aw/35UhTUCqx9Wlph8pAidTgcEhbBGY7nRRlCJ0YFJQa1ORxSYZIELIk4qrrNnpa7X2g3UGyI2cIYFkiLSaLPAmsKcFuDGjAL1tniLzUoKULu2EllgpOG4xKYsnwv/uNNSqOKSwQoG/31x2FYRd42V2sVSchJOOU0mpoAtVye4yNCZBWst4/4YpiPtblYCPZUTNkcukilIhrCaK8YR+oTOzZIRmVAYJ8wbESNsqdFBHzJM5ckSBpRwnLsWmN0sMLsCByC4L6dQkU4MCyVnHBsqhhxtPGoYpovCfMU96yMKCwHEGoq+0ArlJyzuJ7L8WLhP872sa0cVNVoctCVdjoAopBUoS0UVYUNwRlNG+lWwKQB/BY/IERPAENjCbJHuoKIOENt16jnA+fn9Y1VBIUgOCEIhidrWQROPyQIPmeTYwJVVFphoi+WOSYUlxkslNc8c9ZVDOalYWPBFkCQhjWAIhSopSGYWiLutbxNy4rqgygBUyIvMhQNaUNkoZCsQPgtO8cfOQ79tT29LDt23uJAhFsVHCZH2LkEDR++CARJxEXWSqDRAUYBrUjPhYbkqyTldNFnwyus66jqzKhDaoSu8wdOKC+B+ESxictWoECCsR6Ng4avlQA6bVPAJJCcy+AnUYaR/oqCa/RqRei+jY9GDtEggu6heDMPKCwuvCtMo4aSCdrk6yyOaLSQblJEV0LhML1VgiiCs9kf5GJmFAQUncKXimMKZDhjLrQ/1dVFwgMba3SI7EQXXCslJxaCaXSaNHfEg/yMCUpjahJFMg0QZIAgTgJPC4UfikOAiDgCIUgDS0RrecfCOMdhShcV1+argA25r7qyMEuEAeQK/guGOArgeHecdq0MHyA7ZtLgiSyAbiq+xwkYhAORH4cjlRyEJ+OM5MzyCzMFkWQgXeX39paQEyYMwvHIJTRWBr2AgAWxH9QhOVgp+JLbljd9mebv3ovwjcxzdJbKMWXsJb2RhzNaXi5QccRRmnV1quVhbC6AQpicLgAKEBXmcLF7hTVEQXQLgR5+MFl4YaALFG/SlqG+5anFwXMmESSsHDGoCQ5hUjHl8pE+IPoQe2A/rEF2WBYpHgdW5d6aAXpTnVUAAlqFIpZEgbYC6B6+COq0tKpblzc1nf3/2Pyef7p8YFwAA\"\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 \"root-authority-receipt-template.json\": {\n \"sha256\": \"2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 941,\n \"content_base64\": \"H4sIAAAAAAACA4VS0WobMRB891cIP+dydwaHJlBKwWnxQ01IA308ZGnOFtFJ15Xk2Cn9967u7DhpA30Tq9nd2Zn5NRFi2pPvfZC2MXp6I6bL1ZdF8eOuqKrqunio5uWzNesP8+q6LqieXuSODp0/oo1rdTGrZld1VddFhhaEDtrIaLx727EDBS5yW30uhq2cza+45pK1Qzn4RAoNYWeO8Jcv7KFS9NT0Vrp3Wh1v3aHxKSrf4R2AVAwYqGXyd7erxXL1daQoU9x6MvHQdF4jf39efFuult8fbu9HRJS0Qcw/BGm7m8e0BjlEhJKksUY6haouWRJPLEGhocYLhm6+3rRGDcubDrxsEJC8j0Vr9ozn7RvjivEIllHqtVSPYzclFw2flFmCnzwHutmQdJlQK23AgDud/jOBDnl+aU0LdVAWZdY7lP91rDzOCJ+Ohn2sX1/Aa2V8rWk2Ck/NORRntXvO1u6UrJeyNoEDZwYh/mpQCn38Z8PaJ6e5ysTkhpPhrc3KND2NgrBwz9BvdHA+Dh4+oOOsRAgTBNcEc9Vgn8oTt0txzw6IgBhEUL6H5qmnoYMkkRKEd/YgZBtBgjOUpBXKu9Zkn0U70MsfmX1OgfCtiFteiT2jhcOT6JkwYskDunAhCFEaF8RoeZ6WiNjXk+liDQ4RGGchAy6nk9+TP8/xgVatAwAA\"\n },\n \"root-recovery-receipt-template.json\": {\n \"sha256\": \"67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1033,\n \"content_base64\": \"H4sIAAAAAAACA22TTY+bMBCG7/srLM5L1pBAyJ56qCr1UlXVSj1awzAk7hob2SYqrfrfO3xoS7I9Ic/reefDD78fhEhetW2SZ5Fo2zrfUZM2hDpoZ3feuZiGoSd/1YEFN0Q4U+oJ3ZX8mDxO6b13vQtglJ5dPn/59DH9/jWVUp7SF1k8/TK6rgp5ylKfLRnBDR5JebrOZTjLDsbMUkedU+ECeVFuw/0FAm0DngxxSEGM1PVxqf2mIuCF/mMzzaO4c91qmhJaMIGWumAHHuHfrOptyO01HLwnG5WFqK+keB/oOgoKDejuztLVgb3YCeK2hzWVt1ZzixHiELYy/eyNRh2n7bhXuh1rrY7OtnzpxlY3rOg4KudVQNeT6nToIOJle2vqSPPqLwQmXsat1FBv3NhN/sPdNrmcPnfQ3wv9Fe9D3hlTA74q3TEpEw/M1Jl+uB26wbiu3gWHGszTenx6B92H5dmej+Ue9+VB5ljVdEQ8YFY3GZRZme/527anLCubIs8PWXU8HvKiPhRwlFmFKKtqD8ltPwtzU0N4KmuJZVNVGVVF0WRNVlRS7jlEJ0nt/iTzMqd8MWhBG35DBNvoBuINhNbN5+SFETSsCQ4IwMgkCWabXwRJOC+g59e+gtmJb2s7M4OjGAIFvqDP2jJ8y981gUeakV728LhyyD3MK92c2ZYpYJycXcdjEZqRHWYhCG1D5IhwrQCx0mPGZaS3iXbJw5+Hv9yIXHoJBAAA\"\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\": \"H4sIAAAAAAACA+1ZW1PbOBR+51cwfsbEDrkY9mUZbmUW0gzQ7uzsMB1FPkkEsuWV5NC0w3+vJCfEF9lO6WX7UF5CpKNz+c5Vyued3V0HJeQ9cEFY7Bzpb4noLHxnT289kjjUi6eQULaMIJbZegQShUgitfdZfddM4phJJBUT8bKol/mM4XBffyScPewT1pEcYcV35hLDmsRTxiMI3RAw0UocGQ02Eo8qFJ3KitHKCKxs7WOWUhZN9gXDBNEOCiMicsZytoDwj93L0fmp+/fY9TxvuItTqVa5Y5g+Z7ydGEVgVdjJEYgE4WaqNDMb9YMAfA+5h17YdXtBcOAeDvvgDsIwmARTwOiwq+Ub6Y5IAG+wVjrPOAhxCiikJIZbwCwONe4Dz1uJ4Qo/gpFe9F+WFkaTN0RIxpdXJCJSb6+PCKCA1U7efxGSeH6FJkDzbjVBk+w/phPgMUgQ2q/1+KxOPRfgFCoOJMyWeWlymRgWN4A5qN2iAyRECdWref3KgdgQjD8oPnIqGgm0ipYVL8yihMU6pY4y38CTs9d8pBXiNcg5jYqxkzFW6kcsjeUt8AXBcIyx/nbHHkFbPUVUQM4gFVwSqTDj2qh/cxrmDVR0EC9KBFWiQiZpTD/8dfbPyfH47MPl7e27s5sCAivyBaKpoZ9LmYijTucRl5zmlA49732lEidvR3fHl6OzG/3f+eVFoxrKc/GUzFJuIqzDFXQkgv0HkfdD0RvZ332Rq0MiNDMclTdn8MDKobj6Wi13f4o56vYHR8PBAT4Y9LwuDiYwxLiH/Unoo4E/6B6oz+n00PcHYb/b7fnBcNjr9ie9Php6foCxpyoOcmwKjVNKx0wVj6WBZzpicqyqzbr258gpWUCs6tCYswmUAt4QTBGhKYe7uTo/Z1QXvoMyssarFyAt53WpQ3JuMJ8DonL+yeaYhHG5Dg/bvsBzyHz95u5u3BorTgKcsHBTVNcFMs8yxVgZnjfMrxDpqGCp3DDq7jQIbu0vBXvFdpn2krrjDKPAC7y9+lyoQ1AVQckwo5rm7mT8mnSzaOI3aPLE+CNlKHyNNo05p/pKSH4H7fcKWsWKpVyxtSFJ9YQh7BjhJNXG9T0vspkfQaRGFE2h6tw1abefw38piDZpLbIGPYuoRvsF4JQTuTxR4Q0fbfHgIErZ05iTBaEwgzOBETWNo9pp18qiBE0IJZJAjTkhZ4mlAJi946srp7J+vwV+KHwb0+UNY/JcaSqWQs1bSojkKTRDIBGXafI1+eR3fydUDZoSeERiEyDXirfux2vjQ1h0ctsuZTOn/fRLJ9deLdMvGE0juNbT35YdxcyNG5X06N1Qxs3+K7pFUYqasDptXbEgdjWSfbtkGSVNcvT2N8soTJNN0loJ1zlsy9rXaLZA3GAv9HVMiqoPOkkWXU1Kq/Knbkq/hLYoDYlsUraW4Ofrurn4NSm8oXJRQn6G5uvBzOUwI+oO3+j8rYh/PrarWcEelmvdBZFSv1I1ErfovlPXgzc7ufnUCWOxKdcnNNVSzwkX+ZDUE5duuBvCY/qElvkoMa0uTFXajdZlGKYopdJ92ShQN44wzlRccJYmpgN6XqG/rfdO5ijOd5q3sZ4irokwr0fFRw3lmeMGjmZ7xAyDFajV/XcCuPW0MkW/qqhRZKqbXXmW2LwvZf3hNIPFsTrmuQBR/p3E+l5TolkjX6XLtegLjjCMS3NGr58jzvpzy7tLodmW74r6YVfFUSzfG1YnFJHINqVhvTGqu4K61UaeD+5CkpZfhaJELk8JtwlVIkiq1XGusxm8OmKRT7B+qHT8yk2g7g5tGQB+OR1Lw0OTflnnv0aJTcFVcl+zULPtHlZn69qXBXeFkzvA3a4fDIPQ6/vbaV8cRra0o3Eo0Pf6B8ASwi2sDIKqG14uotV70WfbTUlYXz9tpLvZaABx9rY/pfDRRamcW1pCFk8fE5Ihs8nrg5e3+drrjTQqWGied9pW7l+Vm01zj5P1z9f5gqi741d44hGWG/ttILVBVIGjGh3GmvoCl0HwTSg2DmO/dnTbAvb7xuvedlo3VbrW2KrnW4wzjPYxlzXJW7BwRVlD+Gxdv69BLR8mLlfzjVvP/Ucl/A9rJNVJf6su0nhsm5xrm9L/hyqGqWoUatbOBDdWsyLpK6oaS3TOIlr7lthW9qr41cfVTjn2Vj/o6l+pd553vgDnT+7LTCAAAA==\"\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-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/lifecycle-commands.json b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/lifecycle-commands.json new file mode 100644 index 0000000..fa63201 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/lifecycle-commands.json @@ -0,0 +1,213 @@ +[ + { + "id": "infd-20261011-zlib-remediation-r1", + "register": { + "memo": { + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b" + }, + { + "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:2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null + }, + "documents": [ + { + "digest": "sha256:82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35", + "media_type": "text/markdown", + "content_base64": "IyBSZXF1ZXN0ZWQgZGVjaXNpb24KCkFwcHJvdmUgdGhlIGV4YWN0IG5ldyBUMDUgemxpYi1vbmx5IGltYWdlIHJlbGVhc2UgYW5kIHByb3RlY3RlZCBzYW1lLXNjaGVtYSBjb21wYXRpYmlsaXR5IGRyaWxsLCBhZnRlciBmaW5hbCBpbmRlcGVuZGVudCBQcm9kdWN0IGFuZCBQbGF0Zm9ybSBhY2tub3dsZWRnbWVudHMuIFRoaXMgcGFja2V0IGlzIHByZXBhcmVkIGFuZCB1bmFwcHJvdmVkOyBmcmVzaCByb2xsYmFjayBzZXJ2ZXIgZHJ5LXJ1biBwYXNzZWQgd2l0aCBleGFjdGx5IHRoZSBiYXNlbGluZSBpbWFnZSBhbmQgZW1wdHkgZGlmZi4gUm9vdCByZXRhaW5zIGV4YWN0IGZpbmFsIG93bmVyIHNvdXJjZSByZXZpc2lvbiBhbmQgaW5kZXBlbmRlbnQgYWNrbm93bGVkZ21lbnRzIGJlZm9yZSBhc2tpbmcgZm9yIG5hdGl2ZSBmb3VuZGVyIGRpc3Bvc2l0aW9uLiBUaGUgcHJpb3IgVDA0IGFwcHJvdmFsIGlzIGV4Y2x1ZGVkLgoKVGhlIGFkbWl0dGVkIG93bmVyIENJIHB1Ymxpc2hlZCBpbW11dGFibGUgaW1hZ2UgZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyBmcm9tIHNvdXJjZTliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMuIEl0cyBhY3R1YWwgZnVsbCBzY2FuIHJlcG9ydHMgemVybyBmaW5kaW5ncyBhY3Jvc3M0NHBhY2thZ2VzLiBUaGUgc2FtZSBzY2FuIERCIGZpbmRzIG9uZU1FRElVTSBvbiBjdXJyZW50aW1hZ2U3NjNjLiBTaWduZWQgb2ZmaWNpYWwgQWxwaW5lIHpsaWIxLjMuMi1yMSBpcyB0aGUgc29sZSBwYWNrYWdlIGNoYW5nZTsgYWN0dWFsIHB1Ymxpc2hlZCBmaWxlc3lzdGVtIHByb29mIHNob3dzIG9ubHlsaWJ6IGFuZEFQS2luc3RhbGxlZGRhdGFiYXNlIGNoYW5nZXMsIHplcm8zMTNkaXJlY3RvcnltZXRhZGF0YSBjaGFuZ2VzLCByZXRhaW5lZG5pbmViYXNlbGF5ZXJzIGFuZCB1bmNoYW5nZWQzNmFwcGxpY2F0aW9uZmlsZXMvcHVycG9zZXBvbGljeS9jb25maWcvY3JlZGVudGlhbHMvYXVkaWVuY2UvcmVzb3VyY2VzLiBSZWdpc3RyeS10by1kYWVtb24gY29uZmlnIHNlcmlhbGl6YXRpb24gZGlmZmVycyB1bmRlciBjbG9zZWQgdmVyaWZpZWQgbm9ybWFsaXphdGlvbiwgd2l0aG91dCBydW50aW1lIGNoYW5nZS4KClRoZSBleGFjdCBvcmRlcmVkIHByb3RlY3RlZCBkcmlsbCBhbmQgcmVsZWFzZSBhcmUgc3BlY2lmaWVkIGluIG5hdGl2ZS1iYWNrdXAtcmVzdG9yZS1wcm90b2NvbC5tZCBhbmQgaGFzaC1ib3VuZCBleGVjdXRpb24gYnVuZGxlLiBOZXcgYmFja3VwIHBhdGhzLCBpc29sYXRlZCBjbG9uZSBhbmQgam91cm5hbCBhcmUgZGlzdGluY3QgZnJvbSBvbGQgZXZpZGVuY2UuIFJlYWwgcHJpdmF0ZSBkYXRhIHdpbGwgZW50ZXIgb25seSBhcHByb3ZlZCBwcml2YXRlIGN1c3RvZHkgYW5kIHRoZSBpc29sYXRlZCBuby1uZXR3b3JrIGNsb25lOyBjb250ZW50IG5ldmVyIGVudGVycyBwdWJsaWMgZXZpZGVuY2UuIEZhaWxlZC91bmNlcnRhaW4gcGhhc2Ugc3RhdGVzIHJlbWFpbiBkdXJhYmxlIGFuZCBjYW5ub3QgYmUgcmV0cmllZC4gUHJpb3IgVDA0IGZhaWxlZCBjb3B5L3ZlcmlmeSBhcmUgcHJlc2VydmVkLgoKQWZ0ZXIgc2NoZW1hNS9pbnRlZ3JpdHkvZXhhY3RjbG9uZWNvdW50cyBwYXNzIGFuZCBjbG9uZSBjbGVhbnVwIHN1Y2NlZWRzLCBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5IHByZWNlZGVzIHRoZSBleGFjdCBtYW51YWwgaW1hZ2Utb25seSBEZXBsb3ltZW50IHN5bmMuIEN1cnJlbnQgYmFzZWxpbmUgaXMgaGVhbHRoeWdlbmVyYXRpb24yNS9pbWFnZTc2M2MvQXBwbGljYXRpb25jOTYuIEltbXV0YWJsZUNNNmMvUFZDL1BvZGNvbmZpZ3VyYXRpb24vUERQIG9yaWdpbnMgcmVtYWluIHNlYWxlZC4gRnJlc2hub2RlQ1BVMzQ2MG9mNDAwMG0gc3VwcG9ydHMgdW5jaGFuZ2VkUmVjcmVhdGUsIHdpdGggYW5vdGhlciBjaGVjayBiZWZvcmUgZWZmZWN0LiBCcmllZiBhdmFpbGFiaWxpdHkgaW50ZXJydXB0aW9uIGV4cGVjdGVkLgoKUm9sbGJhY2sgcmVzdG9yZXMgRGVwbG95bWVudGltYWdlNzYzYyBhbmRBcHBsaWNhdGlvbmM5NiB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBvbGQgc25hcHNob3QgcmVzdG9yYXRpb24uIFNlcGFyYXRlIGluc3RhbGxlZC9uYXRpdmUgaGVhbHRoL2N1c3RvZHkvUERQLWdhdGVkIHJlYWRiYWNrIGFuZCBhY3R1YWwgbmF0aXZlIGltYWdlIHJlc2NhbiBwcmVjZWRlIFQwNSBjbG9zdXJlLiBBbGxwaGFzZSBzdGFydHMgZXhwaXJlT2N0MTIgMjM6NTk6NTlaOyByZWxlYXNlIHJlc2VydmVzMzBtaW51dGVzZm9ydmVyaWZpY2F0aW9uYW5kcmVjb3ZlcnkuIEFmdGVyZXhwaXJ5IGEgbmV3Zm91bmRlcmRlY2lzaW9uIGlzIHJlcXVpcmVkLiBFVVIwbmV3cmVjdXJyaW5naW5mcmFzdHJ1Y3R1cmUsIGJvdW5kZWRwcml2YXRlIHN0b3JhZ2UgYW5kdW5wcmljZWRhdHRlbmRlZHRpbWUuIE5vIG5ld2RvY3RyaW5lL2F1dG9waWxvdC9jcmVkZW50aWFsZ3JhbnQgaXMgYXV0aG9yaXplZC4KCgojIyBFeHBsaWNpdCByZWNvdmVyeSBkZWNpc2lvbgoKQWxzbyBhcHByb3ZlIHRoZSBwcm9wb3NlZCBpdGVtMTkgbWFudWFsIHNlcnZpY2Utb3V0YWdlIHJlY292ZXJ5IHRlcm0gYWJvdmU6IGV4YWN0IGhpc3RvcmljYWwgcm9vdGNvbmZpcm1lZCBhY2NlcHRhbmNlIGNhcHR1cmVkIGJlZm9yZSByZWxlYXNlIG1heSBhdXRob3JpemUgb25seSBzYW1lNzYzL2M5NiBvbmUtRGVwbG95bWVudC9sYXRlc3REQi1wcmVzZXJ2aW5nIHJvbGxiYWNrIGFmdGVyIGZhaWxlZGY1NTggc2VydmljZSBvdXRhZ2UsIHdpdGhpbjMwbWludXRlcyBBTkQgdGhlIGV4aXN0aW5nZGVhZGxpbmUuIFJvb3QgbXVzdCByZXRhaW4gZnJlc2h1bmF2YWlsYWJsZS9mYWlsZWRjYW5kaWRhdGUgd2l0bmVzc2VzIGFuZCBleGFjdGNhY2hlL2pvdXJuYWwvY3VzdG9keSBwaW5zLiBEdXJpbmdzZXJ2aWNlb3V0YWdlIHN1YnNlcXVlbnRyZXZvY2F0aW9uIGNhbm5vdCBiZWNoZWNrZWQ7IHRoaXMgYm91bmRlZCB1bmNlcnRhaW50eSBpcyBleHByZXNzbHkgZGlzY2xvc2VkIGFuZCBjb25zZW50ZWQgdG8gaW4gdGhpcyBuZXcgZGVjaXNpb24uIE5vNDAxLzQwMy9yZXZva2VkL2NvbmZsaWN0L21pc21hdGNoL2hlYWx0aHlzZXJ2aWNlIGZhbGxiYWNrLCBubyBiYWNrdXAvcmVsZWFzZSBmYWxsYmFjayBvciBmdXR1cmUvY3VzdG9tZXItcHJvZHVjdGlvbiByZXVzZS4gT3JkaW5hcnlmcmVzaHJlYWRiYWNrIHJlbWFpbnMgcHJlZmVycmVkLiBSZWNvdmVyZWQgcGxhY2VtZW50IGlzIHZlcmlmaWVkIHNlcGFyYXRlbHk7IHJvbGxiYWNrIGdyYW50cyBubyBjbGFpbSBvZiBjdXJyZW50UERQc3VjY2VzcyBvciBUMDVjbG9zdXJlLiBTZWUgZnVsbHByb3RvY29sIGFuZGNsb3NlLWRvd25jaGVja2xpc3RpdGVtMTkoUFJPUE9TRUR1bnRpbGFjdHVhbGFjY2VwdGFuY2UpLgoKClBvc3QtUmVhZHkgcHJvdmlkZXIgcHJlc2VydmF0aW9uIHByb29mIHJlY29yZHMgb25seSBmaXhlZCBjYW5vbmljYWwgc291cmNlVDA1QDEgcmVxdWVzdCBpZGVudGl0eSAoZGVyaXZlZCBmcm9tIHRoZSBhdXRoZW50aWNhdGVkIHJvdXRlKSwgSFRUUDIwMC90aW1lc3RhbXAgYW5kIHJldmlldy1wcmVzZW5jZS9kaXNwb3NpdGlvbiBjb3VudC4gQWN0dWFsIG5hdGl2ZSBvdXRjb21lcyBuZWVkIG5vdCBjb250YWluIHRvcC1sZXZlbCBtZW1vIGlkZW50aXR5LiBObyByZXZpZXcvZGlzcG9zaXRpb24vc3RhdGUvYWN0b3IgYm9keSBpcyBleHBvcnRlZCBvciBpbnRlcnByZXRlZCwgYW5kIG5vIGN1cnJlbnRhcHByb3ZhbC9hY2NlcHRhbmNlIGlzIGluZmVycmVkIGZyb20gdGhpcyBwcm92aWRlciBwcm9vZi4gQWN0dWFsIGZvdW5kZXIgZ28gcmVtYWlucyBzZXBhcmF0ZS4gRXhhY3QgcHJpb3I0ODEgYnl0ZXMgYW5kIGJvdGggY29tcGxldGVkIGNvbnRyYWN0IHJldmlld3MgYXJlIHJldGFpbmVkIGJ5IGRpZ2VzdCBtYXBzOyB1bmNoYW5nZWQgaGlzdG9yeSBpcyBub3QgcmVjb3BpZWQuCg==" + }, + { + "digest": "sha256:b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtcmVsZWFzZS1wcm9wb3NhbCIsCiAgInZlcnNpb24iOiAxLAogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWI4NTA5MS1yMSIsCiAgInRyaWFsX2lkIjogImluZmQtemxpYi0yMDI2MTAxMS1yMSIsCiAgInN0YXRlIjogInByZXBhcmVkLXVuYXBwcm92ZWQiLAogICJtZW1vX2lkIjogImluZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMSIsCiAgIm1lbW9fdmVyc2lvbiI6IDEsCiAgInRhc2siOiAiSU5GRC1XUC0wMDA5LVQwNSIsCiAgImNhbmRpZGF0ZV9pbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJhcnRpZmFjdF9zb3VyY2VfcmV2aXNpb24iOiAiOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYyIsCiAgInByaW9yX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInByaW9yX2FwcGxpY2F0aW9uX3JldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiLAogICJzb3VyY2VfcmV2aXNpb24iOiBudWxsLAogICJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQiOiB0cnVlLAogICJuYXRpdmVfYWN0aW9uc19leGVjdXRlZCI6IGZhbHNlLAogICJhcHByb3ZhbF9pZCI6IG51bGwsCiAgImF1dGhvcml0eV9tb2RlIjogIkFETUlOSVNURVIiLAogICJ0YXJnZXQiOiAicmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbiIsCiAgImNvc3RfZXN0aW1hdGVfZXVyIjogMCwKICAicmlzayI6ICJQcml2YXRlIHNhbWUtc2NoZW1hIGJhY2t1cCBjb3BpZXMgYW5kIGJyaWVmIFJlY3JlYXRlIGF2YWlsYWJpbGl0eSBnYXAuIEZhaWxlZCBvciBhbWJpZ3VvdXMgcGhhc2VzIHJldGFpbmVkOyBubyByZXBsYXkuIFJvbGxiYWNrIGNoYW5nZXMgRGVwbG95bWVudCBpbWFnZS9zb3VyY2Ugb25seSwgcmV0YWlucyBsYXRlc3QgZGF0YWJhc2UuIiwKICAiZXhlY3V0ZV9ieSI6ICIyMDI2LTEwLTEyVDIzOjU5OjU5WiIsCiAgInJlbGVhc2VfbXVzdF9zdGFydF9ieSI6ICIyMDI2LTEwLTEyVDIzOjI5OjU5WiIsCiAgIm1heF9zbmFwc2hvdF9ieXRlcyI6IDUzNjg3MDkxMiwKICAibWF4aW11bV9uZXdfc25hcHNob3RfcGF5bG9hZF9ieXRlc19lYWNoX3NpdGUiOiAxMDczNzQxODI0LAogICJsb2NhbF9leHRyYV9kaXNwb3NhYmxlX2Nsb25lX21heF9ieXRlcyI6IDUzNjg3MDkxMiwKICAicHJpdmF0ZV9tZXRhZGF0YV9hbmRfc3FsaXRlX3NpZGVjYXJzX2FkZGl0aW9uYWxfaGVhZHJvb21fYnl0ZXMiOiAxNjc3NzIxNiwKICAidW5ib3VuZF9pbnB1dHMiOiBbCiAgICAiZXhhY3QgY29tbWl0dGVkIG93bmVyIHJlbmRlcmluZyByZXZpc2lvbiByZXRhaW5lZCBpbiByb290IHN1cGVydmlzZWQgcmVjZWlwdCIsCiAgICAiUHJvZHVjdCBhbmQgUGxhdGZvcm0gZmluYWwgYWNrbm93bGVkZ21lbnRzIiwKICAgICJjb25maXJtZWQgZm91bmRlciBleGFjdCBuZXcgZGlzcG9zaXRpb24iCiAgXSwKICAicHVibGlzaGVkX3ZlcmlmaWNhdGlvbl9zaGEyNTYiOiAiZGQ0ZWVjZjBjMTAzZGNhNzkyMjA5NGE4YmVlYjk5Yjc3YWU5NmZkMWQ1ZmU1MzJlMzdiZDgzM2RhYTAyNjE0ZSIsCiAgIm5hdGl2ZV9yZWFkb25seV9wcmVmbGlnaHRfc2hhMjU2IjogIjU2NjM3OTk0ZGZkYWU0NmE2ZjlhYjQ0MmMyZmY5YjI1OTIxMjY1MGIzNWViOThkODk2YzVlODM3ZjAxY2UyZjkiLAogICJleGVjdXRvcl9wbGFuX3NoYTI1NiI6ICJkODcxMDgxOTk5MjE1YmQzODUwYWIxMTczMDY0ZWQ2Y2I2ZDdjMjNiMjZkOWMzZDViM2M1OTQwZTY5OGQ0YzYxIiwKICAiZXhlY3V0aW9uX2J1bmRsZV9zaGEyNTYiOiAiMmFkNjU4MTg0NDRhNzJkZjdlNjU0MzU3NWJhMDRhOTk4ZTkyYjQyZDU1NzQwOTcyNmE1NGZiYTExNmI1MjQ5ZCIsCiAgInJvbGxiYWNrX3ByZWZsaWdodF9zaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgInBvc3RfcmVhZHlfbmF0aXZlX3Byb3ZpZGVyX3Byb2JlIjogIkZpeGVkIGNhbm9uaWNhbCBTT1VSQ0UgVDA1QDEgYXV0aGVudGljYXRlZCBHRVQgaW5zaWRlIGV4aXN0aW5nIFN0YXRlSHViIGRpc3BhdGNoZXI6IEhUVFAyMDAvdGltZXN0YW1wIHBsdXMgaGFzX3Jldmlldy9kaXNwb3NpdGlvbl9jb3VudCBvbmx5LiBSZXF1ZXN0IGlkZW50aXR5IGV4cGxpY2l0bHkgZGVyaXZlZCBmcm9tIGZpeGVkIHJvdXRlOyBubyBib2R5ZXhwb3J0L2Rpc3Bvc2l0aW9uaW50ZXJwcmV0YXRpb24vYXBwcm92YWxpbmZlcmVuY2UuIEFjdHVhbCBuYXRpdmUgc2VydmljZSByZXNwb25zZSBzaGFwZSB2ZXJpZmllZCBzeW50aGV0aWNhbGx5IHdpdGggbm8gZGF0YWJhc2UvcHJvdmlkZXIuIiwKICAiZnJlc2hfc2Nhbl9jb250cmFjdF9zaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgInByZXBhcmF0aW9uX2ZhaWx1cmVfaGlzdG9yeV9zaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIsCiAgImJvdW5kZWRfb3V0YWdlX3JvbGxiYWNrX3ByZV9hdXRob3JpemF0aW9uIjogewogICAgInN0YXR1cyI6ICJwcm9wb3NlZC1vbmx5LXVuYXBwcm92ZWQiLAogICAgImNsb3NlX2Rvd25fY2hlY2tsaXN0X2l0ZW0iOiAxOSwKICAgICJzY29wZSI6ICJtYW51YWwgc2FtZTc2My9jOTYgb25lRGVwbG95bWVudCBwcmVzZXJ2aW5nIGxhdGVzdERCLCBmYWlsZWRjYW5kaWRhdGUgb3V0YWdlIG9ubHkiLAogICAgIm1heGltdW1fc2Vjb25kc19mcm9tX3JlbGVhc2UiOiAxODAwLAogICAgImRlYWRsaW5lIjogIjIwMjYtMTAtMTJUMjM6NTk6NTlaIiwKICAgICJub3JtYWxfZnJlc2hfcmVhZGJhY2tfcHJlZmVycmVkIjogdHJ1ZSwKICAgICJ1bmF2YWlsYWJsZV9yZXZvY2F0aW9uX2NoZWNrX2Rpc2Nsb3NlZCI6IHRydWUsCiAgICAiZm9yYmlkZGVuIjogWwogICAgICAiNDAxIiwKICAgICAgIjQwMyIsCiAgICAgICJyZXZva2VkIiwKICAgICAgImNvbmZsaWN0IiwKICAgICAgImlkZW50aXR5L3Njb3BlIG1pc21hdGNoIiwKICAgICAgImhlYWx0aHkgc2VydmljZSIsCiAgICAgICJvdGhlciBwaGFzZSIsCiAgICAgICJmdXR1cmUvY3VzdG9tZXIgcHJvZHVjdGlvbiByZXVzZSIKICAgIF0KICB9Cn0K" + }, + { + "digest": "sha256:eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b", + "media_type": "text/markdown", + "content_base64": "IyBUMDUgemxpYjg1MDkxIHJlbGVhc2Ug4oCUIHByZWxpbWluYXJ5LCB1bmFwcHJvdmVkCgpUaGlzIGlzIGEgZGlzdGluY3QgcHJvcG9zYWwvdHJpYWwgZm9yIGV4aXN0aW5nIElORkQtV1AtMDAwOS1UMDUuIFRoZSBhY3R1YWwgVDA0IHNvdXJjZTIgYWNjZXB0YW5jZSBkb2VzIG5vdCBhdXRob3JpemUgaXQuIFByZXZpb3VzIFIxIGNvcHkgYW5kIFIyIHZlcmlmeSBVTkNFUlRBSU4gam91cm5hbCBzdGF0ZXMgcmVtYWluIHVudG91Y2hlZC4gSU5GRC1JTi0wMDEwIHJlbWFpbnMgYW4gdW5wcm9tb3RlZCBnZW5lcmFsIHZlcmlmaWVyIHJlc2lkdWFsOyB0aGlzIG5ldyB0YXNrLXNwZWNpZmljIHZlcmlmaWVyIGlzIGEgcHJlcmVxdWlzaXRlIG9mIGFjdGl2ZSBUMDUsIG5vdCBhbiBhbWVuZG1lbnQgb2YgdGhlIG9sZCBhcHByb3ZlZCBoZWxwZXIuCgpFeGFjdCBpbnRlbmRlZCBpbWFnZSBmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzIHdhcyBidWlsdCBieSBhZG1pdHRlZCBvd25lciBDSTExNTM0L3J1bjQgZnJvbSA5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjLiBQdWJsaWNhdGlvbiBpcyBub3QgaW5zdGFsbGVkIGFjY2VwdGFuY2UuIEZpbmFsIHBhY2tldCByZXF1aXJlcyBpbmRlcGVuZGVudCBwdWJsaXNoZWQtaW1hZ2Ugc2Nhbi9ydW50aW1lL2ZpbGVzeXN0ZW0vc291cmNlIHByb29mIGFuZCBmcmVzaCByZWFkLW9ubHkgbmF0aXZlIHByb2plY3Rpb24vb25lLW9iamVjdCBkcnktcnVuIGV2aWRlbmNlLiBVbnRpbCBhbGwgZmluYWwgaW5wdXRzIGFuZCBpbmRlcGVuZGVudCBvd25lciBhY2tub3dsZWRnbWVudHMgYXJlIGZyb3plbiwgZXhlY3V0aW9uLXBsYW4gc3RhdGUgcmVtYWlucyBwcmVsaW1pbmFyeSBhbmQgdGhlIGFjdHVhdG9yIHJlZnVzZXMgYmVmb3JlIGFueSBhdXRob3JpdHksIGpvdXJuYWwgb3IgbmF0aXZlIGFjdGlvbi4KCkFmdGVyIGEgTkVXIGV4YWN0IGNvbmZpcm1lZCBmb3VuZGVyIGFjY2VwdGFuY2UsIHJvb3QgZnJlc2hseSBhdXRoZW50aWNhdGVzIGZpeGVkLW9yaWdpbiBuYXRpdmUgc291cmNlLXZlcnNpb24xIG91dGNvbWVzIGJlZm9yZSBlYWNoIHBoYXNlLiBSZWNlaXB0IGZpbGVzIGFyZSBzdXBlcnZpc2VkIGJvb2trZWVwaW5nLCBub3Qgc2lnbmVkIGdyYW50cyBvciBhdXRvbm9teS4gV3JvbmcgdGFzaywgc291cmNlLCBtZW1vL3ZlcnNpb24sIHN0YWxlL3BlbmRpbmcvYWdlbnQgZGlzcG9zaXRpb24sIG9sZCBUMDQgYWNjZXB0YW5jZSBvciBjaGFuZ2VkIGlucHV0cyByZWZ1c2UuIFJvb3QgcmV0YWlucyBleGFjdCBhcHByb3ZlZCBzb3VyY2UgcmV2aXNpb24vZGlnZXN0cyBhbmQgYWN0aW9uIHJlc3VsdHMgaW4gc3VwZXJ2aXNpb24uIEFwcHJvdmFsIGRvZXMgbm90IHByb21vdGUgYW55IGFnZW50LgoKRml4ZWQgcGhhc2Ugb3JkZXI6IGRyaWxsLWJhY2t1cCDihpIgZHJpbGwtY29weSDihpIgb2ZmbGluZS12ZXJpZnkg4oaSIGNsZWFudXAtb2ZmbGluZSDihpIgY3V0b3Zlci1iYWNrdXAg4oaSIGN1dG92ZXItY29weSDihpIgcmVsZWFzZSDihpIgdmVyaWZ5LiBOZXcgcHJpdmF0ZSBuYXRpdmUgL2RhdGEvcHJpdmF0ZS96bGliODUwOTEtcjEsIHJvb3QgLnByaXZhdGUtYmFja3Vwcy8yMDI2MTAxMS1pbmZkLXpsaWItcjEgYW5kIGxvY2FsIHZvbHVtZSBpbmZkLXpsaWItcjEtcmVzdG9yZS0yMDI2MTAxMSBhcmUgZGlzdGluY3QgZnJvbSBhbGwgVDA0IGN1c3RvZHkuIE5ldyBwcml2YXRlIGpvdXJuYWwgaW50ZW50IGlzIGZzeW5jZWQgUlVOTklORyBiZWZvcmUgZGlzcGF0Y2g7IG5vIGF0dGVtcHRlZCBwaGFzZSByZXBsYXkuIEZpeGVkIG91dHB1dCBzY2hlbWEgY29udGFpbnMgb25seSBjb3VudHMsIGhhc2hlcywgb2JqZWN0IGlkZW50aXR5IGFuZCBib29sZWFuIHJlc3VsdHM7IHJhdyBlcnJvcnMgYW5kIHByaXZhdGUgY29udGVudCBhcmUgd2l0aGhlbGQuIEV4aXN0aW5nIG5hdGl2ZSBzbmFwc2hvdHMvZGF0YWJhc2Uvc2lkZWNhcnMgYXJlIG5ldmVyIHJlbW92ZWQgb3IgcmVzdG9yZWQgb3ZlciBjdXJyZW50IGRhdGEuCgpGcmVzaCBiYWNrdXAgaW5zcGVjdGlvbiB1c2VzIGNvcGllZCBleHBsaWNpdC1jbG9zZSBTUUxpdGUgaGVscGVyczogbGl2ZSBhbmQgb2ZmbGluZSBjbG9uZSByZWFkZXJzIGFyZSBtb2RlPXJvL3F1ZXJ5X29ubHkgYW5kIFdBTC1hd2FyZSwgYmVmb3JlIGFueSBTdG9yZS9hZG1pbiBvcGVuLiBJbW11dGFibGUgcmVhZGVyIGlzIHVzZWQgb25seSBmb3IgZnJlc2hseSBjbG9zZWQgaGFzaC1ib3VuZCBwcml2YXRlIHNuYXBzaG90IHdpdGggYWJzZW50L3plcm8gV0FMIGZyYW1lcyBhbmQgc3RhYmxlIGlkZW50aXR5L21ldGFkYXRhL2RpZ2VzdCBiZWZvcmUvYWZ0ZXIgcmVhZC9jb3B5LiBNYWluIGFuZCBzaWRlY2FycyByZW1haW4gcmV0YWluZWQuIFNjaGVtYSBtdXN0IGVxdWFsNSwgaW50ZWdyaXR5IG9rLCBhbmQgZXhhY3Qgc25hcHNob3QvaXNvbGF0ZWQgY2xvbmUgY291bnRzIG1hdGNoIGJlZm9yZS9hZG1pbi9hZnRlci4gVGhlIGRldGFjaGVkIGxvY2FsIGNsb25lIGhhcyBuZXR3b3JrIG5vbmUsIHJlYWRvbmx5IHJvb3QsIG5vIHNlcnZpY2UvcnVudGltZSBjb25maWcvY3JlZGVudGlhbCBtb3VudHM7IG9ubHkgbmFycm93bHkgc2NvcGVkIFVJRDAgQ0FQX0NIT1dOIGluaXRpYWxpemVyIHByZWNlZGVzIFVJRDEwMDAxIHJlYWRzL2FkbWluLiBPcmlnaW5hbCBwcml2YXRlIGNvcHkgaXMgaGFzaC1zdGFibGUuIENsZWFudXAgcmVtb3ZlcyBvbmx5IHRoZSBkaXNwb3NhYmxlIHZvbHVtZSB3aG9zZSBub25jZS9sYWJlbHMvY3JlYXRpb24gbWV0YWRhdGEgbWF0Y2ggdGhpcyB0cmlhbCwgYmVmb3JlIGN1dG92ZXIuCgpFYWNoIHNuYXBzaG90IGlzIGJvdW5kZWQ1MTJNaUIuIEF0IG1vc3QgdHdvIG5ldyBzbmFwc2hvdHMgb2NjdXB5IGVhY2ggbmF0aXZlL29mZmNsdXN0ZXIgY3VzdG9keSAoMUdpQiBwYXlsb2FkIGVhY2gpOyB0aGUgZGlzcG9zYWJsZSBvZmZjbHVzdGVyIGNsb25lIGFkZHM1MTJNaUIgd2hpbGUgcHJlc2VudCwgcGx1czE2TWlCIHNpZGVjYXIvbWV0YWRhdGEgcmVzZXJ2ZS4gTmV3IG5hdGl2ZSBkcmlsbCBwaGFzZSBjaGVja3MgZnJlZSBzcGFjZSBmb3IgYm90aDsgbG9jYWwgY3VzdG9keSBjaGVja3MgdHdvIHNuYXBzaG90IGJvdW5kcyBwbHVzIHJlc2VydmUuIEV4aXN0aW5nIFQwNCByZXRlbnRpb24gY29uc3VtZXMgYWRkaXRpb25hbCBwcmUtZXhpc3Rpbmcgc3BhY2UuIEVVUjAgcmVjdXJyaW5nIGluZnJhc3RydWN0dXJlIGVzdGltYXRlOyBodW1hbi9jb21wdXRlIHRpbWUgdW5wcmljZWQuCgpDdXRvdmVyIHRha2VzIGEgZnJlc2ggbmF0aXZlIGJhY2t1cCBhbmQgZXhhY3Qgb2ZmY2x1c3RlciBjb3B5LiBSZWxlYXNlIHRoZW4gcmVxdWlyZXMgbGF0ZXN0IHNjaGVtYTUgcmVhZG9ubHkgcHJvb2YsIHNlYWxlZCBQb2QvRGVwbG95bWVudC9jb25maWcvUFZDIGN1c3RvZHkgYW5kIHNhbWUgYmFzZWxpbmUgaW1hZ2U3NjNjL2N1cnJlbnQgQXBwbGljYXRpb24gc291cmNlYzk2LCBhIGhlYWx0aHkgc2luZ2xlIHRhcmdldDkyLjIwNS42Mi4yMzkgbm9kZSBhbmQgZnJlc2ggcmVxdWVzdGVkIENQVSDiiaQgYWxsb2NhdGFibGUgY2FwYWNpdHkuIFJlY3JlYXRlIGFuZCByZXNvdXJjZXMgcmVtYWluIHVuY2hhbmdlZC4gU2VydmVyIGRyeS1ydW4vY2xpZW50IGRpZmYgbXVzdCBzaG93IG9ubHkgdGhlIGltYWdlLiBBcHBsaWNhdGlvbiBVSUQvcmVzb3VyY2VWZXJzaW9uL3NvdXJjZSBDQVMgZGlzcGF0Y2hlcyBtYW51YWwgZXhhY3QgZmluYWwgcmV2aXNpb24sIGluaXRpYXRlZEJ5IGN1c3RvZGlhbi1jb2RleCwgZXhwbGljaXQgcHJ1bmU9ZmFsc2UgYW5kIG9ubHkgYXBwcy9EZXBsb3ltZW50IGluZm9ybWVkLWRlY2lzaW9uIGluIGl0cyBuYW1lc3BhY2UuIE5vIHdob2xlLUFwcGxpY2F0aW9uIHN5bmMsIG5hbWVzcGFjZS9jb25maWcvY3JlZGVudGlhbC9yZXNvdXJjZSBjaGFuZ2Ugb3IgcHJ1bmluZy4KClZlcmlmaWNhdGlvbiByZWFkcyBpbWFnZUlEL3JlYWRpbmVzcy9vd25lciBjaGFpbi9leGFjdCBjb25maWd1cmVkIFBvZCBmaWVsZHMsIHNjaGVtYTUvaW50ZWdyaXR5L21ldGFkYXRhIGNvdW50cywgaW5zdGFsbGVkIHBvbGljeSBoYXNoIGFuZCBzeW50aGV0aWMgcHVycG9zZSByZWZ1c2FscywgaGVhbHRoMjAwLCBpbnN0YWxsZWQgZml4ZWQgemxpYiBhbmQgZXhhY3QgaW1hZ2UgcHJvb2YuIEFmdGVyIGV4YWN0IGNhbmRpZGF0ZSBSZWFkeSBhbmQgdmVyaWZpZWQgcm9sbG91dCwgcm9vdCBleGVjdXRlcyBhdHRhY2hlZCBwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IGluc2lkZSB0aGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kLiBJdCBjYWxscyBjYW5vbmljYWwgbGlmZWN5Y2xlLm91dGNvbWVzIGZvciBpbmZkLTIwMjYxMDExLXpsaWItcmVtZWRpYXRpb24tcjEgU09VUkNFdmVyc2lvbjEgYXQgZGlzcGF0Y2hlciBmaXhlZCBPUklHSU4gd2l0aCBOb1JlZGlyZWN0L3Byb3h5IGRpc2FibGVkOyBleGlzdGluZyBpbnRlcm5hbCB0b2tlbl9maWxlIHN0YXlzIGluc2lkZSB0aGF0IFBvZCBhbmQgbm8gdG9rZW4vYm9keS9wcml2YXRlIGNvbnRlbnQgaXMgZXhwb3J0ZWQuIFJvb3QgcmV0YWlucyBib3VuZGVkIEhUVFAtc3VjY2VzcyBtZXRhZGF0YS9vYnNlcnZhdGlvbnRpbWUgYW5kIGNvcnJlbGF0ZXMgdmVyaWZpZWQgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UsIHRoZW4gcmVjaGVja3MgdGhvc2UgaWRlbnRpdGllcy4gVGhpcyBhY3R1YWwgcHJvdmlkZXIvUERQLWdhdGVkIHByZXNlcnZhdGlvbiBwcm9vZiBpcyBzZXBhcmF0ZSBmcm9tIGluc3RhbGxlZCBzeW50aGV0aWMyYWxsb3c4cmVmdXNlOyBib3RoIGFyZSByZXF1aXJlZCBiZWZvcmUgdGFzayBjbG9zdXJlLiBJdCBkb2VzIG5vdCBhc3NlcnQgcHJvdmlkZXIgYWR2aXNvcnkgZW1pc3Npb25zIG9yIG5ldyBkb2N0cmluZS4gQXJnbzMuNS4zIG9taXRzIGZhbHNlIHBydW5lIGluIG9wZXJhdGlvbiBzdGF0dXM6IG1pc3Npbmcgb3IgZXhhY3RmYWxzZSBpcyBhY2NlcHRlZCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBqb3VybmFsJ3MgQ09NUExFVEUgZXhwbGljaXRmYWxzZSByZXF1ZXN0LCBleGFjdCBzb3VyY2UvcmVzb3VyY2VzL2luaXRpYXRpb24sIG9wZXJhdGlvbiBzdGFydCBhZnRlciBvdXIgZHVyYWJsZSBhdHRlbXB0LCBib3VuZGVkIGZpbmlzaCBhbmQgb25lIFN5bmNlZCBEZXBsb3ltZW50IHJlc3VsdC4gVHJ1ZS9udWxsL3N0cmluZy9wcmlvci9mb3JlaWduL2V4dHJhLXJlc291cmNlIHJlc3VsdHMgcmVmdXNlLgoKUm9sbGJhY2sg4oaSIHJvbGxiYWNrLXZlcmlmeSBpcyBzZXBhcmF0ZSBhbmQgcGVybWl0dGVkIG9ubHkgYWZ0ZXIgYSByZWNvcmRlZCByZWxlYXNlIGF0dGVtcHQuIEl0IHN3aXRjaGVzIG9ubHkgQXBwbGljYXRpb24gc291cmNlIGJhY2sgdG8gYzk2IGFuZCBEZXBsb3ltZW50IGltYWdlNzYzYzsgaXQgbmV2ZXIgcmVzdG9yZXMgYW4gb2xkIHNuYXBzaG90IG92ZXIgdGhlIGxhdGVzdCBkYXRhYmFzZS4gUmVjb3ZlcnkgZGlzcGF0Y2ggd29ya3MgZXZlbiBpZiBjYW5kaWRhdGUgUG9kIGlzIGFic2VudC91bnJlYWR5IGFuZCBuZXZlciBkZXBlbmRzIG9uIGNhbmRpZGF0ZSBEQiBpbnNwZWN0aW9uLiBSZWNvdmVyeSB2ZXJpZmljYXRpb24gc2VwYXJhdGVseSByZXF1aXJlcyBSZWFkeTEvb2xkIGltYWdlL2N1cnJlbnQgc2NoZW1hNS9kYXRhLWN1c3RvZHkgYW5kIGV4YWN0IHJlY29yZGVkIHNjb3BlZCBjb21wbGV0aW9uLiBBbGwgcGhhc2VzIG11c3QgYmVnaW4gYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVo7IHJlbGVhc2UgbXVzdCBiZWdpbiBhdCBsZWFzdDMwbWludXRlcyBlYXJsaWVyLiBCZXlvbmQgZXhwaXJ5IHN0b3AgYW5kIG9idGFpbiBhIG5ldyBmb3VuZGVyIGRlY2lzaW9uOyBubyBhdXRvbWF0aWMgZXh0ZW5zaW9uIG9yIGVtZXJnZW5jeSBncmFudC4gQSBmYWlsZWQvdW5jZXJ0YWluIGF0dGVtcHQgcmVxdWlyZXMgaW5mb3JtZWQgcmVjb3ZlcnkgcmF0aGVyIHRoYW4gcmV0cnkuCgpUMDUgcmVtYWlucyBwcm9ncmVzcyB1bnRpbCBhY3R1YWwgaW5zdGFsbGVkIGFjY2VwdGFuY2UgYW5kIG5hdGl2ZSByZXNjYW4gcHJvdmUgdGhlIGZpbmRpbmcgYWJzZW50LiBObyBSaXNrIEVuZ2luZSBncmFkZSBpcyBhc3NpZ25lZC4gT25seSB0aGVuIG1heSBvd25lciBjbG9zZSBUMDUvcmlzayBhbmQgY29uc2lkZXIgZmluaXNoaW5nIFdQOSwgd2l0aCBleGlzdGluZyByZXNpZHVhbHMgbGl2ZSBmaXJzdC4KCkFjdHVhbCByZWxlYXNlIGFuZCBpbnN0YWxsZWQgdmVyaWZpY2F0aW9uIGFsc28gcmVxdWlyZSBmaXhlZCBwcml2YXRlIHJvb3Qgc2NhbiByZWNlaXB0IGFuZCByZXRhaW5lZCBmdWxscmVwb3J0IGF0IC90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4te3JlY2VpcHQsZnVsbH0uanNvbiwgc3VwZXJ2aXNlZCBtZXRhZGF0YSBiaW5kaW5nIHRvIGV4YWN0IGltbXV0YWJsZWY1NTgvYXJ0aWZhY3Rzb3VyY2U5YjQvc2Nhbm5lcmRpZ2VzdDYyYjEuIEJlZm9yZSBqb3VybmFsIHN0YXJ0LCBmdWxscmVwb3J0aGFzaCBtdXN0IG1hdGNoLCBubyBzdXBwcmVzc2lvbi9hbGxzZXZlcml0eSBmbGFncyB0cnVlLCBleGl0MCwgbm9uZW1wdHkgdmFsaWQgZnVsbHJlc3VsdHMgY29udGFpbiB6ZXJvIGZpbmRpbmdzLCBzY2FuIGNvbXBsZXRlZCB3aXRoaW40aG91cnMgYW5kIG5vdyBwcmVjZWRlcyBEQiBOZXh0VXBkYXRlLiBUaGUgcHVibGlzaGVkIERCIGV4cGlyZXMyMDI2LTEwLTExVDE4OjU5OjUwWjsgaXQgaXMgbm90IHZhbGlkIHVudGlsIHJlbGVhc2UgZGVhZGxpbmUuIFJvb3QgcmVmcmVzaGVzIERCIGFuZCByZXNjYW5zIHRoZSBzYW1lIGltbXV0YWJsZSBpbWFnZSBhcyByb3V0aW5lIHJlYWQtb25seSB2ZXJpZmljYXRpb24gd2hlbiBuZWVkZWQsIHJldGFpbmluZyBhbGwgcmF3IHB1YmxpY3NjYW4gYXJ0aWZhY3RzLiBBbnkgbmV3IGZpbmRpbmcgcmVmdXNlcyByZWxlYXNlL2Nsb3N1cmUgYW5kIGlzIHJldGFpbmVkIGZvciBpbmZvcm1lZCByZWFzc2Vzc21lbnQvbmV3IGRlY2lzaW9uIGFzIG5lZWRlZCwgbmV2ZXIgZmlsdGVyZWQgb3IgaWdub3JlZC4gRXhpc3RpbmcgcmlzayBzdGF5cyBvcGVuIHVudGlsIGFjdHVhbCBpbnN0YWxsZWQgcHJvb2YvbmF0aXZlIHJlc2Nhbi4KClJlZmluZW1lbnQgcHJlc2VydmVzIHJldmlld2VkODEvc291cmNlIGJ5dGVzIGFuZCBleGFjdGRyYWZ0MjkgY29tcGxldGUgYXJjaGl2ZXMuIEluaXRpYWw2NyBtYW5pZmVzdCBoYXNoIGlzIGtub3duIGJ1dCBleGFjdCBvcmlnaW5hbDY3bWFuaWZlc3Qvc291cmNlIHNuYXBzaG90IHdhcyBub3QgcmV0YWluZWQgYmVmb3JlODE7IHByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIGRpc2Nsb3NlcyB0aGlzLiBObyBwcmlvcm5hdGl2ZWVmZmVjdCBvY2N1cnJlZC4gTmV3IGZ1bGwgQ0xJIHN5bnRoZXRpYyB0ZXN0cyBleGVyY2lzZSBtYWluIHNvdXJjZWhhc2gvcmVjZWlwdC9qb3VybmFsL2Rpc3BhdGNoIHdpcmluZyBmb3IgZHJpbGwtY29weSxyZWxlYXNlLHZlcmlmeSBhbmQgcmVmdXNlIHNvdXJjZSBkcmlmdCBiZWZvcmUgbmV3am91cm5hbC9uYXRpdmUgYm91bmRhcnkuIFJlbW90ZSBwYXlsb2FkIGNhcnJpZXMgZXhhY3QgZnJvemVuIHNuYXBzaG90IGlkZW50aXR5IGFuZCBjb21wbGV0ZWQgcmVsZWFzZSBpbnRlbnQuIEZ1bGwgc2NhbiBjb250cmFjdCBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgU2NoZW1hVmVyc2lvbjIvY29udGFpbmVyX2ltYWdlLCBwdWJsaXNoZWQgY29uZmlnSW1hZ2VJRDYyMiAobm90IGRhZW1vbnNlcmlhbGl6YXRpb25mMiksIGV4YWN0MTFEaWZmSURzL3Jvb3Rmcy9zb3VyY2UvY29udGV4dGxhYmVscywgZXhhY3RseTM4T1MrNlB5dGhvbiBwYWNrYWdlcyB3aXRoIGNhbm9uaWNhbFBVUkwvdmVyc2lvbiBpbnZlbnRvcnksIGZpeGVkemxpYnIxIGFuZCBubyBvbWlzc2lvbnMvZHVwbGljYXRlcy90cnVuY2F0ZWQvZW1wdHljb3ZlcmFnZS4gQXJjaGl2ZSBzY2FuIFJlcG9EaWdlc3RzIGFic2VudCBpcyBsZWdpdGltYXRlOyBub3QgZmFicmljYXRlZC4KCgojIyBQcm9wb3NlZCBleHBsaWNpdCBtYW51YWwgc2VydmljZS1vdXRhZ2UgcmVjb3ZlcnkgY29uc2VudAoKQ2xvc2UtZG93biBjaGVja2xpc3QgaXRlbTE5IGluIHRoZS1jdXN0b2RpYW4vZG9jcy9zZWN1cml0eS1jbG9zZS1kb3duLWNoZWNrbGlzdC5tZCBpcyBQUk9QT1NFRCBPTkxZIHVudGlsIHRoZSBmb3VuZGVyIGFjY2VwdHMgdGhpcyBleGFjdCBuZXcgcGFja2V0LiBUaGlzIHRlcm0gY2hhbmdlcyB0aGUgcmVjb3ZlcnkgYXV0aG9yaXR5IGRlcGVuZGVuY3kgZm9yIHRoaXMgdHJpYWw7IHByZXZpb3VzIFQwNCBhcHByb3ZhbCBhbmQgb3duZXIgc291cmNlIHJldmlld3MgZG8gbm90IGdyYW50IGl0LiBPcmRpbmFyeSBmcmVzaCBuYXRpdmUgc291cmNlVDA1QDEgY29uZmlybWVkIGZvdW5kZXIgcmVhZGJhY2sgcmVtYWlucyBwcmVmZXJyZWQgZm9yIGV2ZXJ5IHBoYXNlLiBObyBzdGFuZGluZyByZWNvdmVyeS9hdXRvcGlsb3Qvc2lnbmVkIGdyYW50IGlzIGNyZWF0ZWQuCgpCZWZvcmUgcmVsZWFzZSwgcm9vdCBmcmVzaGx5IGF1dGhlbnRpY2F0ZXMgdGhlIGluZGVwZW5kZW50bHkgY29uZmlybWVkIGFjY2VwdGFuY2Ugb2YgdGhlc2UgZXhhY3QgdGVybXMsIG1hcmtzIGl0cyBzY29wZWQgcmVjZWlwdCBib3VuZGVkX291dGFnZV9yb2xsYmFja19wcmVfYXV0aG9yaXplZD10cnVlLCBhbmQgY2FwdHVyZXMgZXhhY3QgcmVjZWlwdC9vdXRjb21lIGJ5dGVzIGludG8gYSB1bmlxdWUwNjAwIHJlbGVhc2UtYXV0aG9yaXR5LWNhY2hlLmpzb24gaW4gdGhpcyB0cmlhbCdzMDcwMCBpZ25vcmVkIGN1c3RvZHkuIEhhc2ggaXMgcmVjb3JkZWQgaW4gZHVyYWJsZSByZWxlYXNlIGpvdXJuYWwgYmVmb3JlIHJlbW90ZSBlZmZlY3QuIENhY2hlIGlzIGhpc3RvcmljYWwgY29uZmlybWVkIGFjY2VwdGFuY2UsIG5ldmVyIGZhYnJpY2F0ZWQgY3VycmVudCBvdXRjb21lcy4gRHVyaW5nIGZhaWxlZC1jYW5kaWRhdGUgc2VydmljZSBvdXRhZ2UgdGhlIGFiaWxpdHkgdG8gY2hlY2sgc3Vic2VxdWVudCByZXZvY2F0aW9uIGlzIHVuYXZhaWxhYmxlLiBUaGUgZm91bmRlciBleHBsaWNpdGx5IGFjY2VwdHMgdGhhdCBuYXJyb3cgdW5jZXJ0YWludHkgZm9yIG1hbnVhbCBzdXBlcnZpc2VkIHJvbGxiYWNrIG9ubHksIGZvciBhdCBtb3N0MzBtaW51dGVzIGZyb20gdGhlIGFjdHVhbCBkdXJhYmxlIHJlbGVhc2UgYXR0ZW1wdCBBTkQgYmVmb3JlT2N0MTIgZGVhZGxpbmUuIFJvb3QgbXVzdCBwZXJzb25hbGx5IGV2YWx1YXRlIHRoZSBleGFjdCBib3VuZGVkIHJlY292ZXJ5IHJlY2VpcHQ7IG5vIGFnZW50IHByb21vdGlvbiBvciBhdXRvbWF0aWMgZ3JhbnQuCgpJZiBmcmVzaCBzb3VyY2UxIHJlYWRiYWNrIGlzIHVuYXZhaWxhYmxlLCBhIHNlcGFyYXRlIGZpeGVkIHByaXZhdGUgL3RtcC9zZWN1cml0eS1pbmZkLXpsaWItcm9vdC1yZWNvdmVyeS1yZWNlaXB0Lmpzb24gbXVzdCByZWNvcmQgZnJlc2jiiaQxMjBzZWNvbmQgc3RydWN0dXJhbCB1bmF2YWlsYWJsZSBldmlkZW5jZSAodHJhbnNwb3J0IHVuYXZhaWxhYmxlIG9ySFRUUDUwMi81MDMvNTA0KSwgcm9vdG1hbnVhbHZlcmlmaWNhdGlvbiwgZXhhY3Rwcm9wb3NhbC9zb3VyY2UvbWVtby9jYWNoZS9yZWxlYXNlYXR0ZW1wdC9EZXBsb3ltZW50VUlEL2NvbmZpZ21hcFVJRC9QVkNVSUQgYW5kIHNhbWVpbWFnZTc2My9zb3VyY2VjOTYgcm9sbGJhY2sgc2NvcGUuIE5vNDAxLzQwMy9leHBsaWNpdHJldm9jYXRpb24vY3VycmVudGNvbmZsaWN0L2lkZW50aXR5LW9yLXNjb3BlLW1pc21hdGNoL2hlYWx0aHktc2VydmljZSBmYWxsYmFjay4gQ2FjaGVkIGNvbnNlbnQgbXVzdCBoYXZlIGJlZW4gcm9vdHZlcmlmaWVk4omkMTIwc2Vjb25kcyBiZWZvcmUgdGhpcyByZWxlYXNlLiBOYXRpdmUgcm9sbGJhY2sgaW5kZXBlbmRlbnRseSByZXF1aXJlcyBhY3R1YWwgY2FuZGlkYXRlaW1hZ2VmNTU4IGF0IGV4YWN0bmV3c291cmNlIGFuZFJlYWR5MCBwbHVzIHNlYWxlZERlcGxveW1lbnQvY29uZmlnL1BWQy4gSXQgY2hhbmdlcyBvbmx5IGV4aXN0aW5nQXBwbGljYXRpb25zb3VyY2UgYW5kIG9uZURlcGxveW1lbnQsIHBydW5lPWZhbHNlLCB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBjYW5kaWRhdGVQb2QvREIgb3BlbiBpcyByZXF1aXJlZC4gTm8gZHJpbGwvYmFja3VwL2NvcHkvcmVsZWFzZS9ub3JtYWx2ZXJpZnkgZmFsbGJhY2sgaXMgcGVybWl0dGVkLiBBIHJlamVjdGVkIGN1cnJlbnQgb3V0Y29tZSBpcyBuZXZlciBkaXNndWlzZWQgYXMgYW4gb3V0YWdlLgoKRmFsbGJhY2sgcm9sbGJhY2stdmVyaWZ5IGFmdGVyIGNvbXBsZXRlZCByZWNvdmVyeSByZXF1aXJlcyBDT01QTEVURSByb2xsYmFjayBpbiB0aGlzIHNhbWUgcHJpdmF0ZSBqb3VybmFsLCBoYXNobGlua2VkIG9yaWdpbmFsIG91dGFnZS9mYWlsZWQtY2FuZGlkYXRlIHdpdG5lc3MsIGN1cnJlbnQgcmVjb3ZlcmVkaW1hZ2U3NjMvc291cmNlYzk2L1JlYWR5MSBhbmQgc2VhbGVkY3VzdG9keS4gSXQgZG9lcyBub3QgcmVxdWlyZSBhIGNhbmRpZGF0ZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gcmVjb3ZlcmVkLiBPcmlnaW5hbCBvdXRhZ2UgZXZpZGVuY2UgaXMgcmV0YWluZWQgdW5jaGFuZ2VkLiBBY3R1YWwgUERQIHByZXNlcnZhdGlvbiBjYW4gcmVtYWluIHVuYXZhaWxhYmxlIG9yIHJlamVjdGVkOyBubyBjdXJyZW50YXBwcm92YWwvUERQc3VjY2VzcyBvciB0YXNrY2xvc3VyZSBpcyBpbmZlcnJlZCBmcm9tIHJvbGxiYWNrLiBPcmRpbmFyeSBmcmVzaCBvdXRjb21lIHJlY2VpcHQgaXMgcHJlZmVycmVkIG9uY2UgcmVzdG9yZWQuIEJleW9uZDMwbWludXRlcy9kZWFkbGluZSBvciBhbnkgbWlzbWF0Y2gsIHN0b3AgYW5kIG9idGFpbiBhIG5ldyBpbmRlcGVuZGVudGx5IGF2YWlsYWJsZSBmb3VuZGVyIGRpc3Bvc2l0aW9uOyBuZWl0aGVyIGV4cGlyeSBub3IgdW5jZXJ0YWludHkgZ3JhbnRzIGVtZXJnZW5jeSBhdXRob3JpdHkuIEl0ZW0xOSBpcyBjbG9zZWQgYnkgYWN0dWFsIGRpc3Bvc2l0aW9uL3RyaWFsIG91dGNvbWUsIHByZXNlcnZpbmcgb3JkaW5hcnlmcmVzaGdhdGUgd2l0aCBubyBmdXR1cmUvY3VzdG9tZXItcHJvZHVjdGlvbiByZXVzZS4gU3RhbmRpbmcgcmVjb3ZlcnksIGlmIHdhbnRlZCBsYXRlciwgbmVlZHMgc2VwYXJhdGVseSByZXZpZXdlZCBpbmRlcGVuZGVudGx5IG9idGFpbmFibGUgYXV0aG9yaXR5LgoKUG9zdC1SZWFkeSBwcm92aWRlciBjb21tYW5kIG5vdyBleHBvcnRzIE5PIHJldmlldy9kaXNwb3NpdGlvbi9hY3Rvci9zdWJtaXNzaW9uc3RhdGUgYm9keS4gSXQgcmVjb3JkcyBIVFRQMjAwIGFuZCB0aW1lc3RhbXAsIGhhc19yZXZpZXcgYW5kIGRpc3Bvc2l0aW9uX2NvdW50LCBhbmQgcmVxdWVzdCBzb3VyY2VJRC92ZXJzaW9uIGV4cGxpY2l0bHkgREVSSVZFRCBmcm9tIHRoZSBmaXhlZCBhdXRoZW50aWNhdGVkIGNhbm9uaWNhbCByb3V0ZS4gQWN0dWFsIExpZmVjeWNsZVNlcnZpY2Uub3V0Y29tZXMgcmV0dXJucyBvbmx5IHJldmlldy9kaXNwb3NpdGlvbnMsIHdpdGhvdXQgdG9wLWxldmVsIHNvdXJjZSBpZGVudGl0eS4gUmV2aWV3Tm9uZS9kaWN0IGFuZCBkaXNwb3NpdGlvbnMgbGlzdC1vZi1kaWN0cyBhcmUgY2hlY2tlZDsgbnVsbGFibGUgY29tbWVudCBzdGF0ZXMsIFNZU1RFTSBhY3RvcnMsIHByZXBhcmVkL2luX2ZsaWdodC9jb25maXJtZWQvdW5yZXNvbHZlZCBzdGF0ZXMgYW5kIG5vdF9zdWJtaXR0ZWQvaW50YWtlX2NyZWF0ZWQgcmV2aWV3IHN0YXRlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCBpbnRlcnByZXRpbmcgdGhlbS4gT3B0aW9uYWwgbmF0aXZlYm9keWlkZW50aXR5L3ZlcnNpb24sIGlmIHByZXNlbnQsIG11c3QgbWF0Y2ggdGhlIHJvdXRlLiBObyBhY2NlcHRhbmNlL2N1cnJlbnRhcHByb3ZhbC9nbyBpbmZlcmVuY2UgaXMgbWFkZTsgZm91bmRlcmNvbnNlbnQgcmVtYWlucyB0aGUgc2VwYXJhdGVseSBpbmRlcGVuZGVudGx5cm9vdHZlcmlmaWVkYXV0aG9yaXR5IHBhdGguIEZyZWVmb3JtL3Vua25vd24vcHJpdmF0ZSBmaWVsZHMgbmV2ZXIgbGVhdmU7IGZhaWx1cmVzIGVtaXQgZml4ZWQgbWV0YWRhdGEsIG5ldmVyIHJhdyByZXByL2JvZHkuIEFjdHVhbCBvd25lclBvZCB2ZXJpZmljYXRpb24gYWxzbyByZWZ1c2VzIGFueSBub25lbXB0eSBlcGhlbWVyYWxDb250YWluZXJzOyBjdXJyZW50IG5hdGl2ZSBlc3RhdGUgaXMgbm90IGNsYWltZWQgdG8gaGF2ZSB0aGlzIGRyaWZ0LiBEb2N1bWVudCBjb21tYW5kLWxvY2FsIGNvbnRlbnQgaXMgZGVkdXBsaWNhdGVkIGJ5IGRpZ2VzdCB3aGlsZSBtZW1vIHByZXNlcnZlcyBib3RoIGxhYmVsczsgYWN0dWFsdHlwZWRtZW1vL2RvY3VtZW50cy9pbnRha2UgYW5kSFRUUGJvZHlsaW1pdCBhcmUgdGVzdGVkLgo=" + }, + { + "digest": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQwOjE1LjU0MDg3NCswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMSwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImNjZmY3YzFlY2ZkOWViNTlmYzBjZTU2NmMxMDEzYTJhZjVkZjUxNGFmMDQ4YzY4NDc0YTI3Mjk5NzAyNGVmN2IiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iLAogICJwcm9qZWN0aW9uX3JlZmVyZW5jZV9maWxlcyI6IHsKICAgICJzZWFsZWRfbGl2ZV9kZXBsb3ltZW50IjogInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiIsCiAgICAic2VhbGVkX2RlcGVuZGVuY2llcyI6ICJzZWFsZWQtbmF0aXZlLWRlcGVuZGVuY2llcy5qc29uIiwKICAgICJjYW5kaWRhdGVfZGVwbG95bWVudCI6ICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIgogIH0KfQo=" + }, + { + "digest": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQzOjQyLjg1MTA4NiswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMCwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiIsCiAgInByb2plY3Rpb25fcmVmZXJlbmNlX2ZpbGVzIjogewogICAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiAic2VhbGVkLWxpdmUtZGVwbG95bWVudC5qc29uIiwKICAgICJzZWFsZWRfZGVwZW5kZW5jaWVzIjogInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iLAogICAgImNhbmRpZGF0ZV9kZXBsb3ltZW50IjogInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiIKICB9Cn0K" + }, + { + "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:2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtZXhlY3V0aW9uLXNvdXJjZS1idW5kbGUiLAogICJ2ZXJzaW9uIjogMSwKICAicHJvcG9zYWxfaWQiOiAiSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEiLAogICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgImZpbGVzIjogewogICAgImV4ZWN1dGlvbi9hY3R1YXRvci5weSI6IHsKICAgICAgInNoYTI1NiI6ICI0MzgzOWU3YzY5OGRjYzI5NDcyZTE0OTU5YzFjNzE5NzBkZTZhMzA1MTE4NDE0NTE2MjQ1MTk0YTIzOTlkNmExIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDI2MjQyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTgwOS9YZmJOcEsvKzYvZ3BqOVFTcWdQdTBuYXlNdmV1YkczbTczVXpuUFNkbnMrUHo2S2dpeXVLVkpMVXJiVk5QLzd6UWNBQWlRa0s5bmV2c3ZyYXlnU0dBd0dNNFA1QXZMa3laT0xYSGp6OUVITXZHcTlFdVZkV3NIamFoRlg0dGpMeFowb3ZYS2RlL1VpcmJ6WnVrenpHNjhxMW1VaXZGVXBWbkVaMTJtUkQ1ODhlWEtRTGxkRldYdHhlUU92SzZGK0E2UkZsazdWejM5VVJhNmVpK3BnWGhaTGJ4WFgyTVNUcjkvQlQ5V2sxSEFxa1lta0xzcEt2NmpqV2ordnA2dXlTRVRWZk4zb3h6cGRpb09EZEk3dmh2TXN2cW1HeFFwZXByK0p5WUVIZjhvWUp1MjkzMVMxV0o0OXBIWFBWOTluWHByWG9vU3Axa2dJTVY4RGRmeit3Y0c3djU2OFAzdnZoVjdQbjVWcGxnMm1jWEs3WHZtQkozOG54V3FEdjRyNVBFdHpNUUJDcG5ONmsyUWl6dGVyZ2Z6aUI0UUQvL0dUZFYxQVV3T2NlcU1BbGtBSFdCeDhiR0NXUlpaaEYvTlpEUW5ZSHN6RUhMRC81em90UmU4dXp0WWlnSjh4TEVXZktRREV5WXZhbzA4VGpRL1Q1V2Q4ZVZhV1JkbVRmU1RBYWhIM2NPa2tqRmw2STZvYVNDSlhmQWpmajE2ODdQWHA2MzFhTDJobHVRdXNnTWg3ZmpuMSsxNWN3Vm9DNkdVejhyd292V2xXSkxkQWZ5OEYydmV5ZURtZHhSUFpjZ2ovbS9VT3gwZlBuejQ5NmdmZTFQZjdFNE9PQ3B2aGVqV0xhOUVqV0l3SUxPVzZ6TlgzaFhqZ3A1NmExYXBNNzdBTG9obEFzNUs0YmhQK0pjNHFvY2lWend1WXFER2RETG14cDBaZ1F2ZnczZkI5OU9iOTZadkxIdllaVm5XMExHYWlqd1RYb0QwQmtEM2QrUExzQjd0eDM1cFluTTg4OVhtZHpyd3dCRGthM3NDczBsbXZUNThWcUI4dlRzOWE0MExyM3JqNFpqeDJZREF1WG83SDNjRjZUVE5ZRlFVdUI5NjlSWENIUUg1ZkVzMHI3bk9RbVdSZDFjVnNvd2hCQW5ONWNmRkJrU3lLNW1rbW9xZ1B5MWdWMlozbzlZZWdNMFJlSDd3R3NZSm0yRnE5dXZqbC9PeFNkZlZIaTJJcFJ2ZWdCNUxGQ0pFcGwySTJtSWtrclVBUndVaXZmM3IvNGVMMHpjbTV1MHU5RUFQR0w0MmI1cjlDNDZianlQT0hja1pTRUt2UjBmam81ZUg0OEhBQVk4NEd2d0YvRDhwRC8rRDl4ZXYvT3NPSitlczhmWmlNUnFPN3VCeUJ4aHpOZ09ORU9hemdMLy9nelk4blArQzhmTUQzUnZ5akdDYkZPaXVXVS95Y3h0bEkvdXhPNkQ5WmlDYnpGeSsrL1hiKy9OWEw2ZUg4Nk9VM3MvRTN5U3g1Tlg5eE5QNVd2SndmelkrZUg4Ni9lVDc5NXV0WHlkSFhyNDZlVDhkZmZ6TStBaWlIWDhjdjRKVi84UFBGMjU5K0pCek1HUXhnQldCcHhVRE56ei80OGVUdjBmZS9maUR0OXVMd3lIdnFTVGxUZW1TZDkwREozNEhVd1NLSDUwVU8yZ1IxYkxHdXcxZGpLU0pTekJyRlBHejZwZmtLbW1KdjZDZ2U2dkJEaVJvcGlWZlFSMFFBQjcvelN3VlkvcTJrRkxlUkNIQmZaM1dQLzVMajF1V21VUVNrejJBYTJIcVlGZkdza28yQmcyY0VEVnVKaDBTc2FxL1hLTHJBKzdCWjhXTi9oenIwcTNndWVLK0UrU1lpQlNqclBMNkwweXllWnJCL3doQUo4QjY4VEVSWnh5a3duRWM3SGhMTjBoVVNMYVphQXFLS29qVm1ZYS9TSENRYVFDalZQVXVUbWlXZFhxRHc5L3c0eTZKa0laTGJLbHJGVlFVandZNU5OTFFrMm1kMFo2QTVTT1BUSHVFQmxxc005cmhqbU9TOXh3dEFLbnNoc2huWUFRV3VaNGw3Q2NJQU0yR1oxalZJZXVoOVpJQzQ4YlF4d0wwb3ZwZkxHU2xvK0RvSHErRk9SUEVLZUFPbUVCRVdxWmhGMDAxVUZrWHQyemd6NHFyVEdrUTRyOU1FcEhNVzNaUnhYaU5JTmtvaTNCZUtQTnRFVTBDS3QxZjRsc2VyYWxIVStxc1R2bTdGSW1kMW5HNXFVVmx2VUlNWlUyRmRGVW10c1F0L1VOUFliMVhNb2p4ZUN2VXNYMmZZUkU4Q0ZKWll4aEhhSURkbFdtOGkwQk41WFRuQlUwLytIaTNqRFhSS3N2VU1YK1hKdWlUc1lKVmgzV2dlc1AyeTZSWWhCNElPRURPTGluZXNUbDBEb2M3R1ZnUm5CVkl0bE5VQks2MlhraVlEcElDdGdqQ0RiVGpHTlFIWUtBall3QUU3eVZKRWRKYk81OFl5U01xNWhsQlRZMHE5MkhNWXVVd1IybFFXT0pLMExBUEdXcTNMVlFGd21LRjVsYkkwMldpMFhHQzVCZTYwUmdlNXNnMW9WTDNFUHdTV2ZxMWdsNGx2cU5kQ3hGbTlpSEFQQjJPek1ua01oQ1dkaVJJZnBreDBrYUJ0cU9hUTBJcjZueXpOVW9GeUlEWFI5LzRjTnFJYjRJNGxIbGF3czRNY1M0a0hNbVN6U2d1K0ZIZlNXRksvUmFqeTZvMHkxWm5mRHBUSmhneU5GbHZ2YzhWeFg4WTN0REdhckhLNGx0bUtmN2c5VC93SzIxMzNYVmgyUmQ3QmdYc1AyaWp6NFh5ZFpjdTRUaGE5MHIrS0IvUHg0TlgxeDVmUFA4RVFKazZvbzFFTjh5WUtQQUlmVTcwYzBxSnVMUWZnMEZaTURud1VMalZzWkpJTTdWNDhQTkNZdHBLeDkyZHZTenRrSEcwVmRCbS9qWFlGanROT3BFbDM3c0M1alFhMXYrWWxJKzlxV1AwelMydGh1RWZxVGI5TFJlemRSa2RhSnpTUXRDallYdHR1MlJ3ZXRVd2J0R2V1Zk82R21BekFSY3ZuNlEwOGc1UFNVNFlsR0pOaXVhbzNBMjZwR3ZXcHg2S29jUGRpSy9MYWUrYlI4RzBLRXpiU1hIS2JRNlZZRnVpejRGYU1yaDJyNzhEakhSYWxYUk1UTkFqc25yV2FYck1Sb0xEbHRYcTlya0VmUlVyQnNQZURrS1hDa1Y0b3Fxa1M5K0dZTzBvS2ZlWDloU0lLb0FuWFFIeFdGcWhtUUxhOWVJNis5RExHOVdmVlcza1lad0F2NUVIZ2NwWXF3b0NPNUxCUlFZMGFoRjEvcWFNRmx4Yy9YSjc4eUlaSnZFRXJqOHlTem9UOVNaY0kxazdJQklCbTdWZll5cVlITnJMZm1OcTRTeHhvditOcklLMHlhQ1ZYc0xNUlQ0eEY5WlhkQkcvMUFoOTB6Qm5ZUjJCVG01akdiNC9jcTVINk9FQ2xDNjdHS2lzMlM1am5FSnY2ZlhLdUl6VE1lLzErRnpDMEZ6blFMNEdGMncyZUYyeGdkdGh2aUFRVVVvcU8reGI0K3Z0bkk2OERKVzdBT25ieTJYQ3Q3UkdnOThqaEhiVy9ERmNiRzFZWFZNdnlBRkI2MnZnbTBvYkVIckJzbzJQTHBIVWpkZ3FCb1lxNWM5WTRHYmxqRzFpeDV0Vjdkd2NyTmtlcXBFVDNLRlR5Q2kxV1dRdytqUjlGNzA1K2ZYdHhjaHBGUG1xWVZka2pMR2ZyNWFycVNaSHU5L3U2aDU0bGRQM2hwNU5MbzZOQnFqZ0g2YnhaeDJXWFRuMXJFN0JjU2RMcFZiVmc1eVhOVXZTN3hvZGt6bTNxUlpGLzdRMzg2MEJPcDlISFIrTnhYeWxqc2lxVnF0bWxrLzhCUXA3SG1WU2FIR21JMkQ4TFBUdXVpQnVvL0JKYUlVWU8zYlRqaHF3Tnl4UjBhYWlHR2FKdGZNV2FCamIxSzNPODZ5dWZLZUJmVTljbFdNL1lISHAveWRaQ0l6Y0cxNjNZYkxXMzluQ3h1dlppdjJzektJeXZZTEJySkJMaFFML0lxaXN3ckEzYnlHOGkxd2g3ekNYS0tDRExMdFJ6N3hnZ2xsbmRHSkdQV1NUYXVuSUFmdHpBOGprMlB3Vjdkb1l4ZW9XNkVWdWp0UzVtRnVyYXZidysyRzJaL29hV2FlOXFJSitlcWxmOS80QzVBSlMyaWNyb1lKeXZwRUdKRGkxa3NpS0pNeDFSUXhNSVd6RTdJSnBGeGVGZmFoZmd6NHZvbDh1TDg3ZS9lci96cjllWFp5Y2YxSSt6djc5K3E1N1BMLzV5OGZidHhTK0JHYTM4eXZzK3pXTXdJRFIxT0x6ajNSUmdXNURSVVJkZXJFSzdaQkVHTXJsUkYwVTJBajZvUjFseEkwM0dvWVQ2WG9NamQyUkVUa1VqRy9keDVaR2xpWkVJYnlxQTFRWGFEamttU1RoaEF1Wjdtbk9LcEltQ3cwVG1NeUxBSE4yd2V4a0ROeG8zN0kwdU8vSVBKaHB1MTFQdzFqSXlrN3hCN25XQ2haNFBGaVF1eXJPdWN3cWM1QTBTUjUvQndBTy8wUnZobEVhU1FpUGNDTDU5TVg1MU9DZ1BSd2dWRjdBSkRkZGxuRmR6Z2NyRkNQQzlvemx0VVo5eUlxZzZhVzFDcytPYmQyZUJDK1hPSCtncnl0THNlM3IyOC9sUGI5ODJ1S2s4RWVLbVVrYkRVekdQUWJ1OWx5OTYzZWF3UDl5a0ZXWWExT1JrakRBd3dKejlmSGIrSVFMZVBHMEF6RUFwb1djTDQrRm1NRndXSUMxRm5pYTlQdER0OE1YWVVGVmdDZHhSMUd4c2tISmpPNUgzQy9SWE1IQTM2WkFFZERHWXpjaGVZVFB1b0RPdW81OFNmOVgvT3hsYzFOUG5oNmFGR2RYWHk0MERrVi9sZDhmZ2RBMEpOeVZuV21RY290RGxCUmdwS3B6Y0JTR3pVQVJwNHVTSEtZQytkVXhQRXZaWjZNRWdacmJIVFFYWi9NL2hMcDJNNURHYjd2Q0EyNEVsTWdFb3JpeG1WV2ZYUWYvWVFVQlRXZHlYcVoyMWFrdmU4RDVPNjU2eVBwYnhRKzh3Mk1VU1JoSnBEb05rV1l2ck5CL1FUdG5iTXFoY1NsY2JXRHZkYkFWV2RJODJEdHcwdWl1cEc5Nm0ySEQ3ZDVxa0tXb05oZWJadWxvWTMxQ3BWcHM4NlZtTkpNLzFsVDFFbVQzYWR1eFVuUjdSRllDbjlrTk84R0hxaStJYjRTN2U2ZVRRTUZYS3cyN3BLQTJpNjZERlEybXVRdk1qblVRNDlqaTRHYlRqOGw5NWwyS0F3dWNwUzJ5RUxyVDB1UFVjdlErNE44Ri9adFF3SU5HRFRRMDVqNkh5bHNXZC8yVTdVRkdhd0YzcGtQZTFUWS9tTlZKTnR1MFE2VEVhMmdhVURDWm9rclN0UDFYV29PaGpoNGcrUG4ycWh1SnNmcFFBNTlVVWhYVUZrU2VjY3pHczFxU2dJRUlsRXlIUWdvSXBuNlMzSU1zQUdNS21aL3NFKzRWZTlZeE1rOHUyU3kwQlVPMlZXTUJhRnV0cXU2ZGcraHR0VDBHSG1ZSEROVnkydnhuc05pWUhacUxRczBhZVpLZGxrcXRGdy8yTzQzTlhtTDRzT042R3BreE0yWitQSDlHTDg0Ym5ZS1o4K3VSZjJ6eW5vRGlsMi9DSWRUdVpIU1JmYTVyWGd5eGVqZEdLc1JtTHpWeTVmdDRwNGVlSi9BWi9hY1R0K1dSb1lzek0yZHdWMlpxelFGblZuZFdXQ1RFWTUzUmttaGVGR2J3VDJWRHE3V29GdklESVZ1MVlnVDlMcTFWUllkYlNZNHk4ZUZvSjBEaE5sakJ0SEtVQ1AyeG5sMWJOQzd5SjZ4cURvQkdLTmhNaW5vTGpTb0c2amtrNlREZ1daaVNxZGZhOVBPeGtYaHdBMXR4ZjRhRnkzQ3JYME8wZzhZTk9ORGNPV1NTZ1NyZXVGbi9rRlFQeHVPTVlNTEVFdjZRWnVrZkQrWVg3VFU1UGNpZEFpWDVJbGpwTzRNdkFBTm5DTFRSanRtcXhvU1NRa3cvVk44VjZkWm11ZWlSUkRBckxsNWpScUNWNklzWUcxOXJZMHJ5U2lTcm5Xc2pQMjlEVXZkdUlZbXBOM0N1RzF5SnJwUERsK0xLRlZValFRRFZyQ2JTRWdobkt2V2pPaDV5dHB4ZFhZeENJYy9MTkczTFkzem1qLzVaa3hDY0FMQzhkdTZMVjQ1UVprUlVYOHlJMUl4bTJtMTZza09hVjMzOE01bnRRKzhJQ0tjbVdWa1ZHOHRHbTMxWVYvdkZXYkNZR0ZTaFVZd1dJem1WR1hFNGRuazYxYkRFaThQQ2FXZXNFdkJBV1ZLV0hjalJRWEJWMzNDSGlrWnVFUUtDUlUvYlRCZlJEMDluNzZjM3BlUFQ2NUYzMCtxOFh2NXdEY21tZGdxdi9HM01xbVU5eTluVUJ2cjd3enM5K0lTZFprVVBGRU00TEQ1TThJd3kxZSs5K2ZqM2kvTStvTG03QkoxaFNSRUU4Z0pxdWpsWE1BRVFnODNKeUhUQXZMR3F5dHNUOVVNcUNSSVdzc2lkUG50aDFsa0ZSQldpcUJsUUE2YXg1NURxV1N4Z1paaW9yV1I0cmVKd1hHWGplb1QrU2VzRS9Wcm5qOE96djc4NWVmemc3eGRIQUNzY3RaNWFXUGU3Um4zU3JacEI1S0NXbUF6S1NnNHd3RWdCS0ZzdGlKc0VFVkxNR2FNeENGVHppRDg4UUl5S09Dc0ExOGFQZmRmVG9keXQyOUxzUmNBcGtHSWxUcldHN2RQRVliZjF3Zk5DTjIraXdUUjJYSUNkZ3J0bU9PL2x1SVZJZnlaRVBwK3M1K3hkRzNlSkJ5K1ZWM2kwTytpeTBQRmxjU1hqNzNZdkRvNmV5dTRPeWlwNXlrVGdUcTl4UUNpR1NVRExLbHBONTdLNlhsQzJsczNXc25TejFYdnRYVkUzWXJxajhVNmlZWkFldUlOV3BhUVppNWwyVWxlS0I0bjc3VWgrT3dTcmoveE51Wm12cjR3RU1sb011Ky9pa1ZhUDBaRktqdGY3RWFjdnp4MCtBQ1VoWms2OVEvSzV5RGpzTTNiNVIrNm8rdGl0ZnlUdHBmR1JNQUlOYy82R0paVWZLdmx6bkRMcGMwdDhwLzhwRmZWK1VWRVlNZG9RMGI1Qm50ZTBFeUt6V3BKa1ArZWNTL01LU1BoMGVmYnQwR0REUUJwUUl6V1E4R1VzWThRcXNwb0lLbkUvZXZtMWV4ak1xbGlHdDY0WlZpV1NOSlNFRFVGbU1KMkI5UDhBVkJHNjhFZEtLSnMyS2oxZ0FFYktDQ2FveUlSdEo3cm5QUEQrWWdkUnJwZVljRUhhSWNyTXFVZ2JIV1NCNG9wSk9IQ3JCZmFSUnl0ZEc3Slk0TzNRWFFaSmFDSG41OXkrRFBId2hZOTVtMW9vSDR2Y0Y3K3ZFUXYrK1JUYldtQ1J1UXYvZnNkWjdyS0pqakM5YVZPV25jdTZvc1NBVnBaNEJwUjVmWlducFQvRnZCYnFsajY2M1dkMTdwMHI3cldTTmJOWTFXNVhUdVVJTGZZWEJSYzVRNklJcDc0YjNBZHEvMVVFT2F2bWVpTUlqa1NZa0ZwWDFVbGFockJ4ZG1yY3QwMS8xZERyNk9sR0hybjRyL0RsS01tQzZaajE0WktuMkpWN3hiQW5tNEY0cjFmRmlCdFJaTDkwamFRWERkM2gwZVZ1QkxCeG14OUx3SEZoQ3pRTGdab0t5cU0xMkt4aXN5Nld3K3locldpNkV3NWFXTlhTdzhGektpVFYyYzVGc0VzNnFBdnhwOFVENTFmVjBtVllWdXdPZldvRUJlem9xWk5aSnBDSld2R3V6Mlh0Q3pZblg0R01PKzlZNklkTjV1YTVxTW5rcXRCMXFyQWZLME5Sc00vQklnUnpLL0NZZExmbTNpdTRYaWkyaXVrdGs0Zk5BTVllVUFiZlk2dFJ1VlVlN0pKVUdkRXFwM1RYMDlwYmFYVHhBNitYZ0Fhb2I4ZnM3SW8xZkdDc3N5dlFHY3hhZUkyallpdUZTb0xJVndPM1VwZXNRclE2OWNpUmgwb1FtMUJlajNrWFN6azJhaUNqTkVtcjBNZWx2VEVRWGgwVG9iMFNnSEtUSFBIRVY3Ry96WGlmYWUyMTFNQlVGbG9nWlA4bDE1OTEvMHV6K0pidUNFZm1rVlZTVUVkdVNFZTIzaEJmWC83VUM2M2hhTUJGUkkzK3FwazEzY00xWlYyYnpiRlVjWEI2TGl5UkZXNEh3LzdzSUVCOVo2c1kvalhCUUsvenBPRlhpRGdicDh1clBDWldxNlByVjFvVy83a2FhdUw1YkI1cGtvSVhLYUdVY0I5NzB6ZjFCNGZZSmU2a2ZuVmlRUGhUWWpSczFBVHdxQnFrVzZRcVVxZzdtMlVFZ1RCN2RiVnM4c2s2ZDZ5YTdPUU9NNnR1MkFHTm5MbnV4alRuVW41QkJXckxJVEtvUDlzVExhWHF6QnMxMURPQ0pXbWJZY2c4TmhNWHVEZTlGdGthSzVCd2J6WFRnUEJHVHo3Q2p5a3QxSks3YUpuS1k2dTlKQWFNenV4aFJVdWQzaHlmbHpSb0xJTi9SRjh5clVzMGJMRzRZUlVETUtPb2JQWWZndVVXeDdOS0QvVllkQ3dLbkhKUkVGZktKMlVBSGVjaXgyUWtCVHdJTjhMaFBRWjZDVElNQlNMTCszOUg1ek0rRUppdFM1Zko5S1NoMjJnYk5LWm5QUldNT1FyNFlWRW1jL3lHelVxWEZMbURTM2l4djBNNlVRT2d2QkZPMVRxemlxeUdDakRUWkkzV3dMZFRIS2V2bGFxVDlOK013b2JWY3NvQzBJNFhORUpKN2xTZzlDdDlldXdFZkxwTERPR3ZtalBQc2FoSjRXTGRxbDZ0dEs0NGJEMTdGZy9uMXgrZGpQTFpCaUxmS3N0dkZjZUloVG1wVnZjNm5yZHFEZmVYOXpFZnVRQ2ZJSS9TQW42cDhIOUhSU0prS2xSVmxhRStnYmFOSmk4ZHdVV2NnbnZCQkdzaFpuTnQ3a3E1QVp1RG9HbUVqVjJXdmJUUmlJOUwxR0VkV29YK0Y2bUNkcTR3LzV4YWE1cXYxTkV1ckJaYTBsM1U2QjFJMGFmSG1OQ0tlTzVLbUk0QkJ4WmQ1SUFoSVJVWlV0SllGRHpEaElGZStvcEk4UEhWTm1JRjJUZXAxakxVcmZFQytZVjIxNmZKNysvakFVSjJtYjFkbmYzTHlVdXRvd2xZZWFwQ2xYVEdTREdNanpNWGxJKzJPamRCRXEyUnFVRmEyOHpMdFZ4Vm5GK2Zib0tXUjlzY0R2c1ZEMUV1WkVSbHU0bVgyQndEbElyd1NEd3EwRUhZdkM5ZWhwc3Y0Um14YkdiUjVTcEhSNGdmcVNCVVlRRzZXR29LanQ2eDZSb0V4aDdybG1YUVFKd1dyVTRHTUhDemo0bWtWVlpzbG5wQlhKL0xCNCtGdnhBS01SZUQ1N1JNdnJocUkzUlBBWFBKMjVFM2NTTHNxUUgzRU1aNVdZR2VBbThaSStzT2hyd29IV28xQjlNRjU2RVpIY1hSOUh3aDA4Y0JJaUZjYWRZdCswcHYrUStsbmp2LzV0SE9KNkE0RzRJc0kvdUFaR0J4TTRWZTllMWp6VUtYQTZ0UjFLNko4NWQra0hNSjZMWk1FaEN2YTZHQUEzbS9adlRCVU9zSElxWnJROVY0QzdJaFA5enVrME1nNmJmZFdtcTFwTEwwbk00bGtVTXZCZjVvbVRNY1NEeHBwYVpLcEpLNmlVcnNXM3o2Z0lsVUxRY2ZGSGlFaVVHeEFSaE4rL3V2WnlXazdHSWhnM0RQRkQxMFh4YlVjbWhrazlqaU9rUTNUNVdDZC9VMVZoUDJOZndaTmk4QWpTek5DUzlNNHZLZS9XN0dhSGNaZmYwdEQyNFJUSkpIMm9oWFYzQTU3Vi95Ykc1QnhZUStsaitZaU1WRzB0dUtrTjM3dHM3bjBoSE5JdlRlZ3R1aU11Tk82YW0xV2lKZ3VvbXBzQ2JMWjdCVjJucnM4TnM0T0VuNTAxdkpZSFNSTVl2QXRRMzJsaEZWUm5zNE5pN3NOeHJSZTNTZVpxUytmTzZLWWNuUFBVUGVhb1paNTM4RTUzTU45YUhzeWlwenkvS1ZuSUs2YjhxSFNXbDVpaGJ0UXkrM284bTBiTjdzOStBMnJERytqNEVGREp4KzNRWFRaV0M4QlN5ZWFNblFUbFVWbkJLVVlJMVJOaHZvQkJUNnRDaTRKVk54NTVldjdNdUlhZGl5ZG1mNXZXSlpuNC9Ga1BQWmJPRWkyS3Fab0R1NHhVb3NFc0ZYS25udVBxQ1hLbk9Hdy9vMnVUakw0anJpbWhaNmpXVUFwUDlYUzQ1WWNhV3JaZXpzUitDNXNEUlg0bEVKanFJc1Vjd01wVm5YR0NkNEpnNmRYRkJieXBnbDVDcG04TXBLRVpsUzl3NFNOQmxackZyaTFvYTJzV3FjdFVjdW9GQVFtWUpVd09EZVBSbEt0UzIyYWlndmpUSkc4TTBPT0duNHVadDNOM2diSTJuTlIxeXQ1aXdYb0JtbFc5cDZQRDRQbjQ2OVpXVGo3aVFmZ3ZDUkZDYnNyYnBYcmlQM1IwdGplcjdua0pKOERnSHJmZmlxc2ltSHZDa3ZNSXBBRGlnSHNDNEZUU1g3dzhWTmYrODFZT21qMkRoUitIZ3lYQW9QaDdCSVpLcFVZbzErdnhrYkxkWnJPR2pYbnpXT3BlcnYwLzMranBjbmFNQUlWU2pTcG9QTkdnSEVETTNkTVpBOE5mYXpheVBLWG9MbVp6YlpBYVRlTWNCc0laZE9SdWpQUENDWlNLOGI3V0pwUnJUN052cTdDQ054YTRkR00wK0JtUWpLWHlkeW5EV2xyUUZqeWRVekhKcFIxWjNZdzRkdGRPdXY0TDJ4YVpwck9tR1VZZHJxejRGRVRaUjRCeThsZ014VW55TGtiUEVITm5VYVlGWVF5U1hEbE43bVBNUHpvcTdpUlAyRS9UdjJtOHZLZ2UzZUNVMkdTU2xWb1Q1U3VIVm1hMWpjdHY0bXkra1p1bSs5VG9HK0FVT2tlandPQ1lQZWpsYTRTU280TlMyMGRZZGRHNzdXcEhsajhGRmlVQ3R6emNCS2dmUlhBNkhOdWhkamFlZDg3SDlyN2xjdjRSY0UrTUsxWVU4ZDFyc0YwaEQwYXptLzhvUDBEMnQwb3ZhS25Dait4dnNNV1ZvVFp0Y0pkRmRkRnlUaVZhcngxaTNLMzl6WmhSdXVUZGR2ZTA4VXd1SnlyMW0wR0lMZXFNQnVFb1lVWjZRa0VHc2xHV2x0NHZrVkRzcFMzNllabXlqMFRlbUFWTFdrY0h1TlhZN3A0UXFzRVFYVXhxczYrNE42dHoxZXB1eW5ObGVWWDVwV2h6Y2FVM3VSRktiWkhHdlRkazBnUnloUU91SXVzMkN0Z25XYmlvVnNCYWgzeTZyZlQzanlxdXhoRnBndjFaWjNTV0pGOW1tdWI4S1dhTlJlcTk3WkpXdnVDaXVZUzIzbGFWblZqSUhOREtnWGlKTGUzenROL3JvVXVDSmRJK2RiNXp1VXQxcFdyL2QrVEplSG1FdWh2cmpWSTRsV2M4RUdFb3FMam5IZnpTblZwVmJmSnBzTjVOS1d6SU41VHozZzNMNm13K3J2UXc5c3htL3N5bjNtSEw1dnJNbHN4QUZ4QTFvbTFVY2lpcUk5eElwRHJKUlk2ck9kek1JRHhLaUlaRTRDcHgyQUpBdzBmSy80TjhNb2xFUkpwQWo1WEVCVzNaaHJScHRSMk9DNEttbkZPTFBQdlBWcUxqTkhVRWxlTmJvK2hCRkdpVHNyUlFWVnV5S3dBUzdMaGd3Rnk0bW9YRFZWb3ExbGcwd2p3WEZhQTZ3b2w1emI0V01qVHRoTzJPbVdlYlNzOEhpTDYxTjhlclNINUNFTzl5Ylh1dGlNNzhxTnZ4OVA4aWRLSHJWaVpQL2xzMTNNdjIyaFBNK3V6VEtqdVBEL0hrcmQ2RzBkRkdrQ0JjZlRqOThkUGlnU09LNUZkUjBIY2wxaXJQL28ySTBZazRIWkJTcm9nUE9vZnl6dXQrVHlHL3orNDY4cFhuWU1YNnIxMXNMMXRZNWl1U1NQSGlocEtobWltcDI4dXoxNS91TGlVMUxnOFJjcTBULzl2SnMzcGVnWE9icVB1Rk1CREdIUTVnS09kY3FPb1JzellNSm9qNUgzdks0K0dBY1Y0K2RQNStadnpIMVFTUE00M2N0Y1E4emxBSGo0dU05YXBNR000MWNJSVJWc3VUTkR5ZS9ybVVDMFQxUjAxSllIWmkyTWRUdFdWN1ZCZGEzdzdQbFRYUXVvY2hqT24zVUk5MHFsdlk5bzdIUEF2SENYT0UwRGFEN29oVi9jS0duY3E2U3Z2clN2dysyMmFVNEYxMkxwMXkySXZaN0tsZXcyWGhpc3lHeVcwYUZxRmVsdVEySEtZZnlmazlyOEhzRzErVytvakRkaVYyTkpYM3Qzd09VVHAzQXZwcm1DVUVUQVZjUEs2MDJ0SG9PU0ZaVXBNKzY3bDcvN0RCazM4aXJxN0w2bnNYTW00NjdyS2JSV1pDakY0Tk81dnZIWUlmNE5LVjhtQlFreEJjNXNVbDllVW14NWhYcHRYM2NrR2ZUcUhxazVHMEEwZUl5TjJRTkpUcWV1cjdOc1RobWJvOTNzWTlZd2VNY2dJKzVPd3c4QjBlWG5vckU1VXhidnFWa3B6R3Y0YzdHSE0veVlaTjZZYlpnbDJmeGpScFdOUjVFalZ5bTVZZHl3ek5iVGVuU3ZTanoxZDd5M3d1bU1Nd2F1UWtuRXczSFdtelhIWnVDcDROSFRORGtZMjUybEdjM1VWbE55VldqSzZZOUdSeUR1V25ENzNXemZNRy84UXlXSDd2dmpPNVQxcWJIVW5ELzFESjJvWkNPY293anJQS1BJZEYrUnpCYWpKTlpwakp0dXg4bzNLT20zSHFWTUxhc2VXLzRTTTR6NTU2eEw4L3dXS3lTaFBnbVlBQUE9PSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL2F1dGhvcml0eV9qb3VybmFsLnB5IjogewogICAgICAic2hhMjU2IjogImRiMzhhYzYwNWI0OGNlNWM4M2I0ZmM1ZWIzMjNhZDM0ZjA2ZmE2MGE0NDVmOWVmMjc2YjMwMmQzNThhYTQ1ZmIiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTYzNDUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBODA3MjNiYlNITHYrZ29jNXdIZ0xFaUJGRW1SdEpIRWEya21TbXpKUi9MTTdJYmh3V2tDRFJFakVPRGdJb2wyL08rcDZoc2FGMUthMlgzSW5GMkxRRmRWZDFmWHZScHYzcnk1SzNjMGU0eHlHaGdaOVdtMEs0eDFtajQ4VUxxTGtudmJTTkxDSUlsQnltSkRreUx5U1FHUVpMZkwwa2NTRy9nbkNtZzJlUFBtelVtMDNhVlpZUVFBVWtSYktwOURQeWxpK2JBaCtTYU8xdkx4dHp4TjVPODBsNzh5ZWhKbTZkYllrUUtCRGZINk16eEtrTHdnaGZ4ZGxsRndjdkxqemMvWEY1ZTNobXQ4TXgraUpEQVhoZ2xiZ3dsTTJ6RHpjbzB2QU5MZHhhUUkwMnpiejlLMHNOUFMzZEYwRjFNNzhOMkVGb0I2SDZSYmZJcFRuOFRtOTVOUGw1OXV2S3NMb0d4R1NSajBSODVvT25TR3cvNVhXRncvbzFzYVJLU0kwcVNmRGMyVHo3YzNuMi91M245RThLdnJIeS82djM3dU80NHo3Mzl4SnFlSU1aczQ4eUVIL1kvM2Q1ZDNBR2laUVJiRmNYOU4vSWR5aCt2bHozNjYyK05UR29aeGxORCtJODJpa0wzeFkwcVNjdGNYSTZaOVlxai9UTDhzVWdEVnlNazNrbUJHQVQrbitMT2ltYVZ4akNqNmJ6bGw3K1RrSktBaEhNM3ZaWlJSQ3c2L3BEWThFbUJ3YjhGbWowSW1MV3hvb2RhVEVSQXU0eGQ4ZVpsbGFXWUpIRUV3M3hBTHoxblFDS0o3bWhmQUVpRW9BeGdmVGFaV2o0MCtSY1dHaVFGSEdhUTdtbGhtdGpaN0JzbEJKb0QwdHBvWkR0bFl3eUUrR0ZGaVJBWE5ySmhzMXdGWkNNZ0IvQk5ZUTJjMC91R0hVYzgyMXFiWlcyaDhsS3NabER1VWFZdlI0Z3ZKYUZGbWlSemYwR2YreTVLNzJtWFJJNkxnTW0wQUE5VXEwbXp2L2tqaW5FcDJKV0VLRzlXMkU2TlVXM0lHem1nTDN3M3V2S3U3aTZ0YkMzRUdlZUZ0MDREMmtPR0t0RUdCc3FHQWJ5OS9xZ1AzYWhzalNXRElZZEFKdzNWQi9RYjNzS3Nvc0hwc1dKTDZkSE54MlpnWG9DMG5QWGVjamhVNDZkUngycE5aRlJpY2lpU1hnT3crSUxraHNOOFVURFBTcHdSc2pGL21SUnJzSlNNQ0pZSm9pdElzS3ZhV01GaTJrWmFGbjI1QkhyZDBtM29nTXJhUnAyWG1VeStqWU50QU5XMWpCeEpGMFo0OXVkZHBJZzhCN05ZdG1BRmpDN01aWVVaQjZQWUdsM2tqQWFWK3BKSzRRUUFnZW9hVjNkeGUvWFIxamU5enNIMUdzWWx5WTBOak1EYURFMGIwVmhqU01JcHBmaHJHNUQ0M1NFYVpkdVRSUGU3dVBpTkprUStNTDRnY2xvbVA5c1B3TjlSL3lJRWlOZWd6OFF0R0xXOWJhRkJmWm5EZUFsaVVGMkN5UUYreWhPWXdXMW9tWUpBckxnSHdsa1FKbzhyb0FkMFNUVGZOdGxHT3ZBR0REemdrMncrTXE4Skk2S05BbC9ZZUZtK0FKWXp4TmV5MDNKSmtJSm5IL2dKUFFaRHhYemhiYWY0SDZnY01XT29CLy9rSy9COEFWK3VTemc0SVZaV2JSUkFJem03K1hoTURIVWx3QkVYWEFnRktkMmxPWWk4Q01CUXJaWXRSQkd1Z1RGQWttRER3TGFGdFl3QnJrR01jYlhnQWlKc3NEaU5mSEtmZEVGYU8ybmg1bkFJY0tpcVBRamJmZjRiTi8zSjVZYjZBSjhXRXFiYkV2ZmgwZFgxMTkrWHk5Z1hzZ21Ud1YyQ0JOWTIzaTRkeVRVRVNRV3BPd2ZMSEVVbDg2Z3hQVWVNemNKVDlnUHA4ajhjcE14VkU2UU5RYjB0aGtZR2NCdFMxenlTakR3dS9qNUkrMTlNK1duUG12bzVUenNvRVpkQ3JSVFFlMDBlWUFiU1IyZWpqTklSSjhINHZhYllYNnpxTm81RDZlM0RNcDNqbythbHAvRVZLRnZ3eVR3VlMvbTlDaU54aHpXdUQzMlk2RHlvTnJpb0JmUk9HS0FJZDZMUUJOWVZRb0c2SEJtSTBGZVVwSGdFNEdFRmhhVW9janhUbUNyd2hSRVkrdGN6L3hnRGdMNDZ6Y0J5elYxYzNpVEVvdmpMM0JleENvNFlHbFhISk1kNkJiMEJMMEZjcjZnMkt0QUNsekttZkprRU83Z1ZnaGlPbnNYbG1mQTA4WFdsNDVZR3FyUnByQ2xzQTJ3aWs5OXd1aU4wSEFJcHgwQ3QyYjJMNDFoODYvZUhveStoc01abkQvK1JtYTN2RlhieFRsSUVsUE9xRlpkQm5DZ0VWV3M0bkNEUUJqRDd2dEtNQXA4aHRGdGNLSG1scEFaSDA3SkowSDJacU0rbGZnVWt6eDJIQldnNkh6eHhOQnZaOEd5VWxHbVVNYjNRMWtXS0tnZDYrc1JjaGU0ZHRIME91UWFIZG9VOGdDdCsrOTRTVmdnWFNZem9pOEpjU2Q4WHhvcVFnRDlURGdJSld0aUpnTWFjNmFrU1E0c1JHVC8weXl5Z3FwZGdKUW5nWXE3VG5XYW85clJyZVFTRzVEU3ZBUnhRcjJrc0owRGdBdS8wTlNlN1YyUkxmcDd1Q3FkbnltUjNCTTdxc0d1ZUNLQWMzRk9HWjVMREg1YW9lRGdrUmVSWk1MZGZDRGRjWUJGSVFSbWd3elJZdWN2cTVOWk4rVUNBQWEwR0hyL2NBa1dXTndPcWduNnN6TllhWVc3S0JqMk9HQXJxbjFteW9JSVNCb1F0b21pdU5qL0xuMGxrMUZsU2JWb0lwZjVkbWZIa3k4Y010MVlGcWdxNWtvU1cyRGNvaXQ5VVFkWCtwajc1QXFaT0F0c0hYMENCRjF5SUVDTnB0bEZ6dU55VFR0Um5BVnVSZzgveE5LMm9haEdVY3N5RXJNNWVrSHpyOWVYLzE3V3o2SFFSSm5VaHR1NnVlYnU0N0hHU05KcTZpZjVqd0g2YkhqNjlGVVoxcWpWakR0UWpOMWhuRDFSdmNVOFpEOHkySmVZRFNrRTlnOFN0OGlzYXcxM3BTYllKRHpsUmZBN2hNNlU5dHFkVk1yM0ExREkwRjhWcDh6QkxVYnc5MHY1RENzNFNIRmJOWjhBT3RWbDJjc2VwUUYwNDFFeGMxV1N3UUVVUHZ1MGpJbU9mMmNwOGtWVVlHTEVneitBczJvY2hBT2c4bVhscGtneFQwNHROYm1hcmdRQUtTRFd0TlEweE05emx1RUxJYVVCTXRDWEgvMFJTa3BtWFJsdHlET1haZEUxaDJUMzlMQjM1YXh1bDJQY2hUUHlMeHFYaHN4N2IvempPQVJUaVp6R2JoZUQ1ZEQ4UFI5RHh3enYzQW40ZVRrVE9qMDNBVWpzYkQ4SHk4UGorYis2T3orV2k4ZHM3T25SRlFHWjZSQ2J4NktYYlBRSUtCUlY0cmZZQTF6OWZqOVhvMENjNWdJZk1ab1pQeEdUMm5NeklqWi83WlpENEtZRTJUV2VpL01JZGdQU05KZmk4aGt2RlBDOGpUOTNLUDA5RjZTS2NUT3B0TjUydC92Qjc3VTBMR0lSbXRSOFBKZkFJZy9yay9DcWZPY0VibXdad0UwNkZQd3RuNWNIYnVEK2ZUK1F2eko1QTlsU0NrTkJmK0NKVGtTMWJTTmlRYUN3K2k1aHlqUTB4b2NPa1Z3dkZwSUkwdVBKOWxRSzdyMk5LaUFra2oybTdMZ3F4am1GTHdtd3RxdzZGeFJnWHVxNE52aUJkMk1TMjZvdStHeVlEMGh3QTE0aXJjWU8zSmwrYnFMUzlQdlR5MVJGbWFQM09NOTRjbmZwdEFHdUp4eW4rQThEVmdjZUxIdDZTc1lCeGJuZllQclZUQmJKUmdyQzEyYVdzTDZ5aHFDYWgzcmtCN2h6YmhuWWJEcTFId3NpOGdXcEgzTzNjNEhqdE9pN1RjSlplWVgyU0U1THFqTG44bEhOWHEyM1FNZnFvZUFxeGxpY0EyZ1NFMXg4VVVEbTNZWXhtRDNwRTFwTkFRaE9LOGEwd3A2cG1HWkNPb2ZaSXpmMkFKd3h0RWZzSHJlSzB4dm9oYm1wZHhrVVA4RUVlNUFPWGpTelcyc2sxcFpya3VDTUZubzRjck10VWtkLzZHYmtrSHF5cVE5MEtwdnV4MzNOaWl4OEFwTTQ4YllOdHNxS0VDNE12SjJSek4xY2pEOHZoY3JqN2xKNms2TmtUTWIxblVldTgyRURqa0ZhN2dBd05nd0xXTkhzYTR1c0NkU05lMzVKN0U0eE94U0tvbVR6WDhpeWdNcnk3eU9uNEFMd0V2RnhHeExwU2NxTWhwd0orRytaR3BCY0NxaGVsWFcrUXZQcEkxalR0SkNWOFRjNERWUVMycDdlcm1yazRxWmJMRmpvOVJGWXN4WXJMSGdBekVuMDlqOEdrTVpBQTZJVGFiSDVNOHA3bTd0RVFXOUFGZmdDQ0xSeTVKdlNvNWE0bDFQYkhJWVpBR2xpQUw2MXhhWmd3NVgzLzNjQS81bTduYkY1czB3U2VZdzRLMXl3RVM3N0QxMGx0SmYzRnp4MWp3bVNGdzZXVFpPTzZ3SVo5UjhnZ0JLTFlFbG53MXVGcXVXWjFMcnNvSE8rSS9BTUhjNWRCOHo1L0ZTN1AzRml3RTlkR3RRSGlTRk83WkRKTk5EcnNVckZxQm1zbHQ4S3I5dEZXZDBNeUduRkd6RkpnRHl0ZkFzZnFjUW1QRmVMWFZnOHlRKzY4dzFDN3IvWmpEaStzMmVHS1E4K2lhYk9HdzdMeklqc01wYzhWQVc1bXphcDhjUUw5U21ZV21UNTkvdnYwb0NJSkF5VzNLRWdOWjUxV2hRNVVJSk5zR0VLVFRKTENXalVPMDVUTVQrSlV0eUM3NVJyVm51U0h0bGJaSVNMclo2bGFyaG1RT1VER3MzbHM5Ny85V2xCQzBXRHV1WFR2V1dKUHczMEVReG1QUldwTFNyZHNQK2JKaE5icVkyK2orWVp0NEVKVGJYVzRwS2pZdXo0Tk1KbmN4dnJOenVpTVpnWkhjdFVBNWJYTUJSbUJBRTR6cUxQaWxOZWs2VitXQnVxWko1R01vd0wwejZIWGxkU29wNXNZb04zaUx1bHlEVm16QVFZS2lDZjJmU2d1d1UxcFpEM3FTdmJWYk9qVXRSTHpkY29UdnNFY3NYNXpoaStIZ2JERENobkVIMDBHY2VKY0VzWlFDc1lwU2NpL21mYlZwNlF3bkVPcFFPRkVab0YrMGNDV0NIZHZMRlJoTE5CaDJBZUpwc2N5djF4T21RWXNqY0Nza3JsVkNxZ0pzWVJ5YkE2Z2w5TWtJb3lUQURsaEd3eElNdUNFcXJ0ekp4V2xlWnJTUkZQTmNnVE5DSHZaQ0JkY2RneUFKVmRDMjBNUHdDcUFXenk4T2hQbTRZaFdLbW92dXdCazlTNVhHaU8zbDVzTDVycHJ3dk1qcmRiUkNmUUx4a0czOEJ2NHpJYkhlRWExYW9Ua2xNZFlSQW9xR0JWUUV1SG1rUVhyNXZJc2pQOExXNEJOdi94a0Z6YllMUFhjWDFRY0RLOVdSVC9zcHFBMHo5SHlsb2pINkFSY1g2R1ZCYkoyQ2tNQW1RUEVNaXBkSjRMVzRkbUtJRWpBdVBSVkZicXdOUTREQWl6UmxrU2JwTmkzelU3MnRPakN3c21EbXZEQmhpS1ZJMnFMQkdaSjF4cnViUEtnUU04a216Y0M0U2VJOTcrMUN2a3RpRTZPUUhPVUpwbUZCeTZtSVVlUWU4VlpNREp4czlVYmRmMXBuMU5MdWFMU3ZhTmltMkdwSStBaHlWNjZ1bjhKK2xCNHdEWEdGa0lqbUtVNlNhejVMZGk0cUQxRFRmVGFvR1FieFJyVUtXQ21icmZuMjUrdnJxK3VmWU1rL1gzKzR2UDN5L3VvYWZuKzQrZlQ1NCtXWFMxdzNMaklMbUdTd2dvOVM0YUtnMjNhdkM2aG54YXR5YlVabWFRb0Vwb0s5dDdMdjR2N1RXa1dDL3NHdTJEdVhaNXdjckN2am5Ea09BOFZzVmJXY1RLbFZTc1E2KzAyZDFTdDJCUXJ6cVZaMWFzQTZxSlh1Q2wzdHE5YlI4VkpKcmNudXVvZGI3QjFWS2ZuN2hjYTU2NzZ1YlM0NmdLN0xGYVRkNnVYbjd3a3hFaXRXVXFHOVhoMmZpQmxWYlhrMVdWZXpxRlo2SGZ5RmRqUWNoaWZMcXNmcVcyQjJTeFFhZFc1ZTFldDdYWkZMMkRpUGw4TTlhZW84eUh5aXJaeWNkZlprUXROaDRKVW9IdWhEcDJ2V3JQd0RoVENKOFdJZFREVXpCY0pMNmliaHV2UnQ1TmhtelQxd1lPbGpPaXNiZFFVVFhBUjFXUFBlWnNueVpSUGl5aVRINEtGZkp1U1JSREdHanliYWZ4WUl2VXlESFVPVUZQb0JManRCVjh5K1RweVJQWEhPNFAvalh1K2xNaWYzNUtpVTZVUHR5QStMQytibWdQWDYyeEV5ci9IU3pNdjlkRWU5cWcxMVpENFJPbmdiaUU2S3piNG1qbzF3UXNWNk1CTlc0cXY0NEZTdTlsU1FrUkhKTVZzSmNWQ2M3cmU0MlpMYkNCNGhZVnRaVmxtWGVIZFVsRTdxYkdLbGl5M1pTVnc5cWxwV3c3eEwzU0QzZ24xNzlMdUp3c0NmSUNjREJ1OGY3MnljVDgvOHMrbllHZm16TlQzMy9iRS9YQWRETWgxT1IyZndOd3pudytFMG1JeEc0K0hzL0h3OG1xekhFM0x1REdlKzc4eG1aOFI4NVVxNUQrRjF3ZmwwN2ZqVFlEWWIwdGxrRWd5RDRRUzg1aG04b25PSGhtZHpjTllqT2pLVjhZSTB1TTlpdDBwdU9pNFZzcG9LT2lZSUkxMW11WmZjS0N0N2JxNVVCQ1FCK1RLRlRmUzRkSHBxMVFBbHNiL3FScDNuS3p5Q3hsU05pbnVIb0piWTRJQjRFLzRxUktNaDlJMkxQaThhV0xuV1kvZDgvdXcxSDdDd0lwanBIN3ptSTZ5c3oyTitkckZIQy96WnhuZDQ2Z0Z0aG4zaUhtWkRaUm1obzlFQ1Qva3FzQ01SU0x1UVdxRUJleEtOdW9pU2w4cXVvYnJwTUN1eFNaNG9pTFRnRkNGa3JVRHNwTXAwM0Nwems4ZGtDOW1yZTJjZ3JqSTRsY0JWMTdjVjgyc1hqMEJiVko2Z0ZRN3gxTkhJdWZXK0diZ29yTndCRXlLV2YzYkcrd3BaaS9qVnUvKy8vZExHRWxtR0ppNFZWcWFsRnBVeUo5MUFZL2VSc0NTQXlFMFByV0NYVGJnVmF5VnkvaHFLdnhWQzYxNWJROU94TXFzVlo4U0pWdklvTXJaVjNXWWV5TmZFcUo2d2lWZTFqQTFPVHlWbWJSdGR3NUJXVHhZamhGVFZ3bVQ5emlTN3JBa0dvc0tyZ1o4Y0tiQWVueGhBTm5nWmlPL05OcG5oRjF3eVZQMUZyWjZmV2haQlJDWXM3Rk5VNE4zcHJySjBaN3dnWmdhdFVUS3Y0clNHazExMVpTVVMrNUE0TmttSnNWWG5MYTUyVkhsVVhDdnFMV0VkQXV0NEVWVmNQemZVVWp1RXRsRlQrK0dIeXJyWkxjOG9CWHZCM2FBTUxhdTRyVXFCRml6a3cxSVg2OGdZLzhrUFVud2VRa1BEODZJRVFsalB5bWtjMnVCSWtaU3RxdW5hSnh3SU1PRGoxWWNXK0ZTZHIveFFRd1BWdjlmQTVmYWE5SW9OVU5OcG4rSVZMSEVsVkFyZUFHdldaaDJWZll2Q3ZyUmdINjRjSXNIZ1RCdmhicndQdDVmdnZ4ai95eCt1YjM2OCtmang1bGY1Zkh2eDY2M2QvT1NDZlc4MUNKR0lwYWExeGV1UE54Lyt5N3Y4R3hEUW5xLy9lcFFoSFl1cjRNSG5LTFlNMk5jSTRQcnJYWnNHeVdKVDEzWDJHc05ZWUEwcjlNY3BnZmlob29xUzZoWDB1YkFhK1kwcXYwZ0t1by9HVzNQeXlUWk1aUS9BWnNySzNZRTdubTNiMjF6bXQycWVoVDZKc01nTDQ5djM3MjNrbkR4Uy9FSklDako3eGhHTlgxaVJTRE1Db2VvclJBeWl5VXJDd2tBVExVV21TNG91Ly9iaDR5R0ordlgyNXZyajMxc3lWV1Q3T2pmWWwxaUFFUVpzdmhCdnBUMTFmNFlsLzFOTm5PcThiQUVNMm92SlRlR08ydjAyOGEzV0V3UkxFTFArVDJJZUJBbmpNdDlZN1dGY1pyNVBmRXZDZ1VOTzBxWXdBWlNNakRYdUhaRFo2bXVtVG5VV1hMKzR1cjM4OE9YbTl1K1Z2aUozNjZSYXJLMHRXVTFVUndvajlvRkFKeUtyVVhjaDBtZU12bzIvZ294ZXNwOGdTM1VLLzJMY3N2c2VWYkVjbk1HR1prYXh3VnNwWUtQeEdMRFpBbzhsakdjTU9pZ3owU01yTUdhcTZ5aCsvcWZKUEdZTjBuTHpob084Zzlock42SjRYUTlURDVoRjAzSVorZUFGeFpnNU1sa3FsdDhMdlFVczlFMHFtQkpwSGdTTDRPblRMTWRiblJBdVdGK2puY1UvT0ZvT0Z6T2dLQjRXNTZ0ZU4rYXlWWGxmR2E3MjlhUnVHbFhsWGlld2VNbUkxUUs3MnRSc1pGVy9rNi91akt2QXplN3NyNW84MjhMVEU4dmlXWjM2Y2tTR1NuWHJybjNLME00cDlBMm9yT1R3WWFrUVRPRGdsMldxOXQ4bytwc052MXNuSmpqQmJESG53Y0tvR2cyR3V0Z0tyK1ZQKzJqWFdlT1RWaGRtbjRwYStJSHhBUDhaZzlGNE5SbXQ2YkQ0UTcyZlFaWEQ5NzZmSEhVaGNINjByazBQRkt3Vyt3UzNRNThPTTNJcHVNamNwczVJS2NHbzJZMis4dkdqNGJlTlhiNlc0N3NBYXhhQjVhN3RnemQrdFQzQS9KVlg3Snl4dFYyRzhtZDNKcEQ1T3BpSzg1OU5BRVZkVThEcXlvM0lPK1BZNDk5MmVqdDJWMG1WK2RudEc2MHZkcHhSM0xRM1FnWmw4bFd3MXp2NVA2NkRyc3ZaUHdBQSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL2V4ZWN1dGlvbi1wbGFuLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiZDg3MTA4MTk5OTIxNWJkMzg1MGFiMTE3MzA2NGVkNmNiNmQ3YzIzYjI2ZDljM2Q1YjNjNTk0MGU2OThkNGM2MSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0OTkzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTdWWTI0N2N4aEY5OTFjUSt4eEtmYi9JTHpIaUpNNkxFU0FHQWlRSUJ0WGQxYnYwY3NnSnlkRnFiZmpmYzNwdUsybWx2QVFSZEZ0T3M2cXI2dFNwVS9Qck4xMTM5emhNNWU1ZGR6ZE1kVjcyWFByQ2VWaUhlWHF6SGcrOHZCOVdQTnR6ZnFCcHlEVDJDNDlNSy9lSGthYTczelVMNzNscDUyRkVubjQrTFBOaFhtbmNEU2ZEZi9ueFQ5LzNmLzlyTDRTSS9VL0N2djFsSEZLd0lzcCtrV2NMMnpMY2p1TWVwVzlIZWlXVWswSytIRnMzMnJpZE9TeDhvQVgzT2s1MGdMdjNYTTRuK0FQbjR6WXZ1enFNdk9Mb3IzaUs1NVMzSStINW04TnplOS9vb0NQNzdHSW9PYXRvdkdKcG9vMVpaaStqRjRVZGFXR2xERVlhSzUzQ1g5R1EwakVXUitmck5MUEg3V0ZlaHUxNTkvTjhYQ1lhTC9aTDBvR3lFemFaa05ubW9KT3AyWExTU2xQUnBncFh5UWt5eHRiSVZYbVh0RkJGMjBDRVIrbHFmNkp0ZU04N1JIaS8wUDVpUEFsbnFqU1VTc0xkWWlCYmJIYVZxMGhVVlBVK0NiTEJJc1pRaGRaWldTRjBWVktRQ3RvVnVocGZPUE53MkhZclZkNmVMOFp0eG9zZXgwczJ6WkVRUVNtYlpYQmNreXlXYW1IT01DT3R0aUlWRWlSVjRSSzlRd0F5M2NIMmI2ZFNaSURrOHpJQUZoc0FST1c1UDRmV3o4Y3R6M3RlZS95OXA2bGNFMWdxby9peG1vRGE2RkRaUjg3ZVI1STJpUkpLdFVYNmtCTThoMGhaRmErek5FRWs2OGtMZDQxeHpUVDFsMERmL0x5ZVFIcEgrQldsY0RJbG9SMjdvbFJJTXN0VWpOYmFlbUFpb201SnBXUXBoMFRLUmFPaVZKSzlWdktXd0JVMXozeTYrYkQxS05KY2J6NlNDRklXUWsxVHNWRUhyM1VWd2dlMmxYTmdHY2toWjFabG8xQXczTHR5RE5wejhTb0RlamNFNFA1bEtJQTkydkl3enM5N25sNENNY0hYb0UzT3daV2NzaWRoTWlDcVVtRUJSR2Vxd1pjc3BVc21FVW1YTlNBWXM0MlJBSmxvcjA3TzdZU0N6Rk5mYVJpUEMvY1B3NHArZWI3NXNqSkYzTEFvQ2dMdElLcDF3RWlLNkF0ckt4RHVCRkFpa1UwUkNQWEJaeFN0ZGpLN2dnemNLb0lzYmYydGI2NjE2VGZlZzFBMnZ2bFRwR1BDN1cycUFBQnVIbDF5dFpKQWYycm5oZlVSYVNUSDJYbERXZGFJdnRGVlI3U0VpVm5jV25UWmhvcjJiMlZDa0FQTXZ3QkJabHNpS3hOTEZzSUpZVXhzUVRwUnFUb09RTGNTTGxrWHNtK0l0OEI0Tmc0ZFNnaVp6VXRNNDVnb1B3SURYTWZoL21IcjYzRWNiMzZFRE1HRE9iUlZiQXE4MlV3S1JBSVllRzlVRVlxakkvUmJhdnhTWlRVQWlwRkpXUlVWSi92S3p4ZXdVQU5GSklkU2JtK29YS3BMdVFDN0pWWWZ3ZW5DYTlCRjFySWdURU9SUldVcGpXZWpjalo4OVZFWFhoLzZTOThjNWdXaERCODJJT0xtU1NOVFhoaE5Kb1BBOExwUUpqbnRiQ1NXSXNiV2lDY3NnbUNST3F1c3pZQWlJdGMxNGYrZmt0dlhjbWFkMDhpWkFaS0lqU05YSXlXRHU2cGFJeklUbFZRT0RIU0NkQ2doT3ZBck9xZ0ttVm5WZUd2U2Y0L0R4cnRHT3ZNMFhta3VDbHdUTklyakRKdzFCRkFFaFlKWGlHb0x5b2FFWExFbjVXc0pBVFFVTTJzVlNRbU1ybHZuSE5NNHJBK1lSQmlDUThXQWJFMTBDNklVQTdhczZBeWhTeVlmbFJJWUl5RXhMZzE0ZTBMaGF3R3ZWclphc2ZhcEJLMExVUnQ5TDBWWm1VYjR1R1FNMWVlcDhKUUhYbDh3WnBSV3lEb0lyU2hyTXZxaEpFNGlDK3ZBajJCTlRZNkNNV2haMGxybEdGV3BHSDNhUllrL243a2FMNDcrWHpEN3ZQZ3Y2RXJvYzhTUlRMR1NZUk0xOEJhdVFuS0d5QUlJU0V5dFRrVVB2blErRWJOSHhWMEZMSjM2SW82L3dqRmd5b1NBUXNUVWh5dXdGc2FORmxHQTZpT0dER0NPc1pMSUd5bkJSd2pibFFCeXpVQUEyS0Y4d21ud0FoMnkvQmRLdzEyRkZ0a3JYTnhua2VHMEpFeTBCS2hERDZHWHZBcGc4RmdhNmlCTWlCRXdDa3ZabzFMKzYzVHpNaEV5cUZJNkI1QUdFVGhJclZ6TzZDQUpGa01QVm05eGljekpzTXZnSE9sVDFZaFpBb25NNWpiYWhnbGFhMnhBT0NteFQyY2JERGxWZzZ0V2dIZ0QyREJGSXgyVUJvZzRTQ3ZRYXk1eU8xTkNRMTdKakNwYUZBL2VYYmpGY1p5MlljK3Y1ck5EbXpzUWJxNEZkcXNnWWNFMUNjTWZFb01KMHEzbUFnakRlRklTV0pjMlYxZGd1YkFONFFibEpsbnZlWGQvcE9XcUs1Sm1WaWtBcUFDUkFrVlZMa1ZJVjNRVUlqbldzdVljUVFva3FwYktGckNjQndsaGdvT3loWHd4emZseGQ4dlN4VHBwUTVpVEhHRkNKZWxJb09PQzlEcEJvR1VUVzlOWlgxa29tYXNCcEVLckFNQ2dtOUtpOG5yb1gxTDBRaWcyc0lQc2duSTFGcW9JMktoQm1RQ1RsRXNFRWFOL0JBU253c1R4bURma1M4UWt0Wm9icXMwWHVpUFAwN1pnUUw1SUY2a3g0c2tqUmFpRU5hd1JBZ3JvRkRDVVJCdkJFR2UxbElUeUZMQmp0bHF3eXJwZ2xrSWd2RWpBK1duaVpYZVdTWjlMd1RPM3ZCMEg2S0huUFBKYkt2dGhQZTBkdC9CZkVJSDVtMXVsd0R1R2dBN2tMeWNYTTRhT2QxSm1CU2dVZzJLQ0pVRGdJTlphaFFHZFE3aGhpRjdEZnVWMGJRdE81aSs0eEliUVdCSkdDMmcxcENZVUFZWUNGQlpvWTgyQW01TzIrc2E3b1JnTEdWZXpTc2FCakpRUFgzWDVlSVN3MmcrL25DZkZNKzNINWc1YU5LTmRFOVNNUlQ4YWJZMEVWSUlURU5wR0t3R2xJbFJFVy9zb0FrWUdpQkE4enhwU3hFTXZmTlhkd3ZkUWNrc2JGYStEak5nWTBEaFFUbGxCVGhjdGt3QXVCVHFDakF3Z0syMnRxaWxCSkZsd2haY0J3emR4OEdnNEUvbGp0WCt4dlJ2MmRIOWEwckJPM3ZQUDg1czhIOGQ1bjk2c2M4YVc5L2J5NDl0WCsrYnYxd2RTMXIyckZrMWNEZlNlck9BQnNIQ0dJSzlXZ2RCY1ZWV0JFN3hKWHNlVDJJVnMwcjRSUTVhYUxCN2RYWmJRQVd2Zy8zd1pEMXJUYUU2RlBRQjZKcHUySmtCMllpWFUrQmRhQlBLNldJVkxoYWJsc1BGWkxDQXk1Q3hDMEhSWlhNOHRzUEQ3NGJJcDMrMEJnejV4engrYU9LMERsc2YrMUMvOUQzLzg3dnYrYWRnZSt1dHUyMWU4My84WlMwWWE1N1JlQW56QWd0VWE2cCtYeWkvRE9QWnRMaHdQTnpTY251VVo5SFI1TWxkTWpJblBjdVgyRkVDaDZYam9MNS9lSG1PVnhzSFBqRjZmZm16MjhxWEE5Y2RQclYvbjFhdjVkVG1HcC84NmhYUlpDODZ0Y2FwYW82bU9QMnpjbHV2eHVXc25JRWVhenVMU3RibmJRWjRpUTNqdGZwaTZzNnpvbXRwckhyckVxQ3QzVFBtaE95WHMyKzZVOEE2c1Y0ZFc4YTdONkZiOC9tU3REQ3VXMUtGZG9BT2t1M3hjRmpqc0RyREdXL2UzSDc1N2V5NW1kMTc3dnUwdTA2dEw4L3o0eUh3WXB2dHVXTHNKeG1ocUY1Nm5lVDhmMTI0ZDdpZjR3eVkvYlI5L1c4RzdkSm9lN2V1T1hvcGVxcCtVZm1jamZ2L2pmRzZocHgwVzVjTngyelZjUFBEWXZpblpsaU9mUHI1OFM0RHVveDB3L3pRdmorTk1aWWM0RWNidTRxVzlVbWxjeis5Z2pwWlc2dDNLV0x1UjBJYWt1Ky9HOFp5bXRSdW1QQjVMQytaalpmdjJxbks2aGwra3R5WDltdVJiTkcrNkgrZFQxYWFHOW01ZVRtbll3MEx1ZU0vb3hDay9ueFB4TGQ1K25wSG82NFU2c09QaGxQbzViUVRyMUoxUmdCNkE2RjI2MjlkVDNSK3cwWTI4Y1FkTUlQM3RZOWhwa0QrOTMyQ0dyS0g0QzVERDAzeThmK2kydVFPUTVxZnVGa2pMS053MEcwL0RWT2FuTjUvMDdKNzM4Kzd6YjdndUdXLzl6RTlmUG5MYkRIYlhEWFIzVGlSZmEvZk5iOS84QngrSmprS0JFd0FBIgogICAgfSwKICAgICJleGVjdXRpb24vbmF0aXZlX3Byb2dyYW0ucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiYjA2NGYxNGFiZGIxNDU5OGE1ZDVjNmZlZjBiYWQyZjc3YjBhNTg1NDM4OGYwMzNjMjUwMDNmMjEwYTI4MzZkYSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMDM2MiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E5VThhM1BieUpIZjh5dHd6Z2NSTmg4ZzliQkVHYW1UTGExWEZhK3RrdVJjSmFJS0JRSkRFaXNRd0dJQXliUlAvLzI2ZXg0WWdDQWwrN3lwdTByV0J1ZlIwOVBUNytueGl4Y3Zmb20rc05DNmR2YXRuQzNUZ2xrOHlLT3NPTFo0V3VZQnM3S2NaWDd1RjFHYVdBbTdaN2tWUmp6emkyREJ1QlVWL1Jjdlh2emw0dkxUKzh1VDN5elgycGtrMFRKTDg4SUswbXpWRGYyQ0ZkR1NkUmMrWDhUUnRQczdUNU51eXJzNTYvSnltdVZwd0RqdjhoV0hlVE1ML3U3UFluL08rMmtHMDZLdmJKejdFV2ZXWlprZ21MTThUL1BPWkVmMWhsYVVGQ3dIRk9GUHdIOVdjaFpPZHV4Smt2bXJPUFZERjlmcjR4ZnZlTjdGeVQ4L2ZEbzU5VHdZd0w2d0FKcmVmejY1RkEwWm9NaGNPZTltc2tPL0p6dTNoQmo5c0pLMGdBVXRRQ0RNb3pqdVRmM2dyc3dtTzkzSlRsQVdLZERHYkJKamtBeTFFYm9oWnpHakplQWJPcUtaYkU3akdLSFVmdlRVQUZzUzVCOStYR3B5ek9nSUV6aWpleVpSemRrZlpaUkxZb1RNRCtNb1lhNDZqcjcrbU9YcE11THBMTTJYZmdHZ1JzN29vRGQwZXNQUjlXaDN2SDhFLzMvbE9HUEhrWUJtQ25MbkhqR0FjL1NCd3ZaNGtsaEFKaVFRdGE5aktRZE9FalYvSFpja2ZhaGE4WSt2YWNMNlpSSFliOVFPZ0NSNGNDVng0ME9VaE9tRHhiNWtlcWNzdVhlL3ZYeVo4ajU4UlRudzJtVG43NS9mbnIzNzlQR1g4L2VUbmZGa1o4Q0tZSkQ3Q2ZCdlByamI1ZmhmZitVdjQ4bk9vOXhobVhUOGZIN2ZuYWJoeXYwSVNIUVJtN1FzM0NPSHRncjhWdWFKVlhGd1g4K0prZ3pHNGN4dXdiNFU3blVPVkFyOERDWXdEMEJnTDdVcGtQTHZMcUlPLzJrcSsySG5EamJZVFh3UUgvd0RoQzVnY25sZXhvV0xhd0tqM3BWVEZoUXg4Y3VjRmZCM05XK3kwMHVnUVUvSGhwUkdvbUFBZDlzRVRweUlBTnNYbXd2U2tMbXUwMVhjdFdTRkQ0ZmpFMlkxVVZQVU1FUk5RdUpGQ0R1RElaejVNUXNONFJJTnNQNnhGYktNd1phVElHTGNHR0Uya3hUR3dOd3VrWVU2NDNTMVpFbEJlNGtTNUY4VzlrSVdSRHpDamJXM0FpckJVZ0VKMG1RV3paZCsxajY2bHd1ZDB6c0lScVBoNGV2RDBOa2ZiZ0djM1FjS01ueHVnSWtVM0liY2dnVjNucm4xVHJEc0FyaXUyUVlEL1N4VGk4Rm5IQVdrbjdjUUEzZ3pEY1I1cWVPR2lVQm5kYTVBWS9oVlJuZ29yanZaMlRzNk9qdzRuSTE2eko4R3ZiMXd0dGZ6MmU2d056MDhDdGorWWZoNjN3a0o4a20xdnZYNS9OUUtGbjR5WjIxTDhZd0ZZaGxoV3NRM21KZjA4K1VIdWV5aUtESStIZ3hnRDNQMmU5b1AwakpPbDlNK1Q0UElqd2Z5NTJCdGsvMTVCTHdBek9nbm9iVnRPYkJjQzdtVzRLSkJITTFZc0FwaXRuRit5SGdSSlpMRU1QWGJaRWRMRk9tVWRwcHpsb1BhcGdGcVd5aXJlUUxXaXZkQnluMFNFbVNXeDdhVit5RE5jTUI4bFFRWEtkQVk3Y08zUjFzMisyQlBRR2NUcGEySVc2aW5KQlFPQXpiU3dDYjhOZFc3aWlUd1VRQ1hzT0tTM2NzOVBCSTBWT3F0ZUJGRUVFNjd3UVhwUXdLcWxZT2hZelZ1QUVVTmlncjBBSnBBMkQvTDhLTWpkSUZkMlZrOEcyWHZ4bXBTYlRNRlcyWXg3RjF1VGJlRFNCYyttSWtjVmNhTmcwM1IwcC9qT1BmZHljZlQ4OU9UNjdQNlFwVzVKUnVHbzExVU5mL2I5UXk5U2sza09Mdzl1VHJyYWtSc3c4QmJjaEMzUUdQeUtBUTNERGlzeDBFakxIMHI4Nk5jNk5xZlJnN3hJVFZPVU9ZNUtOTU9icnlybHBBbklqU3lQSE5BRHFaNU9RdlFseUYveE5pb2NEMkVoL1NFRzlOVnNDd0ZDL2RPUEJOYWFSS3ZyQ0lWSkNoeUVIekxXSkVXRkw4OERpeGJQT25XVkZaRlQ1VE9sd0RBUXM4dlVEU09LMU5vTHRBdnZxS0VJNFlvRENocEpCbk9HL2U3M0poZUhhemRMOUxDanowT3JRbFlUZnVOT3p4MDBPUktWMjZhbHFEenc0cEVMUjZQdFlHWjFVNStCaSs3bGZEUXZoR21VZ0tGWDVTOHBwalFMcTB1R2VrRDdIRkE0emlBNkpPcXVhbCtZRjNEWTZDQmNHNjYxMkFoSlVSeTA5enlnNklFcnBuNUVhZ1dLNENWSXp3U3l5ZFZsZ00xUTBzdFRXSVZjL2FUU1lheS92M1VBbG9OZjVCV2dNL1J3ZFFKRHNMRHd5RTczTjhQaCtGd0h4aHFGNXJZa2NObXUwZmczWS9ZaUdTeUtYNGtta3FGYTBMS2JpUVhDS00xQlVaRFA1eW9wamp2UDliVXFFbkpIOXE2T2dJNVNabWNNc05UREw5clRqb2xPeHkrWjNCUTBvYkRORG02N3Y3TWpURzMwb0pIZ1FqOExoSGJJVzFjRUg4cmMxcHR4b3pZelBxZWM5cG9xNTdqV2EzeENLbG0wZHJkaG56Tk1NazBnR0dadERXcVNjMTNjcXRFQTg1VSt3VTY0eEFsMG51a01PZWJqc1hIOURkNnMzSHNrZVhpWHVaek9PenhMMzVNUGJuL0lLTXM3eUVxRmdzV2c1b2NVOEFGZktJMHF5ZVVBT2hld2ZWZ0FLWmdFOUswd0VVMFpkUW93UXhxYWxrc3dGYWlwTUMwT1VTU2hWb2Z2TGdpWDQwTnBmenZTeGNZR1FJVWlDeUZlSmx2aVJHQnFHbkk2YU8zTFhEb2lVbEFpcjdodkVicEFEMWdkOE9jdFJDemNoRUVYbXRCSnJSWEllWWZKU3FrV295SkcrTHVUV2JCZWxhR1pEWENUUVZVeHB1b2hrRmxjeW1HS0x5TlNFZXFoaEJJaXNKK0RVWWExTVlTRHNLK05iR05XWUxBT2FvWlNqMkFYYkY0bE14alJ1cEd1THFJbTVsd09ZYmZMazREazlEWWU0dCtrcnh0bzRCZmxra0MwRUZUa0VJVHEyODJPVXI3MGVpdEk1dkc2V2U1a1hwMUE5ZkcvdlRzSytyQWdLRjdjMnUzNGE1bTNyVE93cVVsVE9ROVNiSVdEdnhoc0dTUVpEaUZLdU9IQVJGNXprOUpDZ0JlSDBKM2p1b0l1djV6c3ZQcVoxRy96OEVPRmdKb2QyamZERWx6bXp6cGh6Q1Q4NEdJTHN4Z3pIcFNSMjFRU0MxYWJGMUgyZU02MDIvS01nUjd3WFM0disvMFppejBlM3ZPMGV2ZVVjajJldUhoMGRBLzJIODlQVGlRM2tvZXpTRUVqeTJ4dkhVQjJ3TmJCSHE0V0RYMnBRajVIVXh1U2ltcEMxT1c1Sm15REVJeDhBN2lkOGFCSUwybHJ5bklqbmdCVVMwOTJqTFBqL0REQnRUYUVBaGpvSzRRc3YvN0czSnpWSmp3QWZ3aTVjVkhWanlrK1ozK2ZTRjVDNy9QTDk0SjJvdDAxYnNZRE9KSGtnOTBZQloremk1RWp2SmpsYko0TkRjTXhyU3p2dUU3dGdMNVVzanBKdEsvOElGTVUyMmtsUXdpdjFiS3F3UGdwbG1oejRoR2NYZU5PWlRQaHQyWGJBYU9aeElvalhGc2FtVUJBSlVJQ2FqNEthUURzNStTdmFTamVGVlpQSWtmY0F4dW9NWTNnSTlNcWVYU3Y2UnBKbWloZDI0MzV1OHFvc0tNVFZ4dkFoUnR3dHRQVnAxVStibllESnNUcVpFTmtMUjJVclBFeGtrcm5ob0pVanF5RkErc2lkUTJhdU9SVnVTVEJGNUVXVk9KSk5EdTVpOWV2TkFYUDgyckhsU2JmKzVsajd6THVUdzdPZjMwOGNNL3pmdWRxNU5menE1RkN6QW9uSlByZVNmdnJzOC9mZlM4NDNBS3BCb2dNUVpaSHQwRG53L1FDMllQZmY0SEtGWTQ2dU5aR29ld3dlYXdyN0RCdzMzbmFOakxoMmh3YWhjajNieDJIOUp5RjJLa1JsT09wd0FuMmtGbWRoeEhNalExejQzbUtpMGdXUGp6K2VuZy9mbHA4NllIbExyQXNaTjFRMmdQaWpSZnVlU2VFbGJjQmRBeG5ra25xMFNxZ3czOUsrLzg2dlQ4c3NQQmsvS1c0SnZadUFrTlJZUXZldVRsMlh0anBLM0NNR3FDL1ppN1VYTisrM1I2WnN4eDNZNlR2bmFjbGxXYzlNQnhOTXhPMVF1OFRBQVNDRVB2WUEza1U3bGpkUU1XbEx4SXcxV2RNb29xalpNRVprZExEejZiN0Erbk1GaUZ1VzZRQWkveVRwU2dhaXc4MUErWW5NSlJ0dlZYNjdmUFY5ZDRRUnF3RUROQ0src0tjR1FEUDF5Q3RLVVpTL3JFNllMem5oc0xpR01DaHNlVG9vT0MxWERMMkNiNENqb3dhZHRuWDhEdDVkRC9DcHp1Qnd4VTdER09lbVZNcmJvTUdQZHF3UDJNcjVQRVBwN2xqTG4zL1prMzllLzlLSDZKbjdOY1RsWk1nei8vNW9nRGhzODM3djV3OUhMb2pQWmV2aHhSSzBMNW00dDlMenNqU3hPQ2N1ODFLb2d6SDlxdmhnY0tBQkJHcGIva3NmTEV6L2dDSkNyd3dZcWgzYThkOERiNDQ2YUJWd1NNSlFXRm1OdVZqS0gyTjNoeUNTeGxUWmxWSmhFRUo4cUk4Zjd5RHNiSTJWM2laZnNZbW9NRjhIZTlHU1lvRnBQdHhIZlFQSXZBb0dFd0piSFd5dWRwaW1ubXFSU1d2R0lVYThEWkQ4RGZWQ3NZWjlkR0JERVZpYUJKTFpwYXQwOU03amF1UUcvYUxyMW9KTEc2d2ZXOVhqaUZqM0JLMzJJZHRMYjBjZHQrWTZydlU5WGQ2WERrbUJlWXRGQTl0Q1ErTkVKRk1VUUdpblFUb3J6NnNVQVBZbm9sbDJuQ2dTNWdRejFGRDVsS2VOUmJBU2NISENRbWlpTlEyY3Qwd3JFVnB0UUF5S2lrdFRwK1NXWThlVlJtNVd3V2ZaRzZRUWhxMTk3SXI3V1RlaVhtMnFnVGxielhlNVRFaXhoYm55bzZxUDkxOGdIa0UxM0NZeXRhTHN2Q244YXM1WEkzak9ZUUc3dlNxUGZCb1J6dEgzU3dCd01hVW5KeVVmUkJweGc5QVhSZUFLUWxiUU0zT1kxVHZPSUFHUVhUM1luOTVUVDB4MkpNbjN3dUtmUjJkMG9CMDFpczJoZjV2ZzVOSjRMbDZWZVdlQkluT1dqQnZvZ3Z3a3B0c3FtNmd6aUZQZW1UVkRqWElKSVJxMmxlZVZhS2p0cGVPbS9XTkY1RGJDaFRwalFZQmtnRStQOGdUWUV0azZKREloS1d5NHgzdnJYbDEwUUdyY29WQ2p2b1ZmbmdzZm8wNktESFFiZHFNN3ZGeHFGei9TVE5ZZE5WZ1Y0cFdUYXpIZFVhTkN2dFZxWG9NaDl2c3p4dHp4VDJzcHZjNTdIaGVEM2FsTXhzV21venkyWWszOW96YnFBRjA1bTdqWGFZTUtvb0oyNzJQSFJwNXprWU0wL3dhNTJRTkVWMGVFdC9CYU9EdUF5eEtaRlhkdkM1WEVhRld1YXhhUWYxUFNvNTY4SkJML01ZMlE1NUdXaU5IV0N0eWhnTjBBQ2M3Y0U5Uys0SE1HS1FyWXBGbXV6Mmg2TUJCeTdyZ2RtOTgrRjg5UFc3cDNUOElLTUw2ajdtQVk2eHQvSXlCZXhhY0ZSeklYRjA1VytpdWxZdDVFUTY2dzVrYlFhTVNBLzI5aWdrZzFFWWpWb0NtU3FmR0VheldSVi9WekltVUt2SkdQSDNXSFI0N1hJcXhnZ1pzKzJHK3RGN3JJTUEwaDZGcjRQaGxPMEYwNFBoMFZFNDNHTXp4L2NCeVA3c2NQOW9mempiMjU4NlFUQ0ZZWWVPNDcrZWhleG9OSUlWZC9jUERxWXlEVkx0VWViS3hUS05IV1psbm9HMld6UE9HSEdKOGlsVTltaDRNWmdWRlV1ZWQvSDU4dUxUMVpublBiTndhZGVwWjNiRm9tdVozUXBsSVg2OUxQWURocUdwd3RNUzRpSnY2M1FXaDJPcGdKbmxsUXZvcXFKcWJUblkvV1lzNTFIT3k1T3p2SHMvajN3aFlFTkVhd3JCY3BUTVBXUms3c0dNOUFIWEhxTWU5OFA3aUlQYjU2VTVpRjBzZVYyYnhmRmhsNm95aWdVWS9zQ1RDcTZ1WS9EaUFDeEFycThHTUV5UjJ4WDNHbzB6Q3pCdlkzMU1MNW53T2p0MUtlMy9lbjE5b2ZwK0JaR0ltWWd5TFV2RW5xTEhrOE03b0VKbTNaZCtQdWZkbHkvdkh2Q2p0WFJ3d2Z3WXhFSE5ieVRkVVVvZyttMmdNaTJqT1BSRVg4ZkEyTGFQdWN5R3V0OGVsWjNLNGJCVWpuRWdsdnRLdkR5Z2RPdFhkV05SeVNXNHN5U2VvbXhtUEJnTVI2LzdEdnh2T0Q1MERoMXdhQWxtNVFVNkpMdEExZ3hjTmlhZ21WVnQxTndYdUxudXlIRjB5bHAza2pRZkRvOTJiZnVOQzMrYjhZZWtFWEdwUVNDOTJSdEM1eFlCNDlLWUcvQjByWXZuL2V2RCtWdlAwNjVEclJ2OFpmb3ROYXRNV3czN3UvMFJaUmIwcFlNb3dwUERoTEdwWFRsVWJJL3dUUEt6bURpeWk5b1FqNkc1UHBwUFN0ZlRuVWxISGtaRlBURmRIaUJhQlQrN0c0UllnaVZYSkN4TG5wUEpnUCsrOW5uYXB5MkkvS2hBSFpmVkYzdytzWndadkZuVTZJcDRSUzNhc0NRNG9rcFo0SDV1SEtLWGNBUnFobUtEYWRsbVJ3amc4SGJkQkZISHFONHgxeDI3dHpVbFIvdEVoRGFaSDhQKzRJWk02N01ndVI2M214M1J1Y25zNkFOVEJvZHcyOXVFbXhobFlOWmdvQnQxQkxmU3l5YXpnbHluL01mNmVQTEZ1RnR2N0pxc1hXTnJld3M0cGJDRlVYQ0ZhdThLa3k0OVJyZG1YRlVmSGlPczRvQTNBQ3dwRy9FQW5hNlFZRTlySi9YUmJXaHIvSmd5bVMxcjg0MEo1M1p2Y2V2OXJYUVIxK1AvNCsrSy9nV3dINHI5ajlmRFQzVi9BanJxNnVQSnhkV3ZuNjROUFFWK0haNUpFc0NuSE5nTm82Q1FQcHBzVXRVZGRaOGNwTW53eXJHR0pFZEZxaTl4Uk5SVlpYVDBUVTVkS1h4bkxLZWczTFNFR0xkb25KNFQyWWx3dVEyVURFTnVaZW5YMWdBUU8zVVVLSGRMNWtUVnI4bkYxQVpiRjZ5aUp4VGpKczJFRGFqcGx2L0hjZVhtbU83Sk1QQ1pVV1JMTENyalBzNmVmRlFoc2owREVVMjFQYkdnQ3hETCtxdDFWZVJSWm9GcmFMMzdjRzVONmFIQjJFS3ZXNVkxUW8vS0VnSHBRMUxKWlVLQzNwVVBiQ2lMM0JjT3JrRGFOVXNZTlZmSSs5OFhvQ2s4RDhubGVaYnJnbWJ3d0cyTkVzK0R2YjdBaTJGUmh5RHVhdWpQUGw1eGdSdmV3YkhWdlFsb0x1aWd4eHEwQnRnWmM2QzZURkhEYW5XVkxNcmdMUHdaSzFZa2JyV1o2c3BGeld3b05MUElhVjNUVVZjRG9BNVcxbkdwRzVCMVhDcGQxNWpiMUdWS0p1R0FHeUNFUzdlK2ROMyswZEprNmRyS2NKQWxSQ1kwZXFvS3ArME92YnFLN0FYYnluZDY0dWFUSW5uUkltSStZSUx1Y0w4UndxMEZiN1UzUmFBNmduU0pXZUFxelpuN0R5cEpyT3F0dWkyNVR6VzNGcytwU0U3clhqbElGYmczbFlXdXkyZ2lOc2ZMbjNya0lsK2dTS1VrQVNNaFNVN2NiUlRGUWVnMmJLNWNzTmNydk5vU1JDcXlTWUNjcEg2MlZXUGhJTjVXUFhWYzVZRWxtUFZUZ3EvSzNTd1R1clBCRUY4U2cyQ2JwSzlBclpkTTFhN1phYWFzZnNLcVoxRzFSd0JyNFFjMnVEUzRVZk9FdDlxK090QXdoR1BoOG9yNmFOUWZPZnY5QS9ocjkwamVVbE9BZ21BYTFUWnlKcGxmV3o5VUVHakl2c2E5TkZaVVI2aFRJUlFOc094amxlSGhqZ01UTXEwWmJGaXpnZ0MvYXdVVFZZL2MyS1dzRzhKdFVkMlFpRVd3c0tJeDlvN0drSDhwdDN3bkdlZzN0a3p6MVFWdXBjd0ZINTFHL0s3V2NIRitXdjJtRzNxaVFKa0kvNVl1UnpNNVFCRUNqb1RlYzZJZjJjSitvbnZLTkEvaWF6RkJqRmJwTVBqUmdMekdrWUJRQ1A3SjBwSUpwQmFtcEJ5VWF3SVJ2S2lMbWs1aWNDV3d5QktGV2J3MUdhczZwMk9aaTRBQUc3ME1zSmFjK1htdzZPUndjRms1bWZCWG5ja2tmR1V2WVFhdFpQZm5FS1publNFNGdwanRDZHcyUGhOTENpeUpDUUFXaUlTNmNhVEZhTkROdURlOHBldHgrbWxXZUMxUlU1SGgwcVB0bDNnWFhxc1BVZmkvY1JWd0tyZ0lRQ29MSVZ2VWJiMjcrQXplUThCWXlQWEZaNlBXUkQ3UVVkVWNXVlhtck1ySU45ZGc2OUZZeDhacVhhb3cwWGoycXVzVEFkZHJsaS9wVVJUK3RzbWdSZmhNYW02ZDVQUFUwb0QxNVNGblJSR2JmS25lVkQyL2tGcHIyUitwcExZc2VzOVpmM3hVTGEwZkNUeXhxT0gwYUQwdmFsekRmTlVtWXZoQWI2WHVQUE1Wdml0MDFkTXdiSndwczd5bSs3dUc5NHk0MjdWakIxanJielZCVkJheVFFU3NRZmUwbkl1aWZ0TkNZbnZSU0xFaVNHV1VIL3hreTFzdHl4TDlQKzlaMWphYTQxdUttcU9TcDc4emNwazdhaHVnV0FWR1ZMbElWRlltQVNzemlnVnk1cFN0UUI5YklxVW1VUkJIQjJGVXEzcUU5c1lwdFp4S3BSSmh1SEVtSkRWT2wycFVnampDbERlT2FGR0dXbHBjV1FRWW9lSjdpOEhLTjB5dXNWem8zekZHL1ZqZEV2bEpENWY0TXRsNUZObm9RSXl0Ukdkc2lCZ1Z5WlIwVHljcjVURm5oS1AxSzc3eERjd21IVW5MQU5jS2QwUlVsWTNyTldWZFpSQTJQbjU4OG9IazQrMGpXVlg2cHdSY1hEd1ZLMlBHeDNpWGlFKzJsU2tha1ArRkJmQVlxVUhmNWplc2oyS0x6d09yeVBBUFlGRzFnVzFMckkxLzFuSW9FQU14Y2RCOEViRzI0RE1mVXF5dEs4T1VIMXZhNEpnMXdPQm5OWUFhbHNhQW9Wc2Z5UkhFUi9GdVE2cm95TFZ1ZlByeGNxLytocGswS1RwMHJ0Q1Q5SnRnOWpCdjRBNUNkajhBTlJiVlhpTklCMGF6bk5MV2lPQ3JtemJsWEpOMG1tT0l1b0t4cG9KckwyRzFFVlFxcVJtbC9Ebi9GZ0lvT3FBanM5aHNCa1EzNnIyZmVzeFoxVGY4dVM4Yk43eG9WSGlUYXU1UnZxUzJCYUhROWJHMW5FL05UNmZSV3crSVp1bkExbDlPbzNtWmxyeXRmS2NSVWphaVUzRTFxcy9icS94VDZtajROVzVOTll2MHZWVEVyb1p4bzlTNnFYRTRSYWlveWtXV3VvdE9DT0N2SHpLNWhuNUhXOHdMajZvSVVIbGhaUUhnUUxaWUlpYk1rb2RtU1NYWEcrbERzbW5TTldkRXhzYjFRMHMwL1BUN3BEUnp2OXN2UFVaeUFIM1dIVjFqb2lBWk5vaVVGOVp2dVEyKzE2Y2t1akdBYmN0NlU2ZVo4NllHQTJmMUJ1WGRwOTh1UHB4ZG4xVnZzekM1dDBUZVFxK2owZ0lDUXZQcVMvS0tXNE12dUUxdXZCRTFyTzFEYzV1UkpDR1U2eE9rQzBCRGlFMWF4cXg1NExieFZrOW44dVVjNGR1RDhJSkFSUVZJYXhoeHFpTlRLK0gyNUJQckoxOXBpKzJMaU14OGt6MERmNGd2bmdGQWM0YWFjVkxvRnpoVjl1NWYxS2IvVVJ2N1dEMFFmZVpqOHRUZ1drVHpXWXMwcWw5dzNxWkg1WFYwTm8xU1c5elVMeGQ1NDliQnZYSFZ4SzdCUDJZVm93U0VlN2JBYWVhV1g2QmJYelFzbHFhQytYenRxZ3d3VUVVMkZFaUFMR3AyWHVNblVkbXR1VktGbVRpSnFyemg3eHZkZTZ0NTFxN2VQV3pYQkRVM1d0UjZQdUZJYThnMXhLdC81OEoxNjdKUzcvdTMrOCs2T0VBYTFVYmNiUnhxbGJGVk1na2JCSW1xZUJsK1g3WnBIREh3aVVQRVRHRmpvQ2FNZXVzSHlHcUZLRjVROXRJcEJuSGl3R1ZOekpwbUZIQmNBYjFoQnlHU1BEWWZNYWsrbldtN0Z4bTI3ajA5ZmhGSHR3NURGVDdZVWhzYVFDclRKUGlic0RDcU1xb2ozYjZMK3I4cjhCTWZxT3NuV0xsVmRaRWsxYk10ZGQ5RjNucXZ1UTdDSTVDRmhhSkFjWCtUNDZBZFB2UGZEWERYbnFwWFpoK2Y1QVFzSzZ5M01PU01QaEZYZkN1SE4yN1Z2MnUxeWNNU2pnMFdpV0ZGR3RWTHVSZ0ZkR2krM1ZkWFlPVDd5R0d1dXNlcjMyQklMeHpWak9IenRkeGxIQU10RFNkdzdVNVRZSXgzeTFSYUZ4VWRlc3dpTi9MVVBZWjY5akJKZHY3eVAxUU1XNGVLVHdBQSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL3JlY2VpcHRfc2FmZXR5LnB5IjogewogICAgICAic2hhMjU2IjogIjVjNTQzNzNmMmRjNGIwNjQwMDgyMjVjMTg2ZWZiMWQ1YWZkZWVjMzZkMTUzNTBiZGEwYTEyZGVkOTc2MDJkMWIiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTAzNiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E0MlRUVy9iTUF5Rzcva1ZuQzl5aXE0ZkEzYloydDYyNnk3RExrVmdLRElkQzFVa2daSzhHc1ArK3lqWlNkMDBBNnFUS05FUFg3NmlxNnI2WWMwSUlWSlNNWkUwb0Z5eThicVhvUWRDaGRySEFFcGFNQ2dIaE5namVOS0RqQWo0akNwRjdTeDRUc2VycXFwV0xYWVRJZFNETkFuWFgxYkFTM2RRQjR6ekdYeTRoejhpcUI3M3NobVFBalBFSlFpak8xU2pNcGdEbCtMV1BlZGRTTnU5RGprcDVGRGJpRHZTY1JTWGhYMW1DVUxaTm80N2F6eGg0endXZm9pT0k4V2MwaTYyNHU4cmdpTW9BaDlQdFcyeTRzK0wreGNONVVxNEovRWYwaGtsRzlBQnJJdndreEl1aTc2UmQ4ejhMazNBMHdwSFF4OFh6bTFtZC9udEhMWEZNQnlRM3lQdnVIcXI3ZTV0MjduR0FqZDd6Nnk3ekRwOHhvUVdqV1pYV0JzSFcrUFUwemtYVDNETEJ6d3lDYjJjT2RvMm5kRzdQdWFBKys4MDdhZWJaQW1ETTBNdU1vOVNYaVIxUVBpVjZkK0lITldpek56SDdQTmhhaUgwMHVOMWlIbFVDYnNVc1AwNldSM2d0NDU5ajZZVjY4THNXUE9PWFBLZ0xkVHZtY09GR0o1dGFjYzZqaDVybS9aYnBQWGgyWGhNaWgzbEZPN2daaEU5d08zTnhjWHRwOU1aN2w1U1dNemtZTkcydVpyRTErdEY4WGU3TVRjK0d6SDNUY2ovL0Z4azlROEg0UlNmREFRQUFBPT0iCiAgICB9LAogICAgImV4ZWN1dGlvbi90ZXN0X2V4ZWN1dGlvbi5weSI6IHsKICAgICAgInNoYTI1NiI6ICIxZTgzOTYyM2RmMTUyMThlZDQ2YzdmYjU5MTAyOWI5YTY1MzY3OGNiZGUyMjg5OGQ1NzAzYTRmZmJjMDgyZTk5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDU4Njg3LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxOWEzUGJ4ckxnZC8wS3JtL3RnclJCaXBRbFJhWXVhcTlpSzRudTJwSlhrcFBONWVHaVFBS1NFSk1FQW9DV1pSWC8rL1pqWmpBQUJpQXAyOG1wcmVNNlJ3R0JlZmIwOUd1NmU1NDllM2Ixc01qdWdpeWN0cWJMTkl2OGg5MHM4UlpwSENWWkt3dlNMTzIxenFQV3dzdkNUMEhMOXpMUGJyMkpwaCtEcEJVbHJla002c0NqTjgzQ2FORjc5dXpaVGppbnF0TW9mcERQVUFzNm1BZnlkeGpKcHovU2FDR2ZvM1RuSm9ubXJkakw3bWJocENWZXY0ZWZza2k2bk1SSk5BM1NWTDE1VUk5Wk1JOXZ3cG5xWmJrSU01d0F0eXAvOWVZd2VOazJkRFc5NCsvVGFKRUZuek90NHlUd3d5U1labTZhK2RFeTI1SHR3bHlYWGhZbFhNOWJabmRSRW1ZUDdoL1JNbGw0TTFuOVAvbW5uWmV3V3pkSmtONjU2ZFJiMk5EOE5Qb1VKQSt1K3M0Tk1xUmRtT2R0NHMwVkZDNHZmcjQ4ZWNkRm9Hb1F4akF3N3liSUhsb0s0c3RGbHU3c3ZENjVPbTA1QkxlMjZ5SkVYTGZUZzU2ajJhZWczZW5GWGhJc012R2ZuZk9MMzZDd1hLR2VmR2p2OWZjTzdkYWdELzhmMkswOXV3VlAyWmR3Y1JNNXFqRCsrUkl0Z3Q0eW0zWjJMazkvUGJzNnV6aUg1cXpBYWoxdjdmZDNYbDk4T0wrR0Y0OVdPcjBMNXA0TE0wNEJVNnhoNjhCdVdTSEEvQmFuRHIrdDZLTUZyNUxBODkxb01Yc0FDQVJ1RkFkWTlqcFpCdkFOMEJQZXdVcWxXYktjWm9FUG4zN3labWxnNzdUa1Ayc1czZ1RUaCtrc2dJK1BGa0k1OFZONGZna05CSjlneXZqakNINUEwMzY0dUlWZmc1WGVBS3oxSlBwTXRmTWlBQURMRDJhd01nbDFPK2l2Y0VETHlUeE1jVUlwbFllaDNZVEpuRXZBOStWQ2dKMWVyRlk3T3p0K2NBTVlOQTFpR0g2N002Uit2UmhXK3hPZ0RrQnVJUDUxNmM4Ky9qbVNQK1UvaTJvbHdhY3d1TWM2L05UZEUvL29vYnVQZjQ3a1QvbVBxL29oN084MHhEMkw5ZkZuOTZYNFJ3L2RmZnh6SkgvS2Y3SmpRajlhVmhnNHRPVE4zQkNuYUoyZC8vU20rOXY3YnIvZmY5Vzk3aC9zZm9FTmRYVFFmelhvSmdOTGc3S0E5VHlZUjZJcW9KYmZSYXdiOUdHNldLK2JCQURLME1OaFVuVlJQc2VoUVUyTDZaMjNkM0NJclhxSWlJZjd1RmF3SDZlQmk3QVN0U1hDd2tla1g1K29JNngwOGg2MjI2K25id3dEenJmN1BQSURLdnptM2RuNTJkWDE2U1VPTVBPUzJ5REQ5NERJcy9udzQzSVNKSXNBS005dTRvV3owRnRNZy81Z0YvY1I0a25YRDZZOG5HcFhNTTN3SnB6U3FOeDVBUDBTbkpJb3lybzM0V2VvREFPNURSZGRwaGhkM0RrVGI4cTdDRWdCYkU2aUxZRHkyRXJndTBCUUZwbmFNNFRwMHdoSy9ia0VPb1J0NzZyTnM0dHdUSGZYTHNxdWFDUDluMkpWbkVIdFZHQUVIb0VHRyt3TytvRFQxLzI5WWI4UC8vc3ZpMWFCOTRXaDJHQjQ4SXFMVlJwbjdIZHpWT0lYMko3WVYveGEvcklaNFFYKzh6ZnR4WW82RU5NaUhOZGJKc3dmcVZkalcvWlArOTh3aGpUemlCUkptQVBKOHo0R3dGTmdSUVNhK0EvV3Fqb3RiVWhJWEVhUHBlbWNBK0V0a0tDOHpad01WWnF0L3RNN29rbkFZazFvNjlCcUdIZGRxenJUOVIxVk9xNWRudktTUEtueEtUQUxtcy9IY0VFYko0WUo0RVlqbU9HTFplZzc4Y3pMY0N0MmNWdlowZEtKZ3lpZUJiWS9kV0RYUXRWYlA1cmpyMWswOVdhR2RkcGtLSm1PT2pxU2oxZXI4VXJRMUF6RUJWbktsdmdIREdNNjg5SzBkU0xwenNuQ2Y4MXlXbHVKTk5mdzU3V1hCb0tkSUl2QjkyN3dHYURnTHVBUnVyc0I4Y0FQRWxjS0Q0c29jN01vZG1mQUZHZXVoSDQ3RFdZM29oMk4xdHZhaHNpNWwxWXFYYzZRSVNqeTJDNVh0RFZhckJGZVB3bG5zeTRLaTdBd0lJdmtiZUpBZWpEMUlNbE8vMXpDeUxpVFVRRnR4cllHV1AxOVo2Y0lDc0hKWGRxTzduMFN3VE9oaU1ScjExdjQ3aVRrVWtsd3MweURNaXpteTR6SVhnb1RIYzI4K2NUM1dnbE1FQmEzdDR4Ukttcm5mTVN4M3ArZXZ6azcvOW5xMU9DTXVRV05mem5XOU01YjNNSTIzcTZKRXFkN2FqUE15aHdyQWhhU2JGbFhJL2hPaVk0TGN2K1U5Z3E4RUtibHpXWkIwbVVjMlhwNkRTelNRWGx6bzlhaWtTVC9Zd1Y5eExDdmFrRm5FWTZTUVRkdHJjQTN4cU4rUHJBU3AzQjA4ZlRKclJkZTVYUFFXWWJ6OGx1M1Rqdlh5VW03ZHdzcnFGSDJBbFczVmsvcnZnY0VCV0RmUnVMVTg0TWd4b2UyYVpTZHpsaDFBTjB5b1FoYTRTSW5HY1BDQ083RDdJNEpIQXdZcVhlYnF6ajhuODZ3TWw0Y281bjJGcWdUb0RVVXJIN01PK1RkY3VtRmFaQzJmL1ZteStBMFNhTEUwQ1ZwSmprOWgzWnJhSGdTekFMZ1BwS0FsM2xRREZxMDc5N0RVa1gzUkdXWGk0K0w2SDdoeG5kUXE0YlcxczkzMjZsc05BVXZtWVJaNGlVVkxqVERoVnlqSDc5Y3B4bXJTWTBLa3ZBWUdzYjJlMkVhSWJaNjJmZWVaaExOWmtKRndJN0xhK1V2RTI4QzdCSFY4a1dHQ3ZnMDhJUFVSWVJIU3dtdDNnTGtCWlFpc2lTRThaU1dqVVl0RFRFZ2w2QmxBcUQ2aGd3cFVmTFE3clM4dE9YTG44VXBzRVZDbWk1VW9TSTJSMmx2ZWdlNlY1dEwyNjErOUVPL1h5d2pMVEdPTk1Lb3dxQ2lJNllDaVFBTkNpU3VBSWlEcVdvUEtHU1N0WVY0Z2lCYnhoWldMOHFzZGExVVpCZTBjL1Zta2VlbmJka0Rtcmw2Wk8xQXUxTzcweGxadENHUXBCVDdoZDhzMnFPMmNmbmgvSnlrQ3VPd3A3TUk5bEtuMWZxM1Zock9sN2pJZm11YWVPbGRheElBamdWQ1ZDdFVGcFlvS1BrRWdEMkZzcWdPNjhEOE4vU1JseGN3TEF1UVJLeWlCRVZvSm1KVEdJa1hMbHhCL2x5UVJxTDdsRzFYc0dPeWNBSEN0N1R5ZmRPTm92YUErbTdlQnRwNmFpVy95NUwrSWNHY000TXloSkV6RWhTUk1Vb2phdS85THlkWHAxZWo0ZUc0dmxHcVZXMlFpOXlFaXpDOVUyVXNXQVozZWhkTVA2WnVET01YMXNQeU5sOC9YTld5WHNiUU9pbjJmdzBFdjZwWjRqd1B4b25Lam5QdTBBQU1yZENtc0RidnFEU1lBaGVCTGFVRWd1bGRPUE5kVUJqalplYUdxWXZ6dlF0bWZubnpJQ1pOUUFOR1JHcGJvTWgyL3hDYS9lT3owcENlRFRPMEhUL0xvby9CNHRud1daeWdmaFowUHlITW5xM3FEQ1QxRGFVTEwwN3ZJdHpabm85Ny9kbnc4Vm5SdVAxc2VMQmFXWjNoVjYrZDJpUTRQWmNwZHpzL0ErbTlqdWJ4TEFBUy81NWZ0RWRqc3RNamJBQVlWa2NUSjFEakJYcFFGR2JKUEY4cU5KSUc4TEV3OERMQWt1aWVnVWFXN0NlTEtYeEkwYWFlOG83Rld4NE9NcS9KREkrWS9OMWNReEZsV3NDWFdyRGlRSy8vWEtKZzJjb2lZRzJ0TDBFUzlVb0lCdG84a0ZRWFo0cllOQ0VEaU8rS0dXbkNUREM5aTRJS2xzRVlKZ0NDaVpXcUV6SlJ0U1VJWjJ2eUFCMVpxb1lmM2tLL1VNZDErVXpHZGRzVzBDVTh6ckk2UGRicTI5aHVwM2NYZk9iaW1zd0hpcTJISjJ3RWVQUGVRaDFIWWlDeURpVGp4Tmw2Nlorek1Bc3N2UUFQYjlpYUJRdnUxWXp0ZVFWbE4rZWg2VzFKZEllUHRFdzFUY1VSQU5XYjYreWxDKzl3V1BocFdSQ2J1dmd6eDZWY2JNc2U0cUJ0L2NTbEJBdURKdG9kSkRvSUlUNmRZWEVKSHd2TW5jOTljTFBBbzRUcEN2NTFDaVlyRU9KaVBGK0MvclE5OVI1ZkZTZ05TR2VKUjZSbVlzRWdKbFpFKy93TGFzM3IxRHFxNjlCZkdQdGFmbjhUelVDK3FCSUN4ZkM1Z0pIYkM2czFrRTZZVUJqMXJrQkFYOXllWFVpNnEvL0RMVUxFdHYzY1MyNVR1L1g4K2NkN2ZLcFJBNVYxVXNLc1BVb2YwbDd3T1ppQzFna3FBeXh2ZDRxTG5CL0xIbU1KUGpydFRaWTNOMEhTdXdmOUJOYTE5UUphaWhOQ1NYaG02TUNEMVFFSmQwUDdLamZzNkF0Mzl2N1V4dmRCa3VqdjM1eitldjdoN1ZzREZHaTVTTEhwUlpNL1lCM2FrdURDUkY1L3VMcStlUE03ekltMEVRWjhCeGF4cmtJU3pDUGFmd3dzbDRpbEk5RVBLdjZqZG1yVVpOc3FZeUcwbFlaKzRBWUF2R25tMElKMTdQSzVkSnNYdldibHdodUc3N0MyODZlYUJpcE1pdWlzcEJmdG9tVTMxMEVmVjdiYzZCMWp1d0dJVS9VOTVwYm1iOXh0U1cxRFdxc3N6dEhOalNzOEhSVDNvRzZsTm8vMjVnMGFaVjJ3clNOVWE3ZEV2enVzRXhMcFJucEhkSHRuYmFPTUJMM2JJQ084dzVxV3RVRzlkWU5CeGJPTi82SHp6dGIvUU1yend3OUlnQTZSQUJVWmJvSVNIWmxSQVdLemNCRzRuNkxaY2c3QThoWjQzREFKWEQ4Z2dhWE1hd0hORjFtWVBSRG5PMmYrb1ZiNDE0dTNIOTdCM3JiZWVoUEFEcUx2aXdqMEwvSWFtQUVMd2YzS1BaOWs2dVUzNENzRitGbGlVbDBoU1JmWURDaFZZdXBpeW5KRzhFMCtyc284S0Z5a2NZQitESGlnOFBqOHVTeFlubzZDcTdVYTcyeEV2WHp5MENrVG93MUVSekpVK010NW5MYlY2QmlYaUVITlNTejdocEx0RkhTZHhUS1dDTk0yN3RFSzF2SXdlbE9Ta1ZBdXRGdURNakpLRkl3aitPSDVjOURVbGJzSnlYNThlZzRjRFNVMEYrUkt4RjhVdUFLandnRU5BelNreXJFSVdLUkpzMjd1eElKSDZxTFJMamE2WGo3Z1JoMyt6eVlTUW8xRmdBZUptOWdwR2MrT3k3SkRqZWdnS2FqRHhYYUxoT0JZZm1ZZUxzalRSR29IclZ4RWxnVXRyV2Y1emhaVW95S09rTFRwS0tRQU1WVFZxWmFHUHNuNFg1RmFoZEJxa2xsSlpGMVZsV1BHTnNkTUY0QXNTS3FRRTRWSG5jTU1jd3BBbzFyWkZTSUJnbnlHcTVxUnhWRFFMYUFETnVxdFFNSEVHUVRKWVVNODB5OVFDRTFhOVZObk5LNThZR3JqU0tKWnBwbUtaRDVhRlplVEhwdUIyUEdHWER1VW93YzYyeGdxTEttOG5DSE1IUDJ4dWdSaFUzRXg4WHpXdHZVbVFROHFlTVBINmJaMUJYQU10TjhhM1ZQbUtkdTZpSVViQkFISUtNNHl4V3NER0QreEF1eXdnOFFheVJia0k2d3k2bzhkaDZaZ0RhbXlSZ2V0eVNMcnpyeTQzeDlZZFNLTGJHYTRCKzJNTEY0VkdEaUFmc3dOV3RhV1Zabmt5K3FsaGQyeUxVSEtaV1BhNUVaY1p0d3dzZXJLZG9tY1dtVEhnKzdxcGJWeWI0OGZnd2ZlaXlONEdoTmRoUWNtcWlVUFFWdno1TE9sVGNJdXVOeDFWdlZpRnd4Y0VGZW5SSlNITmJSTW5KSnJ0RXpXYTFwMnE5c0ZwcDA4eEJId0FRV1NGakFZWUE4UDJWMjBDWnhvZTh2elJpemFPUVpHSGQwNGplWWF3NVJSMDZmR09vNnpSNE5RUUNqeHFpRjFNTkpjTU1lT05ZMlNaQWs3ZHVNRnBVWWE1UGdFWllIV0NiRnVXRElTQjlyV2NoRjhGb0tQSUNhdGFUU2Z3M0JySUMzMHp5YjVoVForM3liVGwwbnliUkNYY2wxUHlNRjJYYm1UcTFQTHhyKzFSYVRncFN0dS9FNVVLYWg1eVJMd2ZCc1JyVy9YV3lhTm1nbC9YRmtJazNvU3FKQ0VCSnQxMmxkT2pKU1lUOHl1dlkyQ1ZmVHBNUWhyaW5tUDdUVjRYNnUyU1FGUENRUWs2UzBYMGg5bS9CUU5kQU54ZDJ2NFZPQ1M3Mk43cnl6WXNoUDV6Ukt3QUQzSlhYL0NoK3dQd3FKNTc5NndHMU5hZDdiT0hsTWdOSVJ6NzFhWEdzN2VuZndNUW9NSG0vVUdYY2NxUHJQV3E4bitaTEozNEw4RWlldlZrUmNjN0w4TWZnaU92Q1B2NWZUbHdhczlmeks0T1RpNm1TS2xScTJQbUwwSGMwcUQ2VzRHR1Byd0h5eXVEUS8zSm9QZzhDQTRPanA4TlpudVQvYW5oNTYzZitQdFRmWUdCNjhPb01qMGgrbmV6V0YvY09TOThsOTUvdUZnNnQwYy9UQTQrbUU2ZUhYNHlrSUp5azJYY1F6dzROR1JnZFFpeU1BZVNkRzJpOEkrRGtSK0RENkhHZXdRZE4yRnZUU1ZXNHc4VG1zY1RpMEFzRFRqb0NEMWdYeFFXRVJSTmZyWGcxZktrOVU2RHo1blhLellxbDdtVitsUHViZWlMcVFVYTNuVzg4TjlNWTBrSURPeStqYkJieXZOYmc2c0J4YkswYzZYMjBpZmRpM0NraTVPdlN0TDBUR0NORENJUTJjTktiQ241b2E0VEZmSVpZM05WVEE2RDMxUXJvSGNuQzJIWjZQanhjalNWMDRpTXRBQVRXMVFUalZPN29VWEQ1VmpWeEVySERxZjY5aW1rb1Qram9YbjR1RXRUTVZZU0tCeDdnZG5LcVFqa3FOanhaN204S1pYSEJXd1NqazI1WWpqbUxHeDBFbzhzaTZKMWhVZHZYNWR6bURBM2lRRTFTME1BRXFQMXBXQUtLRFEyNHZmck5XNDJJNnNLVm9EUldQTjk4ZHlDOXBJZW5FVXQ1dkdPYkxlZTlPUEFQcHRDK3R6Rks1bFpPb3AxMzlYZ2VzWnJ2VFpHK01pRmlxTXJEZmh6YzNabTdxaDZTV3AwZGZvYTMyTFA2ZnFTU2hkcXZmbnp4K0JHZDMyMEtpTDJPNEJUMGpTSHFGZlR5T3VQTGlWR2ZaWEpCN0xlUS9NaFU0RTViNEdoUllRTzV3RjZVTUtXcGkxclljYXRGb1NQc1d1N2RqbDE3aUpPOGZLL1N6ZStzeGFKdzEyWEtRSHlnSDZKNHg0T0tkSWgvY2NHdFhvL3l4b1ZKbjFwWUUzSTNOYm1jNmg2Wk0vZGpISUIxU2RlQlk5ekRGUXFvbk1ZZG5LcVNxM1V5eUVJUU5scEx3TmNKdVNzL0QrWHJrNEdsNlhxVGlFcFNDQlN4aFNDRHE3akMxaU5sUjZHMDBBeUo4Qy8yZlZObnpZMzh0WkJrd01sQXpBUTZBTXpYQVFZU1Y2aFVaWVRPY1ZTT2gxNVFhWmU3RXVlRTNudE04c1dQMW9BUk9adVFna3lmRjBocEo4Q3FkQnpaQ2h0aDhpUERaZE9DSFptRnNsRTVxMWV4Zk5nOTM3S0FIRnRCcXdzOHNkYVJFem9xMmVHb3NZUUMyNFJteGN3aVZlNE1mUHREVS80NjRzRGcrME5OakRpQXdncTM4ZXNkc3JWSE5hRnBPZmR3RFRqbXhPOVJCL21xNVpFU2locndYOExDRWVXYjNRQlAwakhwNXJOblhRVlVWc2pCU000SWM0M2QxLzllcm84T2htcnh0NGsybDMzNy9aNzNyQnkwRjNjdlJxR2h3YytUOGM5SDBPOWVOcEtrbW9aUTErTUlYQ29QR0NPdUR5d3ZJZVJ4OHUzMktsdXl5TDArSHVMa0R2TnZnajZrMmo1U3lhVDNwcE5BMjkyYTc0V1YzQzNtMllXUnNkT0Zyb3JFZEg3YVZGejBPK0x2TzRNbXY2Nm5EU254NzZSMGVENE9qZ3dCLzRnNE9qZnY4bHZBcGU5WU9ibDYrQXRlOEZlMDNoSk5BVnVwQjVLaXdIVDlYVDJPTlREMFA4R083YmhJeHJPVVR5NkRQQWdCc1BtR292aFNWZnJmS0ZaQTAycGNYTTl3NDZEY0RtdDF2YXBoMEN5cUxOK3hPdUJmemxBS3VaOE1ybkNKNjgzZGg3d04xVXhLTGN0V2xOT0o3d3NzU0pVNXdsVVNUNHhROUdxRms2YXFNTGcvYlQxaWdFdFVMYnl0eU1jbkFhR2ltTi9MeUcwTlMwblR0UjVOU1dMT3hLM2UzRkQ4V21iQ3RlSnFBWEIwTG50NFpDTUtlZmJyakFnQU1BU3JXaWNRaXF2SXNtMzVwSnFrSnNGeVlyajNHV2REYWx4U0xqeEVxQng4S3JkN2RjdERMZTFVN0ozQ05RMDVhNGxPdkI3SGdRdURmZVIyYnhkcVd3M1FMeEtMeGRSc3ZVRWJGM3dzRElTckV2M3dZeHZBVmVPVk12eUdOZGVXNjY3RGdyalRtc1RtaU9uR2hEcElpZ25QRGl1VlRwVlREell1d1VSTmhqY3FPUXJ1Sk94YlU4YjRZRW45Zm9DdFV1MUNrWmN2NkRDbkpVekU3WkxyNkk3dHZUV1dwblg4Z2czaG5xdmh5cWJ5eVZmZW04S0Rpdys4RXM4d0M4UUFMODFCRXp3SENIblIyOUIxb0V0cnVIaTNpWk5SdmVDVFlGVStlT3lSNC8zQ1ArQnJ3T1NOZzB3MU5hQ3dOckRWNml5QTNSSVFDcjdWVlBTS0JGS2hFcWhETGJkc2loMEpGbFJsaW4yaGlaZkxsRGh6eWFVcXV4dFVmQnVTbCtzOEFyYTV5a0JBdWQ3azhuZzRPRGZ2Y204TDN1ZnYvVkQ5MVhmckRmOVk5ZURiekRneDhtaDRkNzFoTmlFZkVVK3g0a3c4dmdKb0J0T1EzRTBHUWdqWkFtcndLS3BpbVBNVW0xSVNZcHUyK05ONDZKVkh6OCtYTUpaWjNsb0pzN0ZvRC80cm5SakU0LzVEdjcrZlAybzZYMjZtdWxSVm5Ea1FRbU5EWlozdUp4QjV1MU5Ec3pEcE44WVdRRFpPUkROOWN0UnMrQzBWQm5hSmZMeFFLRHM1aFI4cEN1cUp5RXJCaWFnV0dMMEYvaDE4ZURQbnRqRGJlR3pTanZXK3JNRElIeGF0eFNFYWIxYUp3SUZRTGoxcHVSMlNUdENUeXdqWmhWQzlzYzVkN2tzMVRJSldqNFNETCtzYTQramFnUXpHMjFibUtMeUErKzJRYkZ4c2pUSk1lRGV1SE44MzIwUDBra0VEK3h1VmQ3dmIzK1FlOFEvdlB5RmFBbFNqc3pQUDBrUHpyMkpJbVhKRVkzaW9kSWxQWGdjRHpDaHFlUHdZTStSQXR4eXlJYUdEd1FUQzRKNlJqOUxXSm0xbXBUT2xJNHJ1T0dvTE4zd1R4S0h0N2pCT20wRnBZMFREL3F2OStmdlZFL08rTWFqS3l6dWE4OVFxSmNDTG52YkJJdDBYTnA1NmxuU0NVdkdNUVRnek5WRTU5QzZjVEVxS0JPVVFRWmZ0VmhGK243Mko5MGsvOTJrelpqZHIxTE11b0tTb0oxeFNSemJ4dDIzWmFldzZzdHdZbEt4b01Kbm5oT2xMSDNWRkhKclpDUFRtM2RwOUZWNkxGZFBEVEJHYWh1bVQyZ1I0RlVlSGkvR2NqYVUzci9ac3NzZ2JEbGdnQlJuU2JoSkRDdHlUWWpzVTZZOE1FS1NsTkFPdnpIb2dYMHIvVnkvN0EvYjdXUER2OTc1eCtrM0c0enZ2RG01cXZHaGh1clM4QWV0aWF3ZlA5WXZCQy9sQmE1OWFEbzhMZUdLalJxSE94SzBPMzZ5VU0zV1M0Y29lVXJwNEpjTG5mMituMVQ4NGJLR0VIUjZKWEFhbzJVMHpVZGtVVDhUcWZXbVVZcVhVMkh5SDhQZmRPdEZUMTRHMEdWUDNwaFZEVU1HUmQzTFIvS1hSaEtWa2FNYU9YMFhUMFV0YnhwMExaYzkvM0o3Mjh2VHQ2NExubHB4a2xiZDZ0Z1F0RWgyeUhYS0xxaXV1N1BIMDR1dGNxNUpaVE90dDNicFpkVVRRTGF1dFdFQ2xUZEphb09Dd1d2ZE5UK3BGZDgyNm9vczVaTit1dW1idXVaeWJFUitTbWRzSVV6bWR6Q0pya3NOMUlyVnpIQmZjbWgxNlZJRklEUkVBRW1pc0RQa3RkUThCbGp6RnZha1lUZHVxSlRrOVBQb2NtdkhubGYrVEM5YUVHdWVHTjNjRzlVM2dvbHBEYW9jS2NTZnlGeXF2RHV0Rm1aTHZ1OUlnc09QbE1BNnEycjRUd21VK01qQVhJVXlMVUw0ZnY2NTVJU3haU1BUTXFHRlF5WHdlTWNlY0xTcWVhS0tReFBsaS9ZYk1xTkdnK09oVE9IVE85U0F0TFlXSWNBbDFkQ2F4MkEzZWlvYjNTNjRLRjN5SjlZUVVEQ0RhYkMzNUViZHdmQWtUa2libHcvRWxWM2hHRmt4TlpqMkVSQjQwQU1sUlNEeENEd29scjFhTjJDekJ0VEhvdzRKaFhkckZ0SmpjWm9QRjVqWGw2TjY1ZklXenkwNnhrVThhOTFiSkZVQ3lvTnRRaHRtbndKOGtWQXFZaHM4NmhIN1VvZFlCY1Z4RXE0S1J1Y2tjTW1JV1kxOEpaWk5NLzNnOGgrNmZxQUtVaWtvbGp5WVE1YjJpQVpFR2NSMFkzaVk5TzVIK2FkMG56NjEyUW5NVGJLSXFKeVVRQWtlUi9COXdmbjBSTFRJblA1NDJyMTlOWkg4cmhGOWZNUlFUUVB2d1RTZFloMFQzRnNQVjU5ZzRrd2pndi9nZzFhMDQ0VXZ4V2s2VXlzUEREMmtrVWZhOGNTSEhuRDVrcEdISEc0cHBJUTZRZTdUdi83NTVIWm5KcVg4c3FJaWlZUjdCdFEvZldVdklIOHI2RVRRQytyNmNDU0FKMHhYRjBmeDlqR2hET0V1b1RkT2NQOFczaGk1Y0NDY2tydGZCV29ta0ZVaXVZU0oxMHVCbUVEbXJwSytWRTVZRURXY1RHc04wcm8xQjUxcGFlRHFxdytVMlpUZVJoWGJtL0xqV1czU3U0U2p1WlA5ZzBOcm5wZ0l0a0ZxcDJzb2JXajhua3l0aW1QUnY5YXRQcG5rYjhxemFQQXNjYjYxaEx5eEdqNDBueVFaSXZqbXllTEhycjhwOHRwY3Ruc0xmd0FPblZiRDRSNDhnTEZsVXFWaUFMYmJSRXRZaTlNQktFaW1XVmQwTnAwYm9uamU0clRSbnpkTWo3dENlemtlTE5kdmVIdUhwVThvYkExbzhsRHpCc04zakR0L0VpbFJsNFFSd3FjUzFsS0MrYkRCYTFsOG9SUVRSZmtCaGw3UTFGWm9sMGhOWmhOMzkrV0JrbVhWalppV2Y4OFBQdDRDeDZ0ekdHRjVJOWg2cVpCN0NXZThKbUEzVER6eFRZUWhJM2NGYmJtUTQyWUtzUDU5SXluUkxBZHBYMEo1VXZvWGdYVnEra1FVTk83VEdxWDZsQm00OXlZcGxUNWFxNy9jNEkzYTR4UmxKdzAySHA5OGU3OTI5UHJVM1RjeDNSQVpwOTQ1YjB1d3g0ZnRWYVZDVUU2MjFkOGZIZ1N0bENCaCt4d29lbTJ3NUY4SGxkZGxLcXNVMUFGUnh2RUZVOUhIZEZhVjh2cE5BaDh6SVVzSjNaaW50Y0E1OFZwanN4bEJtTHVxak1PcXd5ekVPbkZqeFRzQ1hRNkVhdk4xRG9rQjN3LytJemhqOFFsS0dpMERKRWFHSENWU3dYczVvcVB6NS9MbjdZNkE3U3VvQVUrQVYrdC9qWmJ6WEZ0V2VNMjMxaG1iYkpKNktHUWl2dEwrYUNKNjM4VkYzb0NaSnNBdTE2MkwxSk5aWUIzT1dVajBFczlZNlAvTjZreXVUUFc5OUJpeXBKaktXQUtHM2FqZVVqaHlBOEFqOEFYNmFCQXBFclFQVTNTTHJJRWNkcHNFZExSb1AySnlUbHIrSWp6THk3eUx5N3kveWNYS1ZQZDlTU09CTldHclYyTjdZcnNlQmpWcnRxb3ZHajZtMXd4azJZQlFwbUc1TnpmcjA5eXZ2eVdmV3I1eGhrZGl4RmovVHhpN0h0Tk5NOVhycERYS2VDdWltZjZwaVBRY0Zrejk4aGM5M2t3MzNmcnRIQWFveWRZcC9xTzlSNFgzRjgvZ3RoRVRFZVNLRDRGWjFVY1dMbGRScjh0cmN0UkpRWk1Hb0Z0bzcrTkNnS0x5a0ZnVW5RUWtnTUpEbzZCV0pUcmZSUFZzcXBaUm5FVzRqRUdzbnJzUGtxVWlVVWMrWUQ0NkpLblF6VjJtaUxnaTBmaWxXeDRWdmZDc3RNc01mdkM3MXJLUm9nSDlGQzZ5M3pHemdNazRCMWQ5S1BTZW5mRjFPSFRMaVhBUUs5VFdVcWNnb3VyTnNwRkdGZTdpdXJiMHB3NGhwV0k2VkNjajZZSnlXeDBGYWlYMHM2alF1aCtqNCtta1RmcElicGFoYk5GMjFJQWJ5RTZKakZVQ3BLV01FQmlCZ1JxaW5QM1ZRUmFoTldNek16S2U5ZFZ0by95d29uYjA5ZzVZVXZCYlZNc0xiWmk1d0VFVHhkdEc1RjNJenZveGtwT2FTc0F4dDRxc0NtN284aXVtc0tNUTR3VnlVMy9LQ0NuNkZiQldQVTAyVmlSTmtSN1I4c3BMSVlqZFVKR1NLVWh5a3pidVdoWmpaNmdVQVp6SG40OXovNTNzZjQ3NjJ6LzI1MVpiSEprc2ZWcGdsTTVTL2oyUWx6Wjhud1hlTFBzRHBORTRRa1Jac1NBUjBvQkxNYlorVXJHczFPWHowVDJQSXcyVnVhZHdVNk4wUmZhVStNM05QZ1VoSW0vMWhkMHAycEpmZ3BTQ0ZIdHFVejcrRHN4YWttV0pBRVFsNGlvUEgxdU9PZkw2SUpaeVd2eTc2Wkw3VzBJVTdjaDdHcUEyZnIrUmJyTXBPdXBITHN4d3UrdjQrTGJlazhWZVh5VDY1VEttckNjelY3UHdqZmlBcGZHbEFuaDRsTWt3eW41TmdXUkRreXdlaEVmeVZ0Qi9QQ0RSU2dqSi9WMHJwd0ZXcVErdDlPN1pSYk95bDhyTitjV2NuT2pWeGZsc2p5bWE3NThaelErRmxKcWc4ZnFrekpzSTFGMzlEeTR4K0tnMWNFdnV6TEpwU1ZmOStZZi9UQnBZMEpjeDVCTms0eU1qcnhNMmFLZlhjNEIxaFU1UW83cDVacDJLSnhLRElHZXJXUDZqNmdHbzhSeDA2dGR2dEtEM3FqUHZBVlFLWjVTRytxM2xYK1NoU3NYZGFBR3o4eGIxMVZzcTdKby9McDRhVEcvTTRUN1ZnK1FHVFVvaVRPdVc0M0NoS094MWFEcFozSEliWjRpM2pvbTQ1UTV1Ui81UFZ1UEs2dHBpazJKUCt5MTZURHNodXdUZG4yOHVHMEs0TFpONGVCMnhhbmJib2pRdGh0U1A2MkhQNFdXRTdnSm9sVklrNlhaYVZjeUlleGlNRWtxOG9vV0VtRFkxcWFwTWd3bHBjc2hlKzAvZVBPWnFWUVMzSVlwWFVoVnliNVJ1K3cwa1NwQWhJV2N0eFdXT2VZMzh0cHMzakQ4Z3c4emJISzJkcU9QekRsa2VSMy9tSUJLSi9YaW1JQkZMelFMT3VqRzJMamZYUzQ0Q3dMWm5PUGxaRVlXWlZmbFpsTXVOY0pNWHJpSmVkMUZ6Sll5ZkZDT0lHdjR1QmdXMHU5cW02M0RZUHYyMUdCbEU5bFNRNGg3Q08vaU9HTHVQV2JtQnRRTmdKb1F5YUtJSzVDTHFEb1NkMkNVM01KL2N6UkNnQ2w1Y1MybC8yL05mTVY2YTNNbC9DaUZtR3BneWNscEYxZlFRSFgwZUE0bzBUR2J4SVROeHNsdnVwTjJDSlhQaktFcEwyc1dkNE1LM2lvdkZkRTZFd1U3dllETU1pQXc2cGVOMkdybGNWQ3l0WnExTjAreU9KRTVvQ253WXVkeFZkbHFGS0poVTFRbUFIVFV0bmF6ZVF5YmY3b2tpMWFlZUxobzZoTEVRQ1djcXE5WHRIdDFVZGhOSlhtVllHaW9Ya2h0eHpEbnVvOHE5L0NRTHpUYXJCRk0yVmZYd3JpVzFCQ0haL0VENGRYcDZWVEhqRTkwbzRTaU5KeGttM05ySDR2bEdGRmJZNGVMRkkycU1GU1pBbEtXM2hwRTQyT3RtWnBSUGhwekdCWlFiWnYrYytpT082c1NFc3JNK1U1K0k3MDFSSlFkRmVqaTJIQ2FxTkxPRksrT0x3eXpJbDNZbHJaN3JPRlcyNmU0VC9CK0I4ZVVTQjJuMjUzT3dqeWorckYwV0hNTUlVUGlyTFI0TjFEcGFxREt6VUQ1eFVEVmJPb2xBbE81dGFnK3o3cXQzUUpVekcrUjN3R2t2eS9lQWtSNTJSMTViNTBRbzIyNXdDWGVDWXd5UUN0OGxLUU9NTWc4RTYrNlY2NzBvaGVDOFBhWkZmek8ySEJCWGQ0aTBpeTlnNGI3NmZKU3R1bVNPbkZvb0VMVWtYUGxWUnluZUgxUmJWUVlFUktUdDJOcDBOb1ZjcmtKQXhPLzBDaHFjYWZoQ0w1NDB0NndoUXJueU4vWHA4R1FSQ0MvREZCYkVKNTIzWlYwSlVpeWNqdXNjNWcwWGRJdE1YTlVvQjlqVzE0M0prMUgwclFlSjN6bk5MQzZMOEw3Mm02NExsdG1vZFd1amE4VU9lS0RYdE4xVU1nQzE5K3JQTUk3NnNlTytZNzZTck5URDdBSDhBaTV0cXU0dGpXVUlvMVZsRmlzWWNtV0t4bHprZURXd2JFSjNRcEVPRzlBZjIxQWsybWNhK2RpcDJqbmJEUTdKdFhIMDdpR3RWRWg0TUJRUU9lKzFac0prRnJybDc5V3IzMDl4akw2M2E5eTg1WlArTTNJOFJLUlExMUJxdVJ4R3FCUnVwdkcwS2NZUjVOMFlmRHpSVDI0a0NHWStlTG1lVE9QNFhOYTM4SzJHU2R6TmhCTkFuVWR1T0VtQ3BJdjAyV01hbWNLSDNoUGRxVUIwQ3BwVDE4bE9OVGlzZkFsWXRPYXBaWk11eDJrRmhORytpVWlZMVNiOHRVdGl5cHh4K2FkV1ZZUTU5NENEMUp6TUNnRHFDd2huZUdLK3pkMXB6TVA3ZEtLQWNna28rVGJkWDd4bTI2ZDFyVy9DVjlpai81REIvMlhxSFNpeFRkRWdRRk5qWG1Ec21NMGowR0pUSDJRd01TUWh4U3ZDbkhuWVRvbnc2ZmlSbXhMY05WUmozaXZ4VGVUeE1FNFp2RDZ0L09vQUM2SlNMb3VWTUJHZjMrOXVIRC9OeFJVbEYra3BaSURlWXFaWG10TjVzTGMzSmZQdHNxbnVlUjZWcE1EWGdzY2wxM3BmQjQ5N3hPVmU3YS9NZ3NtZEk1U2RZQ3N5VGtSWmd2ZzJhV2pQOEtqenJINGFQQ3FOTjlXUWRXVU80eThDU0EveDJGakJOTkh5NmVVNitvS2FGNHBoNW9ZbGRkdnJKV3JBcWxTU1I1bjJFV1FPWU5PdzdBcEkyNWxzY3cxS2tSRGdrWHhqOUxoVmMzc3k2Vzh4UlI0aVNQZ3ZtM2Z1UnZUcUVJNXg3VkFNbmJ5RkY2VnhNSndUcFJmemtsdzlhU09xek9xZGJDQVVhZHV0bC9JWGtxS3NwUEU1Z2dsUERrWktoRU5VN2E2eWhkMXYvK3lVb25wNm5xVnZjRW9NajdtanpYemw1S1pNa0dOTEtQeFNUOHVSSjdEaFRhRlU4bk9NNjRaakRUL1ZHVDA0cW5Vc0oyYmFqRXVyMmo0bHpkOWRDcDVNWEdzZ2QrbUFENlZGRk5NQUZOMHRORjlpNy9hOGp4Sy9LNDJoajVnbEdjbXYzaXE0ZDRwbFNab24wNzBLQXV4MVgzTkhtTTBHMlRod2FkdTdDVkk2b2FiWDM4aktmUUxDM1BZbU83QmFld2M5MHhISEV4MHc5dEZsR3pYdmNWMS9EVmQ4MGxtbXQ2aGdncFVMZ1JhRS9RSHB1eEkrbmxobXBsSkprTEpkK0J6ang0NVpkc3g1dXR6eW5tMXVXeVBMdysvYVFFOXduTVU2TDM5MmNZR1R0SVVwc0RHWkR5WTFRcGtWQUFEK3ZoejFndDl2RmFKejVRdDZvUDhYVDczMk9pV2RwUmZnUzd5WWl0b2prRTN0Z0FRcW8wRDdSRm1ZVllpd3VHT09QU1UrWmRxWSsrTTBSRE4rb1pHcitsQm5PYVRjSEg1NGZ6ODdQeG5xemE5azJUbytoMTRsZjd6TkdmU1FLUXV3eHpiNmtMY3hpN1lqQ0d2cksvSUQ1MkdUazB1dFdxQ0tqN0I0TExTMkVMT3pTcnBXOVpaZXFvZ2E3VHdGQldGMVZmZWgxVWdxR1FJTVc3TnRjbXRYcjg5YTJXSnQwaHhLeHJJS2RBUllBN1JQZmZiUVB3cUN5ZXBrVjFIQ2JGWmRLNGdYVnBRZTZxMFArNmxJRTBCbVI5YTlxQXpHb3lMbCtjZWJ3NG1iTnVlVkZKK3FmdXVuZG9id2lVQStMSjVjWjkyUHYvMU4yZlR4ZGtiM1p2OVF0MmEzWGxCZDJYWFhJTGRjQWQySVFVaVROMFpsVTcwbEN1eVVGT2IzSkMzT2N5cDkxUit3dEdPYkt4Nk9OSFFZTzFoVDZPSGRJMkJFR0gzQW9EWE5ZdCs2NkJUSXlwV2tVODVuRlZQV25OQlhYN2l4T0xxcDZHT2VsTkIzN3lzTDMyRnlxaHM0dWNNRHVLSGVKWkFCZi85VUZ6N2x5ZFVhMHN0dmJWY2VKK0E0MU91MjlwMGZzVjVsQWVpOVN2b2FQR29iV2ZUYS84dUx5NnVyZHl0Wk0yMWYxT1NqV3FLWFB4MmZucHAyWUprTlY0emVIWnlidG1UcHNiVWRZVENTbGxiRUE4TmkxY05zbFJiVzRIUzkrbmw0VVh0dllSNk9VbmVUWVhGWGZWNmNTYUc1V0dVMFZIekh5aFdyeUxqK3FhcTI2SFladUdlM2VMbUVnaTJpTzRkdkhKb2ZWLzVoVVdsMnh1cjU4WVNYRURUa1daWU5xVzh0emRLaG1qVWQxcmtXMDI2NDg3WFhrODQ5OEtGSWVNVHVSRTNGU0p4eXRsVXpDUnRpZy9jZGd5Ym5TVmRtOXEwS3lrU1N3N0JPQmgzT2d2NWtrdEFNei9OYjNmRTBBUm9GSXFBUENVdXcyUlJvT1FNVEY2U2hSN1phVlI0UU9xaW1zR25Fd2tkKzFuYWU0YlAxT3hha2ZNOG9zQ1l5ckd2SlFaVU8zR1dnTVhVODJ2bnBEbVpKZFp0Snl6RjZzYkpEcmFhYk4zNDVVRGx6ZzVTemxqcDNZQks1UHJMQkZtRFMraXk3U3lrdWZ5dm1JYXdhZEdGb3FVUUpFRW0wR1N0Sk9hblRxWHNnc3NlWnBYeGMzT2pvZ2Z5V1lxR0NKNmJvUTUzUzlwQXpSenJUakJwc3J6UnlENkpaeEc0OTRTcGNPdTVscnpzNngydzE2d2x1VlBURnpLWmx3eWFqUWtFTnR1MEZNcldhRXkxZUo0Tjd1T2lKM1hERVJyN1ZRNkNUNUV3SnV2NXN1b29JTmZhNzcvTTA5YlJXdmlZOElCWFNtRGswM2FUYVZta3cvZWFKZm8rK0ZnR2ZZRVVBaVdGRGFjUlJESDhwMDVibWhyK1JxVFVhbTFtMC9oYS9INHlob3BvQTd5cE04aCs1RXRiVHhiK2p5Qzh2ZzNub0tFM3hSM1FJcytpTkowQjhYQnZ2NFN4T3dIQ013c1VNK2VFSEJySnJiSjBvVDlqYlJLdUQvZHQ0Y0NraW5DamhodHVjeTh0THRKNDVveG1QdkpyWVJNVnU1TUtSMVpRSC9IWXVoTFBobldBb3BOR2EyTVdFcXpMZlkyb3JYR1BiaUZwR3dSQXNucmd0SHArZ05pTjkyaTBlWWE5eWVFK3Z2U0RObGJuVTBOY0p2NE02d3pMUjBkSGpMMGIzanROMWptYlcxd3VaSitCTUtzWXcxeEt2bUxVUXNGWGpGdVRwd2NiRElRTU1ydytFbkpGNDA3ZUJyYk5obDYwcXJZRlhNWEtqTm15aWhVNngrSTB3TUVtdkNUeEhqWUZaRjRYMC83OVh5MUVzRWJjYmw5Y2NTYngwNHVmV09ydURNdUxLRnFzaVhlVzJJN0hRZ0MwaitIRW5lRldralNkWGQ3UnJ6bFhjbW8yUlpSbks4ZUxHK0xNZWZic21mZ1dSbVFpdEVGQjJVRWx4WWVaYzhKakFqVENoSkNIUHBLUUR4c1M1dG51MjJzdXlBUnlkSk5FaU9yOHdWWGVHTXB2bjJZblIvbFd2ajE1ZjJhL08vay83bytnQTY5dlFob1dSQ3V2VVp0SXRxNm1PcWZGcXFzT3hOZjdxT3JJemVXQ0xpeENIK3dyZkFSS2wvd01rbCsyZmhqaXpvQlV0c2xZNktMbmlDMmUvV2k2UkMrR2xGdkROWUN0Sml1Z0NXQUhiVW9jd0NUMVRMU0ZIc3ZHQ3lRUHkrNWFhZ1JkV2Nqb3JoTXNQZ1V6WUQ2R0ZoZ1dSbEpwQUV4YnRtU25Fa0l1NW1ZbVh0TzlXMDRzK3hZaDVoUUIyTllMd1BTL0JJQjhXUnR2cW1SUWtpVXQ4VEhIaVA1NUVXVGRqOENEL0dqZXhiaVVSUW9sWUdUTXBxNTQ3V0dmY01CZ2Y0ZDJuMHVhYU1JQmNQemNHWEt1ZnpyakV4dU92NWVOWTBRQ3FMa1h6a0FhbnBXVEs0bG4xbzVBT2tjTW9OMDU5dUxRMFJHL0xhK21GT2FLREdTU2hVZ08yWFBkUlhEdnVtM0djWmdPM3Zua0k2NDRHdDYwNVlxUzVDQkh6YjRwODRnTTZTWEVxcStoaWdBdlVaMUJ2OG5EOEVtTnZCaHRVZ3ErRmJvVEZ6VGtKZ3hlRlRKVG1BOHUvQ1g3WlFRdDVrQXQ2ZEFJUkltT2FIVlhQdk9JOHZDSlk2YnNaT0NrbzhWLzM5dnZQeC8wOS9aM0tITHcwYm84L2Q4ZlRxK3UzWGVuMTc5Y3ZMR0cxdnVMcTJzUUN0NmZYUC9pbnAzL2RBR3ZkajhOZGlYV29zQUFOUzUvZDYrdUwvRzhiV2haS0pPZFg1K2VYN3ZYdjc4L1phZFo2VnV5S3d6VnYxeGZ2M2RQUGtBbmwyZi9kWEo5ZG5FTzVYNEVWaFlrdVFVaHZ3dUR5NSs5T1gzMy9nSmFmdjI3Kzc5T2Y4OWRyNjNWRHZzYkNCZFpCNUN4cDZ5L2o4K2ZUK2dFUUE3cjdlbjV6OWUvV0VNOG1sR2c2TmpXZlhvYjlpaFhpalVNbzk2UHlKN1BMdmp6U2dGUDVNYkJLMnJJV3B4SGdPRU9CSWFLNG5DS3FlVW5Wc3Q2Z2JWZjROUHp0bVFGTHdaZDFXMTN3RWk0M1lobEZ3MmpWa1ZXQ3UyS3JBRmpTSU9obUZUUWs5UGFIN3hzd2tmWnJJNkhFakJsUUlBaXN5aUZVYWkxZFhIMlFnNG91L2N4UVhZbDhWWHZsYUNnKy96ejRuUjJRQkRZT3JYTkZKUmNFaVBvbEE1RnRNNmFSREkyVUg4SGIzMkVsaGFmd2dRWXBmWCtkMERqOHpld1ZMOWRubDJmL3ZqNzllbnJpemVJK0FQOWdwYUtZR2hJTzFQS0gxUFJ2alRtbFplRWdYWkdheUNycVRZWGZBNzFUaHpzZ25KelFacGNvMmFEZmJJZlpJMWtCZ0NPSHlxM3ZPQkxoTDFMUGljU3lMdFdIS1Y0ZE9UNUQ2WFRzVlJ5Y1FxcjB4TzVpd0xsN3YrdGRVSlNwdkFwYW9GZ0hnZkQxc1g1MjkveERDeTQzOVU5eG8rQkRjVXF4S2JsVFZKMDd5MFBtOVBLQmZmb1UwaWVyeFRtd2UrNmUrSWZQWFQzOGMrUi9Dbi9XUXFIWlN6a0FzTlJoRUFnTXUvTjhqQ0U1ZUxqSXJwZklMbTlQUHYxNVByVXZZSmRmM1orK2hhRC9nb3U3eGlNb0R1OHd4QmhrU2ZvUEFtQTQwZ0VENlBFOFl2d0lrN3BDaURzZFRsUlA0ZUtkdG80dXNEVU9YbEhwdHh0OWV0NFJTMEt1VWhPbFZ5R0xCbnd5WDYxOEdvRkhMTnU1RXhLREFPUGdkWnc0RElOSE8vQTJHRFV4bUd4bWNRd0xsSnBVNWsvcksyaVZta04zWnRaZUh1SFF5TWZXcFI5TFZ3dURBNlpZVHdyMEl2RzFTdHBSSHg5SUp1Sk1ZdW5pNGlJWmkxaDR4YythclNEMFE3SitVNUI3SWEvdDFFWjk5bFpuR2lFdGo4N3h5UVgwR3U1YVV3R2U0blo1T21sa1NudlJybCs0ck55bU12OWdZVmJVdUxkNjlJSEZxN0xzNFg5VmJFTEdqQU5qTmExN3FORXlMcnZqRUoxWHl0NFFRVWJqRTB3cDBLQUNhOGd5SkFISm5NVGxaYldKbDYyaElodlhWbHBqVkoxcEg5NmZSV2RHcmg1RHJMbSt3aTRxc3dNcTF6UmxVZXZ1SUlNRHdqeEU5MWsyQzFmUDFwMU0yckdrcHlNTWswbzBiSHhDcmpXblplNm9sVEZQbnlEVzBIc0NDTHJEUHdnQ1Q1N2FCdE54WEVGV3V2djhHcUdZSHEzNlI1cHl0STVqUFJjak1HOVk2SjlIYnRhWEorZ1U2Mnp0c29JNFdSc1dlelZEUnNsRVMxYWlFU0w2enA5WEkxUkJUallPcWRpbWNUSWxJbWRuZTFPY1VrUVpXV29HYUdpMnBTS3RTUUdSUTVxdThjeU1EcEhOSnVwY291R0Nob3A0S0JFTm5ucnZQR3FHQ0VVa2ZIdGM0YUpZMUFKVE8wbSs1VldXTnF4UkMyV3JmNTZtMWFkWlVrby9mVldITjUwQnVtdll0blpRaFJrNmZVeXVrL2JHQitMME1ZbHZBbEFZNkxUR0ZvQzZTZ0hQMEFOcG91SzRaSGRhM0I3aVdiZS9DaXF1eTdtZkhWZHRvWHdoZzk4ZXhiNHQyZzBJUnhUYjVtTTBDZW5WSlJiRTdtYXVMSDB6NW1OMXp2TTJlTUlyeS85NmZMaVhTc0hNSjkxVVlZa0tDekhUbE1FWVFtNXJEVXNxRS9jcWZzMG9YVFZXU21BcURreFpEaXJreHFoRUY1NVpuWERrNEpWRGhPdGVYN1JDbE82bnhVQmIreW93QkkyQjBNaDdEcVhlLzgrUWJoalc1dUl2K3Vtb2dUaHNtQmNLK3JtSFg4M0FSY1hiSzFUcmRDKzVOWnRnYUNSUENDTm9mT2l3azdoQkJxcytYQXE2VFpwMXZxelZKL3k2KzdhMGdTQVY3VlRDZ3AvNHJ6NXNWM2VzVHV0LzhnSmFVODhBaFh4MUI2RmR3c1lOSnB5TzhPSE1KajUwTlFPUUNoS0FvY0lidThxUlBuaVhFWnR0OTI4anBNLzJyUVBpKzVZNXZxU0lRL3dyQWVUU0FES1I4bERUVzg4RXZwcnUyd1ZMblpDa05xUjloYW5aRk10azJtVUpOa3dvL1djUHg2enVXWTBWZzMyOHFCdTJTL2JrRzB5NW5zOGVTL0xrblRZNWdKRGFrVDYrRXV4RnBaTkRGVm9KTnk4UkpLMmVmclljRGpoZEYvbUVsbXdRQU43YnZLdzBOT05aWWQzcCs4dTNMTTNJTk5pV0pxeVRHV3NzemlPRWtwTDh1aUtMNmVXbEZWZUswM2hGZmhGR0xXVXlJNHVyc0xNdElteXBJYkNkWXFDcjZPWUNYVWxpeGpVRHNkcEh5RDFMRkx2ZnJWNWd4S0N4SmgyWGFHVGVnMmtXTDVLZXlTSXFuNzVKc05mVWNoU29oWExWR1VEWUVHMndyc0xGMXFFTFk0VE5KaUVEem5rKzMrWkFFY2J3bmhjSS84S2FjdWRSNVNQbEtDZUNBc0VMV2p1aW5pRFZMUE9jVUdUV2UxbE1rTXlMQlRQWE9tSy9PVk1FdHQzOU9NYW5rRjdqOE9lSUJOcGovYWl0SWxib0Y5UXdkN0Y1ZG5QWitjT2hSa09kM2NWRVVDL0Y3UVlXN0xnZVhRcGZGT2Q0amg2ZUpvZ3YvM2k0U0Y3SWl2Uk1SWGxuSkcwRDRYWG9WVTlsTWo5Y0Znd0JlSUVoS1NVY1VOWTFjdlgyYlBrR2FBeUswVFBndVJxS3ZzNWwxS2Y4MEZkNGZKdUZiOEhESkpMa2MrYmFsYmJqSFVHNEo1dVluVVJOVHI1MFZFQmgrbWpVeGlwc0MwVDBnd3JvNkp3RVNGaDB4TFltQjRXc1ZaSmV3Sjg3Zks5N3M2Nlc5MTdmampOMkMrWjF6REZuRlVObURUa1lybExjd2s3SnN0d0p2Ry81QlhOODJ0M05uUjcvbHI3Tis0aXlqN2tXQzQ3ajduV2RpYTI2dlh0SnF0WTljQ3RXcTgyNjJ2alpmRWpMWWNDVTIyRWhNdEFsZWNTVGRSSWtoemVsNlRLazJVVWR6ODZEREo5UXNzUFdVMjNwa255SjdYOHoweWdkdlQ5SktpVUY4NHc2VE9DdEdPSVZLa2Fpd29XSGxHZHRRSnFFWVFpQWRkS0huUERYalNRek1LNFVGQVJqNDRqT21DQlpWUEsya3hZcXNTbEVySkdJTkZYbUNBcndGTzdQdlkrcHZpb2JxYkhsYTBmQ3h2ZzI2bUwyUG5ucFZFTk5yb3IwbzlQZ2ZNQUtMOHJLZVBBelh1blFrQ092K0ljd1VEV0N0WitMUnVXN2hWVWJrMUthaUtOZ0V4c2dGcXlrcW1NeHhpTmhFL2xoQ3lINWVVN1JtN0ZZZjFnQ3FrV0VHMDEyVTQ1Rjh2YzhKWDdYelpOMi9rMzV2LzZ4bm0vREltZkdJdS9KdkZUb1lWdEV6OXRuWUZNUEpSU05Wa2VaVDdaT01PWU5jSHllWUNoaVBSd0hsV2VJcm96emxERmx0RlFkUHNheDNZTXQ3MDJUMmI3MHBOQkRWVUdzOXp0cHprYkdOcjZhRXhheXA1dm5VQnJiZnJoVFpOcHlSV1M5L0RsUVFuR0JGb0dZSmltL3E4RVdmOUtrUFUzSnNnU3lodXR2MDM0YWN2UVVwNjZqUkFyU2ZnS05RU1dpbEFmcHRpWW9FVDRSeFRqUzR3SHUvVjlPdUtVbzhRRE8yVURVVFhZdG0xcVdleGVCUld0SnkwenFZMUJ0dzEzQ3JQSnJjeE84d0FhMCtVelJUTmRUZGhLL1dsMmJFL3RQL0xiOUF3YjF0bnZEOVFwOFViRlg5WVZMMi82NGdsMHFYQ1pFRFFXcmljT2pkVktCS094YkpHSU9CaUdyVTRmYWxvdmtuNTU5VkR0aEhYU3MwbjdndXcwRlIxVjkzbnhKaHM5VFZ1eDdoOWFYRE5sYVZOQnA4VnkwMUZaT0JsdktSanluU3ExdlcrVkoxUmN1THV0c3dKMWFrekhWN3FIaTlPaGxsNEtLcUJjSEtpMWJkMGNoaVpTZ3cwOWliZzhzYit0U1p1TTNpMTBqaXlzZWw5ZEcxZktIdlR0d1VzNys0S1NsMk8rSk9vdm40UUM0WXdpV292c3FCeUVxUzRNekNNd09TSlRvVGRINTh2TWlmSWl0Vy9Fb0k0TDZSNUwxM2Zsb1p6LzFHa2d4WFROK1JUTmQyeXZDVVllaWhsWjV0eU9LTnhVQlo3R0RKUU5kejkvUzV4VEs0WWJxSW4zMTE0NUtCd1ZMY0N4ajVSZUNkZE02aDJXT2hJdjA3dU5xSjBrYkxXM0RvcVYrcU11TmFZSXczV3NEK2V2VHkrdlQ4N09yWVk3QjJrS2RGbHdJL3JXM09KWGJFdklzdkhJS21GNS9RMXcxVWFrdEZ0b3hTQU9HeTVzVStsRjRsRlpSQjQ3L1cvREd4amRub0JvT3pzN0laNGFvY0hOZFZ1TzA4cXRib3dveXRsZkpFWDVmMmNkVXM0LzVRQUEiCiAgICB9CiAgfSwKICAibmF0aXZlX2V4ZWN1dGlvbiI6IGZhbHNlLAogICJjYXNlX2V2aWRlbmNlIjogewogICAgImFydGlmYWN0LWNvbXBhcmlzb24uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJhMWM1ZDllMjQ5ZGMwMDYwMDQ0OTk5ODM2MGZhZjZlOGRhMDIwNmI1NjhjNzZkMTU1NjAyYzQ2NDVmYTVmY2U0IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDI2OTcsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBOFZXU2EvYlJneSs1MWNJUHNmMjdFdHlUUXNVS0lvZUN2UlFCQUpuaHVNSWJ5eTVHdGt2VHBEL1hzcmJjNElzVFhxb0FjTVdoeUkvOHVNeTc1ODF6U0pBeGJiYndnYmJPUFM1MjdSZFdyeG9GdlVOQ0cxZVpLa1NDaTZ0anlwcmhzQ2s0UkY0Y3NLYjZOQ0s3SjFYM2tNU3pqRnVndU9DMGJNRlZOYjZ4ZlBaU1lRK2RRa21iTXNRb1h6Rm54RWlZSXdTUS9JMkJtT0NRUnVseVZLSDdDVUhtekFtcjR3S1Jqdk51WkNSeCtpaTl5NVpIVDcxTitLbXE5TjRiRk8zd1RxUnAzNWZ5dk5iNUFXT09OWjJOMkxGOFlBekZIODY3Zkh4Y2tnaWNSSmh6aGluN2tCVzkvM1ViZThpUUhxbXdFaDFHdmQ0MGg3aDhYb2VqaFBXajdReWxIcFdJN2NkbE80ZFROM1F0LzB3NFp5TlgzRUQ4ZGpNRUJ0OHV5dGQ3S1p5Yks3S21CcmM3cWJqK21SblBZZlVKTXl3TDFOOTJkeWliMTROOFFISFpZVURObWNzemJEdHB0cmczL3Z1QUlVQU5RLzk4TmpmM2w0MVA3MkZPRFd4REpXOFhNUk5QNHpiRzhwbTZNdnhaWE5KUXBNN0xLazIrejYrZ1g2RGFYWG1vRURBVXR1QWVSam5tTjZUa01URHVGa05PK3dKemdSZFQvbGRuYXBoTmNlNnVyRjByUWViZFRReENCOTl0Z3lZTUNHalpGUjNYaXBoVlVyUmVHRzRzU1ptazVRMTJmR1VwS0F5VE56S0U1YXZ1UjN4MEZVS2F2WXBVUVh5UlNZUUFWdzBTaW9kdGRGVXlVRURWVmtNZ1J0M05WcUhTSFNzNHJBdnd6YVFxWUp6RURXU3A5bmVMNy85L0dyNTUrOUx4cGhmL3NIVWVyY2ZkNVRYNVhEQWtZcHJlZUJmTUZXSC9SaHh0UnVJK2VQcW5JdlpvazgyOG9DS09vTjduN2pDekFBUWtzNU9lODJ6MG9FUlNsSnpqSUhOQ2IwUTlMYlVjeXVKQlhuN2NFOFA1QW5ISDJmSFNPcE54VVIwZ2RvMEtnS1hPQkFkUXRKdnpwNXprN1FRaWp0cmxkQkJhYkNNVXlLWmN4SytpeDBmVkFoQ0U3ZmFlQWVvbFVTTERod1FDTzFGQ2p4cmwrTVBzcVBYNzBvWGxrNHp6NWZqTjRpWmdlTGI2WTZacUxWQ0k4QXBvSm5KWWdDdWt6SWVsRGFPS3BORnhieVFxQjBMekNITktxTlJDTXRFb0lGcDAvOVdDTG5yYVNKZmVyZk5YY0g2VkErVWtUWHNIdFlwckx1K1RsREthVVNlVCtjWmV1M3V2eTZTazhHQ2wyam1qeExzNmVIemZ4ZEdPb2tnSFROQ0VhV0pSajBHUkJjRHRYcHdHTUZJY0FqYUcwcXhwVDBnYkRKVVo4RTdHdnRzY1RIMSttcHpjYTNyLzRZcmE4K3NFZHdieXhrS0hSblNHQklKbUZFaVFuS2dFekZObWZkRUxNeXNneUcrVmVLa3kvZ04xK24zdzRYaWZSM1hjMkxwKzQ0SVh2R1ZYSW52emFxWDMwUVBIRVZrTXNXRUtRQzFERFBBR01IT3dWaGd5QUtuVlNxOU04NHdqQ3pxaUliV3JhTmRyMURiSDhycXY4QkYrOTBGbjNKVUdvUE5JS2l6T2NzWmlHYWhyYlBTZVpaUXkrQllSazlUWEZ0cGcvTE0yS2l6K0NTcnQwcE8zVWo3ZWFCbHY4VUphQUVDTGVEdERzWlR6ZDRXODVNYU5Way90Zk5vbzNQSjVXZVBiOXYwc3pvM1R3bkxCRE9KWnl3MUROdDJCL0hoZk5HNTg2UFVseFR1UGQxcnpldjJ5ZjY1aHVaWmRVZkU0bFJEeTVIZHFMaEtMalg0K3FuZjZiTFFWdkoxQWxSbzJsTFRrK04rTS9jOS8wVG42U1pGdlYrUjlsWTNIZTlmWU9lRWhMYjJzS3R2aHFtdHNNWDdmUGR3dWpNOUR1TkRHU0JkUjgzMUZ2VHN3N04vQUZoa2F1ZUpDZ0FBIgogICAgfSwKICAgICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIjogewogICAgICAic2hhMjU2IjogIjQ4N2Y4MzRjYzg2ZGNiYzdhMDRjMjM5MmJkZTA3MmVjYWY4N2RjMTE2YjRiYWExNmMzNWViOWM1OTlhZDVjOTUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogODI2OCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMVpXMVBiT0JSKzUxY3dmc2JFTWVUR3ZpekRyY3hDbWdIYW5aMGRwcVBJeDRsQXRyeVNISnAyK08rVjVJVDRJdHNwdld3ZnlndFlPanFYNzF3bFB1L3M3am9vSWUrQkM4Smk1MGgvSmFLejZEcDdldXVSeElGZVBJV0VzbVVFc2N6V0k1QW9RQktwdmMvcVd6T0pZeWFSVkV6RXk2SmU1ak9HZzMzOUsrSHNZWit3anVRSUs3NHpseGpXSkE0Wmp5QndBOEJFSzNGa05OaElQS3BRZENvclJpc2pzTEsxajFsS1dUVGRGd3dUUkRzb2lJaklHY3ZaQW9JL2RpL0g1NmZ1M3hQWDg3ekJMazZsV3VXT1lmcWM4WFppRklGVllTZEhJQktFbTZuU3pHelVHdzZoNnlGMzVBVytlemdjSHJpalFRL2NmaEFNcDhNUU1CcjVXcjZSN29nRThBWnJwZk9NZ3hDbmdBSktZcmdGek9KQTQ5NzN2SlVZcnZBakdPbkY3c3ZTd21qeWhnakorUEtLUkVUcTdmVVJBUlN3MnNuN0wwSVN6Ni9RRkdqZXJTWm9rdjNIZEFvOEJnbEMrN1VlbjlXcDV3S2NRc1dCaE5reUwwMHVFOFBpQmpBSHRWdDBnSVFvb1hvMXIxODVFQnVDOFFmRlIwNUZJNEZXMGJMaWhWbVVzRmluMUZIbUczaHk5cHFQdEVLOEJqbW5VVEYyTXNaSy9ZaWxzYndGdmlBWWpqSFdYM2ZzRWJUVklhSUNjZ2FwNEpKSWhSblhSdjJiMHpCdm9LS0RlRkVpcUJJVk1rbGordUd2czM5T2ppZG5IeTV2YjkrZDNSUVFXSkV2RUUwTi9WektSQngxT28rNDVEU25kT2g1N3l1Vk9Iazd2anUrSEovZDZML09MeThhMVZDZWkwTXlTN21Kc0E1WDBKRUk5aDlFM2c5RmIyUS85MFd1RG9uUXpIQlUzcHpCQXl1SDR1cXpXdTcrRkhQazkvcEhZVTlWa2ZCdzFKOTJRNzgvQ0x3QkR2QW83UG5lRVBxaEgvcUgzWEJ3T0IwY2pMQi9NUElQcDk3QndQTVZsKzRCNnFrbHg2YlFKS1Ywd2xUeFdCcDR3akdURTFWdDFyVS9SMDdKQW1KVmh5YWNUYUVVOElZZ1JJU21ITzdtNnZ5Y1VWMzREc3JJR3E5ZWdMU2MxNlVPeWJuQmZBNkl5dmtubTJNU3h1VTZQR3o3QXM4aDgvV2J1N3RKYTZ3NENYRENnazFSWFJmSVBNc1VZMlY0M3JCdWhVaEhCVXZsaHBHLzB5QzR0YjhVN0JYYlpkcEw2azR5akliZTBOdXJ6NFU2QkZVUmxBd3pxbW51VGlhdlNUZUxKdDBHVFo0WWY2UU1CYS9ScGpIblZGOEp5TytnL1Y1QnExaXhsQ3UyTmlTcG5qQ0VIU09jcE5xNG51ZEZOdk1qaU5TSW9pbFVuYnNtN2ZaeitDOEYwU2F0UlZiLzBDS3EwWDRCT09WRUxrOVVlTU5IV3p3NGlGTDJOT0ZrUVNqTTRFeGdSRTNqcUhiYXRiSW9RVk5DaVNSUVkwN0FXV0lwQUdiditPcktxYXpmYjRFZkN0N0dkSG5EbUR4WG1vcWxVUE9XRWlKNUNzMFFTTVJsbW54TlBuWDkzd2xWZzZZRUhwSFlCTWkxNHEzNzhkcjRBQmFkM0xaTDJjeHBQLzNTeWJWWHkvUUxSdE1JcnZYMHQyVkhNWFBqUmlVOWVqZVVjYlAvaW01UmxLSW1yRTViVnl5SVhZMWszeTVaUmttVEhMMzl6VElLMDJTVHRGYkNkUTdic3ZZMW1pMFFOOWdMZlIyVG91cURUcEpGVjVQU3F2eXBtOUl2b1MxS0F5S2JsSzBsK1BtNmJpNStUUXB2cUZ5VWtKK2grWG93Y3puTWlMckROenAvSytLZmorMXFWckNINVZwM1FhVFVyMVNOeEMyNjc5VDE0TTFPYmo1MWdsaHN5dlVKVGJYVWM4SkZQaVQxeEtVYjdvYndtRDZoWlQ1S1RLc0xVcFYyNDNVWmhoQ2xWTG92R3dYcXhoSEdDY1VGWjJsaU9xRG5GZnJiZXU5a2p1SjhwM2tiNnluaW1nanplbFI4MUZDZU9XN2dhTGJIekRCWWdWcmRmeWVBVzA4clUvU3JpaHBGUXQzc3lyUEU1bjBwNncrbkdTeU8xVEhQQllqeTd5VFc5NW9TelJyNUtsMnVSVjl3aEdGU21qTU9lem5pckQrM3ZMc1VtbTM1cnFnZmRsVWN4Zks5WVhWQ0VZbHNVeHJXRytPNks2aGJiZVQ1NEM0a2FmbFZLRXJrOHBSd20xQWxncVJhSGVjNm04R3JJeGI1Qk91SFNxZGJ1UW5VM2FFdEE4QXZwMk5wZUdqU0wrdjgxeWl4S2JoSzdtc1dhTGIrcURwYjE3NHN1Q3VjM0Q3Mi9lNXdNQXk4WG5jNzdZdkR5SloyTkE0RitsNy9BRmhDc0lXVncySFZEUzhYMGVxOTZMUHRwaVNzcjU4MjB0MXNOSUE0ZTlzUEtYeDBVU3JubHBhUXhkUEhoR1RJYlBMNjRPVnR2dlo2STQwS0Zwcm5uYmFWKzFmbFp0UGM0MlQ5ODNXK0lPcnUrQldlZUlUbHhuNGJTRzBRVmVDb1JvZXhwcjdBWlJCOEU0cU53OWl2SGQyMmdQMis4YnEzbmRaTmxhNDF0dXI1RnVNTW8zM01aVTN5Rml4Y1VkWVFQbHZYNzJ0UXk0ZUp5OVY4NDlaei8xRUovOE1hU1hYUzM2cUxOQjdiSnVmYXB2VC9vWXBocWhxRm1yVXp3WTNWckVqNmlxckdFcDJ6aU5hK0piYVZ2U3ArOVhHMVU0NjkxVDkwOVgrcGQ1NTN2Z0NEQjhiblRDQUFBQT09IgogICAgfSwKICAgICJjYW5kaWRhdGUtcnVudGltZS5qc29uIjogewogICAgICAic2hhMjU2IjogImQ1OGU2MGJkYzY5NDU4ZmU0MmFmODI0OGUwMmFjZDkyNGIzYjYwNWM4Mjg4NzczNTJhN2Q5YTM5NTNlOTAxMjQiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNTI5MSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E2MVl5NDdjeUJHOCt5c0VuZDJOZWo5OHNxK0dBUnRZQXo0U1dWbFpFajM5V3JKYjJ0SEMvKzRvc3RuVHM2dGQrR0JCQWtaRk1pb3JIeEZSOC9QSDIxZy8vdW1EVmtycFAzNzQrT25kL3k3bnc4aXZ3L3laakE5WS81aHJaRjNFY1FrNjU2cWRORVVrVkgxTFBudmRuQytLdWVDMXBCVEZWaVViZzYrdEQ2RUU4L0VOOUhpdTBpSFZPVGozdEw3R283QkFsOHZReG9PODdmL3p4MkVZVCtOMUdQYVgxK1hqMXFTSWNxbVFUMVlpdHJBdEtFbk51Wnk5cXV4YmRaa2FpN0U1MmFRYmFXZEZKRmtuT3ZkOWgrRkk0K2tCYVF2ZUNMR1JxUzQyYnFwVVpZMmtrRjFXem5rVm82ZmFZckFVSkxRc0xxWEViRm1zMUd6S3h6WHk2ZnlGRGdNZlJqbGQ3OGcrc0ZHNlZySStjWEZGbXRha2ZjVit1cFNRZkRCY2tUQ3hzVGhLU1pXbWtUNGZTWkpCeHQ4aGY3NWVMM2ZjMm9nWUI1T2FGS21RaUdLaXhDbVdwR3JKdVNEQVNLbXhqU0dLRk00MW1LQXBKK0JidXlTZmJuWGM0bFFCSVFaOFlKM1hpS1J3SkljMVUxc0kxV2VidlhHc293bytsUlNSbDF3TXVVaTZhTVhWZGp5bTAvazBNaDNHYjdJZFg4ZFNPSlNrbVpQTndZYVNZd3BXU3BWV0xjSzIwVmV0bXN2YW82eTVOS01US3BHelFicjlBbnMrWFZFc21UYk01bFExMW1nUjI3d0owUnFibE1hZklORnBOSVJCYXFLWXBIVnVhT3RXbUZISFdveEsrTGxqMW5HK25PZnhPcDVQRzJxdFZXYzJ6cm1XSkhBdVJlRWI1WlR6M0xReGtaQWE3d1JqMGxRc2FMbUluWDFwU2FYY1VrZVZMMk9WRTIrSDF5RUxVa2ZzclRSdkhZVmFrdlVGWjBZaGpJNlIwY3NGZ0VVNW95emF6RGdqUnZ1TWdobmRJWHZKaCt0RUo4UTdiY1dTU2xrcGxESWhYZUpSaHBvMFVoZElBRlYxWldxWlVIK3F0ayt0VjdhcW9JcUVFS3pOdEFEZnl2QjFHcTlTaUYvdXVEbVZ6RVJKWlhRdG8waEp1S0Zic0JrcFlzbko0U2d4SUkxZXVWWlZvdUR3by9iQjYweExFNHdvMXN1V0FZcldvdW54UWNtQ21JdmhaTkJMU2xNZnlaUUkvYTRxOG9GQ0dhMHNEbFM1OXpVVEVwTGVBSWR0Q0xaeUdSemVCb3kxWTgraCtZQk1OTjFxNWhpUkR6STZnSjlhU2lpZFpJdDZnUUdzTUdGMk9UNkZPbFE1akY5a2VyMGp1eGkxTnlBMGRLdnhGWit5UlVjb2NKdG5XNk4yNUgyT3ZvK25Ka1RMeUhuRFNTdjFuK29UTW5KOEI4V0hWQ3ZvUXNlc3dTRUozVjFVZENwSWN6VjZkQ2pZakV4TWpRcjRnb3JGUEt1QU9SVDhlMDdFTE5PWDhkRmpHWGsxeVZNMG5qR1owVWN0aGtKbUtkNWoxZ1BHajhrSjI2eURpb1J6R1RTMXoxV1FFNzBBSDhZbS9NcUhEVk1NTW9jNU4wazhXTXFrbExsaUlxaUpZb21BYzFodTFtdnZyWExNc1dJMUJYWU9MOHQ3eklIUHh5T2Q2bndIajZCc0JzZlVHcVZaVzFseHE5R3dSbWNLSWZHcGdyMUJ0RTBJM1JGU05SSE40UVBsb2hEU2UvQm5SblFsZTJkMDlRNWQzcFFEejZyaW1nTWJaRmJhdW14UkpvcFJHV09wT0o4aU9OZnJ2b1lqdkFlZU1Ndnk5UTVkUWcwWjA4UG9NaXVtT1kyUjBnb25nU0JxU0NDSW9nVkdPVWxwbEJYbHhVeUNieE9EVkUxK0QvMitnS2F6djBuS1FGY0RFaTZJcHJoVUk5cS82MDlrWUFXTnFhMlUwRGl0R1pNc1pSelhvK3pxUGZadDNMcllKVUhGTTJyT0xrVkJHTlZWY0VPMGl0QU5FRVlJWiszTUJtNnNyVFVVMFJMK0ZFaVBXdWJqS01mekhTN2txRHppc1dpbFVBWGxjcGFNNnlXajVrWDdIbmluY3Zib0xXb2hhd2lEQ3g3aWs0cGZrbnNlSzI5d3hUaU1TL1lXQW9LVGE2UkpveXRpUk5WUk1TUlRaNUJhVFpoa0hiZ0xEUnBqd2NWZi8yWWR0akg0ZjNpVVNXWUlOejJMZ3NPWm1DdFlHNFBKVHVQb1J2V0pxa1ZFZ2ZZTEFLWGdQd1JCN29xR2RuSWV2WXdaOW1xRlBYK1JFNzNKUWhWbElJbVlUWU1wSzVRUmNvME9ZNEJtcjRwOGpTM3BMa0hpVElUTXRBVEtBblVhWktxbHBUU1Q4SGw2ekJUWUJKWFdYcWNNRmtEaVE5TE9rVlV4VmVWalFLNXRGK3lNM0tFZFVCVURna0QvaGtZSi9MNGkvbmlUK2ZwUVdhaSthSUs0a1crb2xrUEp4VGtGK2tNOVUwOEVlRDNxNGlIVE1CZUdRQ29KNXhkd21MV1VWc3luSWFvT0pVUVZPZ3NIVHpsSGVJR0NXSVM3VXdFbit5SnBUVVJYWHc4L0FFT2dlc2doSlZrQWI2ZnJlSHlZQyt1ekExNUZCQjYrQWJ3Q3U1TmpEZzB5QWhwSkh2NUhaY2lncXVKcWNLZ1FTSlVyT05EeTBrWHo5YWt5d1NCRkpRWm9JaGpUUU45QmROSEFRelI0VEN1QWhwUERHSUdSY2pRMVF3bllRWUJoQWdQYzRBcDRuaDdrakRHQlBTckNjR1JvNUl3cXFBZ2NBa05yTmlCODVXdHpoQm1FMEpobUk0SnMyaUlQME0zRkFEd211aldGZkZlT2FQT3V2Q1YxNVV4ZGlLUHFyUWM2cUVnOG9iaVlkc1dRcU9DWXdKd1FiVjVJNkt0c2dsUVc4VVkxU0luVFNRaXVFQVVPc0JZRktYRG9IQnczd2tlQ0t4dEVIaHpkS2tnVXpSclJsd3ZhZVhvNW5LbHVrRkFBS2EweldOTEpvR2xLZ1pGcnRkVFFsTUFKZXFBR2NHWEdVVUFVc0dvYWdscHo3MXJJeG44V3Ivc3lYT0JJNkpQTWkva0grUFh6K2JSRDZhdGM1b1V5bFFud1pucVBDNHRhMlpVT0Z6akVYYUZaRHZSNnZsMFhWNytQZTdPYjlIZGYyRlc2MG0rODlTS3Y2MGI3c0p2VTA0TkpEZ0tFOVRQajlucDdmSG5aWGMvbnc3dytVWS92eW0xK0xlZWZGamU0dDNHdmRwUFZUdzkyWlR6Tm4zLzltR25ITWwzSEJqdDlsYmRUQjcxdCtZczNkZ1g1T2NoM1h2eFV5M0hkd0d4UjRYeTM2M2lZZDRleHpPdXpzTGU3YWJrVnZFekY3K0M1Mi9vQUlabkg4dHY3eGp5U2hrV2MvNWNueDJyNVp1NFkrN1Nid24wVmZtQ1FhVnFmdUxoM2J4L3c5SHE1bnUwSzVmdEgyNVBXeG0zMWFWczRvc01qeXUzVkU5K21XZWF2eTBEdnczQlo4dUgxVTJDbitiQ1dWL1VLbXZ2cWhVNXkrTDNQNXZud3ZkaXU0M1RoZXduMy9pMjZaZjBways4ZTN0WXJMMkp3cHFkK1c0Y1J2WjZYQ3huZU4vZmdqcmY1ZnM2bEl4OXJ1NldLdjN4eVQ4QU9YSDRjVCsyOE5QMXZIV3VDUmg3UTJvdU1ZTXN0bEpsN05oNlI1MjM1eHdPdURJOCt3SkhzbzRCSXovM3UrK3Qrdm43YnhxM3Z6L2N2ZnZyMlFFSkcrOTdMOGpjc2Joc3YxZDZJQVlSenFFKy9tY0I5TmtBQ1lFVmNEaVlXaWhvS2lhc0ZGaEpJMFFoa0tzRG13bWU3MURXdndqNDRiWXBFcFl6Y1IzZm84Lzc4QzRmN3RGZjVJb2MvSDhiNU91L1hKV1RxOXRQK1BIM2E0VElIT1hOcVA4MjB2OXpLbmU2VmdUbkFsWnVhZGpuQml1WUNrMWtMZEZaREpsTG8wVlZUb2RpNFdVcUFQd2Y1TnR5eVljK2VpT2IzdHNhVlZ6TWs1WGxyamVzUXJnTGRFVUpaREE2Q0t4OWswRnJqb0pFTnJvQmhLelJFTEtMaUVWWXVXRFlsQ29DVTR2OXhhOFRyUlh4KzN0ckE3enJZRHlpcWdoa0FuTThCTjFFRUE2K0p1NVRHdFF6WjFoRTZBdHNJbjRicktlNkZNUHE0SHJhbHVpdko0eXAya1ZPL1FvOTM5dS85T3gybElpb2VaeGl6ZFRRd3VUM2lmN3orOVYvL1hLZEkrLzFLbkF1RmZKcm84bm4xQ0tvUCtmTGt6aUY0ZDEyNHZQS0ZNQ25UbmJvV1NhUHhDaHY0NEhHelJOY2Jjcmg3andFVHVnV3lOT2pXc2YyaWMrbS91ZnJlQzNqKzdhbHhoUmszNHRwZ2VhWDBYenRscUwxcS9kb2JERlF5MmdTWkZJOGtxUVlmRDI4VSt5K0lNaXhBdHpycnIwV08zYkgycmJBbHczYk1VTTRsZE5mNWdRNXI2b1kxZW1tM21SYXlzSTgwRGYvK2VoMjJJdy96OGZ6U2VlQTYzYVRiZFpSaVhubm43L2p4aHgvKzltRWh2Zy9HZi9qTDdkT0hQc2dMM2NpMUc0R0JtSUVpbmRVYU51b1FmZVk3K1F3ZDY5MlRib3JIS3ROd25nYSt3VE1kOFhOL2ZiZzlRZnpuRC84RmUvSHo3cXNVQUFBPSIKICAgIH0sCiAgICAiY2hhbmdlX2d1YXJkLnB5IjogewogICAgICAic2hhMjU2IjogImIzZWUyYjg5ZGUxNGUyMDRlZmVkZDAxNmQzOTAwYjZlMzFmY2M5ZjBlYTBmMzEyNWQzYTQ3OTRkOTM4Y2EyMDEiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMzE1MywKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E2VlgzMC9qT0JCKzcxL2g0eVZCS3FWTmY4SUo2WFpoVjlxSFJhczdqaGVFS3NlZXRBYkh0bXdIVWEzNDMyK2NPRzFwQzhmZDlpV09NeDUvTTkvTVovZm82T2hQb1B4RUs3a2k4RXlaSjFkZ3BGNlZvRHloaWhQS1MrR2MwSXJrdWxLY1dnSHVkNkkwS1N0UGZaaW5sVjlxSy95cWQzUjAxQkdsMGRZVHBzMnFIUytwVzBxUnQ2OFBUcXRPNS9PbnY3NlFDNUlVMmk3Z1FmZVlycVF1ODU3VFRGQjVHbDlQaFVLREV2Z0pCeVlDakQvY2ttYmp5ZmwwTW1URHlhaWZzVmtPVThaR2JKRHpBWjBNSnRrUW4wVnhOaGhNK0RqTFJvUFpkRHJLeHZsb1RLZjl3WXl4L213MnBFbm44dFAxMWJlclR6ZS9CS01ZajJlelluUTJ5UWRGTnBueS9wUnhkbGFNcy80TUprVlc0UGJGZEpSUGgyY3NHNTVsbzd3L25QWXo5RElZMGpGT0paMU9oME5CT0JoUUhCUmJ6WTNWRDhCQ2FsT21WU0VXSlRWZFlwN1k4WG1INEU4VVpQT2h0d0NmSm85QzhlU1kvSWFCWE5aZnZsT1RFRzNKanAwb0EydTVCRFFXRGxuMDVNWldVTHR0Zjl1cjdwSVNQT1hVMCtUK0xsRzBCR2NvZytTKzNtb3ZLY2wvY1BTV2p4TmJLUzlLT0ptd0xFUHFacncvSHV3NWRoak5UbXkxOHk3NStYSmNKK0puRWgzMVFyMGxMMjlDYTFiblFsRzd1Z28ram1PZXc4OVM0WURjVWxuQkYydTFUWk5Ld2JOQmVvQ1RkVFpKM0NvNkpRS0o5TmdReWZHYU1LUnZqNm9mWUoxd0htMXZ0YXhLdUpSVWxIdWg0c3BmcGVHZ2l6Y0pxSTBPdUdqd08rejZ5aldKYm1ZTTlqZkVrRDRIamRoYkhPcHM0d0N6dDczOHFZNzlPaUQ2Y09acktTSS9iaThKcTV6WHZNMTB6UDhGT2RSRDJ5WTlvMDBzbWUzcHU0UlJwWlZnVk03RHgzblQ1WmlxaTFiRmVzMVVHcXFxeDZ2U3VIU05lYXZjbTB4M2lVUEZtei9DeWwyRVJzTjNNTlJTcjYyN1NKTXU1aUU1eDdCNzJQaWFRNHFqSlR4enNRRG4wd2FZQlY5WmhlVzhkcDZjeDQxd01XWVZYN2VpRFRMUnpNOGJYczViVWw2aTByQWxzTWY1V205UXpuZGtKb0NrRXZoR2JqNGtUb0gvWnVGN0pPNTBDaFpIWUxGdG1OTklKNEtrYWdIWUtCSDAxclpQd1Z2RVZvK1JtM0RhOURpQUNZTm9zVEZveUY0WDdyVlc4U3RXUGtGdWlGQUVrWUhUbFdWd0c3b1Ntd2l6dUFBRnRqN2t3aHV6VUk5dkVEODZLMDJZTEttaUNQU3JBTWxkc2xXLzljN2JYVmVqd04zZUJQQlk1UmlpN0lXblZlREI5WVErbGRUNUUycU1GTmlqVGRhcURTYStQcXgzbGxsNGFyVGdYVWgxQTFLRi9WbDdiTnY2QU5KWWhyV0xWNFhFS210eCt6USs5NHRudTJJYW13K1dTbU5CcEhnQzh2ZTNxNDFveC9qM2lxUUJGQzRzSGtVaWJRYzdrTllpc2xzMjBhcVZBMDhGc3UvUXJGMXgxMmdYNnFlSDBranFJWXpidWMyUzVMNk5YVUxkSm5HK2puc1E0NGh6ZC8xL2tlUGtnTDBvc2VhYUJlRWE5VkhSUkRtUTZHVGpiZmVnZW1PYkM3SytLaDBndFUxekhWMjcyWHVRTmpmS1NPQU9yVG1zTktxN1h3S3FKeDZ1TlF4aWhGb1Q3UzFWTHR3bDU5aTBsZlFwUEFzL0R3cmFKYnJ5cHZKdCtXM2RPTU83dDZ1ZGRzRGdhaVdYbW5LWHhzV3hUaGdZVDlJTjlDNjVXWmxtdUgxUXRRSk5wWnpYSmVqbWhqcUh5dnVWU29lUVVGcG91SU9jQjNweFY4RTNFWkFtZ25nL3djeXVRd25wN0xlbko1YUNRczFSREJwMTZ4SXVHRFlTZm00a3J1bmtIUVN2TG5uL0U3RmQvejB3RmdvcEZzdUF1YWdjOEFqNmxUVDhBMU1KRXdsUkRBQUEiCiAgICB9LAogICAgImNoZWNrX2luc3RhbGxlZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJhMzRhNTFiZTljOWYyYjE2YTA2YTg4MTczYjVjNmM0OTJjOTk1N2ZlMDIxY2Y0MTJhODZhMTczNzczMDY0MGFkIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE5MTIsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNFZWUzIvak5oQysrMWVvSjBwZVdwc04ycURRZ29kdDBCN1RvdlV0TUFSYUdzVmNTeVJMVWs3Y3dQOTlaNmlIdFVIYVhnUStoc09aNzBHcHpob1hrc3JZTS8vcWplWkJkYkJxbk9tU1dnYWdXYUtHbUdrZVEvNHhlZ3hUdWpHdWc3cXNvVkplR1oxYjA2cnFQQjM3STg3dVd3VTY4UHZmSDdaL2ZybmZjdC92T3hVQ0hWTlA0TVBLS2kyWVA4amJuKzRLOW9IdDJmcnV4NVdEdjhVclV6VXJtT3JrRTJ4czc2enhzR25VUytnZE1NNENhS2tEQmd5RHdyWXlVRUc0aFhkOGhRcjN4aFQrck1NQlc2am8yTmtDTFlFN3Flby84MXc0YytCTjd6QnN5dFJCWjRwRkRVTXlXcVZyeno1QVJ5V1B5R3dtWlA3bkdsa0ZDaXJ3dmllRk9SekdWMFlIZUtFZUxwZFYxVXJ2azYyVDJoTzB4U3Fwb1VrUXBCNFJURDIwRFY5TDkrVDVlbjE4cGtHR0lZazJ6NElveSttVFpwOFRIMlJuUlN1N2ZTMlRVRXk4NWtRbkRlSitHbWFlOHo1VVdhNjhvVUpsU0ROTXVoZXY2eldwSnE4QkxBM1MxMk9CcFR3ZWR3bkdKVWNVUnBKTy9WN0ptTnRjd0hwdE03dGt0QjRiR3BWQkxNMnlBSkpGVERhcTUyM3NXMTJsR0pCZHNHRFZKQVJRUGlyb0I4RysvUExYcnc5YlZ1d2YyYmpJZG1JWmc2ZHE4Vlk3U3pLcGFvZnRsQ2R3Y2FtWTlUMDNRYWNKRmtxejR3eWFKa3FTeWJZMXo1Z0RBYTBPV081Z21tc21kdnEwbEhCTU1jMTJTMG5HblhtS1czdWxhNldmc0RIT1d0VkVia201UjF3bjRZVVdFMnNUeWowZ1ViZzE4STB5Mlh4QzlPSEZLa3hYeXJEWStYQjNrNkZDclRNbkluU3d3bGl5bGRVUnZZbXByNDU0djV2dkQ4eWNvZlg1cUhsM0xyMlcxaC9NdS9SWEEvMXdrbTB2ZzNGMFp3c3ZHOW1IdzhmcjdSTkY1ZEQ2M0VWMklTVTR3RENkM043YzhIcUYyRmRITHg1M0t4THRTUHdnM1ZFZm5FV3B5bnFQWmVNUXlOVVZkQkJsM2VzakprWXhQS0JSK0creTljQnYrT09PdjE3SWZFSE1ia1huaFVsWllsWllKWmJ2WThvT0lWaGZmSnlheVpYR1hsRTZmTERyVW9oR3QyZkdSekRGRmZ3UmRCRXgveDVyUVZDSHFTSVIwTWxHVkhrRUlUcGxSVDc1RnhTeUFsOGZ3QmZkNUFaZkJOT0JFS09NUDV1YzlJNjZLYXZlT2VwazhlSmdWa0JjM2pzK3RqZi9PMWdpZFkwUk00UDBUMHFVVHdoZVJDdXlsVXRyUWRjcHlpVWRhOFU3ckZONExjWG5kZDlabjZKek5WTGZ0dWl1K1Bjb3grRHlKSjNDVjhtem9nV2REa216MlRnbFBYT29mK29NMERHMytHVFZKM3orVUp6R2xaMXN4eCtlZzZiM0ZQRXp2OUpTUmxxS3Jlc0JYU2FET3VHOWFCdFY0M3RlUklGY3NOcHZ2V2ltKzNnSEFBQT0iCiAgICB9LAogICAgImZyZXNoLXNjYW4tY29udHJhY3QuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJiMTM4MDZhN2UxNDY0NDU0ZTM4MTdlMWU2MmI1NmIwZmEwN2ZlMmZkZGJkOTRkN2ZkYzUzMGUyYzNkZDllM2QyIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDk3MzMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNzFhUzQvanhoRys3NjhRNXBDVHhlbjNZd01qUk9BWVNBNkdEd1o4Q0FLaG56UDBVcVJDVXJ1ck5memZVeTJLRXNXWjBYaDN5QUN6czJEcnE2cVBWZlZWTjZuNS9kMXFkVmRzelVPNGU3KzZpM1h6RUg2ck0xZnZ5M3ByczdaMmhTbnZUNWYzUlFXQWJmQnJIMXpSRm5XVnQ0K0djUEUrY3E1VVpGcFlISW1RSGtubm5ZNmNJQlZFSkpFd0hDV3prbXBIcUNiTUlpb1JBUytZR2c1TGQ5K2RhV3hjWGNYaVlWUDRST2prWHhCaWczTTBXSytsczBKWUVhU2pJbEp1bzZiWVNQRGxOUlBNQ3E0NHhvUTY3Snh5V2lzdnVlMzkreUpHOE51QzQzL0Q5ZXJzbmpLbG1MRTJhS0lFalM1b1NvT0hBTnFoZ0JnWEVDR2k0Slh3M0Rua28vVlJSKzhNSThJRjZvN3VSKzdnQXh1SUUwRWJod2loRW5QS09lRlV3aitGRVVKTUNVY3NBL2JPRXVJaWw5Z0tvN2pCeFB1SnV3QXh2VUhSUm1FNTg1VFJnQ0NoWEhnbEJlZlVHaTQ5WkZWNGlUWGNQclBVWUJlWWp3Z0xLc1RFSFVOYUdZOG9CVUlFN2xZVG80eDJIQ3R3cGdVaTNET0pzQXBJS29lZ29OSnI1N2xJaWNFeGhvbTdxQzBEQnd3VGd4eVNoaWtkbUlpV2V3dEYxeDU1cDVobndWRUFwYVFZcXpuRmtiR0F2STU0NGs0d3hUZzJ5SHNESmZHSUNZVURKWlpEK2FHcHVLZUdSV1M4WWxFcUdqUlBCU2JXQ1MwSWd1cE1TeUV3bzhoZ2pLa1dXakpxdFE1UUVFdFFSSVI2em1CUlUrdWlCczRheXF4VHpTQytkY3h3UFhIbm91TWFQRW5taFl3Q1djWXdkZ1JTN1h6Z3FVc2xKaUZBbzB2aFBOSU1HeUk1aG50QlJsaEVKdTRJNUZOanBhQUh0RE9heDZCdEFLcWNSNG1NQlZHSm9CZ3dwdFJ5QWliVVErNmlwVlp5RXd5ZHVNT1lLd3paZ3A2MVB0REFvUmdFdzAxUmdnaGtueExvRlNBS1hSNnhEQXBCLzBBcWlkS2FJZW1uallKQTBZd2dMR25TTXZ3R09VUHhJbFFIR2loWWhZaXhnbmtjNEM0anc5cEVqSzBoRkJHTGVEQjM0TzAvVDRYZDFIVVhrd1ovNzZOMWg5MXg5cFRtRUpwMjRQQkVxN09yZFhhOXpxN1kyVFU3dTJwbjErM3N5cDFkdTdPcmQzYjl6cXRnMEREOC9tT2s0N2JlTnk1c1NtTkRPZEl4SEIyeWVoY3FrSGxuaWdxMG5CM3htVFZ0eUh6eEVOcHV0S1ZMUVdFRFo0ZzRaV0V2ZDh4aDY3RVJXRUJ4b1pxUVdnd0NKcUFiSlNVakhOUm5VbytEcEpXaVpoZ1VMNFp0d3NmakdTWEZoRzYzRmtSQ0lUSW9LWEJRSkNRUUZBQWt1Q1llSk1OVnZPd2V4M1BQK1JqVWhES2ttMmhkM2MrcWYvNzA0dy9yWDM5ZXcyVFE2MThRdi85U0ZuYXRPTko0M2VBWHZQUjV5eExSOExuTCtqd2tiNDV6RmdSSndvbVVJV2NOQmowTGJXQ1dxU2c4Y3FCL0F2MmdrSVVERlJ4b0JBK0V3QW5LWWdLRnZ4MXZWNWVGTzR6Q2FaaVYyQVlHNXlpc3RjY3NnRENoSVQyUGltc09JdWNXT1djQnBoQXlNcWFPTy9ZdlR3Y3ZjbmZ1aDNwVS9oL050aWdQeWI4cGQxQ0hnZFJQWm50TUdjMEl5L0RGdHFnK2hxcXJtOE41d3AvbmZHbXFoL1h1dzBON2FlamRvWHVzcTdSNFdmdjU4SzlmZjdsY2tnenpiRFNZQVB0K2Q5Z1Y5N3ZEYjUrNi9QUngzOUhmZlZOQUYyTnhGZS9aY0FtVjl4KytLVmh6MkhYMVEyTjJqNGZMS2tjWmVqN3FDSjZmVUc4Si8rU29mL2tJWlNSRHoxQjQrblRRSTk5Q1kzZHdPOU8wb2JrczBXZURuNEU1ZldQSVQ2Ym9tdEMyVnhFejhrek1BWm4zZ0dlRDF1MGs1SlU2NERvN2NXajJsUSs3RVJCbXZrQWE0UXdoaklpK2ptOTJIKzU3VC9jVEIvbkU3bSttY1kvZlYzWDY3eSsrYUx1bS92Nml4VzhnM0YrdjAxU0hJMXU5NzhhSmtobTVETUNuWEovWTVvTkpUL096RWh2QmxxRzU5cVl6YitGNmRMQTQ0US9oTUc2Q1RLd2I5QnJIWkpQMzBLVm9uYmJBY2Y2UzB6OUI3bVNabnczbXA3ajdzTzdxdXB4STluYm1CcHQ4Z001T3krN2JnNjAvWHhad1JtV0cxZzE5dWVsT052a0Z1aFN0dFMycTl2RmJ5UFdXUzFKMFp1MUMweFd4Y0tZTDA1a284TTIybXhqbkk1dWxpYTR0ek9BeXZJbnZ5Y2VpdEIrODNZNHJUMjVLSmFIekUyaDJLakM2OWwxUnRtczRRTGRqVGlLajY0YTlTT3JLTGgvZzg5TnJMRituRnhkamF0RDA1R1ZpZzBYZUE1ZWhOTTBXSWJjM3M3TlJmc2JPVGd6Y1E4U3ZtTUc5d1hJREdQemJMK1NxY3BsYU4rSVdJVERJQjl3U2hGeTkzWVNtR1pOaU1tT3ZwT2xrbFovQmkxQTdQa0xRY1FGNXlzTnRacjFSUG1DWElIYjEySlVDM1d6MTNpQWZjRXNRS3FxdW5BeUVtMGxLK0g0Y0xKS2Z5dTNoeWFmOWRGa1VtZGpzampzSXg2OUpjTERPcDBhTFVHM0w4ZUVXcFFNaHVjbXVMZk1CdHdTaG5hbEMrWTJaNjIzL0wzbHIyL0lyaFprc0ZsVmxWelE3ZDNWK3pQZ3J1anlhNUFOeU1WSlBOdXcveVd6WXRwZWp0OThYZnR6L2pLUmp5MDFteVNRL0k1Y2c5UkZPbi9YNDlRNU5nL09tS284bStZQ2NuZFIyMzE3TjErT2o3Y3VFRWp3ZlVJdVFXUi9QbWw5SnFUZGFqdGhwY0srNzBHelR1N2ZqcTRwdm1HVFArbGwrcWpYQitQSnFSVUUvM1pURFlKSVB5TmxKdFM3TjlNbncwTGM0blN6eUFUZy9wZitXUlJjbUozNFlVZlQycVhGa2xwL1I4NU5yeTQwcmkxQjFYL1VtNFdLMjVHdUU3c3YxSzcvVXplNVd6bnFEZk1ETlR1anpsMGtaWVhkT2Zmd3lvNU5GUGdCbnA1Uyt1THJ1OXB1SDZ3VFBCOVNyWkM1L0FEQjgyYk1CdGRSVjRVeTV1WHdoaGFQbk5scmlwVVBNU0lxRklZb2FiNE5Ca2JPSTRNZHg0NndsV0ZtTUExd0pLVzBNU2pvbStwY0VkN3U5TFl2Mk1maE4zSmRsRTNaMTA0MkNrQmlGQ2xKd3E1M2dSQk9Cc2VkR0N3M2xOckRPQkpVWUlENUVGN3h4M0JNbkJXVUlhYmdNb3lET2RFVmRiYmFtS21Kb3gwR0VOY1JSaGkzVHdsZ1pwWTdhOGVncE5ScHVDVHNTbFU5ZlJDS3NETE1zQ09rWjNJOUpNT3Y2bC94MzU2OFovL0hadUc1VmJMZjd6dGd5ck02M3VFcVpMejZHVmVFaHIwVjNXSm5Lcjg1Wi91c3FGcFV2cW9kMkJSdFJ0N0poNVI2RCs1QU1xL0JwVlZlcjJJVDJjZlhEMzdPN2QzKzgreC9OSkcrY0JTWUFBQT09IgogICAgfSwKICAgICJmcmVzaC1zY2FuLXJlY2VpcHQtdGVtcGxhdGUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI5MmJiZjhhODkxYzdlZjc4ZGY0ODQzMDkwMTIxOWQ4ZDA3MDczY2JhNzQxMTJhMzA3YTZkOGJkZWM1MDllOGRkIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDU0OSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0EyMlJ3WTdjSUF5RzcvTVVLT2QySnhBZ3NLYytSTytSTVdaTFJjSXNrRkZYVmQrOUpMT3RWbFdQL1A3eDk5ditlV0ZzaUN1ODBQRE1ocERMQzMzUFQ1ajNsRmYzVkROR1NOZjM1elZ1M2JDUy8rd0pZNDE1KzFLL2dWRDZPU2hsVEpCV094NkVudjA0bzBjYmxCZ042U0NDa0R6TTBzMlRSVEZaSWQwNHphUG9YZmdFcWt2RHB5TUdsQllEWUZ0cTNndlNVdWgrVW81azFrbm5oUEpUeDFrRHBPUkVNeGt3TU9Ha3JQQ2RyRXpBUjZlS3NHMVVqby93dWtNbHZMWVM3MjkvOG1yaE9HbEZ4bWpyVURxSkdrQUdFRTV3WlZXMzRJd2k2SkVic042QzF4d2htSm1iR2JuVjlrRUplMG9McEZUcFRpVzJ0K1hBZG1Zck81MkdMUzkxdjkwSzFmY3gvbGJvUjJ3TFpuOXNmZXR0VGhIemVrdlV5Qy9RUHVyZUxTczE4TkRnSC9reHprZnh6RlRvbGt2N1QzWEw3Ynp6Vitva2FNUmlaVjFqZmVrN0pOYjM3V2xEWXJrdzZMbnpIZEp3K1hYNURWVU5iWEFsQWdBQSIKICAgIH0sCiAgICAiZnJlc2gtc2Nhbi1yZXBvcnQtZml4dHVyZS5qc29uIjogewogICAgICAic2hhMjU2IjogIjMwNjA3MDQzYTRjYTQ0ZTQyMDI0YjYzNjU5YWUxMDk5M2MxNGM3YTA0ZTdjNTY4NTI1NWNjYWZlNGQzZmI1NWMiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTE5NDQsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBOFZhMjI3alJoSjk5MWNNOUxCUElhZnY3QjRnV0FZWkJQQWlteDBraytSaHNURDZhbk5OaVZxU3lvd21tSC9mYWw1a1dWcHpzaGJwUFBoR1NlZlU2YW82WFUzNjk2dFhyMVkvMlR1LzFyLzR1aW1xemVyTksvSlZ2UHBOM1JaQjIvYjlmdXZoNHNwV20xWVhHMS9mRkd0OTYxZmRtLzd1VysxMHErRU52OFBmY09VNnZuajlObjZpdWRPRWl6ZUNFT090cGQ0NGxWa2poQkUrczFRRXlrMVFGT3ZNZWVzVUU4d0lMam5HaEZwc3JiUktTWmR4MHpFQjh0c2loT3UzRFNEL3M3dnc2c0JBbVpSTUcrTVZrWUlHNnhXbDNnR0hzc2dqeGdXUUJPU2RGSTViaTF3d0xxamdyR1pFV0UvdHdIQUVDQzhaVDZ6d1NsdEVDTTB3cDV3VFRqUDRraGdoeEtTd3hEQ1FZQTBoTnZBTUc2RWwxNWc0ZHdib2dkZHBGRXdRaGpOSEdmV0lNTXlGazVuZ25Cck5NMGNWRVM3RENsYUJHYXF4OWN3RmhBVVY0Z3lRSVNXMVE1UkNVQVEwSzZLbFZwWmpDWEJLSU1JZHl4Q1dIbVhTSW9ORDVwUjFYTVRsd1NINE04Q2dEQU1JaG9sR0ZtV2FTZVdaQ0lZN3czQlFEamtybVdQZVVuaFRYQnB0RktjNE1PYVJVd0dmQVFvbUdjY2FPYWNoT1E0eEliR254SENvaFF4Q2NWU3pnTFNUTEdTU2VzVmp0b214UWdtQ0lFL25TUkdZVWFReHhsUUpsVEZxbFBLUUdrTlFRSVE2enVDaW9zWUdCWEVyU0xtSzJZTUlqR1dhcXpOQUd5eFhnSlV4SjdJZ2tHRU1ZMHRnMGEzelBKWnRob24zSnFPWnNBNHBoalhKT0FZOVNBdUR5QmtnZ1pWVldFcW9DR1cxNHNFcjR5RmN6a09HdE9GY0NpOFpSRTJwNFFRK1FoMnNZVERVWkZ4N1RjOEFNZVlTdzZwQkZSdm5xZWVRRm9KQkdpV0lRQjRvZ2NxQllLSHVBODY4UkZCTnNLUkVLc1ZRNXM3TEJrbElHRUU0bzg2cUFOODVnY0FnZlJwQk9Ya2pFZEZHTUljOWFBME1LeDB3TnBwUVJBemlYcTg2dkg4TkhmbVBudzU5RDM5OXA5ZEZ1WStOcjhzdEdNVUQrUTk2M1ZrSVRRbExjWS94K2FzanYvaTIyb1RpOWhpc3JxbzJORWRYNEZvN09GR3A5K0JWQjNoNHhZRTEzQlR1MkJzVzhZZEZQR0lSbjFqRUt4YnhpMFU4WXhIZldNUTdGdkdQUlR4a2ZoL3B2R1Q0N2ZQQkxleXBHY0MxNzdYeDVXTTdnS3RWZlp0V1c3ODVqQ1pOMnMwbXFkR05UMTF4NjV2MmFCREpCSVd4Z3lGaXBZRUp4REtMamNOYVlBRlZBR21IdGNmZ0FBUWFUbVlaSXh4YVY4ZkdBRStRa3VySEsvRWtlZTEvSzRaSmFnVk5ZZ3owRndWK2FFTFBvYUZoamFGeElCU3VpSU51NHpLY0ZtNWxDMTJtdHRxVjFkb0FZT21qb01aV3ZRRmUvL0RkMitUWGR3bFlqRXJlSS83NlUxbVlSSEtrY0ZMalNheW0ydFhXcHpGby83Rk4rNVhweGp2T21SY2s5bDJnREZtak1kaUNVQnJzVVFiaGtBVWJJVkErRWhra3dUMjU0SjZRREJLS0NkVEpIMkhkVm1WaDkwZWtDa3dZRzg5Z0tzUktPY3c4ZERkVXN1TkJjc1hCTGJoQjFocDRtMFJJWnlHV2FWZjRQSTZSNUtHTVBsOGQvNHpmdTRKYS9laWJYZGsrYkF5SERlYmJVamZ4OHFwcWt1Mzk3Y04yc2hvSDN0TmQ3SjIyOTVEZng1dk1vM29jOTdsMHUyL3ZxazFTN3piT2I1dkhTL013WjYrZ0FRVlNDS2NJWVVST2pPYmErUTFNNElXdlQ4bytodkx6ajk5SEFBajhqZDdldis1RGZYM0NtNS9nLzFYWDl1N3JUUlYvL01VVlRWdFhYeDl2eVk5WDhxZ2xuNURac3lheDJXQkxybmJ0azBKcG1xWGtyRFNmb2ZDTU1oK2hlM0VmcGJnUmJCRnhTWGZPZVhtRkhlL1NNdS85ZnFKTVU1SFVhQzVsa1NydklSY1NNL2psUks0aXhZeVNCc0w4QUR5N3NPMTkwbFpWMlV4b1FqTmxhYVRLUjhpNXhaaGRzemZWeHllbDRKUm1LVXBxZW5rekRWVDVBK1JDWWhKVGJKcTdGNVRVRXk0b3pPckUrbmdMcUxDNjlWL1l3d1NlcFoxT09QTWo3SVhsSlFhMnpOTC9HU29INmlYRjNqcXpucWhOTW90eFJKSjhBSnRiQU93WnU3WW9td1RtM0daQ2lVaHBVck9McFR5aXkwZlkyVVhWaGlmeHNETWhDRnFiWEM1bkpNcDd3RVdFZkNFemhNd3pIaDI0OGdQbTNISUFIUWlYMzJsN25zVzJXWUEzbjhoVWJhVXlxY1VjTW9BbkgvRVdrR0dyOVkydjZ3a3BMRXZaVENrWnlQSUQ2QktDNnYyMnJlaEVpZkc0bHZQbzZibnlFWE1CT1NFVWsxSm1hZnllSngveEZwQlJiTnB5Mm9wblNVaWs2WTE0aVZ4czdLNXVmUFBoU1NFaUZUZmJidGJnZUM0YkcwbnpVL0FsQkRibHhFRVZ4ZU1YbVVWVFUrWWozZ0l5dG5yank1Zk5Vay81RWpscW12Smx6QzBTTGVsc2JWRnY3ZFNwTHVVemVWdkhsSStJUzBuNTByZzVzNTV4NkZ4TTFHNVh1QWszWUNRTzdyUG9pVXo1QVhFQktiL0JrYkI2VWd1Q05TUXpPVnZIbEkrSWMwdFo3NXFwWGJTNzhYZTVqTWlTajJoTFNFaTZBK0RMQ09tNUZwTXo3TTVKNit0MXNRbFZkMi81NVhhZS8wbS8rQzVVZSszSzQ4YzNwem9sMVA4czVqQXk1U1BpM0ZJYUd6ZnVhZHRXY3lnWmlQSVJjSFloL3ltTDFrL2ZLWUN0Z3M1emxqdGl5dytvczB0cXlodGJGaERjUzl6N2ZXQmI4TVp2KzJueVFWZnNXVHRIZm5xZWZNU2JXOGJIVDlPRkJqTmo3TmJMZFF4RStRZzR0NUQ0YkgreTkyYzVYa2VXZkVUN3Z5VmNIZjh2eHlEby9FbDdxVGUzVHp4ckh4NWN3NHZQZWQ3K2J2KzNYOTlQeklHWXA4OWNvZTErVzd6ZTd2LzlvYzBIbU9jOWJaaTZSUUxBRjRVWHdmTWU1SG5CZFhlSWJtdTl2ZHMvM1M0b25vVXZpZktJSlIvUW5oVnVuQ0hxdFhlSjg3Yi9QNXVuaDJZNHdGOFE4aGxUM2lNK0srenQzbTQxREVMMTFJM2xpNHAwd0k4M2xKOFg0Z2RkdExWdnBoOHlrd3RpSEFueUh1aVBlTWxWL08zejFYOEJtcnZPNGFndUFBQT0iCiAgICB9LAogICAgImluc3RhbGxlZC16bGliLXByb29mLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNmFmNjJmODZmNTBhYzE4NWZhYjk0MTYzYzI0YWM4MTUwZWFkNjllNjJmOGQ4MjViMGRjZTFlNzVhNWE1N2I2OCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0OTIsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMzJRVFc3Q01CQ0Y5NXdDWlYyUzhmaWZWZTlSVmRWNDdHbFRBa0drYkVEY3ZVNmdxNnExWkd0bTN2UFRaMTlYNjNYVDcrbTlOTnQxSStQcHZYeU9MWS9uWWR5bmRocTVwNkY3dEYxL3FJWjl5WnRjdUovNjhmQThmUkJhdHhWclF4QVRYVktDem1md25EbUtSUWpGQ1FvYUpkNGtyeU9qam1nU2FBOVlVNVFtVzBmTjA0eHhHZnIwZGlUZVBXaFVxMXZjbk5SZGxYNG9VeDFmYTFQYjZ1M291T3Z5akRWOTBUQ1VYTldYUlgzWWw0dnpNZ2cvNWUraUVSdkJPMVRSZVFVRkxVT0o0akVUT0lOTU9aRE5uQWlJWXJHQm9OYmtyQXNtcStvRjFTeEJyL2U4NWp5ZHVobXU3a3Y5d0haNXhkOWtVZjlEVnBoRGlsblkySks4RU1aa0ZJZ1FrMFByZzljaFFpNVdwd0JTb3ZMYWV1MlRpZUE4VzhFSFdUMXZxOXZxRzF6TEwvcnNBUUFBIgogICAgfSwKICAgICJuYXRpdmUtcHJlZmxpZ2h0LWZ1bGwuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIxMjA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxY1dYUGJPQkorOTY5dzhYVkRHYVI0ZWwvVzZ4eVQydmdveDVtcDNhMlVDZ1JCQ1RGRmNFQlFpU2JsLzc0QVNFazhJSW4yNXBpdFpSNWltMmcyR3QyTlBvQ3YrUFhrOU5TQWFUcERDNHdlaWxrT2k4STRQK1dzeEMva0VJMEt6Rlk0bmtFdUhoczJzRDNUQXFabDNZUHczQUhubGp0eEhSRDR6bDhBT0FmQVVDOWxrSk1WRml4aE5zZXhlQytCYVZIeHl4bmxHSEhCTUlZY1JyREFNNFpobTZiQWlHSGVmeDdqUEtYckpjNzRiSTR6ek1Rc05CTVV0cXVHSmYxYXZKV25CRUc1Q0t2bUJsTXhYU29sMm5FUXcxL0ZxRng4VG43RnJLaFlpYi95NG14bHFYV0l3UWVTU1JtTWw3c1g2NUVsNWxBdVljdElzc295eXBWVVJlT3hIR0J6aXVLSi9DRVU4R2xDNkJsbkVBbnVjNU9vQ1VpV1VMYkVzUmxqUktRdzUwcVMzYnpuUFlxejNwTmFOalZsYjNDQ2FKblNaVFFwS0NJd1BZUHhraFNOWlRNcXpQelgwN2ZYcjErYXY5MmFBQUQvRkpWY1BHVkd6Zlp4dzE5WWVJbTFZaHN0a2lLSDZCaGRXU2tBdWtHQUxRRE5FTVMyNlFUQjFBeDlGNXRlSEFkUmtHQUVRN3VTbzViQ0tIS01tdG9YSzVnelhCUXZoUitrSk1Qdk1hSlpMQzNoQWJDZHJ1c2Y5Y09Wa3VvWFVuREsxdS9Ja2tnUHNYYXZGVGdWYmt0WjI2NUx5TkhpSFl4dzJqYTRjcXQ4OGxCR21HV1k0MEphZkwvT3R1ODk5aFJkQ0QvaGVMNXV6OHZYdVdKMUozZUtHTzhiaU9ObG5zcVJ0cng5cHozb3VOL05rMXJDcWxsU25SYTFla1IwbWRPczJzUEtjdml6OGVMWVN3T1V2MU4vUzdhdW4xVVRpT1VzYVpueDl5STZFb1F2RUpKLzNkTUhuRFZqMXZZRjRZb2NDcWRrY29uL2JrbmJYckNneGRtcVI2UWpiTzFFcWUzWlAxNzk4L0xpOXRYczdmdjNIMTdkZGJSU3Y3Q0NhYW5lV0hDZUYrZG5adytvWTFDajk5cmppMmNJYzNsemZYL3g5dnJWbmZ6dDlkczNSOFFSZHMwU01pK3JzSDdHaERySkVrOCtGVzBiZFMxVi9mdlk1VzJRSlp3cnZzTGVjL3lKZHAyMi9yTWZSUDlXTEtEdGV1ZStOMFZUendFMkNpTHNJK1FnSzRvdDZGbWVQUlUva3lTMExDOTJiZHV4QXQ5M2JEZHlYT2dESzBBSWlPZ0ZEYjFJdDJXYTNsSVJndFpLVWNrMTViY2lhdTB5UzNOUGlKeVZpWWgyeTJpRWUxdERrU1NRcENYRDl3dkJZMEZUR1VxbmZUMHJXNy9CWE10RGhrN0lGOG9HQzVFcytlSVB2YWx5eXZqR2NmUVVoYWdpS2cvNDVmNytkcEFmR1RsbWhNYTdZTDBMdWszR0pVSkNFYzFsV2hveTZURzA1RHRtOXNrUkFRWmtzdGI2aStFN2M3dmxieXU5QlNBQUx3N3RtdjE2bFZVVFJUU1ZWUGVYdDgvZm9CcVpySU15ZmFic0lhV2lFSHVtWEVmM3FhemF5T2prMzlmSkJVTmFNc0Zjcjk5VTFqdkZQcjJodkpTTGRRRlk2aFd5eEV0Uk5LbjJ3UFd1eURDTk1QeDdpWXZqc3g2ZDAzTzBVeDdWaWVneVNrYjQrbEpzQ2Z4Rjd6V3lNNktmYnhsWmtSVFA4YXNDd1hUVGRmUnkvRVp3bU1PSXBJUVR2SGR4TWFPNU5wQ28wWXQzN3d6TnlNZUJlb1h4VFphdTd5amxyNFhVeGJvUXRXRGQwaDFYQ29lTWwvblQ5cUpsajV2eENadVJZN1lrbVhLakt6R0RyQWsyeW9qeDZxd3hiS1owYmd4NWYxdFBTSXYzMzFqUnRGemlLMW1oUGlGL3FmcDJKNXBzR3c2bUNrWHg3TXpVbmsxVWYyZkhNM0pyK3JwZy9GWVM4R1YrZUQ1SjhJM21hbFcraDJjZFFMcUpBUG85LzF3WlY1QXBxMVNITTBYZk9tZDU1WVdIeFJjQlZYU0JmeXE1WVJrVGZsanNBeVEvUytwZGUzdFk5QjJkQ1hQeUk5ZXdLUjFOaHVlazRPeUlhd3drLzFuNnJ1dVZmYzY3V1VWQk9KZW5la2ZJajY3aTVGRHViNDYyS21vanpvcGRNcmhNU3luQmE4S0t0dlBLZWxBbStoM3BSZm9acnR1ZXBGSnJYSXJ0ZXIwSjhEaUJaY3JON1VDSC9raEJaU1RGRzBiTFhHVmNBRHJaZERONnFRNk5kNUxkWkxLU3VTS0ZPbXZySHZRSW0xMGM1S29JcnFsaTBqalg3bEo4S0REYncwRXNTNTQ0aVpJb2tjbTFYOC9zVHVPcURQU3lVcE94MTJTUEhiVTFUNUQybkdsMXFEWVcwVkUyeW9NM0RDSjgyNmwySExkRlh0VUdBMDZsV21tKzN4dkxJM1RoYlJuL1ZURzhUQ0ZaNml0SUpJZXU5N1hkcHE2TWFHK0h6aGJ2bjU4dGM3NStTWmgrZWpFWkthVm94bFhWUStpS1AvSUgzaHdDRzVhbXA5bC9qcUF0US83VUV2Y0ttV1BTVmpYSUZjejE0dFpoNG9yR2tyMGQ2cnFEdmFjdVpxMC8wME8yYlFWK0VBUFhHcjZXZG5uMHBGVWRLVkhrV2NjbmRYTTFhTlZCb0RQU3RnblhkWDVmOWQxZ29UMWgxaE9mVnFVS3pxcGJseVRGWDB4WThvVTJDVldlOXlVbmxiWjJFV0xhdUMvWjI3aHhKWWlXNnZGa3lMT1AvOVVlUDF5WjFWZUl6N2NVRVQzekUrMzBnTmM3dmVqVmQxeDVHalhwL0VpdGJuOElyWlR5VGZSN3BIejhYOWtWT2pmL0hsNytZdmdLRGtmUkFYNTRpSHZiSnhHY0lNYjNCb0hXaW12YXZhU1BlMFkrN3RWbDA1Vk1KdW93ODlBY1B5SjRmTmNFMXU5akJtZXZJNjhPM2JQSGU1Q2ZHQjlSS3RLVDZDRXFBWTdFeVRieHMrTWx6ZVhPaCttQlU5dGpJYld2MDhNZWVLTHoxZTMxL3NubWYyVlNzZWV5bUlpNmR3U29qQUNWRWFBeUFsUkdnTW9JVURrT1VFbGNFWkVTSi9RaUs3RTlQd1kraWxHWXVEWUlzSmZZaWUxWWllOUUvalJFOWpTMG5RaE1mV0FMTHRZVXV1TFJDRkFaQVNvalFHVUVxSXdBbFJHZ01nSlV4czA0QWxSR2dNb0lVQmtCS2lOQVpRU29qQUNWRWFBeUFsUkdnTW9JVUJrQktpTkFaUVNvakFDVkVhQXlBbFJHZ01vSVVQbS9CS2pVMzFDSmNZNnpXQ1R2NXNseDdhekxsck4yUUN0YnZJcTZaRnlXSEVhcVUybDJPMXNveStYVytiZERXbGpBQVZEQXMvQXNaOXVKaDBCWjlIVmdxM1A1UHJpRTVzMy9FNnZVenBzRHdDODcrRXNJTEdzYTI3SHBPbkZvT2ppd3pjaUtwMllJSWlmRUVZN3R5TzJqUEJETWFFWkV4YW8rOXpPcmJxNGx1d0FqeDdOank1NDZ2dXNFaVFzOGpIR1VXSGlLNU1jV2ZNOEpnQldpQVByQk5BQk9ETUlJSVQrTVFHTGJNUEhhU0p0OGhZWTUzOGJIYnJYZDRBLzJONjBRZzN5djErSitXMTlyY2M1WEhhUktKSFJveWhPSEZGZGxsYkh1blBGcDNoRkZVR3hHYTFQZTd6S3FHaGpkaTFXelA0bUUvanNjSk80SnpyRXBCVmNMckRnd21LRUZacElpcGNMUFRCV1pkVHc3N0JSY1N1Z3JxN0tJWVUvRGlXZFBiT0JPUW51eW9BV2ZxUE1pckw1L3hTWlpKeG5zWWZzVUtiVmJPaUVpRDRoZXVZZkRNZG96Q1pjMzY0OXB0VHJKajRQQ1E4ZUJuaDRPNGdCRXRodFpwdVZZMEhRY0t6SWpvVHN6REJKb0ozRVlSRDdxaDRNZVVzbUE2aEpMcHZMZWV1OHdqSDlqSXBIZnlHNVJ1OEI5MThiN0wyK04ya0xxRk9JTkdRQ3VxdWpGM2l5S1RmYlZldHIyRXF2eXA4YlZabzltdzBmYThFbUs3QWE5V2I2QWhXTDFkN25CakczQ2xvRm9sNkZybXpsaEdIaEJZcHNZUnNoMDRzUXhJWjVhWmhTRUNMdEI3THRnQTZPb2U1NFdlckV1ZVNxSTZsbEtFb3pXcUhHYko1R0w5TVBkdXlaMDY2bllwc204MFN3YlhDd0Q4N3NhKzZqcXJkQ0xBUExpSUxCdzRMcXhGVnR1QU1CVVBNSWh3TWswQkxabjR3NFFVemdYcjA4Y215c2FDZ0N0SWtBTGtiYmJpblV4T2lsV3FEMnBRdUJCM3Y3K25ieDNWdmZKVFRtRWEvRjdFU0pFQ1NmbXZTZVZjelEvdGVlZkEzRHUyUDlxeUNRU1VWbW9hMlhGYjkyQm5xNnpWa2FVNFJveUhOL1Q5dmJUYStacEllSEpHdXB0c2E2dkRmTzM3K0p6MzhUdjlFaFo5aHgrR29QZmxQd21lUzhOM0t2U3BSVm1NVnZQUlBtblB1V292Ry83TWNkdERUQ2pXYnFlS2JpZktPcFRWZWhzcWFxZVpoYVRKSm5oTHhYT3VEZXdxK1FRU2hJZldSaUpZSVVqTjB3UUVOSEU4NUFGckNrVXRab2JKNjdsd0FRNEFmSUN4M2VnN2R0aDZBUGJ3WWtmVlorTWxEZ1dCRlZmTUVONU9aT255UTZvRGtBMjBWeDBJSnVocWVOVlF3MzRjUU5zL0hqeUg2VldXNm5ZVWdBQSIKICAgIH0sCiAgICAibmF0aXZlLXByZWZsaWdodC5qc29uIjogewogICAgICAic2hhMjU2IjogIjNiNmI2N2EwYjRkNTFlZjc5MWU3NzViNTI4YjY0YWE1YTZmMTRlZmY2Mjk3MzdlNjdiYWVlN2UyZjZmNjA3NjIiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTg3MSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E3VlZ5MjdiT2hEZCt5c0NiMjlsVXpUMW9ML2dMZ29VU05OTk44S0lITnBNcVVkRktxaFI1Tjg3bEY5eWtnSnRjTzlPbk1lWk04UFI0Yy9GM2QwU25LdlVIdFUzWC9YZy9YSjdGNFlSUDBSWFYzc2NubEJYRU1pODVJem5TY3FTTkgxZ2NpdllOczFXbVdCbElmNWhiTXZZY2twcUlkZ25KRWhvZDZncHo0RHpSN3grNkFLcVFJQWFBdFRnc1JvUWJtTThxZ0hEYTd2RzNuV0hCdHRRN2JERmdhcDBMVVh3YkhMSCtBTmw5YzRxaUUya2t4bUdYVWVIbi9STnA5Rkd6S1dRc3N4THd4T0VXaVZDRzVFQWJ0S2tMcVhDck5SRnh2VFVTNlRUallQQ0MwUnNBc0krb2h3SnJaMDFxQTdLNFNsajR0SjNYKzQveHFCOUNMM2ZydGVtRzNiNDJLMVVON3F1cVZlK1V4YmMrblJjMjVZQ0d0U0pSbVU5TmJiYTJYQUZETlFHaG50OG1ud1JWOG04WmlyWFpabGltV1U2MVdsV01yWWhFMHFHWmlQcHJqank1UVR4ZkdwR293KzJQVS91MGxFTERmb2VwamFYcjZoY2FVekxNTXpiK2piV09MUVkwSzgwR2hoZFdQa25kVnNVeHRBMUVHNVhnZXg3QkRkTjhzTERnUThQQTdUZVJvWVB0c0dYVzFmUWxtMEYvenJqRkNDTThiNlgvMDU0aDl2aS90Q3FlUW5WTlQwTXFCKzZtZlczay9tYjZieGpRak9pYisvYW4rM2IvN0p6LzhuZVRRMHVYalJLVk4rQjk4YUZmeHJESi9NNVh2RGlYT2o1SkNIeEZpbzlrQ0NNN2FScTAvWmRkQTEwWTMya1VIV3RPMVMyZ1IxV0dsMkFlWlJ5TnFxTnRzWlUrTU9HaTZqTUhYNFBQTXVuVnBReGhVcFJHUzJ4enFSUmpOUWt6MVhLMGcxd01KazJXU3JBTUZHcXZCU0ZBRjV3S1F2R0JacWlQcW9ucVhHbm9qZzZrdEIrckJxQ0ZveXhrOGg5SDJsUlNUL1BybzNJank0ZlNCRnhkNGhNN3FPRTB1bUlhRVlTK0FFVjJqN002Qkt6VFNFbHFaOEdGRG5rUmtJdEJGZmNHRm56VFBLVTV4bXJOeG5Xc3RTbHpGV0c1YVl3TEZYSWpYd0QvTHlweHhjZzZRYzB6dTcySVlsUnEwZC8rbHZpTS9CSXowQ2NQNFhnZ0szQ3lsaUgvaXJWbnY1bTZ0UEZwK1FxL1JIOTZFbWlKN2w2cnZEWFpQSmlxd25kVHNqbnpCTzl1ZmNtVzBHckxUMVFMd3RmN0svS3hzMWJQQzkrQVVHeG01RlBCd0FBIgogICAgfSwKICAgICJwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IjogewogICAgICAic2hhMjU2IjogImRkZmUyNjE5ZjQ4NDcyMzhmZTc5ZWM3NzlhMTViMGQ4ZGY1ZDE3OGNiZWQ5ODlhYzJkNzNjMTQ4MGI1N2E3MDYiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMjg4NCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E3MVdTMi9jTmhDKzYxY1E3b0VTck5XdWpEeWFiWVFpUlozYWg5aUdFK1FTR0FSWG5PMnlsa2lWcE5iZUdQN3ZIVkxVdnVvQVBkVUhMOFVaenVPYjRUYzhPVG41S0I5QkVDNWE2Und1UGp2dTRLSmZURzYwSUZiM3BvYVNHT0Jpd2V0N3dwY09ERm1Ea1V1SnlqVlhRZ284UUc1UlkxTWt5UzM4M1lOMVJBcFFUcm9Oa1pZSVZGK0R0OVpBc3lGTG8xdmlWa0NXZytjZTE2aGJjKy9lNk41QlFUN1VydWROb3JqRGt3VDNhdDJDeFRoY2I1VC9YVXQ0bUFwcE8yMmxrMXJabkR4SXQwSk40blEzYVdBTlRReC9HMHVSWEN2MGYvSGx5ODNaYkpZVEo5R200MjJYRTd2aUhSRE1odFM2Vjg2U0JqZzZkaXNNSDEyM0tDbklsWTZPODJUUGMwNTQ3YlJCRy8yaWxkYmlGckVleEp4MG1MY0haNkhGaG1oRGVOY1p2ZVlOa1dvSkJoVEdGdnpZSWprNU9VbGsyMm5qaU1mVGh6WisvMlcxR3RlOWFScTVLTXlBOHRFdUdLTk5rbnc2LzNUTkxuK3ZLSG9SazdQWjJadHlWcGFUNzZneU1kQ0NrTnpIUFRFbFRiNmUzMzYrdkw2cXlpUkpCQ3lKTnl3TnBCaGtEOWs4SWZnbmwwUnBSOExXc09QL0RKY1d5RmUvZWU3OXB1Z09WYVRBYkhzbHNKVEh4UXNZMHl4NnNud0pMTXBZQzQ1ajJ2ekE3eGlMdEZJaG9JaldJTTZGckYyV0JaMmZ5SFhuazBGTUE4ajdiVmV2b0w3SE9MUXZPaWJCUTAvaHVqTmdVUzBuQ3J2RVlESFcrQVdpR0xPbExiU2FTVUZSOUsrMDl3SDZ0dFc4cTZvSSt4RFhFcXQ5RHh0dklLWG94SGNGelFmMThUUGJXVVduVWZ2STNiNUx0K2xHdjZoOGwva2NwWEtoYTNmYlZSVnJtaDJBU0lmTzNhVVVqbzFwUk9HZE4zbWxGZmhtUFlaOXB4VUxFQjNvQjFzRmhlSlBjQ25kdjVNMCsxRWgvYW04a2RabElZNEdWTmpLM2xmbDdPeFYyTU5TSFowWS9BWnM4Y3RuRXM2TVRqdzFrQ2NhN3dZYlN6T1BoY2tQSldNVjVoR3VuWGpzSVRiUUI1M1RRRlNUQTZLYUJLTENrcTY0WlJHWStRdG8rcHZqRWMzM2dXR0JaT2g4bS9hQjFES3NLaGpzVXZSRDV4OTVZL0g0eUIwc2NJZlprOVE5ZmlySHRocDF3NUUrUm9YbmVPRmFMbFVhZTg2WnphN0hBaC96VGhZV3pGcld5RVlCSUI4UmQvV0tSSks1dnIzODQvSXF2OUszeUNBR2FwYzdmUStLTFdVREI5Y0RNYXdPZWFxSVV5RWRiSnpTNmJxY0NxaWxyNENkMHROWUloU01iUEZyckU5VjBueUZzd1cvcWlmNkFVdWdqZndlQ0F3TDh4dHdnemVZbnU1Q1NkRTROMVBUcTZtRkdqRzAwOERHazFXL21DSjIyaUEwazlINXRKRkxxRGQxQTVOZ2dtYlAyVFlaM1lFQ2M1ekxvcGVOWUlNc1BaTGRHUDI0dWNEdWJWRDI5Snp0b1pWbU84TitVa1hyaGY5SjQvbmMwejRpVUpXdjhWNzRNWWROb2V3UCtHQ1VGajYvM2xZVkRyWHNVSk0vVkZzdFA4UFRjdmJxNTlkdjMyYS9qRVpDQy9LSGNQRzg2TTJSQmJCOTQ2cVh5ZG9QcHFMUlhOaGdJa3NPVHhWOTUwZFp1bkt1WXpGR1AzZjF3amNhQ01aZE5jNjZZcnRRK2lIZGZ2aC8zL0gyRk9nNks2VFZ2bndjc2N5SDRjSU83aVRENTRoV3VHN1l0cXhqMUxiNlluQjB4R1Arb3VBMU53dzdmTVVHNmdBeHFHRFBCQUpBSytnS255NjRRQ01kbGlYY3AxMmFPTjZWRzFBUWZkdlpkTWc3QWdHUE5YU09uSWNmL3lqQWdvWUpQVC9DcWZyZk9Xc29CaXIxYW56SzRlNlN5NlkzL214RWFYejFzVjd4TlFyNXd1TnBXQnowOUhsL2Z1MVJkY2d5MzMrVUZQN05GWjRKQTkrSFVUWklhaTNnWUpTVnM5bjdhaWQ3WDcxKzkyNytRbE4rbzN1TmhRTjRkK1EvRm1qM2l2bThzUTdhODBmcDBqSWIrTkJ6TmhJbkpzYVk0dGoxcktvb1k1NUVHYU5EUEFPakp2OEFIdTdkUGtRTEFBQT0iCiAgICB9LAogICAgInByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIjogewogICAgICAic2hhMjU2IjogIjUxYjk5ODNkMmE4MDYyNDBmNTYyZGNiOTUxOTU1ZmM4MzYwYzE4MWU2ZDA4YThkZmRjYmE5NTM2MWM2ZGQ1OTYiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTA3MCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E1VlN3VzdiTUF5OTl5dUluSXN1VnExSVh1KzdyUU4ySFlhQWtxaFlxQzBaa3B3c0cvYnZvNXJtc0tMRHRvTmhtSDRrSDk5N1AyNEFOaEZyT05LZXZDZGJOKy9CNDFUb3R2MEpNZFNBMDA3dFo0ekJVNm43TXFLUU8wWnRPdXFOeFB1dEZrUHZwTlpXR2E4a1NTY1VtVjVKN01pSlZySGF5a0g3M2htaHBmWGJUdmJLRzdINTB3cHpybFQybVNxR1NPNFBoR3lhbDRrcTdVdGFzK1ZYeEtXTXFmNnRMNlpLamYxanFuRHRxZVRBa0UrWllJMFlZMXFqSmFjN3dKbWk0NmMrd0ZOTXB6aGlHV0hKVkNnZnlkMENmVU5iSVpOTnNkUzgyaHBTQkZ4ZGFCTUxMWml4MG5TRzRHRkpwUVF6MFIwOEppWm1jckRZVUhiQ01FUHljT1VOS1lkRGlEakJzdzUzdjhta3U3ZWMwQjA2TTFDbitzSHRqQnQ4TnlncFVSampsSkdzdHg0SWxSWjlMK1c5TXNaNEdvU2tqcEhhWTY5ZXIvZ1hiZm5jaTdRdW82OWllSXVYUXR1NTNhQXRHdUc4Y2JRemRvdTZOeGFkRS9aZWlNR0ozdmZZb3h3NklUMHAwVEt5ODZnRmJWOTRYUmY4SHl0cVlTNWMrc0tmWFBqSUVIQ2hMRmd0ZTRpbFVJRzBFRHZFcHUxRHJHd3oxTVErekJ3Uk9JVTZwclhDM1BBaEhxQ1pPZlA2L015S0ozNitBQmM4VHdrZFRHaWZtdXRYVnNIeHdGRFA3MTR2dWZaLzRCeU5VQ3hHT0hBVUFLMmxwVVdDNW9YYitKUjRpUWpqMXFtQ1RVY2VkR2daZFpRaHAxUTVlUlFXSnNrS09LeDRIZjNwRkJ1Q2pvRk9uT3dEeHAxNmFObGUrYWdjdmplZXRZMnk0NW9qSkhNSnRPNDIzUC8xV2NEQ3grNXI1a0M4eUhyejgrWVhxbHdjaWk0RUFBQT0iCiAgICB9LAogICAgInB1Ymxpc2hlZC12ZXJpZmljYXRpb24uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJkZDRlZWNmMGMxMDNkY2E3OTIyMDk0YThiZWViOTliNzdhZTk2ZmQxZDVmZTUzMmUzN2JkODMzZGFhMDI2MTRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDU5MTIsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMzFZMlc3Y1JoWjl6MWNRZXJWYnFuMVJucElvR1FpVERaTmxBQStDUmkyM0pJNWJwRUt5NVNoQi9uMU9rZXh1U1piSHNDMTFWL0h1OTV4NytkZG5UWE4yUC9UMy9SaDIyemFmWFRabjE5OS9jN1g1OTQ4YnhwamYvTXoweForN05tNmNacDV2Qm43MnRqNHloZkg5SjY0dkY0WVdGd1pLL1hDNjlLL3JuLzY1RVV3WXpqamZ2UHYyK3N0RjZ2TEVPSVdKNnQyUXBuM1liZm9QSFEyYnI2NDM5L3U0YThkYnlwdTJ5M1JQK0srYk5nODB0S1ZOWVdyN2JuTWZ4aEhuSFQ0OTBHYmZoWHY0OUVCNWtieGNwYnpkVDZrcXFDWnNPTnR3L2pQemw0cGRDbld1akRmS3ZHSHNrckhWbm40L0pJSVBEKzBJSGZWQkgxV01RbWNwdFBFdWtGYVNMTG5nZ2t4U2U1RWpMOXFWdEFoSTdiYUdDUTl5cnFVNmZEZnNxNnpqeCtyMmZxelN4MzFLTkk1ci9LQ1dQc0RtMVl5NzBMV0Z4bWs3M2dab3IvZXRVQ0VvYXkxRm5weTNKanZqU0JmTmxMS3lxR2d5ak9FeVc4MnlzNEZLME1sbG5RS3p5dEpxWmRqdHJEcG91UTJJOHdobFU3cmRMbm5ZcHY3dXJwMmdjQnIyTkQ5eVRNaTJ2UXMzdE0zdERTeWJYWmlOdXl4YU8xZVVONGlITURZem0zTHlSUXZteUJSUmhPTEZxbWlsVDBKNm9TS1Rsb2xNaVV1WUtPUmlXUXdqZlVxRE5ZaTRVVXdrRjhtbXBCS1BtUWZEalpENFdZcm5ITzRMYUhMV0txR2owc0V5N2xKaXpzbHdDUEpOTzA3REkzenNTbnZ6c1JvalJLU1VKTVhzYllyR1JBTnQwaFNwWS9HU0J3dWpzMWNHd2RaT2N5NWs0aW01NUwxRDJPT2lodjZndEo4UXJsMmZFTkFjNks3dlZzK1dIanJFVFJDekpITjIwa2V0UThrNmE0NDh5MkNORGdJMXFsRjdwTWdncDBnMGZPTWhhMjFpTnBrZEdnbmxIbmJ0bjNOcmJGTjRvREQ3ZERYcmJYWjl5TTFBaDFzME5vdjNuemNvaFNhM3BWeGZqUmYzdXpDVmZyaTdvRklvMWJaYXI3M1poVWk3c1huU2k3dkhobjVIcVRSVDN4eEMrbm5UVVR2ZDByQSsxblQ5MEN5ZU45ZFh6YmlQNDlST2lNcllRTTN4c1dhT1NyTW1ZaW5RcFF5UHVjbzBwcUc5bi9waDNJWU9RUTJQaEY4UFRmNjBVR3NGK2ZWODM2WGIwTjA4dndDTUdIQyt5c0NKbUw4dSs5MXVUS0hiVmdHN3RxdXc5QmNPY1BUZDExZlh2M3hYZS9ydDhzV1N3SzkrL1hwR3RoWFFjUFQzYzBuNGw5c01oTnNpeWlOVmE2ZkhiVUVVMis2bWFtYlA3M2Y5ZHR3RHhRQUl5T0w0MU9neDNORzI0T1IyZS9YbE52YlQ3VkpMenk5QkNQQnptK01UeEdBeWhSUVZVMW9raWxhaHdFcEZBNUdpRThWNkl1ZFVMaUV4WmdoZEd2QWhoOHlsakF3ZFpjOWVpcjZqS2NDcGNJclByNGpqZ3BaaURkRDM5TWYweTMxZXdmMEo5bkozcWYybFp1Zk9lY2FadHVMZDJmck1jajkvTVQxN2hMMTh4QXQ1Zk9RS2ZGRkwrNVduaEx5VUFuL1BwV05NU2k3NXUxT0dEdDZjK3VTTDNUMVNMcytGYWtJY1VkL04xejk4MndEeHB1WkRHRHJrQzYweUY2VjBQL3oweHZ6NE9OMmlxak5OYUJSVVpUT0U3cng1UjBQZjNGSG94bWE2YmNmbVVKL04xWmZOQ0lJYWIvdnBMYnBpYXZiZCt3N0diOHArMmcvVWdNcjJrSkNvUVYvUXpJcE5aZFBtWm9CMzUyc09ZbjhIMU5wMzFXS2xUdC8xM2E2MnlPNXBUaXAvNDlOLzVrLzR6TS9oM0daZ2EraE8zOHlGMnpTL25jcTM3U29ETEkyRGF0M05SYllJT29QVWkzRC8vaUxIaTdhRG5idmRTcmc0MjQvRFJUM0h2ei9QeC81OFZsQ2wvemJMemUwd3grcng2QU95OHVMa1VGc25ieGFid08yTEpjQk9KQWNqd0s0K2IrYkRveUhiWDY2dmFwZGlLdUV2VHY3eDR1UyszN1hwOFVtYitHeEJKNlFBK056N3pCVVZGZ0lCYUl2VFh2T2lkR1FwUlZ4RFFRVmJNbmtoOExUVWxTSEUyVk94ZDMyZUM1LzFScWxuSjR1RlM5K2Y0R0doaFFObGZFUzc2UVNFTTJqaFk4Z3hwUGRQYnk1ejBMYk9RSWpSc0owV1Zpc0J5UE1pR1BmN0FiTWZiUjhDNktDYnhqa3lxN3JscExMQVdGR3IvM0FFeU9kbkE1WDlXSjEwQzZzaW8rMGR6WmJONWRqUjlLRWZVT1F6a0w2MHNoN1Z4dDMyZ0JUa2U2WjkvSDVva3ZwN0dtak9OUnpBV0ZLbnBEazBKNGRXV1VNUE0vZlBmUzJvc0R3SGFrZFY5REliemtWenVqU1BxNlUrL1dHNkhmcjl6VzNOR2FaWk1OTmRRTGhxeDBQRDV3MEdzVXAxeTN6VzVEMGRnY2JWZHE1ME4xVXp3SHl2OW0venhRd2R6V0p4czJaaTV1cUxHZFNiTWZYM3dJblZidUJLbWdmUUJvUzVxNHAvMzZOSGNoTUowUWNyNzNyZ3hRRVhuazdGTlM4QXNqdWFHK3pzbTNZQWdpRTVEWktWVDR5NzhuTVlEL1NNYnM4NzRGQlhMNVg1OGtIWG9VcWJwVDZoaEF0OTNuelZEN1ZyNjhYSEY0UEJYSVBkVGJOQTg5TUpBSEd0M1R1K1dVY095RVNNM3dJdHFXc085WC9lZkErRVhOQjJuUTFLYUhjbmg2bFdPTUR5MUw0cjZJVmhhc0ZrMHdiejZ6MktlK3k3OC8rT3l4d2ZlTkxaazFBK1Y2cGpHSmc5SmpacFdBbkZrTXVCQ1dhaU5pNWhxdWFZcnpCb1lzalRtS0JMSW5WQXVWcXFtOW1xelJMRm93WVZNc1kybjZ3dTJaZkVNT2xpU25mRzRsdnVpYWNZNm9uVlBsVTYxcER0QVNaQlpPRjA1dXdWRFljTjRLakRXNWUweFRhU2JDd3NrL1Fab0VWZUc0eW9QbVdNcVpaRlMxckh4SzNVTm1ZTTJpWEtpTUdjbGZoTXg5cTBSK0VDaUJlakw4b3BFNklxd1pCd21FNE54bXN0dVVPTXVPWkVVZ2d2cFRGQmM4ak14Vm1CcVVFOEQxRmxwdk9VL3poS3o5bG1vNUxYbGt2UFE4b3E4K0pNUXB4TmdDQ3ZBQU5SRVdsRE9uaU1KcDZTS05YVjdMa09uNVordnV0dnFnYUh4N0VGSWNwWU5DUnlDck9ZMTRRb1owTUd1eElMbERDM1o0N01aSVAxeEZpcHFtc0dDWHV1WVJyYWg4ZE5uYzJPSGtpQzNSSVVBdlJsekNWS0VxWUZrdGd2cEJKRlp5V3htd1JzdW9nU1daMk1EQ1pZajlBeEYvei9rMy93d1p1Z1hFWXVDNklGTjVUWENod1VzSHBhZzRyUnlFaGloU3htSjh4dnhNRlVFaXNxK01zYXQvTFFVM0w1S010WUVNbXdtSlB4Q3JzaUtSR0tFd3FKRmtoSzNjeGtOQXhibzNCWU5hUVdvVG9wdlliN2pKK3luTnBsUzEvWDhSNWowL0F3LzM1VWhUVUNxeDlXbHBoOHBBaWRUZ2NFaGJCR1k3blJSbENKMFlGSlFhMU9SeFNZWklFTElrNHFyck5ucGE3WDJnM1VHeUkyY0lZRmtpTFNhTFBBbXNLY0Z1REdqQUwxdG5pTHpVb0tVTHUyRWxsZ3BPRzR4S1lzbnd2L3VOTlNxT0tTd1FvRy8zMXgyRllSZDQyVjJzVlNjaEpPT1UwbXBvQXRWeWU0eU5DWkJXc3Q0LzRZcGlQdGJsWUNQWlVUTmtjdWtpbElockNhSzhZUitvVE96WklSbVZBWUo4d2JFU05zcWRGQkh6Sk01Y2tTQnBSd25Mc1dtTjBzTUxzQ0J5QzRMNmRRa1U0TUN5Vm5IQnNxaGh4dFBHb1lwb3ZDZk1VOTZ5TUtDd0hFR29xKzBBcmxKeXp1SjdMOFdMaFA4NzJzYTBjVk5Wb2N0Q1Zkam9Bb3BCVW9TMFVWWVVOd1JsTkcrbFd3S1FCL0JZL0lFUlBBRU5qQ2JKSHVvS0lPRU50MTZqbkErZm45WTFWQklVZ09DRUloaWRyV1FST1B5UUlQbWVUWXdKVlZGcGhvaStXT1NZVWx4a3NsTmM4YzlaVkRPYWxZV1BCRmtDUWhqV0FJaFNvcFNHWVdpTHV0YnhOeTRycWd5Z0JVeUl2TWhRTmFVTmtvWkNzUVBndE84Y2ZPUTc5dFQyOUxEdDIzdUpBaEZzVkhDWkgyTGtFRFIrK0NBUkp4RVhXU3FEUkFVWUJyVWpQaFlia3F5VGxkTkZud3l1czY2anF6S2hEYW9TdTh3ZE9LQytCK0VTeGljdFdvRUNDc1I2Tmc0YXZsUUE2YlZQQUpKQ2N5K0FuVVlhUi9vcUNhL1JxUmVpK2pZOUdEdEVnZ3U2aGVETVBLQ3d1dkN0TW80YVNDZHJrNnl5T2FMU1FibEpFVjBMaE1MMVZnaWlDczlrZjVHSm1GQVFVbmNLWGltTUtaRGhqTHJRLzFkVkZ3Z01iYTNTSTdFUVhYQ3NsSnhhQ2FYU2FOSGZFZy95TUNVcGphaEpGTWcwUVpJQWdUZ0pQQzRVZmlrT0FpRGdDSVVnRFMwUnJlY2ZDT01kaFNoY1YxK2FyZ0EyNXI3cXlNRXVFQWVRSy9ndUdPQXJnZUhlY2RxME1IeUE3WnRMZ2lTeUFiaXEreHdrWWhBT1JINGNqbFJ5RUorT001TXp5Q3pNRmtXUWdYZVgzOXBhUUV5WU13dkhJSlRSV0JyMkFnQVd4SDlRaE9WZ3ArSkxibGpkOW1lYnYzb3Z3amN4emRKYktNV1hzSmIyUmh6TmFYaTVRY2NSUm1uVjFxdVZoYkM2QVFwaWNMZ0FLRUJYbWNMRjdoVFZFUVhRTGdSNStNRmw0WWFBTEZHL1NscUcrNWFuRndYTW1FU1NzSERHb0NRNWhVakhsOHBFK0lQb1FlMkEvckVGMldCWXBIZ2RXNWQ2YUFYcFRuVlVBQWxxRklwWkVnYllDNkI2K0NPcTB0S3BibHpjMW5mMy8yUHllZjdwOFlGd0FBIgogICAgfSwKICAgICJyb2xsYmFjay1kZXBsb3ltZW50Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiZjhhOWEwN2FiYzJlYjUyY2RmNmJjZGJhMmQ5Zjc5ZGVjMDczMTQ1YzMxZDA0NDRhOWUwZmUxMTQ3ZTQyY2M0ZSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MjY4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxWlcxUGJPQlIrNTFjd2ZzYkVEcmtZOW1VWmJtVVcwZ3pRN3V6c01CMUZQa2tFc3VXVjVOQzB3Myt2SkNmRUY5bE82V1g3VUY1Q3BLTnorYzVWeXVlZDNWMEhKZVE5Y0VGWTdCenBiNG5vTEh4blQyODlrampVaTZlUVVMYU1JSmJaZWdRU2hVZ2l0ZmRaZmRkTTRwaEpKQlVUOGJLb2wvbU00WEJmZnlTY1Bld1QxcEVjWWNWMzVoTERtc1JUeGlNSTNSQXcwVW9jR1EwMkVvOHFGSjNLaXRIS0NLeHM3V09XVWhaTjlnWERCTkVPQ2lNaWNzWnl0b0R3ajkzTDBmbXArL2ZZOVR4dnVJdFRxVmE1WTVnK1o3eWRHRVZnVmRqSkVZZ0U0V2FxTkRNYjlZTUFmQSs1aDE3WWRYdEJjT0FlRHZ2Z0RzSXdtQVJUd09pd3ErVWI2WTVJQUcrd1ZqclBPQWh4Q2lpa0pJWmJ3Q3dPTmU0RHoxdUo0UW8vZ3BGZTlGK1dGa2FUTjBSSXhwZFhKQ0pTYjYrUENLQ0ExVTdlZnhHU2VINkZKa0R6YmpWQmsrdy9waFBnTVVnUTJxLzErS3hPUFJmZ0ZDb09KTXlXZVdseW1SZ1dONEE1cU4yaUF5UkVDZFdyZWYzS2dkZ1FqRDhvUG5JcUdnbTBpcFlWTDh5aWhNVTZwWTR5MzhDVHM5ZDhwQlhpTmNnNWpZcXhrekZXNmtjc2plVXQ4QVhCY0l5eC9uYkhIa0ZiUFVWVVFNNGdGVndTcVREajJxaC9jeHJtRFZSMEVDOUtCRldpUWlacFRELzhkZmJQeWZINDdNUGw3ZTI3czVzQ0FpdnlCYUtwb1o5TG1ZaWpUdWNSbDV6bWxBNDk3MzJsRWlkdlIzZkhsNk96Ry8zZitlVkZveHJLYy9HVXpGSnVJcXpERlhRa2d2MEhrZmREMFJ2WjMzMlJxME1pTkRNY2xUZG44TURLb2JqNldpMTNmNG81NnZZSFI4UEJBVDRZOUx3dURpWXd4TGlIL1Vub280RS82QjZveituMDBQY0hZYi9iN2ZuQmNOanI5aWU5UGhwNmZvQ3hweW9PY213S2pWTkt4MHdWajZXQlp6cGljcXlxemJyMjU4Z3BXVUNzNnRDWXN3bVVBdDRRVEJHaEtZZTd1VG8vWjFRWHZvTXlzc2FyRnlBdDUzV3BRM0p1TUo4RG9uTCt5ZWFZaEhHNURnL2J2c0J6eUh6OTV1NXUzQm9yVGdLY3NIQlRWTmNGTXM4eXhWZ1puamZNcnhEcHFHQ3AzRERxN2pRSWJ1MHZCWHZGZHBuMmtycmpES1BBQzd5OStseW9RMUFWUWNrd281cm03bVQ4bW5TemFPSTNhUExFK0NObEtIeU5ObzA1cC9wS1NINEg3ZmNLV3NXS3BWeXh0U0ZKOVlRaDdCamhKTlhHOVQwdnNwa2ZRYVJHRkUyaDZ0dzFhYmVmdzM4cGlEWnBMYklHUFl1b1J2c0Y0SlFUdVR4UjRRMGZiZkhnSUVyWjA1aVRCYUV3Z3pPQkVUV05vOXBwMThxaUJFMElKWkpBalRraFo0bWxBSmk5NDZzcnA3Sit2d1YrS0h3YjArVU5ZL0pjYVNxV1FzMWJTb2prS1RSRElCR1hhZkkxK2VSM2Z5ZFVEWm9TZUVSaUV5RFhpcmZ1eDJ2alExaDBjdHN1WlRPbi9mUkxKOWRlTGRNdkdFMGp1TmJUMzVZZHhjeU5HNVgwNk4xUXhzMytLN3BGVVlxYXNEcHRYYkVnZGpXU2ZidGtHU1ZOY3ZUMk44c29USk5OMGxvSjF6bHN5OXJYYUxaQTNHQXY5SFZNaXFvUE9ra1dYVTFLcS9LbmJrcS9oTFlvRFlsc1VyYVc0T2ZydXJuNE5TbThvWEpSUW42RzV1dkJ6T1V3SStvTzMrajhyWWgvUHJhcldjRWVsbXZkQlpGU3YxSTFFcmZvdmxQWGd6Yzd1Zm5VQ1dPeEtkY25OTlZTendrWCtaRFVFNWR1dUJ2Q1kvcUVsdmtvTWEwdVRGWGFqZFpsR0tZb3BkSjkyU2hRTjQ0d3psUmNjSlltcGdONlhxRy9yZmRPNWlqT2Q1cTNzWjRpcm9rd3IwZkZSdzNsbWVNR2ptWjd4QXlERmFqVi9YY0N1UFcwTWtXL3FxaFJaS3FiWFhtVzJMd3ZaZjNoTklQRnNUcm11UUJSL3AzRStsNVRvbGtqWDZYTHRlZ0xqakNNUzNOR3I1OGp6dnB6eTd0TG9kbVc3NHI2WVZmRlVTemZHMVluRkpISU5xVmh2VEdxdTRLNjFVYWVEKzVDa3BaZmhhSkVMazhKdHdsVklraXExWEd1c3htOE9tS1JUN0IrcUhUOHlrMmc3ZzV0R1FCK09SMUx3ME9UZmxubnYwYUpUY0ZWY2wrelVMUHRIbFpuNjlxWEJYZUZrenZBM2E0ZkRJUFE2L3ZiYVY4Y1JyYTBvM0VvMFBmNkI4QVN3aTJzRElLcUcxNHVvdFY3MFdmYlRVbFlYejl0cEx2WmFBQng5clkvcGZEUlJhbWNXMXBDRms4ZkU1SWhzOG5yZzVlMytkcnJqVFFxV0dpZWQ5cFc3bCtWbTAxemo1UDF6OWY1Z3FpNzQxZDQ0aEdXRy90dElMVkJWSUdqR2gzR212b0NsMEh3VFNnMkRtTy9kblRiQXZiN3h1dmVkbG8zVmJyVzJLcm5XNHd6alBZeGx6WEpXN0J3UlZsRCtHeGR2NjlCTFI4bUxsZnpqVnZQL1VjbC9BOXJKTlZKZjZzdTBuaHNtNXhybTlML2h5cUdxV29VYXRiT0JEZFdzeUxwSzZvYVMzVE9JbHI3bHRoVzlxcjQxY2ZWVGpuMlZqL282bCtwZDU1M3ZnRG5UKzdMVENBQUFBPT0iCiAgICB9LAogICAgInJvbGxiYWNrLXByZWZsaWdodC1mdWxsLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMTIwOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMWNXNU9iT0JaKzcxL1J4ZXNHR3pCZzZIMlozczVsVXRzWFY2Y3pVN05iS1pjUXdsWWFFQ3VFRTArcS8vdEtBdHRjWkJ2M3BwUFpLdVpoa2xoSFIwZm5ISjJMOUJYZnpzN1BOUkRIYzdoRThER2ZaeURQdFl0elJndjBTZ3lSSUVkMGhjSTVZUHhuelRJc1Z6Y04zVFFmRFAvQ25selkxc2h6VE1Oei8yWVlGNGFoeVVrcFlIaUZPRXVRTGxESTUwVWd6a3QrR1NVTVFjWVpob0NCQU9Sb1RoRm8wdVFJVXNTNnY0Y29pOGs2UVNtYkwxQ0tLRitGcEp6Q2N1U3dvRi96V1ZtTUlSQ2JNQ3R1SU9iTHhVS2lIUWMrL0kyUGlzMW4rRGRFODVJVi8xZVdqMWVtM0FjZmZNU3BrRUY3dlp0WWpTU0lBYkdGTFNQQktrMEprMUxsdFovRkFGMFFHSTdFSDF3Qm4wZVlqQmtGa0hOZjZGZ3VnTk9JMEFTRmVvZ2dGc0pjU0VsMjYxNTBLTWFkWHlyWjVKS2R3UkVrUlV5U1lKUVRpRUU4Qm1HQzg5cTJLZUZtL3Z2NSs5dTNyL1hmWjdwaEdOTnpXREQrSzlVcXRrOGIvdHpDQ1ZLS3JUVkk4Z3pBWTNSRnFRRGdlQjR5RGFEN1JtanB0dWROZEgvcUlOME5ReS93SWdTQmI1VnlWRkpvZVlaZ1hmdDhCd3VLOHZ3MTk0TVlwK2dEZ2lRTmhTVmN3OWd1MS9hUDZzZVZsT3BYbkROQzE5YzR3Y0pEek4yMEhNWGNiUWx0MmpVQkRDNnZRWURpcHNHbFcyV2p4eUpBTkVVTTVjTGkrM1cybmZmVVVYVE8vWVNoeGJxNUxsdG5rdFc5T0NsOHZHc2docElzRmlOTmVidE9lOUJ4WDh5VEdzTEtWV0tWRnBWNmhDVEpTRnFlWVdrNTlFVjdkV3hTRCtYdjFOK1FyZTFuNVFKOE93a3BVdmFCUjBjTTBTV0U0bDhQNUJHbDlaaTFuY0Jka1FIdWxGUnM4ZDhOYVpzYjVyUW9YWFdJVklTTmt5aTBQZi9ubXordUxtZHY1dTgvZlBqNDVyNmxsV3JDQ3NTRm5MRmtMTXN2eHVOSDJES28xcG4yOU9vWndsemQzVDVjdnI5OWN5Lys5dmI5dXlQaWNMdW1FVjRVWlZnZlU2NU9uS0RSNTd4cG83YWx5djgrdFhsck9BRUx5WmZiZTRFK2s3YlRWdi9zQnRGZjhpV3dIUGRpNms3Z3hMVU5DM29CbWtKb1F6TUlUZUNhcmpYaGYwYVJiNXB1NkZpV2JYclRxVzA1Z2UyQXFXRjZFQm84ZWdGTkxkS3NpT01aNFNGb0xSVVYzUkkyNDFGcmwxbnFaNExuckpSSHRCa2xBZW9jRFVrU0FSd1hGRDBzT1k4bGlVVW9uWFQxTEczOURqRWxEeEU2QVZ0S0d5eDVzbVRMUDlXbXlnaGxHOGRSVStTOGlpZzk0TmVIaDFrdlA5SXlSREVKZDhGNkYzVHJqQXNJdVNMcTJ6UVZaTUpqU01GMnpLeXpJd0wweUdTTi9lZjlUK2IyeU05S3ZYbUdaN3c2ZEdyMjYxVlVUUVNTV0ZBOVhNMmVmMEFWTXBrSFpmcEM2R05NZUNIMlRMbU9ubE5SdGVIQnlWL1d5VGxEVWxET1hLM2ZXTlE3K1Q2OXdhd1FtM1VNSTFFckpFRUpMNXBrZStDNE43aWZSaWo2VDRIeTQ2c2VYZE8xbFVzZTFRbnZNZ3FLMmZxS0h3bjBWZTAxb2pNaVgyWVVyM0NNRnVoTkRrRzg2VG82T1g0ak9NaEFnR1BNTU5xN3VaQ1NUQmxJNU9qbDliV21HUG5VVTY4Z3ZFdmo5VDBoN0MyWE9sL252QmFzV3JyalNtR0FzaUk3N1N5YTFuQVlUemlNRE5FRXA5S05idmdLb2liWUtDTkVxM0Z0V0kvSlF1c3pmMXRQQ0l0M1o2eElYQ1RvUmxTb0orUXZXZC91UkJOdHc4RlVJU21lblptYXEvSHFiM3c4SXplV3J3ckc3eVVCUzdMRDZ3bUM3N1JXby9JOXZHb1AwazBFVUovNTU4cTRBbFJhcGJ5Y3lidldHV2VsRng0V253ZFUzZ1grcGVRR1JZalpZYkVQa1B3c3FYZnQ3V0hSZDNRNnlQQ1AzTU9tZE5RcFd1Q2MwU091MFpQOForbTdxbGYyT2U5bUZ6bG1UTnpxSFNFL3VvdXpRN20vUHRxb3FMVXd6WGZKNENvdWhBUnZNYzJieml2cVFaSG9kNlNYOFJld2JucVNUSzFod1kvcjdTYkFvd2dVTWRPM0F5MzZJd1dWRnVYdktDa3ltWEVObzVWTk42Tlg4dEo0SjlsZEtpcVpHNXpMdTdiMlJRKzMyZVZCcnBMZ2xrZ210WHZ0TnNYSEhORTlIUGkyeEkwVEw0a2lrVnk3OWN6dU5xN01RSzlMTldsN1RmYlVVbHY5Qm1uUG5WYUxhbU1SRldXdFBIaEhBVVN6VnJWak93M3lzamJvY1N2VlNQUGQzbGhjb1hOdlM5bHZrdUZWREhDaXJpQ2hHTHJkMTNicnFqS2llUnhhUjd4N2Y1WmtiUDBhVS9YeWZERmNDTkcwbTdLSFVCVi8rRSswdVFUV1RFVlBzLzhlUVZtRy9LVWw3aFF5eDZRdGE1QWJrS25GcmNMRURRa0ZlOHRYZFFkN2IxMzBTbis2Q3kzTDlLWmVhRGhtLzcwMHk2T1RkbldrUkJGM0haL2x5MVd2WFh1ZXlramJKbHpWK1gxVGQ0TzU4b1paVFh4ZWxpb29MVjlkb2hoOTFVSEJsc29rVkhyZTF3eVgydHBGaUVudHZXUnY0OGFrSUVxcXA3TSt2MzM2bjg3NDRjcXNla0o4dnFVdzc1bFB0Tk1qV3UvMG9sYmZjZVVwMUtUeUk3bTcvU0cwVk1wMzBlK1I4dkgvNVZTbzNQd2x2UHhWL3gwY2pxSTkvUEFROTZaUFFqQ0NsTzBOQW8wZFY3UjdTWi8yakh6YXE4dTZLK21VMTJINm9UVitSUEI0MFFUVzdXTjZaNjhqVS91ZTJlTTl5RStNanpEbTZZbjNFS1VBUitKa2svalo4WkprNHVTRCtNQ3Q3YkdRMnRYcFlRODhVL25xOW5uL2JQTi9hVkorNXRJUTg3cDNBS2dNQUpVQm9ESUFWQWFBeWdCUUdRQXF3M1BoQUZBWkFDb0RRR1VBcUF3QWxRR2dNZ0JVQm9ES0FGQVpBQ29EUUdVQXFBd0FsUUdnTWdCVUJvREtBRkFaQUNvRFFHVUFxQXdBbFFHZ01nQlVCb0RLQUZBWkFDb3ZBbENwdnFFU29neWxJVS9lOVp2anlsbVRock8yUUN0YnZJcDhaRXdLQmdMWnFkUzduUzJVNVdyci9Oc2hKU3pnQUNqZ1dYaVc4WGJoUGxBV2RSM1k2RnhlQnBkUWYvay9zVXB0emV3QmZ0bkJYM3pETkNlaEZlcU9IZnE2alR4TEQ4eHdvdnRHWVBzb1FLRVZPRjJVQndRcFNUR3ZXT1huZnVibHk3Vmc1eUZvdTFab1doTjc2dGhlNUJndVFpaUlURFNCNGkxNzZ0cWVZZnJRQTFOdjRobDJhUGdCaEZNL01DTExBcEhiUk5wa0s5alArVFkrTmxOMmd6L1kzNVJDOVBLOVRvdjdmWDJ0d1RsYnRaQXFBZGVoTG00Y1lsU1dWZHE2ZGNlbm1NT0xvRkFQMXJwNDM2VkVOakNxaVdXelB3cTQvbHNjQk80SkxKQXVCSmNiTERsUWtNSWxvb0lpSnR6UGRCbVpWVHhiN0NSY2l1c3JMYk9JWmszOGtXdU5MTU1aK2Rab1NYSTJrdmRGU0g3L2lvN1NWakxZdy9ZVUtaVkhPc0k4RC9CZXVZUEQwWm9yY1pmWHE0OXBOVHJKVDczQ1E4dUJUZzhIb1djRWxoT1l1bW1iUUxkdE05QURyanZkOXlKZ1JhSHZCVlBZRFFjZHBKSUc1Q09XU09XZC9kNGpFUDVPZVNLL0U5Mmljb1A3bm8zM1A5NXFsWVhrTGNRNzNBTmNWZEx6czVubm0reXI5TFR0STFicFQ3V256UTdOaG8rdzRVbUtiQWU5ZWJZRXVXVDFEM0hBdEczQ0ZvRm9sNkVybTltKzc3bGVaT2tJQkZDM3c4aldBWnFZZXVENUVEbGVPSFdNRFl5aTZua2E2TVdxNUNraHF1TVlSd2l1WWUwMVR5QVh5Y2Y3NnpwMDYxUnMwMmhSYTVZMXhyZUIySDJGZlpUMWx1OEdCblJEenpPUjV6aWhHWnFPWnhnVC9oUHlEUlJOZk1OeUxkUUNZbkxuWXRXTlkzMUhmUUdnWlFSb0lOSjJSN0VxUmtmNUNqWVhsUWc4d0pyZnZ4UHZ6dkk5dVM0SGR5MzJ3RU1FTCtINHVnKzRkSTc2cC9hbUY0WnhZVnYvcXNuRUUxR1J5MmRseVcvZGdwNnUwMFpHRk9FYVVCUStrT2J4VTJ2bXRKQndzb1k2UjZ6dGEvMzg3VVY4N3J2NG5Sb3BTNS9EVDJId3U0TGRSUitFZ1R0VnVyRENQS1RyT1MvLzVLY2NwZmR0UCthNHJRSG1KSTNYY3duMzQwVjlMQXVkTFZYWjA4eERIRVZ6OUZWZTJCcWRnVjBsaHlaOEo3WnQ4WUFGVFdqYVBvaUN5SWFlNzd0UjRGdTJOUVhJTnBIdDJuN2dUMndJYk4veGZUT1llbzRWOEwyWG40d1VPQllJWkY4d2gxa3hGN2ZKdGxGZWdHeWlPZTlBTmtNVDJ5MkhhdkRqR3RqNDZleS9oL2ppSnRoU0FBQT0iCiAgICB9LAogICAgInJvbGxiYWNrLXByZWZsaWdodC5qc29uIjogewogICAgICAic2hhMjU2IjogIjRjM2MzMTY2MjA1ODA4ZTgxMzI2Y2NkYWUxYjU2YWZlZjc1N2IwY2ViNGU2Yzk2YTE3YmYzODQzMTdhZWVlNGEiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTg3MiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E3VlZUVy9qTmhDOSsxY0V2bTVsVXhRbGkvNEZleWl3UUpwZWVoRkc1TkJtUW9tcVNBVTFGdm52SGNyZlNSWm9GKzFONU15OGVZOGNQWDVmUER3c3dibEc3Vkc5aEdhQUVKYmJoemhPK0VzSytUYmcrSXE2Z1VqYlM4NTRsZVVzeS9NbkpyZWkyQXErcXN1YzFkVVh4cmFNTGVlaUhxSjlSWUtFZm9lYTZneTRjTVFiUmg5UlJRTFVFS0dGZ00ySWNKOFRVSTBZUCs1ckhKdy9kTmpIWm9jOWp0VEY5NVRCeXptYzhnOVVOVGlySUluSTUyMFlkNTRXMyttYlZwTk5tRXNoWlYzVmhtY0lyY3FFTmlJRExQS3NyYVhDc3RhYmt1bFpTNkxqcDFIaEJTS0pnTGhQS0VkQ2EyY05xb055ZUtxWXVReis5OGRmVTlJK3hpRnMxMnZqeHgwKys1WHlrL05kdXdwZVdYRHIwM0p0ZTByb1VHY2FsUTBrYkxXejhRb1lTUWJHUjN5ZFl3bFh5YXBscXRKMW5XTmRsanJYZVZrelZ0QVdTb2Fta0hSWEhQbHlobmc3aWRFWW91M1BKM2RSMUVPSFlZQlo1dklEbFN1TmVSakdXMWt2VTR0amp4SERTcU9CeWNWVmVGWDNUV0dLdm9ONFB3cTB2MGR3ODBsZWVEZ0k4V21FUHRqRThNbDIrSDdxTmpSbE5IVi8zSENLRUtkMDM4dXZNOTdodm5rNDlPcTJoZkxkQUNQcUozK3orOE9UK1Rlbjh4TW5kRVAwODFuN1ovUDJ2OHpjZnpKM3M4REZPNkZFOVNmd1BybndiMVA4Wm41TEY3dzROM283V1VpNmhVYVBaQWhUUDd2YVBIMFhYd1BkMlpBb05MNTNoOFoyc01OR280dHdtNldjVFc2anJURU4vbVdUQmJJUGdiQUhYbGFKRGhha1JBZ3VhNk55bFFzSnBqVkMxVkpXcHBWYzhBMmd5RkZVUXJheUVBcUVMS1hNMjAxZDhwYTBIOTJUM05pclpJNk9MSFNZbW82Z0JXUHNaSEovVGpTbzVKL25VQ0dxWXloRWNrVGNIUktUeDJTaHREb2ltb2tNZmtTRmRvZzNkRmxlMXhzcGRWRnlGRnBJWFNyZ1VsZVl5ODFHY00wNHlncEV5OXFDc2t4dXhLWW0vaTB2dWVUWWxwK0FueWQxOU02MW9GNnlZVVRqN0c0ZnM1UzNlZzZuL3lVOUJNLzBFS1Fib0JRY3NWZllHT3N3WE0wNjBQOU1TbDE2VEs3bW4vQ1BrU3hGc212a0NuOHRwaWoybXREdGpIeXVQRDVSMlczMHJscEJyeTA5VWU4Ylg0Uzk3NXBHYi9HMitCdmVCdm1oVUFjQUFBPT0iCiAgICB9LAogICAgInJvb3QtYXV0aG9yaXR5LXJlY2VpcHQtdGVtcGxhdGUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIyYTM5YjdkYzViZjcyM2MzNTk2YjZmZmEwNzE5MzY3MDU3OThlMWE2ZWM2NzRhYzFmOTVmYjNmMzk0NTk0OWMwIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDk0MSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E0VlMwV29iTVJCODkxY0lQK2R5ZHdhSEpsQkt3V254UTAxSUEzMDhaR25PRnRGSjE1WGsyQ245OTY3dTdEaHBBMzBUcTluZDJabjVOUkZpMnBQdmZaQzJNWHA2STZiTDFaZEY4ZU91cUtycXVuaW81dVd6TmVzUDgrcTZMcWllWHVTT0RwMC9vbzFyZFRHclpsZDFWZGRGaGhhRUR0cklhTHg3MjdFREJTNXlXMzB1aHEyY3phKzQ1cEsxUXpuNFJBb05ZV2VPOEpjdjdLRlM5TlQwVnJwM1doMXYzYUh4S1NyZjRSMkFWQXdZcUdYeWQ3ZXJ4WEwxZGFRb1U5eDZNdkhRZEY0amYzOWVmRnV1bHQ4ZmJ1OUhSSlMwUWN3L0JHbTdtOGUwQmpsRWhKS2tzVVk2aGFvdVdSSlBMRUdob2NZTGhtNiszclJHRGN1YkRyeHNFSkM4ajBWcjlvem43UnZqaXZFSWxsSHF0VlNQWXpjbEZ3MmZsRm1Dbnp3SHV0bVFkSmxRSzIzQWdEdWQvak9CRG5sK2FVMExkVkFXWmRZN2xQOTFyRHpPQ0orT2huMnNYMS9BYTJWOHJXazJDay9OT1JSbnRYdk8xdTZVckpleU5vRURad1loL21wUUNuMzhaOFBhSjZlNXlzVGtocFBocmMzS05EMk5nckJ3ejlCdmRIQStEaDQrb09Pc1JBZ1RCTmNFYzlWZ244b1R0MHR4enc2SWdCaEVVTDZINXFtbm9ZTWtrUktFZC9ZZ1pCdEJnak9VcEJYS3U5WmtuMFU3ME1zZm1YMU9nZkN0aUZ0ZWlUMmpoY09UNkprd1lza0R1bkFoQ0ZFYUY4Um9lWjZXaU5qWGsrbGlEUTRSR0djaEF5Nm5rOStUUDgveGdWYXRBd0FBIgogICAgfSwKICAgICJyb290LXJlY292ZXJ5LXJlY2VpcHQtdGVtcGxhdGUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI2N2IwMzBjNzI3Mzc3YzBjYzdlZGI5YTFiNjYzODUwNDRlNzI4NGMyOWQ3YTI3ZGNjYWVhYTUwNDJhYzdmMjk3IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDEwMzMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMjJUVFkrYk1CQ0c3L3NyTE01TDFwQkF5SjU2cUNyMVVsWFZTajFhd3pBazdob2IyU1lxcmZyZk8zeG9TN0k5SWMvcmVlZkRENzhmaEVoZXRXMlNaNUZvMnpyZlVaTTJoRHBvWjNmZXVaaUdvU2QvMVlFRk4wUTRVK29KM1pYOG1EeE82YjEzdlF0Z2xKNWRQbi81OURIOS9qV1ZVcDdTRjFrOC9USzZyZ3A1eWxLZkxSbkJEUjVKZWJyT1pUakxEc2JNVWtlZFUrRUNlVkZ1dy8wRkFtMERuZ3h4U0VHTTFQVnhxZjJtSXVDRi9tTXp6YU80YzkxcW1oSmFNSUdXdW1BSEh1SGZyT3B0eU8wMUhMd25HNVdGcUsra2VCL29PZ29LRGVqdXp0TFZnYjNZQ2VLMmh6V1Z0MVp6aXhIaUVMWXkvZXlOUmgybjdiaFh1aDFyclk3T3RuenB4bFkzck9nNEt1ZFZRTmVUNm5Ub0lPSmxlMnZxU1BQcUx3UW1Yc2F0MUZCdjNOaE4vc1BkTnJtY1BuZlEzd3Y5RmU5RDNobFRBNzRxM1RFcEV3L00xSmwrdUIyNndiaXUzZ1dIR3N6VGVueDZCOTJINWRtZWorVWU5K1ZCNWxqVmRFUThZRlkzR1pSWm1lLzUyN2FuTEN1YklzOFBXWFU4SHZLaVBoUndsRm1GS0t0cUQ4bHRQd3R6VTBONEttdUpaVk5WR1ZWRjBXUk5WbFJTN2psRUowbnQvaVR6TXFkOE1XaEJHMzVEQk52b0J1SU5oTmJONStTRkVUU3NDUTRJd01na0NXYWJYd1JKT0MrZzU5ZStndG1KYjJzN000T2pHQUlGdnFEUDJqSjh5OTgxZ1VlYWtWNzI4TGh5eUQzTUs5MmMyWllwWUp5Y1hjZGpFWnFSSFdZaENHMUQ1SWh3clFDeDBtUEdaYVMzaVhiSnc1K0h2OXlJWEhvSkJBQUEiCiAgICB9LAogICAgInJ1bnRpbWUtcmVjZWlwdC5qc29uIjogewogICAgICAic2hhMjU2IjogIjY0NDI2NzZkY2ZkOTQxZjBhMDVhNGNiNzlhMDJkZWE4MzlmY2QzMzJkODJiMjE1NGMxNWNmNmRiNjhkZTU4ODkiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogODA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTJXU3k0N2JJQlNHOTNrS0s5dDJXaTRHVEpiZGQ5ZTlkZUFjRWpRMlJCaG5KcXI2N3NYanpqUlZKVXUyMFg4NUgvRHowSFhIUXJlNHhKeU9wKzVvWGUrY1VDaUYwbllBVXIwa1F3TU1JTDFVVnFEalFRM0JIejl2enV2cXByaGNDRWVNWjFycWxyQmNvSGxQUWFsaENMM1Z6U0MwUVdZOGVodVVZQVBwSUlMb2VUQzlNOUo2SWEzb0haT0dDU1RQSmFpMnRCZmNxTVFRVzM2aGMxeHF1WTgrcHhEUC8vZHBJUng1TDhtaE5kNXA3VFFaTDNXUXlnVXJPWmlXamJiWHZkTnFVSndMNmJuM2c3ZDJRS1BjM2tldjVOZmErcVlNdUdFQnpUbU5FUi9KQkRGREVuR1ExaWtGQVJVcWJrUXZ3V2dGUWx1dDJ2WlJUOW9vRmhRYmpPR0FTbW1IR2huZm0rSU1aeHFYdkJaUFd6ajR1c0xVUWNycFB1ZDE2ZDdSTzZURmwzaXR1WHlkNEU2bGcrSXY4VWJkUG1ON2VaaW0reDdySVdGRXFEVHVCZTlBcmFLV2xkNDBpZXBMTHM5YmEydWozVmdJY014cHVvOGw1L29vbjlzV2xQdW01bUw0SHIvOUticXVTMXZqKzgrRi9ET1ZCeHg2YlVEZE9kYmxrbCs2YTB5SjBPZDVqblczSjZnTllieVdmSXZZbkhVL3pRRFRRbytDYmRDTmMvUVhTT2MzanIrYXhna09GaHB6R1FIbm1MYVBqMGhmQ0NuVjJPVC91RDd1MUZyOU5xcGdRajl4OXNUNUQyWlBzajNtaTJKQ0dQV0pzUk5qeDhPdncyL01RZ0lXS0FNQUFBPT0iCiAgICB9LAogICAgInNjYW4tcmVjZWlwdC5qc29uIjogewogICAgICAic2hhMjU2IjogImFhYWE5MTA2MWJiMDM2ZTZkMjI4YjFjMWJkNDMzMzU3OGRjOTQ4Y2IyYmI1YWM4YmEyNjk0MjkxMjFlNzMyMWEiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDUzOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMVZ5VzdiTUJDOTV5c0NYeHRLSkxWU3B4Ym91YWUyaHhTRndUVm1Zb2txU1RsT2kveDdLY2x3TEdkQmt5Ym9vUUlNMEhwOE01d1o4czM4T2prOVhUaE9tMGJhUlhXNm9EODY2aVNQdmRXYm0vZHVSWEdXVnpsbVNPYVpMTXVjTUo2eWxPZVVwb3BpaGxGR3NrRGhCY2NxaDZpa1JCQXFjc1NwS2d0VUZoeVJuQ3pPK2xNRVc0Nysrbk5nd2lsbktVd3p6Q1VyVXFxRTRoUVdtTE1TcTRMSWNGZ3FGT1VRNWxMaGxJWVBRUVZLRWdZVlFjWGVaUzA5RmRUVDRQUlhnQUw0VlZxblRSTUFmRFlpbitUV2Yya0RTL1pIWTRoemdDQkE2RE1xcTR4VUdZektra0FFc3dLZkwzWTJJMTk4OEJNVGVHeENjTEkzK1dpdW03V2g0Z0VybkZRSkRyOG9LU0ZNRXBTZzgwVXd1aDJ5Y0xTV1MyV2xXeTFEUXN6NDFWTFg5RUs2NE1UYlRnNmt4aXhkMTdhQnRVdHV2Mk1sTjFiMDVHOURIR01ad2dhMWZLVTNRODRzWENvWW5FYWUybDNBZ2FLTXJla1E3S1VMWHZlNEM2eVEvYkx6L0toa2tGUkpXU1ZwVkJScFh1QjNFRllRM2huS3JmWkxia1IvS3R5ajNOUTFiY1EreEFFVWhsL0p1MWdDQWdBM2pkSVhoMWpzNnpiV2pSS2c3V3hyUWhwdHg5YmFyYVFBRzJtMTBwejZVSkZZMXEyL0FhUFRCL3dBc0RMT0h5SmRvN2RWSE1jYmFtUGJOZkZvR3Jtd0hOTEMxdFNQcmFmZmpmVFh4azVzR3RQSW84VGF6aDBpYUxwZHk5clltd2xoR3YzbTRacjhYR3QyVUJEQ1VzWndKcW80WEo4TzZ2RXZjTkozQXhEVXVaSlZQQ3lIVm0vWEgzWUhESTkwV2h6ZHROMGtrWDEyOFNQdmVpeDVIenNRZWdMZnp3Z0FkNlZiSUJqb3hoWnhmKytTYnVpamhMRjNUaTUzMDYyUDNzeE9ad2ZZUkc4RHgzVCs2VHlIbWdQVnJkZlJZTDBqZmgvVzI3Ty9FRCsvNGV2d1pNWDJHUjJnak1vc3gxazZkNEM1QTh3ZDRBVWQ0TDdvL3F3Tk9HYnFpSXZ0ODVyQWF3NS9FaFdZRktTY3BUOUwveDlLL3orWSt5OGQrYTg5N1ZNWTVVVUcwMW55cytSbnliLzlvSDlxeHAvMC8yNVBmZ01VK0l2UnVoRUFBQT09IgogICAgfSwKICAgICJzZWFsZWQtbGl2ZS1kZXBsb3ltZW50Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiZjhhOWEwN2FiYzJlYjUyY2RmNmJjZGJhMmQ5Zjc5ZGVjMDczMTQ1YzMxZDA0NDRhOWUwZmUxMTQ3ZTQyY2M0ZSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MjY4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxWlcxUGJPQlIrNTFjd2ZzYkVEcmtZOW1VWmJtVVcwZ3pRN3V6c01CMUZQa2tFc3VXVjVOQzB3Myt2SkNmRUY5bE82V1g3VUY1Q3BLTnorYzVWeXVlZDNWMEhKZVE5Y0VGWTdCenBiNG5vTEh4blQyODlrampVaTZlUVVMYU1JSmJaZWdRU2hVZ2l0ZmRaZmRkTTRwaEpKQlVUOGJLb2wvbU00WEJmZnlTY1Bld1QxcEVjWWNWMzVoTERtc1JUeGlNSTNSQXcwVW9jR1EwMkVvOHFGSjNLaXRIS0NLeHM3V09XVWhaTjlnWERCTkVPQ2lNaWNzWnl0b0R3ajkzTDBmbXArL2ZZOVR4dnVJdFRxVmE1WTVnK1o3eWRHRVZnVmRqSkVZZ0U0V2FxTkRNYjlZTUFmQSs1aDE3WWRYdEJjT0FlRHZ2Z0RzSXdtQVJUd09pd3ErVWI2WTVJQUcrd1ZqclBPQWh4Q2lpa0pJWmJ3Q3dPTmU0RHoxdUo0UW8vZ3BGZTlGK1dGa2FUTjBSSXhwZFhKQ0pTYjYrUENLQ0ExVTdlZnhHU2VINkZKa0R6YmpWQmsrdy9waFBnTVVnUTJxLzErS3hPUFJmZ0ZDb09KTXlXZVdseW1SZ1dONEE1cU4yaUF5UkVDZFdyZWYzS2dkZ1FqRDhvUG5JcUdnbTBpcFlWTDh5aWhNVTZwWTR5MzhDVHM5ZDhwQlhpTmNnNWpZcXhrekZXNmtjc2plVXQ4QVhCY0l5eC9uYkhIa0ZiUFVWVVFNNGdGVndTcVREajJxaC9jeHJtRFZSMEVDOUtCRldpUWlacFRELzhkZmJQeWZINDdNUGw3ZTI3czVzQ0FpdnlCYUtwb1o5TG1ZaWpUdWNSbDV6bWxBNDk3MzJsRWlkdlIzZkhsNk96Ry8zZitlVkZveHJLYy9HVXpGSnVJcXpERlhRa2d2MEhrZmREMFJ2WjMzMlJxME1pTkRNY2xUZG44TURLb2JqNldpMTNmNG81NnZZSFI4UEJBVDRZOUx3dURpWXd4TGlIL1Vub280RS82QjZveituMDBQY0hZYi9iN2ZuQmNOanI5aWU5UGhwNmZvQ3hweW9PY213S2pWTkt4MHdWajZXQlp6cGljcXlxemJyMjU4Z3BXVUNzNnRDWXN3bVVBdDRRVEJHaEtZZTd1VG8vWjFRWHZvTXlzc2FyRnlBdDUzV3BRM0p1TUo4RG9uTCt5ZWFZaEhHNURnL2J2c0J6eUh6OTV1NXUzQm9yVGdLY3NIQlRWTmNGTXM4eXhWZ1puamZNcnhEcHFHQ3AzRERxN2pRSWJ1MHZCWHZGZHBuMmtycmpES1BBQzd5OStseW9RMUFWUWNrd281cm03bVQ4bW5TemFPSTNhUExFK0NObEtIeU5ObzA1cC9wS1NINEg3ZmNLV3NXS3BWeXh0U0ZKOVlRaDdCamhKTlhHOVQwdnNwa2ZRYVJHRkUyaDZ0dzFhYmVmdzM4cGlEWnBMYklHUFl1b1J2c0Y0SlFUdVR4UjRRMGZiZkhnSUVyWjA1aVRCYUV3Z3pPQkVUV05vOXBwMThxaUJFMElKWkpBalRraFo0bWxBSmk5NDZzcnA3Sit2d1YrS0h3YjArVU5ZL0pjYVNxV1FzMWJTb2prS1RSRElCR1hhZkkxK2VSM2Z5ZFVEWm9TZUVSaUV5RFhpcmZ1eDJ2alExaDBjdHN1WlRPbi9mUkxKOWRlTGRNdkdFMGp1TmJUMzVZZHhjeU5HNVgwNk4xUXhzMytLN3BGVVlxYXNEcHRYYkVnZGpXU2ZidGtHU1ZOY3ZUMk44c29USk5OMGxvSjF6bHN5OXJYYUxaQTNHQXY5SFZNaXFvUE9ra1dYVTFLcS9LbmJrcS9oTFlvRFlsc1VyYVc0T2ZydXJuNE5TbThvWEpSUW42RzV1dkJ6T1V3SStvTzMrajhyWWgvUHJhcldjRWVsbXZkQlpGU3YxSTFFcmZvdmxQWGd6Yzd1Zm5VQ1dPeEtkY25OTlZTendrWCtaRFVFNWR1dUJ2Q1kvcUVsdmtvTWEwdVRGWGFqZFpsR0tZb3BkSjkyU2hRTjQ0d3psUmNjSlltcGdONlhxRy9yZmRPNWlqT2Q1cTNzWjRpcm9rd3IwZkZSdzNsbWVNR2ptWjd4QXlERmFqVi9YY0N1UFcwTWtXL3FxaFJaS3FiWFhtVzJMd3ZaZjNoTklQRnNUcm11UUJSL3AzRStsNVRvbGtqWDZYTHRlZ0xqakNNUzNOR3I1OGp6dnB6eTd0TG9kbVc3NHI2WVZmRlVTemZHMVluRkpISU5xVmh2VEdxdTRLNjFVYWVEKzVDa3BaZmhhSkVMazhKdHdsVklraXExWEd1c3htOE9tS1JUN0IrcUhUOHlrMmc3ZzV0R1FCK09SMUx3ME9UZmxubnYwYUpUY0ZWY2wrelVMUHRIbFpuNjlxWEJYZUZrenZBM2E0ZkRJUFE2L3ZiYVY4Y1JyYTBvM0VvMFBmNkI4QVN3aTJzRElLcUcxNHVvdFY3MFdmYlRVbFlYejl0cEx2WmFBQng5clkvcGZEUlJhbWNXMXBDRms4ZkU1SWhzOG5yZzVlMytkcnJqVFFxV0dpZWQ5cFc3bCtWbTAxemo1UDF6OWY1Z3FpNzQxZDQ0aEdXRy90dElMVkJWSUdqR2gzR212b0NsMEh3VFNnMkRtTy9kblRiQXZiN3h1dmVkbG8zVmJyVzJLcm5XNHd6alBZeGx6WEpXN0J3UlZsRCtHeGR2NjlCTFI4bUxsZnpqVnZQL1VjbC9BOXJKTlZKZjZzdTBuaHNtNXhybTlML2h5cUdxV29VYXRiT0JEZFdzeUxwSzZvYVMzVE9JbHI3bHRoVzlxcjQxY2ZWVGpuMlZqL282bCtwZDU1M3ZnRG5UKzdMVENBQUFBPT0iCiAgICB9LAogICAgInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiMDQyMzI3YTAzNmVkMjU0Y2Y5NWRiZWIwYzA1NmFjMjViMDNhNmE4NDRiOTVhMzMyYzk5MmRmMjk0MzY5MTM2OSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODQxLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcxVXkyN2JNQkM4NXlzTW5VdFpvaVZMU205TmthS0hwRUVQeWFFb0FqNVdOaHVKVkVuS1FCcmszN3VVWlNkK0lJOURleEt3M0oyZG5aM1Z3OGxrRWdtamE3Vm9XUmVkVGg0d2dDSFdxV3V3VGhtTnNXaVZSaC9XY2RXMnZXZThBUXg3MjhNWXZsTmFoc1N6QWVrQ2tjYUhGanlUekxNdGNzRFcybmptRWRzOUM0Y0h1ekJDeHVIVFdmTXJWbWJxTFJNSXZpQnF3RmU2TnJZRlNTUUlGZGlkVHJjdFR3OGVwd2NSWW52dFZRdGtMaWhOeTZLVVNiNlpiVDNmZmtVc1ROK1lsc2ZPQ01XYUtaT3RjaHRkV0ljOFZ5QS9UcjVlbm44bU4xY2tTWkppSW5xUFVSdU5zSThiL0VpekZvNk84VEt2b2M1MVRCd3Zmc3JyMXlwVlNack9KSlVrejJSRk1pZ3A0YW1ja1NyaFdRVWNKT1g1bXR4SUxSSk1HNjBFYTI3RHNtN2RrdEY4SHFCS0VObWN5cFRPc2lMUHlqcFA1Z0RBNnhSbW9oQWlLK1pabWFTVktGbFJ6c29razBuRmhTZ3FudFNVc25vZTJneE5vbTRsWHJmWHhrZFg0ZEY1MFA3YU5IMExadzFUN2YvejFOSDJiL0xYd090Zitla1picmVLNzNvT1ZvTUhGNGJpcUJ3UnB1MGFqQXh6M1lON3VjTDBXTUx2c1VwN2E1b0dPeHlXclFZQllvNmE3OVU3Ynl4YkFBbVVoOUhXOVpacHNRUWJNaHFEamlJZDg4c2ppSHRnMElCQTRrUWJPYmljenFwNFRtT2E1SEZGNDZWeFBuWWdlZ3NPTEdvUlkrWHJvTzloZUhDc3RkS3NVWC9RQ2xqMDQ2blZiZyswZGNEM3lENHNjVXo3K1lhVDM3SEtlMDljbGdtbk9VOUptcVdNWkZuS0NVZXRTRlhXak5heUtua2hkay9jZFNCMkxrWUljTzRDNWQ2Yjd6c3dlV09WaDI4YTJSd01oQnN3dlJXd2QyY1dmdmZnL0c0MHRGM3ZJSEJPdjZobysvUjRvUGVZaWJmbTNPV28yaEVIamF1K0dIMXlyaHB3OTNpcjdYN0dCaU5zNkIxeVBmOWgzWFpMNWdhUVQrRllvcFBIazc5cUZFZ29NUWNBQUE9PSIKICAgIH0sCiAgICAic291cmNlLWNvbW1pdC1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogImIwODExZGEyZDNiZDU5Mzg3MzNmMDA3OGU1ZmVjOGUxOWE2ZDk3NTJjNDI3N2I4MGJmZTk4MzdlZDcyYzZhM2IiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMjM5LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTEyT3dXNkVNQXhFNzN3RjRyd0hJRFkyL1pXcWlwellLWkVLckFndFdsWDk5OEpLdmZUNk5QTm12cXU2YmpiN3lpV3ZTL05TTjJPQUVIcFUxK013c2hpQ016SVdGaGNkanIyR0xpR24yTnorbW5hWStsbVduS3pzdmt4eU5pOFQ5U0FDUkdTaGl6elNvRHl3WWNJV2dGeUNNT2dwNnB3U3Rzb2tsZ1FqSzBacENjaitMOXhsbjhycEpYanlPWmRaOWpqWnhWN2ZubXc5RnR2OFpxSitYVDRlL2oxZmY5YmpUT3picDFVLzFTL2RXMzI3N3dBQUFBPT0iCiAgICB9LAogICAgInNxbGl0ZV9yZWFkb25seS5weSI6IHsKICAgICAgInNoYTI1NiI6ICI5MDkzYzY0ZjdmMGUzOWIyNDlkYTlmZWZkZjVhYWY0ZTQyNThiYzMxZTdhMjdmZDg4ODQ3OWNlMzI5YTIwNTA5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDQ2MTAsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNVZZYlcvYk5oRCs3bC9CWmNBa1piTHlzcWJBa2hwRGxxVlpnZVpsU2J0aENBS0JGazgyRjBsMFNTcU5XL1MvNzQ0U1pmbWxhZU12TnQvdWpuZlBQWGYwMXRiV2xZYWhta0hGVERhRmt1L0l5c0pFU3p2ZnlWUmRXVGJUU3VWSHpGaFJ5REZUVlRHUFdRVVBvRm1tS21OMW5WbkRicXpTa0d4dGJRMWtPVlBhTXE0bk02NE5ESEt0U3RwcDRkR1NnSFk5SzVTUjFjUnZuM0l6eFZVL1ZNYi8wdUIvR2N1dC8vMmZVVlVqZWNidHRDZjJDb2ZkZ1ErRnRQRExZREFRa0ROWm1SbGtOdFhBQlYwaXBKTXgyNDVaU3JhQVNFM0ZaMmFxN09nMUx3eEVod09HSDlyRlJrNnVPeEc1V1ptelNsbTNtRWlUNXJLQU1HSktkek5tWGhheXVnOWJLZlRSWEJwZ2YvT2lobE90bFE0RGVKVEdvaE5RVnRVZVFHL0xCMjZCQ1c3NW1PTUJEUjlxcVVFRWplWmFTelRIcWRGZ1ZQR0FpaE51VXB4SEMzNW13VytsRWpEU0tzQkJHUHdreTdKR1NRV005Z0l5ZS9XeURQQ3VMR2lsLytpZGxweW9xa0ozU1ZYNTRMR1NWM3dDSlNBbW9CS0dXYzBydzkwZWM4U2taVUtCY1g1eE9oSW44YU5FLzdYQkRyM3dyQkVlb3RFeDNXajBUdGNRTXl0TFVMVWRIVVFSNDRhSjhjSjVZcHpBSTJTMWhUQzR1ajQrT3o5bUgyclE4NVJDT2JxOGFPMWYzZnI3NmRtYi9ocWkxdENWUnBzRTFnWjAydTRJb2lRSG0wMVZoZjY5M2IzckpLQUx2WkFmUnV4Z1llSG1FTTk4Y25YeGxJMkxtbVE3T01MNDVxaVlsWEtpdVhXYSs3bzJtTm5sWjRvaXNudHZLUzhLQkFEYWRCc0c2ajZJbzd0djJVYVpNQ1QvTFVReUo3SzFTZlJNS1dRTzJUd3JBRjMzdWVJbEhDNlpkblA2OXZUa0hUdTVmSC94THR5TzJPdnJ5M05HQ0hUUSs1b3ZsejQ1Wmc4Smpwc3phQk1MeWNaTWFXR0NtQVdkQ2FtZmpPTE5valo5TU5zZUVMa3JrdHE1NXduQ2NBcEU4N0lrUHhsRlh4WVpENll1TEhrc2FNTGRvZXZRZzZndkEyZTczNXNNQ2pBM3h1b1J0d21KeWJQQi8wU1JFQzlIb1RuRXpxNHYzMSt4My85dDlxQ1pHeldZZWx4S1E0YVpaNnJwbmZ4T1hSM29VSk5ETEhPSWRCbWRZdDZrbERlNDFuQkRZS2pDcEYzSlFYUWVNa2ZVWC9xWnIxVlJqSG1HeER0b0ltQnJYYldCV0NrRUswVFkxZ040cEVXYW4vTDlnNWN0ZjJOaHU2UkU0WjZmOFRmSzVySUNFVE1zUko4d3hVc2NEcWtVc0k1Y0hmdFZpdjF6L0JaM0licE5NbkFDVHpCZHNZS1d0VUV5TllSNGFhYW9QQ3RxSXg5NkVqTDBDZEhDRGhjbHBnU1dETHVEQWoraTQwREhqRmZDeVRQMWJJWTIyU2tWRE1vT0VIMnpNSlFUVkpPd0MxZTRpWEFvMzJoN1FlbzhPeldjL2NiWERIYnoxMXZVd3lndWhzbEpoU0dnb05MS24rZWszSGNDWkNYc0lBdFZFOXdoQldSWS9CdHBwNzdLK1drVTUyeks4UEpLekJrODRFS1Z3UkVSNDVSMklrY0tLQUREc09NSWFhWUlMQ0x4c1hpNk1tTWprdGRGVVhMa25GQUh0N3ZEWC9rd3Yvdjg4c1dYWUQzQXBPd0NxZW5wUW8xbHp2dXpDMDNqMDlVQ1RSQXJFUnJrMHRCaUd3UzIxd1RJS2xkb2RET2ZGSlFnNFJMaHU5cUFzOGxOK3VibSt2UXNwQk9Kc1NtVmRkZGkrTlh6eXo5T1YxYVIvWGZWeTkxZDJ1WlhLdGRXNE1yZXQydFYwM3BRcVM1ZzZNNHRjTmdHYStXMnZTUWpoVzdPQlhlMGNNSmEyN1RMWHJsTlpKNlJuNEM5d2txNnQ4KzIyZDd1L292dDdmMm5ZakhHcHJTSDdzN0FEV0h3Z090M1lRUTFLNjNFVGdWNWVjRWRsQTZtem5QNTZDcFBNUHpJQzZLa29abVdRYlRzdWlaNkhudklSODBWc2R3MUVxS2wzWGhwWlJMWHNSV3U0elByc0ZpQnh5cCsxdmZsWFh4cktTaTYzcDgwN0VWL3NyeUt3OE9OcFc3ZHo1MWpXeTkyQ0dpU3ZBK0FubFd0QzBjajFualFjWVEzeHNXYU1QcHNHL0I1ME9OUWJEWTdoaUpxMnRDdnJJZjd0akh0RHQzYlpZMkFoN2l6VGxZcVhqSjFNU3FwTTAwcnM0NzVUcnhiR1VOT1Jhb2p1bEVQZ2gwcUc5cm9ZL0tCcm95YjIwZFEwakJUanhkY0dYRUlvcHFJWGRFNGNCMHlRZzk0dWV4TkF2SzRVTmpGSVk2cFNJUUZMOGVDSDdhN0UvSlkyQ1phRkxOeEVHd0Fvak1wcVdlSVFnaWR1TFc3TjF1bThPZ3Y1RlBjanluVUsyejdWR0t2VmRHV1gxdTh0YzcxNVh2UktidjNLWHJ2S3crOHRkY2Q5UlBOU1o2amU3N0tWS0ZiN21EU2pSeE91aEhtVzI4MFdSb1JpSndYUXA5L1RwSWZPRUc5dkkzN2FSb3ZNV1QwTE1lMXFGeE4xYWRENDBwTGgxYmFzSUxtN3pCaFVTM2FtQWw4M0ZFOVg0MVpDeUVYT216TDZGMmFVdk9mcG80NjBwUXVrNmFCZjROcjR3TGwvMVJJanZXa3BvZm9sVnNKQlpoTXl4a3BHS1dwVUZtYVJyMlRDUmNpNWUwUnBQYWhHQ08xMi9rTVJsY09JNzUyOUxHaEo4WTl0SjBBOTBVaWZDSmJQVi80QXdzbnlxWC9KQkpSbHpNVHJrR1JUaVppak9sbWxMYnBQY3hObzZ1UmhuMGZ6Q3gyU3ZTRmwxaDE5YzNjV0NpeGtiTDlWMXY3aEZ6N3cyYkNYY3ZtS0pGNnF1YlBtYmFCZEUxMXhOeC9KOVQyRFA0SHBST2Jud0lTQUFBPSIKICAgIH0KICB9Cn0K" + } + ] + }, + "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-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/memo.json b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/memo.json new file mode 100644 index 0000000..0b62a3f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/memo.json @@ -0,0 +1,117 @@ +{ + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b" + }, + { + "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:2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/submission-proof.json b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/submission-proof.json new file mode 100644 index 0000000..2d1f9c7 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/before-changed/submission-proof.json @@ -0,0 +1,14 @@ +{ + "kind": "source-only-native-authoring-packet", + "memo_id": "infd-20261011-zlib-remediation-r1", + "source_memo_version": 1, + "memo_sha256": "6255cb65bd4bd1f0fb0d2dd605f6f468e5096425feed24f07652d91ec6cb6a8f", + "intake_sha256": "39ae68166d42e74f956ee7e28df9a8e6589b30e511babda37ff87304069f2545", + "lifecycle_commands_sha256": "f683d222842804acd1833b97cd4fada9d24177ec1c77c86b42c24b992e43e4f7", + "register_bytes": 207511, + "document_count": 12, + "documents_hashes_verified": true, + "execution_bundle_lossless_verified": true, + "native_submitted": false, + "founder_approval": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/original-manifest.json new file mode 100644 index 0000000..b4aa8fa --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/pre-owner-attachment-767c6e93/original-manifest.json @@ -0,0 +1,3565 @@ +[ + { + "repo": "informed-decision", + "path": "deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "82e5069895b8d7f31d43db9fd6170b194d91972e22995ab755a16e63f197ca35" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "d871081999215bd3850ab1173064ed6cb6d7c23b26d9c3d5b3c5940e698d4c61" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "1e839623df15218ed46c7fb591029b9a653678cbde22898d5703a4ffbc082e99" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": null, + "staged_sha256": "2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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/initial-f170b34d/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json", + "original_sha256": null, + "staged_sha256": "68e79957aaaaa65252700db528caf651751f36b71d71a356efef7366859e84e5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": null, + "staged_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/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-postcontract-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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": null, + "staged_sha256": "39ae68166d42e74f956ee7e28df9a8e6589b30e511babda37ff87304069f2545" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": null, + "staged_sha256": "f683d222842804acd1833b97cd4fada9d24177ec1c77c86b42c24b992e43e4f7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "6255cb65bd4bd1f0fb0d2dd605f6f468e5096425feed24f07652d91ec6cb6a8f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "eaad199d86bd0126f8c1835bd5fab020535c07ea9146f80c69ce982dfcad4e9b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-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-postcontract-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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": null, + "staged_sha256": "ddfe2619f4847238fe79ec779a15b0d8df5d178cbed989ac2d73c1480b57a706" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/archive-map.json", + "original_sha256": null, + "staged_sha256": "c0d2b830a65d34378037bf2da36b4c7d9a9dda4db645ef434d74fda91142e1a9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md", + "original_sha256": null, + "staged_sha256": "670b5b01e237b551f64f46f00271beba50a2b7652c769990e525c08a3d18809b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "5d373de0b737d586fad3428f58bbd977cbe7fda880fec556805236f84c450b9e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "22ba8e719113976ed780e17c25f089da17ded60db0c3c90525d8189c8ef1e20e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json", + "original_sha256": null, + "staged_sha256": "ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json", + "original_sha256": null, + "staged_sha256": "7864b23f4fcf3d9aa95759a9e91994771b722c482e83ced868812c050fdd91be" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json", + "original_sha256": null, + "staged_sha256": "7b658eddf4177ca12125c9e75eb5a1412197e11254a571e16bb2780323702a06" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json", + "original_sha256": null, + "staged_sha256": "0dfd6454405cf6a0b08d48443c532e9396c426ed164b3f59ecfb84389193050d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "446c172a1847a2c72f8cdb47223de849392fd8de23aff07dcea55302cc3a0bd7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py", + "original_sha256": null, + "staged_sha256": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json", + "original_sha256": null, + "staged_sha256": "7fff0df04402d2c2979aa4e85396c4490f6ce0ef04fec944e880cada8617b5b9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json", + "original_sha256": null, + "staged_sha256": "912b68eed07e2fbb85cbba8660e054f6efde37a68ce1fbb7879c5db4cb02bed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json", + "original_sha256": null, + "staged_sha256": "3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "b1bf8b58b657eeef628e4ee3e5b8b6575e454cc4e9a84925fcbdcf45495a54ab" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-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/review-history/platform143/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json", + "original_sha256": null, + "staged_sha256": "247e340f77b892a7997e112405e1e05ec959fe441222069909cc7f3da6231201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "original_sha256": null, + "staged_sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "original_sha256": null, + "staged_sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": null, + "staged_sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "original_sha256": null, + "staged_sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "original_sha256": null, + "staged_sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "original_sha256": null, + "staged_sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "original_sha256": null, + "staged_sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/archive-map.json", + "original_sha256": null, + "staged_sha256": "59a183221d04cdaac3480c3463a03027d42028b3e0dec9cd021157ad828f9d3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6", + "original_sha256": null, + "staged_sha256": "8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f", + "original_sha256": null, + "staged_sha256": "be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43", + "original_sha256": null, + "staged_sha256": "c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa", + "original_sha256": null, + "staged_sha256": "d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785", + "original_sha256": null, + "staged_sha256": "e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a", + "original_sha256": null, + "staged_sha256": "faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/original-manifest.json", + "original_sha256": null, + "staged_sha256": "9d0ff679c63c58465b940ed72a258b8f9a12f413da97aad01ec7e311db55a445" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json", + "original_sha256": null, + "staged_sha256": "932ced6cbd48c84e3442c0ae47c74e2dba8f56ec9444d7efdb28caac2ad48221" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": null, + "staged_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": null, + "staged_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": null, + "staged_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": null, + "staged_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": null, + "staged_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": null, + "staged_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": null, + "staged_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": null, + "staged_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md", + "original_sha256": null, + "staged_sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/archive-map.json", + "original_sha256": null, + "staged_sha256": "fcfdfb7ffab192606433bc21c3dbb7f9715243638b7151db5f4c5c0c7b2b4667" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240", + "original_sha256": null, + "staged_sha256": "53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4", + "original_sha256": null, + "staged_sha256": "5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3", + "original_sha256": null, + "staged_sha256": "7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03", + "original_sha256": null, + "staged_sha256": "896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660", + "original_sha256": null, + "staged_sha256": "dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/original-manifest.json", + "original_sha256": null, + "staged_sha256": "5365327bc651711da992f8d7abb4e57bb96e1c1c00f1d1cabaf184e38eed2cb7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-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-postcontract-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-postcontract-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/root-authority-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json", + "original_sha256": null, + "staged_sha256": "2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json", + "original_sha256": null, + "staged_sha256": "67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-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-postcontract-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": null, + "staged_sha256": "6f95c61cf6b62fd1d07369d2f621510ced18c081e99c929bfe8927da4d884785" + }, + { + "repo": "informed-decision", + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "staged_path": "/tmp/infd-zlib-release-postcontract-stage/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "af785afbf188184b72563c10813663d44117df7cb7394ecb1b9a25cbdfea67a4", + "staged_sha256": "60fd6b2db75ee6ff4a7cd4a0601051d5ee461d423b59f3cca2facb3b174dde9e" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/archive-map.json new file mode 100644 index 0000000..dc40dea --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/archive-map.json @@ -0,0 +1,2888 @@ +[ + { + "original_path": "deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "deploy/lifecycle/admission.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "deploy/lifecycle/kustomization.yaml", + "retention": "unchanged source path" + }, + { + "original_path": "deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "deploy/lifecycle/registries.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "deploy/lifecycle/service.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "670b5b01e237b551f64f46f00271beba50a2b7652c769990e525c08a3d18809b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "5d373de0b737d586fad3428f58bbd977cbe7fda880fec556805236f84c450b9e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "22ba8e719113976ed780e17c25f089da17ded60db0c3c90525d8189c8ef1e20e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": "ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "original_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "retention": "unchanged source path" + }, + { + "original_path": "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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "retention": "unchanged source path" + }, + { + "original_path": "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": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "retention": "unchanged source path" + }, + { + "original_path": "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": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_path": "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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_path": "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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "original_sha256": "b511ecca1f21626495ae07725f5761e251d3d4beca9e3be6e7cdfdfbfe2073bc", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "retention": "unchanged source path" + }, + { + "original_path": "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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "retention": "unchanged source path" + }, + { + "original_path": "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": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "retention": "unchanged source path" + }, + { + "original_path": "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": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_path": "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": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_path": "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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "retention": "unchanged source path" + }, + { + "original_path": "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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_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", + "retention": "unchanged source path" + }, + { + "original_path": "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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "retention": "unchanged source path" + }, + { + "original_path": "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": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json", + "original_sha256": "68e79957aaaaa65252700db528caf651751f36b71d71a356efef7366859e84e5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "original_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "original_sha256": "b511ecca1f21626495ae07725f5761e251d3d4beca9e3be6e7cdfdfbfe2073bc", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "original_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "original_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": "7864b23f4fcf3d9aa95759a9e91994771b722c482e83ced868812c050fdd91be", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "7b658eddf4177ca12125c9e75eb5a1412197e11254a571e16bb2780323702a06", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "0dfd6454405cf6a0b08d48443c532e9396c426ed164b3f59ecfb84389193050d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "446c172a1847a2c72f8cdb47223de849392fd8de23aff07dcea55302cc3a0bd7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "original_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "7fff0df04402d2c2979aa4e85396c4490f6ce0ef04fec944e880cada8617b5b9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json", + "retention": "before-change copy" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json", + "original_sha256": "247e340f77b892a7997e112405e1e05ec959fe441222069909cc7f3da6231201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json", + "original_sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "original_sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "original_sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "original_sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "original_sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "original_sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "original_sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json", + "original_sha256": "932ced6cbd48c84e3442c0ae47c74e2dba8f56ec9444d7efdb28caac2ad48221", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json", + "original_sha256": "ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md", + "original_sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "original_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json", + "original_sha256": "2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json", + "original_sha256": "67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "retention": "unchanged source path" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": "912b68eed07e2fbb85cbba8660e054f6efde37a68ce1fbb7879c5db4cb02bed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json", + "retention": "before-change copy" + }, + { + "original_path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "60fd6b2db75ee6ff4a7cd4a0601051d5ee461d423b59f3cca2facb3b174dde9e", + "retained_path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "retention": "unchanged source path" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md new file mode 100644 index 0000000..e3fb6bb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/decision-packet.md @@ -0,0 +1,16 @@ +# 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; 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. + +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. + + +## Explicit recovery decision + +Also approve the proposed item19 manual service-outage recovery term above: exact historical rootconfirmed acceptance captured before release may authorize only same763/c96 one-Deployment/latestDB-preserving rollback after failedf558 service outage, within30minutes AND the existingdeadline. Root must retain freshunavailable/failedcandidate witnesses and exactcache/journal/custody pins. Duringserviceoutage subsequentrevocation cannot bechecked; this bounded uncertainty is expressly disclosed and consented to in this new decision. No401/403/revoked/conflict/mismatch/healthyservice fallback, no backup/release fallback or future/customer-production reuse. Ordinaryfreshreadback remains preferred. Recovered placement is verified separately; rollback grants no claim of currentPDPsuccess or T05closure. See fullprotocol andclose-downchecklistitem19(PROPOSEDuntilactualacceptance). diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json new file mode 100644 index 0000000..52a4737 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution-bundle.json @@ -0,0 +1,197 @@ +{ + "kind": "informed-decision.supervised-execution-source-bundle", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "codec": "gzip+base64", + "files": { + "execution/actuator.py": { + "sha256": "43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1", + "codec": "gzip+base64", + "uncompressed_bytes": 26242, + "content_base64": "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" + }, + "execution/authority_journal.py": { + "sha256": "db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb", + "codec": "gzip+base64", + "uncompressed_bytes": 16345, + "content_base64": "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" + }, + "execution/execution-plan.json": { + "sha256": "5d373de0b737d586fad3428f58bbd977cbe7fda880fec556805236f84c450b9e", + "codec": "gzip+base64", + "uncompressed_bytes": 4993, + "content_base64": "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" + }, + "execution/native_program.py": { + "sha256": "b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da", + "codec": "gzip+base64", + "uncompressed_bytes": 20362, + "content_base64": "H4sIAAAAAAACA9U8a3PbyJHf8ytwzgcRNh8g9bBEGamTLa1XFa+tkuRcJaIKBQJDEisQwGIAybRP//26ex4YgCAl+7ypu0rWBufR09PT7+nxixcvfom+sNC6dvatnC3Tglk8yKOsOLZ4WuYBs7KcZX7uF1GaWAm7Z7kVRjzzi2DBuBUV/RcvXvzl4vLT+8uT3yzX2pkk0TJL88IK0mzVDf2CFdGSdRc+X8TRtPs7T5Nuyrs56/JymuVpwDjv8hWHeTML/u7PYn/O+2kG06KvbJz7EWfWZZkgmLM8T/POZEf1hlaUFCwHFOFPwH9WchZOduxJkvmrOPVDF9fr4xfveN7FyT8/fDo59TwYwL6wAJrefz65FA0ZoMhcOe9mskO/Jzu3hBj9sJK0gAUtQCDMozjuTf3grswmO93JTlAWKdDGbBJjkAy1EbohZzGjJeAbOqKZbE7jGKHUfvTUAFsS5B9+XGpyzOgIEzijeyZRzdkfZZRLYoTMD+MoYa46jr7+mOXpMuLpLM2XfgGgRs7ooDd0esPR9Wh3vH8E/3/lOGPHkYBmCnLnHjGAc/SBwvZ4klhAJiQQta9jKQdOEjV/HZckfaha8Y+vacL6ZRHYb9QOgCR4cCVx40OUhOmDxb5keqcsuXe/vXyZ8j58RTnw2mTn75/fnr379PGX8/eTnfFkZ8CKYJD7CfBvPrjb5fhff+Uv48nOo9xhmXT8fH7fnabhyv0ISHQRm7Qs3COHtgr8VuaJVXFwX8+JkgzG4cxuwb4U7nUOVAr8DCYwD0BgL7UpkPLvLqIO/2kq+2HnDjbYTXwQH/wDhC5gcnlexoWLawKj3pVTFhQx8cucFfB3NW+y00ugQU/HhpRGomAAd9sETpyIANsXmwvSkLmu01XctWSFD4fjE2Y1UVPUMERNQuJFCDuDIZz5MQsN4RINsP6xFbKMwZaTIGLcGGE2kxTGwNwukYU643S1ZElBe4kS5F8W9kIWRDzCjbW3AirBUgEJ0mQWzZd+1j66lwud0zsIRqPh4evD0NkfbgGc3QcKMnxugIkU3IbcggV3nrn1TrDsAriu2QYD/SxTi8FnHAWkn7cQA3gzDcR5qeOGiUBnda5AY/hVRngorjvZ2Ts6Ojw4nI16zJ8Gvb1wttfz2e6wNz08Ctj+Yfh63wkJ8km1vvX5/NQKFn4yZ21L8YwFYhlhWsQ3mJf08+UHueyiKDI+HgxgD3P2e9oP0jJOl9M+T4PIjwfy52Btk/15BLwAzOgnobVtObBcC7mW4KJBHM1YsApitnF+yHgRJZLEMPXbZEdLFOmUdppzloPapgFqWyireQLWivdByn0SEmSWx7aV+yDNcMB8lQQXKdAY7cO3R1s2+2BPQGcTpa2IW6inJBQOAzbSwCb8NdW7iiTwUQCXsOKS3cs9PBI0VOqteBFEEE67wQXpQwKqlYOhYzVuAEUNigr0AJpA2D/L8KMjdIFd2Vk8G2XvxmpSbTMFW2Yx7F1uTbeDSBc+mIkcVcaNg03R0p/jOPfdycfT89OT67P6QpW5JRuGo11UNf/b9Qy9Sk3kOLw9uTrrakRsw8BbchC3QGPyKAQ3DDisx0EjLH0r86Nc6NqfRg7xITVOUOY5KNMObryrlpAnIjSyPHNADqZ5OQvQlyF/xNiocD2Eh/SEG9NVsCwFC/dOPBNaaRKvrCIVJChyEHzLWJEWFL88DixbPOnWVFZFT5TOlwDAQs8vUDSOK1NoLtAvvqKEI4YoDChpJBnOG/e73JheHazdL9LCjz0OrQlYTfuNOzx00ORKV26alqDzw4pELR6PtYGZ1U5+Bi+7lfDQvhGmUgKFX5S8ppjQLq0uGekD7HFA4ziA6JOqual+YF3DY6CBcG6612AhJURy09zyg6IErpn5EagWK4CVIzwSyydVlgM1Q0stTWIVc/aTSYay/v3UAloNf5BWgM/RwdQJDsLDwyE73N8Ph+FwHxhqF5rYkcNmu0fg3Y/YiGSyKX4kmkqFa0LKbiQXCKM1BUZDP5yopjjvP9bUqEnJH9q6OgI5SZmcMsNTDL9rTjolOxy+Z3BQ0obDNDm67v7MjTG30oJHgQj8LhHbIW1cEH8rc1ptxozYzPqec9poq57jWa3xCKlm0drdhnzNMMk0gGGZtDWqSc13cqtEA85U+wU64xAl0nukMOebjsXH9Dd6s3HskeXiXuZzOOzxL35MPbn/IKMs7yEqFgsWg5ocU8AFfKI0qyeUAOhewfVgAKZgE9K0wEU0ZdQowQxqalkswFaipMC0OUSShVofvLgiX40NpfzvSxcYGQIUiCyFeJlviRGBqGnI6aO3LXDoiUlAir7hvEbpAD1gd8OctRCzchEEXmtBJrRXIeYfJSqkWoyJG+LuTWbBelaGZDXCTQVUxpuohkFlcymGKLyNSEeqhhBIisJ+DUYa1MYSDsK+NbGNWYLAOaoZSj2AXbF4lMxjRupGuLqIm5lwOYbfLk4Dk9DYe4t+krxto4BflkkC0EFTkEITq282OUr70eitI5vG6We5kXp1A9fG/vTsK+rAgKF7c2u34a5m3rTOwqUlTOQ9SbIWDvxhsGSQZDiFKuOHARF5zk9JCgBeH0J3juoIuv5zsvPqZ1G/z8EOFgJod2jfDElzmzzphzCT84GILsxgzHpSR21QSC1abF1H2eM602/KMgR7wXS4v+/0Ziz0e3vO0eveUcj2euHh0dA/2H89PTiQ3koezSEEjy2xvHUB2wNbBHq4WDX2pQj5HUxuSimpC1OW5JmyDEIx8A7id8aBIL2lrynIjngBUS092jLPj/DDBtTaEAhjoK4Qsv/7G3JzVJjwAfwi5cVHVjyk+Z3+fSF5C7/PL94J2ot01bsYDOJHkg90YBZ+zi5EjvJjlbJ4NDcMxrSzvuE7tgL5UsjpJtK/8IFMU22klQwiv1bKqwPgplmhz4hGcXeNOZTPht2XbAaOZxIojXFsamUBAJUICaj4KaQDs5+SvaSjeFVZPIkfcAxuoMY3gI9MqeXSv6RpJmihd2435u8qosKMTVxvAhRtwttPVp1U+bnYDJsTqZENkLR2UrPExkkrnhoJUjqyFA+sidQ2auORVuSTBF5EWVOJJNDu5i9evNAXP82rHlSbf+5lj7zLuTw7Of308cM/zfudq5Nfzq5FCzAonJPreSfvrs8/ffS843AKpBogMQZZHt0Dnw/QC2YPff4HKFY46uNZGoewweawr7DBw33naNjLh2hwahcj3bx2H9JyF2KkRlOOpwAn2kFmdhxHMjQ1z43mKi0gWPjz+eng/flp86YHlLrAsZN1Q2gPijRfueSeElbcBdAxnkknq0Sqgw39K+/86vT8ssPBk/KW4JvZuAkNRYQveuTl2XtjpK3CMGqC/Zi7UXN++3R6Zsxx3Y6TvnacllWc9MBxNMxO1Qu8TAASCEPvYA3kU7ljdQMWlLxIw1WdMooqjZMEZkdLDz6b7A+nMFiFuW6QAi/yTpSgaiw81A+YnMJRtvVX67fPV9d4QRqwEDNCK+sKcGQDP1yCtKUZS/rE6YLznhsLiGMChseTooOC1XDL2Cb4CjowadtnX8Dt5dD/CpzuBwxU7DGOemVMrboMGPdqwP2Mr5PEPp7ljLn3/Zk39e/9KH6Jn7NcTlZMgz//5ogDhs837v5w9HLojPZevhxRK0L5m4t9LzsjSxOCcu81KogzH9qvhgcKABBGpb/ksfLEz/gCJCrwwYqh3a8d8Db446aBVwSMJQWFmNuVjKH2N3hyCSxlTZlVJhEEJ8qI8f7yDsbI2V3iZfsYmoMF8He9GSYoFpPtxHfQPIvAoGEwJbHWyudpimnmqRSWvGIUa8DZD8DfVCsYZ9dGBDEViaBJLZpat09M7jauQG/aLr1oJLG6wfW9XjiFj3BK32IdtLb0cdt+Y6rvU9Xd6XDkmBeYtFA9tCQ+NEJFMUQGinQTorz6sUAPYnoll2nCgS5gQz1FD5lKeNRbAScHHCQmiiNQ2ct0wrEVptQAyKiktTp+SWY8eVRm5WwWfZG6QQhq197Ir7WTeiXm2qgTlbzXe5TEixhbnyo6qP918gHkE13CYytaLsvCn8as5XI3jOYQG7vSqPfBoRztH3SwBwMaUnJyUfRBpxg9AXReAKQlbQM3OY1TvOIAGQXT3Yn95TT0x2JMn3wuKfR2d0oB01is2hf5vg5NJ4Ll6VeWeBInOWjBvogvwkptsqm6gziFPemTVDjXIJIRq2leeVaKjtpeOm/WNF5DbChTpjQYBkgE+P8gTYEtk6JDIhKWy4x3vrXl10QGrcoVCjvoVfngsfo06KDHQbdqM7vFxqFz/STNYdNVgV4pWTazHdUaNCvtVqXoMh9vszxtzxT2spvc57HheD3alMxsWmozy2Yk39ozbqAF05m7jXaYMKooJ272PHRp5zkYM0/wa52QNEV0eEt/BaODuAyxKZFXdvC5XEaFWuaxaQf1PSo568JBL/MY2Q55GWiNHWCtyhgN0ACc7cE9S+4HMGKQrYpFmuz2h6MBBy7rgdm98+F89PW7p3T8IKML6j7mAY6xt/IyBexacFRzIXF05W+iulYt5EQ66w5kbQaMSA/29igkg1EYjVoCmSqfGEazWRV/VzImUKvJGPH3WHR47XIqxggZs+2G+tF7rIMA0h6Fr4PhlO0F04Ph0VE43GMzx/cByP7scP9ofzjb2586QTCFYYeO47+ehexoNIIVd/cPDqYyDVLtUebKxTKNHWZlnoG2WzPOGHGJ8ilU9mh4MZgVFUued/H58uLT1ZnnPbNwadepZ3bFomuZ3QplIX69LPYDhqGpwtMS4iJv63QWh2OpgJnllQvoqqJqbTnY/WYs51HOy5OzvHs/j3whYENEawrBcpTMPWRk7sGM9AHXHqMe98P7iIPb56U5iF0seV2bxfFhl6oyigUY/sCTCq6uY/DiACxArq8GMEyR2xX3Go0zCzBvY31ML5nwOjt1Ke3/en19ofp+BZGImYgyLUvEnqLHk8M7oEJm3Zd+Pufdly/vHvCjtXRwwfwYxEHNbyTdUUog+m2gMi2jOPREX8fA2LaPucyGut8elZ3K4bBUjnEglvtKvDygdOtXdWNRySW4sySeomxmPBgMR6/7DvxvOD50Dh1waAlm5QU6JLtA1gxcNiagmVVt1NwXuLnuyHF0ylp3kjQfDo92bfuNC3+b8YekEXGpQSC92RtC5xYB49KYG/B0rYvn/evD+VvP065DrRv8ZfotNatMWw37u/0RZRb0pYMowpPDhLGpXTlUbI/wTPKzmDiyi9oQj6G5PppPStfTnUlHHkZFPTFdHiBaBT+7G4RYgiVXJCxLnpPJgP++9nnapy2I/KhAHZfVF3w+sZwZvFnU6Ip4RS3asCQ4okpZ4H5uHKKXcARqhmKDadlmRwjg8HbdBFHHqN4x1x27tzUlR/tEhDaZH8P+4IZM67MguR63mx3Rucns6ANTBodw29uEmxhlYNZgoBt1BLfSyyazglyn/Mf6ePLFuFtv7JqsXWNrews4pbCFUXCFau8Kky49RrdmXFUfHiOs4oA3ACwpG/EAna6QYE9rJ/XRbWhr/JgymS1r840J53Zvcev9rXQR1+P/4++K/gWwH4r9j9fDT3V/Ajrq6uPJxdWvn64NPQV+HZ5JEsCnHNgNo6CQPppsUtUddZ8cpMnwyrGGJEdFqi9xRNRVZXT0TU5dKXxnLKeg3LSEGLdonJ4T2YlwuQ2UDENuZenX1gAQO3UUKHdL5kTVr8nF1AZbF6yiJxTjJs2EDajplv/HceXmmO7JMPCZUWRLLCrjPs6efFQhsj0DEU21PbGgCxDL+qt1VeRRZoFraL37cG5N6aHB2EKvW5Y1Qo/KEgHpQ1LJZUKC3pUPbCiL3BcOrkDaNUsYNVfI+98XoCk8D8nleZbrgmbwwG2NEs+Dvb7Ai2FRhyDuaujPPl5xgRvewbHVvQloLuigxxq0BtgZc6C6TFHDanWVLMrgLPwZK1YkbrWZ6spFzWwoNLPIaV3TUVcDoA5W1nGpG5B1XCpd15jb1GVKJuGAGyCES7e+dN3+0dJk6drKcJAlRCY0eqoKp+0OvbqK7AXbynd64uaTInnRImI+YILucL8Rwq0Fb7U3RaA6gnSJWeAqzZn7DypJrOqtui25TzW3Fs+pSE7rXjlIFbg3lYWuy2giNsfLn3rkIl+gSKUkASMhSU7cbRTFQeg2bK5csNcrvNoSRCqySYCcpH62VWPhIN5WPXVc5YElmPVTgq/K3SwTurPBEF8Sg2CbpK9ArZdM1a7ZaaasfsKqZ1G1RwBr4Qc2uDS4UfOEt9q+OtAwhGPh8or6aNQfOfv9A/hr90jeUlOAgmAa1TZyJplfWz9UEGjIvsa9NFZUR6hTIRQNsOxjleHhjgMTMq0ZbFizggC/awUTVY/c2KWsG8JtUd2QiEWwsKIx9o7GkH8pt3wnGeg3tkzz1QVupcwFH51G/K7WcHF+Wv2mG3qiQJkI/5YuRzM5QBECjoTec6If2cJ+onvKNA/iazFBjFbpMPjRgLzGkYBQCP7J0pIJpBampByUawIRvKiLmk5icCWwyBKFWbw1Gas6p2OZi4AAG70MsJac+Xmw6ORwcFk5mfBXnckkfGUvYQatZPfnEKZnnSE4gpjtCdw2PhNLCiyJCQAWiIS6caTFaNDNuDe8petx+mlWeC1RU5Hh0qPtl3gXXqsPUfi/cRVwKrgIQCoLIVvUbb27+AzeQ8BYyPXFZ6PWRD7QUdUcWVXmrMrIN9dg69FYx8ZqXaow0Xj2qusTAddrli/pURT+tsmgRfhMam6d5PPU0oD15SFnRRGbfKneVD2/kFpr2R+ppLYses9Zf3xULa0fCTyxqOH0aD0valzDfNUmYvhAb6XuPPMVvit01dMwbJwps7ym+7uG94y427VjB1jrbzVBVBayQESsQfe0nIuiftNCYnvRSLEiSGWUH/xky1styxL9P+9Z1jaa41uKmqOSp78zcpk7ahugWAVGVLlIVFYmASszigVy5pStQB9bIqUmURBHB2FUq3qE9sYptZxKpRJhuHEmJDVOl2pUgjjClDeOaFGGWlpcWQQYoeJ7i8HKN0yusVzo3zFG/VjdEvlJD5f4Mtl5FNnoQIytRGdsiBgVyZR0Tycr5TFnhKP1K77xDcwmHUnLANcKd0RUlY3rNWVdZRA2Pn588oHk4+0jWVX6pwRcXDwVK2PGx3iXiE+2lSkakP+FBfAYqUHf5jesj2KLzwOryPAPYFG1gW1LrI1/1nIoEAMxcdB8EbG24DMfUqytK8OUH1va4Jg1wOBnNYAalsaAoVsfyRHER/FuQ6royLVufPrxcq/+hpk0KTp0rtCT9Jtg9jBv4A5Cdj8ANRbVXiNIB0aznNLWiOCrmzblXJN0mmOIuoKxpoJrL2G1EVQqqRml/Dn/FgIoOqAjs9hsBkQ36r2fesxZ1Tf8uS8bN7xoVHiTau5RvqS2BaHQ9bG1nE/NT6fRWw+IZunA1l9Oo3mZlrytfKcRUjaiU3E1qs/bq/xT6mj4NW5NNYv0vVTEroZxo9S6qXE4RaioykWWuotOCOCvHzK5hn5HW8wLj6oIUHlhZQHgQLZYIibMkodmSSXXG+lDsmnSNWdExsb1Q0s0/PT7pDRzv9svPUZyAH3WHV1joiAZNoiUF9ZvuQ2+16ckujGAbct6U6eZ86YGA2f1BuXdp98uPpxdn1VvszC5t0TeQq+j0gICQvPqS/KKW4MvuE1uvBE1rO1Dc5uRJCGU6xOkC0BDiE1axqx54LbxVk9n8uUc4duD8IJARQVIaxhxqiNTK+H25BPrJ19pi+2LiMx8kz0Df4gvngFAc4aacVLoFzhV9u5f1Kb/URv7WD0QfeZj8tTgWkTzWYs0ql9w3qZH5XV0No1SW9zULxd549bBvXHVxK7BP2YVowSEe7bAaeaWX6BbXzQslqaC+XztqgwwUEU2FEiALGp2XuMnUdmtuVKFmTiJqrzh7xvde6t51q7ePWzXBDU3WtR6PuFIa8g1xKt/58J167JS7/u3+8+6OEAa1UbcbRxqlbFVMgkbBImqeBl+X7ZpHDHwiUPETGFjoCaMeusHyGqFKF5Q9tIpBnHiwGVNzJpmFHBcAb1hByGSPDYfMak+nWm7Fxm27j09fhFHtw5DFT7YUhsaQCrTJPibsDCqMqoj3b6L+r8r8BMfqOsnWLlVdZEk1bMtdd9F3nqvuQ7CI5CFhaJAcX+T46AdPvPfDXDXnqpXZh+f5AQsK6y3MOSMPhFXfCuHN27Vv2u1ycMSjg0WiWFFGtVLuRgFdGi+3VdXYOT7yGGuuser32BILxzVjOHztdxlHAMtDSdw7U5TYIx3y1RaFxUdeswiN/LUPYZ69jBJdv7yP1QMW4eKTwAA" + }, + "execution/receipt_safety.py": { + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "codec": "gzip+base64", + "uncompressed_bytes": 1036, + "content_base64": "H4sIAAAAAAACA42TTW/bMAyG7/kVnC9yiq4fA3bZ2t626y7DLkVgKDIdC1UkgZK8GsP++yjZSd00A6qTKNEPX76iq6r6Yc0IIVJSMZE0oFyy8bqXoQdChdrHAEpaMCgHhNgjeNKDjAj4jCpF7Sx4TserqqpWLXYTIdSDNAnXX1bAS3dQB4zzGXy4hz8iqB73shmQAjPEJQijO1SjMpgDl+LWPeddSNu9Djkp5FDbiDvScRSXhX1mCULZNo47azxh4zwWfoiOI8Wc0i624u8rgiMoAh9PtW2y4s+L+xcN5Uq4J/Ef0hklG9ABrIvwkxIui76Rd8z8Lk3A0wpHQx8Xzm1md/ntHLXFMByQ3yPvuHqr7e5t27nGAjd7z6y7zDp8xoQWjWZXWBsHW+PU0zkXT3DLBzwyCb2cOdo2ndG7PuaA++807aebZAmDM0MuMo9SXiR1QPiV6d+IHNWizNzH7PNhaiH00uN1iHlUCbsUsP06WR3gt459j6YV68LsWPOOXPKgLdTvmcOFGJ5tacc6jh5rm/ZbpPXh2XhMih3lFO7gZhE9wO3NxcXtp9MZ7l5SWMzkYNG2uZrE1+tF8Xe7MTc+GzH3Tcj//Fxk9Q8H4RSfDAQAAA==" + }, + "execution/test_execution.py": { + "sha256": "22ba8e719113976ed780e17c25f089da17ded60db0c3c90525d8189c8ef1e20e", + "codec": "gzip+base64", + "uncompressed_bytes": 53853, + "content_base64": "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" + } + }, + "native_execution": false, + "case_evidence": { + "artifact-comparison.json": { + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "codec": "gzip+base64", + "uncompressed_bytes": 2697, + "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" + }, + "candidate-deployment.json": { + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "candidate-runtime.json": { + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "codec": "gzip+base64", + "uncompressed_bytes": 5291, + "content_base64": "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" + }, + "change_guard.py": { + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "codec": "gzip+base64", + "uncompressed_bytes": 3153, + "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" + }, + "check_installed.py": { + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "codec": "gzip+base64", + "uncompressed_bytes": 1912, + "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=" + }, + "fresh-scan-contract.json": { + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "codec": "gzip+base64", + "uncompressed_bytes": 9733, + "content_base64": "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" + }, + "fresh-scan-receipt-template.json": { + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "codec": "gzip+base64", + "uncompressed_bytes": 549, + "content_base64": "H4sIAAAAAAACA22RwY7cIAyG7/MUKOd2JxAgsKc+RO+RMWZLRcIskFFXVd+9JLOtVlWP/P7x99v+eWFsiCu80PDMhpDLC33PT5j3lFf3VDNGSNf35zVu3bCS/+wJY415+1K/gVD6OShlTJBWOx6Env04o0cblBgN6SCCkDzM0s2TRTFZId04zaPoXfgEqkvDpyMGlBYDYFtq3gvSUuh+Uo5k1knnhPJTx1kDpOREMxkwMOGkrPCdrEzAR6eKsG1Ujo/wukMlvLYS729/8mrhOGlFxmjrUDqJGkAGEE5wZVW34Iwi6JEbsN6C1xwhmJmbGbnV9kEJe0oLpFTpTiW2t+XAdmYrO52GLS91v90K1fcx/lboR2wLZn9sfettThHzekvUyC/QPureLSs18NDgH/kxzkfxzFTolkv7T3XL7bzzV+okaMRiZV1jfek7JNb37WlDYrkw6LnzHdJw+XX5DVUNbXAlAgAA" + }, + "fresh-scan-report-fixture.json": { + "sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "codec": "gzip+base64", + "uncompressed_bytes": 11944, + "content_base64": "H4sIAAAAAAACA8Va227jRhJ991cM9LBPIafv7B4gWAYZBPAimx0kk+RhsTD6anNNiVqSyowmmH/fal5kWVpzshbpPPhGSefU6ao6XU3696tXr1Y/2Tu/1r/4uimqzerNK/JVvPpN3RZB2/b9fuvh4spWm1YXG1/fFGt961fdm/7uW+10q+ENv8PfcOU6vnj9Nn6iudOEizeCEOOtpd44lVkjhBE+s1QEyk1QFOvMeesUE8wILjnGhFpsrbRKSZdx0zEB8tsihOu3DSD/s7vw6sBAmZRMG+MVkYIG6xWl3gGHssgjxgWQBOSdFI5bi1wwLqjgrGZEWE/twHAECC8ZT6zwSltECM0wp5wTTjP4khghxKSwxDCQYA0hNvAMG6El15g4dwbogddpFEwQhjNHGfWIMMyFk5ngnBrNM0cVES7DClaBGaqx9cwFhAUV4gyQISW1Q5RCUAQ0K6KlVpZjCXBKIMIdyxCWHmXSIoND5pR1XMTlwSH4M8CgDAMIholGFmWaSeWZCIY7w3BQDjkrmWPeUnhTXBptFKc4MOaRUwGfAQomGccaOachOQ4xIbGnxHCohQxCcVSzgLSTLGSSesVjtomxQgmCIE/nSRGYUaQxxlQJlTFqlPKQGkNQQIQ6zuCiosYGBXErSLmK2YMIjGWaqzNAGyxXgJUxJ7IgkGEMY0tg0a3zPJZthon3JqOZsA4phjXJOAY9SAuDyBkggZVVWEqoCGW14sEr4yFczkOGtOFcCi8ZRE2p4QQ+Qh2sYTDUZFx7Tc8AMeYSw6pBFRvnqeeQFoJBGiWIQB4ogcqBYKHuA868RFBNsKREKsVQ5s7LBklIGEE4o86qAN85gcAgfRpBOXkjEdFGMIc9aA0MKx0wNppQRAziXq86vH8NHfmPnw59D399p9dFuY+Nr8stGMUD+Q963VkITQlLcY/x+asjv/i22oTi9hisrqo2NEdX4Fo7OFGp9+BVB3h4xYE13BTu2BsW8YdFPGIRn1jEKxbxi0U8YxHfWMQ7FvGPRTxkfh/pvGT47fPBLeypGcC177Xx5WM7gKtVfZtWW785jCZN2s0mqdGNT11x65v2aBDJBIWxgyFipYEJxDKLjcNaYAFVAGmHtcfgAAQaTmYZIxxaV8fGAE+QkurHK/Ekee1/K4ZJagVNYgz0FwV+aELPoaFhjaFxIBSuiINu4zKcFm5lC12mttqV1doAYOmjoMZWvQFe//Dd2+TXdwlYjEreI/76U1mYRHKkcFLjSaym2tXWpzFo/7FN+5XpxjvOmRck9l2gDFmjMdiCUBrsUQbhkAUbIVA+EhkkwT254J6QDBKKCdTJH2HdVmVh90ekCkwYG89gKsRKOcw8dDdUsuNBcsXBLbhB1hp4m0RIZyGWaVf4PI6R5KGMPl8d/4zfu4Ja/eibXdk+bAyHDebbUjfx8qpqku397cN2shoH3tNd7J2295Dfx5vMo3oc97l0u2/vqk1S7zbOb5vHS/MwZ6+gAQVSCKcIYUROjOba+Q1M4IWvT8o+hvLzj99HAAj8jd7ev+5DfX3Cm5/g/1XX9u7rTRV//MUVTVtXXx9vyY9X8qgln5DZsyax2WBLrnbtk0JpmqXkrDSfofCMMh+he3EfpbgRbBFxSXfOeXmFHe/SMu/9fqJMU5HUaC5lkSrvIRcSM/jlRK4ixYySBsL8ADy7sO190lZV2UxoQjNlaaTKR8i5xZhdszfVxyel4JRmKUpqenkzDVT5A+RCYhJTbJq7F5TUEy4ozOrE+ngLqLC69V/YwwSepZ1OOPMj7IXlJQa2zNL/GSoH6iXF3jqznqhNMotxRJJ8AJtbAOwZu7YomwTm3GZCiUhpUrOLpTyiy0fY2UXVhifxsDMhCFqbXC5nJMp7wEWEfCEzhMwzHh248gPm3HIAHQiX32l7nsW2WYA3n8hUbaUyqcUcMoAnH/EWkGGr9Y2v6wkpLEvZTCkZyPID6BKC6v22rehEifG4lvPo6bnyEXMBOSEUk1JmafyeJx/xFpBRbNpy2opnSUik6Y14iVxs7K5ufPPhSSEiFTfbbtbgeC4bG0nzU/AlBDblxEEVxeMXmUVTU+Yj3gIytnrjy5fNUk/5EjlqmvJlzC0SLelsbVFv7dSpLuUzeVvHlI+IS0n50rg5s55x6FxM1G5XuAk3YCQO7rPoiUz5AXEBKb/BkbB6UguCNSQzOVvHlI+Ic0tZ75qpXbS78Xe5jMiSj2hLSEi6A+DLCOm5FpMz7M5J6+t1sQlVd2/55Xae/0m/+C5Ue+3K48c3pzol1P8s5jAy5SPi3FIaGzfuadtWcygZiPIRcHYh/ymL1k/fKYCtgs5zljtiyw+os0tqyhtbFhDcS9z7fWBb8MZv+2nyQVfsWTtHfnqefMSbW8bHT9OFBjNj7NbLdQxE+Qg4t5D4bH+y92c5XkeWfET7vyVcHf8vxyDo/El7qTe3TzxrHx5cw4vPed7+bv+3X99PzIGYp89coe1+W7ze7v/9oc0HmOc9bZi6RQLAF4UXwfMe5HnBdXeIbmu9vds/3S4onoUvifKIJR/QnhVunCHqtXeJ87b/P5unh2Y4wF8Q8hlT3iM+K+zt3m41DEL11I3li4p0wI83lJ8X4gddtLVvph8ykwtiHAnyHuiPeMlV/O3z1X8BmrvO4aguAAA=" + }, + "installed-zlib-proof.json": { + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "codec": "gzip+base64", + "uncompressed_bytes": 492, + "content_base64": "H4sIAAAAAAACA32QTW7CMBCF95wCZV2S8fifVe9RVdV47GlTAkGkbEDcvU6gq6q1ZGtm3vPTZ19X63XT7+m9NNt1I+PpvXyOLY/nYdyndhq5p6F7tF1/qIZ9yZtcuJ/68fA8fRBatxVrQxATXVKCzmfwnDmKRQjFCQoaJd4kryOjjmgSaA9YU5QmW0fN04xxGfr0diTePWhUq1vcnNRdlX4oUx1fa1Pb6u3ouOvyjDV90TCUXNWXRX3Yl4vzMgg/5e+iERvBO1TReQUFLUOJ4jETOINMOZDNnAiIYrGBoNbkrAsmq+oF1SxBr/e85jyduhmu7kv9wHZ5xd9kUf9DVphDilnY2JK8EMZkFIgQk0Prg9chQi5WpwBSovLaeu2TieA8W8EHWT1vq9vqG1zLL/rsAQAA" + }, + "native-preflight-full.json": { + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "codec": "gzip+base64", + "uncompressed_bytes": 21208, + "content_base64": "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" + }, + "native-preflight.json": { + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "codec": "gzip+base64", + "uncompressed_bytes": 1871, + "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" + }, + "post-ready-native-outcomes-command.py": { + "sha256": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599", + "codec": "gzip+base64", + "uncompressed_bytes": 4203, + "content_base64": "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" + }, + "preparation-failure-history.json": { + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "codec": "gzip+base64", + "uncompressed_bytes": 1070, + "content_base64": "H4sIAAAAAAACA5VSwW7bMAy99yuInIsuVq1IXu+7rQN2HYaAkqhYqC0ZkpwsG/bvo5rmsKLDtoNhmH4kH997P24ANhFrONKevCdbN+/B41Totv0JMdSA007tZ4zBU6n7MqKQO0ZtOuqNxPutFkPvpNZWGa8kSScUmV5J7MiJVrHaykH73hmhpfXbTvbKG7H50wpzrlT2mSqGSO4PhGyal4kq7Utas+VXxKWMqf6tL6ZKjf1jqnDtqeTAkE+ZYI0YY1qjJac7wJmi46c+wFNMpzhiGWHJVCgfyd0CfUNbIZNNsdS82hpSBFxdaBMLLZix0nSG4GFJpQQz0R08JiZmcrDYUHbCMEPycOUNKYdDiDjBsw53v8mku7ec0B06M1Cn+sHtjBt8NygpURjjlJGstx4IlRZ9L+W9MsZ4GoSkjpHaY69er/gXbfnci7Quo69ieIuXQtu53aAtGuG8cbQzdou6NxadE/ZeiMGJ3vfYoxw6IT0p0TKy86gFbV94XRf8HytqYS5c+sKfXPjIEHChLFgte4ilUIG0EDvEpu1DrGwz1MQ+zBwROIU6prXC3PAhHqCZOfP6/MyKJ36+ABc8TwkdTGifmutXVsHxwFDP714vufZ/4ByNUCxGOHAUAK2lpUWC5oXb+JR4iQjj1qmCTUcedGgZdZQhp1Q5eRQWJskKOKx4Hf3pFBuCjoFOnOwDxp16aNle+agcvjeetY2y45ojJHMJtO423P/1WcDCx+5r5kC8yHrz8+YXqlwcii4EAAA=" + }, + "published-verification.json": { + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "codec": "gzip+base64", + "uncompressed_bytes": 5912, + "content_base64": "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" + }, + "rollback-deployment.json": { + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "rollback-preflight-full.json": { + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "codec": "gzip+base64", + "uncompressed_bytes": 21208, + "content_base64": "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" + }, + "rollback-preflight.json": { + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "codec": "gzip+base64", + "uncompressed_bytes": 1872, + "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==" + }, + "root-authority-receipt-template.json": { + "sha256": "2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0", + "codec": "gzip+base64", + "uncompressed_bytes": 941, + "content_base64": "H4sIAAAAAAACA4VS0WobMRB891cIP+dydwaHJlBKwWnxQ01IA308ZGnOFtFJ15Xk2Cn9967u7DhpA30Tq9nd2Zn5NRFi2pPvfZC2MXp6I6bL1ZdF8eOuqKrqunio5uWzNesP8+q6LqieXuSODp0/oo1rdTGrZld1VddFhhaEDtrIaLx727EDBS5yW30uhq2cza+45pK1Qzn4RAoNYWeO8Jcv7KFS9NT0Vrp3Wh1v3aHxKSrf4R2AVAwYqGXyd7erxXL1daQoU9x6MvHQdF4jf39efFuult8fbu9HRJS0Qcw/BGm7m8e0BjlEhJKksUY6haouWRJPLEGhocYLhm6+3rRGDcubDrxsEJC8j0Vr9ozn7RvjivEIllHqtVSPYzclFw2flFmCnzwHutmQdJlQK23AgDud/jOBDnl+aU0LdVAWZdY7lP91rDzOCJ+Ohn2sX1/Aa2V8rWk2Ck/NORRntXvO1u6UrJeyNoEDZwYh/mpQCn38Z8PaJ6e5ysTkhpPhrc3KND2NgrBwz9BvdHA+Dh4+oOOsRAgTBNcEc9Vgn8oTt0txzw6IgBhEUL6H5qmnoYMkkRKEd/YgZBtBgjOUpBXKu9Zkn0U70MsfmX1OgfCtiFteiT2jhcOT6JkwYskDunAhCFEaF8RoeZ6WiNjXk+liDQ4RGGchAy6nk9+TP8/xgVatAwAA" + }, + "root-recovery-receipt-template.json": { + "sha256": "67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297", + "codec": "gzip+base64", + "uncompressed_bytes": 1033, + "content_base64": "H4sIAAAAAAACA22TTY+bMBCG7/srLM5L1pBAyJ56qCr1UlXVSj1awzAk7hob2SYqrfrfO3xoS7I9Ic/reefDD78fhEhetW2SZ5Fo2zrfUZM2hDpoZ3feuZiGoSd/1YEFN0Q4U+oJ3ZX8mDxO6b13vQtglJ5dPn/59DH9/jWVUp7SF1k8/TK6rgp5ylKfLRnBDR5JebrOZTjLDsbMUkedU+ECeVFuw/0FAm0DngxxSEGM1PVxqf2mIuCF/mMzzaO4c91qmhJaMIGWumAHHuHfrOptyO01HLwnG5WFqK+keB/oOgoKDejuztLVgb3YCeK2hzWVt1ZzixHiELYy/eyNRh2n7bhXuh1rrY7OtnzpxlY3rOg4KudVQNeT6nToIOJle2vqSPPqLwQmXsat1FBv3NhN/sPdNrmcPnfQ3wv9Fe9D3hlTA74q3TEpEw/M1Jl+uB26wbiu3gWHGszTenx6B92H5dmej+Ue9+VB5ljVdEQ8YFY3GZRZme/527anLCubIs8PWXU8HvKiPhRwlFmFKKtqD8ltPwtzU0N4KmuJZVNVGVVF0WRNVlRS7jlEJ0nt/iTzMqd8MWhBG35DBNvoBuINhNbN5+SFETSsCQ4IwMgkCWabXwRJOC+g59e+gtmJb2s7M4OjGAIFvqDP2jJ8y981gUeakV728LhyyD3MK92c2ZYpYJycXcdjEZqRHWYhCG1D5IhwrQCx0mPGZaS3iXbJw5+Hv9yIXHoJBAAA" + }, + "runtime-receipt.json": { + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "codec": "gzip+base64", + "uncompressed_bytes": 808, + "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==" + }, + "scan-receipt.json": { + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "codec": "gzip+base64", + "uncompressed_bytes": 4538, + "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==" + }, + "sealed-live-deployment.json": { + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "sealed-native-dependencies.json": { + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "codec": "gzip+base64", + "uncompressed_bytes": 1841, + "content_base64": "H4sIAAAAAAACA71Uy27bMBC85ysMnUtZoiVLSm9NkaKHpEEPyaEoAj5WNhuJVEnKQBrk37uUZSd+II9DexKw3J2dnZ3Vw8lkEgmja7VoWRedTh4wgCHWqWuwThmNsWiVRh/WcdW2vWe8AQx728MYvlNahsSzAekCkcaHFjyTzLMtcsDW2njmEds9C4cHuzBCxuHTWfMrVmbqLRMIviBqwFe6NrYFSSQIFdidTrctTw8epwcRYnvtVQtkLihNy6KUSb6ZbT3ffkUsTN+YlsfOCMWaKZOtchtdWIc8VyA/Tr5enn8mN1ckSZJiInqPURuNsI8b/EizFo6O8TKvoc51TBwvfsrr1ypVSZrOJJUkz2RFMigp4amckSrhWQUcJOX5mtxILRJMG60Ea27Dsm7dktF8HqBKENmcypTOsiLPyjpP5gDA6xRmohAiK+ZZmaSVKFlRzsokk0nFhSgqntSUsnoe2gxNom4lXrfXxkdX4dF50P7aNH0LZw1T7f/z1NH2b/LXwOtf+ekZbreK73oOVoMHF4biqBwRpu0ajAxz3YN7ucL0WMLvsUp7a5oGOxyWrQYBYo6a79U7byxbAAmUh9HW9ZZpsQQbMhqDjiId88sjiHtg0IBA4kQbObiczqp4TmOa5HFF46VxPnYgegsOLGoRY+XroO9heHCstdKsUX/QClj046nVbg+0dcD3yD4scUz7+YaT37HKe09clgmnOU9JmqWMZFnKCUetSFXWjNayKnkhdk/cdSB2LkYIcO4C5d6b7zsweWOVh28a2RwMhBswvRWwd2cWfvfg/G40tF3vIHBOv6ho+/R4oPeYibfm3OWo2hEHjau+GH1yrhpw93ir7X7GBiNs6B1yPf9h3XZL5gaQT+FYopPHk79qFEgoMQcAAA==" + }, + "source-commit-proof.json": { + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "codec": "gzip+base64", + "uncompressed_bytes": 239, + "content_base64": "H4sIAAAAAAACA12OwW6EMAxE73wF4rwHIDY2/ZWqipzYKZEKrAgtWlX998JKvfT6NPNmvqu6bjb7yiWvS/NSN2OAEHpU1+MwshiCMzIWFhcdjr2GLiGn2Nz+mnaY+lmWnKzsvkxyNi8T9SACRGShizzSoDywYcIWgFyCMOgp6pwStsoklgQjK0ZpCcj+L9xln8rpJXjyOZdZ9jjZxV7fnmw9Ftv8ZqJ+XT4e/j1ff9bjTOzbp1U/1S/dW3277wAAAA==" + }, + "sqlite_readonly.py": { + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "codec": "gzip+base64", + "uncompressed_bytes": 4610, + "content_base64": "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" + } + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json new file mode 100644 index 0000000..268c67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/execution-plan.json @@ -0,0 +1,69 @@ +{ + "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": "43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1", + "authority_journal.py": "db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb", + "native_program.py": "b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da", + "receipt_safety.py": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + "case_files": { + "post-ready-native-outcomes-command.py": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599", + "scan-receipt.json": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "source-commit-proof.json": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "candidate-deployment.json": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "preparation-failure-history.json": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "root-authority-receipt-template.json": "2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0", + "artifact-comparison.json": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "rollback-preflight-full.json": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "rollback-deployment.json": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "fresh-scan-report-fixture.json": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "native-preflight-full.json": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "sqlite_readonly.py": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "published-verification.json": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "sealed-native-dependencies.json": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "sealed-live-deployment.json": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "native-preflight.json": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "fresh-scan-receipt-template.json": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "root-recovery-receipt-template.json": "67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297", + "rollback-preflight.json": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "installed-zlib-proof.json": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "runtime-receipt.json": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "change_guard.py": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "check_installed.py": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "candidate-runtime.json": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "fresh-scan-contract.json": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2" + }, + "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-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py new file mode 100644 index 0000000..3cb541f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/execution/test_execution.py @@ -0,0 +1,670 @@ +"""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, recovery_authority +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} + contract=json.loads((CASE/'fresh-scan-contract.json').read_text()) + report=json.loads((CASE/'fresh-scan-report-fixture.json').read_text()) + self.assertEqual(fresh_scan(receipt,report,contract,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=[]),lambda r,p:p.update(Results=[{}]),lambda r,p:p['Results'].pop(),lambda r,p:p['Results'][0]['Packages'].pop(),lambda r,p:p['Results'][0]['Packages'][0].update(Version='old'),lambda r,p:p['Metadata'].update(ImageID='other'),lambda r,p:p['Metadata']['DiffIDs'].pop(),lambda r,p:p['Metadata']['ImageConfig']['config']['Labels'].update(**{'org.opencontainers.image.revision':'other'}),lambda r,p:p.update(SchemaVersion=1),lambda r,p:p.update(ArtifactType='filesystem')] + for mutate in mutations: + r,p=copy.deepcopy(receipt),copy.deepcopy(report);mutate(r,p) + with self.assertRaises(ValueError):fresh_scan(r,p,contract,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, ephemeral=False, expire_recovery_before_effect=False): + writes = [] + calls = [] + elapsed=[0];real_datetime=datetime.datetime + class Clock(real_datetime): + @classmethod + def now(cls,tz=None):return real_datetime.now(tz)+datetime.timedelta(seconds=elapsed[0]) + + 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'],**({'ephemeralContainers':[{'name':'debug','image':'unexpected'}]} if ephemeral else {})}, + '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 expire_recovery_before_effect and '--dry-run=server' in argv:elapsed[0]=200 + 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), patch('datetime.datetime',Clock), 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) + + def test_actual_pod_ephemeral_container_refuses_before_native_effect(self): + objects,payload=self.fixture();receipt,writes,calls=self.execute_fake(objects,payload,ephemeral=True) + self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[]) + self.assertFalse(any(argv[:2]==['kubectl','exec'] for argv in calls)) + + def test_outage_native_rollback_requires_failed_candidate_and_same_source(self): + objects,payload=self.fixture();payload.update(phase='rollback',outage_recovery=True,recovery_release_started_at=datetime.datetime.now(datetime.timezone.utc).isoformat()) + objects['deployment']['spec']['template']['spec']['containers'][0]['image']=actuator.IMAGE + objects['deployment']['status'].update(readyReplicas=0,updatedReplicas=0) + objects['application']['spec']['source']['targetRevision']=REVISION + self.assertTrue(self.execute_fake(objects,payload)[0]['all_checks_pass']) + for defect in ('healthy','baseline','wrongsource'): + o,p=copy.deepcopy(objects),copy.deepcopy(payload) + if defect=='healthy':o['deployment']['status']['readyReplicas']=1 + elif defect=='baseline':o['deployment']['spec']['template']['spec']['containers'][0]['image']=p['sealed']['spec']['template']['spec']['containers'][0]['image'] + else:o['application']['spec']['source']['targetRevision']='other' + receipt,writes,calls=self.execute_fake(o,p);self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[]) + + def test_native_recovery_window_rechecked_immediately_before_effect(self): + objects,payload=self.fixture();payload.update(phase='rollback',outage_recovery=True,recovery_release_started_at=(datetime.datetime.now(datetime.timezone.utc)-datetime.timedelta(seconds=1700)).isoformat()) + objects['deployment']['spec']['template']['spec']['containers'][0]['image']=actuator.IMAGE + objects['deployment']['status'].update(readyReplicas=0,updatedReplicas=0) + objects['application']['spec']['source']['targetRevision']=REVISION + receipt,writes,calls=self.execute_fake(objects,payload,expire_recovery_before_effect=True) + self.assertFalse(receipt['all_checks_pass']);self.assertEqual(writes,[]) + self.assertTrue(any('--dry-run=server' in argv and argv[:2]==['kubectl','patch'] for argv in calls)) + + +class FullCliDispatch(unittest.TestCase): + def invoke(self,phase,corrupt_source=False,outage=False,denial=False): + import hashlib,shutil + import authority_journal + realpath=Path;called=[];output=io.StringIO() + with tempfile.TemporaryDirectory() as folder: + base=Path(folder);custody=base/'private';custody.mkdir(mode=0o700) + empty=custody/'empty-docker-config';empty.mkdir(mode=0o700) + owner=base/'owner';owner.mkdir();case=owner/'case';case.mkdir();execution=case/'execution';execution.mkdir() + for name in ('actuator.py','authority_journal.py','native_program.py','receipt_safety.py'): + shutil.copyfile(Path(__file__).parent/name,execution/name) + (case/'memo.json').write_text('{}') + for name in ('sealed-live-deployment.json','sealed-native-dependencies.json','candidate-deployment.json','rollback-deployment.json','check_installed.py','sqlite_readonly.py','change_guard.py','installed-zlib-proof.json','fresh-scan-contract.json'): + shutil.copyfile(CASE/name,case/name) + names=('deploy/lifecycle/admission.candidate.json','deploy/lifecycle/service.candidate.json','deploy/lifecycle/kustomization.yaml','deploy/lifecycle/registries.candidate.json') + for name in names: + target=owner/name;target.parent.mkdir(parents=True,exist_ok=True);target.write_text('sourcefixture') + plan={'state':'prepared-unapproved','published_artifact_verified':True,'proposal_id':'INFD-WP-0009-T05/zlib85091-r1','executor_files':{n:actuator.sha(execution/n) for n in ('actuator.py','authority_journal.py','native_program.py','receipt_safety.py')},'case_files':{p.name:actuator.sha(p) for p in case.iterdir() if p.is_file() and p.name!='memo.json'},'owner_source_files':{n:actuator.sha(owner/n) for n in names}} + (execution/'execution-plan.json').write_text(json.dumps(plan)) + receipt,outcome=accepted();receipt.update(native_outcome_sha256=hashlib.sha256(json.dumps(outcome).encode()).hexdigest(),executor_plan_sha256=actuator.sha(execution/'execution-plan.json')) + mapping={} + for fixed,data in [('/tmp/security-infd-zlib-root-authority.json',receipt),('/tmp/security-infd-zlib-native-outcome-latest.json',outcome),('/tmp/security-infd-zlib-fresh-scan-receipt.json',{'fixture':True}),('/tmp/security-infd-zlib-fresh-scan-full.json',{'fixture':True})]: + target=base/Path(fixed).name;target.write_text(json.dumps(data));target.chmod(0o600);mapping[fixed]=target + scanreceipt=mapping['/tmp/security-infd-zlib-fresh-scan-receipt.json'];scanreceipt.write_text(json.dumps({'full_report_sha256':actuator.sha(mapping['/tmp/security-infd-zlib-fresh-scan-full.json'])})) + identity={'proposal':plan['proposal_id'],'source_revision':REVISION,'memo_sha256':actuator.sha(case/'memo.json'),'plan_sha256':actuator.sha(execution/'execution-plan.json')} + blob=b'private synthetic full-cli snapshot';metadata={'all_checks_pass':True,'snapshot_file':'drill.sqlite','snapshot_bytes':len(blob),'snapshot_sha256':hashlib.sha256(blob).hexdigest(),'snapshot_readonly':COUNT,'pod_name':'fixture-pod','pod_uid':'fixture-poduid'} + j=Journal(custody,identity) + predecessors=list(actuator.PHASES[:actuator.PHASES.index(phase)]) + for predecessor in predecessors: + j.start(predecessor,{}) + result=metadata if predecessor=='drill-backup' else {'all_checks_pass':True} + if predecessor in ('release','rollback'):result={'all_checks_pass':True,'operation_requested':True,'prune':False,'source_revision':REVISION,'resources':[{'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'}]} + j.finish(predecessor,result) + j.close() + if outage: + receipt.update(memo_sha256=identity['memo_sha256'],bounded_outage_rollback_pre_authorized=True,verified_at='2026-10-11T01:59:00Z',accepted_at='2026-10-11T01:58:00Z') + outcome['dispositions'][0]['disposition']['at']=receipt['accepted_at'] + cache={'root_authority':receipt,'native_outcome':copy.deepcopy(outcome),'memo_sha256':identity['memo_sha256'],'source_revision':REVISION,'plan_sha256':identity['plan_sha256']} + cp=custody/'release-authority-cache.json';cp.write_text(json.dumps(cache));cp.chmod(0o600) + data=json.loads(j.path.read_text());data['phases']['release'].update(started_at='2026-10-11T01:59:30Z',release_authority_cache_sha256=actuator.sha(cp));j.path.write_text(json.dumps(data)) + sealed=json.loads((case/'sealed-live-deployment.json').read_text());deps=json.loads((case/'sealed-native-dependencies.json').read_text()) + probe={'kind':'informed-decision.root-supervised-outage-recovery','proposal_id':plan['proposal_id'],'source_revision':REVISION,'memo_sha256':identity['memo_sha256'],'phase':phase,'release_attempt_id':data['phases']['release']['attempt_id'],'cache_sha256':actuator.sha(cp),'root_verified':True,'manual_supervised_recovery':True,'current_native_outcomes_claimed':False,'observed_at':NOW.isoformat(),'native_probe_status':503,'explicit_revoked':False,'current_conflict':False,'identity_or_scope_mismatch':False,'service_healthy':False,'deployment_uid':sealed['metadata']['uid'],'configmap_uid':deps['configmap']['metadata']['uid'],'pvc_uid':deps['pvc']['metadata']['uid'],'rollback_image':sealed['spec']['template']['spec']['containers'][0]['image'],'rollback_source':'c96b0c6d881e855d1d158003c6de90ef390262e2','failed_candidate':{'image':actuator.IMAGE,'application_source':REVISION,'ready_replicas':0}} + if phase=='rollback-verify': + witness=copy.deepcopy(probe);witness['phase']='rollback' + probe.update(original_outage_receipt_sha256='d'*64,recovered_image=probe['rollback_image'],recovered_application_source=probe['rollback_source'],ready_replicas=1) + probe.pop('failed_candidate') + data['phases']['rollback'].update(outage_recovery_receipt_sha256='d'*64,outage_recovery_anchor=witness) + data['phases']['rollback']['result']['source_revision']=probe['rollback_source'] + j.path.write_text(json.dumps(data)) + rp=base/'root-recovery.json';rp.write_text(json.dumps(probe));rp.chmod(0o600);mapping['/tmp/security-infd-zlib-root-recovery-receipt.json']=rp + if denial:outcome['http_status']=403 + native=mapping['/tmp/security-infd-zlib-native-outcome-latest.json'];native.write_text(json.dumps(outcome));receipt['native_outcome_sha256']=actuator.sha(native);mapping['/tmp/security-infd-zlib-root-authority.json'].write_text(json.dumps(receipt)) + if corrupt_source:(owner/names[0]).write_text('changed') + def mapped(value):return mapping.get(str(value),realpath(value)) + def run(argv,body=None,**kwargs): + if argv[:4]==['git','-C',str(owner),'rev-parse']:return subprocess.CompletedProcess(argv,0,REVISION+'\n','') + if argv[:4]==['git','-C',str(base),'check-ignore']:return subprocess.CompletedProcess(argv,0,'ignored','') + if argv[:2]==['ssh','railiance01']: + import ast + parsed=ast.parse(body);node=next(x for x in parsed.body if isinstance(x,ast.Assign) and any(isinstance(t,ast.Name) and t.id=='payload' for t in x.targets));payload=json.loads(ast.literal_eval(node.value.args[0]));called.append(payload) + self.assertEqual(json.loads(j.path.read_text())['phases'][phase]['state'],'RUNNING') + if phase=='drill-copy':self.assertEqual(payload['snapshot_identity'],metadata) + if phase in ('verify','rollback-verify'):self.assertEqual(payload['operation_intent']['state'],'COMPLETE');self.assertFalse(payload['operation_intent']['result']['prune']) + result=metadata if phase=='drill-copy' else {'all_checks_pass':True,'phase':phase} + return subprocess.CompletedProcess(argv,0,json.dumps(result),'') + raise AssertionError('unexpected CLI transport') + def git_show(argv,**kwargs): + self.assertEqual(argv[:4],['git','-C',str(owner),'show']);data=(owner/argv[4].split(':',1)[1]).read_bytes();return subprocess.CompletedProcess(argv,0,data,b'') + real_popen=subprocess.Popen + def binary(*args,**kwargs):return real_popen([sys.executable,'-c','import sys;sys.stdout.buffer.write('+repr(blob)+')'],stdout=subprocess.PIPE,stderr=subprocess.DEVNULL) + argv=['actuator.py','--phase',phase,'--root-authority-receipt','/tmp/security-infd-zlib-root-authority.json','--root-native-outcome','/tmp/security-infd-zlib-native-outcome-latest.json','--root-fresh-scan-receipt','/tmp/security-infd-zlib-fresh-scan-receipt.json','--source-revision',REVISION] + if outage:argv+=['--root-recovery-receipt','/tmp/security-infd-zlib-root-recovery-receipt.json'] + real_recovery=authority_journal.recovery_authority;real_authority=authority_journal.authority + def authority_dispatch(*args,**kwargs): + if outage and len(args)<6:raise ValueError('service unavailable') + return real_authority(*args,**kwargs) if outage else {'fixture':True} + with patch.object(actuator,'ROOT',execution),patch.object(actuator,'CASE',case),patch.object(actuator,'OWNER',owner),patch.object(actuator,'CUSTODIAN',base),patch.object(actuator,'CUSTODY',custody),patch.object(actuator,'Path',side_effect=mapped),patch.object(actuator,'run',side_effect=run),patch('subprocess.run',side_effect=git_show),patch('subprocess.Popen',side_effect=binary),patch.object(authority_journal,'authority',side_effect=authority_dispatch),patch.object(authority_journal,'recovery_authority',side_effect=lambda *args: real_recovery(*args,now=NOW)),patch.object(authority_journal,'fresh_scan',return_value={'fixture':True}),patch('sys.argv',argv),redirect_stdout(output): + if corrupt_source or denial: + with self.assertRaises(ValueError):actuator.main() + else:actuator.main() + state=json.loads(j.path.read_text())['phases'].get(phase) + return called,state,output.getvalue() + + def test_main_cli_copy_binds_snapshot_and_retains_private_bytes(self): + calls,state,output=self.invoke('drill-copy');self.assertEqual(len(calls),2);self.assertEqual(state['state'],'COMPLETE');self.assertNotIn('private synthetic',output) + + def test_main_cli_verify_binds_completed_release_intent(self): + calls,state,output=self.invoke('verify');self.assertEqual(len(calls),1);self.assertEqual(state['state'],'COMPLETE') + + def test_main_cli_release_dispatches_only_after_durable_phase(self): + calls,state,output=self.invoke('release');self.assertEqual(len(calls),1);self.assertEqual(state['state'],'COMPLETE') + + def test_main_cli_source_hash_refuses_before_journal_or_transport(self): + calls,state,output=self.invoke('release',corrupt_source=True);self.assertEqual(calls,[]);self.assertIsNone(state);self.assertEqual(output,'') + + def test_main_cli_bounded_outage_rollback_uses_retained_cache_and_witness(self): + calls,state,output=self.invoke('rollback',outage=True) + self.assertEqual(len(calls),1);self.assertTrue(calls[0]['outage_recovery']) + self.assertEqual(state['state'],'COMPLETE');self.assertIn('outage_recovery_receipt_sha256',state) + self.assertFalse(state['approval']['current_revocation_verified']) + + def test_main_cli_current403_prevents_cached_fallback_before_phase(self): + calls,state,output=self.invoke('rollback',outage=True,denial=True) + self.assertEqual(calls,[]);self.assertIsNone(state);self.assertEqual(output,'') + + def test_main_cli_outage_recovery_verify_binds_prior_completed_rollback(self): + calls,state,output=self.invoke('rollback-verify',outage=True) + self.assertEqual(len(calls),1);self.assertTrue(calls[0]['outage_recovery']) + self.assertEqual(calls[0]['operation_intent']['state'],'COMPLETE') + self.assertEqual(state['state'],'COMPLETE');self.assertFalse(state['approval']['current_revocation_verified']) + + +class PacketBindingAndBodyLimit(unittest.TestCase): + def test_lossless_gzip_bundle_retains_exact_source_hashes(self): + import gzip,base64,hashlib + bundle=json.loads((CASE/'execution-bundle.json').read_text()) + for group in ('files','case_evidence'): + for relative,item in bundle[group].items(): + data=gzip.decompress(base64.b64decode(item['content_base64'],validate=True)) + self.assertEqual(len(data),item['uncompressed_bytes']);self.assertEqual(hashlib.sha256(data).hexdigest(),item['sha256']) + self.assertEqual(data,(CASE/relative).read_bytes()) + item=next(iter(bundle['files'].values()));changed=bytearray(base64.b64decode(item['content_base64']));changed[-1]^=1 + with self.assertRaises((OSError,EOFError)):gzip.decompress(changed) + + def test_actual_source_http_256kib_limit_before_register_side_effect(self): + import os + script="""import io,json,sys +sys.dont_write_bytecode=True +sys.path.insert(0,'/home/worsch/informed-decision') +from informed_decision.lifecycle_http import LifecycleAPI,MAX_BODY +from informed_decision.lifecycle_service import Caller +from informed_decision.lifecycle_service import LifecycleError +from informed_decision.intake import validate_submission,SubmitterGrant +from informed_decision.lifecycle_commands import decode_memo,decode_documents +from pathlib import Path +root=Path(sys.argv[1]);commands=json.loads((root/'lifecycle-commands.json').read_text());envelope=json.loads((root/'intake.json').read_text()) +validate_submission(envelope,submitter_id='state-hub',grant=SubmitterGrant('state-hub',frozenset({'decision-record'}),frozenset({'net-kingdom-admins'}))) +class Service: + calls=0 + def _caller(self,caller):pass + def register(self,*args,**kwargs):self.calls+=1;return 'fixture-event' +service=Service();api=LifecycleAPI(service,lambda token:object.__new__(Caller)) +typedmemo=decode_memo(commands[0]['register']['memo']);decode_documents(commands[0]['register']['documents'],typedmemo) +try:decode_documents(commands[0]['register']['documents']+[commands[0]['register']['documents'][0]],typedmemo) +except ValueError:pass +else:raise AssertionError('duplicate digest accepted') +body=json.dumps(commands[0]['register']).encode();assert len(body)<240*1024 +base={'REQUEST_METHOD':'POST','PATH_INFO':'/v1/decisions','QUERY_STRING':'','CONTENT_TYPE':'application/json','HTTP_AUTHORIZATION':'Bearer synthetic-fixture','HTTP_IDEMPOTENCY_KEY':'fixture'} +status,result=api.dispatch({**base,'CONTENT_LENGTH':str(len(body)),'wsgi.input':io.BytesIO(body)});assert status==200 and service.calls==1 +oversize=b' '+body+b' '*(MAX_BODY+1-len(body)-1) +try:api.dispatch({**base,'CONTENT_LENGTH':str(len(oversize)),'wsgi.input':io.BytesIO(oversize)}) +except LifecycleError as e:assert e.status==413 +else:raise AssertionError('oversize accepted') +assert service.calls==1 +print(json.dumps({'synthetic_body_limit_verified':True,'intake_validated':True,'register_bytes':len(body)})) +""" + result=subprocess.run([sys.executable,'-c',script,str(CASE)],capture_output=True,text=True,env={**os.environ,'PYTHONDONTWRITEBYTECODE':'1'}) + self.assertEqual(result.returncode,0,result.stderr);self.assertTrue(json.loads(result.stdout)['synthetic_body_limit_verified']) + + +class OutcomeMetadataAndOutage(unittest.TestCase): + def load_probe(self): + import runpy + return runpy.run_path(str(CASE/'post-ready-native-outcomes-command.py')) + + def outcome(self): + r,o=accepted();o['review'].update(note='PRIVATE_SENTINEL',unknown='PRIVATE_SENTINEL') + o['dispositions'][0]['disposition'].update(note='PRIVATE_SENTINEL',reasons=['PRIVATE_SENTINEL'],unknown='PRIVATE_SENTINEL') + o['dispositions'][0].update(unknown='PRIVATE_SENTINEL');o['unknown']='PRIVATE_SENTINEL';return o + + def test_allowlist_omits_private_note_reasons_unknowns(self): + probe=self.load_probe();safe=probe['safe_outcome_metadata'](self.outcome());raw=json.dumps(safe) + self.assertNotIn('PRIVATE_SENTINEL',raw);self.assertNotIn('note',raw);self.assertNotIn('reasons',raw) + self.assertEqual(safe['dispositions'][0]['disposition']['actor']['kind'],'person') + + def test_invalid_and_oversize_metadata_refuse_without_echo(self): + probe=self.load_probe() + mutations=[lambda o:o['review'].update(stale='PRIVATE_SENTINEL'),lambda o:o['review'].update(memo_id='x'*257),lambda o:o.update(dispositions=[o['dispositions'][0]]*33),lambda o:o['dispositions'][0]['disposition']['actor'].update(sub='PRIVATE_SENTINEL '*30),lambda o:o['dispositions'][0]['disposition'].update(memo_version=True),lambda o:o['dispositions'][0]['disposition'].update(at='PRIVATE_SENTINEL')] + for mutate in mutations: + o=self.outcome();mutate(o) + with self.assertRaises(ValueError) as error:probe['safe_outcome_metadata'](o) + self.assertNotIn('PRIVATE_SENTINEL',str(error.exception)) + + def test_actual_command_mocked_opener_never_prints_private_fields(self): + import types,runpy,urllib.request + module=types.ModuleType('api.services.memo_dispatch');module.ORIGIN='http://synthetic.invalid';module.NoRedirect=urllib.request.HTTPRedirectHandler;module.token_file=lambda path:'synthetic-fixture' + class Response: + status=200 + def __enter__(self):return self + def __exit__(self,*args):pass + def read(self,bound):return json.dumps(OutcomeMetadataAndOutage.outcome(self_test)).encode() + self_test=self + class Opener: + def open(self,request,timeout):return Response() + output=io.StringIO() + with patch.dict('sys.modules',{'api.services.memo_dispatch':module}),patch('urllib.request.build_opener',return_value=Opener()),redirect_stdout(output): + runpy.run_path(str(CASE/'post-ready-native-outcomes-command.py'),run_name='__main__') + self.assertNotIn('PRIVATE_SENTINEL',output.getvalue());self.assertNotIn('synthetic-fixture',output.getvalue()) + self.assertTrue(json.loads(output.getvalue())['native_provider_path_returned']) + + def recovery_fixture(self): + receipt,outcome=accepted();receipt.update(bounded_outage_rollback_pre_authorized=True,verified_at='2026-10-11T01:59:00Z',accepted_at='2026-10-11T01:58:00Z') + outcome['dispositions'][0]['disposition']['at']=receipt['accepted_at'] + sealed=json.loads((CASE/'sealed-live-deployment.json').read_text());deps=json.loads((CASE/'sealed-native-dependencies.json').read_text()) + cache={'root_authority':receipt,'native_outcome':outcome,'memo_sha256':'a'*64,'source_revision':REVISION,'plan_sha256':'b'*64} + journal={'identity':{'plan_sha256':'b'*64},'phases':{'release':{'state':'COMPLETE','started_at':'2026-10-11T01:59:30Z','attempt_id':'release-fixture','release_authority_cache_sha256':'c'*64}}} + probe={'kind':'informed-decision.root-supervised-outage-recovery','proposal_id':'INFD-WP-0009-T05/zlib85091-r1','source_revision':REVISION,'memo_sha256':'a'*64,'phase':'rollback','release_attempt_id':'release-fixture','cache_sha256':'c'*64,'root_verified':True,'manual_supervised_recovery':True,'current_native_outcomes_claimed':False,'observed_at':NOW.isoformat(),'native_probe_status':503,'explicit_revoked':False,'current_conflict':False,'identity_or_scope_mismatch':False,'service_healthy':False,'deployment_uid':sealed['metadata']['uid'],'configmap_uid':deps['configmap']['metadata']['uid'],'pvc_uid':deps['pvc']['metadata']['uid'],'rollback_image':sealed['spec']['template']['spec']['containers'][0]['image'],'rollback_source':'c96b0c6d881e855d1d158003c6de90ef390262e2','failed_candidate':{'image':actuator.IMAGE,'application_source':REVISION,'ready_replicas':0}} + return probe,cache,journal,sealed,deps + + def test_explicit_manual_cached_acceptance_only_outage_recovery(self): + probe,cache,journal,sealed,deps=self.recovery_fixture() + result=recovery_authority(probe,cache,journal,'a'*64,REVISION,sealed,deps,'rollback',NOW) + self.assertTrue(result['bounded_outage_recovery']);self.assertFalse(result['current_revocation_verified']) + mutations=[lambda p,c,j:p.update(native_probe_status=401),lambda p,c,j:p.update(native_probe_status=403),lambda p,c,j:p.update(explicit_revoked=True),lambda p,c,j:p.update(current_conflict=True),lambda p,c,j:p.update(identity_or_scope_mismatch=True),lambda p,c,j:p.update(service_healthy=True),lambda p,c,j:p.update(deployment_uid='recreated'),lambda p,c,j:p.update(source_revision='other'),lambda p,c,j:p.update(configmap_uid='recreated'),lambda p,c,j:p.update(pvc_uid='recreated'),lambda p,c,j:p['failed_candidate'].update(ready_replicas=1),lambda p,c,j:j['phases'].pop('release'),lambda p,c,j:c['root_authority'].update(bounded_outage_rollback_pre_authorized=False),lambda p,c,j:j['phases']['release'].update(started_at='2026-10-11T01:00:00Z')] + for mutate in mutations: + p,c,j=copy.deepcopy(probe),copy.deepcopy(cache),copy.deepcopy(journal);mutate(p,c,j) + with self.assertRaises(ValueError):recovery_authority(p,c,j,'a'*64,REVISION,sealed,deps,'rollback',NOW) + with self.assertRaises(ValueError):recovery_authority(probe,cache,journal,'a'*64,REVISION,sealed,deps,'release',NOW) + late=datetime.datetime(2026,10,13,tzinfo=datetime.timezone.utc) + with self.assertRaises(ValueError):recovery_authority(probe,cache,journal,'a'*64,REVISION,sealed,deps,'rollback',late) + + def test_recovery_verify_requires_completed_prior_rollback_and_recovered_baseline(self): + probe,cache,journal,sealed,deps=self.recovery_fixture();probe.update(phase='rollback-verify',original_outage_receipt_sha256='d'*64,recovered_image=probe['rollback_image'],recovered_application_source=probe['rollback_source'],ready_replicas=1) + journal['phases']['rollback']={'state':'COMPLETE','outage_recovery_receipt_sha256':'d'*64,'outage_recovery_anchor':{'failed_candidate':probe.pop('failed_candidate')}} + self.assertTrue(recovery_authority(probe,cache,journal,'a'*64,REVISION,sealed,deps,'rollback-verify',NOW)['bounded_outage_recovery']) + for defect in ('state','link','image','source','ready'): + p,j=copy.deepcopy(probe),copy.deepcopy(journal) + if defect=='state':j['phases']['rollback']['state']='UNCERTAIN' + elif defect=='link':p['original_outage_receipt_sha256']='other' + elif defect=='image':p['recovered_image']=actuator.IMAGE + elif defect=='source':p['recovered_application_source']=REVISION + else:p['ready_replicas']=0 + with self.assertRaises(ValueError):recovery_authority(p,cache,j,'a'*64,REVISION,sealed,deps,'rollback-verify',NOW) + + +if __name__ == '__main__': + unittest.main() diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json new file mode 100644 index 0000000..f5d63fe --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/intake.json @@ -0,0 +1,202 @@ +{ + "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 fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:670b5b01e237b551f64f46f00271beba50a2b7652c769990e525c08a3d18809b" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:7fff0df04402d2c2979aa4e85396c4490f6ce0ef04fec944e880cada8617b5b9" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:446c172a1847a2c72f8cdb47223de849392fd8de23aff07dcea55302cc3a0bd7" + }, + { + "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:ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery 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\n\n## Explicit recovery decision\n\nAlso approve the proposed item19 manual service-outage recovery term above: exact historical rootconfirmed acceptance captured before release may authorize only same763/c96 one-Deployment/latestDB-preserving rollback after failedf558 service outage, within30minutes AND the existingdeadline. Root must retain freshunavailable/failedcandidate witnesses and exactcache/journal/custody pins. Duringserviceoutage subsequentrevocation cannot bechecked; this bounded uncertainty is expressly disclosed and consented to in this new decision. No401/403/revoked/conflict/mismatch/healthyservice fallback, no backup/release fallback or future/customer-production reuse. Ordinaryfreshreadback remains preferred. Recovered placement is verified separately; rollback grants no claim of currentPDPsuccess or T05closure. See fullprotocol andclose-downchecklistitem19(PROPOSEDuntilactualacceptance).\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\": \"5d373de0b737d586fad3428f58bbd977cbe7fda880fec556805236f84c450b9e\",\n \"execution_bundle_sha256\": \"ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138\",\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 \"bounded_outage_rollback_pre_authorization\": {\n \"status\": \"proposed-only-unapproved\",\n \"close_down_checklist_item\": 19,\n \"scope\": \"manual same763/c96 oneDeployment preserving latestDB, failedcandidate outage only\",\n \"maximum_seconds_from_release\": 1800,\n \"deadline\": \"2026-10-12T23:59:59Z\",\n \"normal_fresh_readback_preferred\": true,\n \"unavailable_revocation_check_disclosed\": true,\n \"forbidden\": [\n \"401\",\n \"403\",\n \"revoked\",\n \"conflict\",\n \"identity/scope mismatch\",\n \"healthy service\",\n \"other phase\",\n \"future/customer production reuse\"\n ]\n }\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\n\n## Proposed explicit manual service-outage recovery consent\n\nClose-down checklist item19 in the-custodian/docs/security-close-down-checklist.md is PROPOSED ONLY until the founder accepts this exact new packet. This term changes the recovery authority dependency for this trial; previous T04 approval and owner source reviews do not grant it. Ordinary fresh native sourceT05@1 confirmed founder readback remains preferred for every phase. No standing recovery/autopilot/signed grant is created.\n\nBefore release, root freshly authenticates the independently confirmed acceptance of these exact terms, marks its scoped receipt bounded_outage_rollback_pre_authorized=true, and captures exact receipt/outcome bytes into a unique0600 release-authority-cache.json in this trial's0700 ignored custody. Hash is recorded in durable release journal before remote effect. Cache is historical confirmed acceptance, never fabricated current outcomes. During failed-candidate service outage the ability to check subsequent revocation is unavailable. The founder explicitly accepts that narrow uncertainty for manual supervised rollback only, for at most30minutes from the actual durable release attempt AND beforeOct12 deadline. Root must personally evaluate the exact bounded recovery receipt; no agent promotion or automatic grant.\n\nIf fresh source1 readback is unavailable, a separate fixed private /tmp/security-infd-zlib-root-recovery-receipt.json must record fresh\u2264120second structural unavailable evidence (transport unavailable orHTTP502/503/504), rootmanualverification, exactproposal/source/memo/cache/releaseattempt/DeploymentUID/configmapUID/PVCUID and sameimage763/sourcec96 rollback scope. No401/403/explicitrevocation/currentconflict/identity-or-scope-mismatch/healthy-service fallback. Cached consent must have been rootverified\u2264120seconds before this release. Native rollback independently requires actual candidateimagef558 at exactnewsource andReady0 plus sealedDeployment/config/PVC. It changes only existingApplicationsource and oneDeployment, prune=false, while retaining latestschema5database; no candidatePod/DB open is required. No drill/backup/copy/release/normalverify fallback is permitted. A rejected current outcome is never disguised as an outage.\n\nFallback rollback-verify after completed recovery requires COMPLETE rollback in this same private journal, hashlinked original outage/failed-candidate witness, current recoveredimage763/sourcec96/Ready1 and sealedcustody. It does not require a candidate that has already been recovered. Original outage evidence is retained unchanged. Actual PDP preservation can remain unavailable or rejected; no currentapproval/PDPsuccess or taskclosure is inferred from rollback. Ordinary fresh outcome receipt is preferred once restored. Beyond30minutes/deadline or any mismatch, stop and obtain a new independently available founder disposition; neither expiry nor uncertainty grants emergency authority. Item19 is closed by actual disposition/trial outcome, preserving ordinaryfreshgate with no future/customer-production reuse. Standing recovery, if wanted later, needs separately reviewed independently obtainable authority.\n\nPost-Ready provider command now emits only strictly bounded typed review IDs/state/stale and disposition IDs/version/verb/actor identifiers/time/approval/submissionstate. It omits note/reasons/unknown/freeform fields and static failure output never echoes raw errors. Actual ownerPod verification also refuses any nonempty ephemeralContainers; current native estate is not claimed to have this drift. Document command-local content is deduplicated by digest while memo preserves both labels; actualtypedmemo/documents/intake andHTTPbodylimit are tested.\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\": \"43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 26242,\n \"content_base64\": \"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\"\n },\n \"execution/authority_journal.py\": {\n \"sha256\": \"db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 16345,\n \"content_base64\": \"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\"\n },\n \"execution/execution-plan.json\": {\n \"sha256\": \"5d373de0b737d586fad3428f58bbd977cbe7fda880fec556805236f84c450b9e\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 4993,\n \"content_base64\": \"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\"\n },\n \"execution/native_program.py\": {\n \"sha256\": \"b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 20362,\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\": \"22ba8e719113976ed780e17c25f089da17ded60db0c3c90525d8189c8ef1e20e\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 53853,\n \"content_base64\": \"H4sIAAAAAAACA+19a3fbSLLYd/0KxjkJSBukSL0sURcnV2NrZpTYkiLJs5nLZXBAoCVhTAJYALQs6+i/p6r6gQbQAEnZs3NPzursegign9XV9eqq6levXl0/Rvk9y0O/4y+zPA4et/PUi7IkTvNOzrI8G3TO407k5eEX1gm83LM772P/M0s7cdrx51AHfnp+HsbR4NWrV1vhgqr6cfIof0Mt6GDB5HMYy19/ZHEkf8fZ1m0aLzqJl9/Pw1lHvL6ER1kkW86SNPZZlqk3j+pnzhbJbThXvSyjMMcJ8Fbl02ABg5dtQ1f+Pf/ux1HOvuZaxykLwpT5uZvlQbzMt2S7MNell8cpr+ct8/s4DfNH9494mUbeXFb/n/zRLkrYnduUZfdu5nuRDc378ReWPrrqO2+QQ9qFed6l3kJB4eril6uTj7wIVGVhAgPzbln+2FEQX0Z5trX17uT6tOMQ3LquixBx3d4Aeo7nX1i3N0i8lEW5+M/W+cXfoLBcoYH80d0Z7hzYndEQ/j+yOzt2B37l38LoNnZUYfznWxyxwTL3e1tXp7+dXZ9dnENzFrM6rzt7w613F5/Ob+DFk5X592zhuTDjDDDFGnf27Y4VAszvcOrwbMWfLXiVMi9w42j+CBBgbpwwLHuTLhl8A/SEd7BSWZ4u/ZwF8Olnb54xe6sj/6x5eMv8R3/O4OOThVBOgwx+70ID7AtMGR8O4QGaDsLoDp5Gz3oDsNaz+CvVLooAAKyAzWFlUup2NHzGAS1nizDDCWVUHoZ2G6YLXgK+LyMBdnrx/Ly1tRWwW8AgnyUw/G5vTP16Caz2F0AdgNxI/PXpnz3851A+yj+LaqXsS8gesA7/1d8Rf/Sjv4f/HMpH+cerBiHs7yzEPYv18bG/K/7oR38P/zmUj/JPdkzoR8sKA4eWvLkb4hSts/Of3/f/dtkfDodH/Zvh/vY32FCH+8OjUT8dWRqUBawXbBGLqoBaQR+xbjSE6WK9fsoAlKGHw6TqonyBQ6OGFrN7b2f/AFv1EBEP9nCtYD/6zEVYidoSYeEj0q8v1BFWOrmE7fbb6XvDgIvtvogDRoXffzw7P7u+Ob3CAeZeesdyfA+IPF+MPy9nLI0YUJ7t1AvnoRf5bDjaxn2EeNIPmM+HU+8Kphnehj6Nyl0w6JfglMZx3r8Nv0JlGMhdGPU5xejjzpl5Pt9FQApgcxJtAZTHVljgAkGJcrVnCNP9GEr9Ywl0CNveVptnG+GYba9clG3RRvY/xKo4o8apwAg8Ag022B8NAadvhjvj4RD+9x8WrQLfF4Zio/H+ES9Wa5xjv1ugEn+B7Yl9xV/LJ5sjvMB//k178UwdiGkRjustE+ZP1KupLfun/W8YQ5Z7RIokzIHkeZ8Z8BRYEYEmwaP1XJ+WNiQkLpOnynTOgfCWSFDRZkGGas3W//SOaBKwWDPaOrQaxl3Xqc90dUe1jhuXp7okL2rcB2ZB8/kcRrRxEpgAbjSCGb5YhoGTzL0ct2Ift5UdL52Excmc2YHvwK6FqndBvMCneex7c8M6rTOUXEcdHcmnz8/TZ0FTcxAXZClb4h8wDH/uZVnnRNKdkyh4x+W0rhJpbuCfd17GBDtBFoPvXfYVoOBG8BO6uwXxIGCpK4WHKM7dPE7cOTDFuSuh383Y/Fa0o9F6W9sQBffSSmXLOTIERR671Yq2Ros1whuk4XzeR2ERFgZkkaJNHMgAps7S/PQfSxgZ72RSQpuprQFWf9/bKoNCcHKXtqP7kMbwm1BE4rXrRYE7C3mplN0uM1aFxWKZE9nLYKKTubeYBV4nhQnC4g6WCUpF3YKPONbl6fn7s/NfrF4Dzphb0PiXY/n3XnQH23izJiqc7qXNcFbmWDGwkHTDuhrBdyp0XJD7l7RX4oUwLW8+Z2mf48jG02thkQ7Km2u1Fk8k+Z8q6COGfVcLOotwlAy6bmslvjGdDIuBVTiFo4unL2699KqYg84ynN0f3TrtXKcg7d4drKBG2UtU3Xp+WfcDICgA+y4Sp0HAWII/uqZR9npT1QF0ywkF64RRQTLGpRE8hPk9J3AwYKTeXV7F4f/pjWvjxTGaaW+JOgFaQ8H6x6JDvluuvDBjWfc3b75kp2kap4YuSTMp6Dm020DDUzZnwH0kAa/yoAS06MB9gKWKH4jKLqPPUfwQuck91Gqgtc3z3XQqa03BS2dhnnppjQvNcSFX6Me7qzRjNalJSRKeQsPY/iDMYsRWL/+zp5nG87lQEbDj6loFy9SbAXtEtTzKUQH3WcAyFxEeLSW0ehHICyhF5GkI46ksG41aGmJALkHLBED1PRlS4vSx2+t4WSeQj+UpcIuENF2oQmVsjrOBfw+6V5eXtjvD+O1wWC4jLTGONMKowqCiI6YCiQANCiQuBsTBVHUAFDLNu0I8QZAtEwurl2XWplZqsgvauQbz2AuyruwBzVwDsnag3anb600s2hBIUsr9wjMX7VHbuPp0fk5ShXHY/jyGvdTrdP5rJwsXS1zkoOOnXnbfmTHAMSZEtVJlYYmCki8A2Esoi+qwCcx/QR9FeQHDqgBJxCpOUYTmRMyHkXhh5Ary54I0Ej9k3HYFOyYPIxC+pZXvh24UtQfUd/M20NZTK/mnLOkfEswFM6hCGDkjQREZozSiDi5/Pbk+vZ6MD6bNjVKteoO8yG0Yhdm9KmPBMrj+PfM/Z24C4xfWw+o2Xz1c1bJextA6Kfb/HAh+V7PEeR6NE5UdF9yhBRhaoXVhbd5RGfOBi8CWUgKBfx/OAxcUxmSZu2Hm4nzv2Tyobh7EpBlowIhIXQsU2f4fQrN/elUZ0qtxjrbjV3n8mUWvxq+SFPUz1v+CMHv13GQgaW4oi7wku49xZ3sB7vVX46dXZeP2q/H+87PVG3/32qlNgtNzOeXuFmcgg3fxIpkzIPGX/EV3MiU7PcIGgGH1NHECNV6gB2VhlszzlUITaQCfCgMvB1gaP3CgkSX7xWIKP6ToUk9Fx+ItHw4yr9kcj5iC7UJDEWU6wJc6sOJAr/+xRMGyk8fA2jrfWBoPKggG2jyQVBdnitg0IwNI4IoZacIM8+9jVsMyGMMMQDCzMnVCJqp2BOHszB6hI0vVCMI76BfquC4/k3HdrgV0CY+zrN6Aa/VdbLc3uGdfeXFN5gPF1sMTNgK8eW+hjiMxEFkHknHibIPsH/MwZ5ZegA9v3JmziPdqxvaigrKb86HpbUl0h4+0TA1NJTEA1Vvo7KUP73BY+GlZEpv6+FjgUiG25Y8J61o/81KChUET3R4SHYQQP53h4hL+LDF3fu6DmwV+Spg+w1+vZLICIS7B8yXoT9tTl/iqRGlAOks9IjUzCwYxs2La599Qa16l1lFdh/6Fsa/k97fxHOSLOiFQDJ8XMHJ7YbUG0gkTCuPBNQjo0d3ZhaS7+h9uESK23ddeepfZndevPz/grwY1UFknJcy6k+wxG7CvzAetE1QGWN6+j4tcHMseYwl+dDqYLW9vWTp4AP0E1rXzBlpKUkJJ+M2hAz+sHki4a9pXecOOvnBnl6c2vmdpqr9/f/rb+acPHwxQoOUixWYQz/6AdehKggsTeffp+ubi/e8wJ9JGOOB7sIhNFVK2iGn/cWC5RCwdiX5Q8e+NU6Mmu1YVC6GtLAyYywB4fu7QgvXs6rl0ly96w8qFtxy+48bOX2oaqDEporOSXnTLlt1CB316tuVG7xnbZSBONfdYWJp/cLcVtQ1prbI4x7e3rvB0UNyDupXaPNqb12iU64JdHaE62xX63eM6IZFupHdEt7dWNsqRYHDHcsI7rGlZa9RbNRhUPLv4Hzrv7Px3pDxv3yIBOkACVGa4KUp0ZEYFiM3DiLlf4vlyAcDyIjxumDE3YCSwVHktoHmUh/kjcb5zzj/UCv928eHTR9jb1gdvBthB9D2KQf8ir4E5sBDcr7znk1y9/AF8pQQ/S0yqLyTpEpsBpUpMXUxZzgi+yZ/PVR4URlnC0I8BDxSeXr+WBavTUXC1nqdba1GvgDx0qsRoDdGRDBXBcpFkXTU6jkvEoBYklv1AydYHXSdaJhJhusY9WsNaPoyBTzISyoV2Z1RFRomCSQwPXrAATV25m5Dsx0/PgaOhhOaCXIn4iwIXMyoc0DBAQ6ocEeMiTZb3CycWPFIXjfax0dXyAW/U4f9ZR0JosAjwQeImdirGs+Oq7NAgOkgK6vBi22VCcCw/cx4uyNNMagedQkSWBS2tZ/nOFlSjJo6QtOkopAAxVNWpl4Y+yfhfk1qF0GqSWUlkfa4rxxzbHDNdALIgqUJBFJ50DjMuKACN6tmuEQkQ5HNc1ZwshoJuAR2wUW8FCibOIEgOG+OZfolCaNJqkDmTae0DpzaOJJpVmqlI5pNVczkZcDMQd7wh1w7l6IHONoYKSyovZwgzR3+sPkHYVFxMvJi1bb1P0YMK3vDjdNu6Bjgy7Vmje8o8ZVsXiXCDIAAZxVlO8boAxi9cAXa4g8QKyRbkI6wyGU4dh6ZgjamyRgetWZT3514yHI6sJpFFNjPegXYmFl8VGDiAfsobtKwNq3KSL6tXFnbDtgQpl41pk5vwMtOWidVXtk/k1CI7HnTXLK1Ve3v6zB75XpzArynRVfjBiWrFQ9DWPPlsaZOwSy53vedmsQsGLoirUyHK4wZaJk7JNVom67Utu9XvA9NOH5MY+IACSQcYDLCHx/w+XgdOtL3leSMW7R0Do45vnVZzjWHKqOlTYz3H2aFBKCBUeNWYOphoLphTx/LjNF3Cjl17QamRFjk+RVmgc0KsG5aMxIGutYzYVyH4CGLS8ePFAobbAGmhf7bJL7TxhzaZvkySb4u4VOh6Qg62m8qdXJ9aNv7bWEQKXrrixt+JKiU1L10Cnm8iog3tZsukUTPhH58thEkzCVRIQoLNKu2rIEZKzCdm191EwSr79BiENcW8p/YKvG9U26SApwQCkvSWkfSHmb5EA11D3N0YPjW4FPvY3qkKttyJ/HYJWICe5G4w44fsj8Ki+eDecjemrOlsnXtMgdAQLrw7XWo4+3jyCwgNHmzWW3Qdq/nMWkezvdlsZz/YBYnr6NBj+3u77C079A69XX93/2gnmI1u9w9vfaTUqPURs/dgThnzt3PA0Md/5+La+GBnNmIH++zw8OBo5u/N9vwDz9u79XZmO6P9o30o4r/1d24PhqND7yg48oKDke/dHr4dHb71R0cHRxZKUG62TBKABx8dGUgtggzskQxtuyjs40DkR/Y1zGGHoOsu7CVfbjHyOG1wOLUAwNKMg4LUJ/JB4SKKqjG8GR0pT1brnH3NebFyq3qZ36Q/5c4zdSGlWMuzXh/siWmkjMzI6tsMvz1rdnNgPbBQjna+3EX6tG0RlvRx6n1Zio4RpIFBHDprSIE9tTfEy/SFXNbaXA2ji9AH5RrIm7Pl8Gx0vJhY+spJRAYaoKkNyqnGKbzwkrFy7CpjhUPncz3bVJLQ37HwXDy8g6kYCwk0LvzgTIV0RHJ0rNjRHN70ipMSVinHpgJxHDM2llpJJtYV0bqyo9dvyzkM2JuFoLqFDKD0ZF0LiAIKfbj4m/U8Lbcja4rWQNFY8f2p2oI2kkESJ922cU6sS8//DKDftLA+R+FaRqaeav2PNbie4UqfvTcuYqnCxHof3t6evW8aml6SGn2HvtZ3+OirX0LpUr2/fv0EzOhugEZdxHYPeEKaDQj9Bhpx5YN7NsP+msRjOe+RudCJoNw3oNACYodzlj1moIVZm3qoQasV4VPs2p5dfY2buHes3M+Sjc+sddJgJ2V6oBygf8aIh3OKdLjkoVGt/s+CRlVZX8a8OZnbqnQOTZ/8Yx+DfEDVSebx4wIDpdrIHJatnarydsqFMGSgipR3DLcpOQvv7VSLo+F1mYlDWAoSuIIhhaCzy9gizoYqb+MZAPkLC35RbcOHvZ2CZcDEQMkAPATK0A4HEVaiV2iFhb+oQUKvKzfIwkt0wctf0D6zYPXjCCYydxFIkuPpDCX9EvqsYchQOwgRHusunJBszK2SCc3avo8XbPshTkExrQfsbPOOtIgZ0dZAjUUMoBFcE25cwiWO8ONX2ppfcVeWhwdaGuxhRAaQ1b9OuNsrVHM6Fic/HwGmPdmc6iH54q9YESihrwU8VhCPrF5ogv4JD881mzroqiI2RgpG8CBOd/eOjg4PDm93+syb+f294Hav77HdUX92eOSz/cPg7f4w4KF+fJpKEupYo7emUBg0XlAHvLywvCfxp6sPWOk+z5NsvL0N0Ltjf8QDP17O48VskMV+6M23xWN9CQd3YW6tdeBoobMeHbVXFr0I+boq4sos/+hgNvQPgsPDETvc3w9GwWj/cDjchVfsaMhud4+Ate+wnbZwEugKXcg8FZaDp+pZ4vFTD0P8GO7blIxrBUSK6DPAgFsPmOoggyV/fi4WkmuwGS1msXfQaQA2v93RNu0YUBZt3l9wLeBfHmA1F175PIKnaDfxHnE3lbGocG1aEY4nvCxx4hRnSRQJnvgPI9QsHbXRhUF7tDUKQa3QtjI3oxycxkZKIz+vIDQNbRdOFAW1JQu7UncHyWO5KdtKlinoxUzo/NZYCOb06IYRBhwAUOoVjUNQ5V00+TZMUhXidmGy8hhnSWdTWiwyTqwSeCy8ererRWvjfd6qmHsEatoSlwo9mDseMPfW+8xZvF0rbHdAPArvlvEyc0TsnTAwcqU4kG9ZAm+BV87VC/JYV56bLneclcYcrk5ojpxoQ6SIoILw4rlU5RWbewl2CiLsMblRSFdxp+ZaXjRDgs87dIXqlupUDDn/TgV5VMxW1S4exQ9df57Z+TcyiPfGui+H6htL5d96b0oO7AGb5x6AF0hAkDliBhjusLWl90CLwO3uYZQs83bDO8GmZOrcMtnjxzvE34DXAQnzczyltTCw1uAlitwQHQKw2k79hARapBKhQiizbYccCh1ZZoJ16o2RyZd36JBHU2a1tvYkODfFb5Z4ZYOTlGCh/p4/G+3vD/u3LPD6e8Ojt/2jgO31g8OjkXew/3Z2cLBjvSAWEU+xH0AyvGK3DLalz8TQZCCNkCavGUXTVMeYZtoQ04y7b03XjolUfPz1awllneWgmzsWgP/iudGcTj/kO/v16+6TpfbqO6VFWeOJBCY0Nlve4XEHN2tpdmYcJvnCyAbIyIdurhuMngtGY52hXS2jCIOzOKPkQ7qmchKyYmgGhi1Cf4VfHx/02XtrvDFsJkXfUmfmEJg+TzsqwrQZjVOhQmDcejsym6Q9gQe2EbMaYVug3Ptilgq5BA2fSMY/1dWnCRWCuT2vmlgUB+yHbVBsjDxNCjxoFt68IED7k0QC8YjNHe0Mdob7gwP4z+4RoCVKO3M8/SQ/Ou5JkixJjG4VD5Eo68HheIQNvz6zR32IFuKWRTSQPRJMrgjpOPpbxMys53XpSOm4jjcEnX1kizh9vMQJ0mktLGmYfdafL8/eq8fetAEjm2zuK4+QKBdC4Tubxkv0XNp66RlSxQsG8cTgTNXGp1A6MTEqqFMWQcbfddhF+j72J93kf9ykzZjd7JKMuoKSYF0xycLbhrtuS8/h5w3BiUrGowmeeE6Uc++pspJbIx+9xrovo6vQY7d8aIIzUN1y9oAeBVLh4fvNQNZe0vsPW2YJhA0XBIiqn4YzZlqTTUZinXDCBysoTQHZ+O9RB+hfZ3fvYLjodA8P/lvv76TcbjK+8Pb2u8aGG6tPwB53ZrB8f4/eiCelRW48KDr8baAKrRoHdyXo94P0sZ8uI0do+cqpoJDLnZ3h0NS8oTJGULR6JXC1Rsrpmo5IIn6v1+hMI5WutkPkv4a+6daKAbyNocofgzCuG4aMi7uSDxUuDBUrI0a08vRdAxS1PJ91Lde9PPn9w8XJe9clL80k7epuFZxQ9Mh2yGuUXVFd95dPJ1da5cISSmfb7t3SS+smAW3dGkIF6u4SdYeFklc6an/SK75r1ZRZyyb9dV239dzk2Ij8lE7YwrlMbmGTXFYYqZWrmOC+5NDrUiQKwGiMABNF4LHiNcS+Yox5RzuSsDvXdGpy+jU0+dUj76seppctyDVv7B7ujdpboYQ0BhVu1eIvRE4VvjttrkxX/V6RBbOvFIB652o4j8nU+JEAOQoU2oXwff3HkhLFVI9MqoYVDJfB4xx5wtKr54opDU+WL9lsqo0aD46FM4dM71IB0tRYhwBXVEJrHYDd6KhvdLrgQ++RP7GCgIQbTIV/R27cHwFH5hFx0+aRqLoTDCMjtp7AJmKtAzFUUgwSg8DLatWTdQcyb0J5MJKEVHSzbiU1GqPxeIV5+XnavERe9NhtZlDEv1axRVItqDTUIrRp8yUoFgGlIrLNox61LXWAbVQQa+Gm3OCMHDYNMauBt8zjRbEfRPZLNwBMQSIVJ5IP87ClNZIB8SwiulF8ajr3w7xTmk//iuwkxka5iKhcFABJLmP4/ug8WWJaZC5/en5+eesTedyi+vmMIFqE35h0HSLdUxxbT59/wEQ4jgv/gjVa044UfxSk6UysOjDuJYs+1o4lOPKazVWMOOJwTSUh0g92neGfn0dmfWpeySsjKppEsB9A9VdT8hbyv4JOAL2spwNLGTpjuLo+jrGNKc8Q6hJ2FwzzL+GJtQMLyim19V2gagdRJZpLnHS5GIQNaOoq5UflgAFZx8Ww3jilU3vUlV4Oqqr6TJlN5WFctb0NN5bdqbhLOJo/2Q80uOqBiWQXqHeygtZOqufJ2KY8Gv3notV/Fvmr1jwKHCusbx0hT0zGu+aDJFsc37xY9NDlP11Ok8tmb+AH0GvaeiDEkxcorlSmRBTYblEcJV6YCkJFMsuqoDV/YYnje4rTRnzdMD7tBezkeL1dvebunlQ8obA1o8lDzBsN3jDt4kilQV4QRwo8l7KUFsyHC1rL5Amhmi7JDTL2hqKyRLtCajCbvn8sDZIurdyIZf3n4dnHG/BoZQ4rJX8MMzdjiZd6wmcCdsM8ENtAEDZyV9iYD7Viqgzn0zOeEsF2lPYllC+he5VUr7ZDQE3vMqldqkOZjXNtmlLnq4X+zxO8WVOMouRJg613Fx8vP5zenKLjPqYDMvvEK+91Gfb4pLWqTAjS2b7m48MnYQsVeMwdLjTddjyRv6d1F6U66xRUwdEGcc2no45oreul7zMWYC5kObET87xGOC+e5shcZiTmrjrjYZVhHiK9+ImCPYFOp2K1ObUOyQE/YF8x/JG4BAWNViHSAANe5UoBu73i0+vX8tFWZ4DWNbTAT8Cfn/8yW81xY1njNl9bZm2zSeihkIr7S/mgjet/Fxd6AWTbALtati9TTWWAd3nKRqCXesbG4C9SZQpnrD9Di6lKjpWAKWzYjRchhSM/AjxYINJBgUiVonuapF1kCeJps0VIR4v2JybnrOAjzr+4yL+4yP+fXKRKdVeTOBJUW7Z2PbYrtpNx3Lhqk+qi6W8KxUyaBQhlWpJz/3l9kvPlj+xTyzfO0bEcMTYsIsb+rIkW+coV8jol3FXxTD90BBoua+Yemeu+COb70zotncboCdapvmNd4oIHq0eQmIjpRBLFl+CsigOrtsvRb0PrclyLAZNGYNvob6OCwOJqEJgUHYTkQIKDYyAW1Xo/RLWsa5Zxkod4jIGsHruPU2ViEUc+ID665OlQj52mCPjykXgtG57Vv7DsLE/NvvDblrIR4gE9lO5zPmMXARLwji76UWm9+2Lq8GmbEmCg16ksJU7BxVUb1SIcV/uK6tvSnDiFlUjoUJwfTROS2egq0Cylncel0P0BP5pG3qSH6GoVzqKupQDeQXRME6jE0o4wQGIGBGqK5+6rCbQIqzmZmZX3rqtsH9WFE7enceeEDQW3dbG03IpdBBC8XLRtRd617KBrKzmVrQAYe6fApuyOIrtqBjMOMVakMP2jgJyhWwXHqpfJxoq0Ido7Wk5hMRypE3KEVBqizLRdiJb16AkKZTDn4dfz7P8p1n9nle1/szOLdY4sNj5NcGpnCT9eiKtanu+ZN8/vMUkUnhBhRgz4SSmAxTh738l4tprymciex/Hayrwz2mow+kJ7avyGBl+CMMn3+oJu1S3JL0EKIaq9lGkf/0mMWpIlSQDEJSIqT58bLvhldGxe8Zr8q+lSdxPC1G8Juxphtr5/kS4z6Xopx26N8PvncfFNvafKPL7NdUplTVjO5+/m4XtxgUtryoQw+hLLcEp+m4JIByZYvYiP5FtBPAQsCmXkpJ7OlWeBFqnP7ex+mYfz6tfazbml3Nzo1UW5LI/pmq/AmUyPhZTa4rH6ogzbSNQdPQ/usThodfDLtkxyacnXg8XnIEy7mBDXMWTTJCOjIy9Ttuixz3OA9UWOkGN6uaIdCqcSQ6Df1jH9R1SDUeK46dU2v9KD3qjPfAugUuxTG+rZKj7JwrWLOlCD58xb11Vsq7Zo/HX50mL+zhDuWz9A5qhBSZxx3RoUJhyNrQZNj+Uhd/kU8dYxGafMk/uR37P19Gy1TbEt8Ye9Mh2G3ZJ9wm6OF7dNAdy2KRzcrjl12y0R2nZL6qfV8KfQcgI3QbQOabI0O91aJoRtDCbJRF7RUgIM21o3VYahpHQ55F77j95ibiqVsrswowupatk3GpedJlIHiLCQ822FZY75G3ltNt8w/IEfZtjkbO3GnznnkOV1/OMEVDqpl8cELDrSLOigG2PjQX8Z8SwIZHNOlrM5WZRdlZtNudQIM3npJuZVFzFbyvBBOYKs8VM0LqXf1TZbj4Ptx1ODZ5vIlhpCMkB4l8eR8N4TztyAugFQUyJZFHEFchFVR+IOjJK38F8cjRBgSl5cS+n/2zBfsd7aXAk/KiGmGlgKctrHFTRQHT2eA0r0zCYxYbNxipvupB1C5TPj0JSXNYu7QQVvlZeKaJ2Jgr0BI7MMCIz6ZSO2WnkclGytYe3NkyxPZAFoCrzYeXqubTUK0bApKhMAOula2/kigc3vL8miVSQeLpu6BDFQCaea65XtXn0UdjNJXiUYWqqXUttxmPO6Tyr38JhfaLReI5iyr6mFaSOpIQ7PxQ+EV2+gUx0zPtGNEorS8CTbPLf2sViOCbU1dXiRslEVhipTQMrSG4Noeqw10zDKJ2MOwxKqbdJ/Ad1p77mChDJzvlPcSG+NEWUnJbo4NZwmqrQz5avjS8OsSRe2pe0ea7zR9invE7zfwTElUsfp9v15WGRUP5YOa44hZEiclZbvBqpcDVS7Gai4GKieTb1CYGq3FjXnWbe1W4DK+S2KO4D09+VbgCgvuyPvrRNitC0XuMI7gVEytMLHaeYAgywy8ap75SovBiEIb1+5gt+bGi6oK1pEmqV30HI/XVHKNl1SJw4NVIg6cq6iiuOUry9qjAojQmLydqwMWrtCrjBhYOIXGkUj7rQcwZdP2lu2UOkc+c/1aTAkESguA9QWhE+76Uq6CiS5cjtucpg0XdItMXNSoh9TW143Jk1H0rSepPzOaWB134T3td1yXbbMQqtdG18rcsgPek3XQSELXH2v8gTvqJ865jvqa836HmAP4BFybVdxbWssRRqrLLFY44otVzLmMsFtgmMbupWIcNGA/tqAJn5SaOdip2jnbDQ7TqqP/aSBtVEh4MBQQOe+9ZsJkFrrl7/Wr309xjL63a9y81ZP+M3IsYvIoa4gVfI4DdAo3fkJ9CnG0SZdGPx8UQ8uZQjmfHH9vJnH8DlrbmHTjJMFG4hnTF0HbriJguTLbJmg2pnBB74n+9IAaFW0p+8SHBrxWPgScdOapZZMux2kERMm+iUiU1SbitWtiipJz+Y7s6ogLrwID1ILMCgDqCwhneHK+zdz/bmHdmnFAGSSUfLtOr/4m26d1rW/Gb/EHv2H9oe7qHSixTdEgQFNjUWDsmM0j0GJXH2QwMSQhwyvCnEXYbYgw6fiRtyW4KqjHvFei28miYPjmMHr3y6iAnhJRNJVoQI2+vvrxYX7v6GgovwiLZUcyEvM9FprMhfm+r58tlU9zSXXs4Yc8FrguOxK5/PoeZ+q3LPDZ7NgQucodQfIhpwTYR4Bz64c/REe9Y7FR4NXpfm2Cqqm3GHkTQDFOQ43RnD6aAWUcl1dAc1XyqEmJtX1m2rl6kCqVZLHGXYZZM6o1zJsyohbWyxzjRrRkGBR/KNyeNUw+2opL/KBlzgC7pv2XbgxTWqUc9oIJGMnL+FVaSIM50T55ZwEV0+buDpHtR4WMOrU7fYL2UtFUXbSxByhhCcnYyWiYcpWV/mi7g13a5U4XV2tsrcYRabH/GPD/KVkpkxQE8tofNKPC5Hn8ELrwqli55k2DEaaf2oyevlUatwtTLUYl1c2/MubPnq1vJg4VhZ0KYBPJcUUE8AUHV103+JfbXkeJZ7rjaEPGOWZKS6earl3SqUJ2qMTPcpCbPXfcY8xmg2ycPaln3gpkrrx+tffSAr9xsIcNqZ7cFo7xz3TEwcT/fAuitPNurd4nWBF1/wkM8vuUUEFKhcCrWHDkSk7kn5emOVmkolQChz4PKCfPGXbMebrc6p5tXnZAb88/LYD9AjPUaD37lcbGzjJMpgCNybjwaxWIKcCGNDHP+eDMMBrlfiZskV9kL/L1wE3umU95Vegi7zYCppj0I2NAUJ1caADwizMSkQ43BOHnjL/UmPsnTEaol3f0Og1/RCn+SRcXH06Pz87/8VqTO8kGbp+B16t/yLNmTQQqcswp7a6ELe1C27GkFfW1+SHXkunJpdaNUEVn2BwWWltoeBmtfQtqyw9dZC1WnjKisLzd96HVSKoZAgxbs2Vya3efTjr5KkXZbgVDeQU6Agwh/iB99tC/GoLJ6mR3UQJsVl0riBdWlB7qrQ3HWQgTQGZH1v2qDcZTcuX5x6vDyZs257VUn6p+66dxhvCJQD4ZfPiPu1i/qtvzqaLs9e6N/uNujW794buym64BLvlDuxSCkSYujOpnOgpV2Shpra5IW9ymNPsqfyCox3ZWP1woqXBxsOeVg/pBgMhwu4NAK9vFv1WQadBVKwjn3I4q5+0FoK6/MQTi6tHQx31poa+RdlA+gpVUdnEzzk4iB/iWQIV/LcDce1fkVCtK7X0zjLyvgDHp1y3jen8yvOoDkTrV9DR8lHb1rrX/l1dXNxYhVvJimv/fJKNGopc/O389MqyBclqvWbw7OTcsmdtjanrCIWVsrEgHhqWrxrkUm1jBUrfp5eHF433EurlJHk3FRZ31evFOTGsDqOKjpr/QLl6HRlXN1XfDuU2S/fsljeXQLAofnDwyqHVfRUXFlVub6yfG0twAU1HmmHZlPLeXisZolHf6ZBvNemOW997PeHCCyNDxidyI24rROKUs66YSdoUP3DbMmx2Luna1KZdS5FYcQjGwbj+POSXXAKaBVlxuyOGJkCjUATkKXEZJhcFKs7A5CVZ6pE7jQoPSF1UM/h0IqHjfpb2juEzNbtS5DyPKTCmduxriQE1TpxLwGLqxbVz0pzMJdZNJyzF6tbJjjaabNP45UDlzmYZz1jp3YJK5AbLFFmDS+iy6SykufyfMQ1h06ILRSshSIJMoMlaScwvnUrVBZd7mNXGz5ublD2QzzI0RPC5GerwbkkbaJhj0wkmTZZvNLJP4lkE7j1hKtx4rhUv+2YH7BVrSe7U9IVM5hWDZmsCgfU2LYWytRpTLT7PFvdx0ZO64QiN/SoHwZdYGJP1fFlNFJDX2hvuFmnraC0CTHjAV0pg5Mt2k2lZpMP3iiX6c/CxCvoSKQRKChtOI4hi+C+dtjQ1/IVIqdVaz6bxvfj9YgwV0QZ4UyfLf+KXtp5EwU8gvH4IF6Cht8Ud0CLP4yybA/Fw776FiTsDwjNnipnzhBwaya2zdKE/Y20Srg/2bOHApIrwRg033BZeWrxI65kzmvnIr4WbqLg7qXBkBfURj61r8WxYByg6abQ2ZiHBuryvCbU1HdAtJF2DAEhWD5zWIGCI3XiPRpfPcDA72MOXAetidX5qiMvEP8M6w/LR0RHH3jXvnSbrnM1bXEayTybMKsYwl4qvGLVQ8hXjrcnTgzUGQgYZvj4ScmXjTtEGts0NvWhV7Qq4ipWZcssqVugdi9MAB5vw0tR7XBeQRV1M+/d/tRDBBnG7e3HNM4mfXvzMpe7euLqIosWGeGeJ7XgsBED7HM7cOW4lSdO5yzv6NRdKTsOmiIts5XhxQ5I7r169Et/CmEyENigoW6ikBDBznvCYAI0wIeShjyTkw4aEeXaH9ooLMoEc3aYxojr/4CpvDOW3T7OTo/wg355cntkfT/6P+xPowKubkIYF0co71CbSjaupzmmxmqoD8fU+qzpyc7mgC4vQB/safwKlS38ByS9fPQxxZ0Am2+RY6KLniC1+B7G/RC+GjLeGawBbTVZAE8AW2pR4AJPUM9EWeiwbL5E8LLttqRH0ZSGjuw6LvrA5MB9DCxwWRlJpAExXtmRnEkIu5mYmXtO/X84s+w4h5pQB2NULwPS/MUC+vIs3VXJQkiUtDTDHiP45Ynn/M/CgIF70MS4lyqAEjIyzqWu+9rBPeMDgcIt2n0uaaMoD4Pjv3pjn+qczPrHh+PeqcYxIADX3xhlJw7NyciXxzNoSSOeIAXR7x14SOjrid+XVlMJckYNMEonkkAPXjdiD63Y5jsN08M6nAHHF0fCmK1eUJAc5au6bsojJkF5BrOYaqgjwEtUZ9Js+jl/UyJvJOqXgW6k7cUFDYcLgq0JmCvPBRbDkfhmswzlQRzo0AlGiI1rdlc88oiJ84phTdjJw0tHiv+3sDV+Phjt7WxQ5+GRdnf7vT6fXN+7H05tfL95bY+vy4voGhILLk5tf3bPzny/g1faX0bbEWhQYoMbV7+71zRWet40tC2Wy85vT8xv35vfLU+40K31LtoWh+tebm0v35BN0cnX2Hyc3ZxfnUO4nYGUsLSwIxV0YvPzZ+9OPlxfQ8rvf3f91+nvhem09b3F/A+Ei6wAyDpT19+n16xmdAMhhfTg9/+XmV2uMRzMKFD3besjuwgHlSrHGYTz4Cdnz2QX//KyAJ3Lj4BU1ZC0uIsBwBwJDRXE4w9TyM6tjvcHab/DX665kBW9GfdVtf8SRcLMRyy5aRq2KPCu0K7MGjCFlYzEpNpDT2hvttuGjbFbHQwmYKiBAkYkqYRRqbV2cvZADqu59nCC7kviq90pQ0H3++eL0tkAQ2Di1jQ9KLokRdEqHIlpvRSIZG6i/g7c+QkvRlzAFRmld/g5ofP4elupvV2c3pz/9fnP67uI9Iv5Iv6ClJhga0s5U8sfUtC+NeRUlYaC9yQrIaqrNBT+H+igOdkG5uSBNrlWzwT65H2SDZAYATh5rt7zgS4S9Sz4nEsjbVhJneHTkBY+V07FMcnEKq9MESvG9lsTIjvV4s5inrWYPhctYFIPSYF1enf12cnPqXsNuOjs//WDZy+hzFD9Ehk9agP9qf/NV3cAkM8oBV/82ffEY1KUQzfURFOIzehjWCkjGHldl9vk8fphTFCggUGF9xvm5YjKuaLimunLvZUJaDWEAjb1b5U6Iv5UTVuFjynO1yFVGvy3vQedtWK0pixMaswyQ9x5MdmqcSONHMUH+vcUGAYNZKxQBw/XxB7/m3rYSIJ6kT5SBHkZE68j0KAmsgo0wyqJN8h4T0DP/Pl4T8G25CMeGvYKB2CYs7tlttcg5HEXgr9brnf23emFZRAeVMzGh9PT17m65m7XBq0a/nNXHDnx3d7hZw6V50WrEkUha95JmMNahDtFNE9g55f2h8tP1tjY7MiOuzyXP9v0YN+ava9xxSN+p7QEXOPAkusEmIKi8u4gp+Q2euwJf5+l9SWwoKA/wr3nQZCVD2RqkPuQz9jKdo+VGhHwVuB8HS8BqKjn4SA838LtrocglZJZsQIstBTAgn7zWAMTTX87OHfJpHW9vKyY7EFvWkgXP4ytxEOqUxzFA0VV++9VDi04qK5FORAGO8lAX+eTYqkvAlZvUrxggWlS9Z1aIcNW7E0kjdBmmqwOVi8NR+hPBg6nsV5AdXE09lNpj1VkUODgvRQcsqlmNbjdJGwOdobuIGr1CTylRXvrolEYqBBlCmnFtVOSbRKMSS2BjLiKUkuT4JPi61UsEnVVXCIKM7uf8EJyvYYYB0i2YNObFivPzCnbMluFc4n/lCJ7PD3jhemfs3yts4S6iUFfHcvlJhWttxnHrdwUaWKxBu6vXa0wx1Hoz4UQL2EH7dUqQcDlQKydQ6uhFZs6qZcdcN6nBXxgd+YOjIg1hcRyDvicsrtTCpmFxG8dnih+VQDbLo7iQteMvrRmWL9yvxDk43hUn3X8xo7ahii19RSg3NT/5Hm+aVFzGQuqhcmMV31kYRdpjJTGeisakBTT96PDClclZ1g01lCsks5QXR7bG8EIDMExT/1f44L/CB//C8EEhbdD624SftnS841O3EWIVAVmhhsBS4QjBKTaGb3Ano8rpu1EhbO6TaxM1HtirWtDqrohdU8ti9yqoaD1peRtsdElsuXEFe5xYVXZauBeYUnPyOisO9Zu14MT27T+KXOOGDevsDUdK71ur+G5T8eqmL+uUlcJVQtBauJk4tFarEIzWsmUiUr6KtKH1MumXiVkbJ6yTnnXaF2Snreikvs/LeT71INZy3T80r0+KYVUueeVy/qQqnEw3FAx5xsnG3jfKoiCuI9nUukCdGoOVK1mKebKIyktBBZRNglrb1C4xNpEabOhFxOWF/W1M2qRvY6lzZGH1bN5dXCl7NLRHu3b+DSUvx5xC958+CQXCOfn7tV1d91ikUy/807i/mkJv7rss48plmukfxKCOS8HwleTGhaPbf+ogeTFdc7S5+QaiFa6aYzEjyxz5jsJNXeBpjc9vuRnnR+KcWjHcQG28vzEhOweWbQGOfabgM1wzqXdYQj6rerEl61E7Sdgac7KLlfqjKXGAcFJ0rE/n706vbk7Ozq2WjOw0BbpKpRV9G3Kcl9sSsmyiLqWTWN6cH7veiJR2S60YxGFDOmsVfJFMqiLy1Bn+GN7A0e0FiLa1tRWimRONXa5LF6AqixdHFHUUKkJG/h/itETsXdIAAA==\"\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\": \"1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 4203,\n \"content_base64\": \"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\"\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\": \"H4sIAAAAAAACA+1cW5ObOBZ+71/RxesGGzBg6H2Z3s5lUtsXV6czU7NbKZcQwlYaECuEE0+q//tKAttcZBv3ppPZKuZhklhHR0fnHJ2L9BXfzs7PNRDHc7hE8DGfZyDPtYtzRgv0SgyRIEd0hcI5YPxnzTIsVzcN3TQfDP/CnlzY1shzTMNz/2YYF4ahyUkpYHiFOEuQLlDI50Ugzkt+GSUMQcYZhoCBAORoThFo0uQIUsS6v4coi8k6QSmbL1CKKF+FpJzCcuSwoF/zWVmMIRCbMCtuIObLxUKiHQc+/I2Pis1n+DdE85IV/1eWj1em3AcffMSpkEF7vZtYjSSIAbGFLSPBKk0Jk1LltZ/FAF0QGI7EH1wBn0eYjBkFkHNf6FgugNOI0ASFeoggFsJcSEl26150KMadXyrZ5JKdwREkRUySYJQTiEE8BmGC89q2KeFm/vv5+9u3r/XfZ7phGNNzWDD+K9Uqtk8b/tzCCVKKrTVI8gzAY3RFqQDgeB4yDaD7RmjptudNdH/qIN0NQy/wIgSBb5VyVFJoeYZgXft8BwuK8vw194MYp+gDgiQNhSVcw9gu1/aP6seVlOpXnDNC19c4wcJDzN20HMXcbQlt2jUBDC6vQYDipsGlW2WjxyJANEUM5cLi+3W2nffUUXTO/YShxbq5LltnktW9OCl8vGsghpIsFiNNebtOe9BxX8yTGsLKVWKVFpV6hCTJSFqeYWk59EV7dWxSD+Xv1N+Qre1n5QJ8OwkpUvaBR0cM0SWE4l8P5BGl9Zi1ncBdkQHulFRs8d8NaZsb5rQoXXWIVISNkyi0Pf/nmz+uLmdv5u8/fPj45r6llWrCCsSFnLFkLMsvxuNH2DKo1pn29OoZwlzd3T5cvr99cy/+9vb9uyPicLumEV4UZVgfU65OnKDR57xpo7alyv8+tXlrOAELyZfbe4E+k7bTVv/sBtFf8iWwHPdi6k7gxLUNC3oBmkJoQzMITeCarjXhf0aRb5pu6FiWbXrTqW05ge2AqWF6EBo8egFNLdKsiOMZ4SFoLRUV3RI241Frl1nqZ4LnrJRHtBklAeocDUkSARwXFD0sOY8liUUonXT1LG39DjElDxE6AVtKGyx5smTLP9WmyghlG8dRU+S8iig94NeHh1kvP9IyRDEJd8F6F3TrjAsIuSLq2zQVZMJjSMF2zKyzIwL0yGSN/ef9T+b2yM9KvXmGZ7w6dGr261VUTQSSWFA9XM2ef0AVMpkHZfpC6GNMeCH2TLmOnlNRteHByV/WyTlDUlDOXK3fWNQ7+T69wawQm3UMI1ErJEEJL5pke+C4N7ifRij6T4Hy46seXdO1lUse1QnvMgqK2fqKHwn0Ve01ojMiX2YUr3CMFuhNDkG86To6OX4jOMhAgGPMMNq7uZCSTBlI5Ojl9bWmGPnUU68gvEvj9T0h7C2XOl/nvBasWrrjSmGAsiI77Sya1nAYTziMDNEEp9KNbvgKoibYKCNEq3FtWI/JQuszf1tPCIt3Z6xIXCToRlSoJ+QvWd/uRBNtw8FUISmenZmaq/Hqb3w8IzeWrwrG7yUBS7LD6wmC77RWo/I9vGoP0k0EUJ/558q4AlRapbycybvWGWelFx4WnwdU3gX+peQGRYjZYbEPkPwsqXft7WHRd3Q6yPCP3MOmdNQpWuCc0SOu0ZP8Z+m7qlf2Oe9mFzlmTNzqHSE/uouzQ7m/PtqoqLUwzXfJ4CouhARvMc2bzivqQZHod6SX8RewbnqSTK1hwY/r7SbAowgUMdO3Ay36IwWVFuXvKCkymXENo5VNN6NX8tJ4J9ldKiqZG5zLu7b2RQ+32eVBrpLglkgmtXvtNsXHHNE9HPi2xI0TL4kikVy79czuNq7MQK9LNWl7TfbUUlv9BmnPnVaLamMRFWWtPHhHAUSzVrVjOw3ysjbocSvVSPPd3lhcoXNvS9lvkuFVDHCiriChGLrd13brqjKieRxaR7x7f5ZkbP0aU/XyfDFcCNG0m7KHUBV/+E+0uQTWTEVPs/8eQVmG/KUl7hQyx6Qta5AbkKnFrcLEDQkFe8tXdQd7b130Sn+6Cy3L9KZeaDhm/700y6OTdnWkRBF3HZ/ly1WvXXueykjbJlzV+X1Td4O58oZZTXxeliooLV9dohh91UHBlsokVHre1wyX2tpFiEntvWRv48akIEqqp7M+v336n8744cqsekJ8vqUw75lPtNMjWu/0olbfceUp1KTyI7m7/SG0VMp30e+R8vH/5VSo3PwlvPxV/x0cjqI9/PAQ96ZPQjCClO0NAo0dV7R7SZ/2jHzaq8u6K+mU12H6oTV+RPB40QTW7WN6Z68jU/ue2eM9yE+MjzDm6Yn3EKUAR+Jkk/jZ8ZJk4uSD+MCt7bGQ2tXpYQ88U/nq9nn/bPN/aVJ+5tIQ87p3AKgMAJUBoDIAVAaAygBQGQAqw3PhAFAZACoDQGUAqAwAlQGgMgBUBoDKAFAZACoDQGUAqAwAlQGgMgBUBoDKAFAZACoDQGUAqAwAlQGgMgBUBoDKAFAZACovAlCpvqESogylIU/e9ZvjylmThrO2QCtbvIp8ZEwKBgLZqdS7nS2U5Wrr/NshJSzgACjgWXiW8XbhPlAWdR3Y6FxeBpdQf/k/sUptzewBftnBX3zDNCehFeqOHfq6jTxLD8xwovtGYPsoQKEVOF2UBwQpSTGvWOXnfubly7Vg5yFou1ZoWhN76the5BguQiiITDSB4i176tqeYfrQA1Nv4hl2aPgBhFM/MCLLApHbRNpkK9jP+TY+NlN2gz/Y35RC9PK9Tov7fX2twTlbtZAqAdehLm4cYlSWVdq6dcenmMOLoFAP1rp436VENjCqiWWzPwq4/lscBO4JLJAuBJcbLDlQkMIlooIiJtzPdBmZVTxb7CRciusrLbOIZk38kWuNLMMZ+dZoSXI2kvdFSH7/io7SVjLYw/YUKZVHOsI8D/BeuYPD0ZorcZfXq49pNTrJT73CQ8uBTg8HoWcElhOYummbQLdtM9ADrjvd9yJgRaHvBVPYDQcdpJIG5COWSOWd/d4jEP5OeSK/E92icoP7no33P95qlYXkLcQ73ANcVdLzs5nnm+yr9LTtI1bpT7WnzQ7Nho+w4UmKbAe9ebYEuWT1D3HAtG3CFoFol6Erm9m+77leZOkIBFC3w8jWAZqYeuD5EDleOHWMDYyi6nka6MWq5CkhquMYRwiuYe01TyAXycf76zp061Rs02hRa5Y1xreB2H2FfZT1lu8GBnRDzzOR5zihGZqOZxgT/hPyDRRNfMNyLdQCYnLnYtWNY31HfQGgZQRoINJ2R7EqRkf5CjYXlQg8wJrfvxPvzvI9uS4Hdy32wEMEL+H4ug+4dI76p/amF4ZxYVv/qsnEE1GRy2dlyW/dgp6u00ZGFOEaUBQ+kObxU2vmtJBwsoY6R6zta/387UV87rv4nRopS5/DT2Hwu4LdRR+EgTtVurDCPKTrOS//5KccpfdtP+a4rQHmJI3Xcwn340V9LAudLVXZ08xDHEVz9FVe2BqdgV0lhyZ8J7Zt8YAFTWjaPoiCyIae77tR4Fu2NQXINpHt2n7gT2wIbN/xfTOYeo4V8L2Xn4wUOBYIZF8wh1kxF7fJtlFegGyiOe9ANkMT2y2HavDjGtj46ey/h/jiJthSAAA=\"\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 \"root-authority-receipt-template.json\": {\n \"sha256\": \"2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 941,\n \"content_base64\": \"H4sIAAAAAAACA4VS0WobMRB891cIP+dydwaHJlBKwWnxQ01IA308ZGnOFtFJ15Xk2Cn9967u7DhpA30Tq9nd2Zn5NRFi2pPvfZC2MXp6I6bL1ZdF8eOuqKrqunio5uWzNesP8+q6LqieXuSODp0/oo1rdTGrZld1VddFhhaEDtrIaLx727EDBS5yW30uhq2cza+45pK1Qzn4RAoNYWeO8Jcv7KFS9NT0Vrp3Wh1v3aHxKSrf4R2AVAwYqGXyd7erxXL1daQoU9x6MvHQdF4jf39efFuult8fbu9HRJS0Qcw/BGm7m8e0BjlEhJKksUY6haouWRJPLEGhocYLhm6+3rRGDcubDrxsEJC8j0Vr9ozn7RvjivEIllHqtVSPYzclFw2flFmCnzwHutmQdJlQK23AgDud/jOBDnl+aU0LdVAWZdY7lP91rDzOCJ+Ohn2sX1/Aa2V8rWk2Ck/NORRntXvO1u6UrJeyNoEDZwYh/mpQCn38Z8PaJ6e5ysTkhpPhrc3KND2NgrBwz9BvdHA+Dh4+oOOsRAgTBNcEc9Vgn8oTt0txzw6IgBhEUL6H5qmnoYMkkRKEd/YgZBtBgjOUpBXKu9Zkn0U70MsfmX1OgfCtiFteiT2jhcOT6JkwYskDunAhCFEaF8RoeZ6WiNjXk+liDQ4RGGchAy6nk9+TP8/xgVatAwAA\"\n },\n \"root-recovery-receipt-template.json\": {\n \"sha256\": \"67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297\",\n \"codec\": \"gzip+base64\",\n \"uncompressed_bytes\": 1033,\n \"content_base64\": \"H4sIAAAAAAACA22TTY+bMBCG7/srLM5L1pBAyJ56qCr1UlXVSj1awzAk7hob2SYqrfrfO3xoS7I9Ic/reefDD78fhEhetW2SZ5Fo2zrfUZM2hDpoZ3feuZiGoSd/1YEFN0Q4U+oJ3ZX8mDxO6b13vQtglJ5dPn/59DH9/jWVUp7SF1k8/TK6rgp5ylKfLRnBDR5JebrOZTjLDsbMUkedU+ECeVFuw/0FAm0DngxxSEGM1PVxqf2mIuCF/mMzzaO4c91qmhJaMIGWumAHHuHfrOptyO01HLwnG5WFqK+keB/oOgoKDejuztLVgb3YCeK2hzWVt1ZzixHiELYy/eyNRh2n7bhXuh1rrY7OtnzpxlY3rOg4KudVQNeT6nToIOJle2vqSPPqLwQmXsat1FBv3NhN/sPdNrmcPnfQ3wv9Fe9D3hlTA74q3TEpEw/M1Jl+uB26wbiu3gWHGszTenx6B92H5dmej+Ue9+VB5ljVdEQ8YFY3GZRZme/527anLCubIs8PWXU8HvKiPhRwlFmFKKtqD8ltPwtzU0N4KmuJZVNVGVVF0WRNVlRS7jlEJ0nt/iTzMqd8MWhBG35DBNvoBuINhNbN5+SFETSsCQ4IwMgkCWabXwRJOC+g59e+gtmJb2s7M4OjGAIFvqDP2jJ8y981gUeakV728LhyyD3MK92c2ZYpYJycXcdjEZqRHWYhCG1D5IhwrQCx0mPGZaS3iXbJw5+Hv9yIXHoJBAAA\"\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-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json new file mode 100644 index 0000000..472b1ce --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/lifecycle-commands.json @@ -0,0 +1,213 @@ +[ + { + "id": "infd-20261011-zlib-remediation-r1", + "register": { + "memo": { + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:670b5b01e237b551f64f46f00271beba50a2b7652c769990e525c08a3d18809b" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:7fff0df04402d2c2979aa4e85396c4490f6ce0ef04fec944e880cada8617b5b9" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:446c172a1847a2c72f8cdb47223de849392fd8de23aff07dcea55302cc3a0bd7" + }, + { + "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:ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null + }, + "documents": [ + { + "digest": "sha256:670b5b01e237b551f64f46f00271beba50a2b7652c769990e525c08a3d18809b", + "media_type": "text/markdown", + "content_base64": "IyBSZXF1ZXN0ZWQgZGVjaXNpb24KCkFwcHJvdmUgdGhlIGV4YWN0IG5ldyBUMDUgemxpYi1vbmx5IGltYWdlIHJlbGVhc2UgYW5kIHByb3RlY3RlZCBzYW1lLXNjaGVtYSBjb21wYXRpYmlsaXR5IGRyaWxsLCBhZnRlciBmaW5hbCBpbmRlcGVuZGVudCBQcm9kdWN0IGFuZCBQbGF0Zm9ybSBhY2tub3dsZWRnbWVudHMuIFRoaXMgcGFja2V0IGlzIHByZXBhcmVkIGFuZCB1bmFwcHJvdmVkOyBmcmVzaCByb2xsYmFjayBzZXJ2ZXIgZHJ5LXJ1biBwYXNzZWQgd2l0aCBleGFjdGx5IHRoZSBiYXNlbGluZSBpbWFnZSBhbmQgZW1wdHkgZGlmZi4gUm9vdCByZXRhaW5zIGV4YWN0IGZpbmFsIG93bmVyIHNvdXJjZSByZXZpc2lvbiBhbmQgaW5kZXBlbmRlbnQgYWNrbm93bGVkZ21lbnRzIGJlZm9yZSBhc2tpbmcgZm9yIG5hdGl2ZSBmb3VuZGVyIGRpc3Bvc2l0aW9uLiBUaGUgcHJpb3IgVDA0IGFwcHJvdmFsIGlzIGV4Y2x1ZGVkLgoKVGhlIGFkbWl0dGVkIG93bmVyIENJIHB1Ymxpc2hlZCBpbW11dGFibGUgaW1hZ2UgZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyBmcm9tIHNvdXJjZTliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMuIEl0cyBhY3R1YWwgZnVsbCBzY2FuIHJlcG9ydHMgemVybyBmaW5kaW5ncyBhY3Jvc3M0NHBhY2thZ2VzLiBUaGUgc2FtZSBzY2FuIERCIGZpbmRzIG9uZU1FRElVTSBvbiBjdXJyZW50aW1hZ2U3NjNjLiBTaWduZWQgb2ZmaWNpYWwgQWxwaW5lIHpsaWIxLjMuMi1yMSBpcyB0aGUgc29sZSBwYWNrYWdlIGNoYW5nZTsgYWN0dWFsIHB1Ymxpc2hlZCBmaWxlc3lzdGVtIHByb29mIHNob3dzIG9ubHlsaWJ6IGFuZEFQS2luc3RhbGxlZGRhdGFiYXNlIGNoYW5nZXMsIHplcm8zMTNkaXJlY3RvcnltZXRhZGF0YSBjaGFuZ2VzLCByZXRhaW5lZG5pbmViYXNlbGF5ZXJzIGFuZCB1bmNoYW5nZWQzNmFwcGxpY2F0aW9uZmlsZXMvcHVycG9zZXBvbGljeS9jb25maWcvY3JlZGVudGlhbHMvYXVkaWVuY2UvcmVzb3VyY2VzLiBSZWdpc3RyeS10by1kYWVtb24gY29uZmlnIHNlcmlhbGl6YXRpb24gZGlmZmVycyB1bmRlciBjbG9zZWQgdmVyaWZpZWQgbm9ybWFsaXphdGlvbiwgd2l0aG91dCBydW50aW1lIGNoYW5nZS4KClRoZSBleGFjdCBvcmRlcmVkIHByb3RlY3RlZCBkcmlsbCBhbmQgcmVsZWFzZSBhcmUgc3BlY2lmaWVkIGluIG5hdGl2ZS1iYWNrdXAtcmVzdG9yZS1wcm90b2NvbC5tZCBhbmQgaGFzaC1ib3VuZCBleGVjdXRpb24gYnVuZGxlLiBOZXcgYmFja3VwIHBhdGhzLCBpc29sYXRlZCBjbG9uZSBhbmQgam91cm5hbCBhcmUgZGlzdGluY3QgZnJvbSBvbGQgZXZpZGVuY2UuIFJlYWwgcHJpdmF0ZSBkYXRhIHdpbGwgZW50ZXIgb25seSBhcHByb3ZlZCBwcml2YXRlIGN1c3RvZHkgYW5kIHRoZSBpc29sYXRlZCBuby1uZXR3b3JrIGNsb25lOyBjb250ZW50IG5ldmVyIGVudGVycyBwdWJsaWMgZXZpZGVuY2UuIEZhaWxlZC91bmNlcnRhaW4gcGhhc2Ugc3RhdGVzIHJlbWFpbiBkdXJhYmxlIGFuZCBjYW5ub3QgYmUgcmV0cmllZC4gUHJpb3IgVDA0IGZhaWxlZCBjb3B5L3ZlcmlmeSBhcmUgcHJlc2VydmVkLgoKQWZ0ZXIgc2NoZW1hNS9pbnRlZ3JpdHkvZXhhY3RjbG9uZWNvdW50cyBwYXNzIGFuZCBjbG9uZSBjbGVhbnVwIHN1Y2NlZWRzLCBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5IHByZWNlZGVzIHRoZSBleGFjdCBtYW51YWwgaW1hZ2Utb25seSBEZXBsb3ltZW50IHN5bmMuIEN1cnJlbnQgYmFzZWxpbmUgaXMgaGVhbHRoeWdlbmVyYXRpb24yNS9pbWFnZTc2M2MvQXBwbGljYXRpb25jOTYuIEltbXV0YWJsZUNNNmMvUFZDL1BvZGNvbmZpZ3VyYXRpb24vUERQIG9yaWdpbnMgcmVtYWluIHNlYWxlZC4gRnJlc2hub2RlQ1BVMzQ2MG9mNDAwMG0gc3VwcG9ydHMgdW5jaGFuZ2VkUmVjcmVhdGUsIHdpdGggYW5vdGhlciBjaGVjayBiZWZvcmUgZWZmZWN0LiBCcmllZiBhdmFpbGFiaWxpdHkgaW50ZXJydXB0aW9uIGV4cGVjdGVkLgoKUm9sbGJhY2sgcmVzdG9yZXMgRGVwbG95bWVudGltYWdlNzYzYyBhbmRBcHBsaWNhdGlvbmM5NiB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBvbGQgc25hcHNob3QgcmVzdG9yYXRpb24uIFNlcGFyYXRlIGluc3RhbGxlZC9uYXRpdmUgaGVhbHRoL2N1c3RvZHkvUERQLWdhdGVkIHJlYWRiYWNrIGFuZCBhY3R1YWwgbmF0aXZlIGltYWdlIHJlc2NhbiBwcmVjZWRlIFQwNSBjbG9zdXJlLiBBbGxwaGFzZSBzdGFydHMgZXhwaXJlT2N0MTIgMjM6NTk6NTlaOyByZWxlYXNlIHJlc2VydmVzMzBtaW51dGVzZm9ydmVyaWZpY2F0aW9uYW5kcmVjb3ZlcnkuIEFmdGVyZXhwaXJ5IGEgbmV3Zm91bmRlcmRlY2lzaW9uIGlzIHJlcXVpcmVkLiBFVVIwbmV3cmVjdXJyaW5naW5mcmFzdHJ1Y3R1cmUsIGJvdW5kZWRwcml2YXRlIHN0b3JhZ2UgYW5kdW5wcmljZWRhdHRlbmRlZHRpbWUuIE5vIG5ld2RvY3RyaW5lL2F1dG9waWxvdC9jcmVkZW50aWFsZ3JhbnQgaXMgYXV0aG9yaXplZC4KCgojIyBFeHBsaWNpdCByZWNvdmVyeSBkZWNpc2lvbgoKQWxzbyBhcHByb3ZlIHRoZSBwcm9wb3NlZCBpdGVtMTkgbWFudWFsIHNlcnZpY2Utb3V0YWdlIHJlY292ZXJ5IHRlcm0gYWJvdmU6IGV4YWN0IGhpc3RvcmljYWwgcm9vdGNvbmZpcm1lZCBhY2NlcHRhbmNlIGNhcHR1cmVkIGJlZm9yZSByZWxlYXNlIG1heSBhdXRob3JpemUgb25seSBzYW1lNzYzL2M5NiBvbmUtRGVwbG95bWVudC9sYXRlc3REQi1wcmVzZXJ2aW5nIHJvbGxiYWNrIGFmdGVyIGZhaWxlZGY1NTggc2VydmljZSBvdXRhZ2UsIHdpdGhpbjMwbWludXRlcyBBTkQgdGhlIGV4aXN0aW5nZGVhZGxpbmUuIFJvb3QgbXVzdCByZXRhaW4gZnJlc2h1bmF2YWlsYWJsZS9mYWlsZWRjYW5kaWRhdGUgd2l0bmVzc2VzIGFuZCBleGFjdGNhY2hlL2pvdXJuYWwvY3VzdG9keSBwaW5zLiBEdXJpbmdzZXJ2aWNlb3V0YWdlIHN1YnNlcXVlbnRyZXZvY2F0aW9uIGNhbm5vdCBiZWNoZWNrZWQ7IHRoaXMgYm91bmRlZCB1bmNlcnRhaW50eSBpcyBleHByZXNzbHkgZGlzY2xvc2VkIGFuZCBjb25zZW50ZWQgdG8gaW4gdGhpcyBuZXcgZGVjaXNpb24uIE5vNDAxLzQwMy9yZXZva2VkL2NvbmZsaWN0L21pc21hdGNoL2hlYWx0aHlzZXJ2aWNlIGZhbGxiYWNrLCBubyBiYWNrdXAvcmVsZWFzZSBmYWxsYmFjayBvciBmdXR1cmUvY3VzdG9tZXItcHJvZHVjdGlvbiByZXVzZS4gT3JkaW5hcnlmcmVzaHJlYWRiYWNrIHJlbWFpbnMgcHJlZmVycmVkLiBSZWNvdmVyZWQgcGxhY2VtZW50IGlzIHZlcmlmaWVkIHNlcGFyYXRlbHk7IHJvbGxiYWNrIGdyYW50cyBubyBjbGFpbSBvZiBjdXJyZW50UERQc3VjY2VzcyBvciBUMDVjbG9zdXJlLiBTZWUgZnVsbHByb3RvY29sIGFuZGNsb3NlLWRvd25jaGVja2xpc3RpdGVtMTkoUFJPUE9TRUR1bnRpbGFjdHVhbGFjY2VwdGFuY2UpLgo=" + }, + { + "digest": "sha256:7fff0df04402d2c2979aa4e85396c4490f6ce0ef04fec944e880cada8617b5b9", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtcmVsZWFzZS1wcm9wb3NhbCIsCiAgInZlcnNpb24iOiAxLAogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWI4NTA5MS1yMSIsCiAgInRyaWFsX2lkIjogImluZmQtemxpYi0yMDI2MTAxMS1yMSIsCiAgInN0YXRlIjogInByZXBhcmVkLXVuYXBwcm92ZWQiLAogICJtZW1vX2lkIjogImluZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMSIsCiAgIm1lbW9fdmVyc2lvbiI6IDEsCiAgInRhc2siOiAiSU5GRC1XUC0wMDA5LVQwNSIsCiAgImNhbmRpZGF0ZV9pbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJhcnRpZmFjdF9zb3VyY2VfcmV2aXNpb24iOiAiOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYyIsCiAgInByaW9yX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInByaW9yX2FwcGxpY2F0aW9uX3JldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiLAogICJzb3VyY2VfcmV2aXNpb24iOiBudWxsLAogICJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQiOiB0cnVlLAogICJuYXRpdmVfYWN0aW9uc19leGVjdXRlZCI6IGZhbHNlLAogICJhcHByb3ZhbF9pZCI6IG51bGwsCiAgImF1dGhvcml0eV9tb2RlIjogIkFETUlOSVNURVIiLAogICJ0YXJnZXQiOiAicmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbiIsCiAgImNvc3RfZXN0aW1hdGVfZXVyIjogMCwKICAicmlzayI6ICJQcml2YXRlIHNhbWUtc2NoZW1hIGJhY2t1cCBjb3BpZXMgYW5kIGJyaWVmIFJlY3JlYXRlIGF2YWlsYWJpbGl0eSBnYXAuIEZhaWxlZCBvciBhbWJpZ3VvdXMgcGhhc2VzIHJldGFpbmVkOyBubyByZXBsYXkuIFJvbGxiYWNrIGNoYW5nZXMgRGVwbG95bWVudCBpbWFnZS9zb3VyY2Ugb25seSwgcmV0YWlucyBsYXRlc3QgZGF0YWJhc2UuIiwKICAiZXhlY3V0ZV9ieSI6ICIyMDI2LTEwLTEyVDIzOjU5OjU5WiIsCiAgInJlbGVhc2VfbXVzdF9zdGFydF9ieSI6ICIyMDI2LTEwLTEyVDIzOjI5OjU5WiIsCiAgIm1heF9zbmFwc2hvdF9ieXRlcyI6IDUzNjg3MDkxMiwKICAibWF4aW11bV9uZXdfc25hcHNob3RfcGF5bG9hZF9ieXRlc19lYWNoX3NpdGUiOiAxMDczNzQxODI0LAogICJsb2NhbF9leHRyYV9kaXNwb3NhYmxlX2Nsb25lX21heF9ieXRlcyI6IDUzNjg3MDkxMiwKICAicHJpdmF0ZV9tZXRhZGF0YV9hbmRfc3FsaXRlX3NpZGVjYXJzX2FkZGl0aW9uYWxfaGVhZHJvb21fYnl0ZXMiOiAxNjc3NzIxNiwKICAidW5ib3VuZF9pbnB1dHMiOiBbCiAgICAiZXhhY3QgY29tbWl0dGVkIG93bmVyIHJlbmRlcmluZyByZXZpc2lvbiByZXRhaW5lZCBpbiByb290IHN1cGVydmlzZWQgcmVjZWlwdCIsCiAgICAiUHJvZHVjdCBhbmQgUGxhdGZvcm0gZmluYWwgYWNrbm93bGVkZ21lbnRzIiwKICAgICJjb25maXJtZWQgZm91bmRlciBleGFjdCBuZXcgZGlzcG9zaXRpb24iCiAgXSwKICAicHVibGlzaGVkX3ZlcmlmaWNhdGlvbl9zaGEyNTYiOiAiZGQ0ZWVjZjBjMTAzZGNhNzkyMjA5NGE4YmVlYjk5Yjc3YWU5NmZkMWQ1ZmU1MzJlMzdiZDgzM2RhYTAyNjE0ZSIsCiAgIm5hdGl2ZV9yZWFkb25seV9wcmVmbGlnaHRfc2hhMjU2IjogIjU2NjM3OTk0ZGZkYWU0NmE2ZjlhYjQ0MmMyZmY5YjI1OTIxMjY1MGIzNWViOThkODk2YzVlODM3ZjAxY2UyZjkiLAogICJleGVjdXRvcl9wbGFuX3NoYTI1NiI6ICI1ZDM3M2RlMGI3MzdkNTg2ZmFkMzQyOGY1OGJiZDk3N2NiZTdmZGE4ODBmZWM1NTY4MDUyMzZmODRjNDUwYjllIiwKICAiZXhlY3V0aW9uX2J1bmRsZV9zaGEyNTYiOiAiY2UwYjBhMjA5Y2M3MmIzNWU5YmI5YTlhMTMxYjc3ODZhNmQ1ZDJjMTJjMWJjN2E3MGY4YWY0MzhjOTIyNzEzOCIsCiAgInJvbGxiYWNrX3ByZWZsaWdodF9zaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgInBvc3RfcmVhZHlfbmF0aXZlX3Byb3ZpZGVyX3Byb2JlIjogImNhbm9uaWNhbCBsaWZlY3ljbGUub3V0Y29tZXMgU09VUkNFMSB0aHJvdWdoIGV4aXN0aW5nIGFkbWl0dGVkIFN0YXRlSHViIGRpc3BhdGNoZXI7IGNyZWRlbnRpYWxzIHN0YXkgaW5zaWRlIFBvZDsgYm91bmRlZCBtZXRhZGF0YSBjb3JyZWxhdGVkIHRvIHZlcmlmaWVkIGNhbmRpZGF0ZSBpbWFnZS9Qb2Qvc291cmNlIiwKICAiZnJlc2hfc2Nhbl9jb250cmFjdF9zaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgInByZXBhcmF0aW9uX2ZhaWx1cmVfaGlzdG9yeV9zaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIsCiAgImJvdW5kZWRfb3V0YWdlX3JvbGxiYWNrX3ByZV9hdXRob3JpemF0aW9uIjogewogICAgInN0YXR1cyI6ICJwcm9wb3NlZC1vbmx5LXVuYXBwcm92ZWQiLAogICAgImNsb3NlX2Rvd25fY2hlY2tsaXN0X2l0ZW0iOiAxOSwKICAgICJzY29wZSI6ICJtYW51YWwgc2FtZTc2My9jOTYgb25lRGVwbG95bWVudCBwcmVzZXJ2aW5nIGxhdGVzdERCLCBmYWlsZWRjYW5kaWRhdGUgb3V0YWdlIG9ubHkiLAogICAgIm1heGltdW1fc2Vjb25kc19mcm9tX3JlbGVhc2UiOiAxODAwLAogICAgImRlYWRsaW5lIjogIjIwMjYtMTAtMTJUMjM6NTk6NTlaIiwKICAgICJub3JtYWxfZnJlc2hfcmVhZGJhY2tfcHJlZmVycmVkIjogdHJ1ZSwKICAgICJ1bmF2YWlsYWJsZV9yZXZvY2F0aW9uX2NoZWNrX2Rpc2Nsb3NlZCI6IHRydWUsCiAgICAiZm9yYmlkZGVuIjogWwogICAgICAiNDAxIiwKICAgICAgIjQwMyIsCiAgICAgICJyZXZva2VkIiwKICAgICAgImNvbmZsaWN0IiwKICAgICAgImlkZW50aXR5L3Njb3BlIG1pc21hdGNoIiwKICAgICAgImhlYWx0aHkgc2VydmljZSIsCiAgICAgICJvdGhlciBwaGFzZSIsCiAgICAgICJmdXR1cmUvY3VzdG9tZXIgcHJvZHVjdGlvbiByZXVzZSIKICAgIF0KICB9Cn0K" + }, + { + "digest": "sha256:446c172a1847a2c72f8cdb47223de849392fd8de23aff07dcea55302cc3a0bd7", + "media_type": "text/markdown", + "content_base64": "IyBUMDUgemxpYjg1MDkxIHJlbGVhc2Ug4oCUIHByZWxpbWluYXJ5LCB1bmFwcHJvdmVkCgpUaGlzIGlzIGEgZGlzdGluY3QgcHJvcG9zYWwvdHJpYWwgZm9yIGV4aXN0aW5nIElORkQtV1AtMDAwOS1UMDUuIFRoZSBhY3R1YWwgVDA0IHNvdXJjZTIgYWNjZXB0YW5jZSBkb2VzIG5vdCBhdXRob3JpemUgaXQuIFByZXZpb3VzIFIxIGNvcHkgYW5kIFIyIHZlcmlmeSBVTkNFUlRBSU4gam91cm5hbCBzdGF0ZXMgcmVtYWluIHVudG91Y2hlZC4gSU5GRC1JTi0wMDEwIHJlbWFpbnMgYW4gdW5wcm9tb3RlZCBnZW5lcmFsIHZlcmlmaWVyIHJlc2lkdWFsOyB0aGlzIG5ldyB0YXNrLXNwZWNpZmljIHZlcmlmaWVyIGlzIGEgcHJlcmVxdWlzaXRlIG9mIGFjdGl2ZSBUMDUsIG5vdCBhbiBhbWVuZG1lbnQgb2YgdGhlIG9sZCBhcHByb3ZlZCBoZWxwZXIuCgpFeGFjdCBpbnRlbmRlZCBpbWFnZSBmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzIHdhcyBidWlsdCBieSBhZG1pdHRlZCBvd25lciBDSTExNTM0L3J1bjQgZnJvbSA5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjLiBQdWJsaWNhdGlvbiBpcyBub3QgaW5zdGFsbGVkIGFjY2VwdGFuY2UuIEZpbmFsIHBhY2tldCByZXF1aXJlcyBpbmRlcGVuZGVudCBwdWJsaXNoZWQtaW1hZ2Ugc2Nhbi9ydW50aW1lL2ZpbGVzeXN0ZW0vc291cmNlIHByb29mIGFuZCBmcmVzaCByZWFkLW9ubHkgbmF0aXZlIHByb2plY3Rpb24vb25lLW9iamVjdCBkcnktcnVuIGV2aWRlbmNlLiBVbnRpbCBhbGwgZmluYWwgaW5wdXRzIGFuZCBpbmRlcGVuZGVudCBvd25lciBhY2tub3dsZWRnbWVudHMgYXJlIGZyb3plbiwgZXhlY3V0aW9uLXBsYW4gc3RhdGUgcmVtYWlucyBwcmVsaW1pbmFyeSBhbmQgdGhlIGFjdHVhdG9yIHJlZnVzZXMgYmVmb3JlIGFueSBhdXRob3JpdHksIGpvdXJuYWwgb3IgbmF0aXZlIGFjdGlvbi4KCkFmdGVyIGEgTkVXIGV4YWN0IGNvbmZpcm1lZCBmb3VuZGVyIGFjY2VwdGFuY2UsIHJvb3QgZnJlc2hseSBhdXRoZW50aWNhdGVzIGZpeGVkLW9yaWdpbiBuYXRpdmUgc291cmNlLXZlcnNpb24xIG91dGNvbWVzIGJlZm9yZSBlYWNoIHBoYXNlLiBSZWNlaXB0IGZpbGVzIGFyZSBzdXBlcnZpc2VkIGJvb2trZWVwaW5nLCBub3Qgc2lnbmVkIGdyYW50cyBvciBhdXRvbm9teS4gV3JvbmcgdGFzaywgc291cmNlLCBtZW1vL3ZlcnNpb24sIHN0YWxlL3BlbmRpbmcvYWdlbnQgZGlzcG9zaXRpb24sIG9sZCBUMDQgYWNjZXB0YW5jZSBvciBjaGFuZ2VkIGlucHV0cyByZWZ1c2UuIFJvb3QgcmV0YWlucyBleGFjdCBhcHByb3ZlZCBzb3VyY2UgcmV2aXNpb24vZGlnZXN0cyBhbmQgYWN0aW9uIHJlc3VsdHMgaW4gc3VwZXJ2aXNpb24uIEFwcHJvdmFsIGRvZXMgbm90IHByb21vdGUgYW55IGFnZW50LgoKRml4ZWQgcGhhc2Ugb3JkZXI6IGRyaWxsLWJhY2t1cCDihpIgZHJpbGwtY29weSDihpIgb2ZmbGluZS12ZXJpZnkg4oaSIGNsZWFudXAtb2ZmbGluZSDihpIgY3V0b3Zlci1iYWNrdXAg4oaSIGN1dG92ZXItY29weSDihpIgcmVsZWFzZSDihpIgdmVyaWZ5LiBOZXcgcHJpdmF0ZSBuYXRpdmUgL2RhdGEvcHJpdmF0ZS96bGliODUwOTEtcjEsIHJvb3QgLnByaXZhdGUtYmFja3Vwcy8yMDI2MTAxMS1pbmZkLXpsaWItcjEgYW5kIGxvY2FsIHZvbHVtZSBpbmZkLXpsaWItcjEtcmVzdG9yZS0yMDI2MTAxMSBhcmUgZGlzdGluY3QgZnJvbSBhbGwgVDA0IGN1c3RvZHkuIE5ldyBwcml2YXRlIGpvdXJuYWwgaW50ZW50IGlzIGZzeW5jZWQgUlVOTklORyBiZWZvcmUgZGlzcGF0Y2g7IG5vIGF0dGVtcHRlZCBwaGFzZSByZXBsYXkuIEZpeGVkIG91dHB1dCBzY2hlbWEgY29udGFpbnMgb25seSBjb3VudHMsIGhhc2hlcywgb2JqZWN0IGlkZW50aXR5IGFuZCBib29sZWFuIHJlc3VsdHM7IHJhdyBlcnJvcnMgYW5kIHByaXZhdGUgY29udGVudCBhcmUgd2l0aGhlbGQuIEV4aXN0aW5nIG5hdGl2ZSBzbmFwc2hvdHMvZGF0YWJhc2Uvc2lkZWNhcnMgYXJlIG5ldmVyIHJlbW92ZWQgb3IgcmVzdG9yZWQgb3ZlciBjdXJyZW50IGRhdGEuCgpGcmVzaCBiYWNrdXAgaW5zcGVjdGlvbiB1c2VzIGNvcGllZCBleHBsaWNpdC1jbG9zZSBTUUxpdGUgaGVscGVyczogbGl2ZSBhbmQgb2ZmbGluZSBjbG9uZSByZWFkZXJzIGFyZSBtb2RlPXJvL3F1ZXJ5X29ubHkgYW5kIFdBTC1hd2FyZSwgYmVmb3JlIGFueSBTdG9yZS9hZG1pbiBvcGVuLiBJbW11dGFibGUgcmVhZGVyIGlzIHVzZWQgb25seSBmb3IgZnJlc2hseSBjbG9zZWQgaGFzaC1ib3VuZCBwcml2YXRlIHNuYXBzaG90IHdpdGggYWJzZW50L3plcm8gV0FMIGZyYW1lcyBhbmQgc3RhYmxlIGlkZW50aXR5L21ldGFkYXRhL2RpZ2VzdCBiZWZvcmUvYWZ0ZXIgcmVhZC9jb3B5LiBNYWluIGFuZCBzaWRlY2FycyByZW1haW4gcmV0YWluZWQuIFNjaGVtYSBtdXN0IGVxdWFsNSwgaW50ZWdyaXR5IG9rLCBhbmQgZXhhY3Qgc25hcHNob3QvaXNvbGF0ZWQgY2xvbmUgY291bnRzIG1hdGNoIGJlZm9yZS9hZG1pbi9hZnRlci4gVGhlIGRldGFjaGVkIGxvY2FsIGNsb25lIGhhcyBuZXR3b3JrIG5vbmUsIHJlYWRvbmx5IHJvb3QsIG5vIHNlcnZpY2UvcnVudGltZSBjb25maWcvY3JlZGVudGlhbCBtb3VudHM7IG9ubHkgbmFycm93bHkgc2NvcGVkIFVJRDAgQ0FQX0NIT1dOIGluaXRpYWxpemVyIHByZWNlZGVzIFVJRDEwMDAxIHJlYWRzL2FkbWluLiBPcmlnaW5hbCBwcml2YXRlIGNvcHkgaXMgaGFzaC1zdGFibGUuIENsZWFudXAgcmVtb3ZlcyBvbmx5IHRoZSBkaXNwb3NhYmxlIHZvbHVtZSB3aG9zZSBub25jZS9sYWJlbHMvY3JlYXRpb24gbWV0YWRhdGEgbWF0Y2ggdGhpcyB0cmlhbCwgYmVmb3JlIGN1dG92ZXIuCgpFYWNoIHNuYXBzaG90IGlzIGJvdW5kZWQ1MTJNaUIuIEF0IG1vc3QgdHdvIG5ldyBzbmFwc2hvdHMgb2NjdXB5IGVhY2ggbmF0aXZlL29mZmNsdXN0ZXIgY3VzdG9keSAoMUdpQiBwYXlsb2FkIGVhY2gpOyB0aGUgZGlzcG9zYWJsZSBvZmZjbHVzdGVyIGNsb25lIGFkZHM1MTJNaUIgd2hpbGUgcHJlc2VudCwgcGx1czE2TWlCIHNpZGVjYXIvbWV0YWRhdGEgcmVzZXJ2ZS4gTmV3IG5hdGl2ZSBkcmlsbCBwaGFzZSBjaGVja3MgZnJlZSBzcGFjZSBmb3IgYm90aDsgbG9jYWwgY3VzdG9keSBjaGVja3MgdHdvIHNuYXBzaG90IGJvdW5kcyBwbHVzIHJlc2VydmUuIEV4aXN0aW5nIFQwNCByZXRlbnRpb24gY29uc3VtZXMgYWRkaXRpb25hbCBwcmUtZXhpc3Rpbmcgc3BhY2UuIEVVUjAgcmVjdXJyaW5nIGluZnJhc3RydWN0dXJlIGVzdGltYXRlOyBodW1hbi9jb21wdXRlIHRpbWUgdW5wcmljZWQuCgpDdXRvdmVyIHRha2VzIGEgZnJlc2ggbmF0aXZlIGJhY2t1cCBhbmQgZXhhY3Qgb2ZmY2x1c3RlciBjb3B5LiBSZWxlYXNlIHRoZW4gcmVxdWlyZXMgbGF0ZXN0IHNjaGVtYTUgcmVhZG9ubHkgcHJvb2YsIHNlYWxlZCBQb2QvRGVwbG95bWVudC9jb25maWcvUFZDIGN1c3RvZHkgYW5kIHNhbWUgYmFzZWxpbmUgaW1hZ2U3NjNjL2N1cnJlbnQgQXBwbGljYXRpb24gc291cmNlYzk2LCBhIGhlYWx0aHkgc2luZ2xlIHRhcmdldDkyLjIwNS42Mi4yMzkgbm9kZSBhbmQgZnJlc2ggcmVxdWVzdGVkIENQVSDiiaQgYWxsb2NhdGFibGUgY2FwYWNpdHkuIFJlY3JlYXRlIGFuZCByZXNvdXJjZXMgcmVtYWluIHVuY2hhbmdlZC4gU2VydmVyIGRyeS1ydW4vY2xpZW50IGRpZmYgbXVzdCBzaG93IG9ubHkgdGhlIGltYWdlLiBBcHBsaWNhdGlvbiBVSUQvcmVzb3VyY2VWZXJzaW9uL3NvdXJjZSBDQVMgZGlzcGF0Y2hlcyBtYW51YWwgZXhhY3QgZmluYWwgcmV2aXNpb24sIGluaXRpYXRlZEJ5IGN1c3RvZGlhbi1jb2RleCwgZXhwbGljaXQgcHJ1bmU9ZmFsc2UgYW5kIG9ubHkgYXBwcy9EZXBsb3ltZW50IGluZm9ybWVkLWRlY2lzaW9uIGluIGl0cyBuYW1lc3BhY2UuIE5vIHdob2xlLUFwcGxpY2F0aW9uIHN5bmMsIG5hbWVzcGFjZS9jb25maWcvY3JlZGVudGlhbC9yZXNvdXJjZSBjaGFuZ2Ugb3IgcHJ1bmluZy4KClZlcmlmaWNhdGlvbiByZWFkcyBpbWFnZUlEL3JlYWRpbmVzcy9vd25lciBjaGFpbi9leGFjdCBjb25maWd1cmVkIFBvZCBmaWVsZHMsIHNjaGVtYTUvaW50ZWdyaXR5L21ldGFkYXRhIGNvdW50cywgaW5zdGFsbGVkIHBvbGljeSBoYXNoIGFuZCBzeW50aGV0aWMgcHVycG9zZSByZWZ1c2FscywgaGVhbHRoMjAwLCBpbnN0YWxsZWQgZml4ZWQgemxpYiBhbmQgZXhhY3QgaW1hZ2UgcHJvb2YuIEFmdGVyIGV4YWN0IGNhbmRpZGF0ZSBSZWFkeSBhbmQgdmVyaWZpZWQgcm9sbG91dCwgcm9vdCBleGVjdXRlcyBhdHRhY2hlZCBwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IGluc2lkZSB0aGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kLiBJdCBjYWxscyBjYW5vbmljYWwgbGlmZWN5Y2xlLm91dGNvbWVzIGZvciBpbmZkLTIwMjYxMDExLXpsaWItcmVtZWRpYXRpb24tcjEgU09VUkNFdmVyc2lvbjEgYXQgZGlzcGF0Y2hlciBmaXhlZCBPUklHSU4gd2l0aCBOb1JlZGlyZWN0L3Byb3h5IGRpc2FibGVkOyBleGlzdGluZyBpbnRlcm5hbCB0b2tlbl9maWxlIHN0YXlzIGluc2lkZSB0aGF0IFBvZCBhbmQgbm8gdG9rZW4vYm9keS9wcml2YXRlIGNvbnRlbnQgaXMgZXhwb3J0ZWQuIFJvb3QgcmV0YWlucyBib3VuZGVkIEhUVFAtc3VjY2VzcyBtZXRhZGF0YS9vYnNlcnZhdGlvbnRpbWUgYW5kIGNvcnJlbGF0ZXMgdmVyaWZpZWQgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UsIHRoZW4gcmVjaGVja3MgdGhvc2UgaWRlbnRpdGllcy4gVGhpcyBhY3R1YWwgcHJvdmlkZXIvUERQLWdhdGVkIHByZXNlcnZhdGlvbiBwcm9vZiBpcyBzZXBhcmF0ZSBmcm9tIGluc3RhbGxlZCBzeW50aGV0aWMyYWxsb3c4cmVmdXNlOyBib3RoIGFyZSByZXF1aXJlZCBiZWZvcmUgdGFzayBjbG9zdXJlLiBJdCBkb2VzIG5vdCBhc3NlcnQgcHJvdmlkZXIgYWR2aXNvcnkgZW1pc3Npb25zIG9yIG5ldyBkb2N0cmluZS4gQXJnbzMuNS4zIG9taXRzIGZhbHNlIHBydW5lIGluIG9wZXJhdGlvbiBzdGF0dXM6IG1pc3Npbmcgb3IgZXhhY3RmYWxzZSBpcyBhY2NlcHRlZCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBqb3VybmFsJ3MgQ09NUExFVEUgZXhwbGljaXRmYWxzZSByZXF1ZXN0LCBleGFjdCBzb3VyY2UvcmVzb3VyY2VzL2luaXRpYXRpb24sIG9wZXJhdGlvbiBzdGFydCBhZnRlciBvdXIgZHVyYWJsZSBhdHRlbXB0LCBib3VuZGVkIGZpbmlzaCBhbmQgb25lIFN5bmNlZCBEZXBsb3ltZW50IHJlc3VsdC4gVHJ1ZS9udWxsL3N0cmluZy9wcmlvci9mb3JlaWduL2V4dHJhLXJlc291cmNlIHJlc3VsdHMgcmVmdXNlLgoKUm9sbGJhY2sg4oaSIHJvbGxiYWNrLXZlcmlmeSBpcyBzZXBhcmF0ZSBhbmQgcGVybWl0dGVkIG9ubHkgYWZ0ZXIgYSByZWNvcmRlZCByZWxlYXNlIGF0dGVtcHQuIEl0IHN3aXRjaGVzIG9ubHkgQXBwbGljYXRpb24gc291cmNlIGJhY2sgdG8gYzk2IGFuZCBEZXBsb3ltZW50IGltYWdlNzYzYzsgaXQgbmV2ZXIgcmVzdG9yZXMgYW4gb2xkIHNuYXBzaG90IG92ZXIgdGhlIGxhdGVzdCBkYXRhYmFzZS4gUmVjb3ZlcnkgZGlzcGF0Y2ggd29ya3MgZXZlbiBpZiBjYW5kaWRhdGUgUG9kIGlzIGFic2VudC91bnJlYWR5IGFuZCBuZXZlciBkZXBlbmRzIG9uIGNhbmRpZGF0ZSBEQiBpbnNwZWN0aW9uLiBSZWNvdmVyeSB2ZXJpZmljYXRpb24gc2VwYXJhdGVseSByZXF1aXJlcyBSZWFkeTEvb2xkIGltYWdlL2N1cnJlbnQgc2NoZW1hNS9kYXRhLWN1c3RvZHkgYW5kIGV4YWN0IHJlY29yZGVkIHNjb3BlZCBjb21wbGV0aW9uLiBBbGwgcGhhc2VzIG11c3QgYmVnaW4gYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVo7IHJlbGVhc2UgbXVzdCBiZWdpbiBhdCBsZWFzdDMwbWludXRlcyBlYXJsaWVyLiBCZXlvbmQgZXhwaXJ5IHN0b3AgYW5kIG9idGFpbiBhIG5ldyBmb3VuZGVyIGRlY2lzaW9uOyBubyBhdXRvbWF0aWMgZXh0ZW5zaW9uIG9yIGVtZXJnZW5jeSBncmFudC4gQSBmYWlsZWQvdW5jZXJ0YWluIGF0dGVtcHQgcmVxdWlyZXMgaW5mb3JtZWQgcmVjb3ZlcnkgcmF0aGVyIHRoYW4gcmV0cnkuCgpUMDUgcmVtYWlucyBwcm9ncmVzcyB1bnRpbCBhY3R1YWwgaW5zdGFsbGVkIGFjY2VwdGFuY2UgYW5kIG5hdGl2ZSByZXNjYW4gcHJvdmUgdGhlIGZpbmRpbmcgYWJzZW50LiBObyBSaXNrIEVuZ2luZSBncmFkZSBpcyBhc3NpZ25lZC4gT25seSB0aGVuIG1heSBvd25lciBjbG9zZSBUMDUvcmlzayBhbmQgY29uc2lkZXIgZmluaXNoaW5nIFdQOSwgd2l0aCBleGlzdGluZyByZXNpZHVhbHMgbGl2ZSBmaXJzdC4KCkFjdHVhbCByZWxlYXNlIGFuZCBpbnN0YWxsZWQgdmVyaWZpY2F0aW9uIGFsc28gcmVxdWlyZSBmaXhlZCBwcml2YXRlIHJvb3Qgc2NhbiByZWNlaXB0IGFuZCByZXRhaW5lZCBmdWxscmVwb3J0IGF0IC90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4te3JlY2VpcHQsZnVsbH0uanNvbiwgc3VwZXJ2aXNlZCBtZXRhZGF0YSBiaW5kaW5nIHRvIGV4YWN0IGltbXV0YWJsZWY1NTgvYXJ0aWZhY3Rzb3VyY2U5YjQvc2Nhbm5lcmRpZ2VzdDYyYjEuIEJlZm9yZSBqb3VybmFsIHN0YXJ0LCBmdWxscmVwb3J0aGFzaCBtdXN0IG1hdGNoLCBubyBzdXBwcmVzc2lvbi9hbGxzZXZlcml0eSBmbGFncyB0cnVlLCBleGl0MCwgbm9uZW1wdHkgdmFsaWQgZnVsbHJlc3VsdHMgY29udGFpbiB6ZXJvIGZpbmRpbmdzLCBzY2FuIGNvbXBsZXRlZCB3aXRoaW40aG91cnMgYW5kIG5vdyBwcmVjZWRlcyBEQiBOZXh0VXBkYXRlLiBUaGUgcHVibGlzaGVkIERCIGV4cGlyZXMyMDI2LTEwLTExVDE4OjU5OjUwWjsgaXQgaXMgbm90IHZhbGlkIHVudGlsIHJlbGVhc2UgZGVhZGxpbmUuIFJvb3QgcmVmcmVzaGVzIERCIGFuZCByZXNjYW5zIHRoZSBzYW1lIGltbXV0YWJsZSBpbWFnZSBhcyByb3V0aW5lIHJlYWQtb25seSB2ZXJpZmljYXRpb24gd2hlbiBuZWVkZWQsIHJldGFpbmluZyBhbGwgcmF3IHB1YmxpY3NjYW4gYXJ0aWZhY3RzLiBBbnkgbmV3IGZpbmRpbmcgcmVmdXNlcyByZWxlYXNlL2Nsb3N1cmUgYW5kIGlzIHJldGFpbmVkIGZvciBpbmZvcm1lZCByZWFzc2Vzc21lbnQvbmV3IGRlY2lzaW9uIGFzIG5lZWRlZCwgbmV2ZXIgZmlsdGVyZWQgb3IgaWdub3JlZC4gRXhpc3RpbmcgcmlzayBzdGF5cyBvcGVuIHVudGlsIGFjdHVhbCBpbnN0YWxsZWQgcHJvb2YvbmF0aXZlIHJlc2Nhbi4KClJlZmluZW1lbnQgcHJlc2VydmVzIHJldmlld2VkODEvc291cmNlIGJ5dGVzIGFuZCBleGFjdGRyYWZ0MjkgY29tcGxldGUgYXJjaGl2ZXMuIEluaXRpYWw2NyBtYW5pZmVzdCBoYXNoIGlzIGtub3duIGJ1dCBleGFjdCBvcmlnaW5hbDY3bWFuaWZlc3Qvc291cmNlIHNuYXBzaG90IHdhcyBub3QgcmV0YWluZWQgYmVmb3JlODE7IHByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIGRpc2Nsb3NlcyB0aGlzLiBObyBwcmlvcm5hdGl2ZWVmZmVjdCBvY2N1cnJlZC4gTmV3IGZ1bGwgQ0xJIHN5bnRoZXRpYyB0ZXN0cyBleGVyY2lzZSBtYWluIHNvdXJjZWhhc2gvcmVjZWlwdC9qb3VybmFsL2Rpc3BhdGNoIHdpcmluZyBmb3IgZHJpbGwtY29weSxyZWxlYXNlLHZlcmlmeSBhbmQgcmVmdXNlIHNvdXJjZSBkcmlmdCBiZWZvcmUgbmV3am91cm5hbC9uYXRpdmUgYm91bmRhcnkuIFJlbW90ZSBwYXlsb2FkIGNhcnJpZXMgZXhhY3QgZnJvemVuIHNuYXBzaG90IGlkZW50aXR5IGFuZCBjb21wbGV0ZWQgcmVsZWFzZSBpbnRlbnQuIEZ1bGwgc2NhbiBjb250cmFjdCBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgU2NoZW1hVmVyc2lvbjIvY29udGFpbmVyX2ltYWdlLCBwdWJsaXNoZWQgY29uZmlnSW1hZ2VJRDYyMiAobm90IGRhZW1vbnNlcmlhbGl6YXRpb25mMiksIGV4YWN0MTFEaWZmSURzL3Jvb3Rmcy9zb3VyY2UvY29udGV4dGxhYmVscywgZXhhY3RseTM4T1MrNlB5dGhvbiBwYWNrYWdlcyB3aXRoIGNhbm9uaWNhbFBVUkwvdmVyc2lvbiBpbnZlbnRvcnksIGZpeGVkemxpYnIxIGFuZCBubyBvbWlzc2lvbnMvZHVwbGljYXRlcy90cnVuY2F0ZWQvZW1wdHljb3ZlcmFnZS4gQXJjaGl2ZSBzY2FuIFJlcG9EaWdlc3RzIGFic2VudCBpcyBsZWdpdGltYXRlOyBub3QgZmFicmljYXRlZC4KCgojIyBQcm9wb3NlZCBleHBsaWNpdCBtYW51YWwgc2VydmljZS1vdXRhZ2UgcmVjb3ZlcnkgY29uc2VudAoKQ2xvc2UtZG93biBjaGVja2xpc3QgaXRlbTE5IGluIHRoZS1jdXN0b2RpYW4vZG9jcy9zZWN1cml0eS1jbG9zZS1kb3duLWNoZWNrbGlzdC5tZCBpcyBQUk9QT1NFRCBPTkxZIHVudGlsIHRoZSBmb3VuZGVyIGFjY2VwdHMgdGhpcyBleGFjdCBuZXcgcGFja2V0LiBUaGlzIHRlcm0gY2hhbmdlcyB0aGUgcmVjb3ZlcnkgYXV0aG9yaXR5IGRlcGVuZGVuY3kgZm9yIHRoaXMgdHJpYWw7IHByZXZpb3VzIFQwNCBhcHByb3ZhbCBhbmQgb3duZXIgc291cmNlIHJldmlld3MgZG8gbm90IGdyYW50IGl0LiBPcmRpbmFyeSBmcmVzaCBuYXRpdmUgc291cmNlVDA1QDEgY29uZmlybWVkIGZvdW5kZXIgcmVhZGJhY2sgcmVtYWlucyBwcmVmZXJyZWQgZm9yIGV2ZXJ5IHBoYXNlLiBObyBzdGFuZGluZyByZWNvdmVyeS9hdXRvcGlsb3Qvc2lnbmVkIGdyYW50IGlzIGNyZWF0ZWQuCgpCZWZvcmUgcmVsZWFzZSwgcm9vdCBmcmVzaGx5IGF1dGhlbnRpY2F0ZXMgdGhlIGluZGVwZW5kZW50bHkgY29uZmlybWVkIGFjY2VwdGFuY2Ugb2YgdGhlc2UgZXhhY3QgdGVybXMsIG1hcmtzIGl0cyBzY29wZWQgcmVjZWlwdCBib3VuZGVkX291dGFnZV9yb2xsYmFja19wcmVfYXV0aG9yaXplZD10cnVlLCBhbmQgY2FwdHVyZXMgZXhhY3QgcmVjZWlwdC9vdXRjb21lIGJ5dGVzIGludG8gYSB1bmlxdWUwNjAwIHJlbGVhc2UtYXV0aG9yaXR5LWNhY2hlLmpzb24gaW4gdGhpcyB0cmlhbCdzMDcwMCBpZ25vcmVkIGN1c3RvZHkuIEhhc2ggaXMgcmVjb3JkZWQgaW4gZHVyYWJsZSByZWxlYXNlIGpvdXJuYWwgYmVmb3JlIHJlbW90ZSBlZmZlY3QuIENhY2hlIGlzIGhpc3RvcmljYWwgY29uZmlybWVkIGFjY2VwdGFuY2UsIG5ldmVyIGZhYnJpY2F0ZWQgY3VycmVudCBvdXRjb21lcy4gRHVyaW5nIGZhaWxlZC1jYW5kaWRhdGUgc2VydmljZSBvdXRhZ2UgdGhlIGFiaWxpdHkgdG8gY2hlY2sgc3Vic2VxdWVudCByZXZvY2F0aW9uIGlzIHVuYXZhaWxhYmxlLiBUaGUgZm91bmRlciBleHBsaWNpdGx5IGFjY2VwdHMgdGhhdCBuYXJyb3cgdW5jZXJ0YWludHkgZm9yIG1hbnVhbCBzdXBlcnZpc2VkIHJvbGxiYWNrIG9ubHksIGZvciBhdCBtb3N0MzBtaW51dGVzIGZyb20gdGhlIGFjdHVhbCBkdXJhYmxlIHJlbGVhc2UgYXR0ZW1wdCBBTkQgYmVmb3JlT2N0MTIgZGVhZGxpbmUuIFJvb3QgbXVzdCBwZXJzb25hbGx5IGV2YWx1YXRlIHRoZSBleGFjdCBib3VuZGVkIHJlY292ZXJ5IHJlY2VpcHQ7IG5vIGFnZW50IHByb21vdGlvbiBvciBhdXRvbWF0aWMgZ3JhbnQuCgpJZiBmcmVzaCBzb3VyY2UxIHJlYWRiYWNrIGlzIHVuYXZhaWxhYmxlLCBhIHNlcGFyYXRlIGZpeGVkIHByaXZhdGUgL3RtcC9zZWN1cml0eS1pbmZkLXpsaWItcm9vdC1yZWNvdmVyeS1yZWNlaXB0Lmpzb24gbXVzdCByZWNvcmQgZnJlc2jiiaQxMjBzZWNvbmQgc3RydWN0dXJhbCB1bmF2YWlsYWJsZSBldmlkZW5jZSAodHJhbnNwb3J0IHVuYXZhaWxhYmxlIG9ySFRUUDUwMi81MDMvNTA0KSwgcm9vdG1hbnVhbHZlcmlmaWNhdGlvbiwgZXhhY3Rwcm9wb3NhbC9zb3VyY2UvbWVtby9jYWNoZS9yZWxlYXNlYXR0ZW1wdC9EZXBsb3ltZW50VUlEL2NvbmZpZ21hcFVJRC9QVkNVSUQgYW5kIHNhbWVpbWFnZTc2My9zb3VyY2VjOTYgcm9sbGJhY2sgc2NvcGUuIE5vNDAxLzQwMy9leHBsaWNpdHJldm9jYXRpb24vY3VycmVudGNvbmZsaWN0L2lkZW50aXR5LW9yLXNjb3BlLW1pc21hdGNoL2hlYWx0aHktc2VydmljZSBmYWxsYmFjay4gQ2FjaGVkIGNvbnNlbnQgbXVzdCBoYXZlIGJlZW4gcm9vdHZlcmlmaWVk4omkMTIwc2Vjb25kcyBiZWZvcmUgdGhpcyByZWxlYXNlLiBOYXRpdmUgcm9sbGJhY2sgaW5kZXBlbmRlbnRseSByZXF1aXJlcyBhY3R1YWwgY2FuZGlkYXRlaW1hZ2VmNTU4IGF0IGV4YWN0bmV3c291cmNlIGFuZFJlYWR5MCBwbHVzIHNlYWxlZERlcGxveW1lbnQvY29uZmlnL1BWQy4gSXQgY2hhbmdlcyBvbmx5IGV4aXN0aW5nQXBwbGljYXRpb25zb3VyY2UgYW5kIG9uZURlcGxveW1lbnQsIHBydW5lPWZhbHNlLCB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBjYW5kaWRhdGVQb2QvREIgb3BlbiBpcyByZXF1aXJlZC4gTm8gZHJpbGwvYmFja3VwL2NvcHkvcmVsZWFzZS9ub3JtYWx2ZXJpZnkgZmFsbGJhY2sgaXMgcGVybWl0dGVkLiBBIHJlamVjdGVkIGN1cnJlbnQgb3V0Y29tZSBpcyBuZXZlciBkaXNndWlzZWQgYXMgYW4gb3V0YWdlLgoKRmFsbGJhY2sgcm9sbGJhY2stdmVyaWZ5IGFmdGVyIGNvbXBsZXRlZCByZWNvdmVyeSByZXF1aXJlcyBDT01QTEVURSByb2xsYmFjayBpbiB0aGlzIHNhbWUgcHJpdmF0ZSBqb3VybmFsLCBoYXNobGlua2VkIG9yaWdpbmFsIG91dGFnZS9mYWlsZWQtY2FuZGlkYXRlIHdpdG5lc3MsIGN1cnJlbnQgcmVjb3ZlcmVkaW1hZ2U3NjMvc291cmNlYzk2L1JlYWR5MSBhbmQgc2VhbGVkY3VzdG9keS4gSXQgZG9lcyBub3QgcmVxdWlyZSBhIGNhbmRpZGF0ZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gcmVjb3ZlcmVkLiBPcmlnaW5hbCBvdXRhZ2UgZXZpZGVuY2UgaXMgcmV0YWluZWQgdW5jaGFuZ2VkLiBBY3R1YWwgUERQIHByZXNlcnZhdGlvbiBjYW4gcmVtYWluIHVuYXZhaWxhYmxlIG9yIHJlamVjdGVkOyBubyBjdXJyZW50YXBwcm92YWwvUERQc3VjY2VzcyBvciB0YXNrY2xvc3VyZSBpcyBpbmZlcnJlZCBmcm9tIHJvbGxiYWNrLiBPcmRpbmFyeSBmcmVzaCBvdXRjb21lIHJlY2VpcHQgaXMgcHJlZmVycmVkIG9uY2UgcmVzdG9yZWQuIEJleW9uZDMwbWludXRlcy9kZWFkbGluZSBvciBhbnkgbWlzbWF0Y2gsIHN0b3AgYW5kIG9idGFpbiBhIG5ldyBpbmRlcGVuZGVudGx5IGF2YWlsYWJsZSBmb3VuZGVyIGRpc3Bvc2l0aW9uOyBuZWl0aGVyIGV4cGlyeSBub3IgdW5jZXJ0YWludHkgZ3JhbnRzIGVtZXJnZW5jeSBhdXRob3JpdHkuIEl0ZW0xOSBpcyBjbG9zZWQgYnkgYWN0dWFsIGRpc3Bvc2l0aW9uL3RyaWFsIG91dGNvbWUsIHByZXNlcnZpbmcgb3JkaW5hcnlmcmVzaGdhdGUgd2l0aCBubyBmdXR1cmUvY3VzdG9tZXItcHJvZHVjdGlvbiByZXVzZS4gU3RhbmRpbmcgcmVjb3ZlcnksIGlmIHdhbnRlZCBsYXRlciwgbmVlZHMgc2VwYXJhdGVseSByZXZpZXdlZCBpbmRlcGVuZGVudGx5IG9idGFpbmFibGUgYXV0aG9yaXR5LgoKUG9zdC1SZWFkeSBwcm92aWRlciBjb21tYW5kIG5vdyBlbWl0cyBvbmx5IHN0cmljdGx5IGJvdW5kZWQgdHlwZWQgcmV2aWV3IElEcy9zdGF0ZS9zdGFsZSBhbmQgZGlzcG9zaXRpb24gSURzL3ZlcnNpb24vdmVyYi9hY3RvciBpZGVudGlmaWVycy90aW1lL2FwcHJvdmFsL3N1Ym1pc3Npb25zdGF0ZS4gSXQgb21pdHMgbm90ZS9yZWFzb25zL3Vua25vd24vZnJlZWZvcm0gZmllbGRzIGFuZCBzdGF0aWMgZmFpbHVyZSBvdXRwdXQgbmV2ZXIgZWNob2VzIHJhdyBlcnJvcnMuIEFjdHVhbCBvd25lclBvZCB2ZXJpZmljYXRpb24gYWxzbyByZWZ1c2VzIGFueSBub25lbXB0eSBlcGhlbWVyYWxDb250YWluZXJzOyBjdXJyZW50IG5hdGl2ZSBlc3RhdGUgaXMgbm90IGNsYWltZWQgdG8gaGF2ZSB0aGlzIGRyaWZ0LiBEb2N1bWVudCBjb21tYW5kLWxvY2FsIGNvbnRlbnQgaXMgZGVkdXBsaWNhdGVkIGJ5IGRpZ2VzdCB3aGlsZSBtZW1vIHByZXNlcnZlcyBib3RoIGxhYmVsczsgYWN0dWFsdHlwZWRtZW1vL2RvY3VtZW50cy9pbnRha2UgYW5kSFRUUGJvZHlsaW1pdCBhcmUgdGVzdGVkLgo=" + }, + { + "digest": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQwOjE1LjU0MDg3NCswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMSwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImNjZmY3YzFlY2ZkOWViNTlmYzBjZTU2NmMxMDEzYTJhZjVkZjUxNGFmMDQ4YzY4NDc0YTI3Mjk5NzAyNGVmN2IiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iLAogICJwcm9qZWN0aW9uX3JlZmVyZW5jZV9maWxlcyI6IHsKICAgICJzZWFsZWRfbGl2ZV9kZXBsb3ltZW50IjogInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiIsCiAgICAic2VhbGVkX2RlcGVuZGVuY2llcyI6ICJzZWFsZWQtbmF0aXZlLWRlcGVuZGVuY2llcy5qc29uIiwKICAgICJjYW5kaWRhdGVfZGVwbG95bWVudCI6ICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIgogIH0KfQo=" + }, + { + "digest": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQzOjQyLjg1MTA4NiswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMCwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiIsCiAgInByb2plY3Rpb25fcmVmZXJlbmNlX2ZpbGVzIjogewogICAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiAic2VhbGVkLWxpdmUtZGVwbG95bWVudC5qc29uIiwKICAgICJzZWFsZWRfZGVwZW5kZW5jaWVzIjogInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iLAogICAgImNhbmRpZGF0ZV9kZXBsb3ltZW50IjogInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiIKICB9Cn0K" + }, + { + "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:ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtZXhlY3V0aW9uLXNvdXJjZS1idW5kbGUiLAogICJ2ZXJzaW9uIjogMSwKICAicHJvcG9zYWxfaWQiOiAiSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEiLAogICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgImZpbGVzIjogewogICAgImV4ZWN1dGlvbi9hY3R1YXRvci5weSI6IHsKICAgICAgInNoYTI1NiI6ICI0MzgzOWU3YzY5OGRjYzI5NDcyZTE0OTU5YzFjNzE5NzBkZTZhMzA1MTE4NDE0NTE2MjQ1MTk0YTIzOTlkNmExIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDI2MjQyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTgwOS9YZmJOcEsvKzYvZ3BqOVFTcWdQdTBuYXlNdmV1YkczbTczVXpuUFNkbnMrUHo2S2dpeXVLVkpMVXJiVk5QLzd6UWNBQWlRa0s5bmV2c3ZyYXlnU0dBd0dNNFA1QXZMa3laT0xYSGp6OUVITXZHcTlFdVZkV3NIamFoRlg0dGpMeFowb3ZYS2RlL1VpcmJ6WnVrenpHNjhxMW1VaXZGVXBWbkVaMTJtUkQ1ODhlWEtRTGxkRldYdHhlUU92SzZGK0E2UkZsazdWejM5VVJhNmVpK3BnWGhaTGJ4WFgyTVNUcjkvQlQ5V2sxSEFxa1lta0xzcEt2NmpqV2ordnA2dXlTRVRWZk4zb3h6cGRpb09EZEk3dmh2TXN2cW1HeFFwZXByK0p5WUVIZjhvWUp1MjkzMVMxV0o0OXBIWFBWOTluWHByWG9vU3Axa2dJTVY4RGRmeit3Y0c3djU2OFAzdnZoVjdQbjVWcGxnMm1jWEs3WHZtQkozOG54V3FEdjRyNVBFdHpNUUJDcG5ONmsyUWl6dGVyZ2Z6aUI0UUQvL0dUZFYxQVV3T2NlcU1BbGtBSFdCeDhiR0NXUlpaaEYvTlpEUW5ZSHN6RUhMRC81em90UmU4dXp0WWlnSjh4TEVXZktRREV5WXZhbzA4VGpRL1Q1V2Q4ZVZhV1JkbVRmU1RBYWhIM2NPa2tqRmw2STZvYVNDSlhmQWpmajE2ODdQWHA2MzFhTDJobHVRdXNnTWg3ZmpuMSsxNWN3Vm9DNkdVejhyd292V2xXSkxkQWZ5OEYydmV5ZURtZHhSUFpjZ2ovbS9VT3gwZlBuejQ5NmdmZTFQZjdFNE9PQ3B2aGVqV0xhOUVqV0l3SUxPVzZ6TlgzaFhqZ3A1NmExYXBNNzdBTG9obEFzNUs0YmhQK0pjNHFvY2lWend1WXFER2RETG14cDBaZ1F2ZnczZkI5OU9iOTZadkxIdllaVm5XMExHYWlqd1RYb0QwQmtEM2QrUExzQjd0eDM1cFluTTg4OVhtZHpyd3dCRGthM3NDczBsbXZUNThWcUI4dlRzOWE0MExyM3JqNFpqeDJZREF1WG83SDNjRjZUVE5ZRlFVdUI5NjlSWENIUUg1ZkVzMHI3bk9RbVdSZDFjVnNvd2hCQW5ONWNmRkJrU3lLNW1rbW9xZ1B5MWdWMlozbzlZZWdNMFJlSDd3R3NZSm0yRnE5dXZqbC9PeFNkZlZIaTJJcFJ2ZWdCNUxGQ0pFcGwySTJtSWtrclVBUndVaXZmM3IvNGVMMHpjbTV1MHU5RUFQR0w0MmI1cjlDNDZianlQT0hja1pTRUt2UjBmam81ZUg0OEhBQVk4NEd2d0YvRDhwRC8rRDl4ZXYvT3NPSitlczhmWmlNUnFPN3VCeUJ4aHpOZ09ORU9hemdMLy9nelk4blArQzhmTUQzUnZ5akdDYkZPaXVXVS95Y3h0bEkvdXhPNkQ5WmlDYnpGeSsrL1hiKy9OWEw2ZUg4Nk9VM3MvRTN5U3g1Tlg5eE5QNVd2SndmelkrZUg4Ni9lVDc5NXV0WHlkSFhyNDZlVDhkZmZ6TStBaWlIWDhjdjRKVi84UFBGMjU5K0pCek1HUXhnQldCcHhVRE56ei80OGVUdjBmZS9maUR0OXVMd3lIdnFTVGxUZW1TZDkwREozNEhVd1NLSDUwVU8yZ1IxYkxHdXcxZGpLU0pTekJyRlBHejZwZmtLbW1KdjZDZ2U2dkJEaVJvcGlWZlFSMFFBQjcvelN3VlkvcTJrRkxlUkNIQmZaM1dQLzVMajF1V21VUVNrejJBYTJIcVlGZkdza28yQmcyY0VEVnVKaDBTc2FxL1hLTHJBKzdCWjhXTi9oenIwcTNndWVLK0UrU1lpQlNqclBMNkwweXllWnJCL3doQUo4QjY4VEVSWnh5a3duRWM3SGhMTjBoVVNMYVphQXFLS29qVm1ZYS9TSENRYVFDalZQVXVUbWlXZFhxRHc5L3c0eTZKa0laTGJLbHJGVlFVandZNU5OTFFrMm1kMFo2QTVTT1BUSHVFQmxxc005cmhqbU9TOXh3dEFLbnNoc2huWUFRV3VaNGw3Q2NJQU0yR1oxalZJZXVoOVpJQzQ4YlF4d0wwb3ZwZkxHU2xvK0RvSHErRk9SUEVLZUFPbUVCRVdxWmhGMDAxVUZrWHQyemd6NHFyVEdrUTRyOU1FcEhNVzNaUnhYaU5JTmtvaTNCZUtQTnRFVTBDS3QxZjRsc2VyYWxIVStxc1R2bTdGSW1kMW5HNXFVVmx2VUlNWlUyRmRGVW10c1F0L1VOUFliMVhNb2p4ZUN2VXNYMmZZUkU4Q0ZKWll4aEhhSURkbFdtOGkwQk41WFRuQlUwLytIaTNqRFhSS3N2VU1YK1hKdWlUc1lKVmgzV2dlc1AyeTZSWWhCNElPRURPTGluZXNUbDBEb2M3R1ZnUm5CVkl0bE5VQks2MlhraVlEcElDdGdqQ0RiVGpHTlFIWUtBall3QUU3eVZKRWRKYk81OFl5U01xNWhsQlRZMHE5MkhNWXVVd1IybFFXT0pLMExBUEdXcTNMVlFGd21LRjVsYkkwMldpMFhHQzVCZTYwUmdlNXNnMW9WTDNFUHdTV2ZxMWdsNGx2cU5kQ3hGbTlpSEFQQjJPek1ua01oQ1dkaVJJZnBreDBrYUJ0cU9hUTBJcjZueXpOVW9GeUlEWFI5LzRjTnFJYjRJNGxIbGF3czRNY1M0a0hNbVN6U2d1K0ZIZlNXRksvUmFqeTZvMHkxWm5mRHBUSmhneU5GbHZ2YzhWeFg4WTN0REdhckhLNGx0bUtmN2c5VC93SzIxMzNYVmgyUmQ3QmdYc1AyaWp6NFh5ZFpjdTRUaGE5MHIrS0IvUHg0TlgxeDVmUFA4RVFKazZvbzFFTjh5WUtQQUlmVTcwYzBxSnVMUWZnMEZaTURud1VMalZzWkpJTTdWNDhQTkNZdHBLeDkyZHZTenRrSEcwVmRCbS9qWFlGanROT3BFbDM3c0M1alFhMXYrWWxJKzlxV1AwelMydGh1RWZxVGI5TFJlemRSa2RhSnpTUXRDallYdHR1MlJ3ZXRVd2J0R2V1Zk82R21BekFSY3ZuNlEwOGc1UFNVNFlsR0pOaXVhbzNBMjZwR3ZXcHg2S29jUGRpSy9MYWUrYlI4RzBLRXpiU1hIS2JRNlZZRnVpejRGYU1yaDJyNzhEakhSYWxYUk1UTkFqc25yV2FYck1Sb0xEbHRYcTlya0VmUlVyQnNQZURrS1hDa1Y0b3Fxa1M5K0dZTzBvS2ZlWDloU0lLb0FuWFFIeFdGcWhtUUxhOWVJNis5RExHOVdmVlcza1lad0F2NUVIZ2NwWXF3b0NPNUxCUlFZMGFoRjEvcWFNRmx4Yy9YSjc4eUlaSnZFRXJqOHlTem9UOVNaY0kxazdJQklCbTdWZll5cVlITnJMZm1OcTRTeHhvditOcklLMHlhQ1ZYc0xNUlQ0eEY5WlhkQkcvMUFoOTB6Qm5ZUjJCVG01akdiNC9jcTVINk9FQ2xDNjdHS2lzMlM1am5FSnY2ZlhLdUl6VE1lLzErRnpDMEZ6blFMNEdGMncyZUYyeGdkdGh2aUFRVVVvcU8reGI0K3Z0bkk2OERKVzdBT25ieTJYQ3Q3UkdnOThqaEhiVy9ERmNiRzFZWFZNdnlBRkI2MnZnbTBvYkVIckJzbzJQTHBIVWpkZ3FCb1lxNWM5WTRHYmxqRzFpeDV0Vjdkd2NyTmtlcXBFVDNLRlR5Q2kxV1dRdytqUjlGNzA1K2ZYdHhjaHBGUG1xWVZka2pMR2ZyNWFycVNaSHU5L3U2aDU0bGRQM2hwNU5MbzZOQnFqZ0g2YnhaeDJXWFRuMXJFN0JjU2RMcFZiVmc1eVhOVXZTN3hvZGt6bTNxUlpGLzdRMzg2MEJPcDlISFIrTnhYeWxqc2lxVnF0bWxrLzhCUXA3SG1WU2FIR21JMkQ4TFBUdXVpQnVvL0JKYUlVWU8zYlRqaHF3Tnl4UjBhYWlHR2FKdGZNV2FCamIxSzNPODZ5dWZLZUJmVTljbFdNL1lISHAveWRaQ0l6Y0cxNjNZYkxXMzluQ3h1dlppdjJzektJeXZZTEJySkJMaFFML0lxaXN3ckEzYnlHOGkxd2g3ekNYS0tDRExMdFJ6N3hnZ2xsbmRHSkdQV1NUYXVuSUFmdHpBOGprMlB3Vjdkb1l4ZW9XNkVWdWp0UzVtRnVyYXZidysyRzJaL29hV2FlOXFJSitlcWxmOS80QzVBSlMyaWNyb1lKeXZwRUdKRGkxa3NpS0pNeDFSUXhNSVd6RTdJSnBGeGVGZmFoZmd6NHZvbDh1TDg3ZS9lci96cjllWFp5Y2YxSSt6djc5K3E1N1BMLzV5OGZidHhTK0JHYTM4eXZzK3pXTXdJRFIxT0x6ajNSUmdXNURSVVJkZXJFSzdaQkVHTXJsUkYwVTJBajZvUjFseEkwM0dvWVQ2WG9NamQyUkVUa1VqRy9keDVaR2xpWkVJYnlxQTFRWGFEamttU1RoaEF1Wjdtbk9LcEltQ3cwVG1NeUxBSE4yd2V4a0ROeG8zN0kwdU8vSVBKaHB1MTFQdzFqSXlrN3hCN25XQ2haNFBGaVF1eXJPdWN3cWM1QTBTUjUvQndBTy8wUnZobEVhU1FpUGNDTDU5TVg1MU9DZ1BSd2dWRjdBSkRkZGxuRmR6Z2NyRkNQQzlvemx0VVo5eUlxZzZhVzFDcytPYmQyZUJDK1hPSCtncnl0THNlM3IyOC9sUGI5ODJ1S2s4RWVLbVVrYkRVekdQUWJ1OWx5OTYzZWF3UDl5a0ZXWWExT1JrakRBd3dKejlmSGIrSVFMZVBHMEF6RUFwb1djTDQrRm1NRndXSUMxRm5pYTlQdER0OE1YWVVGVmdDZHhSMUd4c2tISmpPNUgzQy9SWE1IQTM2WkFFZERHWXpjaGVZVFB1b0RPdW81OFNmOVgvT3hsYzFOUG5oNmFGR2RYWHk0MERrVi9sZDhmZ2RBMEpOeVZuV21RY290RGxCUmdwS3B6Y0JTR3pVQVJwNHVTSEtZQytkVXhQRXZaWjZNRWdacmJIVFFYWi9NL2hMcDJNNURHYjd2Q0EyNEVsTWdFb3JpeG1WV2ZYUWYvWVFVQlRXZHlYcVoyMWFrdmU4RDVPNjU2eVBwYnhRKzh3Mk1VU1JoSnBEb05rV1l2ck5CL1FUdG5iTXFoY1NsY2JXRHZkYkFWV2RJODJEdHcwdWl1cEc5Nm0ySEQ3ZDVxa0tXb05oZWJadWxvWTMxQ3BWcHM4NlZtTkpNLzFsVDFFbVQzYWR1eFVuUjdSRllDbjlrTk84R0hxaStJYjRTN2U2ZVRRTUZYS3cyN3BLQTJpNjZERlEybXVRdk1qblVRNDlqaTRHYlRqOGw5NWwyS0F3dWNwUzJ5RUxyVDB1UFVjdlErNE44Ri9adFF3SU5HRFRRMDVqNkh5bHNXZC8yVTdVRkdhd0YzcGtQZTFUWS9tTlZKTnR1MFE2VEVhMmdhVURDWm9rclN0UDFYV29PaGpoNGcrUG4ycWh1SnNmcFFBNTlVVWhYVUZrU2VjY3pHczFxU2dJRUlsRXlIUWdvSXBuNlMzSU1zQUdNS21aL3NFKzRWZTlZeE1rOHUyU3kwQlVPMlZXTUJhRnV0cXU2ZGcraHR0VDBHSG1ZSEROVnkydnhuc05pWUhacUxRczBhZVpLZGxrcXRGdy8yTzQzTlhtTDRzT042R3BreE0yWitQSDlHTDg0Ym5ZS1o4K3VSZjJ6eW5vRGlsMi9DSWRUdVpIU1JmYTVyWGd5eGVqZEdLc1JtTHpWeTVmdDRwNGVlSi9BWi9hY1R0K1dSb1lzek0yZHdWMlpxelFGblZuZFdXQ1RFWTUzUmttaGVGR2J3VDJWRHE3V29GdklESVZ1MVlnVDlMcTFWUllkYlNZNHk4ZUZvSjBEaE5sakJ0SEtVQ1AyeG5sMWJOQzd5SjZ4cURvQkdLTmhNaW5vTGpTb0c2amtrNlREZ1daaVNxZGZhOVBPeGtYaHdBMXR4ZjRhRnkzQ3JYME8wZzhZTk9ORGNPV1NTZ1NyZXVGbi9rRlFQeHVPTVlNTEVFdjZRWnVrZkQrWVg3VFU1UGNpZEFpWDVJbGpwTzRNdkFBTm5DTFRSanRtcXhvU1NRa3cvVk44VjZkWm11ZWlSUkRBckxsNWpScUNWNklzWUcxOXJZMHJ5U2lTcm5Xc2pQMjlEVXZkdUlZbXBOM0N1RzF5SnJwUERsK0xLRlZValFRRFZyQ2JTRWdobkt2V2pPaDV5dHB4ZFhZeENJYy9MTkczTFkzem1qLzVaa3hDY0FMQzhkdTZMVjQ1UVprUlVYOHlJMUl4bTJtMTZza09hVjMzOE01bnRRKzhJQ0tjbVdWa1ZHOHRHbTMxWVYvdkZXYkNZR0ZTaFVZd1dJem1WR1hFNGRuazYxYkRFaThQQ2FXZXNFdkJBV1ZLV0hjalJRWEJWMzNDSGlrWnVFUUtDUlUvYlRCZlJEMDluNzZjM3BlUFQ2NUYzMCtxOFh2NXdEY21tZGdxdi9HM01xbVU5eTluVUJ2cjd3enM5K0lTZFprVVBGRU00TEQ1TThJd3kxZSs5K2ZqM2kvTStvTG03QkoxaFNSRUU4Z0pxdWpsWE1BRVFnODNKeUhUQXZMR3F5dHNUOVVNcUNSSVdzc2lkUG50aDFsa0ZSQldpcUJsUUE2YXg1NURxV1N4Z1paaW9yV1I0cmVKd1hHWGplb1QrU2VzRS9Wcm5qOE96djc4NWVmemc3eGRIQUNzY3RaNWFXUGU3Um4zU3JacEI1S0NXbUF6S1NnNHd3RWdCS0ZzdGlKc0VFVkxNR2FNeENGVHppRDg4UUl5S09Dc0ExOGFQZmRmVG9keXQyOUxzUmNBcGtHSWxUcldHN2RQRVliZjF3Zk5DTjIraXdUUjJYSUNkZ3J0bU9PL2x1SVZJZnlaRVBwK3M1K3hkRzNlSkJ5K1ZWM2kwTytpeTBQRmxjU1hqNzNZdkRvNmV5dTRPeWlwNXlrVGdUcTl4UUNpR1NVRExLbHBONTdLNlhsQzJsczNXc25TejFYdnRYVkUzWXJxajhVNmlZWkFldUlOV3BhUVppNWwyVWxlS0I0bjc3VWgrT3dTcmoveE51Wm12cjR3RU1sb011Ky9pa1ZhUDBaRktqdGY3RWFjdnp4MCtBQ1VoWms2OVEvSzV5RGpzTTNiNVIrNm8rdGl0ZnlUdHBmR1JNQUlOYy82R0paVWZLdmx6bkRMcGMwdDhwLzhwRmZWK1VWRVlNZG9RMGI1Qm50ZTBFeUt6V3BKa1ArZWNTL01LU1BoMGVmYnQwR0REUUJwUUl6V1E4R1VzWThRcXNwb0lLbkUvZXZtMWV4ak1xbGlHdDY0WlZpV1NOSlNFRFVGbU1KMkI5UDhBVkJHNjhFZEtLSnMyS2oxZ0FFYktDQ2FveUlSdEo3cm5QUEQrWWdkUnJwZVljRUhhSWNyTXFVZ2JIV1NCNG9wSk9IQ3JCZmFSUnl0ZEc3Slk0TzNRWFFaSmFDSG41OXkrRFBId2hZOTVtMW9vSDR2Y0Y3K3ZFUXYrK1JUYldtQ1J1UXYvZnNkWjdyS0pqakM5YVZPV25jdTZvc1NBVnBaNEJwUjVmWlducFQvRnZCYnFsajY2M1dkMTdwMHI3cldTTmJOWTFXNVhUdVVJTGZZWEJSYzVRNklJcDc0YjNBZHEvMVVFT2F2bWVpTUlqa1NZa0ZwWDFVbGFockJ4ZG1yY3QwMS8xZERyNk9sR0hybjRyL0RsS01tQzZaajE0WktuMkpWN3hiQW5tNEY0cjFmRmlCdFJaTDkwamFRWERkM2gwZVZ1QkxCeG14OUx3SEZoQ3pRTGdab0t5cU0xMkt4aXN5Nld3K3locldpNkV3NWFXTlhTdzhGektpVFYyYzVGc0VzNnFBdnhwOFVENTFmVjBtVllWdXdPZldvRUJlem9xWk5aSnBDSld2R3V6Mlh0Q3pZblg0R01PKzlZNklkTjV1YTVxTW5rcXRCMXFyQWZLME5Sc00vQklnUnpLL0NZZExmbTNpdTRYaWkyaXVrdGs0Zk5BTVllVUFiZlk2dFJ1VlVlN0pKVUdkRXFwM1RYMDlwYmFYVHhBNitYZ0Fhb2I4ZnM3SW8xZkdDc3N5dlFHY3hhZUkyallpdUZTb0xJVndPM1VwZXNRclE2OWNpUmgwb1FtMUJlajNrWFN6azJhaUNqTkVtcjBNZWx2VEVRWGgwVG9iMFNnSEtUSFBIRVY3Ry96WGlmYWUyMTFNQlVGbG9nWlA4bDE1OTEvMHV6K0pidUNFZm1rVlZTVUVkdVNFZTIzaEJmWC83VUM2M2hhTUJGUkkzK3FwazEzY00xWlYyYnpiRlVjWEI2TGl5UkZXNEh3LzdzSUVCOVo2c1kvalhCUUsvenBPRlhpRGdicDh1clBDWldxNlByVjFvVy83a2FhdUw1YkI1cGtvSVhLYUdVY0I5NzB6ZjFCNGZZSmU2a2ZuVmlRUGhUWWpSczFBVHdxQnFrVzZRcVVxZzdtMlVFZ1RCN2RiVnM4c2s2ZDZ5YTdPUU9NNnR1MkFHTm5MbnV4alRuVW41QkJXckxJVEtvUDlzVExhWHF6QnMxMURPQ0pXbWJZY2c4TmhNWHVEZTlGdGthSzVCd2J6WFRnUEJHVHo3Q2p5a3QxSks3YUpuS1k2dTlKQWFNenV4aFJVdWQzaHlmbHpSb0xJTi9SRjh5clVzMGJMRzRZUlVETUtPb2JQWWZndVVXeDdOS0QvVllkQ3dLbkhKUkVGZktKMlVBSGVjaXgyUWtCVHdJTjhMaFBRWjZDVElNQlNMTCszOUg1ek0rRUppdFM1Zko5S1NoMjJnYk5LWm5QUldNT1FyNFlWRW1jL3lHelVxWEZMbURTM2l4djBNNlVRT2d2QkZPMVRxemlxeUdDakRUWkkzV3dMZFRIS2V2bGFxVDlOK013b2JWY3NvQzBJNFhORUpKN2xTZzlDdDlldXdFZkxwTERPR3ZtalBQc2FoSjRXTGRxbDZ0dEs0NGJEMTdGZy9uMXgrZGpQTFpCaUxmS3N0dkZjZUloVG1wVnZjNm5yZHFEZmVYOXpFZnVRQ2ZJSS9TQW42cDhIOUhSU0prS2xSVmxhRStnYmFOSmk4ZHdVV2NnbnZCQkdzaFpuTnQ3a3E1QVp1RG9HbUVqVjJXdmJUUmlJOUwxR0VkV29YK0Y2bUNkcTR3LzV4YWE1cXYxTkV1ckJaYTBsM1U2QjFJMGFmSG1OQ0tlTzVLbUk0QkJ4WmQ1SUFoSVJVWlV0SllGRHpEaElGZStvcEk4UEhWTm1JRjJUZXAxakxVcmZFQytZVjIxNmZKNysvakFVSjJtYjFkbmYzTHlVdXRvd2xZZWFwQ2xYVEdTREdNanpNWGxJKzJPamRCRXEyUnFVRmEyOHpMdFZ4Vm5GK2Zib0tXUjlzY0R2c1ZEMUV1WkVSbHU0bVgyQndEbElyd1NEd3EwRUhZdkM5ZWhwc3Y0Um14YkdiUjVTcEhSNGdmcVNCVVlRRzZXR29LanQ2eDZSb0V4aDdybG1YUVFKd1dyVTRHTUhDemo0bWtWVlpzbG5wQlhKL0xCNCtGdnhBS01SZUQ1N1JNdnJocUkzUlBBWFBKMjVFM2NTTHNxUUgzRU1aNVdZR2VBbThaSStzT2hyd29IV28xQjlNRjU2RVpIY1hSOUh3aDA4Y0JJaUZjYWRZdCswcHYrUStsbmp2LzV0SE9KNkE0RzRJc0kvdUFaR0J4TTRWZTllMWp6VUtYQTZ0UjFLNko4NWQra0hNSjZMWk1FaEN2YTZHQUEzbS9adlRCVU9zSElxWnJROVY0QzdJaFA5enVrME1nNmJmZFdtcTFwTEwwbk00bGtVTXZCZjVvbVRNY1NEeHBwYVpLcEpLNmlVcnNXM3o2Z0lsVUxRY2ZGSGlFaVVHeEFSaE4rL3V2WnlXazdHSWhnM0RQRkQxMFh4YlVjbWhrazlqaU9rUTNUNVdDZC9VMVZoUDJOZndaTmk4QWpTek5DUzlNNHZLZS9XN0dhSGNaZmYwdEQyNFJUSkpIMm9oWFYzQTU3Vi95Ykc1QnhZUStsaitZaU1WRzB0dUtrTjM3dHM3bjBoSE5JdlRlZ3R1aU11Tk82YW0xV2lKZ3VvbXBzQ2JMWjdCVjJucnM4TnM0T0VuNTAxdkpZSFNSTVl2QXRRMzJsaEZWUm5zNE5pN3NOeHJSZTNTZVpxUytmTzZLWWNuUFBVUGVhb1paNTM4RTUzTU45YUhzeWlwenkvS1ZuSUs2YjhxSFNXbDVpaGJ0UXkrM284bTBiTjdzOStBMnJERytqNEVGREp4KzNRWFRaV0M4QlN5ZWFNblFUbFVWbkJLVVlJMVJOaHZvQkJUNnRDaTRKVk54NTVldjdNdUlhZGl5ZG1mNXZXSlpuNC9Ga1BQWmJPRWkyS3Fab0R1NHhVb3NFc0ZYS25udVBxQ1hLbk9Hdy9vMnVUakw0anJpbWhaNmpXVUFwUDlYUzQ1WWNhV3JaZXpzUitDNXNEUlg0bEVKanFJc1Vjd01wVm5YR0NkNEpnNmRYRkJieXBnbDVDcG04TXBLRVpsUzl3NFNOQmxackZyaTFvYTJzV3FjdFVjdW9GQVFtWUpVd09EZVBSbEt0UzIyYWlndmpUSkc4TTBPT0duNHVadDNOM2diSTJuTlIxeXQ1aXdYb0JtbFc5cDZQRDRQbjQ2OVpXVGo3aVFmZ3ZDUkZDYnNyYnBYcmlQM1IwdGplcjdua0pKOERnSHJmZmlxc2ltSHZDa3ZNSXBBRGlnSHNDNEZUU1g3dzhWTmYrODFZT21qMkRoUitIZ3lYQW9QaDdCSVpLcFVZbzErdnhrYkxkWnJPR2pYbnpXT3BlcnYwLzMranBjbmFNQUlWU2pTcG9QTkdnSEVETTNkTVpBOE5mYXpheVBLWG9MbVp6YlpBYVRlTWNCc0laZE9SdWpQUENDWlNLOGI3V0pwUnJUN052cTdDQ054YTRkR00wK0JtUWpLWHlkeW5EV2xyUUZqeWRVekhKcFIxWjNZdzRkdGRPdXY0TDJ4YVpwck9tR1VZZHJxejRGRVRaUjRCeThsZ014VW55TGtiUEVITm5VYVlGWVF5U1hEbE43bVBNUHpvcTdpUlAyRS9UdjJtOHZLZ2UzZUNVMkdTU2xWb1Q1U3VIVm1hMWpjdHY0bXkra1p1bSs5VG9HK0FVT2tlandPQ1lQZWpsYTRTU280TlMyMGRZZGRHNzdXcEhsajhGRmlVQ3R6emNCS2dmUlhBNkhOdWhkamFlZDg3SDlyN2xjdjRSY0UrTUsxWVU4ZDFyc0YwaEQwYXptLzhvUDBEMnQwb3ZhS25Dait4dnNNV1ZvVFp0Y0pkRmRkRnlUaVZhcngxaTNLMzl6WmhSdXVUZGR2ZTA4VXd1SnlyMW0wR0lMZXFNQnVFb1lVWjZRa0VHc2xHV2x0NHZrVkRzcFMzNllabXlqMFRlbUFWTFdrY0h1TlhZN3A0UXFzRVFYVXhxczYrNE42dHoxZXB1eW5ObGVWWDVwV2h6Y2FVM3VSRktiWkhHdlRkazBnUnloUU91SXVzMkN0Z25XYmlvVnNCYWgzeTZyZlQzanlxdXhoRnBndjFaWjNTV0pGOW1tdWI4S1dhTlJlcTk3WkpXdnVDaXVZUzIzbGFWblZqSUhOREtnWGlKTGUzenROL3JvVXVDSmRJK2RiNXp1VXQxcFdyL2QrVEplSG1FdWh2cmpWSTRsV2M4RUdFb3FMam5IZnpTblZwVmJmSnBzTjVOS1d6SU41VHozZzNMNm13K3J2UXc5c3htL3N5bjNtSEw1dnJNbHN4QUZ4QTFvbTFVY2lpcUk5eElwRHJKUlk2ck9kek1JRHhLaUlaRTRDcHgyQUpBdzBmSy80TjhNb2xFUkpwQWo1WEVCVzNaaHJScHRSMk9DNEttbkZPTFBQdlBWcUxqTkhVRWxlTmJvK2hCRkdpVHNyUlFWVnV5S3dBUzdMaGd3Rnk0bW9YRFZWb3ExbGcwd2p3WEZhQTZ3b2w1emI0V01qVHRoTzJPbVdlYlNzOEhpTDYxTjhlclNINUNFTzl5Ylh1dGlNNzhxTnZ4OVA4aWRLSHJWaVpQL2xzMTNNdjIyaFBNK3V6VEtqdVBEL0hrcmQ2RzBkRkdrQ0JjZlRqOThkUGlnU09LNUZkUjBIY2wxaXJQL28ySTBZazRIWkJTcm9nUE9vZnl6dXQrVHlHL3orNDY4cFhuWU1YNnIxMXNMMXRZNWl1U1NQSGlocEtobWltcDI4dXoxNS91TGlVMUxnOFJjcTBULzl2SnMzcGVnWE9icVB1Rk1CREdIUTVnS09kY3FPb1JzellNSm9qNUgzdks0K0dBY1Y0K2RQNStadnpIMVFTUE00M2N0Y1E4emxBSGo0dU05YXBNR000MWNJSVJWc3VUTkR5ZS9ybVVDMFQxUjAxSllIWmkyTWRUdFdWN1ZCZGEzdzdQbFRYUXVvY2hqT24zVUk5MHFsdlk5bzdIUEF2SENYT0UwRGFEN29oVi9jS0duY3E2U3Z2clN2dysyMmFVNEYxMkxwMXkySXZaN0tsZXcyWGhpc3lHeVcwYUZxRmVsdVEySEtZZnlmazlyOEhzRzErVytvakRkaVYyTkpYM3Qzd09VVHAzQXZwcm1DVUVUQVZjUEs2MDJ0SG9PU0ZaVXBNKzY3bDcvN0RCazM4aXJxN0w2bnNYTW00NjdyS2JSV1pDakY0Tk81dnZIWUlmNE5LVjhtQlFreEJjNXNVbDllVW14NWhYcHRYM2NrR2ZUcUhxazVHMEEwZUl5TjJRTkpUcWV1cjdOc1RobWJvOTNzWTlZd2VNY2dJKzVPd3c4QjBlWG5vckU1VXhidnFWa3B6R3Y0YzdHSE0veVlaTjZZYlpnbDJmeGpScFdOUjVFalZ5bTVZZHl3ek5iVGVuU3ZTanoxZDd5M3d1bU1Nd2F1UWtuRXczSFdtelhIWnVDcDROSFRORGtZMjUybEdjM1VWbE55VldqSzZZOUdSeUR1V25ENzNXemZNRy84UXlXSDd2dmpPNVQxcWJIVW5ELzFESjJvWkNPY293anJQS1BJZEYrUnpCYWpKTlpwakp0dXg4bzNLT20zSHFWTUxhc2VXLzRTTTR6NTU2eEw4L3dXS3lTaFBnbVlBQUE9PSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL2F1dGhvcml0eV9qb3VybmFsLnB5IjogewogICAgICAic2hhMjU2IjogImRiMzhhYzYwNWI0OGNlNWM4M2I0ZmM1ZWIzMjNhZDM0ZjA2ZmE2MGE0NDVmOWVmMjc2YjMwMmQzNThhYTQ1ZmIiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTYzNDUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBODA3MjNiYlNITHYrZ29jNXdIZ0xFaUJGRW1SdEpIRWEya21TbXpKUi9MTTdJYmh3V2tDRFJFakVPRGdJb2wyL08rcDZoc2FGMUthMlgzSW5GMkxRRmRWZDFmWHZScHYzcnk1SzNjMGU0eHlHaGdaOVdtMEs0eDFtajQ4VUxxTGtudmJTTkxDSUlsQnltSkRreUx5U1FHUVpMZkwwa2NTRy9nbkNtZzJlUFBtelVtMDNhVlpZUVFBVWtSYktwOURQeWxpK2JBaCtTYU8xdkx4dHp4TjVPODBsNzh5ZWhKbTZkYllrUUtCRGZINk16eEtrTHdnaGZ4ZGxsRndjdkxqemMvWEY1ZTNobXQ4TXgraUpEQVhoZ2xiZ3dsTTJ6RHpjbzB2QU5MZHhhUUkwMnpiejlLMHNOUFMzZEYwRjFNNzhOMkVGb0I2SDZSYmZJcFRuOFRtOTVOUGw1OXV2S3NMb0d4R1NSajBSODVvT25TR3cvNVhXRncvbzFzYVJLU0kwcVNmRGMyVHo3YzNuMi91M245RThLdnJIeS82djM3dU80NHo3Mzl4SnFlSU1aczQ4eUVIL1kvM2Q1ZDNBR2laUVJiRmNYOU4vSWR5aCt2bHozNjYyK05UR29aeGxORCtJODJpa0wzeFkwcVNjdGNYSTZaOVlxai9UTDhzVWdEVnlNazNrbUJHQVQrbitMT2ltYVZ4akNqNmJ6bGw3K1RrSktBaEhNM3ZaWlJSQ3c2L3BEWThFbUJ3YjhGbWowSW1MV3hvb2RhVEVSQXU0eGQ4ZVpsbGFXWUpIRUV3M3hBTHoxblFDS0o3bWhmQUVpRW9BeGdmVGFaV2o0MCtSY1dHaVFGSEdhUTdtbGhtdGpaN0JzbEJKb0QwdHBvWkR0bFl3eUUrR0ZGaVJBWE5ySmhzMXdGWkNNZ0IvQk5ZUTJjMC91R0hVYzgyMXFiWlcyaDhsS3NabER1VWFZdlI0Z3ZKYUZGbWlSemYwR2YreTVLNzJtWFJJNkxnTW0wQUE5VXEwbXp2L2tqaW5FcDJKV0VLRzlXMkU2TlVXM0lHem1nTDN3M3V2S3U3aTZ0YkMzRUdlZUZ0MDREMmtPR0t0RUdCc3FHQWJ5OS9xZ1AzYWhzalNXRElZZEFKdzNWQi9RYjNzS3Nvc0hwc1dKTDZkSE54MlpnWG9DMG5QWGVjamhVNDZkUngycE5aRlJpY2lpU1hnT3crSUxraHNOOFVURFBTcHdSc2pGL21SUnJzSlNNQ0pZSm9pdElzS3ZhV01GaTJrWmFGbjI1QkhyZDBtM29nTXJhUnAyWG1VeStqWU50QU5XMWpCeEpGMFo0OXVkZHBJZzhCN05ZdG1BRmpDN01aWVVaQjZQWUdsM2tqQWFWK3BKSzRRUUFnZW9hVjNkeGUvWFIxamU5enNIMUdzWWx5WTBOak1EYURFMGIwVmhqU01JcHBmaHJHNUQ0M1NFYVpkdVRSUGU3dVBpTkprUStNTDRnY2xvbVA5c1B3TjlSL3lJRWlOZWd6OFF0R0xXOWJhRkJmWm5EZUFsaVVGMkN5UUYreWhPWXdXMW9tWUpBckxnSHdsa1FKbzhyb0FkMFNUVGZOdGxHT3ZBR0REemdrMncrTXE4Skk2S05BbC9ZZUZtK0FKWXp4TmV5MDNKSmtJSm5IL2dKUFFaRHhYemhiYWY0SDZnY01XT29CLy9rSy9COEFWK3VTemc0SVZaV2JSUkFJem03K1hoTURIVWx3QkVYWEFnRktkMmxPWWk4Q01CUXJaWXRSQkd1Z1RGQWttRER3TGFGdFl3QnJrR01jYlhnQWlKc3NEaU5mSEtmZEVGYU8ybmg1bkFJY0tpcVBRamJmZjRiTi8zSjVZYjZBSjhXRXFiYkV2ZmgwZFgxMTkrWHk5Z1hzZ21Ud1YyQ0JOWTIzaTRkeVRVRVNRV3BPd2ZMSEVVbDg2Z3hQVWVNemNKVDlnUHA4ajhjcE14VkU2UU5RYjB0aGtZR2NCdFMxenlTakR3dS9qNUkrMTlNK1duUG12bzVUenNvRVpkQ3JSVFFlMDBlWUFiU1IyZWpqTklSSjhINHZhYllYNnpxTm81RDZlM0RNcDNqbythbHAvRVZLRnZ3eVR3VlMvbTlDaU54aHpXdUQzMlk2RHlvTnJpb0JmUk9HS0FJZDZMUUJOWVZRb0c2SEJtSTBGZVVwSGdFNEdFRmhhVW9janhUbUNyd2hSRVkrdGN6L3hnRGdMNDZ6Y0J5elYxYzNpVEVvdmpMM0JleENvNFlHbFhISk1kNkJiMEJMMEZjcjZnMkt0QUNsekttZkprRU83Z1ZnaGlPbnNYbG1mQTA4WFdsNDVZR3FyUnByQ2xzQTJ3aWs5OXd1aU4wSEFJcHgwQ3QyYjJMNDFoODYvZUhveStoc01abkQvK1JtYTN2RlhieFRsSUVsUE9xRlpkQm5DZ0VWV3M0bkNEUUJqRDd2dEtNQXA4aHRGdGNLSG1scEFaSDA3SkowSDJacU0rbGZnVWt6eDJIQldnNkh6eHhOQnZaOEd5VWxHbVVNYjNRMWtXS0tnZDYrc1JjaGU0ZHRIME91UWFIZG9VOGdDdCsrOTRTVmdnWFNZem9pOEpjU2Q4WHhvcVFnRDlURGdJSld0aUpnTWFjNmFrU1E0c1JHVC8weXl5Z3FwZGdKUW5nWXE3VG5XYW85clJyZVFTRzVEU3ZBUnhRcjJrc0owRGdBdS8wTlNlN1YyUkxmcDd1Q3FkbnltUjNCTTdxc0d1ZUNLQWMzRk9HWjVMREg1YW9lRGdrUmVSWk1MZGZDRGRjWUJGSVFSbWd3elJZdWN2cTVOWk4rVUNBQWEwR0hyL2NBa1dXTndPcWduNnN6TllhWVc3S0JqMk9HQXJxbjFteW9JSVNCb1F0b21pdU5qL0xuMGxrMUZsU2JWb0lwZjVkbWZIa3k4Y010MVlGcWdxNWtvU1cyRGNvaXQ5VVFkWCtwajc1QXFaT0F0c0hYMENCRjF5SUVDTnB0bEZ6dU55VFR0Um5BVnVSZzgveE5LMm9haEdVY3N5RXJNNWVrSHpyOWVYLzE3V3o2SFFSSm5VaHR1NnVlYnU0N0hHU05KcTZpZjVqd0g2YkhqNjlGVVoxcWpWakR0UWpOMWhuRDFSdmNVOFpEOHkySmVZRFNrRTlnOFN0OGlzYXcxM3BTYllKRHpsUmZBN2hNNlU5dHFkVk1yM0ExREkwRjhWcDh6QkxVYnc5MHY1RENzNFNIRmJOWjhBT3RWbDJjc2VwUUYwNDFFeGMxV1N3UUVVUHZ1MGpJbU9mMmNwOGtWVVlHTEVneitBczJvY2hBT2c4bVhscGtneFQwNHROYm1hcmdRQUtTRFd0TlEweE05emx1RUxJYVVCTXRDWEgvMFJTa3BtWFJsdHlET1haZEUxaDJUMzlMQjM1YXh1bDJQY2hUUHlMeHFYaHN4N2IvempPQVJUaVp6R2JoZUQ1ZEQ4UFI5RHh3enYzQW40ZVRrVE9qMDNBVWpzYkQ4SHk4UGorYis2T3orV2k4ZHM3T25SRlFHWjZSQ2J4NktYYlBRSUtCUlY0cmZZQTF6OWZqOVhvMENjNWdJZk1ab1pQeEdUMm5NeklqWi83WlpENEtZRTJUV2VpL01JZGdQU05KZmk4aGt2RlBDOGpUOTNLUDA5RjZTS2NUT3B0TjUydC92Qjc3VTBMR0lSbXRSOFBKZkFJZy9yay9DcWZPY0VibXdad0UwNkZQd3RuNWNIYnVEK2ZUK1F2eko1QTlsU0NrTkJmK0NKVGtTMWJTTmlRYUN3K2k1aHlqUTB4b2NPa1Z3dkZwSUkwdVBKOWxRSzdyMk5LaUFra2oybTdMZ3F4am1GTHdtd3RxdzZGeFJnWHVxNE52aUJkMk1TMjZvdStHeVlEMGh3QTE0aXJjWU8zSmwrYnFMUzlQdlR5MVJGbWFQM09NOTRjbmZwdEFHdUp4eW4rQThEVmdjZUxIdDZTc1lCeGJuZllQclZUQmJKUmdyQzEyYVdzTDZ5aHFDYWgzcmtCN2h6YmhuWWJEcTFId3NpOGdXcEgzTzNjNEhqdE9pN1RjSlplWVgyU0U1THFqTG44bEhOWHEyM1FNZnFvZUFxeGxpY0EyZ1NFMXg4VVVEbTNZWXhtRDNwRTFwTkFRaE9LOGEwd3A2cG1HWkNPb2ZaSXpmMkFKd3h0RWZzSHJlSzB4dm9oYm1wZHhrVVA4RUVlNUFPWGpTelcyc2sxcFpya3VDTUZubzRjck10VWtkLzZHYmtrSHF5cVE5MEtwdnV4MzNOaWl4OEFwTTQ4YllOdHNxS0VDNE12SjJSek4xY2pEOHZoY3JqN2xKNms2TmtUTWIxblVldTgyRURqa0ZhN2dBd05nd0xXTkhzYTR1c0NkU05lMzVKN0U0eE94U0tvbVR6WDhpeWdNcnk3eU9uNEFMd0V2RnhHeExwU2NxTWhwd0orRytaR3BCY0NxaGVsWFcrUXZQcEkxalR0SkNWOFRjNERWUVMycDdlcm1yazRxWmJMRmpvOVJGWXN4WXJMSGdBekVuMDlqOEdrTVpBQTZJVGFiSDVNOHA3bTd0RVFXOUFGZmdDQ0xSeTVKdlNvNWE0bDFQYkhJWVpBR2xpQUw2MXhhWmd3NVgzLzNjQS81bTduYkY1czB3U2VZdzRLMXl3RVM3N0QxMGx0SmYzRnp4MWp3bVNGdzZXVFpPTzZ3SVo5UjhnZ0JLTFlFbG53MXVGcXVXWjFMcnNvSE8rSS9BTUhjNWRCOHo1L0ZTN1AzRml3RTlkR3RRSGlTRk83WkRKTk5EcnNVckZxQm1zbHQ4S3I5dEZXZDBNeUduRkd6RkpnRHl0ZkFzZnFjUW1QRmVMWFZnOHlRKzY4dzFDN3IvWmpEaStzMmVHS1E4K2lhYk9HdzdMeklqc01wYzhWQVc1bXphcDhjUUw5U21ZV21UNTkvdnYwb0NJSkF5VzNLRWdOWjUxV2hRNVVJSk5zR0VLVFRKTENXalVPMDVUTVQrSlV0eUM3NVJyVm51U0h0bGJaSVNMclo2bGFyaG1RT1VER3MzbHM5Ny85V2xCQzBXRHV1WFR2V1dKUHczMEVReG1QUldwTFNyZHNQK2JKaE5icVkyK2orWVp0NEVKVGJYVzRwS2pZdXo0Tk1KbmN4dnJOenVpTVpnWkhjdFVBNWJYTUJSbUJBRTR6cUxQaWxOZWs2VitXQnVxWko1R01vd0wwejZIWGxkU29wNXNZb04zaUx1bHlEVm16QVFZS2lDZjJmU2d1d1UxcFpEM3FTdmJWYk9qVXRSTHpkY29UdnNFY3NYNXpoaStIZ2JERENobkVIMDBHY2VKY0VzWlFDc1lwU2NpL21mYlZwNlF3bkVPcFFPRkVab0YrMGNDV0NIZHZMRlJoTE5CaDJBZUpwc2N5djF4T21RWXNqY0Nza3JsVkNxZ0pzWVJ5YkE2Z2w5TWtJb3lUQURsaEd3eElNdUNFcXJ0ekp4V2xlWnJTUkZQTmNnVE5DSHZaQ0JkY2RneUFKVmRDMjBNUHdDcUFXenk4T2hQbTRZaFdLbW92dXdCazlTNVhHaU8zbDVzTDVycHJ3dk1qcmRiUkNmUUx4a0czOEJ2NHpJYkhlRWExYW9Ua2xNZFlSQW9xR0JWUUV1SG1rUVhyNXZJc2pQOExXNEJOdi94a0Z6YllMUFhjWDFRY0RLOVdSVC9zcHFBMHo5SHlsb2pINkFSY1g2R1ZCYkoyQ2tNQW1RUEVNaXBkSjRMVzRkbUtJRWpBdVBSVkZicXdOUTREQWl6UmxrU2JwTmkzelU3MnRPakN3c21EbXZEQmhpS1ZJMnFMQkdaSjF4cnViUEtnUU04a216Y0M0U2VJOTcrMUN2a3RpRTZPUUhPVUpwbUZCeTZtSVVlUWU4VlpNREp4czlVYmRmMXBuMU5MdWFMU3ZhTmltMkdwSStBaHlWNjZ1bjhKK2xCNHdEWEdGa0lqbUtVNlNhejVMZGk0cUQxRFRmVGFvR1FieFJyVUtXQ21icmZuMjUrdnJxK3VmWU1rL1gzKzR2UDN5L3VvYWZuKzQrZlQ1NCtXWFMxdzNMaklMbUdTd2dvOVM0YUtnMjNhdkM2aG54YXR5YlVabWFRb0Vwb0s5dDdMdjR2N1RXa1dDL3NHdTJEdVhaNXdjckN2am5Ea09BOFZzVmJXY1RLbFZTc1E2KzAyZDFTdDJCUXJ6cVZaMWFzQTZxSlh1Q2wzdHE5YlI4VkpKcmNudXVvZGI3QjFWS2ZuN2hjYTU2NzZ1YlM0NmdLN0xGYVRkNnVYbjd3a3hFaXRXVXFHOVhoMmZpQmxWYlhrMVdWZXpxRlo2SGZ5RmRqUWNoaWZMcXNmcVcyQjJTeFFhZFc1ZTFldDdYWkZMMkRpUGw4TTlhZW84eUh5aXJaeWNkZlprUXROaDRKVW9IdWhEcDJ2V3JQd0RoVENKOFdJZFREVXpCY0pMNmliaHV2UnQ1TmhtelQxd1lPbGpPaXNiZFFVVFhBUjFXUFBlWnNueVpSUGl5aVRINEtGZkp1U1JSREdHanliYWZ4WUl2VXlESFVPVUZQb0JManRCVjh5K1RweVJQWEhPNFAvalh1K2xNaWYzNUtpVTZVUHR5QStMQytibWdQWDYyeEV5ci9IU3pNdjlkRWU5cWcxMVpENFJPbmdiaUU2S3piNG1qbzF3UXNWNk1CTlc0cXY0NEZTdTlsU1FrUkhKTVZzSmNWQ2M3cmU0MlpMYkNCNGhZVnRaVmxtWGVIZFVsRTdxYkdLbGl5M1pTVnc5cWxwV3c3eEwzU0QzZ24xNzlMdUp3c0NmSUNjREJ1OGY3MnljVDgvOHMrbllHZm16TlQzMy9iRS9YQWRETWgxT1IyZndOd3pudytFMG1JeEc0K0hzL0h3OG1xekhFM0x1REdlKzc4eG1aOFI4NVVxNUQrRjF3ZmwwN2ZqVFlEWWIwdGxrRWd5RDRRUzg1aG04b25PSGhtZHpjTllqT2pLVjhZSTB1TTlpdDBwdU9pNFZzcG9LT2lZSUkxMW11WmZjS0N0N2JxNVVCQ1FCK1RLRlRmUzRkSHBxMVFBbHNiL3FScDNuS3p5Q3hsU05pbnVIb0piWTRJQjRFLzRxUktNaDlJMkxQaThhV0xuV1kvZDgvdXcxSDdDd0lwanBIN3ptSTZ5c3oyTitkckZIQy96WnhuZDQ2Z0Z0aG4zaUhtWkRaUm1obzlFQ1Qva3FzQ01SU0x1UVdxRUJleEtOdW9pU2w4cXVvYnJwTUN1eFNaNG9pTFRnRkNGa3JVRHNwTXAwM0Nwems4ZGtDOW1yZTJjZ3JqSTRsY0JWMTdjVjgyc1hqMEJiVko2Z0ZRN3gxTkhJdWZXK0diZ29yTndCRXlLV2YzYkcrd3BaaS9qVnUvKy8vZExHRWxtR0ppNFZWcWFsRnBVeUo5MUFZL2VSc0NTQXlFMFByV0NYVGJnVmF5VnkvaHFLdnhWQzYxNWJROU94TXFzVlo4U0pWdklvTXJaVjNXWWV5TmZFcUo2d2lWZTFqQTFPVHlWbWJSdGR3NUJXVHhZamhGVFZ3bVQ5emlTN3JBa0dvc0tyZ1o4Y0tiQWVueGhBTm5nWmlPL05OcG5oRjF3eVZQMUZyWjZmV2haQlJDWXM3Rk5VNE4zcHJySjBaN3dnWmdhdFVUS3Y0clNHazExMVpTVVMrNUE0TmttSnNWWG5MYTUyVkhsVVhDdnFMV0VkQXV0NEVWVmNQemZVVWp1RXRsRlQrK0dIeXJyWkxjOG9CWHZCM2FBTUxhdTRyVXFCRml6a3cxSVg2OGdZLzhrUFVud2VRa1BEODZJRVFsalB5bWtjMnVCSWtaU3RxdW5hSnh3SU1PRGoxWWNXK0ZTZHIveFFRd1BWdjlmQTVmYWE5SW9OVU5OcG4rSVZMSEVsVkFyZUFHdldaaDJWZll2Q3ZyUmdINjRjSXNIZ1RCdmhicndQdDVmdnZ4ai95eCt1YjM2OCtmang1bGY1Zkh2eDY2M2QvT1NDZlc4MUNKR0lwYWExeGV1UE54Lyt5N3Y4R3hEUW5xLy9lcFFoSFl1cjRNSG5LTFlNMk5jSTRQcnJYWnNHeVdKVDEzWDJHc05ZWUEwcjlNY3BnZmlob29xUzZoWDB1YkFhK1kwcXYwZ0t1by9HVzNQeXlUWk1aUS9BWnNySzNZRTdubTNiMjF6bXQycWVoVDZKc01nTDQ5djM3MjNrbkR4Uy9FSklDako3eGhHTlgxaVJTRE1Db2VvclJBeWl5VXJDd2tBVExVV21TNG91Ly9iaDR5R0ordlgyNXZyajMxc3lWV1Q3T2pmWWwxaUFFUVpzdmhCdnBUMTFmNFlsLzFOTm5PcThiQUVNMm92SlRlR08ydjAyOGEzV0V3UkxFTFArVDJJZUJBbmpNdDlZN1dGY1pyNVBmRXZDZ1VOTzBxWXdBWlNNakRYdUhaRFo2bXVtVG5VV1hMKzR1cjM4OE9YbTl1K1Z2aUozNjZSYXJLMHRXVTFVUndvajlvRkFKeUtyVVhjaDBtZU12bzIvZ294ZXNwOGdTM1VLLzJMY3N2c2VWYkVjbk1HR1prYXh3VnNwWUtQeEdMRFpBbzhsakdjTU9pZ3owU01yTUdhcTZ5aCsvcWZKUEdZTjBuTHpob084Zzlock42SjRYUTlURDVoRjAzSVorZUFGeFpnNU1sa3FsdDhMdlFVczlFMHFtQkpwSGdTTDRPblRMTWRiblJBdVdGK2puY1UvT0ZvT0Z6T2dLQjRXNTZ0ZU4rYXlWWGxmR2E3MjlhUnVHbFhsWGlld2VNbUkxUUs3MnRSc1pGVy9rNi91akt2QXplN3NyNW84MjhMVEU4dmlXWjM2Y2tTR1NuWHJybjNLME00cDlBMm9yT1R3WWFrUVRPRGdsMldxOXQ4bytwc052MXNuSmpqQmJESG53Y0tvR2cyR3V0Z0tyK1ZQKzJqWFdlT1RWaGRtbjRwYStJSHhBUDhaZzlGNE5SbXQ2YkQ0UTcyZlFaWEQ5NzZmSEhVaGNINjByazBQRkt3Vyt3UzNRNThPTTNJcHVNamNwczVJS2NHbzJZMis4dkdqNGJlTlhiNlc0N3NBYXhhQjVhN3RnemQrdFQzQS9KVlg3Snl4dFYyRzhtZDNKcEQ1T3BpSzg1OU5BRVZkVThEcXlvM0lPK1BZNDk5MmVqdDJWMG1WK2RudEc2MHZkcHhSM0xRM1FnWmw4bFd3MXp2NVA2NkRyc3ZaUHdBQSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL2V4ZWN1dGlvbi1wbGFuLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNWQzNzNkZTBiNzM3ZDU4NmZhZDM0MjhmNThiYmQ5NzdjYmU3ZmRhODgwZmVjNTU2ODA1MjM2Zjg0YzQ1MGI5ZSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0OTkzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTdWWTI0N2N4aEY5OTFjUSt4eEtmYi9JTHpIaUpNNkxFU0FHQWlRSUJ0WGQxYnYwY3NnSnlkRnFiZmpmYzNwdUsybWx2QVFSZEZ0T3M2cXI2dFNwVS9Qck4xMTM5emhNNWU1ZGR6ZE1kVjcyWFByQ2VWaUhlWHF6SGcrOHZCOVdQTnR6ZnFCcHlEVDJDNDlNSy9lSGthYTczelVMNzNscDUyRkVubjQrTFBOaFhtbmNEU2ZEZi9ueFQ5LzNmLzlyTDRTSS9VL0N2djFsSEZLd0lzcCtrV2NMMnpMY2p1TWVwVzlIZWlXVWswSytIRnMzMnJpZE9TeDhvQVgzT2s1MGdMdjNYTTRuK0FQbjR6WXZ1enFNdk9Mb3IzaUs1NVMzSStINW04TnplOS9vb0NQNzdHSW9PYXRvdkdKcG9vMVpaaStqRjRVZGFXR2xERVlhSzUzQ1g5R1EwakVXUitmck5MUEg3V0ZlaHUxNTkvTjhYQ1lhTC9aTDBvR3lFemFaa05ubW9KT3AyWExTU2xQUnBncFh5UWt5eHRiSVZYbVh0RkJGMjBDRVIrbHFmNkp0ZU04N1JIaS8wUDVpUEFsbnFqU1VTc0xkWWlCYmJIYVZxMGhVVlBVK0NiTEJJc1pRaGRaWldTRjBWVktRQ3RvVnVocGZPUE53MkhZclZkNmVMOFp0eG9zZXgwczJ6WkVRUVNtYlpYQmNreXlXYW1IT01DT3R0aUlWRWlSVjRSSzlRd0F5M2NIMmI2ZFNaSURrOHpJQUZoc0FST1c1UDRmV3o4Y3R6M3RlZS95OXA2bGNyaUdUS3lWYlc0eTJYamx0VTY3RmN3d3FTU2UxRWs1VzZRSXlKeFdsaE5RVlQ4bXJhclJDR2VNMXhqWFQxRjhDZmZQemVnTHBIZUZYbERDUmt0Q09YVkVxSkpsbGdqY05mOEJFUk4yU1NzbFNEb21VaTBaRnFTUjdyZVF0Z1N0cW52bDA4MkhyVWFTNTNud2tFYVFzaEl1bFlxTU9YdXNxaEE5c0srZkFNcEpEenF6S1JxRmdRYVNLNExUbjRsVUc5RzRJd1AzTFVBQjd0T1ZobkovM1BMMEVZb0t2UVp1Y2d5czVaVS9DWkVCVXBjSUNpTTVVZ3k5WlNwZE1JcEl1YTBBd1p1U0hBSmxvcjA3TzdZU0N6Rk5mYVJpUEMvY1B3NHArZWI3NXNqSkYzTEFvQ2dMdElLcDF3RWlLNkF0ckt4RHVCRkFpa1UwUktKU0t6eWhhN1dSR0pXMTBOOVROODliZit1WmFtMzdqUFFobDQ1cy9SVG9tM042bTZwWEd6YU5McmxZUzZFL3R2TEErSW8za09EdHZLTXNhMFRlNjZvaVdNREdMVzRzdTIxRFIvcTFNQ0hLQStSY2d5R3hMWkdWaXlVSTRJWXlKTFVnbktsWEhBZWdHMHBKMUlmdUdlQXVNWitQUW9ZU1EyYnpFTkk2SjhpTXd3SFVjN2grMnZoN0g4ZVpIeUJBOG1FTmJ4YWJBbTgya1FDU0FnZmRHRmFFNE9rSy9wY1l2VlZZRG9CaVpsRlZSY2JLdi9Id0JDelZRUkhJbzVmYUd5cVc2bEF1d1cyTDFFWnd1dkFaZFpDMEx3alFVV1ZTVzBuZzJLbWZEVng5MTRmV2h2L1ROWVY0UXl2QmhBeUp1bmpReTVZWFJaRElJREs4TFpaTFR6a1ppS1dMVVdab1RGa0d3U0oxVjFtWkFFWkhybXZEL1Q4bnRhem16em1ua3pBQkp4TWFScTVHU3dWMVZyUkdaaVVvcUJ3WTZRVHFVRUIzNEZSMVVoY3lzNmdzRC9Ic2NOdDQxMHBtbjhVcHpVZUNhb0ZFY1orQ3NJWUFpS0xSVVMxUmJVRFlrNUlvOUtWOUxDTUg0bUJua1FrcGdkTjA2NTVqR1lYM0FKTUlRSENvR1pHdWlXeENsR0xCbFJXY0lYVEw1cUpUQUdBbUpjV25BMnhNS1h3dDR0YkxWaXJWUEpXaGRpTnJvZXluS3lqVEN4eVZqcUQ1UGhhYzg4UHFDTWFPMFF0WkJhRVZaazlFUEpYRVNXVmhIbUFHZ09uSVVqRUhMa3RZcXg2aEt4ZWpUTGtyOCtjelZlSEgwLzRMWjU4Vi9RVmRDbnlPT1pJcVZESnVvZ2Jkd0ZaSXpSQlpBUUdKcWRTcDY4S1h6aVpnOUt1NHFZT25VRjNIOEZZNEJVeVlFRkNLbVBseUJ0VXd3V2tRQnFvOGxGTURjYS9DWU54SmpSaU5zVndMSU5RTUJZSWZ5Q2FmQkMzVEk4bDhvRFhjVldtU3ZjSEdmUlliVGtpSmgxamtOUFlSZThpcUF3V05wcUlNd0lVYkFLQ3hsajByNXI5UE55MFRJb0VycEhFQWFST0NBVWVseVJnZEpzQmg2c0hxTFMyUk9obDBHNTBpZnFrYk1Fa2hrTnJmUk5relFXbU1Ed2ttSmZUcmJZTWlwR2x5MUFzUWJ3SVlwR3VtZ05FREVRVnFCWG5PUjI1a1NHdkpLWmxUUm9uanc3c0l0anVPMERYdCtOWjhkMnR5QmNESHlZYmNLRWhaY2t6eUFCNmxCa0c0MUYwQVl4cE9Td0xxMHVib0N5NFZ0Q0Rjb044bDZ6N3Y3SXkxWFhaRTBzMG9CUUFXSUZDaXFjaWxDdXFLakVNbXhsalhuQ0ZJZ1ViVlV0b0RsUEVnSUV4eVVMZVNMYWM2UHUxdVdMdFpKRzhLYzVBZ1RUYWlRUU1jRjZYV0NRTXNtdHFhenZySlFNbGNEU0lWV0FZQkJONlZGNWZYUXY2VG9oVkJzWUFmWkJlVnFiQUNuS3N4NFpRSk1VaTRSUkl6K0VSQ2NDaFBIWTk2UUx4R1QxR3B1cURaZjZJNDhUOXVDQWZraVhhVEdpQ2VQRktFUzFyQkdDQ2lnVThCUUVtMEVWL1JiS1FubEtXREhiTFZnbFhYQkxJVkFlSkdBODlQRXkrNHNrejZYZ21kdWVUc08wRVBQZWVTM1ZQYkRldG83YnVHL0lBTHpON2RLZ1hjTUFSM0lYMDR1Wmd3ZDc2VE1DbEFvQnNVRVM0REFRYXkxQ2dNNmgzRERFTDJHL2NycDJoYWN6Rjl3aVEyaHNTU01GdEJxU0Uwb0Fnd0ZLSVF5TlpvQk55ZHQ5WTEzUXpFV01xNW1sWXdER1NrZnZ1cnk4UWhodFI5K09VK0taOXFQWjhHYk10bzFRYzFZOUNOa3I1R0FTbkFDUWh1aVZrQ3BDQlhSMWo2S2dKRUJJZ1RQczRZVThkQUxYM1czOEQyVTNOSkd4ZXNnSXpZR05BNlVVMVlTL0tkbEVzQ2xRRWVRa1FGa3BhMVZOU1dJSkF1dThESmcrQ1lPSGcxbkluK3M5aSsyZDhPZTdrOUxHdGJKZS81NWZwUG40emp2MDV0MXp0ankzbDUrZlB0cTMvejkra0RLdW5mVm9vbXJnZDZURlR3QUZzNFE1TlVxRUpxcnFpcHdnamZKNjNnU3U1Qk4yamRpeUZLVHhhTzd5eEk2WUEzOG55L2pRV3NhemFtd0IwRFBaTlBXQk1oT3JJUWEvMEtMUUY0WHEzQ3AwTFFjTmo1TEhvSXZaeEdDcHN2aWVtNkJoZDhQbDAzNWJnOFk5SWw3L3RERWFSMndQUGFuZnVsLytPTjMzL2RQdy9iUVgzZmJ2dUw5L3M5WU10STRwL1VTNEFNV3JOWlEvN3hVZmhuR3NXOXo0WGk0b2VIMExNK2dwOHVUdVdKaVRIeVdLN2VuQUFwTngwTi8rZlQyR0tzMERuNW05UHIwWTdPWEx3V3VQMzVxL1RxdlhzMnZ5ekU4L2RjcHBNdGFjRzZOVTlVYVRYWDhZZU8yWEkvUFhUc0JPZEowRnBldXpkME84aFFad212M3c5U2RaVVhYMUY3ejBDVkdYYmxqeWcvZEtXSGZkcWVFZDJDOU9yU0tkMjFHdCtMM0oydGxXTEdrRHUwQ0hTRGQ1ZU95d0dGM2dEWGV1ci85OE4zYmN6Rzc4OXIzYlhlWlhsMmE1OGRINXNNdzNYZkQyazB3UmxPNzhEek4rL200ZHV0d1A4RWZOdmxwKy9qYkN0NmwwL1JvWDNmMFV2UlMvYVQwT3h2eCt4L25jd3M5N2JBb0g0N2JydUhpZ2NmMlRjbTJIUG4wOGVWYkFuUWY3WUQ1cDNsNUhHY3FPOFNKTUhZWEwrMlZTdU42ZmdkenRMUlM3MWJHMm8yRU5pVGRmVGVPNXpTdDNURGw4VmhhTUI4cjI3ZFhsZE0xL0NLOUxlblhKTitpZWRQOU9KK3FOalcwZC9OeVNzTWVGbkxIZTBZblR2bjVuSWh2OGZiempFUmZMOVNCSFErbjFNOXBJMWluN293QzlBQkU3OUxkdnA3cS9vQ05idVNOTzJBQzZXOGZ3MDZEL09uOUJqTmtEY1ZmZ0J5ZTV1UDlRN2ZOSFlBMFAzVzNRRnBHNGFiWmVCcW1Nais5K2FSbjk3eWZkNTkvdzNYSmVPdG5mdnJ5a2R0bXNMdHVvTHR6SXZsYXUyOSsrK1kvaHc5UnhZRVRBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vbmF0aXZlX3Byb2dyYW0ucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiYjA2NGYxNGFiZGIxNDU5OGE1ZDVjNmZlZjBiYWQyZjc3YjBhNTg1NDM4OGYwMzNjMjUwMDNmMjEwYTI4MzZkYSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMDM2MiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E5VThhM1BieUpIZjh5dHd6Z2NSTmg4ZzliQkVHYW1UTGExWEZhK3RrdVJjSmFJS0JRSkRFaXNRd0dJQXliUlAvLzI2ZXg0WWdDQWwrN3lwdTByV0J1ZlIwOVBUNytueGl4Y3Zmb20rc05DNmR2YXRuQzNUZ2xrOHlLT3NPTFo0V3VZQnM3S2NaWDd1RjFHYVdBbTdaN2tWUmp6emkyREJ1QlVWL1Jjdlh2emw0dkxUKzh1VDN5elgycGtrMFRKTDg4SUswbXpWRGYyQ0ZkR1NkUmMrWDhUUnRQczdUNU51eXJzNTYvSnltdVZwd0RqdjhoV0hlVE1ML3U3UFluL08rMmtHMDZLdmJKejdFV2ZXWlprZ21MTThUL1BPWkVmMWhsYVVGQ3dIRk9GUHdIOVdjaFpPZHV4Smt2bXJPUFZERjlmcjR4ZnZlTjdGeVQ4L2ZEbzU5VHdZd0w2d0FKcmVmejY1RkEwWm9NaGNPZTltc2tPL0p6dTNoQmo5c0pLMGdBVXRRQ0RNb3pqdVRmM2dyc3dtTzkzSlRsQVdLZERHYkJKamtBeTFFYm9oWnpHakplQWJPcUtaYkU3akdLSFVmdlRVQUZzUzVCOStYR3B5ek9nSUV6aWpleVpSemRrZlpaUkxZb1RNRCtNb1lhNDZqcjcrbU9YcE11THBMTTJYZmdHZ1JzN29vRGQwZXNQUjlXaDN2SDhFLzMvbE9HUEhrWUJtQ25MbkhqR0FjL1NCd3ZaNGtsaEFKaVFRdGE5aktRZE9FalYvSFpja2ZhaGE4WSt2YWNMNlpSSFliOVFPZ0NSNGNDVng0ME9VaE9tRHhiNWtlcWNzdVhlL3ZYeVo4ajU4UlRudzJtVG43NS9mbnIzNzlQR1g4L2VUbmZGa1o4Q0tZSkQ3Q2ZCdlByamI1ZmhmZitVdjQ4bk9vOXhobVhUOGZIN2ZuYWJoeXYwSVNIUVJtN1FzM0NPSHRncjhWdWFKVlhGd1g4K0prZ3pHNGN4dXdiNFU3blVPVkFyOERDWXdEMEJnTDdVcGtQTHZMcUlPLzJrcSsySG5EamJZVFh3UUgvd0RoQzVnY25sZXhvV0xhd0tqM3BWVEZoUXg4Y3VjRmZCM05XK3kwMHVnUVUvSGhwUkdvbUFBZDlzRVRweUlBTnNYbXd2U2tMbXUwMVhjdFdTRkQ0ZmpFMlkxVVZQVU1FUk5RdUpGQ0R1RElaejVNUXNONFJJTnNQNnhGYktNd1phVElHTGNHR0Uya3hUR3dOd3VrWVU2NDNTMVpFbEJlNGtTNUY4VzlrSVdSRHpDamJXM0FpckJVZ0VKMG1RV3paZCsxajY2bHd1ZDB6c0lScVBoNGV2RDBOa2ZiZ0djM1FjS01ueHVnSWtVM0liY2dnVjNucm4xVHJEc0FyaXUyUVlEL1N4VGk4Rm5IQVdrbjdjUUEzZ3pEY1I1cWVPR2lVQm5kYTVBWS9oVlJuZ29yanZaMlRzNk9qdzRuSTE2eko4R3ZiMXd0dGZ6MmU2d056MDhDdGorWWZoNjN3a0o4a20xdnZYNS9OUUtGbjR5WjIxTDhZd0ZZaGxoV3NRM21KZjA4K1VIdWV5aUtESStIZ3hnRDNQMmU5b1AwakpPbDlNK1Q0UElqd2Z5NTJCdGsvMTVCTHdBek9nbm9iVnRPYkJjQzdtVzRLSkJITTFZc0FwaXRuRit5SGdSSlpMRU1QWGJaRWRMRk9tVWRwcHpsb1BhcGdGcVd5aXJlUUxXaXZkQnluMFNFbVNXeDdhVit5RE5jTUI4bFFRWEtkQVk3Y08zUjFzMisyQlBRR2NUcGEySVc2aW5KQlFPQXpiU3dDYjhOZFc3aWlUd1VRQ1hzT0tTM2NzOVBCSTBWT3F0ZUJGRUVFNjd3UVhwUXdLcWxZT2hZelZ1QUVVTmlncjBBSnBBMkQvTDhLTWpkSUZkMlZrOEcyWHZ4bXBTYlRNRlcyWXg3RjF1VGJlRFNCYyttSWtjVmNhTmcwM1IwcC9qT1BmZHljZlQ4OU9UNjdQNlFwVzVKUnVHbzExVU5mL2I5UXk5U2sza09Mdzl1VHJyYWtSc3c4QmJjaEMzUUdQeUtBUTNERGlzeDBFakxIMHI4Nk5jNk5xZlJnN3hJVFZPVU9ZNUtOTU9icnlybHBBbklqU3lQSE5BRHFaNU9RdlFseUYveE5pb2NEMkVoL1NFRzlOVnNDd0ZDL2RPUEJOYWFSS3ZyQ0lWSkNoeUVIekxXSkVXRkw4OERpeGJQT25XVkZaRlQ1VE9sd0RBUXM4dlVEU09LMU5vTHRBdnZxS0VJNFlvRENocEpCbk9HL2U3M0poZUhhemRMOUxDanowT3JRbFlUZnVOT3p4MDBPUktWMjZhbHFEenc0cEVMUjZQdFlHWjFVNStCaSs3bGZEUXZoR21VZ0tGWDVTOHBwalFMcTB1R2VrRDdIRkE0emlBNkpPcXVhbCtZRjNEWTZDQmNHNjYxMkFoSlVSeTA5enlnNklFcnBuNUVhZ1dLNENWSXp3U3l5ZFZsZ00xUTBzdFRXSVZjL2FUU1lheS92M1VBbG9OZjVCV2dNL1J3ZFFKRHNMRHd5RTczTjhQaCtGd0h4aHFGNXJZa2NObXUwZmczWS9ZaUdTeUtYNGtta3FGYTBMS2JpUVhDS00xQlVaRFA1eW9wamp2UDliVXFFbkpIOXE2T2dJNVNabWNNc05UREw5clRqb2xPeHkrWjNCUTBvYkRORG02N3Y3TWpURzMwb0pIZ1FqOExoSGJJVzFjRUg4cmMxcHR4b3pZelBxZWM5cG9xNTdqV2EzeENLbG0wZHJkaG56Tk1NazBnR0dadERXcVNjMTNjcXRFQTg1VSt3VTY0eEFsMG51a01PZWJqc1hIOURkNnMzSHNrZVhpWHVaek9PenhMMzVNUGJuL0lLTXM3eUVxRmdzV2c1b2NVOEFGZktJMHF5ZVVBT2hld2ZWZ0FLWmdFOUswd0VVMFpkUW93UXhxYWxrc3dGYWlwTUMwT1VTU2hWb2Z2TGdpWDQwTnBmenZTeGNZR1FJVWlDeUZlSmx2aVJHQnFHbkk2YU8zTFhEb2lVbEFpcjdodkVicEFEMWdkOE9jdFJDemNoRUVYbXRCSnJSWEllWWZKU3FrV295SkcrTHVUV2JCZWxhR1pEWENUUVZVeHB1b2hrRmxjeW1HS0x5TlNFZXFoaEJJaXNKK0RVWWExTVlTRHNLK05iR05XWUxBT2FvWlNqMkFYYkY0bE14alJ1cEd1THFJbTVsd09ZYmZMazREazlEWWU0dCtrcnh0bzRCZmxra0MwRUZUa0VJVHEyODJPVXI3MGVpdEk1dkc2V2U1a1hwMUE5ZkcvdlRzSytyQWdLRjdjMnUzNGE1bTNyVE93cVVsVE9ROVNiSVdEdnhoc0dTUVpEaUZLdU9IQVJGNXprOUpDZ0JlSDBKM2p1b0l1djV6c3ZQcVoxRy96OEVPRmdKb2QyamZERWx6bXp6cGh6Q1Q4NEdJTHN4Z3pIcFNSMjFRU0MxYWJGMUgyZU02MDIvS01nUjd3WFM0disvMFppejBlM3ZPMGV2ZVVjajJldUhoMGRBLzJIODlQVGlRM2tvZXpTRUVqeTJ4dkhVQjJ3TmJCSHE0V0RYMnBRajVIVXh1U2ltcEMxT1c1Sm15REVJeDhBN2lkOGFCSUwybHJ5bklqbmdCVVMwOTJqTFBqL0REQnRUYUVBaGpvSzRRc3YvN0czSnpWSmp3QWZ3aTVjVkhWanlrK1ozK2ZTRjVDNy9QTDk0SjJvdDAxYnNZRE9KSGtnOTBZQloremk1RWp2SmpsYko0TkRjTXhyU3p2dUU3dGdMNVVzanBKdEsvOElGTVUyMmtsUXdpdjFiS3F3UGdwbG1oejRoR2NYZU5PWlRQaHQyWGJBYU9aeElvalhGc2FtVUJBSlVJQ2FqNEthUURzNStTdmFTamVGVlpQSWtmY0F4dW9NWTNnSTlNcWVYU3Y2UnBKbWloZDI0MzV1OHFvc0tNVFZ4dkFoUnR3dHRQVnAxVStibllESnNUcVpFTmtMUjJVclBFeGtrcm5ob0pVanF5RkErc2lkUTJhdU9SVnVTVEJGNUVXVk9KSk5EdTVpOWV2TkFYUDgyckhsU2JmKzVsajd6THVUdzdPZjMwOGNNL3pmdWRxNU5menE1RkN6QW9uSlByZVNmdnJzOC9mZlM4NDNBS3BCb2dNUVpaSHQwRG53L1FDMllQZmY0SEtGWTQ2dU5aR29ld3dlYXdyN0RCdzMzbmFOakxoMmh3YWhjajNieDJIOUp5RjJLa1JsT09wd0FuMmtGbWRoeEhNalExejQzbUtpMGdXUGp6K2VuZy9mbHA4NllIbExyQXNaTjFRMmdQaWpSZnVlU2VFbGJjQmRBeG5ra25xMFNxZ3czOUsrLzg2dlQ4c3NQQmsvS1c0SnZadUFrTlJZUXZldVRsMlh0anBLM0NNR3FDL1ppN1VYTisrM1I2WnN4eDNZNlR2bmFjbGxXYzlNQnhOTXhPMVF1OFRBQVNDRVB2WUEza1U3bGpkUU1XbEx4SXcxV2RNb29xalpNRVprZExEejZiN0Erbk1GaUZ1VzZRQWkveVRwU2dhaXc4MUErWW5NSlJ0dlZYNjdmUFY5ZDRRUnF3RUROQ0src0tjR1FEUDF5Q3RLVVpTL3JFNllMem5oc0xpR01DaHNlVG9vT0MxWERMMkNiNENqb3dhZHRuWDhEdDVkRC9DcHp1Qnd4VTdER09lbVZNcmJvTUdQZHF3UDJNcjVQRVBwN2xqTG4zL1prMzllLzlLSDZKbjdOY1RsWk1nei8vNW9nRGhzODM3djV3OUhMb2pQWmV2aHhSSzBMNW00dDlMenNqU3hPQ2N1ODFLb2d6SDlxdmhnY0tBQkJHcGIva3NmTEV6L2dDSkNyd3dZcWgzYThkOERiNDQ2YUJWd1NNSlFXRm1OdVZqS0gyTjNoeUNTeGxUWmxWSmhFRUo4cUk4Zjd5RHNiSTJWM2laZnNZbW9NRjhIZTlHU1lvRnBQdHhIZlFQSXZBb0dFd0piSFd5dWRwaW1ubXFSU1d2R0lVYThEWkQ4RGZWQ3NZWjlkR0JERVZpYUJKTFpwYXQwOU03amF1UUcvYUxyMW9KTEc2d2ZXOVhqaUZqM0JLMzJJZHRMYjBjZHQrWTZydlU5WGQ2WERrbUJlWXRGQTl0Q1ErTkVKRk1VUUdpblFUb3J6NnNVQVBZbm9sbDJuQ2dTNWdRejFGRDVsS2VOUmJBU2NISENRbWlpTlEyY3Qwd3JFVnB0UUF5S2lrdFRwK1NXWThlVlJtNVd3V2ZaRzZRUWhxMTk3SXI3V1RlaVhtMnFnVGxielhlNVRFaXhoYm55bzZxUDkxOGdIa0UxM0NZeXRhTHN2Q244YXM1WEkzak9ZUUc3dlNxUGZCb1J6dEgzU3dCd01hVW5KeVVmUkJweGc5QVhSZUFLUWxiUU0zT1kxVHZPSUFHUVhUM1luOTVUVDB4MkpNbjN3dUtmUjJkMG9CMDFpczJoZjV2ZzVOSjRMbDZWZVdlQkluT1dqQnZvZ3Z3a3B0c3FtNmd6aUZQZW1UVkRqWElKSVJxMmxlZVZhS2p0cGVPbS9XTkY1RGJDaFRwalFZQmtnRStQOGdUWUV0azZKREloS1d5NHgzdnJYbDEwUUdyY29WQ2p2b1ZmbmdzZm8wNktESFFiZHFNN3ZGeHFGei9TVE5ZZE5WZ1Y0cFdUYXpIZFVhTkN2dFZxWG9NaDl2c3p4dHp4VDJzcHZjNTdIaGVEM2FsTXhzV21venkyWWszOW96YnFBRjA1bTdqWGFZTUtvb0oyNzJQSFJwNXprWU0wL3dhNTJRTkVWMGVFdC9CYU9EdUF5eEtaRlhkdkM1WEVhRld1YXhhUWYxUFNvNTY4SkJML01ZMlE1NUdXaU5IV0N0eWhnTjBBQ2M3Y0U5Uys0SE1HS1FyWXBGbXV6Mmg2TUJCeTdyZ2RtOTgrRjg5UFc3cDNUOElLTUw2ajdtQVk2eHQvSXlCZXhhY0ZSeklYRjA1VytpdWxZdDVFUTY2dzVrYlFhTVNBLzI5aWdrZzFFWWpWb0NtU3FmR0VheldSVi9WekltVUt2SkdQSDNXSFI0N1hJcXhnZ1pzKzJHK3RGN3JJTUEwaDZGcjRQaGxPMEYwNFBoMFZFNDNHTXp4L2NCeVA3c2NQOW9mempiMjU4NlFUQ0ZZWWVPNDcrZWhleG9OSUlWZC9jUERxWXlEVkx0VWViS3hUS05IV1psbm9HMld6UE9HSEdKOGlsVTltaDRNWmdWRlV1ZWQvSDU4dUxUMVpublBiTndhZGVwWjNiRm9tdVozUXBsSVg2OUxQWURocUdwd3RNUzRpSnY2M1FXaDJPcGdKbmxsUXZvcXFKcWJUblkvV1lzNTFIT3k1T3p2SHMvajN3aFlFTkVhd3JCY3BUTVBXUms3c0dNOUFIWEhxTWU5OFA3aUlQYjU2VTVpRjBzZVYyYnhmRmhsNm95aWdVWS9zQ1RDcTZ1WS9EaUFDeEFycThHTUV5UjJ4WDNHbzB6Q3pCdlkzMU1MNW53T2p0MUtlMy9lbjE5b2ZwK0JaR0ltWWd5TFV2RW5xTEhrOE03b0VKbTNaZCtQdWZkbHkvdkh2Q2p0WFJ3d2Z3WXhFSE5ieVRkVVVvZyttMmdNaTJqT1BSRVg4ZkEyTGFQdWN5R3V0OGVsWjNLNGJCVWpuRWdsdnRLdkR5Z2RPdFhkV05SeVNXNHN5U2VvbXhtUEJnTVI2LzdEdnh2T0Q1MERoMXdhQWxtNVFVNkpMdEExZ3hjTmlhZ21WVnQxTndYdUxudXlIRjB5bHAza2pRZkRvOTJiZnVOQzMrYjhZZWtFWEdwUVNDOTJSdEM1eFlCNDlLWUcvQjByWXZuL2V2RCtWdlAwNjVEclJ2OFpmb3ROYXRNV3czN3UvMFJaUmIwcFlNb3dwUERoTEdwWFRsVWJJL3dUUEt6bURpeWk5b1FqNkc1UHBwUFN0ZlRuVWxISGtaRlBURmRIaUJhQlQrN0c0UllnaVZYSkN4TG5wUEpnUCsrOW5uYXB5MkkvS2hBSFpmVkYzdytzWndadkZuVTZJcDRSUzNhc0NRNG9rcFo0SDV1SEtLWGNBUnFobUtEYWRsbVJ3amc4SGJkQkZISHFONHgxeDI3dHpVbFIvdEVoRGFaSDhQKzRJWk02N01ndVI2M214M1J1Y25zNkFOVEJvZHcyOXVFbXhobFlOWmdvQnQxQkxmU3l5YXpnbHluL01mNmVQTEZ1RnR2N0pxc1hXTnJld3M0cGJDRlVYQ0ZhdThLa3k0OVJyZG1YRlVmSGlPczRvQTNBQ3dwRy9FQW5hNlFZRTlySi9YUmJXaHIvSmd5bVMxcjg0MEo1M1p2Y2V2OXJYUVIxK1AvNCsrSy9nV3dINHI5ajlmRFQzVi9BanJxNnVQSnhkV3ZuNjROUFFWK0haNUpFc0NuSE5nTm82Q1FQcHBzVXRVZGRaOGNwTW53eXJHR0pFZEZxaTl4Uk5SVlpYVDBUVTVkS1h4bkxLZWczTFNFR0xkb25KNFQyWWx3dVEyVURFTnVaZW5YMWdBUU8zVVVLSGRMNWtUVnI4bkYxQVpiRjZ5aUp4VGpKczJFRGFqcGx2L0hjZVhtbU83Sk1QQ1pVV1JMTENyalBzNmVmRlFoc2owREVVMjFQYkdnQ3hETCtxdDFWZVJSWm9GcmFMMzdjRzVONmFIQjJFS3ZXNVkxUW8vS0VnSHBRMUxKWlVLQzNwVVBiQ2lMM0JjT3JrRGFOVXNZTlZmSSs5OFhvQ2s4RDhubGVaYnJnbWJ3d0cyTkVzK0R2YjdBaTJGUmh5RHVhdWpQUGw1eGdSdmV3YkhWdlFsb0x1aWd4eHEwQnRnWmM2QzZURkhEYW5XVkxNcmdMUHdaSzFZa2JyV1o2c3BGeld3b05MUElhVjNUVVZjRG9BNVcxbkdwRzVCMVhDcGQxNWpiMUdWS0p1R0FHeUNFUzdlK2ROMyswZEprNmRyS2NKQWxSQ1kwZXFvS3ArME92YnFLN0FYYnluZDY0dWFUSW5uUkltSStZSUx1Y0w4UndxMEZiN1UzUmFBNmduU0pXZUFxelpuN0R5cEpyT3F0dWkyNVR6VzNGcytwU0U3clhqbElGYmczbFlXdXkyZ2lOc2ZMbjNya0lsK2dTS1VrQVNNaFNVN2NiUlRGUWVnMmJLNWNzTmNydk5vU1JDcXlTWUNjcEg2MlZXUGhJTjVXUFhWYzVZRWxtUFZUZ3EvSzNTd1R1clBCRUY4U2cyQ2JwSzlBclpkTTFhN1phYWFzZnNLcVoxRzFSd0JyNFFjMnVEUzRVZk9FdDlxK090QXdoR1BoOG9yNmFOUWZPZnY5QS9ocjkwamVVbE9BZ21BYTFUWnlKcGxmV3o5VUVHakl2c2E5TkZaVVI2aFRJUlFOc094amxlSGhqZ01UTXEwWmJGaXpnZ0MvYXdVVFZZL2MyS1dzRzhKdFVkMlFpRVd3c0tJeDlvN0drSDhwdDN3bkdlZzN0a3p6MVFWdXBjd0ZINTFHL0s3V2NIRitXdjJtRzNxaVFKa0kvNVl1UnpNNVFCRUNqb1RlYzZJZjJjSitvbnZLTkEvaWF6RkJqRmJwTVBqUmdMekdrWUJRQ1A3SjBwSUpwQmFtcEJ5VWF3SVJ2S2lMbWs1aWNDV3d5QktGV2J3MUdhczZwMk9aaTRBQUc3ME1zSmFjK1htdzZPUndjRms1bWZCWG5ja2tmR1V2WVFhdFpQZm5FS1publNFNGdwanRDZHcyUGhOTENpeUpDUUFXaUlTNmNhVEZhTkROdURlOHBldHgrbWxXZUMxUlU1SGgwcVB0bDNnWFhxc1BVZmkvY1JWd0tyZ0lRQ29MSVZ2VWJiMjcrQXplUThCWXlQWEZaNlBXUkQ3UVVkVWNXVlhtck1ySU45ZGc2OUZZeDhacVhhb3cwWGoycXVzVEFkZHJsaS9wVVJUK3RzbWdSZmhNYW02ZDVQUFUwb0QxNVNGblJSR2JmS25lVkQyL2tGcHIyUitwcExZc2VzOVpmM3hVTGEwZkNUeXhxT0gwYUQwdmFsekRmTlVtWXZoQWI2WHVQUE1Wdml0MDFkTXdiSndwczd5bSs3dUc5NHk0MjdWakIxanJielZCVkJheVFFU3NRZmUwbkl1aWZ0TkNZbnZSU0xFaVNHV1VIL3hreTFzdHl4TDlQKzlaMWphYTQxdUttcU9TcDc4emNwazdhaHVnV0FWR1ZMbElWRlltQVNzemlnVnk1cFN0UUI5YklxVW1VUkJIQjJGVXEzcUU5c1lwdFp4S3BSSmh1SEVtSkRWT2wycFVnampDbERlT2FGR0dXbHBjV1FRWW9lSjdpOEhLTjB5dXNWem8zekZHL1ZqZEV2bEpENWY0TXRsNUZObm9RSXl0Ukdkc2lCZ1Z5WlIwVHljcjVURm5oS1AxSzc3eERjd21IVW5MQU5jS2QwUlVsWTNyTldWZFpSQTJQbjU4OG9IazQrMGpXVlg2cHdSY1hEd1ZLMlBHeDNpWGlFKzJsU2tha1ArRkJmQVlxVUhmNWplc2oyS0x6d09yeVBBUFlGRzFnVzFMckkxLzFuSW9FQU14Y2RCOEViRzI0RE1mVXF5dEs4T1VIMXZhNEpnMXdPQm5OWUFhbHNhQW9Wc2Z5UkhFUi9GdVE2cm95TFZ1ZlByeGNxLytocGswS1RwMHJ0Q1Q5SnRnOWpCdjRBNUNkajhBTlJiVlhpTklCMGF6bk5MV2lPQ3JtemJsWEpOMG1tT0l1b0t4cG9KckwyRzFFVlFxcVJtbC9Ebi9GZ0lvT3FBanM5aHNCa1EzNnIyZmVzeFoxVGY4dVM4Yk43eG9WSGlUYXU1UnZxUzJCYUhROWJHMW5FL05UNmZSV3crSVp1bkExbDlPbzNtWmxyeXRmS2NSVWphaVUzRTFxcy9icS94VDZtajROVzVOTll2MHZWVEVyb1p4bzlTNnFYRTRSYWlveWtXV3VvdE9DT0N2SHpLNWhuNUhXOHdMajZvSVVIbGhaUUhnUUxaWUlpYk1rb2RtU1NYWEcrbERzbW5TTldkRXhzYjFRMHMwL1BUN3BEUnp2OXN2UFVaeUFIM1dIVjFqb2lBWk5vaVVGOVp2dVEyKzE2Y2t1akdBYmN0NlU2ZVo4NllHQTJmMUJ1WGRwOTh1UHB4ZG4xVnZzekM1dDBUZVFxK2owZ0lDUXZQcVMvS0tXNE12dUUxdXZCRTFyTzFEYzV1UkpDR1U2eE9rQzBCRGlFMWF4cXg1NExieFZrOW44dVVjNGR1RDhJSkFSUVZJYXhoeHFpTlRLK0gyNUJQckoxOXBpKzJMaU14OGt6MERmNGd2bmdGQWM0YWFjVkxvRnpoVjl1NWYxS2IvVVJ2N1dEMFFmZVpqOHRUZ1drVHpXWXMwcWw5dzNxWkg1WFYwTm8xU1c5elVMeGQ1NDliQnZYSFZ4SzdCUDJZVm93U0VlN2JBYWVhV1g2QmJYelFzbHFhQytYenRxZ3d3VUVVMkZFaUFMR3AyWHVNblVkbXR1VktGbVRpSnFyemg3eHZkZTZ0NTFxN2VQV3pYQkRVM1d0UjZQdUZJYThnMXhLdC81OEoxNjdKUzcvdTMrOCs2T0VBYTFVYmNiUnhxbGJGVk1na2JCSW1xZUJsK1g3WnBIREh3aVVQRVRHRmpvQ2FNZXVzSHlHcUZLRjVROXRJcEJuSGl3R1ZOekpwbUZIQmNBYjFoQnlHU1BEWWZNYWsrbldtN0Z4bTI3ajA5ZmhGSHR3NURGVDdZVWhzYVFDclRKUGlic0RDcU1xb2ozYjZMK3I4cjhCTWZxT3NuV0xsVmRaRWsxYk10ZGQ5RjNucXZ1UTdDSTVDRmhhSkFjWCtUNDZBZFB2UGZEWERYbnFwWFpoK2Y1QVFzSzZ5M01PU01QaEZYZkN1SE4yN1Z2MnUxeWNNU2pnMFdpV0ZGR3RWTHVSZ0ZkR2krM1ZkWFlPVDd5R0d1dXNlcjMyQklMeHpWak9IenRkeGxIQU10RFNkdzdVNVRZSXgzeTFSYUZ4VWRlc3dpTi9MVVBZWjY5akJKZHY3eVAxUU1XNGVLVHdBQSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL3JlY2VpcHRfc2FmZXR5LnB5IjogewogICAgICAic2hhMjU2IjogIjVjNTQzNzNmMmRjNGIwNjQwMDgyMjVjMTg2ZWZiMWQ1YWZkZWVjMzZkMTUzNTBiZGEwYTEyZGVkOTc2MDJkMWIiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTAzNiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E0MlRUVy9iTUF5Rzcva1ZuQzl5aXE0ZkEzYloydDYyNnk3RExrVmdLRElkQzFVa2daSzhHc1ArK3lqWlNkMDBBNnFUS05FUFg3NmlxNnI2WWMwSUlWSlNNWkUwb0Z5eThicVhvUWRDaGRySEFFcGFNQ2dIaE5namVOS0RqQWo0akNwRjdTeDRUc2VycXFwV0xYWVRJZFNETkFuWFgxYkFTM2RRQjR6ekdYeTRoejhpcUI3M3NobVFBalBFSlFpak8xU2pNcGdEbCtMV1BlZGRTTnU5RGprcDVGRGJpRHZTY1JTWGhYMW1DVUxaTm80N2F6eGg0endXZm9pT0k4V2MwaTYyNHU4cmdpTW9BaDlQdFcyeTRzK0wreGNONVVxNEovRWYwaGtsRzlBQnJJdndreEl1aTc2UmQ4ejhMazNBMHdwSFF4OFh6bTFtZC9udEhMWEZNQnlRM3lQdnVIcXI3ZTV0MjduR0FqZDd6Nnk3ekRwOHhvUVdqV1pYV0JzSFcrUFUwemtYVDNETEJ6d3lDYjJjT2RvMm5kRzdQdWFBKys4MDdhZWJaQW1ETTBNdU1vOVNYaVIxUVBpVjZkK0lITldpek56SDdQTmhhaUgwMHVOMWlIbFVDYnNVc1AwNldSM2d0NDU5ajZZVjY4THNXUE9PWFBLZ0xkVHZtY09GR0o1dGFjYzZqaDVybS9aYnBQWGgyWGhNaWgzbEZPN2daaEU5d08zTnhjWHRwOU1aN2w1U1dNemtZTkcydVpyRTErdEY4WGU3TVRjK0d6SDNUY2ovL0Z4azlROEg0UlNmREFRQUFBPT0iCiAgICB9LAogICAgImV4ZWN1dGlvbi90ZXN0X2V4ZWN1dGlvbi5weSI6IHsKICAgICAgInNoYTI1NiI6ICIyMmJhOGU3MTkxMTM5NzZlZDc4MGUxN2MyNWYwODlkYTE3ZGVkNjBkYjBjM2M5MDUyNWQ4MTg5YzhlZjFlMjBlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDUzODUzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxOWEzZmJTTExZZC8wS3hqa0pTQnVrU0wwc1VSY25WMk5yWnBUWWtpTEpzNW5MWlhCQW9DVmhUQUpZQUxRczYraS9wNnI2Z1FiUUFFblpzM05QenVyc2VnaWduOVhWOWVxcTZsZXZYbDAvUnZrOXkwTy80eSt6UEE0ZXQvUFVpN0lrVHZOT3pySThHM1RPNDA3azVlRVgxZ204M0xNNzcyUC9NMHM3Y2RyeDUxQUhmbnArSHNiUjROV3JWMXZoZ3FyNmNmSW9mME10NkdEQjVITVl5MTkvWkhFa2Y4ZloxbTBhTHpxSmw5L1B3MWxIdkw2RVIxa2tXODZTTlBaWmxxazNqK3BuemhiSmJUaFh2U3lqTU1jSjhGYmwwMkFCZzVkdFExZitQZi91eDFIT3Z1WmF4eWtMd3BUNXVadmxRYnpNdDJTN01OZWxsOGNwcitjdDgvczREZk5IOTQ5NG1VYmVYRmIvbi96UkxrclluZHVVWmZkdTVudVJEYzM3OFJlV1BycnFPMitRUTlxRmVkNmwza0pCNGVyaWw2dVRqN3dJVkdWaEFnUHpibG4rMkZFUVgwWjV0clgxN3VUNnRPTVEzTHF1aXhCeDNkNEFlbzduWDFpM04waThsRVc1K00vVytjWGZvTEJjb1lIODBkMFo3aHpZbmRFUS9qK3lPenQyQjM3bDM4TG9OblpVWWZ6bld4eXh3VEwzZTF0WHA3K2RYWjlkbkVOekZyTTZyenQ3dzYxM0Y1L09iK0RGazVYNTkyemh1VERqRERERkduZjI3WTRWQXN6dmNPcndiTVdmTFhpVk1pOXc0MmorQ0JCZ2Jwd3dMSHVUTGhsOEEvU0VkN0JTV1o0dS9ad0Y4T2xuYjU0eGU2c2ovNng1ZU12OFIzL080T09UaFZCT2d3eCs3MElEN0F0TUdSOE80UUdhRHNMb0RwNUd6M29Ec05heitDdlZMb29BQUt5QXpXRmxVdXAyTkh6R0FTMW5pekREQ1dWVUhvWjJHNllMWGdLK0x5TUJkbnJ4L0x5MXRSV3dXOEFnbnlVdy9HNXZUUDE2Q2F6MkYwQWRnTnhJL1BYcG56Mzg1MUEreWorTGFxWHNTOGdlc0E3LzFkOFJmL1NqdjRmL0hNcEgrY2VyQmlIczd5ekVQWXYxOGJHL0svN29SMzhQL3ptVWovSlBka3pvUjhzS0E0ZVd2TGtiNGhTdHMvT2YzL2YvZHRrZkRvZEgvWnZoL3ZZMzJGQ0grOE9qVVQ4ZFdScVVCYXdYYkJHTHFvQmFRUit4YmpTRTZXSzlmc29BbEtHSHc2VHFvbnlCUTZPR0ZyTjdiMmYvQUZ2MUVCRVA5bkN0WUQvNnpFVllpZG9TWWVFajBxOHYxQkZXT3JtRTdmYmI2WHZEZ0l2dHZvZ0RSb1hmZnp3N1A3dStPYjNDQWVaZWVzZHlmQStJUEYrTVB5OW5MSTBZVUo3dDFBdm5vUmY1YkRqYXhuMkVlTklQbU0rSFUrOEtwaG5laGo2TnlsMHc2SmZnbE1aeDNyOE52MEpsR01oZEdQVTV4ZWpqenBsNVB0OUZRQXBnY3hKdEFaVEhWbGpnQWtHSmNyVm5DTlA5R0VyOVl3bDBDTnZlVnB0bkcrR1liYTljbEczUlJ2WS94S280bzhhcHdBZzhBZzAyMkI4TkFhZHZoanZqNFJEKzl4OFdyUUxmRjRaaW8vSCtFUzlXYTV4anYxdWdFbitCN1lsOXhWL0xKNXNqdk1CLy9rMTc4VXdkaUdrUmp1c3RFK1pQMUt1cExmdW4vVzhZUTVaN1JJb2t6SUhrZVo4WjhCUllFWUVtd2FQMVhKK1dOaVFrTHBPbnluVE9nZkNXU0ZEUlprR0dhczNXLy9TT2FCS3dXRFBhT3JRYXhsM1hxYzkwZFVlMWpodVhwN29rTDJyY0IyWkI4L2tjUnJSeEVwZ0FialNDR2I1WWhvR1R6TDBjdDJJZnQ1VWRMNTJFeGNtYzJZSHZ3SzZGcW5kQnZNQ25lZXg3YzhNNnJUT1VYRWNkSGNtbno4L1RaMEZUY3hBWFpDbGI0aDh3REgvdVpWbm5STktka3loNHgrVzByaEpwYnVDZmQxN0dCRHRCRm9QdlhmWVZvT0JHOEJPNnV3WHhJR0NwSzRXSEtNN2RQRTdjT1RERnVTdWgzODNZL0ZhMG85RjZXOXNRQmZmU1NtWExPVElFUlI2NzFZcTJSb3Mxd2h1azRYemVSMkVSRmdaa2thSk5ITWdBcHM3Uy9QUWZTeGdaNzJSU1FwdXByUUZXZjkvYktvTkNjSEtYdHFQN2tNYndtMUJFNHJYclJZRTdDM21wbE4wdU0xYUZ4V0taRTluTFlLS1R1YmVZQlY0bmhRbkM0ZzZXQ1VwRjNZS1BPTmJsNmZuN3MvTmZyRjREenBoYjBQaVhZL24zWG5RSDIzaXpKaXFjN3FYTmNGYm1XREd3a0hURHVockJkeXAwWEpEN2w3Ulg0b1V3TFc4K1oybWY0OGpHMDJ0aGtRN0ttMnUxRms4aytaOHE2Q09HZlZjTE9vdHdsQXk2Ym1zbHZqR2RESXVCVlRpRm80dW5MMjY5OUtxWWc4NHluTjBmM1RydFhLY2c3ZDRkcktCRzJVdFUzWHArV2ZjRElDZ0EreTRTcDBIQVdJSS91cVpSOW5wVDFRRjB5d2tGNjRSUlFUTEdwUkU4aFBrOUozQXdZS1RlWFY3RjRmL3BqV3ZqeFRHYWFXK0pPZ0ZhUThINng2SkR2bHV1dkRCaldmYzNiNzVrcDJrYXA0WXVTVE1wNkRtMDIwRERVelpud0gwa0FhL3lvQVMwNk1COWdLV0tINGpLTHFQUFVmd1F1Y2s5MUdxZ3RjM3ozWFFxYTAzQlMyZGhubnBwalF2TmNTRlg2TWU3cXpSak5hbEpTUktlUXNQWS9pRE1Zc1JXTC8renA1bkc4N2xRRWJEajZsb0Z5OVNiQVh0RXRUektVUUgzV2NBeUZ4RWVMU1cwZWhISUN5aEY1R2tJNDZrc0c0MWFHbUpBTGtITEJFRDFQUmxTNHZTeDIrdDRXU2VRaitVcGNJdUVORjJvUW1Wc2pyT0Jmdys2VjVlWHRqdkQrTzF3V0M0akxUR09OTUtvd3FDaUk2WUNpUUFOQ2lRdUJzVEJWSFVBRkRMTnUwSThRWkF0RXd1cmwyWFdwbFpxc2d2YXVRYnoyQXV5cnV3QnpWd0RzbmFnM2FuYjYwMHMyaEJJVXNyOXdqTVg3VkhidVBwMGZrNVNoWEhZL2p5R3ZkVHJkUDVySndzWFMxemtvT09uWG5iZm1USEFNU1pFdFZKbFlZbUNraThBMkVzb2krcXdDY3gvUVI5RmVRSERxZ0JKeENwT1VZVG1STXlIa1hoaDVBcnk1NEkwRWo5azNIWUZPeVlQSXhDK3BaWHZoMjRVdFFmVWQvTTIwTlpUSy9tbkxPa2ZFc3dGTTZoQ0dEa2pRUkVab3pTaURpNS9QYmsrdlo2TUQ2Yk5qVkt0ZW9POHlHMFloZG05S21QQk1yaitQZk0vWjI0QzR4Zld3K28yWHoxYzFiSmV4dEE2S2ZiL0hBaCtWN1BFZVI2TkU1VWRGOXloQlJoYW9YVmhiZDVSR2ZPQmk4Q1dVZ0tCZngvT0F4Y1V4bVNadTJIbTRuenYyVHlvYmg3RXBCbG93SWhJWFFzVTJmNGZRck4vZWxVWjBxdHhqcmJqVjNuOG1VV3Z4cStTRlBVejF2K0NNSHYxM0dRZ2FXNG9pN3drdTQ5eFozc0I3dlZYNDZkWFplUDJxL0grODdQVkczLzMycWxOZ3ROek9lWHVGbWNnZzNmeElwa3pJUEdYL0VWM01pVTdQY0lHZ0dIMU5IRUNOVjZnQjJWaGxzenpsVUlUYVFDZkNnTXZCMWdhUDNDZ2tTWDd4V0lLUDZUb1VrOUZ4K0l0SHc0eXI5a2NqNWlDN1VKREVXVTZ3SmM2c09KQXIvK3hSTUd5azhmQTJqcmZXQm9QS2dnRzJqeVFWQmRuaXRnMEl3Tkk0SW9aYWNJTTgrOWpWc015R01NTVFEQ3pNblZDSnFwMkJPSHN6QjZoSTB2VkNNSTc2QmZxdUM0L2szSGRyZ1YwQ1krenJONkFhL1ZkYkxjM3VHZGZlWEZONWdQRjFzTVROZ0s4ZVcraGppTXhFRmtIa25IaWJJUHNIL013WjVaZWdBOXYzSm16aVBkcXh2YWlncktiODZIcGJVbDBoNCswVEExTkpURUExVnZvN0tVUDczQlkrR2xaRXB2NitGamdVaUcyNVk4SjYxby84MUtDaFVFVDNSNFNIWVFRUDUzaDRoTCtMREYzZnU2RG13VitTcGcrdzErdlpMSUNJUzdCOHlYb1Q5dFRsL2lxUkdsQU9rczlJalV6Q3dZeHMyTGE1OTlRYTE2bDFsRmRoLzZGc2Evazk3ZnhIT1NMT2lGUURKOFhNSEo3WWJVRzBna1RDdVBCTlFqbzBkM1poYVM3K2g5dUVTSzIzZGRlZXBmWm5kZXZQei9ncndZMVVGa25KY3k2ayt3eEc3Q3Z6QWV0RTFRR1dONitqNHRjSE1zZVl3bCtkRHFZTFc5dldUcDRBUDBFMXJYekJscEtVa0pKK00yaEF6K3NIa2k0YTlwWGVjT092bkJubDZjMnZtZHBxcjkvZi9yYithY1BId3hRb09VaXhXWVF6LzZBZGVoS2dnc1RlZmZwK3ViaS9lOHdKOUpHT09CN3NJaE5GVksyaUduL2NXQzVSQ3dkaVg1UThlK05VNk1tdTFZVkM2R3RMQXlZeXdCNGZ1N1FndlhzNnJsMGx5OTZ3OHFGdHh5KzQ4Yk9YMm9hcURFcG9yT1NYblRMbHQxQ0IzMTZ0dVZHN3huYlpTQk9OZmRZV0pwL2NMY1Z0UTFwcmJJNHg3ZTNydkIwVU55RHVwWGFQTnFiMTJpVTY0SmRIYUU2MnhYNjNlTTZJWkZ1cEhkRXQ3ZFdOc3FSWUhESGNzSTdyR2xaYTlSYk5SaFVQTHY0SHpydjdQeDNwRHh2M3lJQk9rQUNWR2E0S1VwMFpFWUZpTTNEaUxsZjR2bHlBY0R5SWp4dW1ERTNZQ1N3VkhrdG9IbVVoL2tqY2I1enpqL1VDdjkyOGVIVFI5amIxZ2R2QnRoQjlEMktRZjhpcjRFNXNCRGNyN3puazF5OS9BRjhwUVEvUzB5cUx5VHBFcHNCcFVwTVhVeFp6Z2kreVovUFZSNFVSbG5DMEk4QkR4U2VYcitXQmF2VFVYQzFucWRiYTFHdmdEeDBxc1JvRGRHUkRCWEJjcEZrWFRVNmprdkVvQllrbHYxQXlkWUhYU2RhSmhKaHVzWTlXc05hUG95QlR6SVN5b1YyWjFSRlJvbUNTUXdQWHJBQVRWMjVtNURzeDAvUGdhT2hoT2FDWEluNGl3SVhNeW9jMERCQVE2b2NFZU1pVFpiM0N5Y1dQRklYamZheDBkWHlBVy9VNGY5WlIwSm9zQWp3UWVJbWRpckdzK09xN05BZ09rZ0s2dkJpMjJWQ2NDdy9jeDR1eU5OTWFnZWRRa1NXQlMydFovbk9GbFNqSm82UXRPa29wQUF4Vk5XcGw0WSt5ZmhmazFxRjBHcVNXVWxrZmE0cnh4emJIRE5kQUxJZ3FVSkJGSjUwRGpNdUtBQ042dG11RVFrUTVITmMxWndzaG9KdUFSMndVVzhGQ2liT0lFZ09HK09aZm9sQ2FOSnFrRG1UYWUwRHB6YU9KSnBWbXFsSTVwTlZjemtaY0RNUWQ3d2gxdzdsNklIT05vWUtTeW92WndnelIzK3NQa0hZVkZ4TXZKaTFiYjFQMFlNSzN2RGpkTnU2QmpneTdWbWplOG84WlZzWGlYQ0RJQUFaeFZsTzhib0F4aTljQVhhNGc4UUt5UmJrSTZ3eUdVNGRoNlpnamFteVJnZXRXWlQzNTE0eUhJNnNKcEZGTmpQZWdYWW1GbDhWR0RpQWZzb2J0S3dOcTNLU0w2dFhGbmJEdGdRcGw0MXBrNXZ3TXRPV2lkVlh0ay9rMUNJN0huVFhMSzFWZTN2NnpCNzVYcHpBcnluUlZmakJpV3JGUTlEV1BQbHNhWk93U3k1M3ZlZG1zUXNHTG9pclV5SEs0d1phSms3Sk5Wb202N1V0dTlYdkE5Tk9INU1ZK0lBQ1NRY1lETENIeC93K1hnZE90TDNsZVNNVzdSMERvNDV2blZaempXSEtxT2xUWXozSDJhRkJLQ0JVZU5XWU9waG9McGhUeC9Mak5GM0NqbDE3UWFtUkZqaytSVm1nYzBLc0c1YU14SUd1dFl6WVZ5SDRDR0xTOGVQRkFvYmJBR21oZjdiSkw3VHhoemFadmt5U2I0dTRWT2g2UWc2Mm04cWRYSjlhTnY3YldFUUtYcnJpeHQrSktpVTFMMTBDbm04aW9nM3Rac3VrVVRQaEg1OHRoRWt6Q1ZSSVFvTE5LdTJySUVaS3pDZG0xOTFFd1NyNzlCaUVOY1c4cC9ZS3ZHOVUyNlNBcHdRQ2t2U1drZlNIbWI1RUExMUQzTjBZUGpXNEZQdlkzcWtLdHR5Si9IWUpXSUNlNUc0dzQ0ZnNqOEtpK2VEZWNqZW1yT2xzblh0TWdkQVFMcnc3WFdvNCszanlDd2dOSG16V1czUWRxL25NV2tlenZkbHNaei9ZQllucjZOQmorM3U3N0MwNzlBNjlYWDkzLzJnbm1JMXU5dzl2ZmFUVXFQVVJzL2RnVGhuenQzUEEwTWQvNStMYStHQm5ObUlIKyt6dzhPQm81dS9OOXZ3RHo5dTc5WFptTzZQOW8zMG80ci8xZDI0UGhxTkQ3eWc0OG9LRGtlL2RIcjRkSGI3MVIwY0hSeFpLVUc2MlRCS0FCeDhkR1VndGdnenNrUXh0dXlqczQwRGtSL1kxekdHSG9Pc3U3Q1ZmYmpIeU9HMXdPTFVBd05LTWc0TFVKL0pCNFNLS3FqRzhHUjBwVDFicm5IM05lYkZ5cTNxWjM2US81YzR6ZFNHbFdNdXpYaC9zaVdta2pNekk2dHNNdnoxcmRuTmdQYkJRam5hKzNFWDZ0RzBSbHZSeDZuMVppbzRScElGQkhEcHJTSUU5dFRmRXkvU0ZYTmJhWEEyamk5QUg1UnJJbTdQbDhHeDB2SmhZK3NwSlJBWWFvS2tOeXFuR0tiendrckZ5N0NwamhVUG5jejNiVkpMUTM3SHdYRHk4ZzZrWUN3azBMdnpnVElWMFJISjByTmpSSE43MGlwTVNWaW5IcGdKeEhETTJsbHBKSnRZVjBicXlvOWR2eXprTTJKdUZvTHFGREtEMFpGMExpQUlLZmJqNG0vVThMYmNqYTRyV1FORlk4ZjJwMm9JMmtrRVNKOTIyY1U2c1M4Ly9ES0RmdExBK1IrRmFScWFlYXYyUE5iaWU0VXFmdlRjdVlxbkN4SG9mM3Q2ZXZXOGFtbDZTR24ySHZ0WjMrT2lyWDBMcFVyMi9mdjBFek9odWdFWmR4SFlQZUVLYURRajlCaHB4NVlON05zUCttc1JqT2UrUnVkQ0pvTnczb05BQ1lvZHpsajFtb0lWWm0zcW9RYXNWNFZQczJwNWRmWTJidUhlczNNK1NqYytzZGRKZ0oyVjZvQnlnZjhhSWgzT0tkTGprb1ZHdC9zK0NSbFZaWDhhOE9abmJxblFPVFovOFl4K0RmRURWU2VieDR3SURwZHJJSEphdG5hcnlkc3FGTUdTZ2lwUjNETGNwT1F2djdWU0xvK0YxbVlsRFdBb1N1SUloaGFDenk5Z2l6b1lxYitNWkFQa0xDMzVSYmNPSHZaMkNaY0RFUU1rQVBBVEswQTRIRVZhaVYyaUZoYitvUVVLdkt6Zkl3a3Qwd2N0ZjBENnpZUFhqQ0NZeWR4RklrdVBwRENYOUV2cXNZY2hRT3dnUkh1c3VuSkJzeksyU0NjM2F2bzhYYlBzaFRrRXhyUWZzYlBPT3RJZ1owZFpBalVVTW9CRmNFMjVjd2lXTzhPTlgycHBmY1ZlV2h3ZGFHdXhoUkFhUTFiOU91TnNyVkhNNkZpYy9Id0dtUGRtYzZpSDU0cTlZRVNpaHJ3VThWaENQckY1b2d2NEpEODgxbXpyb3FpSTJSZ3BHOENCT2QvZU9qZzRQRG05MytzeWIrZjI5NEhhdjc3SGRVWDkyZU9Tei9jUGc3ZjR3NEtGK2ZKcEtFdXBZbzdlbVVCZzBYbEFIdkx5d3ZDZnhwNnNQV09rK3o1TnN2TDBOMEx0amY4UURQMTdPNDhWc2tNVis2TTIzeFdOOUNRZDNZVzZ0ZGVCb29iTWVIYlZYRnIwSStib3E0c29zLytoZ052UVBnc1BERVR2YzN3OUd3V2ovY0RqY2hWZnNhTWh1ZDQrQXRlK3duYlp3RXVnS1hjZzhGWmFEcCtwWjR2RlREMFA4R083YmxJeHJCVVNLNkRQQWdGc1BtT29nZ3lWL2ZpNFdrbXV3R1MxbXNYZlFhUUEydjkzUk51MFlVQlp0M2w5d0xlQmZIbUExRjE3NVBJS25hRGZ4SG5FM2xiR29jRzFhRVk0bnZDeHg0aFJuU1JRSm52Z1BJOVFzSGJYUmhVRjd0RFVLUWEzUXRqSTNveHljeGtaS0l6K3ZJRFFOYlJkT0ZBVzFKUXU3VW5jSHlXTzVLZHRLbGlub3hVem8vTlpZQ09iMDZJWVJCaHdBVU9vVmpVTlE1VjAwK1RaTVVoWGlkbUd5OGhoblNXZFRXaXd5VHF3U2VDeThlcmVyUld2amZkNnFtSHNFYXRvU2x3bzltRHNlTVBmVys4eFp2RjByYkhkQVBBcnZsdkV5YzBUc25UQXdjcVU0a0c5WkFtK0JWODdWQy9KWVY1NmJMbmVjbGNZY3JrNW9qcHhvUTZTSW9JTHc0cmxVNVJXYmV3bDJDaUxzTWJsUlNGZHhwK1phWGpSRGdzODdkSVhxbHVwVUREbi9UZ1Y1Vk14VzFTNGV4UTlkZjU3WitUY3lpUGZHdWkrSDZodEw1ZDk2YjBvTzdBR2I1eDZBRjBoQWtEbGlCaGp1c0xXbDkwQ0x3TzN1WVpRczgzYkRPOEdtWk9yY010bmp4enZFMzREWEFRbnpjenlsdFRDdzF1QWxpdHdRSFFLdzJrNzloQVJhcEJLaFFpaXpiWWNjQ2gxWlpvSjE2bzJSeVpkMzZKQkhVMmExdHZZa09EZkZiNVo0WllPVGxHQ2gvcDQvRyszdkQvdTNMUEQ2ZThPanQvMmpnTzMxZzhPamtYZXcvM1oyY0xCanZTQVdFVSt4SDBBeXZHSzNETGFsejhUUVpDQ05rQ2F2R1VYVFZNZVladG9RMDR5N2IwM1hqb2xVZlB6MWF3bGxuZVdnbXpzV2dQL2l1ZEdjVGova08vdjE2KzZUcGZicU82VkZXZU9KQkNZME5sdmU0WEVITjJ0cGRtWWNKdm5DeUFiSXlJZHVyaHVNbmd0R1k1MmhYUzJqQ0lPek9LUGtRN3FtY2hLeVltZ0doaTFDZjRWZkh4LzAyWHRydkRGc0prWGZVbWZtRUpnK1R6c3F3clFaalZPaFFtRGNlanN5bTZROWdRZTJFYk1hWVZ1ZzNQdGlsZ3E1QkEyZlNNWS8xZFduQ1JXQ3VUMnZtbGdVQit5SGJWQnNqRHhOQ2p4b0Z0NjhJRUQ3azBRQzhZak5IZTBNZG9iN2d3UDR6KzRSb0NWS08zTTgvU1EvT3U1SmtpeEpqRzRWRDVFbzY4SGhlSVFOdno2elIzMklGdUtXUlRTUVBSSk1yZ2pwT1BwYnhNeXM1M1hwU09tNGpqY0VuWDFraXpoOXZNUUowbWt0TEdtWWZkYWZMOC9lcThmZXRBRWptMnp1SzQrUUtCZEM0VHVieGt2MFhOcDY2UmxTeFFzRzhjVGdUTlhHcDFBNk1URXFxRk1XUWNiZmRkaEYrajcySjkza2Y5eWt6WmpkN0pLTXVvS1NZRjB4eWNMYmhydHVTOC9oNXczQmlVckdvd21lZUU2VWMrK3BzcEpiSXgrOXhyb3ZvNnZRWTdkOGFJSXpVTjF5OW9BZUJWTGg0ZnZOUU5aZTB2c1BXMllKaEEwWEJJaXFuNFl6WmxxVFRVWmluWERDQnlzb1RRSForTzlSQitoZlozZnZZTGpvZEE4UC9sdnY3NlRjYmpLKzhQYjJ1OGFHRzZ0UHdCNTNackI4ZjQvZWlDZWxSVzQ4S0RyOGJhQUtyUm9IZHlYbzk0UDBzWjh1STBkbytjcXBvSkRMblozaDBOUzhvVEpHVUxSNkpYQzFSc3JwbW81SUluNnYxK2hNSTVXdXRrUGt2NGErNmRhS0FieU5vY29mZ3pDdUc0YU1pN3VTRHhVdURCVXJJMGEwOHZSZEF4UzFQSjkxTGRlOVBQbjl3OFhKZTljbEw4MGs3ZXB1Rlp4UTlNaDJ5R3VVWFZGZDk1ZFBKMWRhNWNJU1NtZmI3dDNTUytzbUFXM2RHa0lGNnU0U2RZZUZrbGM2YW4vU0s3NXIxWlJaeXliOWRWMjM5ZHprMklqOGxFN1l3cmxNYm1HVFhGWVlxWldybU9DKzVORHJVaVFLd0dpTUFCTkY0TEhpTmNTK1lveDVSenVTc0R2WGRHcHkralUwK2RVajc2c2VwcGN0eURWdjdCN3VqZHBib1lRMEJoVnUxZUl2UkU0VnZqdHRya3hYL1Y2UkJiT3ZGSUI2NTJvNGo4blUrSkVBT1FvVTJvWHdmZjNIa2hMRlZJOU1xb1lWREpmQjR4eDV3dEtyNTRvcERVK1dMOWxzcW8wYUQ0NkZNNGRNNzFJQjB0Ullod0JYVkVKckhZRGQ2S2h2ZExyZ1ErK1JQN0dDZ0lRYlRJVi9SMjdjSHdGSDVoRngwK2FScUxvVERDTWp0cDdBSm1LdEF6RlVVZ3dTZzhETGF0V1RkUWN5YjBKNU1KS0VWSFN6YmlVMUdxUHhlSVY1K1huYXZFUmU5Tmh0WmxERXYxYXhSVkl0cURUVUlyUnA4eVVvRmdHbElyTE5veDYxTFhXQWJWUVFhK0dtM09DTUhEWU5NYXVCdDh6alJiRWZSUFpMTndCTVFTSVZKNUlQODdDbE5aSUI4U3dpdWxGOGFqcjN3N3hUbWsvL2l1d2t4a2E1aUtoY0ZBQkpMbVA0L3VnOFdXSmFaQzUvZW41K2Vlc1RlZHlpK3ZtTUlGcUUzNWgwSFNMZFV4eGJUNTkvd0VRNGpndi9nalZhMDQ0VWZ4U2s2VXlzT2pEdUpZcysxbzRsT1BLYXpWV01PT0p3VFNVaDBnOTJuZUdmbjBkbWZXcGV5U3NqS3BwRXNCOUE5VmRUOGhieXY0Sk9BTDJzcHdOTEdUcGp1TG8ranJHTktjOFE2aEoyRnd6ekwrR0p0UU1MeWltMTlWMmdhZ2RSSlpwTG5IUzVHSVFOYU9vcTVVZmxnQUZaeDhXdzNqaWxVM3ZVbFY0T3FxcjZUSmxONVdGY3RiME5ONWJkcWJoTE9Kby8yUTgwdU9xQmlXUVhxSGV5Z3RaT3F1ZkoyS1k4R3Yzbm90Vi9Gdm1yMWp3S0hDdXNieDBoVDB6R3UrYURKRnNjMzd4WTlORGxQMTFPazh0bWIrQUgwR3ZhZWlERWt4Y29ybFNtUkJUWWJsRWNKVjZZQ2tKRk1zdXFvRFYvWVluamU0clRSbnpkTUQ3dEJlemtlTDFkdmVidW5sUThvYkExbzhsRHpCc04zakR0NGtpbFFWNFFSd284bDdLVUZzeUhDMXJMNUFtaG1pN0pEVEwyaHFLeVJMdENhakNidm44c0RaSXVyZHlJWmYzbjRkbkhHL0JvWlE0ckpYOE1NemRqaVpkNndtY0Nkc004RU50QUVEWnlWOWlZRDdWaXFnem4wek9lRXNGMmxQWWxsQytoZTVWVXI3WkRRRTN2TXFsZHFrT1pqWE50bWxMbnE0WCt6eE84V1ZPTW91UkpnNjEzRng4dlA1emVuS0xqUHFZRE12dkVLKzkxR2ZiNHBMV3FUQWpTMmI3bTQ4TW5ZUXNWZU13ZExqVGRkanlSdjZkMUY2VTY2eFJVd2RFR2NjMm5vNDVvcmV1bDd6TVdZQzVrT2JFVDg3eEdPQytlNXNoY1ppVG1yanJqWVpWaEhpSzkrSW1DUFlGT3AySzFPYlVPeVFFL1lGOHgvSkc0QkFXTlZpSFNBQU5lNVVvQnU3M2kwK3ZYOHRGV1o0RFdOYlRBVDhDZm4vOHlXODF4WTFuak5sOWJabTJ6U2VpaGtJcjdTL21namV0L0Z4ZDZBV1RiQUx0YXRpOVRUV1dBZDNuS1JxQ1hlc2JHNEM5U1pRcG5yRDlEaTZsS2pwV0FLV3pZalJjaGhTTS9BanhZSU5KQmdVaVZvbnVhcEYxa0NlSnBzMFZJUjR2Mkp5Ym5yT0FqenIrNHlMKzR5UCtmWEtSS2RWZVRPQkpVVzdaMlBiWXJ0cE54M0xocWsrcWk2VzhLeFV5YUJRaGxXcEp6LzNsOWt2UGxqK3hUeXpmTzBiRWNNVFlzSXNiK3JJa1crY29WOGpvbDNGWHhURDkwQkJvdWErWWVtZXUrQ09iNzB6b3RuY2JvQ2RhcHZtTmQ0b0lIcTBlUW1JanBSQkxGbCtDc2lnT3J0c3ZSYjBQcmNseUxBWk5HWU52b2I2T0N3T0pxRUpnVUhZVGtRSUtEWXlBVzFYby9STFdzYTVaeGtvZDRqSUdzSHJ1UFUyVmlFVWMrSUQ2NjVPbFFqNTJtQ1BqeWtYZ3RHNTdWdjdEc0xFL052dkRibHJJUjRnRTlsTzV6UG1NWEFSTHdqaTc2VVdtOSsyTHE4R21iRW1DZzE2a3NKVTdCeFZVYjFTSWNWL3VLNnR2U25EaUZsVWpvVUp3ZlRST1MyZWdxMEN5bG5jZWwwUDBCUDVwRzNxU0g2R29WenFLdXBRRGVRWFJNRTZqRTBvNHdRR0lHQkdxSzUrNnJDYlFJcXptWm1aWDNycXRzSDlXRkU3ZW5jZWVFRFFXM2RiRzAzSXBkQkJDOFhMUnRSZDYxN0tCckt6bVZyUUFZZTZmQXB1eU9JcnRxQmpNT01WYWtNUDJqZ0p5aFd3WEhxcGZKeG9xMElkbzdXazVoTVJ5cEUzS0VWQnFpekxSZGlKYjE2QWtLWlREbjRkZno3UDhwMW45bmxlMS9zek9MZFk0c05qNU5jR3BuQ1Q5ZWlLdGFudStaTjgvdk1Va1VuaEJoUmd6NFNTbUF4VGg3MzhsNHRwcnltY2lleC9IYXlyd3oybW93K2tKN2F2eUdCbCtDTU1uMytvSnUxUzNKTDBFS0lhcTlsR2tmLzBtTVdwSWxTUURFSlNJcVQ1OGJMdmhsZEd4ZThacjhxK2xTZHhQQzFHOEp1eHBodHI1L2tTNHo2WG9weDI2TjhQdm5jZkZOdmFmS1BMN05kVXBsVFZqTzUrL200WHR4Z1V0cnlvUXcraExMY0VwK200SklCeVpZdllpUDVGdEJQQVFzQ21Ya3BKN09sV2VCRnFuUDdleCttWWZ6NnRmYXpibWwzTnpvMVVXNUxJL3BtcS9BbVV5UGhaVGE0ckg2b2d6YlNOUWRQUS91c1Rob2RmREx0a3h5YWNuWGc4WG5JRXk3bUJEWE1XVFRKQ09qSXk5VHR1aXh6M09BOVVXT2tHTjZ1YUlkQ3FjU1E2RGYxakg5UjFTRFVlSzQ2ZFUydjlLRDNxalBmQXVnVXV4VEcrclpLajdKd3JXTE9sQ0Q1OHhiMTFWc3E3Wm8vSFg1MG1MK3poRHVXejlBNXFoQlNaeHgzUm9VSmh5TnJRWk5qK1VoZC9rVThkWXhHYWZNay91UjM3UDE5R3kxVGJFdDhZZTlNaDJHM1pKOXdtNk9GN2ROQWR5MktSemNyamwxMnkwUjJuWkw2cWZWOEtmUWNnSTNRYlFPYWJJME85MWFKb1J0RENiSlJGN1JVZ0lNMjFvM1ZZYWhwSFE1NUY3N2o5NWliaXFWc3Jzd293dXBhdGszR3BlZEpsSUhpTENRODIyRlpZNzVHM2x0TnQ4dy9JRWZadGprYk8zR256bm5rT1YxL09NRVZEcXBsOGNFTERyU0xPaWdHMlBqUVg4WjhTd0laSE5PbHJNNVdaUmRsWnROdWRRSU0zbnBKdVpWRnpGYnl2QkJPWUtzOFZNMExxWGYxVFpiajRQdHgxT0RaNXZJbGhwQ01rQjRsOGVSOE40VHp0eUF1Z0ZRVXlKWkZIRUZjaEZWUitJT2pKSzM4RjhjalJCZ1NsNWNTK24vMnpCZnNkN2FYQWsvS2lHbUdsZ0tjdHJIRlRSUUhUMmVBMHIwekNZeFliTnhpcHZ1cEIxQzVUUGowSlNYTll1N1FRVnZsWmVLYUoySmdyMEJJN01NQ0l6NlpTTzJXbmtjbEd5dFllM05reXhQWkFGb0NyelllWHF1YlRVSzBiQXBLaE1BT3VsYTIva2lnYzN2TDhtaVZTUWVMcHU2QkRGUUNhZWE2NVh0WG4wVWRqTkpYaVVZV3FxWFV0dHhtUE82VHlyMzhKaGZhTFJlSTVpeXI2bUZhU09wSVE3UHhRK0VWMitnVXgwelB0R05Fb3JTOENUYlBMZjJzVmlPQ2JVMWRYaVJzbEVWaGlwVFFNclNHNE5vZXF3MTB6REtKMk1Pd3hLcWJkSi9BZDFwNzdtQ2hESnp2bFBjU0crTkVXVW5KYm80Tlp3bXFyUXo1YXZqUzhPc1NSZTJwZTBlYTd6UjlpbnZFN3pmd1RFbFVzZnA5djE1V0dSVVA1WU9hNDRoWkVpY2xaYnZCcXBjRFZTN0dhaTRHS2llVGIxQ1lHcTNGalhuV2JlMVc0REsrUzJLTzREMDkrVmJnQ2d2dXlQdnJSTml0QzBYdU1JN2dWRXl0TUxIYWVZQWd5d3k4YXA3NVNvdkJpRUliMSs1Z3QrYkdpNm9LMXBFbXFWMzBISS9YVkhLTmwxU0p3NE5WSWc2Y3E2aWl1T1VyeTlxakFvalFtTHlkcXdNV3J0Q3JqQmhZT0lYR2tVajdyUWN3WmRQMmx1MlVPa2MrYy8xYVRBa0VTZ3VBOVFXaEUrNzZVcTZDaVM1Y2p0dWNwZzBYZEl0TVhOU29oOVRXMTQzSmsxSDByU2VwUHpPYVdCMTM0VDN0ZDF5WGJiTVFxdGRHMThyY3NnUGVrM1hRU0VMWEgydjhnVHZxSjg2NWp2cWE4MzZIbUFQNEJGeWJWZHhiV3NzUlJxckxMRlk0NG90VnpMbU1zRnRnbU1idXBXSWNOR0EvdHFBSm41U2FPZGlwMmpuYkRRN1RxcVAvYVNCdFZFaDRNQlFRT2UrOVpzSmtGcnJsNy9XcjMwOXhqTDYzYTl5ODFaUCtNM0lzWXZJb2E0Z1ZmSTREZEFvM2ZrSjlDbkcwU1pkR1B4OFVROHVaUWptZkhIOXZKbkg4RGxyYm1IVGpKTUZHNGhuVEYwSGJyaUpndVRMYkptZzJwbkJCNzRuKzlJQWFGVzBwKzhTSEJyeFdQZ1NjZE9hcFpaTXV4MmtFUk1tK2lVaVUxU2JpdFd0aWlwSnorWTdzNm9nTHJ3SUQxSUxNQ2dEcUN3aG5lSEsremR6L2JtSGRtbkZBR1NTVWZMdE9yLzRtMjZkMXJXL0diL0VIdjJIOW9lN3FIU2l4VGRFZ1FGTmpVV0RzbU0wajBHSlhIMlF3TVNRaHd5dkNuRVhZYllndzZmaVJ0eVc0S3FqSHZGZWkyOG1pWVBqbU1IcjN5NmlBbmhKUk5KVm9RSTIrdnZyeFlYN3Y2R2dvdndpTFpVY3lFdk05RnByTWhmbStyNTh0bFU5elNYWHM0WWM4RnJndU94SzUvUG9lWitxM0xQRFo3TmdRdWNvZFFmSWhwd1RZUjRCejY0Yy9SRWU5WTdGUjROWHBmbTJDcXFtM0dIa1RRREZPUTQzUm5ENmFBV1VjbDFkQWMxWHlxRW1KdFgxbTJybDZrQ3FWWkxIR1hZWlpNNm8xekpzeW9oYld5eHpqUnJSa0dCUi9LTnllTlV3KzJvcEwvS0JsemdDN3B2MlhiZ3hUV3FVYzlvSUpHTW5MK0ZWYVNJTTUwVDU1WndFVjArYnVEcEh0UjRXTU9yVTdmWUwyVXRGVVhiU3hCeWhoQ2NuWXlXaVljcFdWL21pN2cxM2E1VTRYVjJ0c3JjWVJhYkgvR1BEL0tWa3BreFFFOHRvZk5LUEM1SG44RUxyd3FsaTU1azJERWFhZjJveWV2bFVhdHd0VExVWWwxYzIvTXViUG5xMXZKZzRWaFowS1lCUEpjVVVFOEFVSFYxMDMrSmZiWGtlSlo3cmphRVBHT1daS1M2ZWFybDNTcVVKMnFNVFBjcENiUFhmY1k4eG1nMnljUGFsbjNncGtycngrdGZmU0FyOXhzSWNOcVo3Y0ZvN3h6M1RFd2NUL2ZBdWl0UE51cmQ0bldCRjEvd2tNOHZ1VVVFRktoY0NyV0hEa1NrN2tuNWVtT1Zta29sUUNoejRQS0NmUEdYYk1lYnJjNnA1dFhuWkFiODgvTFlEOUFqUFVhRDM3bGNiR3pqSk1wZ0NOeWJqd2F4V0lLY0NHTkRIUCtlRE1NQnJsZmlac2tWOWtML0wxd0UzdW1VOTVWZWdpN3pZQ3BwajBJMk5BVUoxY2FBRHdpek1Ta1E0M0JPSG5qTC9VbVBzblRFYW9sM2YwT2cxL1JDbitTUmNYSDA2UHo4Ny84VnFUTzhrR2JwK0IxNnQveUxObVRRUXFjc3dwN2E2RUxlMUMyN0drRmZXMStTSFhrdW5KcGRhTlVFVm4yQndXV2x0b2VCbXRmUXRxeXc5ZFpDMVduaktpc0x6ZDk2SFZTS29aQWd4YnMyVnlhM2VmVGpyNUtrWFpiZ1ZEZVFVNkFnd2gvaUI5OXRDL0dvTEo2bVIzVVFKc1ZsMHJpQmRXbEI3cXJRM0hXUWdUUUdaSDF2MnFEY1pUY3VYNXg2dkR5WnMyNTdWVW42cCs2NmR4aHZDSlFENFpmUGlQdTFpL3F0dnpxYUxzOWU2Ti91TnVqVzc5NGJ1eW02NEJMdmxEdXhTQ2tTWXVqT3BuT2dwVjJTaHByYTVJVzl5bU5Qc3FmeUNveDNaV1Axd29xWEJ4c09lVmcvcEJnTWh3dTROQUs5dkZ2MVdRYWRCVkt3am4zSTRxNSswRm9LNi9NUVRpNnRIUXgzMXBvYStSZGxBK2dwVlVkbkV6ems0aUIvaVdRSVYvTGNEY2UxZmtWQ3RLN1gwempMeXZnREhwMXkzamVuOHl2T29Ea1RyVjlEUjhsSGIxcnJYL2wxZFhOeFloVnZKaW12L2ZKS05Hb3BjL08zODlNcXlCY2xxdldidzdPVGNzbWR0amFuckNJV1ZzckVnSGhxV3J4cmtVbTFqQlVyZnA1ZUhGNDMzRXVybEpIazNGUlozMWV2Rk9UR3NEcU9LanByL1FMbDZIUmxYTjFYZkR1VTJTL2ZzbGplWFFMQW9mbkR3eXFIVmZSVVhGbFZ1YjZ5ZkcwdHdBVTFIbW1IWmxQTGVYaXNab2xIZjZaQnZOZW1PVzk5N1BlSENDeU5EeGlkeUkyNHJST0tVczY2WVNkb1VQM0RiTW14Mkx1bmExS1pkUzVGWWNRakd3YmorUE9TWFhBS2FCVmx4dXlPR0prQ2pVQVRrS1hFWkpoY0ZLczdBNUNWWjZwRTdqUW9QU0YxVU0vaDBJcUhqZnBiMmp1RXpOYnRTNUR5UEtUQ21kdXhyaVFFMVRweEx3R0xxeGJWejBwek1KZFpOSnl6RjZ0YkpqamFhYk5QNDVVRGx6bVlaejFqcDNZSks1QWJMRkZtRFMraXk2U3lrdWZ5Zk1RMWgwNklMUlNzaFNJSk1vTWxhU2N3dm5VclZCWmQ3bU5YR3o1dWJsRDJRenpJMFJQQzVHZXJ3YmtrYmFKaGowd2ttVFpadk5MSlA0bGtFN2oxaEt0eDRyaFV2KzJZSDdCVnJTZTdVOUlWTTVoV0RabXNDZ2ZVMkxZV3l0UnBUTFQ3UEZ2ZHgwWk82NFFpTi9Tb0h3WmRZR0pQMWZGbE5GSkRYMmh2dUZtbnJhQzBDVEhqQVYwcGc1TXQyazJsWnBNUDNpaVg2Yy9DeEN2b1NLUVJLQ2h0T0k0aGkrQytkdGpRMS9JVklxZFZhejZieHZmajlZZ3dWMFFaNFV5ZkxmK0tYdHA1RXdVOGd2SDRJRjZDaHQ4VWQwQ0xQNHl5YkEvRnc3NzZGaVRzRHdqTm5pcG56aEJ3YXlhMnpkS0UvWTIwU3JnLzJiT0hBcElyd1JnMDMzQlplV3J4STY1a3ptdm5JcjRXYnFMZzdxWEJrQmZVUmo2MXI4V3hZQnlnNmFiUTJaaUhCdXJ5dkNiVTFIZEF0SkYyREFFaFdENXpXSUdDSTNYaVBScGZQY0RBNzJNT1hBZXRpZFg1cWlNdkVQOE02dy9MUjBSSEgzalh2blNicm5NMWJYRWF5VHliTUtzWXdsNHF2R0xWUThoWGpyY25UZ3pVR1FnWVp2ajRTY21YalR0RUd0czBOdldoVjdRcTRpcFdaY3NzcVZ1Z2RpOU1BQjV2dzB0UjdYQmVRUlYxTSsvZC90UkRCQm5HN2UzSE5NNG1mWHZ6TXBlN2V1THFJb3NXR2VHZUo3WGdzQkVEN0hNN2NPVzRsU2RPNXl6djZOUmRLVHNPbWlJdHM1WGh4UTVJN3IxNjlFdC9DbUV5RU5pZ29XNmlrQkRCem52Q1lBSTB3SWVTaGp5VGt3NGFFZVhhSDlvb0xNb0VjM2FZeG9qci80Q3B2RE9XM1Q3T1RvL3dnMzU1Y250a2ZULzZQK3hQb3dLdWJrSVlGMGNvNzFDYlNqYXVwem1teG1xb0Q4ZlUrcXpweWM3bWdDNHZRQi9zYWZ3S2xTMzhCeVM5ZlBReHhaMEFtMitSWTZLTG5pQzErQjdHL1JDK0dqTGVHYXdCYlRWWkFFOEFXMnBSNEFKUFVNOUVXZWl3Ykw1RThMTHR0cVJIMFpTR2p1dzZMdnJBNU1COURDeHdXUmxKcEFFeFh0bVJuRWtJdTVtWW1YdE8vWDg0cyt3NGg1cFFCMk5VTHdQUy9NVUMrdklzM1ZYSlFraVV0RFRESGlQNDVZbm4vTS9DZ0lGNzBNUzRseXFBRWpJeXpxV3UrOXJCUGVNRGdjSXQybjB1YWFNb0Q0UGp2M3BqbitxY3pQckhoK1BlcWNZeElBRFgzeGhsSnc3TnljaVh4ek5vU1NPZUlBWFI3eDE0U09qcmlkK1hWbE1KY2tZTk1Fb25ra0FQWGpkaUQ2M1k1anNOMDhNNm5BSEhGMGZDbUsxZVVKQWM1YXU2YnNvakprRjVCck9ZYXFnandFdFVaOUpzK2psL1V5SnZKT3FYZ1c2azdjVUZEWWNMZ3EwSm1DdlBCUmJEa2ZobXN3emxRUnpvMEFsR2lJMXJkbGM4OG9pSjg0cGhUZGpKdzB0SGl2KzNzRFYrUGhqdDdXeFE1K0dSZG5mN3ZUNmZYTis3SDA1dGZMOTViWSt2eTR2b0doSUxMazV0ZjNiUHpueS9nMWZhWDBiYkVXaFFZb01iVjcrNzF6UldldDQwdEMyV3k4NXZUOHh2MzV2ZkxVKzQwSzMxTHRvV2grdGVibTB2MzVCTjBjblgySHljM1p4Zm5VTzRuWUdVc0xTd0l4VjBZdlB6Wis5T1BseGZROHJ2ZjNmOTErbnZoZW0wOWIzRi9BK0VpNndBeURwVDE5K24xNnhtZEFNaGhmVGc5LytYbVYydU1Sek1LRkQzYmVzanV3Z0hsU3JIR1lUejRDZG56MlFYLy9LeUFKM0xqNEJVMVpDMHVJc0J3QndKRFJYRTR3OVR5TTZ0anZjSGFiL0RYNjY1a0JXOUdmZFZ0ZjhTUmNMTVJ5eTVhUnEyS1BDdTBLN01HakNGbFl6RXBOcERUMmh2dHR1R2piRmJIUXdtWUtpQkFrWWtxWVJScWJWMmN2WkFEcXU1OW5DQzdrdmlxOTBwUTBIMysrZUwwdGtBUTJEaTFqUTlLTG9rUmRFcUhJbHB2UlNJWkc2aS9nN2MrUWt2Umx6QUZSbWxkL2c1b2ZQNGVsdXB2VjJjM3B6LzlmblA2N3VJOUl2NUl2NkNsSmhnYTBzNVU4c2ZVdEMrTmVSVWxZYUM5eVFySWFxck5CVCtIK2lnT2RrRzV1U0JOcmxXendUNjVIMlNEWkFZQVRoNXJ0N3pnUzRTOVN6NG5Fc2piVmhKbmVIVGtCWStWMDdGTWNuRUtxOU1FU3ZHOWxzVElqdlY0czVpbnJXWVBoY3RZRklQU1lGMWVuZjEyY25QcVhzTnVPanMvL1dEWnkraHpGRDlFaGs5YWdQOXFmL05WM2NBa004b0JWLzgyZmZFWTFLVVF6ZlVSRk9JemVoaldDa2pHSGxkbDl2azhmcGhURkNnZ1VHRjl4dm01WWpLdWFMaW11bkx2WlVKYURXRUFqYjFiNVU2SXY1VVRWdUZqeW5PMXlGVkd2eTN2UWVkdFdLMHBpeE1hc3d5UTl4NU1kbXFjU09OSE1VSCt2Y1VHQVlOWkt4UUJ3L1h4QjcvbTNyWVNJSjZrVDVTQkhrWkU2OGowS0Ftc2dvMHd5cUpOOGg0VDBEUC9QbDRUOEcyNUNNZUd2WUtCMkNZczd0bHR0Y2c1SEVYZ3I5YnJuZjIzZW1GWlJBZVZNekdoOVBUMTdtNjVtN1hCcTBhL25OWEhEbngzZDdoWnc2VjUwV3JFa1VoYTk1Sm1NTmFoRHRGTkU5ZzU1ZjJoOHRQMXRqWTdNaU91enlYUDl2MFlOK2F2YTl4eFNOK3A3UUVYT1BBa3VzRW1JS2k4dTRncCtRMmV1d0pmNStsOVNXd29LQS93cjNuUVpDVkQyUnFrUHVRejlqS2RvK1ZHaEh3VnVCOEhTOEJxS2puNFNBODM4THRyb2NnbFpKWnNRSXN0QlRBZ243eldBTVRUWDg3T0hmSnBIVzl2S3lZN0VGdldrZ1hQNHl0eEVPcVV4ekZBMFZWKys5VkRpMDRxSzVGT1JBR084bEFYK2VUWXFrdkFsWnZVcnhnZ1dsUzlaMWFJY05XN0Uwa2pkQm1tcXdPVmk4TlIraFBCZzZuc1Y1QWRYRTA5bE5wajFWa1VPRGd2UlFjc3FsbU5iamRKR3dPZG9idUlHcjFDVHlsUlh2cm9sRVlxQkJsQ21uRnRWT1NiUktNU1MyQmpMaUtVa3VUNEpQaTYxVXNFblZWWENJS003dWY4RUp5dllZWUIwaTJZTk9iRml2UHpDbmJNbHVGYzRuL2xDSjdQRDNqaGVtZnMzeXRzNFM2aVVGZkhjdmxKaFd0dHhuSHJkd1VhV0t4QnU2dlhhMHd4MUhvejRVUUwyRUg3ZFVxUWNEbFFLeWRRNnVoRlpzNnFaY2RjTjZuQlh4Z2QrWU9qSWcxaGNSeUR2aWNzcnRUQ3BtRnhHOGRuaWgrVlFEYkxvN2lRdGVNdnJSbVdMOXl2eERrNDNoVW4zWDh4bzdhaGlpMTlSU2czTlQvNUhtK2FWRnpHUXVxaGNtTVYzMWtZUmRwakpUR2Vpc2FrQlRUOTZQRENsY2xaMWcwMWxDc2tzNVFYUjdiRzhFSURNRXhULzFmNDRML0NCLy9DOEVFaGJkRDYyNFNmdG5TODQxTzNFV0lWQVZtaGhzQlM0UWpCS1RhR2IzQW5vOHJwdTFFaGJPNlRheE0xSHRpcld0RHFyb2hkVTh0aTl5cW9hRDFwZVJ0c2RFbHN1WEVGZTV4WVZYWmF1QmVZVW5QeU9pc085WnUxNE1UMjdUK0tYT09HRGV2c0RVZEs3MXVyK0c1VDhlcW1MK3VVbGNKVlF0QmF1Sms0dEZhckVJeldzbVVpVXI2S3RLSDFNdW1YaVZrYko2eVRublhhRjJTbnJlaWt2cy9MZVQ3MUlOWnkzVDgwcjArS1lWVXVlZVZ5L3FRcW5FdzNGQXg1eHNuRzNqZktvaUN1STluVXVrQ2RHb09WSzFtS2ViS0l5a3RCQlpSTmdscmIxQzR4TnBFYWJPaEZ4T1dGL1cxTTJxUnZZNmx6WkdIMWJONWRYQ2w3TkxSSHUzYitEU1V2eDV4Qzk1OCtDUVhDT2ZuN3RWMWQ5MWlrVXkvODA3aS9ta0p2N3JzczQ4cGxtdWtmeEtDT1M4SHdsZVRHaGFQYmYrb2dlVEZkYzdTNStRYWlGYTZhWXpFanl4ejVqc0pOWGVCcGpjOXZ1Um5uUitLY1dqSGNRRzI4dnpFaE93ZVdiUUdPZmFiZ00xd3pxWGRZUWo2cmVyRWw2MUU3U2RnYWM3S0xsZnFqS1hHQWNGSjByRS9uNzA2dmJrN096cTJXak93MEJicEtwUlY5RzNLY2w5c1NzbXlpTHFXVFdONmNIN3ZlaUpSMlM2MFl4R0ZET21zVmZKRk1xaUx5MUJuK0dON0EwZTBGaUxhMXRSV2ltUk9OWGE1TEY2QXFpeGRIRkhVVUtrSkcvaC9pdEVUc1hkSUFBQT09IgogICAgfQogIH0sCiAgIm5hdGl2ZV9leGVjdXRpb24iOiBmYWxzZSwKICAiY2FzZV9ldmlkZW5jZSI6IHsKICAgICJhcnRpZmFjdC1jb21wYXJpc29uLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYTFjNWQ5ZTI0OWRjMDA2MDA0NDk5OTgzNjBmYWY2ZThkYTAyMDZiNTY4Yzc2ZDE1NTYwMmM0NjQ1ZmE1ZmNlNCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyNjk3LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWV1NhL2JSZ3krNTFjSVBzZjI3RXR5VFFzVUtJb2VDdlJRQkFKbmh1TUlieXk1R3RrdlRwRC9Yc3JiYzRJc1RYcW9BY01XaHlJLzh1TXk3NTgxelNKQXhiYmJ3Z2JiT1BTNTI3UmRXcnhvRnZVTkNHMWVaS2tTQ2k2dGp5cHJoc0NrNFJGNGNzS2I2TkNLN0oxWDNrTVN6akZ1Z3VPQzBiTUZWTmI2eGZQWlNZUStkUWttYk1zUW9YekZueEVpWUl3U1EvSTJCbU9DUVJ1bHlWS0g3Q1VIbXpBbXI0d0tSanZOdVpDUngraWk5eTVaSFQ3MU4rS21xOU40YkZPM3dUcVJwMzVmeXZOYjVBV09PTloyTjJMRjhZQXpGSDg2N2ZIeGNrZ2ljUkpoemhpbjdrQlc5LzNVYmU4aVFIcW13RWgxR3ZkNDBoN2g4WG9lamhQV2o3UXlsSHBXSTdjZGxPNGRUTjNRdC8wdzRaeU5YM0VEOGRqTUVCdDh1eXRkN0taeWJLN0ttQnJjN3FiaittUm5QWWZVSk15d0wxTjkyZHlpYjE0TjhRSEhaWVVETm1jc3piRHRwdHJnMy92dUFJVUFOUS85OE5qZjNsNDFQNzJGT0RXeERKVzhYTVJOUDR6Ykc4cG02TXZ4WlhOSlFwTTdMS2syK3o2K2dYNkRhWFhtb0VEQVV0dUFlUmpubU42VGtNVER1RmtOTyt3SnpnUmRUL2xkbmFwaE5jZTZ1ckYwclFlYmRUUXhDQjk5dGd5WU1DR2paRlIzWGlwaFZVclJlR0c0c1NabWs1UTEyZkdVcEtBeVROektFNWF2dVIzeDBGVUthdllwVVFYeVJTWVFBVncwU2lvZHRkRlV5VUVEVlZrTWdSdDNOVnFIU0hTczRyQXZ3emFRcVlKekVEV1NwOW5lTDcvOS9HcjU1KzlMeHBoZi9zSFVlcmNmZDVUWDVYREFrWXByZWVCZk1GV0gvUmh4dFJ1SStlUHFuSXZab2s4MjhvQ0tPb043bjdqQ3pBQVFrczVPZTgyejBvRVJTbEp6aklITkNiMFE5TGJVY3l1SkJYbjdjRThQNUFuSEgyZkhTT3BOeFVSMGdkbzBLZ0tYT0JBZFF0SnZ6cDV6azdRUWlqdHJsZEJCYWJDTVV5S1pjeEsraXgwZlZBaENFN2ZhZUFlb2xVU0xEaHdRQ08xRkNqeHJsK01Qc3FQWDcwb1hsazR6ejVmak40aVpnZUxiNlk2WnFMVkNJOEFwb0puSllnQ3VrekllbERhT0twTkZ4YnlRcUIwTHpDSE5LcU5SQ010RW9JRnAwLzlXQ0xucmFTSmZlcmZOWGNINlZBK1VrVFhzSHRZcHJMdStUbERLYVVTZVQrY1pldTN1dnk2U2s4R0NsMmptanhMczZlSHpmeGRHT29rZ0hUTkNFYVdKUmowR1JCY0R0WHB3R01GSWNBamFHMHF4cFQwZ2JESlVaOEU3R3Z0c2NUSDErbXB6Y2Ezci80WXJhOCtzRWR3Ynl4a0tIUm5TR0JJSm1GRWlRbktnRXpGTm1mZEVMTXlzZ3lHK1ZlS2t5L2dOMStuM3c0WGlmUjNYYzJMcCs0NElYdkdWWEludnphcVgzMFFQSEVWa01zV0VLUUMxRERQQUdNSE93VmhneUFLblZTcTlNODR3akN6cWlJYldyYU5kcjFEYkg4cnF2OEJGKzkwRm4zSlVHb1BOSUtpek9jc1ppR2FocmJQU2VaWlF5K0JZUms5VFhGdHBnL0xNMktpeitDU3J0MHBPM1VqN2VhQmx2OFVKYUFFQ0xlRHREc1pUemQ0Vzg1TWFOVmsvdGZOb28zUEo1V2VQYjl2MHN6bzNUd25MQkRPSlp5dzFETnQyQi9IaGZORzU4NlBVbHhUdVBkMXJ6ZXYyeWY2NWh1WlpkVWZFNGxSRHk1SGRxTGhLTGpYNCtxbmY2YkxRVnZKMUFsUm8ybExUaytOK00vYzkvMFRuNlNaRnZWK1I5bFkzSGU5ZllPZUVoTGIyc0t0dmhxbXRzTVg3ZlBkd3VqTTlEdU5ER1NCZFI4MzFGdlRzdzdOL0FGaGthdWVKQ2dBQSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI0ODdmODM0Y2M4NmRjYmM3YTA0YzIzOTJiZGUwNzJlY2FmODdkYzExNmI0YmFhMTZjMzVlYjljNTk5YWQ1Yzk1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRU1lVEd2aXpEcmN4Q21nSGFuWjBkcHFQSXg0bEF0cnlTSEpwMitPK1Y1SVQ0SXRzcHZXd2Z5Z3RZT2pxWDcxd2xQdS9zN2pvb0llK0JDOEppNTBoL0phS3o2RHA3ZXV1UnhJRmVQSVdFc21VRXNjeldJNUFvUUJLcHZjL3FXek9KWXlhUlZFekV5NkplNWpPR2czMzlLK0hzWVord2p1UUlLNzR6bHhqV0pBNFpqeUJ3QThCRUszRmtOTmhJUEtwUWRDb3JSaXNqc0xLMWoxbEtXVFRkRnd3VFJEc29pSWpJR2N2WkFvSS9kaS9INTZmdTN4UFg4N3pCTGs2bFd1V09ZZnFjOFhaaUZJRlZZU2RISUJLRW02blN6R3pVR3c2aDZ5RjM1QVcrZXpnY0hyaWpRUS9jZmhBTXA4TVFNQnI1V3I2UjdvZ0U4QVpycGZPTWd4Q25nQUpLWXJnRnpPSkE0OTczdkpVWXJ2QWpHT25GN3N2U3dtanloZ2pKK1BLS1JFVHE3ZlVSQVJTdzJzbjdMMElTejYvUUZHamVyU1pva3YzSGRBbzhCZ2xDKzdVZW45V3A1d0tjUXNXQmhOa3lMMDB1RThQaUJqQUh0VnQwZ0lRb29YbzFyMTg1RUJ1QzhRZkZSMDVGSTRGVzBiTGloVm1Vc0ZpbjFGSG1HM2h5OXBxUHRFSzhCam1uVVRGMk1zWksvWWlsc2J3RnZpQVlqakhXWDNmc0ViVFZJYUlDY2dhcDRKSkloUm5YUnYyYjB6QnZvS0tEZUZFaXFCSVZNa2xqK3VHdnMzOU9qaWRuSHk1dmI5K2QzUlFRV0pFdkVFME4vVnpLUkJ4MU9vKzQ1RFNuZE9oNTd5dVZPSGs3dmp1K0hKL2Q2TC9PTHk4YTFWQ2VpME15UzdtSnNBNVgwSkVJOWg5RTNnOUZiMlEvOTBXdURvblF6SEJVM3B6QkF5dUg0dXF6V3U3K0ZIUGs5L3BIWVU5VmtmQncxSjkyUTc4L0NMd0JEdkFvN1BuZUVQcWhIL3FIM1hCd09CMGNqTEIvTVBJUHA5N0J3UE1WbCs0QjZxa2x4NmJRSktWMHdsVHhXQnA0d2pHVEUxVnQxclUvUjA3SkFtSlZoeWFjVGFFVThJWWdSSVNtSE83bTZ2eWNVVjM0RHNySUdxOWVnTFNjMTZVT3libkJmQTZJeXZrbm0yTVN4dVU2UEd6N0FzOGg4L1didTd0SmE2dzRDWERDZ2sxUlhSZklQTXNVWTJWNDNyQnVoVWhIQlV2bGhwRy8weUM0dGI4VTdCWGJaZHBMNms0eWpJYmUwTnVyejRVNkJGVVJsQXd6cW1udVRpYXZTVGVMSnQwR1RaNFlmNlFNQmEvUnBqSG5WRjhKeU8rZy9WNUJxMWl4bEN1Mk5pU3BuakNFSFNPY3BOcTRudWRGTnZNamlOU0lvaWxVbmJzbTdmWnorQzhGMFNhdFJWYi8wQ0txMFg0Qk9PVkVMazlVZU1OSFd6dzRpRkwyTk9Ga1FTak00RXhnUkUzanFIYmF0YklvUVZOQ2lTUlFZMDdBV1dJcEFHYnYrT3JLcWF6ZmI0RWZDdDdHZEhuRG1EeFhtb3FsVVBPV0VpSjVDczBRU01SbG1ueE5Qblg5M3dsVmc2WUVIcEhZQk1pMTRxMzc4ZHI0QUJhZDNMWkwyY3hwUC8zU3liVlh5L1FMUnRNSXJ2WDB0MlZITVhQalJpVTllamVVY2JQL2ltNVJsS0ltckU1YlZ5eUlYWTFrM3k1WlJrbVRITDM5elRJSzAyU1R0RmJDZFE3YnN2WTFtaTBRTjlnTGZSMlRvdXFEVHBKRlY1UFNxdnlwbTlJdm9TMUtBeUtibEswbCtQbTZiaTUrVFFwdnFGeVVrSitoK1hvd2N6bk1pTHJETnpwL0srS2ZqKzFxVnJDSDVWcDNRYVRVcjFTTnhDMjY3OVQxNE0xT2JqNTFnbGhzeXZVSlRiWFVjOEpGUGlUMXhLVWI3b2J3bUQ2aFpUNUtUS3NMVXBWMjQzVVpoaENsVkxvdkd3WHF4aEhHQ2NVRloybGlPcURuRmZyYmV1OWtqdUo4cDNrYjZ5bmltZ2p6ZWxSODFGQ2VPVzdnYUxiSHpEQllnVnJkZnllQVcwOHJVL1NyaWhwRlF0M3N5clBFNW4wcDZ3K25HU3lPMVRIUEJZank3eVRXOTVvU3pScjVLbDJ1UlY5d2hHRlNtak1PZXpuaXJEKzN2THNVbW0zNXJxZ2ZkbFVjeGZLOVlYVkNFWWxzVXhyV0crTzZLNmhiYmVUNTRDNGthZmxWS0VyazhwUndtMUFsZ3FSYUhlYzZtOEdySXhiNUJPdUhTcWRidVFuVTNhRXRBOEF2cDJOcGVHalNMK3Y4MXlpeEtiaEs3bXNXYUxiK3FEcGIxNzRzdUN1YzNENzIvZTV3TUF5OFhuYzc3WXZEeUpaMk5BNEYrbDcvQUZoQ3NJV1Z3MkhWRFM4WDBlcTk2TFB0cGlTc3I1ODIwdDFzTklBNGU5c1BLWHgwVVNybmxwYVF4ZFBIaEdUSWJQTDY0T1Z0dnZaNkk0MEtGcHJubmJhVisxZmxadFBjNDJUOTgzVytJT3J1K0JXZWVJVGx4bjRiU0cwUVZlQ29Sb2V4cHI3QVpSQjhFNHFOdzlpdkhkMjJnUDIrOGJxM25kWk5sYTQxdHVyNUZ1TU1vMzNNWlUzeUZpeGNVZFlRUGx2WDcydFF5NGVKeTlWODQ5WnovMUVKLzhNYVNYWFMzNnFMTkI3Ykp1ZmFwdlQvb1lwaHFocUZtclV6d1kzVnJFajZpcXJHRXAyemlOYStKYmFWdlNwKzlYRzFVNDY5MVQ5MDlYK3BkNTUzdmdDREI4Ym5UQ0FBQUE9PSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLXJ1bnRpbWUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJkNThlNjBiZGM2OTQ1OGZlNDJhZjgyNDhlMDJhY2Q5MjRiM2I2MDVjODI4ODc3MzUyYTdkOWEzOTUzZTkwMTI0IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDUyOTEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNjFZeTQ3Y3lCRzgreXNFbmQyTmVqOThzcStHQVJ0WUF6NFNXVmxaRWozOVdySmIydEhDLys0b3N0blRzNnRkK0dCQkFrWkZNaW9ySHhGUjgvUEgyMWcvL3VtRFZrcnBQMzc0K09uZC95N253OGl2dy95WmpBOVkvNWhyWkYzRWNRazY1NnFkTkVVa1ZIMUxQbnZkbkMrS3VlQzFwQlRGVmlVYmc2K3RENkVFOC9FTjlIaXUwaUhWT1RqM3RMN0dvN0JBbDh2UXhvTzg3Zi96eDJFWVQrTjFHUGFYMStYajFxU0ljcW1RVDFZaXRyQXRLRW5OdVp5OXF1eGJkWmthaTdFNTJhUWJhV2RGSkZrbk92ZDloK0ZJNCtrQmFRdmVDTEdScVM0MmJxcFVaWTJra0YxV3pua1ZvNmZhWXJBVUpMUXNMcVhFYkZtczFHekt4elh5NmZ5RkRnTWZSamxkNzhnK3NGRzZWckkrY1hGRm10YWtmY1YrdXBTUWZEQmNrVEN4c1RoS1NaV21rVDRmU1pKQnh0OGhmNzVlTDNmYzJvZ1lCNU9hRkttUWlHS2l4Q21XcEdySnVTREFTS214alNHS0ZNNDFtS0FwSitCYnV5U2ZiblhjNGxRQklRWjhZSjNYaUtSd0pJYzFVMXNJMVdlYnZYR3Nvd28rbFJTUmwxd011VWk2YU1YVmRqeW0wL2swTWgzR2I3SWRYOGRTT0pTa21aUE53WWFTWXdwV1NwVldMY0syMFZldG1zdmFvNnk1TktNVEtwR3pRYnI5QW5zK1hWRXNtVGJNNWxRMTFtZ1IyN3dKMFJxYmxNYWZJTkZwTklSQmFxS1lwSFZ1YU90V21GSEhXb3hLK0xsajFuRytuT2Z4T3A1UEcycXRWV2MyenJtV0pIQXVSZUViNVpUejNMUXhrWkFhN3dSajBsUXNhTG1JblgxcFNhWGNVa2VWTDJPVkUyK0gxeUVMVWtmc3JUUnZIWVZha3ZVRlowWWhqSTZSMGNzRmdFVTVveXphekRnalJ2dU1naG5kSVh2SmgrdEVKOFE3YmNXU1Nsa3BsREloWGVKUmhwbzBVaGRJQUZWMVpXcVpVSCtxdGsrdFY3YXFvSXFFRUt6TnRBRGZ5dkIxR3E5U2lGL3V1RG1WekVSSlpYUXRvMGhKdUtGYnNCa3BZc25KNFNneElJMWV1VlpWb3VEd28vYkI2MHhMRTR3bzFzdVdBWXJXb3VueFFjbUNtSXZoWk5CTFNsTWZ5WlFJL2E0cThvRkNHYTBzRGxTNTl6VVRFcExlQUlkdENMWnlHUnplQm95MVk4K2grWUJNTk4xcTVoaVJEekk2Z0o5YVNpaWRaSXQ2Z1FHc01HRjJPVDZGT2xRNWpGOWtlcjBqdXhpMU55QTBkS3Z4RloreVJVY29jSnRuVzZOMjVIMk92bytuSmtUTHlIbkRTU3YxbitvVE1uSjhCOFdIVkN2b1FzZXN3U0VKM1YxVWRDcEljelY2ZENqWWpFeE1qUXI0Z29yRlBLdUFPUlQ4ZTA3RUxOT1g4ZEZqR1hrMXlWTTBuakdaMFVjdGhrSm1LZDVqMWdQR2o4a0oyNnlEaW9SekdUUzF6MVdRRTcwQUg4WW0vTXFIRFZNTU1vYzVOMGs4V01xa2xMbGlJcWlKWW9tQWMxaHUxbXZ2clhMTXNXSTFCWFlPTDh0N3pJSFB4eU9kNm53SGo2QnNCc2ZVR3FWWlcxbHhxOUd3Um1jS0lmR3BncjFCdEUwSTNSRlNOUkhONFFQbG9oRFNlL0JuUm5RbGUyZDA5UTVkM3BRRHo2cmltZ01iWkZiYXVteFJKb3BSR1dPcE9KOGlPTmZydm9ZanZBZWVNTXZ5OVE1ZFFnMFowOFBvTWl1bU9ZMlIwZ29uZ1NCcVNDQ0lvZ1ZHT1VscGxCWGx4VXlDYnhPRFZFMStELzIrZ0thenYwbktRRmNERWk2SXByaFVJOXEvNjA5a1lBV05xYTJVMERpdEdaTXNaUnpYbyt6cVBmWnQzTHJZSlVIRk0yck9Ma1ZCR05WVmNFTzBpdEFORUVZSVorM01CbTZzclRVVTBSTCtGRWlQV3ViaktNZnpIUzdrcUR6aXNXaWxVQVhsY3BhTTZ5V2o1a1g3SG5pbmN2Ym9MV29oYXdpREN4N2lrNHBma25zZUsyOXd4VGlNUy9ZV0FvS1RhNlJKb3l0aVJOVlJNU1JUWjVCYVRaaGtIYmdMRFJwandjVmYvMllkdGpINGYzaVVTV1lJTnoyTGdzT1ptQ3RZRzRQSlR1UG9SdldKcWtWRWdmWUxBS1hnUHdSQjdvcUdkbklldll3WjltcUZQWCtSRTczSlFoVmxJSW1ZVFlNcEs1UVJjbzBPWTRCbXI0cDhqUzNwTGtIaVRJVE10QVRLQW5VYVpLcWxwVFNUOEhsNnpCVFlCSlhXWHFjTUZrRGlROUxPa1ZVeFZlVmpRSzV0Rit5TTNLRWRVQlVEZ2tEL2hrWUovTDRpL25pVCtmcFFXYWkrYUlLNGtXK29sa1BKeFRrRitrTTlVMDhFZUQzcTRpSFRNQmVHUUNvSjV4ZHdtTFdVVnN5bklhb09KVVFWT2dzSFR6bEhlSUdDV0lTN1V3RW4reUpwVFVSWFh3OC9BRU9nZXNnaEpWa0FiNmZyZUh5WUMrdXpBMTVGQkI2K0Fid0N1NU5qRGcweUFocEpIdjVIWmNpZ3F1SnFjS2dRU0pVck9ORHkwa1h6OWFreXdTQkZKUVpvSWhqVFFOOUJkTkhBUXpSNFRDdUFocFBER0lHUmNqUTFRd25ZUVlCaEFnUGM0QXA0bmg3a2pER0JQU3JDY0dSbzVJd3FxQWdjQWtOck5pQjg1V3R6aEJtRTBKaG1JNEpzMmlJUDBNM0ZBRHdtdWpXRmZGZU9hUE91dkNWMTVVeGRpS1BxclFjNnFFZzhvYmlZZHNXUXFPQ1l3SndRYlY1STZLdHNnbFFXOFVZMVNJblRTUWl1RUFVT3NCWUZLWERvSEJ3M3drZUNLeHRFSGh6ZEtrZ1V6UnJSbHd2YWVYbzVuS2x1a0ZBQUthMHpXTkxKb0dsS2daRnJ0ZFRRbE1BSmVxQUdjR1hHVVVBVXNHb2FnbHB6NzFySXhuOFdyL3N5WE9CSTZKUE1pL2tIK1BYeitiUkQ2YXRjNW9VeWxRbndabnFQQzR0YTJaVU9GempFWGFGWkR2UjZ2bDBYVjcrUGU3T2I5SGRmMkZXNjBtKzg5U0t2NjBiN3NKdlUwNE5KRGdLRTlUUGo5bnA3ZkhuWlhjL253N3crVVkvdnltMStMZWVmRmplNHQzR3ZkcFBWVHc5MlpUek5uMy85bUduSE1sM0hCanQ5bGJkVEI3MXQrWXMzZGdYNU9jaDNYdnhVeTNIZHdHeFI0WHkzNjNpWWQ0ZXh6T3V6c0xlN2Fia1Z2RXpGNytDNTIvb0FJWm5IOHR2N3hqeVNoa1djLzVjbngycjVadTRZKzdTYnduMFZmbUNRYVZxZnVMaDNieC93OUhxNW51MEs1ZnRIMjVQV3htMzFhVnM0b3NNanl1M1ZFOSttV2VhdnkwRHZ3M0JaOHVIMVUyQ24rYkNXVi9VS212dnFoVTV5K0wzUDV2bnd2ZGl1NDNUaGV3bjMvaTI2WmYwcGsrOGUzdFlyTDJKd3BxZCtXNGNSdlo2WEN4bmVOL2ZnanJmNWZzNmxJeDlydTZXS3YzeHlUOEFPWEg0Y1QrMjhOUDF2SFd1Q1JoN1Eyb3VNWU1zdGxKbDdOaDZSNTIzNXh3T3VESTgrd0pIc280Qkl6LzN1Kyt0K3ZuN2J4cTN2ei9jdmZ2cjJRRUpHKzk3TDhqY3NiaHN2MWQ2SUFZUnpxRSsvbWNCOU5rQUNZRVZjRGlZV2lob0tpYXNGRmhKSTBRaGtLc0Rtd21lNzFEV3Z3ajQ0YllwRXBZemNSM2ZvOC83OEM0Zjd0RmY1SW9jL0g4YjVPdS9YSldUcTl0UCtQSDNhNFRJSE9YTnFQODIwdjl6S25lNlZnVG5BbFp1YWRqbkJpdVlDazFrTGRGWkRKbExvMFZWVG9kaTRXVXFBUHdmNU50eXlZYytlaU9iM3RzYVZWek1rNVhscmplc1FyZ0xkRVVKWkRBNkNLeDlrMEZyam9KRU5yb0JoS3pSRUxLTGlFVll1V0RZbENvQ1U0djl4YThUclJYeCszdHJBN3pyWUR5aXFnaGtBbk04Qk4xRUVBNitKdTVUR3RReloxaEU2QXRzSW40YnJLZTZGTVBxNEhyYWx1aXZKNHlwMmtWTy9RbzkzOXUvOU94MmxJaW9lWnhpemRUUXd1VDNpZjd6KzlWLy9YS2RJKy8xS25BdUZmSnJvOG5uMUNLb1ArZkxremlGNGQxMjR2UEtGTUNuVG5ib1dTYVB4Q2h2NDRIR3pSTmNiY3JoN2p3RVR1Z1d5Tk9qV3NmMmljK20vdWZyZUMzais3YWx4aFJrMzR0cGdlYVgwWHp0bHFMMXEvZG9iREZReTJnU1pGSThrcVFZZkQyOFUreStJTWl4QXR6cnJyMFdPM2JIMnJiQWx3M2JNVU00bGROZjVnUTVyNm9ZMWVtbTNtUmF5c0k4MERmLytlaDIySXcvejhmelNlZUE2M2FUYmRaUmlYbm5uNy9qeGh4Lys5bUVodmcvR2Yvakw3ZE9IUHNnTDNjaTFHNEdCbUlFaW5kVWFOdW9RZmVZNytRd2Q2OTJUYm9ySEt0TnduZ2Erd1RNZDhYTi9mYmc5UWZ6bkQvOEZlL0h6N3FzVUFBQT0iCiAgICB9LAogICAgImNoYW5nZV9ndWFyZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJiM2VlMmI4OWRlMTRlMjA0ZWZlZGQwMTZkMzkwMGI2ZTMxZmNjOWYwZWEwZjMxMjVkM2E0Nzk0ZDkzOGNhMjAxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDMxNTMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNlZYMzAvak9CQis3MS9oNHlWQktxVk5mOElKNlhaaFY5cUhSYXM3amhlRUtzZWV0QWJIdG13SFVhMzQzMitjT0cxcEM4ZmQ5aVdPTXg1L005L01aL2ZvNk9oUG9QeEVLN2tpOEV5WkoxZGdwRjZWb0R5aGloUEtTK0djMElya3VsS2NXZ0h1ZDZJMEtTdFBmWmlubFY5cUsveXFkM1IwMUJHbDBkWVRwczJxSFMrcFcwcVJ0NjhQVHF0TzUvT252NzZRQzVJVTJpN2dRZmVZcnFRdTg1N1RURkI1R2w5UGhVS0RFdmdKQnlZQ2pEL2NrbWJqeWZsME1tVER5YWlmc1ZrT1U4WkdiSkR6QVowTUp0a1FuMFZ4TmhoTStEakxSb1BaZERyS3h2bG9US2Y5d1l5eC9tdzJwRW5uOHRQMTFiZXJUemUvQktNWWoyZXpZblEyeVFkRk5wbnkvcFJ4ZGxhTXMvNE1Ka1ZXNFBiRmRKUlBoMmNzRzU1bG83dy9uUFl6OURJWTBqRk9KWjFPaDBOQk9CaFFIQlJielkzVkQ4QkNhbE9tVlNFV0pUVmRZcDdZOFhtSDRFOFVaUE9odHdDZkpvOUM4ZVNZL0lhQlhOWmZ2bE9URUczSmpwMG9BMnU1QkRRV0RsbjA1TVpXVUx0dGY5dXI3cElTUE9YVTArVCtMbEcwQkdjb2crUyszbW92S2NsL2NQU1dqeE5iS1M5S09KbXdMRVBxWnJ3L0h1dzVkaGpOVG15MTh5NzUrWEpjSitKbkVoMzFRcjBsTDI5Q2ExYm5RbEc3dWdvK2ptT2V3ODlTNFlEY1VsbkJGMnUxVFpOS3diTkJlb0NUZFRaSjNDbzZKUUtKOU5nUXlmR2FNS1J2ajZvZllKMXdIbTF2dGF4S3VKUlVsSHVoNHNwZnBlR2dpemNKcUkwT3VHandPK3o2eWpXSmJtWU05amZFa0Q0SGpkaGJIT3BzNHdDenQ3MzhxWTc5T2lENmNPWnJLU0kvYmk4SnE1elh2TTEwelA4Rk9kUkQyeVk5bzAwc21lM3B1NFJScFpWZ1ZNN0R4M25UNVppcWkxYkZlczFVR3FxcXg2dlN1SFNOZWF2Y20weDNpVVBGbXovQ3lsMkVSc04zTU5SU3I2MjdTSk11NWlFNXg3QjcyUGlhUTRxakpUeHpzUURuMHdhWUJWOVpoZVc4ZHA2Y3g0MXdNV1lWWDdlaURUTFJ6TThiWHM1YlVsNmkwckFsc01mNVdtOVF6bmRrSm9Da0V2aEdiajRrVG9IL1p1RjdKTzUwQ2haSFlMRnRtTk5JSjRLa2FnSFlLQkgwMXJaUHdWdkVWbytSbTNEYTlEaUFDWU5vc1RGb3lGNFg3clZXOFN0V1BrRnVpRkFFa1lIVGxXVndHN29TbXdpenVBQUZ0ajdrd2h1elVJOXZFRDg2SzAyWUxLbWlDUFNyQU1sZHNsVy85YzdiWFZlandOM2VCUEJZNVJpaTdJV25WZURCOVlRK2xkVDVFMnFNRk5palRkYXFEU2ErUHF4M2xsbDRhclRnWFVoMUExS0YvVmw3Yk52NkFOSllocldMVjRYRUttdHgrelErOTR0bnUySWFtdytXU21OQnBIZ0M4dmUzcTQxb3gvajNpcVFCRkM0c0hrVWliUWM3a05ZaXNsczIwYXFWQTA4RnN1L1FyRjF4MTJnWDZxZUgwa2pxSVl6YnVjMlM1TDZOWFVMZEpuRytqbnNRNDRoemQvMS9rZVBrZ0wwb3NlYWFCZUVhOVZIUlJEbVE2R1RqYmZlZ2VtT2JDN0srS2gwZ3RVMXpIVjI3Mlh1UU5qZktTT0FPclRtc05LcTdYd0txSng2dU5ReGloRm9UN1MxVkx0d2w1OWkwbGZRcFBBcy9Ed3JhSmJyeXB2SnQrVzNkT01PN3Q2dWRkc0RnYWlXWG1uS1h4c1d4VGhnWVQ5SU45QzY1V1psbXVIMVF0UUpOcFp6WEplam1oanFIeXZ1VlNvZVFVRnBvdUlPY0IzcHhWOEUzRVpBbWduZy93Y3l1UXducDdMZW5KNWFDUXMxUkRCcDE2eEl1R0RZU2ZtNGtydW5rSFFTdkxubi9FN0ZkL3owd0Znb3BGc3VBdWFnYzhBajZsVFQ4QTFNSkV3bFJEQUFBIgogICAgfSwKICAgICJjaGVja19pbnN0YWxsZWQucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiYTM0YTUxYmU5YzlmMmIxNmEwNmE4ODE3M2I1YzZjNDkyYzk5NTdmZTAyMWNmNDEyYTg2YTE3Mzc3MzA2NDBhZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxOTEyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTRWVlMyL2pOaEMrKzFlb0owcGVXcHNOMnFEUWdvZHQwQjdUb3ZVdE1BUmFHc1ZjU3lSTFVrN2N3UDk5WjZpSHRVSGFYZ1EraHNPWjcwR3B6aG9Ya3NyWU0vL3FqZVpCZGJCcW5PbVNXZ2FnV2FLR21Ha2VRLzR4ZWd4VHVqR3VnN3Fzb1ZKZUdaMWIwNnJxUEIzN0k4N3VXd1U2OFB2Zkg3Wi9mcm5mY3Qvdk94VUNIVk5QNE1QS0tpMllQOGpibis0SzlvSHQyZnJ1eDVXRHY4VXJVelVybU9ya0UyeHM3Nnp4c0duVVMrZ2RNTTRDYUtrREJneUR3cll5VUVHNGhYZDhoUXIzeGhUK3JNTUJXNmpvMk5rQ0xZRTdxZW8vODF3NGMrQk43ekJzeXRSQlo0cEZEVU15V3FWcnp6NUFSeVdQeUd3bVpQN25HbGtGQ2lyd3ZpZUZPUnpHVjBZSGVLRWVMcGRWMVVydms2MlQyaE8weFNxcG9Va1FwQjRSVEQyMERWOUw5K1Q1ZW4xOHBrR0dJWWsyejRJb3krbVRacDhUSDJSblJTdTdmUzJUVUV5ODVrUW5EZUorR21hZTh6NVVXYTY4b1VKbFNETk11aGV2NnpXcEpxOEJMQTNTMTJPQnBUd2Vkd25HSlVjVVJwSk8vVjdKbU50Y3dIcHRNN3RrdEI0YkdwVkJMTTJ5QUpKRlREYXE1MjNzVzEybEdKQmRzR0RWSkFSUVBpcm9COEcrL1BMWHJ3OWJWdXdmMmJqSWRtSVpnNmRxOFZZN1N6S3Bhb2Z0bENkd2NhbVk5VDAzUWFjSkZrcXo0d3lhSmtxU3liWTF6NWdEQWEwT1dPNWdtbXNtZHZxMGxIQk1NYzEyUzBuR25YbUtXM3VsYTZXZnNESE9XdFZFYmttNVIxd240WVVXRTJzVHlqMGdVYmcxOEkweTJYeEM5T0hGS2t4WHlyRFkrWEIzazZGQ3JUTW5JblN3d2xpeWxkVVJ2WW1wcjQ1NHY1dnZEOHljb2ZYNXFIbDNMcjJXMWgvTXUvUlhBLzF3a20wdmczRjBad3N2RzltSHc4ZnI3Uk5GNWRENjNFVjJJU1U0d0RDZDNON2M4SHFGMkZkSEx4NTNLeEx0U1B3ZzNWRWZuRVdweW5xUFplTVF5TlVWZEJCbDNlc2pKa1l4UEtCUitHK3k5Y0J2K09PT3YxN0lmRUhNYmtYbmhVbFpZbFpZSlpidlk4b09JVmhmZkp5YXlaWEdYbEU2ZkxEclVvaEd0MmZHUnpERkZmd1JkQkV4L3g1clFWQ0hxU0lSME1sR1ZIa0VJVHBsUlQ3NUZ4U3lBbDhmd0JmZDVBWmZCTk9CRUtPTVA1dWM5STY2S2F2ZU9lcGs4ZUpnVmtCYzNqcyt0amYvTzFnaWRZMFJNNFAwVDBxVVR3aGVSQ3V5bFV0clFkY3B5aVVkYThVN3JGTjRMY1huZGQ5Wm42SnpOVkxmdHVpdStQY294K0R5SkozQ1Y4bXpvZ1dkRGttejJUZ2xQWE9vZitvTTBERzMrR1RWSjN6K1VKekdsWjFzeHgrZWc2YjNGUEV6djlKU1JscUtyZXNCWFNhRE91RzlhQnRWNDN0ZVJJRmNzTnB2dldpbSszZ0hBQUE9IgogICAgfSwKICAgICJmcmVzaC1zY2FuLWNvbnRyYWN0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA5NzMzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcxYVM0L2p4aEcrNzY4UTVwQ1R4ZW4zWXdNalJPQVlTQTZHRHdaOENBS2huelAwVXFSQ1VydXJOZnpmVXkyS0VzV1owWGgzeUFDenMyRHJxNnFQVmZWVk42bjUvZDFxZFZkc3pVTzRlNys2aTNYekVINnJNMWZ2eTNwcnM3WjJoU252VDVmM1JRV0FiZkJySDF6UkZuV1Z0NCtHY1BFK2NxNVVaRnBZSEltUUhrbm5uWTZjSUJWRUpKRXdIQ1d6a21wSHFDYk1JaW9SQVMrWUdnNUxkOStkYVd4Y1hjWGlZVlA0Uk9qa1h4QmlnM00wV0srbHMwSllFYVNqSWxKdW82YllTUERsTlJQTUNxNDR4b1E2N0p4eVdpc3Z1ZTM5K3lKRzhOdUM0My9EOWVyc25qS2xtTEUyYUtJRWpTNW9Tb09IQU5xaGdCZ1hFQ0dpNEpYdzNEbmtvL1ZSUis4TUk4SUY2bzd1Uis3Z0F4dUlFMEViaHdpaEVuUEtPZUZVd2orRkVVSk1DVWNzQS9iT0V1SWlsOWdLbzdqQnhQdUp1d0F4dlVIUlJtRTU4NVRSZ0NDaFhIZ2xCZWZVR2k0OVpGVjRpVFhjUHJQVVlCZVlqd2dMS3NURUhVTmFHWThvQlVJRTdsWVRvNHgySEN0d3BnVWkzRE9Kc0FwSUtvZWdvTkpyNTdsSWljRXhob203cUMwREJ3d1RneHlTaGlrZG1JaVdld3RGMXg1NXA1aG53VkVBcGFRWXF6bkZrYkdBdkk1NDRrNHd4VGcyeUhzREpmR0lDWVVESlpaRCthR3B1S2VHUldTOFlsRXFHalJQQlNiV0NTMElndXBNU3lFd284aGdqS2tXV2pKcXRRNVFFRXRRUklSNnptQlJVK3VpQnM0YXlxeFR6U0MrZGN4d1BYSG5vdU1hUEVubWhZd0NXY1l3ZGdSUzdYemdxVXNsSmlGQW8wdmhQTklNR3lJNWhudEJSbGhFSnU0STVGTmpwYUFIdERPYXg2QnRBS3FjUjRtTUJWR0pvQmd3cHRSeUFpYlVRKzZpcFZaeUV3eWR1TU9ZS3d6WmdwNjFQdERBb1JnRXcwMVJnZ2hrbnhMb0ZTQUtYUjZ4REFwQi8wQXFpZEthSWVtbmpZSkEwWXdnTEduU012d0dPVVB4SWxRSEdpaFloWWl4Z25rYzRDNGp3OXBFakswaEZCR0xlREIzNE8wL1Q0WGQxSFVYa3daLzc2TjFoOTF4OXBUbUVKcDI0UEJFcTdPcmRYYTl6cTdZMlRVN3UycG4xKzNzeXAxZHU3T3JkM2I5enF0ZzBERDgvbU9rNDdiZU55NXNTbU5ET2RJeEhCMnllaGNxa0hsbmlncTBuQjN4bVRWdHlIenhFTnB1dEtWTFFXRURaNGc0WldFdmQ4eGg2N0VSV0VCeG9acVFXZ3dDSnFBYkpTVWpITlJuVW8rRHBKV2laaGdVTDRadHdzZmpHU1hGaEc2M0ZrUkNJVElvS1hCUUpDUVFGQUFrdUNZZUpNTlZ2T3dleDNQUCtSalVoREtrbTJoZDNjK3FmLzcwNHcvclgzOWV3MlRRNjE4UXYvOVNGbmF0T05KNDNlQVh2UFI1eXhMUjhMbkwrandrYjQ1ekZnUkp3b21VSVdjTkJqMExiV0NXcVNnOGNxQi9BdjJna0lVREZSeG9CQStFd0FuS1lnS0Z2eDF2VjVlRk80ekNhWmlWMkFZRzV5aXN0Y2NzZ0RDaElUMlBpbXNPSXVjV09XY0JwaEF5TXFhT08vWXZUd2N2Y25mdWgzcFUvaC9OdGlnUHliOHBkMUNIZ2RSUFpudE1HYzBJeS9ERnRxZytocXFybThONXdwL25mR21xaC9YdXcwTjdhZWpkb1h1c3E3UjRXZnY1OEs5ZmY3bGNrZ3p6YkRTWUFQdCtkOWdWOTd2RGI1KzYvUFJ4MzlIZmZWTkFGMk54RmUvWmNBbVY5eCsrS1ZoejJIWDFRMk4yajRmTEtrY1plajdxQ0o2ZlVHOEovK1NvZi9rSVpTUkR6MUI0K25UUUk5OUNZM2R3TzlPMG9ia3MwV2VEbjRFNWZXUElUNmJvbXRDMlZ4RXo4a3pNQVpuM2dHZUQxdTBrNUpVNjREbzdjV2oybFErN0VSQm12a0FhNFF3aGpJaStqbTkySCs1N1QvY1RCL25FN20rbWNZL2ZWM1g2N3krK2FMdW0vdjZpeFc4ZzNGK3YwMVNISTF1OTc4YUpraG01RE1DblhKL1k1b05KVC9PekVodkJscUc1OXFZemIrRjZkTEE0NFEvaE1HNkNUS3diOUJySFpKUDMwS1ZvbmJiQWNmNlMwejlCN21TWm53M21wN2o3c083cXVweEk5bmJtQnB0OGdNNU95KzdiZzYwL1h4WndSbVdHMWcxOXVlbE9OdmtGdWhTdHRTMnE5dkZieVBXV1MxSjBadTFDMHhXeGNLWUwwNWtvOE0yMm14am5JNXVsaWE0dHpPQXl2SW52eWNlaXRCKzgzWTRyVDI1S0phSHpFMmgyS2pDNjlsMVJ0bXM0UUxkalRpS2o2NGE5U09yS0xoL2c4OU5yTEYrbkZ4ZGphdEQwNUdWaWcwWGVBNWVoTk0wV0liYzNzN05SZnNiT1RnemNROFN2bU1HOXdYSURHUHpiTCtTcWNwbGFOK0lXSVRESUI5d1NoRnk5M1lTbUdaTmlNbU92cE9sa2xaL0JpMUE3UGtMUWNRRjV5c050WnIxUlBtQ1hJSGIxMkpVQzNXejEzaUFmY0VzUUtxcXVuQXlFbTBsSytINGNMSktmeXUzaHlhZjlkRmtVbWRqc2pqc0l4NjlKY0xET3AwYUxVRzNMOGVFV3BRTWh1Y211TGZNQnR3U2huYWxDK1kyWjYyMy9MM2xyMi9Jcmhaa3NGbFZsVnpRN2QzVit6UGdydWp5YTVBTnlNVkpQTnV3L3lXell0cGVqdDk4WGZ0ei9qS1JqeTAxbXlTUS9JNWNnOVJGT24vWDQ5UTVOZy9PbUtvOG0rWUNjbmRSMjMxN04xK09qN2N1RUVqd2ZVSXVRV1IvUG1sOUpxVGRhanRocGNLKzcwR3pUdTdmanE0cHZtR1RQK2xsK3FqWEIrUEpxUlVFLzNaVERZSklQeU5sSnRTN045TW53MExjNG5TenlBVGcvcGYrV1JSY21KMzRZVWZUMnFYRmtscC9SODVOcnk0MHJpMUIxWC9VbTRXSzI1R3VFN3N2MUs3L1V6ZTVXem5xRGZNRE5UdWp6bDBrWllYZE9mZnd5bzVORlBnQm5wNVMrdUxydTlwdUg2d1RQQjlTclpDNS9BREI4MmJNQnRkUlY0VXk1dVh3aGhhUG5ObHJpcFVQTVNJcUZJWW9hYjROQmtiT0k0TWR4NDZ3bFdGbU1BMXdKS1cwTVNqb20rcGNFZDd1OUxZdjJNZmhOM0pkbEUzWjEwNDJDa0JpRkNsSndxNTNnUkJPQnNlZEdDdzNsTnJET0JKVVlJRDVFRjd4eDNCTW5CV1VJYWJnTW95RE9kRVZkYmJhbUttSm94MEdFTmNSUmhpM1R3bGdacFk3YThlZ3BOUnB1Q1RzU2xVOWZSQ0tzRExNc0NPa1ozSTlKTU92NmwveDM1NjhaLy9IWnVHNVZiTGY3enRneXJNNjN1RXFaTHo2R1ZlRWhyMFYzV0puS3I4NVovdXNxRnBVdnFvZDJCUnRSdDdKaDVSNkQrNUFNcS9CcFZWZXIySVQyY2ZYRDM3TzdkMys4K3gvTkpHK2NCU1lBQUE9PSIKICAgIH0sCiAgICAiZnJlc2gtc2Nhbi1yZWNlaXB0LXRlbXBsYXRlLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiOTJiYmY4YTg5MWM3ZWY3OGRmNDg0MzA5MDEyMTlkOGQwNzA3M2NiYTc0MTEyYTMwN2E2ZDhiZGVjNTA5ZThkZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA1NDksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMjJSd1k3Y0lBeUc3L01VS09kMkp4QWdzS2MrUk8rUk1XWkxSY0lza0ZGWFZkKzlKTE90VmxXUC9QN3g5OXYrZVdGc2lDdTgwUERNaHBETEMzM1BUNWozbEZmM1ZETkdTTmYzNXpWdTNiQ1MvK3dKWTQxNSsxSy9nVkQ2T1NobFRKQldPeDZFbnYwNG8wY2JsQmdONlNDQ2tEek0wczJUUlRGWklkMDR6YVBvWGZnRXFrdkRweU1HbEJZRFlGdHEzZ3ZTVXVoK1VvNWsxa25uaFBKVHgxa0RwT1JFTXhrd01PR2tyUENkckV6QVI2ZUtzRzFVam8vd3VrTWx2TFlTNzI5LzhtcmhPR2xGeG1qclVEcUpHa0FHRUU1d1pWVzM0SXdpNkpFYnNONkMxeHdobUptYkdiblY5a0VKZTBvTHBGVHBUaVcydCtYQWRtWXJPNTJHTFM5MXY5MEsxZmN4L2xib1Iyd0xabjlzZmV0dFRoSHpla3ZVeUMvUVB1cmVMU3MxOE5EZ0gva3h6a2Z4ekZUb2xrdjdUM1hMN2J6elYrb2thTVJpWlYxamZlazdKTmIzN1dsRFlya3c2TG56SGRKdytYWDVEVlVOYlhBbEFnQUEiCiAgICB9LAogICAgImZyZXNoLXNjYW4tcmVwb3J0LWZpeHR1cmUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzMDYwNzA0M2E0Y2E0NGU0MjAyNGI2MzY1OWFlMTA5OTNjMTRjN2EwNGU3YzU2ODUyNTVjY2FmZTRkM2ZiNTVjIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDExOTQ0LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWYTIyN2pSaEo5OTFjTTlMQlBJYWZ2N0I0Z1dBWVpCUEFpbXgwa2srUmhzVEQ2YW5OTmlWcVN5b3dtbUgvZmFsNWtXVnB6c2hicFBQaEdTZWZVNmFvNlhVMzY5NnRYcjFZLzJUdS8xci80dWltcXplck5LL0pWdlBwTjNSWkIyL2I5ZnV2aDRzcFdtMVlYRzEvZkZHdDk2MWZkbS83dVcrMTBxK0VOdjhQZmNPVTZ2bmo5Tm42aXVkT0VpemVDRU9PdHBkNDRsVmtqaEJFK3MxUUV5azFRRk92TWVlc1VFOHdJTGpuR2hGcHNyYlJLU1pkeDB6RUI4dHNpaE91M0RTRC9zN3Z3NnNCQW1aUk1HK01Wa1lJRzZ4V2wzZ0dIc3NnanhnV1FCT1NkRkk1Ymkxd3dMcWpnckdaRVdFL3R3SEFFQ0M4WlQ2endTbHRFQ00wd3A1d1RUalA0a2hnaHhLU3d4RENRWUEwaE52QU1HNkVsMTVnNGR3Ym9nZGRwRkV3UWhqTkhHZldJTU15Rms1bmduQnJOTTBjVkVTN0RDbGFCR2FxeDljd0ZoQVVWNGd5UUlTVzFRNVJDVUFRMEs2S2xWcFpqQ1hCS0lNSWR5eENXSG1YU0lvTkQ1cFIxWE1UbHdTSDRNOENnREFNSWhvbEdGbVdhU2VXWkNJWTd3M0JRRGprcm1XUGVVbmhUWEJwdEZLYzRNT2FSVXdHZkFRb21HY2NhT2FjaE9RNHhJYkdueEhDb2hReENjVlN6Z0xTVExHU1Nlc1ZqdG9teFFnbUNJRS9uU1JHWVVhUXh4bFFKbFRGcWxQS1FHa05RUUlRNnp1Q2lvc1lHQlhFclNMbUsyWU1JakdXYXF6TkFHeXhYZ0pVeEo3SWdrR0VNWTB0ZzBhM3pQSlp0aG9uM0pxT1pzQTRwaGpYSk9BWTlTQXVEeUJrZ2daVlZXRXFvQ0dXMTRzRXI0eUZjemtPR3RPRmNDaThaUkUycDRRUStRaDJzWVREVVpGeDdUYzhBTWVZU3c2cEJGUnZucWVlUUZvSkJHaVdJUUI0b2djcUJZS0h1QTg2OFJGQk5zS1JFS3NWUTVzN0xCa2xJR0VFNG84NnFBTjg1Z2NBZ2ZScEJPWGtqRWRGR01JYzlhQTBNS3gwd05wcFFSQXppWHE4NnZIOE5IZm1Qbnc1OUQzOTlwOWRGdVkrTnI4c3RHTVVEK1E5NjNWa0lUUWxMY1kveCthc2p2L2kyMm9UaTloaXNycW8yTkVkWDRGbzdPRkdwOStCVkIzaDR4WUUxM0JUdTJCc1c4WWRGUEdJUm4xakVLeGJ4aTBVOFl4SGZXTVE3RnZHUFJUeGtmaC9wdkdUNDdmUEJMZXlwR2NDMTc3WHg1V003Z0t0VmZadFdXNzg1akNaTjJzMG1xZEdOVDExeDY1djJhQkRKQklXeGd5RmlwWUVKeERLTGpjTmFZQUZWQUdtSHRjZmdBQVFhVG1ZWkl4eGFWOGZHQUUrUWt1ckhLL0VrZWUxL0s0WkphZ1ZOWWd6MEZ3VithRUxQb2FGaGphRnhJQlN1aUlOdTR6S2NGbTVsQzEybXR0cVYxZG9BWU9tam9NWld2UUZlLy9EZDIrVFhkd2xZakVyZUkvNzZVMW1ZUkhLa2NGTGpTYXltMnRYV3B6Rm8vN0ZOKzVYcHhqdk9tUmNrOWwyZ0RGbWpNZGlDVUJyc1VRYmhrQVViSVZBK0Voa2t3VDI1NEo2UURCS0tDZFRKSDJIZFZtVmg5MGVrQ2t3WUc4OWdLc1JLT2N3OGREZFVzdU5CY3NYQkxiaEIxaHA0bTBSSVp5R1dhVmY0UEk2UjVLR01QbDhkLzR6ZnU0SmEvZWliWGRrK2JBeUhEZWJiVWpmeDhxcHFrdTM5N2NOMnNob0gzdE5kN0oyMjk1RGZ4NXZNbzNvYzk3bDB1Mi92cWsxUzd6Yk9iNXZIUy9Nd1o2K2dBUVZTQ0tjSVlVUk9qT2JhK1ExTTRJV3ZUOG8raHZMemo5OUhBQWo4amQ3ZXYrNURmWDNDbTUvZy8xWFg5dTdyVFJWLy9NVVZUVnRYWHg5dnlZOVg4cWdsbjVEWnN5YXgyV0JMcm5idGswSnBtcVhrckRTZm9mQ01NaCtoZTNFZnBiZ1JiQkZ4U1hmT2VYbUZIZS9TTXUvOWZxSk1VNUhVYUM1bGtTcnZJUmNTTS9qbFJLNGl4WXlTQnNMOEFEeTdzTzE5MGxaVjJVeG9Rak5sYWFUS1I4aTV4Wmhkc3pmVnh5ZWw0SlJtS1VwcWVua3pEVlQ1QStSQ1loSlRiSnE3RjVUVUV5NG96T3JFK25nTHFMQzY5Vi9Zd3dTZXBaMU9PUE1qN0lYbEpRYTJ6TkwvR1NvSDZpWEYzanF6bnFoTk1vdHhSSko4QUp0YkFPd1p1N1lvbXdUbTNHWkNpVWhwVXJPTHBUeWl5MGZZMlVYVmhpZnhzRE1oQ0ZxYlhDNW5KTXA3d0VXRWZDRXpoTXd6SGgyNDhnUG0zSElBSFFpWDMybDduc1cyV1lBM244aFViYVV5cWNVY01vQW5IL0VXa0dHcjlZMnY2d2twTEV2WlRDa1p5UElENkJLQzZ2MjJyZWhFaWZHNGx2UG82Ym55RVhNQk9TRVVrMUptYWZ5ZUp4L3hGcEJSYk5weTJvcG5TVWlrNlkxNGlWeHM3SzV1ZlBQaFNTRWlGVGZiYnRiZ2VDNGJHMG56VS9BbEJEYmx4RUVWeGVNWG1VVlRVK1lqM2dJeXRucmp5NWZOVWsvNUVqbHFtdkpsekMwU0xlbHNiVkZ2N2RTcEx1VXplVnZIbEkrSVMwbjUwcmc1czU1eDZGeE0xRzVYdUFrM1lDUU83clBvaVV6NUFYRUJLYi9Ca2JCNlVndUNOU1F6T1Z2SGxJK0ljMHRaNzVxcFhiUzc4WGU1ak1pU2oyaExTRWk2QStETENPbTVGcE16N001SjYrdDFzUWxWZDIvNTVYYWUvMG0vK0M1VWUrM0s0OGMzcHpvbDFQOHM1akF5NVNQaTNGSWFHemZ1YWR0V2N5Z1ppUElSY0hZaC95bUwxay9mS1lDdGdzNXpsanRpeXcrb3MwdHF5aHRiRmhEY1M5ejdmV0JiOE1adisybnlRVmZzV1R0SGZucWVmTVNiVzhiSFQ5T0ZCak5qN05iTGRReEUrUWc0dDVENGJIK3k5MmM1WGtlV2ZFVDd2eVZjSGY4dnh5RG8vRWw3cVRlM1R6eHJIeDVjdzR2UGVkNytidiszWDk5UHpJR1lwODljb2UxK1c3emU3di85b2MwSG1PYzliWmk2UlFMQUY0VVh3Zk1lNUhuQmRYZUlibXU5dmRzLzNTNG9ub1V2aWZLSUpSL1FuaFZ1bkNIcXRYZUo4N2IvUDV1bmgyWTR3RjhROGhsVDNpTStLK3p0M200MURFTDExSTNsaTRwMHdJODNsSjhYNGdkZHRMVnZwaDh5a3d0aUhBbnlIdWlQZU1sVi9PM3oxWDhCbXJ2TzRhZ3VBQUE9IgogICAgfSwKICAgICJpbnN0YWxsZWQtemxpYi1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogIjZhZjYyZjg2ZjUwYWMxODVmYWI5NDE2M2MyNGFjODE1MGVhZDY5ZTYyZjhkODI1YjBkY2UxZTc1YTVhNTdiNjgiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDkyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTMyUVRXN0NNQkNGOTV3Q1pWMlM4ZmlmVmU5UlZkVjQ3R2xUQWtHa2JFRGN2VTZncTZxMVpHdG0zdlBUWjE5WDYzWFQ3K205Tk50MUkrUHB2WHlPTFkvbllkeW5kaHE1cDZGN3RGMS9xSVo5eVp0Y3VKLzY4ZkE4ZlJCYXR4VnJReEFUWFZLQ3ptZnduRG1LUlFqRkNRb2FKZDRrcnlPamptZ1NhQTlZVTVRbVcwZk4wNHh4R2ZyMGRpVGVQV2hVcTF2Y25OUmRsWDRvVXgxZmExUGI2dTNvdU92eWpEVjkwVENVWE5XWFJYM1lsNHZ6TWdnLzVlK2lFUnZCTzFUUmVRVUZMVU9KNGpFVE9JTk1PWkRObkFpSVlyR0JvTmJrckFzbXErb0YxU3hCci9lODVqeWR1aG11N2t2OXdIWjV4ZDlrVWY5RFZwaERpbG5ZMkpLOEVNWmtGSWdRazBQcmc5Y2hRaTVXcHdCU292TGFldTJUaWVBOFc4RUhXVDF2cTl2cUcxekxML3JzQVFBQSIKICAgIH0sCiAgICAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTY2Mzc5OTRkZmRhZTQ2YTZmOWFiNDQyYzJmZjliMjU5MjEyNjUwYjM1ZWI5OGQ4OTZjNWU4MzdmMDFjZTJmOSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMTIwOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMWNXWFBiT0JKKzk2OXc4WFZER2FSNGVsL1c2eHlUMnZnb3g1bXAzYTJVQ2dSQkNURkZjRUJRaVNibC83NEFTRWs4SUluMjVwaXRaUjVpbTJnMkd0Mk5Qb0N2K1BYazlOU0FhVHBEQzR3ZWlsa09pOEk0UCtXc3hDL2tFSTBLekZZNG5rRXVIaHMyc0QzVEFxWmwzWVB3M0FIbmxqdHhIUkQ0emw4QU9BZkFVQzlsa0pNVkZpeGhOc2V4ZUMrQmFWSHh5eG5sR0hIQk1JWWNSckRBTTRaaG02YkFpR0hlZng3alBLWHJKYzc0Ykk0enpNUXNOQk1VdHF1R0pmMWF2SlduQkVHNUNLdm1CbE14WFNvbDJuRVF3MS9GcUZ4OFRuN0ZyS2hZaWIveTRteGxxWFdJd1FlU1NSbU1sN3NYNjVFbDVsQXVZY3RJc3NveXlwVlVSZU94SEdCeml1S0ovQ0VVOEdsQzZCbG5FQW51YzVPb0NVaVdVTGJFc1JsalJLUXc1MHFTM2J6blBZcXozcE5hTmpWbGIzQ0NhSm5TWlRRcEtDSXdQWVB4a2hTTlpUTXF6UHpYMDdmWHIxK2F2OTJhQUFEL0ZKVmNQR1ZHemZaeHcxOVllSW0xWWhzdGtpS0g2QmhkV1NrQXVrR0FMUURORU1TMjZRVEIxQXg5RjV0ZUhBZFJrR0FFUTd1U281YkNLSEtNbXRvWEs1Z3pYQlF2aFIra0pNUHZNYUpaTEMzaEFiQ2RydXNmOWNPVmt1b1hVbkRLMXUvSWtrZ1BzWGF2RlRnVmJrdFoyNjVMeU5IaUhZeHcyamE0Y3F0ODhsQkdtR1dZNDBKYWZML090dTg5OWhSZENEL2hlTDV1ejh2WHVXSjFKM2VLR084YmlPTmxuc3FSdHJ4OXB6M291Ti9OazFyQ3FsbFNuUmExZWtSMG1kT3Myc1BLY3ZpejhlTFlTd09VdjFOL1M3YXVuMVVUaU9Vc2Fabng5eUk2RW9RdkVKSi8zZE1IbkRWajF2WUY0WW9jQ3Fka2Nvbi9ia25iWHJDZ3hkbXFSNlFqYk8xRXFlM1pQMTc5OC9MaTl0WHM3ZnYzSDE3ZGRiUlN2N0NDYWFuZVdIQ2VGK2RuWncrb1kxQ2o5OXJqaTJjSWMzbHpmWC94OXZyVm5menQ5ZHMzUjhRUmRzMFNNaStyc0g3R2hEckpFazgrRlcwYmRTMVYvZnZZNVcyUUpad3J2c0xlYy95SmRwMjIvck1mUlA5V0xLRHRldWUrTjBWVHp3RTJDaUxzSStRZ0s0b3Q2Rm1lUFJVL2t5UzBMQzkyYmR1eEF0OTNiRGR5WE9nREswQUlpT2dGRGIxSXQyV2EzbElSZ3RaS1VjazE1YmNpYXUweVMzTlBpSnlWaVloMnkyaUVlMXREa1NTUXBDWEQ5d3ZCWTBGVEdVcW5mVDByVzcvQlhNdERoazdJRjhvR0M1RXMrZUlQdmFseXl2akdjZlFVaGFnaUtnLzQ1ZjcrZHBBZkdUbG1oTWE3WUwwTHVrM0dKVUpDRWMxbFdob3k2VEcwNUR0bTlza1JBUVprc3RiNmkrRTdjN3ZsYnl1OUJTQUFMdzd0bXYxNmxWVVRSVFNWVlBlWHQ4L2ZvQnFacklNeWZhYnNJYVdpRUh1bVhFZjNxYXpheU9qazM5ZkpCVU5hTXNGY3I5OVUxanZGUHIyaHZKU0xkUUZZNmhXeXhFdFJOS24yd1BXdXlEQ05NUHg3aVl2anN4NmQwM08wVXg3VmllZ3lTa2I0K2xKc0NmeEY3eld5TTZLZmJ4bFprUlRQOGFzQ3dYVFRkZlJ5L0Vad21NT0lwSVFUdkhkeE1hTzVOcENvMFl0Mzd3ek55TWVCZW9YeFRaYXU3eWpscjRYVXhib1F0V0RkMGgxWENvZU1sL25UOXFKbGo1dnhDWnVSWTdZa21YS2pLekdEckFrMnlvang2cXd4YktaMGJneDVmMXRQU0l2MzMxalJ0RnppSzFtaFBpRi9xZnAySjVwc0d3Nm1Da1h4N016VW5rMVVmMmZITTNKcitycGcvRllTOEdWK2VENUo4STNtYWxXK2gyY2RRTHFKQVBvOS8xd1pWNUFwcTFTSE0wWGZPbWQ1NVlXSHhSY0JWWFNCZnlxNVlSa1RmbGpzQXlRL1MrcGRlM3RZOUIyZENYUHlJOWV3S1IxTmh1ZWs0T3lJYXd3ay8xbjZydXVWZmM2N1dVVkJPSmVuZWtmSWo2N2k1RkR1YjQ2Mkttb2p6b3BkTXJoTVN5bkJhOEtLdHZQS2VsQW0raDNwUmZvWnJ0dWVwRkpyWElydGVyMEo4RGlCWmNyTjdVQ0gva2hCWlNURkcwYkxYR1ZjQURyWmRETjZxUTZOZDVMZFpMS1N1U0tGT212ckh2UUltMTBjNUtvSXJxbGkwampYN2xKOEtERGJ3MEVzUzU0NGlaSW9rY20xWDgvc1R1T3FEUFN5VXBPeDEyU1BIYlUxVDVEMm5HbDFxRFlXMFZFMnlvTTNEQ0o4MjZsMkhMZEZYdFVHQTA2bFdtbSszeHZMSTNUaGJSbi9WVEc4VENGWjZpdElKSWV1OTdYZHBxNk1hRytIemhidm41OHRjNzUrU1poK2VqRVpLYVZveGxYVlEraUtQL0lIM2h3Q0c1YW1wOWwvanFBdFEvN1VFdmNLbVdQU1ZqWElGY3oxNHRaaDRvckdrcjBkNnJxRHZhY3VacTAvMDBPMmJRVitFQVBYR3I2V2RubjBwRlVkS1ZIa1djY25kWE0xYU5WQm9EUFN0Z25YZFg1ZjlkMWdvVDFoMWhPZlZxVUt6cXBibHlURlgweFk4b1UyQ1ZXZTl5VW5sYloyRVdMYXVDL1oyN2h4SllpVzZ2Rmt5TE9QLzlVZVAxeVoxVmVJejdjVUVUM3pFKzMwZ05jN3ZlalZkMXg1R2pYcC9FaXRibjhJclpUeVRmUjdwSHo4WDlrVk9qZi9IbDcrWXZnS0RrZlJBWDU0aUh2Ykp4R2NJTWIzQm9IV2ltdmF2YVNQZTBZKzd0VmwwNVZNSnVvdzg5QWNQeUo0Zk5jRTF1OWpCbWV2STY4TzNiUEhlNUNmR0I5Ukt0S1Q2Q0VxQVk3RXlUYnhzK01semVYT2grbUJVOXRqSWJXdjA4TWVlS0x6MWUzMS9zbm1mMlZTc2VleW1JaTZkd1NvakFDVkVhQXlBbFJHZ01vSVVEa09VRWxjRVpFU0ovUWlLN0U5UHdZK2lsR1l1RFlJc0pmWWllMVlpZTlFL2pSRTlqUzBuUWhNZldBTEx0WVV1dUxSQ0ZBWkFTb2pRR1VFcUl3QWxSR2dNZ0pVeHMwNEFsUkdnTW9JVUJrQktpTkFaUVNvakFDVkVhQXlBbFJHZ01vSVVCa0JLaU5BWlFTb2pBQ1ZFYUF5QWxSR2dNb0lVUG0vQktqVTMxQ0pjWTZ6V0NUdjVzbHg3YXpMbHJOMlFDdGJ2SXE2WkZ5V0hFYXFVMmwyTzFzb3krWFcrYmREV2xqQUFWREFzL0FzWjl1SmgwQlo5SFZncTNQNVByaUU1czMvRTZ2VXpwc0R3Qzg3K0VzSUxHc2EyN0hwT25Gb09qaXd6Y2lLcDJZSUlpZkVFWTd0eU8yalBCRE1hRVpFeGFvKzl6T3JicTRsdXdBang3Tmp5NTQ2dnVzRWlRczhqSEdVV0hpSzVNY1dmTThKZ0JXaUFQckJOQUJPRE1JSUlUK01RR0xiTVBIYVNKdDhoWVk1MzhiSGJyWGQ0QS8yTjYwUWczeXYxK0orVzE5cmNjNVhIYVJLSkhSb3loT0hGRmRsbGJIdW5QRnAzaEZGVUd4R2ExUGU3ektxR2hqZGkxV3pQNG1FL2pzY0pPNEp6ckVwQlZjTHJEZ3dtS0VGWnBJaXBjTFBUQldaZFR3NzdCUmNTdWdycTdLSVlVL0RpV2RQYk9CT1FudXlvQVdmcVBNaXJMNS94U1paSnhuc1lmc1VLYlZiT2lFaUQ0aGV1WWZETWRvekNaYzM2NDlwdFRySmo0UENROGVCbmg0TzRnQkV0aHRacHVWWTBIUWNLeklqb1RzekRCSm9KM0VZUkQ3cWg0TWVVc21BNmhKTHB2TGVldTh3akg5aklwSGZ5RzVSdThCOTE4YjdMMitOMmtMcUZPSU5HUUN1cXVqRjNpeUtUZmJWZXRyMkVxdnlwOGJWWm85bXcwZmE4RW1LN0FhOVdiNkFoV0wxZDduQmpHM0Nsb0ZvbDZGcm16bGhHSGhCWXBzWVJzaDA0c1F4SVo1YVpoU0VDTHRCN0x0Z0E2T29lNTRXZXJFdWVTcUk2bGxLRW96V3FIR2JKNUdMOU1QZHV5WjA2Nm5ZcHNtODBTd2JYQ3dEODdzYSs2anFyZENMQVBMaUlMQnc0THF4RlZ0dUFNQlVQTUlod01rMEJMWm40dzRRVXpnWHIwOGNteXNhQ2dDdElrQUxrYmJiaW5VeE9pbFdxRDJwUXVCQjN2NytuYngzVnZmSlRUbUVhL0Y3RVNKRUNTZm12U2VWY3pRL3RlZWZBM0R1MlA5cXlDUVNVVm1vYTJYRmI5MkJucTZ6VmthVTRSb3lITi9UOXZiVGErWnBJZUhKR3VwdHNhNnZEZk8zNytKejM4VHY5RWhaOWh4K0dvUGZsUHdtZVM4TjNLdlNwUlZtTVZ2UFJQbW5QdVdvdkcvN01jZHREVENqV2JxZUtiaWZLT3BUVmVoc3FhcWVaaGFUSkpuaEx4WE91RGV3cStRUVNoSWZXUmlKWUlVak4wd1FFTkhFODVBRnJDa1V0Wm9iSjY3bHdBUTRBZklDeDNlZzdkdGg2QVBid1lrZlZaK01sRGdXQkZWZk1FTjVPWk9ueVE2b0RrQTIwVngwSUp1aHFlTlZRdzM0Y1FOcy9IanlINlZXVzZuWVVnQUEiCiAgICB9LAogICAgIm5hdGl2ZS1wcmVmbGlnaHQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzYjZiNjdhMGI0ZDUxZWY3OTFlNzc1YjUyOGI2NGFhNWE2ZjE0ZWZmNjI5NzM3ZTY3YmFlZTdlMmY2ZjYwNzYyIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NzEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZWeTI3Yk9oRGQreXNDYjI5bFV6VDFvTC9nTGdvVVNOTk5OOEtJSE5wTXFVZEZLcWhSNU44N2xGOXlrZ0p0Y085T25NZVpNOFBSNGMvRjNkMFNuS3ZVSHRVM1gvWGcvWEo3RjRZUlAwUlhWM3NjbmxCWEVNaTg1SXpuU2NxU05IMWdjaXZZTnMxV21XQmxJZjVoYk12WWNrcHFJZGduSkVob2Q2Z3B6NER6Ujd4KzZBS3FRSUFhQXRUZ3NSb1FibU04cWdIRGE3dkczbldIQnR0UTdiREZnYXAwTFVYd2JITEgrQU5sOWM0cWlFMmtreG1HWFVlSG4vUk5wOUZHektXUXNzeEx3eE9FV2lWQ0c1RUFidEtrTHFYQ3JOUkZ4dlRVUzZUVGpZUENDMFJzQXNJK29od0pyWjAxcUE3SzRTbGo0dEozWCs0L3hxQjlDTDNmcnRlbUczYjQySzFVTjdxdXFWZStVeGJjK25SYzI1WUNHdFNKUm1VOU5iYmEyWEFGRE5RR2hudDhtbndSVjhtOFppclhaWmxpbVdVNjFXbFdNclloRTBxR1ppUHByamp5NVFUeGZHcEdvdysyUFUvdTBsRUxEZm9lcGphWHI2aGNhVXpMTU16YitqYldPTFFZMEs4MEdoaGRXUGtuZFZzVXh0QTFFRzVYZ2V4N0JEZE44c0xEZ1E4UEE3VGVSb1lQdHNHWFcxZlFsbTBGL3pyakZDQ004YjZYLzA1NGg5dmkvdENxZVFuVk5UME1xQis2bWZXM2svbWI2YnhqUWpPaWIrL2FuKzNiLzdKei84bmVUUTB1WGpSS1ZOK0I5OGFGZnhyREovTTVYdkRpWE9qNUpDSHhGaW85a0NDTTdhUnEwL1pkZEExMFkzMmtVSFd0TzFTMmdSMVdHbDJBZVpSeU5xcU50c1pVK01PR2k2ak1IWDRQUE11blZwUXhoVXBSR1MyeHpxUlJqTlFrejFYSzBnMXdNSmsyV1NyQU1GR3F2QlNGQUY1d0tRdkdCWnFpUHFvbnFYR25vamc2a3RCK3JCcUNGb3l4azhoOUgybFJTVC9Qcm8zSWp5NGZTQkZ4ZDRoTTdxT0UwdW1JYUVZUytBRVYyajdNNkJLelRTRWxxWjhHRkRua1JrSXRCRmZjR0ZuelRQS1U1eG1yTnhuV3N0U2x6RldHNWFZd0xGWElqWHdEL0x5cHh4Y2c2UWMwenU3MklZbFJxMGQvK2x2aU0vQkl6MENjUDRYZ2dLM0N5bGlIL2lyVm52NW02dFBGcCtRcS9SSDk2RW1pSjdsNnJ2RFhaUEppcXduZFRzam56Qk85dWZjbVcwR3JMVDFRTHd0ZjdLL0t4czFiUEM5K0FVR3htNUZQQndBQSIKICAgIH0sCiAgICAicG9zdC1yZWFkeS1uYXRpdmUtb3V0Y29tZXMtY29tbWFuZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICIxYjZkZGM1NWQ0MzU3MjYzNWJjZmQ3ZTk4MmIxNjEzMjA2MWYxNjhmMjcxMmFiYjJkM2Q3YWI3MmY0MzI5NTk5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDQyMDMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNTFYMjI3Yk9CQjkxMWNRZWFHRVNMS2RiWHBSSyt5MmFMck5ROU1pVGZ2UXJDSFFFaDF6STVGYWtyTGpHUDczSFpLU0pidk9vdGlncUNseU9KekxtY1BoeWNuSkIvWkFDMFNLaW1rTmc2K2FhUHF4bVVWZlJJR1VhR1JPSjBoU1VzeElmby9JWEZPSmxsU3lPUVBoblBDQ0ZiQUJYWVBFT3ZhOGF5RTA0aFFrN0NhRjlJS2lYTktDY3MxSUdhUFB2RnlqbVdoNEFmdjF1b2IvbFpaTnJodEpTbFJSVFVBZlFTVWxTNm84dldBSzVhS3E0S0RYYUM0cG5RdFpJUzQwVlNNNFFBbXVSZzIvNTJMRmtXZzBpRklFcHBWd01wRVVrWEpGMWdvSjUxenMzUmg5OEU4MU5aVkxwdUIwdW1SZ1hFNURveFVSamtpakJSZVZhQlM2azRSckpDUWlxSmJDQ0ZybkM1YnIyRHM1T2ZGWVZRdXBrUW1CWmhYdHZ2OEd1N3F4M00wMnNpelpMSmIwbjRZcWZUQkxwUlRTOHo1ZGZQcWNYYjVIS2NLTXo0dm9iSHoyZkRLZVRLSkhFSW9rcldqQmlHYUNSM0tDdmN2M0YxYzNseDh1TDY1aGc2UXh1Rit6a3ZvUzM3Nk5mcERvY1J5OVNzTTRTLzRZL1JWTk41UHc3UHo1RmdmZXQyLzJDQkFqMFJ4a3BwdVgyMmczZnZZTDQ4blpGbnZmTDY3ZmZRVTlHMnhTQkJuR0lTNll5aHVsWUNRcDVKVERBRksySXJLQUVWVTVLU0ZXTUFRMFFkSktXdHk1cjV6V2Rqdk5TOGJOMUlycFJTSEpDb2E1NEhOMjEwaUt0NTduRlhTT1RBeVpwUDZTbEEwTkVnL0JINXZiRE5vcE4yUCtKSUVzbys5bThzS0UySWU0Z2dncmRpQThBajhJa1R1SFdkd0NvS1E3S2dRYzBEbDdTREZ1VCswc1lZcHhwUWtBcVpVRXRRSEFxVEI1bVRkbFdSR2RMM3kzL2RRa0lIVEdHemdhdTY4RXAwR3IwZ1RPT2RMYW9jaWNaaERhV2lobXN1OUxzWHJhQUZnTURVYURUcDlxU3AxdXRsMllNQ3N3WWh5Qm5MTlFyRzdOM0hSb3l5Q0VkcitUU0FjUjJXMXp4eWpESENsTXhuZFUrMWcxczRvcEJjWm1kZ1VIZStiYU9XUEV4cVZYQXJJaDFRMkgwMFM1dEI4MUJYcmhkd1pDQkdCZDRPM1FvZHVmajVpbTl0Y0syZkQxNWd5Q2g0UFhUMlp0RURhU2F5RlRPKzFVMkluam0rMlMyMndqYXIvZHJudkdDeHc0VDRGMGdCa00zdTljdFNqRFFqbnRIVHV1ZVJkUkhQUzQ2b3QvZ0M4cmJpTURhVGtHclVIZE9LM0Faek5ubnl0bm85cnc4bENtb3BYSVFGRFo2Rm05akdzcmFxVnU5eVdtYVRyWllhS3E5MktvandmUUN2YStsWlM3cWVCTittenNkR201VG1vaWdiUFRqbS9qM1dBdWdlT1ZNTGNEMFc0ckVHMWRFdENOZjBDa1Q4ZmpaRHpHYlc3cGcrR2JBUzBrLzVNbmtEbllCbmd2dnM3T1dEOENpWXVmMDBCcWM1MkFJOFBJMkRsU1psQlJmWWc2U2FQRDdEZVgwUkFkN2ZJVGJHTnBwcE01Q2dkWFNNUGltS1liVTlUSklmVTVLNDF4bHVUcnlBeHMycCtXN3BZRGN4c3NHVjMxbXpxc0pKUFFRVEJwa1dRL3BtRmJiY25HRlZEU0F0dCt3S29CZURJRSt6WTAyRW9janZhQ21YUUIyQTdaMWJrK3BOZTJmY2k2NU81ZEx2OU5HSDBsSFBpZHB1MkYzc1hiQkdHWWRUZHp2Q2JjMmo2VE95RmJuMjY1cFFaTlN0cFc1a3lJc29WQ0x3RGxTdTVweDhTT2pVeUR0ajVHczNzMDNGR1RXS21oNFFQSXFDZk1oeDFoeVpUdVM5cE1RVVgvZHJaMzBXMTZHTFhSZ3Z6YXpqUDdDU3B0dkpMTlVlZ05QVDZPdmIwNEpHN2hkbi9Xb011R2M3ZnNQZzNFQmw1bk9mQUNJRzduVjdnZmsrVDI2S1dOZ0tMc3hldnVYelh0V3BxS01PNjNhTE9rUW1vV3QvZURpcTAzUnBlcGE5UzJqcCt2TC8rOHZBcXZ4RFYwaFpMbU90VGludkpzRGxuYzRRVmF6WFMvODR5djNhL3Y5cC9pMFhJeWdzYUxtU2lyRVQ1dHN3QUxiVTJvMzlzY3BCTWNMZ0EyOEFVMDhiYlJDeUhabzIxSWNZTGZVZWk1SmNLbnZSaytLQ2R5SkJzK1VoVGVBVnFOYkpTalJUTWJHWEkwOTM3VUhUNHEyWnptNjd5a2tWV0JneFo5QWpCSzVhRWZzNGFWUmViVy9JTzFMMUk4ckQ4QzhFcFkyMnlEUVpUOG9MOVFkazJPYVRmYlkyTHo0N2VLUW5POVFCalN5VG5nV0JuZXFDRktnL1pvV0pqZGFteWNiRlNhbm8zYjI2dnZSMWZwVHNwVW9EOFpQM3Q1L3VKRlgwTVdVV1FGaGVLV25oOW9jTzNjY2M0eUw0KzRGUER5c2lxQ2d5WXVibXB6WmZwaVpwQkZpNHpvSTVjcE5PYis3c1A4OXdnM1JneEhCWEYveHdZaGg3d3ZhUWJ2cFlXcHdCeDJGQms4Q1FXSGNabnRjdGxacWRJYkNZelpidXNlVkJsQWVwRTVLb0FiMFlyMEQ4WU1qb0xYSmd4QVNRMXArRUJLUlh1M2FnbTE2N3d1bXFwV3Z2TnovNXEvc0QrQUw1TkErOUE2Ykc3VG94eGtjd2k0Ym5qMzRtMDUwanhGRXR3NjBqMk9zNGFUSlN5U21YRlpabTMvZ0xlN3M2RDFIdkNqTlNRY1B2L2lqemMzWDJ6M0VmUnRtRnZKUlVIMytxN0plUHdtN2RmZXBPZXZYaVZIY0hLTEYxclhXZXZMZExEbEYyUFlQNksrcnBXbTFjVUQwLzVrMlBoNEhqaVdaWndBRUxNMHhWbG11Q3pMc0xQSEVadjNMNkFDeGp4ckVBQUEiCiAgICB9LAogICAgInByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIjogewogICAgICAic2hhMjU2IjogIjUxYjk5ODNkMmE4MDYyNDBmNTYyZGNiOTUxOTU1ZmM4MzYwYzE4MWU2ZDA4YThkZmRjYmE5NTM2MWM2ZGQ1OTYiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTA3MCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E1VlN3VzdiTUF5OTl5dUluSXN1VnExSVh1KzdyUU4ySFlhQWtxaFlxQzBaa3B3c0cvYnZvNXJtc0tMRHRvTmhtSDRrSDk5N1AyNEFOaEZyT05LZXZDZGJOKy9CNDFUb3R2MEpNZFNBMDA3dFo0ekJVNm43TXFLUU8wWnRPdXFOeFB1dEZrUHZwTlpXR2E4a1NTY1VtVjVKN01pSlZySGF5a0g3M2htaHBmWGJUdmJLRzdINTB3cHpybFQybVNxR1NPNFBoR3lhbDRrcTdVdGFzK1ZYeEtXTXFmNnRMNlpLamYxanFuRHRxZVRBa0UrWllJMFlZMXFqSmFjN3dKbWk0NmMrd0ZOTXB6aGlHV0hKVkNnZnlkMENmVU5iSVpOTnNkUzgyaHBTQkZ4ZGFCTUxMWml4MG5TRzRHRkpwUVF6MFIwOEppWm1jckRZVUhiQ01FUHljT1VOS1lkRGlEakJzdzUzdjhta3U3ZWMwQjA2TTFDbitzSHRqQnQ4TnlncFVSampsSkdzdHg0SWxSWjlMK1c5TXNaNEdvU2tqcEhhWTY5ZXIvZ1hiZm5jaTdRdW82OWllSXVYUXR1NTNhQXRHdUc4Y2JRemRvdTZOeGFkRS9aZWlNR0ozdmZZb3h3NklUMHAwVEt5ODZnRmJWOTRYUmY4SHl0cVlTNWMrc0tmWFBqSUVIQ2hMRmd0ZTRpbFVJRzBFRHZFcHUxRHJHd3oxTVErekJ3Uk9JVTZwclhDM1BBaEhxQ1pPZlA2L015S0ozNitBQmM4VHdrZFRHaWZtdXRYVnNIeHdGRFA3MTR2dWZaLzRCeU5VQ3hHT0hBVUFLMmxwVVdDNW9YYitKUjRpUWpqMXFtQ1RVY2VkR2daZFpRaHAxUTVlUlFXSnNrS09LeDRIZjNwRkJ1Q2pvRk9uT3dEeHAxNmFObGUrYWdjdmplZXRZMnk0NW9qSkhNSnRPNDIzUC8xV2NEQ3grNXI1a0M4eUhyejgrWVhxbHdjaWk0RUFBQT0iCiAgICB9LAogICAgInB1Ymxpc2hlZC12ZXJpZmljYXRpb24uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJkZDRlZWNmMGMxMDNkY2E3OTIyMDk0YThiZWViOTliNzdhZTk2ZmQxZDVmZTUzMmUzN2JkODMzZGFhMDI2MTRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDU5MTIsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMzFZMlc3Y1JoWjl6MWNRZXJWYnFuMVJucElvR1FpVERaTmxBQStDUmkyM0pJNWJwRUt5NVNoQi9uMU9rZXh1U1piSHNDMTFWL0h1OTV4NytkZG5UWE4yUC9UMy9SaDIyemFmWFRabjE5OS9jN1g1OTQ4YnhwamYvTXoweForN05tNmNacDV2Qm43MnRqNHloZkg5SjY0dkY0WVdGd1pLL1hDNjlLL3JuLzY1RVV3WXpqamZ2UHYyK3N0RjZ2TEVPSVdKNnQyUXBuM1liZm9QSFEyYnI2NDM5L3U0YThkYnlwdTJ5M1JQK0srYk5nODB0S1ZOWVdyN2JuTWZ4aEhuSFQ0OTBHYmZoWHY0OUVCNWtieGNwYnpkVDZrcXFDWnNPTnR3L2pQemw0cGRDbld1akRmS3ZHSHNrckhWbm40L0pJSVBEKzBJSGZWQkgxV01RbWNwdFBFdWtGYVNMTG5nZ2t4U2U1RWpMOXFWdEFoSTdiYUdDUTl5cnFVNmZEZnNxNnpqeCtyMmZxelN4MzFLTkk1ci9LQ1dQc0RtMVl5NzBMV0Z4bWs3M2dab3IvZXRVQ0VvYXkxRm5weTNKanZqU0JmTmxMS3lxR2d5ak9FeVc4MnlzNEZLME1sbG5RS3p5dEpxWmRqdHJEcG91UTJJOHdobFU3cmRMbm5ZcHY3dXJwMmdjQnIyTkQ5eVRNaTJ2UXMzdE0zdERTeWJYWmlOdXl4YU8xZVVONGlITURZem0zTHlSUXZteUJSUmhPTEZxbWlsVDBKNm9TS1Rsb2xNaVV1WUtPUmlXUXdqZlVxRE5ZaTRVVXdrRjhtbXBCS1BtUWZEalpENFdZcm5ITzRMYUhMV0txR2owc0V5N2xKaXpzbHdDUEpOTzA3REkzenNTbnZ6c1JvalJLU1VKTVhzYllyR1JBTnQwaFNwWS9HU0J3dWpzMWNHd2RaT2N5NWs0aW01NUwxRDJPT2lodjZndEo4UXJsMmZFTkFjNks3dlZzK1dIanJFVFJDekpITjIwa2V0UThrNmE0NDh5MkNORGdJMXFsRjdwTWdncDBnMGZPTWhhMjFpTnBrZEdnbmxIbmJ0bjNOcmJGTjRvREQ3ZERYcmJYWjl5TTFBaDFzME5vdjNuemNvaFNhM3BWeGZqUmYzdXpDVmZyaTdvRklvMWJaYXI3M1poVWk3c1huU2k3dkhobjVIcVRSVDN4eEMrbm5UVVR2ZDByQSsxblQ5MEN5ZU45ZFh6YmlQNDlST2lNcllRTTN4c1dhT1NyTW1ZaW5RcFF5UHVjbzBwcUc5bi9waDNJWU9RUTJQaEY4UFRmNjBVR3NGK2ZWODM2WGIwTjA4dndDTUdIQyt5c0NKbUw4dSs5MXVUS0hiVmdHN3RxdXc5QmNPY1BUZDExZlh2M3hYZS9ydDhzV1N3SzkrL1hwR3RoWFFjUFQzYzBuNGw5c01oTnNpeWlOVmE2ZkhiVUVVMis2bWFtYlA3M2Y5ZHR3RHhRQUl5T0w0MU9neDNORzI0T1IyZS9YbE52YlQ3VkpMenk5QkNQQnptK01UeEdBeWhSUVZVMW9raWxhaHdFcEZBNUdpRThWNkl1ZFVMaUV4WmdoZEd2QWhoOHlsakF3ZFpjOWVpcjZqS2NDcGNJclByNGpqZ3BaaURkRDM5TWYweTMxZXdmMEo5bkozcWYybFp1Zk9lY2FadHVMZDJmck1jajkvTVQxN2hMMTh4QXQ1Zk9RS2ZGRkwrNVduaEx5VUFuL1BwV05NU2k3NXUxT0dEdDZjK3VTTDNUMVNMcytGYWtJY1VkL04xejk4MndEeHB1WkRHRHJrQzYweUY2VjBQL3oweHZ6NE9OMmlxak5OYUJSVVpUT0U3cng1UjBQZjNGSG94bWE2YmNmbVVKL04xWmZOQ0lJYWIvdnBMYnBpYXZiZCt3N0diOHArMmcvVWdNcjJrSkNvUVYvUXpJcE5aZFBtWm9CMzUyc09ZbjhIMU5wMzFXS2xUdC8xM2E2MnlPNXBUaXAvNDlOLzVrLzR6TS9oM0daZ2EraE8zOHlGMnpTL25jcTM3U29ETEkyRGF0M05SYllJT29QVWkzRC8vaUxIaTdhRG5idmRTcmc0MjQvRFJUM0h2ei9QeC81OFZsQ2wvemJMemUwd3grcng2QU95OHVMa1VGc25ieGFid08yTEpjQk9KQWNqd0s0K2IrYkRveUhiWDY2dmFwZGlLdUV2VHY3eDR1UyszN1hwOFVtYitHeEJKNlFBK056N3pCVVZGZ0lCYUl2VFh2T2lkR1FwUlZ4RFFRVmJNbmtoOExUVWxTSEUyVk94ZDMyZUM1LzFScWxuSjR1RlM5K2Y0R0doaFFObGZFUzc2UVNFTTJqaFk4Z3hwUGRQYnk1ejBMYk9RSWpSc0owV1Zpc0J5UE1pR1BmN0FiTWZiUjhDNktDYnhqa3lxN3JscExMQVdGR3IvM0FFeU9kbkE1WDlXSjEwQzZzaW8rMGR6WmJONWRqUjlLRWZVT1F6a0w2MHNoN1Z4dDMyZ0JUa2U2WjkvSDVva3ZwN0dtak9OUnpBV0ZLbnBEazBKNGRXV1VNUE0vZlBmUzJvc0R3SGFrZFY5REliemtWenVqU1BxNlUrL1dHNkhmcjl6VzNOR2FaWk1OTmRRTGhxeDBQRDV3MEdzVXAxeTN6VzVEMGRnY2JWZHE1ME4xVXp3SHl2OW0venhRd2R6V0p4czJaaTV1cUxHZFNiTWZYM3dJblZidUJLbWdmUUJvUzVxNHAvMzZOSGNoTUowUWNyNzNyZ3hRRVhuazdGTlM4QXNqdWFHK3pzbTNZQWdpRTVEWktWVDR5NzhuTVlEL1NNYnM4NzRGQlhMNVg1OGtIWG9VcWJwVDZoaEF0OTNuelZEN1ZyNjhYSEY0UEJYSVBkVGJOQTg5TUpBSEd0M1R1K1dVY095RVNNM3dJdHFXc085WC9lZkErRVhOQjJuUTFLYUhjbmg2bFdPTUR5MUw0cjZJVmhhc0ZrMHdiejZ6MktlK3k3OC8rT3l4d2ZlTkxaazFBK1Y2cGpHSmc5SmpacFdBbkZrTXVCQ1dhaU5pNWhxdWFZcnpCb1lzalRtS0JMSW5WQXVWcXFtOW1xelJMRm93WVZNc1kybjZ3dTJaZkVNT2xpU25mRzRsdnVpYWNZNm9uVlBsVTYxcER0QVNaQlpPRjA1dXdWRFljTjRLakRXNWUweFRhU2JDd3NrL1Fab0VWZUc0eW9QbVdNcVpaRlMxckh4SzNVTm1ZTTJpWEtpTUdjbGZoTXg5cTBSK0VDaUJlakw4b3BFNklxd1pCd21FNE54bXN0dVVPTXVPWkVVZ2d2cFRGQmM4ak14Vm1CcVVFOEQxRmxwdk9VL3poS3o5bG1vNUxYbGt2UFE4b3E4K0pNUXB4TmdDQ3ZBQU5SRVdsRE9uaU1KcDZTS05YVjdMa09uNVordnV0dnFnYUh4N0VGSWNwWU5DUnlDck9ZMTRRb1owTUd1eElMbERDM1o0N01aSVAxeEZpcHFtc0dDWHV1WVJyYWg4ZE5uYzJPSGtpQzNSSVVBdlJsekNWS0VxWUZrdGd2cEJKRlp5V3htd1JzdW9nU1daMk1EQ1pZajlBeEYvei9rMy93d1p1Z1hFWXVDNklGTjVUWENod1VzSHBhZzRyUnlFaGloU3htSjh4dnhNRlVFaXNxK01zYXQvTFFVM0w1S010WUVNbXdtSlB4Q3JzaUtSR0tFd3FKRmtoSzNjeGtOQXhibzNCWU5hUVdvVG9wdlliN2pKK3luTnBsUzEvWDhSNWowL0F3LzM1VWhUVUNxeDlXbHBoOHBBaWRUZ2NFaGJCR1k3blJSbENKMFlGSlFhMU9SeFNZWklFTElrNHFyck5ucGE3WDJnM1VHeUkyY0lZRmtpTFNhTFBBbXNLY0Z1REdqQUwxdG5pTHpVb0tVTHUyRWxsZ3BPRzR4S1lzbnd2L3VOTlNxT0tTd1FvRy8zMXgyRllSZDQyVjJzVlNjaEpPT1UwbXBvQXRWeWU0eU5DWkJXc3Q0LzRZcGlQdGJsWUNQWlVUTmtjdWtpbElockNhSzhZUitvVE96WklSbVZBWUo4d2JFU05zcWRGQkh6Sk01Y2tTQnBSd25Mc1dtTjBzTUxzQ0J5QzRMNmRRa1U0TUN5Vm5IQnNxaGh4dFBHb1lwb3ZDZk1VOTZ5TUtDd0hFR29xKzBBcmxKeXp1SjdMOFdMaFA4NzJzYTBjVk5Wb2N0Q1Zkam9Bb3BCVW9TMFVWWVVOd1JsTkcrbFd3S1FCL0JZL0lFUlBBRU5qQ2JKSHVvS0lPRU50MTZqbkErZm45WTFWQklVZ09DRUloaWRyV1FST1B5UUlQbWVUWXdKVlZGcGhvaStXT1NZVWx4a3NsTmM4YzlaVkRPYWxZV1BCRmtDUWhqV0FJaFNvcFNHWVdpTHV0YnhOeTRycWd5Z0JVeUl2TWhRTmFVTmtvWkNzUVBndE84Y2ZPUTc5dFQyOUxEdDIzdUpBaEZzVkhDWkgyTGtFRFIrK0NBUkp4RVhXU3FEUkFVWUJyVWpQaFlia3F5VGxkTkZud3l1czY2anF6S2hEYW9TdTh3ZE9LQytCK0VTeGljdFdvRUNDc1I2Tmc0YXZsUUE2YlZQQUpKQ2N5K0FuVVlhUi9vcUNhL1JxUmVpK2pZOUdEdEVnZ3U2aGVETVBLQ3d1dkN0TW80YVNDZHJrNnl5T2FMU1FibEpFVjBMaE1MMVZnaWlDczlrZjVHSm1GQVFVbmNLWGltTUtaRGhqTHJRLzFkVkZ3Z01iYTNTSTdFUVhYQ3NsSnhhQ2FYU2FOSGZFZy95TUNVcGphaEpGTWcwUVpJQWdUZ0pQQzRVZmlrT0FpRGdDSVVnRFMwUnJlY2ZDT01kaFNoY1YxK2FyZ0EyNXI3cXlNRXVFQWVRSy9ndUdPQXJnZUhlY2RxME1IeUE3WnRMZ2lTeUFiaXEreHdrWWhBT1JINGNqbFJ5RUorT001TXp5Q3pNRmtXUWdYZVgzOXBhUUV5WU13dkhJSlRSV0JyMkFnQVd4SDlRaE9WZ3ArSkxibGpkOW1lYnYzb3Z3amN4emRKYktNV1hzSmIyUmh6TmFYaTVRY2NSUm1uVjFxdVZoYkM2QVFwaWNMZ0FLRUJYbWNMRjdoVFZFUVhRTGdSNStNRmw0WWFBTEZHL1NscUcrNWFuRndYTW1FU1NzSERHb0NRNWhVakhsOHBFK0lQb1FlMkEvckVGMldCWXBIZ2RXNWQ2YUFYcFRuVlVBQWxxRklwWkVnYllDNkI2K0NPcTB0S3BibHpjMW5mMy8yUHllZjdwOFlGd0FBIgogICAgfSwKICAgICJyb2xsYmFjay1kZXBsb3ltZW50Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiZjhhOWEwN2FiYzJlYjUyY2RmNmJjZGJhMmQ5Zjc5ZGVjMDczMTQ1YzMxZDA0NDRhOWUwZmUxMTQ3ZTQyY2M0ZSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MjY4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxWlcxUGJPQlIrNTFjd2ZzYkVEcmtZOW1VWmJtVVcwZ3pRN3V6c01CMUZQa2tFc3VXVjVOQzB3Myt2SkNmRUY5bE82V1g3VUY1Q3BLTnorYzVWeXVlZDNWMEhKZVE5Y0VGWTdCenBiNG5vTEh4blQyODlrampVaTZlUVVMYU1JSmJaZWdRU2hVZ2l0ZmRaZmRkTTRwaEpKQlVUOGJLb2wvbU00WEJmZnlTY1Bld1QxcEVjWWNWMzVoTERtc1JUeGlNSTNSQXcwVW9jR1EwMkVvOHFGSjNLaXRIS0NLeHM3V09XVWhaTjlnWERCTkVPQ2lNaWNzWnl0b0R3ajkzTDBmbXArL2ZZOVR4dnVJdFRxVmE1WTVnK1o3eWRHRVZnVmRqSkVZZ0U0V2FxTkRNYjlZTUFmQSs1aDE3WWRYdEJjT0FlRHZ2Z0RzSXdtQVJUd09pd3ErVWI2WTVJQUcrd1ZqclBPQWh4Q2lpa0pJWmJ3Q3dPTmU0RHoxdUo0UW8vZ3BGZTlGK1dGa2FUTjBSSXhwZFhKQ0pTYjYrUENLQ0ExVTdlZnhHU2VINkZKa0R6YmpWQmsrdy9waFBnTVVnUTJxLzErS3hPUFJmZ0ZDb09KTXlXZVdseW1SZ1dONEE1cU4yaUF5UkVDZFdyZWYzS2dkZ1FqRDhvUG5JcUdnbTBpcFlWTDh5aWhNVTZwWTR5MzhDVHM5ZDhwQlhpTmNnNWpZcXhrekZXNmtjc2plVXQ4QVhCY0l5eC9uYkhIa0ZiUFVWVVFNNGdGVndTcVREajJxaC9jeHJtRFZSMEVDOUtCRldpUWlacFRELzhkZmJQeWZINDdNUGw3ZTI3czVzQ0FpdnlCYUtwb1o5TG1ZaWpUdWNSbDV6bWxBNDk3MzJsRWlkdlIzZkhsNk96Ry8zZitlVkZveHJLYy9HVXpGSnVJcXpERlhRa2d2MEhrZmREMFJ2WjMzMlJxME1pTkRNY2xUZG44TURLb2JqNldpMTNmNG81NnZZSFI4UEJBVDRZOUx3dURpWXd4TGlIL1Vub280RS82QjZveituMDBQY0hZYi9iN2ZuQmNOanI5aWU5UGhwNmZvQ3hweW9PY213S2pWTkt4MHdWajZXQlp6cGljcXlxemJyMjU4Z3BXVUNzNnRDWXN3bVVBdDRRVEJHaEtZZTd1VG8vWjFRWHZvTXlzc2FyRnlBdDUzV3BRM0p1TUo4RG9uTCt5ZWFZaEhHNURnL2J2c0J6eUh6OTV1NXUzQm9yVGdLY3NIQlRWTmNGTXM4eXhWZ1puamZNcnhEcHFHQ3AzRERxN2pRSWJ1MHZCWHZGZHBuMmtycmpES1BBQzd5OStseW9RMUFWUWNrd281cm03bVQ4bW5TemFPSTNhUExFK0NObEtIeU5ObzA1cC9wS1NINEg3ZmNLV3NXS3BWeXh0U0ZKOVlRaDdCamhKTlhHOVQwdnNwa2ZRYVJHRkUyaDZ0dzFhYmVmdzM4cGlEWnBMYklHUFl1b1J2c0Y0SlFUdVR4UjRRMGZiZkhnSUVyWjA1aVRCYUV3Z3pPQkVUV05vOXBwMThxaUJFMElKWkpBalRraFo0bWxBSmk5NDZzcnA3Sit2d1YrS0h3YjArVU5ZL0pjYVNxV1FzMWJTb2prS1RSRElCR1hhZkkxK2VSM2Z5ZFVEWm9TZUVSaUV5RFhpcmZ1eDJ2alExaDBjdHN1WlRPbi9mUkxKOWRlTGRNdkdFMGp1TmJUMzVZZHhjeU5HNVgwNk4xUXhzMytLN3BGVVlxYXNEcHRYYkVnZGpXU2ZidGtHU1ZOY3ZUMk44c29USk5OMGxvSjF6bHN5OXJYYUxaQTNHQXY5SFZNaXFvUE9ra1dYVTFLcS9LbmJrcS9oTFlvRFlsc1VyYVc0T2ZydXJuNE5TbThvWEpSUW42RzV1dkJ6T1V3SStvTzMrajhyWWgvUHJhcldjRWVsbXZkQlpGU3YxSTFFcmZvdmxQWGd6Yzd1Zm5VQ1dPeEtkY25OTlZTendrWCtaRFVFNWR1dUJ2Q1kvcUVsdmtvTWEwdVRGWGFqZFpsR0tZb3BkSjkyU2hRTjQ0d3psUmNjSlltcGdONlhxRy9yZmRPNWlqT2Q1cTNzWjRpcm9rd3IwZkZSdzNsbWVNR2ptWjd4QXlERmFqVi9YY0N1UFcwTWtXL3FxaFJaS3FiWFhtVzJMd3ZaZjNoTklQRnNUcm11UUJSL3AzRStsNVRvbGtqWDZYTHRlZ0xqakNNUzNOR3I1OGp6dnB6eTd0TG9kbVc3NHI2WVZmRlVTemZHMVluRkpISU5xVmh2VEdxdTRLNjFVYWVEKzVDa3BaZmhhSkVMazhKdHdsVklraXExWEd1c3htOE9tS1JUN0IrcUhUOHlrMmc3ZzV0R1FCK09SMUx3ME9UZmxubnYwYUpUY0ZWY2wrelVMUHRIbFpuNjlxWEJYZUZrenZBM2E0ZkRJUFE2L3ZiYVY4Y1JyYTBvM0VvMFBmNkI4QVN3aTJzRElLcUcxNHVvdFY3MFdmYlRVbFlYejl0cEx2WmFBQng5clkvcGZEUlJhbWNXMXBDRms4ZkU1SWhzOG5yZzVlMytkcnJqVFFxV0dpZWQ5cFc3bCtWbTAxemo1UDF6OWY1Z3FpNzQxZDQ0aEdXRy90dElMVkJWSUdqR2gzR212b0NsMEh3VFNnMkRtTy9kblRiQXZiN3h1dmVkbG8zVmJyVzJLcm5XNHd6alBZeGx6WEpXN0J3UlZsRCtHeGR2NjlCTFI4bUxsZnpqVnZQL1VjbC9BOXJKTlZKZjZzdTBuaHNtNXhybTlML2h5cUdxV29VYXRiT0JEZFdzeUxwSzZvYVMzVE9JbHI3bHRoVzlxcjQxY2ZWVGpuMlZqL282bCtwZDU1M3ZnRG5UKzdMVENBQUFBPT0iCiAgICB9LAogICAgInJvbGxiYWNrLXByZWZsaWdodC1mdWxsLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMTIwOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMWNXNU9iT0JaKzcxL1J4ZXNHR3pCZzZIMlozczVsVXRzWFY2Y3pVN05iS1pjUXdsWWFFQ3VFRTArcS8vdEtBdHRjWkJ2M3BwUFpLdVpoa2xoSFIwZm5ISjJMOUJYZnpzN1BOUkRIYzdoRThER2ZaeURQdFl0elJndjBTZ3lSSUVkMGhjSTVZUHhuelRJc1Z6Y04zVFFmRFAvQ25selkxc2h6VE1Oei8yWVlGNGFoeVVrcFlIaUZPRXVRTGxESTUwVWd6a3QrR1NVTVFjWVpob0NCQU9Sb1RoRm8wdVFJVXNTNnY0Y29pOGs2UVNtYkwxQ0tLRitGcEp6Q2N1U3dvRi96V1ZtTUlSQ2JNQ3R1SU9iTHhVS2lIUWMrL0kyUGlzMW4rRGRFODVJVi8xZVdqMWVtM0FjZmZNU3BrRUY3dlp0WWpTU0lBYkdGTFNQQktrMEprMUxsdFovRkFGMFFHSTdFSDF3Qm4wZVlqQmtGa0hOZjZGZ3VnTk9JMEFTRmVvZ2dGc0pjU0VsMjYxNTBLTWFkWHlyWjVKS2R3UkVrUlV5U1lKUVRpRUU4Qm1HQzg5cTJLZUZtL3Z2NSs5dTNyL1hmWjdwaEdOTnpXREQrSzlVcXRrOGIvdHpDQ1ZLS3JUVkk4Z3pBWTNSRnFRRGdlQjR5RGFEN1JtanB0dWROZEgvcUlOME5ReS93SWdTQmI1VnlWRkpvZVlaZ1hmdDhCd3VLOHZ3MTk0TVlwK2dEZ2lRTmhTVmN3OWd1MS9hUDZzZVZsT3BYbkROQzE5YzR3Y0pEek4yMEhNWGNiUWx0MmpVQkRDNnZRWURpcHNHbFcyV2p4eUpBTkVVTTVjTGkrM1cybmZmVVVYVE8vWVNoeGJxNUxsdG5rdFc5T0NsOHZHc2docElzRmlOTmVidE9lOUJ4WDh5VEdzTEtWV0tWRnBWNmhDVEpTRnFlWVdrNTlFVjdkV3hTRCtYdjFOK1FyZTFuNVFKOE93a3BVdmFCUjBjTTBTV0U0bDhQNUJHbDlaaTFuY0Jka1FIdWxGUnM4ZDhOYVpzYjVyUW9YWFdJVklTTmt5aTBQZi9ubXordUxtZHY1dTgvZlBqNDVyNmxsV3JDQ3NTRm5MRmtMTXN2eHVOSDJES28xcG4yOU9vWndsemQzVDVjdnI5OWN5Lys5dmI5dXlQaWNMdW1FVjRVWlZnZlU2NU9uS0RSNTd4cG83YWx5djgrdFhsck9BRUx5WmZiZTRFK2s3YlRWdi9zQnRGZjhpV3dIUGRpNms3Z3hMVU5DM29CbWtKb1F6TUlUZUNhcmpYaGYwYVJiNXB1NkZpV2JYclRxVzA1Z2UyQXFXRjZFQm84ZWdGTkxkS3NpT01aNFNGb0xSVVYzUkkyNDFGcmwxbnFaNExuckpSSHRCa2xBZW9jRFVrU0FSd1hGRDBzT1k4bGlVVW9uWFQxTEczOURqRWxEeEU2QVZ0S0d5eDVzbVRMUDlXbXlnaGxHOGRSVStTOGlpZzk0TmVIaDFrdlA5SXlSREVKZDhGNkYzVHJqQXNJdVNMcTJ6UVZaTUpqU01GMnpLeXpJd0wweUdTTi9lZjlUK2IyeU05S3ZYbUdaN3c2ZEdyMjYxVlVUUVNTV0ZBOVhNMmVmMEFWTXBrSFpmcEM2R05NZUNIMlRMbU9ubE5SdGVIQnlWL1d5VGxEVWxET1hLM2ZXTlE3K1Q2OXdhd1FtM1VNSTFFckpFRUpMNXBrZStDNE43aWZSaWo2VDRIeTQ2c2VYZE8xbFVzZTFRbnZNZ3FLMmZxS0h3bjBWZTAxb2pNaVgyWVVyM0NNRnVoTkRrRzg2VG82T1g0ak9NaEFnR1BNTU5xN3VaQ1NUQmxJNU9qbDliV21HUG5VVTY4Z3ZFdmo5VDBoN0MyWE9sL252QmFzV3JyalNtR0FzaUk3N1N5YTFuQVlUemlNRE5FRXA5S05idmdLb2liWUtDTkVxM0Z0V0kvSlF1c3pmMXRQQ0l0M1o2eElYQ1RvUmxTb0orUXZXZC91UkJOdHc4RlVJU21lblptYXEvSHFiM3c4SXplV3J3ckc3eVVCUzdMRDZ3bUM3N1JXby9JOXZHb1AwazBFVUovNTU4cTRBbFJhcGJ5Y3lidldHV2VsRng0V253ZFUzZ1grcGVRR1JZalpZYkVQa1B3c3FYZnQ3V0hSZDNRNnlQQ1AzTU9tZE5RcFd1Q2MwU091MFpQOForbTdxbGYyT2U5bUZ6bG1UTnpxSFNFL3VvdXpRN20vUHRxb3FMVXd6WGZKNENvdWhBUnZNYzJieml2cVFaSG9kNlNYOFJld2JucVNUSzFod1kvcjdTYkFvd2dVTWRPM0F5MzZJd1dWRnVYdktDa3ltWEVObzVWTk42Tlg4dEo0SjlsZEtpcVpHNXpMdTdiMlJRKzMyZVZCcnBMZ2xrZ210WHZ0TnNYSEhORTlIUGkyeEkwVEw0a2lrVnk3OWN6dU5xN01RSzlMTldsN1RmYlVVbHY5Qm1uUG5WYUxhbU1SRldXdFBIaEhBVVN6VnJWak93M3lzamJvY1N2VlNQUGQzbGhjb1hOdlM5bHZrdUZWREhDaXJpQ2hHTHJkMTNicnFqS2llUnhhUjd4N2Y1WmtiUDBhVS9YeWZERmNDTkcwbTdLSFVCVi8rRSswdVFUV1RFVlBzLzhlUVZtRy9LVWw3aFF5eDZRdGE1QWJrS25GcmNMRURRa0ZlOHRYZFFkN2IxMzBTbis2Q3kzTDlLWmVhRGhtLzcwMHk2T1RkbldrUkJGM0haL2x5MVd2WFh1ZXlramJKbHpWK1gxVGQ0TzU4b1paVFh4ZWxpb29MVjlkb2hoOTFVSEJsc29rVkhyZTF3eVgydHBGaUVudHZXUnY0OGFrSUVxcXA3TSt2MzM2bjg3NDRjcXNla0o4dnFVdzc1bFB0Tk1qV3UvMG9sYmZjZVVwMUtUeUk3bTcvU0cwVk1wMzBlK1I4dkgvNVZTbzNQd2x2UHhWL3gwY2pxSTkvUEFROTZaUFFqQ0NsTzBOQW8wZFY3UjdTWi8yakh6YXE4dTZLK21VMTJINm9UVitSUEI0MFFUVzdXTjZaNjhqVS91ZTJlTTl5RStNanpEbTZZbjNFS1VBUitKa2svalo4WkprNHVTRCtNQ3Q3YkdRMnRYcFlRODhVL25xOW5uL2JQTi9hVkorNXRJUTg3cDNBS2dNQUpVQm9ESUFWQWFBeWdCUUdRQXF3M1BoQUZBWkFDb0RRR1VBcUF3QWxRR2dNZ0JVQm9ES0FGQVpBQ29EUUdVQXFBd0FsUUdnTWdCVUJvREtBRkFaQUNvRFFHVUFxQXdBbFFHZ01nQlVCb0RLQUZBWkFDb3ZBbENwdnFFU29neWxJVS9lOVp2anlsbVRock8yUUN0YnZJcDhaRXdLQmdMWnFkUzduUzJVNVdyci9Oc2hKU3pnQUNqZ1dYaVc4WGJoUGxBV2RSM1k2RnhlQnBkUWYvay9zVXB0emV3QmZ0bkJYM3pETkNlaEZlcU9IZnE2alR4TEQ4eHdvdnRHWVBzb1FLRVZPRjJVQndRcFNUR3ZXT1huZnVibHk3Vmc1eUZvdTFab1doTjc2dGhlNUJndVFpaUlURFNCNGkxNzZ0cWVZZnJRQTFOdjRobDJhUGdCaEZNL01DTExBcEhiUk5wa0s5alArVFkrTmxOMmd6L1kzNVJDOVBLOVRvdjdmWDJ0d1RsYnRaQXFBZGVoTG00Y1lsU1dWZHE2ZGNlbm1NT0xvRkFQMXJwNDM2VkVOakNxaVdXelB3cTQvbHNjQk80SkxKQXVCSmNiTERsUWtNSWxvb0lpSnR6UGRCbVpWVHhiN0NSY2l1c3JMYk9JWmszOGtXdU5MTU1aK2Rab1NYSTJrdmRGU0g3L2lvN1NWakxZdy9ZVUtaVkhPc0k4RC9CZXVZUEQwWm9yY1pmWHE0OXBOVHJKVDczQ1E4dUJUZzhIb1djRWxoT1l1bW1iUUxkdE05QURyanZkOXlKZ1JhSHZCVlBZRFFjZHBKSUc1Q09XU09XZC9kNGpFUDVPZVNLL0U5Mmljb1A3bm8zM1A5NXFsWVhrTGNRNzNBTmNWZEx6czVubm0reXI5TFR0STFicFQ3V256UTdOaG8rdzRVbUtiQWU5ZWJZRXVXVDFEM0hBdEczQ0ZvRm9sNkVybTltKzc3bGVaT2tJQkZDM3c4aldBWnFZZXVENUVEbGVPSFdNRFl5aTZua2E2TVdxNUNraHF1TVlSd2l1WWUwMVR5QVh5Y2Y3NnpwMDYxUnMwMmhSYTVZMXhyZUIySDJGZlpUMWx1OEdCblJEenpPUjV6aWhHWnFPWnhnVC9oUHlEUlJOZk1OeUxkUUNZbkxuWXRXTlkzMUhmUUdnWlFSb0lOSjJSN0VxUmtmNUNqWVhsUWc4d0pyZnZ4UHZ6dkk5dVM0SGR5MzJ3RU1FTCtINHVnKzRkSTc2cC9hbUY0WnhZVnYvcXNuRUUxR1J5MmRseVcvZGdwNnUwMFpHRk9FYVVCUStrT2J4VTJ2bXRKQndzb1k2UjZ6dGEvMzg3VVY4N3J2NG5Sb3BTNS9EVDJId3U0TGRSUitFZ1R0VnVyRENQS1RyT1MvLzVLY2NwZmR0UCthNHJRSG1KSTNYY3duMzQwVjlMQXVkTFZYWjA4eERIRVZ6OUZWZTJCcWRnVjBsaHlaOEo3WnQ4WUFGVFdqYVBvaUN5SWFlNzd0UjRGdTJOUVhJTnBIdDJuN2dUMndJYk4veGZUT1llbzRWOEwyWG40d1VPQllJWkY4d2gxa3hGN2ZKdGxGZWdHeWlPZTlBTmtNVDJ5MkhhdkRqR3RqNDZleS9oL2ppSnRoU0FBQT0iCiAgICB9LAogICAgInJvbGxiYWNrLXByZWZsaWdodC5qc29uIjogewogICAgICAic2hhMjU2IjogIjRjM2MzMTY2MjA1ODA4ZTgxMzI2Y2NkYWUxYjU2YWZlZjc1N2IwY2ViNGU2Yzk2YTE3YmYzODQzMTdhZWVlNGEiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMTg3MiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E3VlZUVy9qTmhDOSsxY0V2bTVsVXhRbGkvNEZleWl3UUpwZWVoRkc1TkJtUW9tcVNBVTFGdm52SGNyZlNSWm9GKzFONU15OGVZOGNQWDVmUER3c3dibEc3Vkc5aEdhQUVKYmJoemhPK0VzSytUYmcrSXE2Z1VqYlM4NTRsZVVzeS9NbkpyZWkyQXErcXN1YzFkVVh4cmFNTGVlaUhxSjlSWUtFZm9lYTZneTRjTVFiUmg5UlJRTFVFS0dGZ00ySWNKOFRVSTBZUCs1ckhKdy9kTmpIWm9jOWp0VEY5NVRCeXptYzhnOVVOVGlySUluSTUyMFlkNTRXMyttYlZwTk5tRXNoWlYzVmhtY0lyY3FFTmlJRExQS3NyYVhDc3RhYmt1bFpTNkxqcDFIaEJTS0pnTGhQS0VkQ2EyY05xb055ZUtxWXVReis5OGRmVTlJK3hpRnMxMnZqeHgwKys1WHlrL05kdXdwZVdYRHIwM0p0ZTByb1VHY2FsUTBrYkxXejhRb1lTUWJHUjN5ZFl3bFh5YXBscXRKMW5XTmRsanJYZVZrelZ0QVdTb2Fta0hSWEhQbHlobmc3aWRFWW91M1BKM2RSMUVPSFlZQlo1dklEbFN1TmVSakdXMWt2VTR0amp4SERTcU9CeWNWVmVGWDNUV0dLdm9ONFB3cTB2MGR3ODBsZWVEZ0k4V21FUHRqRThNbDIrSDdxTmpSbE5IVi8zSENLRUtkMDM4dXZNOTdodm5rNDlPcTJoZkxkQUNQcUozK3orOE9UK1Rlbjh4TW5kRVAwODFuN1ovUDJ2OHpjZnpKM3M4REZPNkZFOVNmd1BybndiMVA4Wm41TEY3dzROM283V1VpNmhVYVBaQWhUUDd2YVBIMFhYd1BkMlpBb05MNTNoOFoyc01OR280dHdtNldjVFc2anJURU4vbVdUQmJJUGdiQUhYbGFKRGhha1JBZ3VhNk55bFFzSnBqVkMxVkpXcHBWYzhBMmd5RkZVUXJheUVBcUVMS1hNMjAxZDhwYTBIOTJUM05pclpJNk9MSFNZbW82Z0JXUHNaSEovVGpTbzVKL25VQ0dxWXloRWNrVGNIUktUeDJTaHREb2ltb2tNZmtTRmRvZzNkRmxlMXhzcGRWRnlGRnBJWFNyZ1VsZVl5ODFHY00wNHlncEV5OXFDc2t4dXhLWW0vaTB2dWVUWWxwK0FueWQxOU02MW9GNnlZVVRqN0c0ZnM1UzNlZzZuL3lVOUJNLzBFS1Fib0JRY3NWZllHT3N3WE0wNjBQOU1TbDE2VEs3bW4vQ1BrU3hGc212a0NuOHRwaWoybXREdGpIeXVQRDVSMlczMHJscEJyeTA5VWU4Ylg0Uzk3NXBHYi9HMitCdmVCdm1oVUFjQUFBPT0iCiAgICB9LAogICAgInJvb3QtYXV0aG9yaXR5LXJlY2VpcHQtdGVtcGxhdGUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIyYTM5YjdkYzViZjcyM2MzNTk2YjZmZmEwNzE5MzY3MDU3OThlMWE2ZWM2NzRhYzFmOTVmYjNmMzk0NTk0OWMwIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDk0MSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E0VlMwV29iTVJCODkxY0lQK2R5ZHdhSEpsQkt3V254UTAxSUEzMDhaR25PRnRGSjE1WGsyQ245OTY3dTdEaHBBMzBUcTluZDJabjVOUkZpMnBQdmZaQzJNWHA2STZiTDFaZEY4ZU91cUtycXVuaW81dVd6TmVzUDgrcTZMcWllWHVTT0RwMC9vbzFyZFRHclpsZDFWZGRGaGhhRUR0cklhTHg3MjdFREJTNXlXMzB1aHEyY3phKzQ1cEsxUXpuNFJBb05ZV2VPOEpjdjdLRlM5TlQwVnJwM1doMXYzYUh4S1NyZjRSMkFWQXdZcUdYeWQ3ZXJ4WEwxZGFRb1U5eDZNdkhRZEY0amYzOWVmRnV1bHQ4ZmJ1OUhSSlMwUWN3L0JHbTdtOGUwQmpsRWhKS2tzVVk2aGFvdVdSSlBMRUdob2NZTGhtNiszclJHRGN1YkRyeHNFSkM4ajBWcjlvem43UnZqaXZFSWxsSHF0VlNQWXpjbEZ3MmZsRm1Dbnp3SHV0bVFkSmxRSzIzQWdEdWQvak9CRG5sK2FVMExkVkFXWmRZN2xQOTFyRHpPQ0orT2huMnNYMS9BYTJWOHJXazJDay9OT1JSbnRYdk8xdTZVckpleU5vRURad1loL21wUUNuMzhaOFBhSjZlNXlzVGtocFBocmMzS05EMk5nckJ3ejlCdmRIQStEaDQrb09Pc1JBZ1RCTmNFYzlWZ244b1R0MHR4enc2SWdCaEVVTDZINXFtbm9ZTWtrUktFZC9ZZ1pCdEJnak9VcEJYS3U5WmtuMFU3ME1zZm1YMU9nZkN0aUZ0ZWlUMmpoY09UNkprd1lza0R1bkFoQ0ZFYUY4Um9lWjZXaU5qWGsrbGlEUTRSR0djaEF5Nm5rOStUUDgveGdWYXRBd0FBIgogICAgfSwKICAgICJyb290LXJlY292ZXJ5LXJlY2VpcHQtdGVtcGxhdGUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI2N2IwMzBjNzI3Mzc3YzBjYzdlZGI5YTFiNjYzODUwNDRlNzI4NGMyOWQ3YTI3ZGNjYWVhYTUwNDJhYzdmMjk3IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDEwMzMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMjJUVFkrYk1CQ0c3L3NyTE01TDFwQkF5SjU2cUNyMVVsWFZTajFhd3pBazdob2IyU1lxcmZyZk8zeG9TN0k5SWMvcmVlZkRENzhmaEVoZXRXMlNaNUZvMnpyZlVaTTJoRHBvWjNmZXVaaUdvU2QvMVlFRk4wUTRVK29KM1pYOG1EeE82YjEzdlF0Z2xKNWRQbi81OURIOS9qV1ZVcDdTRjFrOC9USzZyZ3A1eWxLZkxSbkJEUjVKZWJyT1pUakxEc2JNVWtlZFUrRUNlVkZ1dy8wRkFtMERuZ3h4U0VHTTFQVnhxZjJtSXVDRi9tTXp6YU80YzkxcW1oSmFNSUdXdW1BSEh1SGZyT3B0eU8wMUhMd25HNVdGcUsra2VCL29PZ29LRGVqdXp0TFZnYjNZQ2VLMmh6V1Z0MVp6aXhIaUVMWXkvZXlOUmgybjdiaFh1aDFyclk3T3RuenB4bFkzck9nNEt1ZFZRTmVUNm5Ub0lPSmxlMnZxU1BQcUx3UW1Yc2F0MUZCdjNOaE4vc1BkTnJtY1BuZlEzd3Y5RmU5RDNobFRBNzRxM1RFcEV3L00xSmwrdUIyNndiaXUzZ1dIR3N6VGVueDZCOTJINWRtZWorVWU5K1ZCNWxqVmRFUThZRlkzR1pSWm1lLzUyN2FuTEN1YklzOFBXWFU4SHZLaVBoUndsRm1GS0t0cUQ4bHRQd3R6VTBONEttdUpaVk5WR1ZWRjBXUk5WbFJTN2psRUowbnQvaVR6TXFkOE1XaEJHMzVEQk52b0J1SU5oTmJONStTRkVUU3NDUTRJd01na0NXYWJYd1JKT0MrZzU5ZStndG1KYjJzN000T2pHQUlGdnFEUDJqSjh5OTgxZ1VlYWtWNzI4TGh5eUQzTUs5MmMyWllwWUp5Y1hjZGpFWnFSSFdZaENHMUQ1SWh3clFDeDBtUEdaYVMzaVhiSnc1K0h2OXlJWEhvSkJBQUEiCiAgICB9LAogICAgInJ1bnRpbWUtcmVjZWlwdC5qc29uIjogewogICAgICAic2hhMjU2IjogIjY0NDI2NzZkY2ZkOTQxZjBhMDVhNGNiNzlhMDJkZWE4MzlmY2QzMzJkODJiMjE1NGMxNWNmNmRiNjhkZTU4ODkiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogODA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTJXU3k0N2JJQlNHOTNrS0s5dDJXaTRHVEpiZGQ5ZTlkZUFjRWpRMlJCaG5KcXI2N3NYanpqUlZKVXUyMFg4NUgvRHowSFhIUXJlNHhKeU9wKzVvWGUrY1VDaUYwbllBVXIwa1F3TU1JTDFVVnFEalFRM0JIejl2enV2cXByaGNDRWVNWjFycWxyQmNvSGxQUWFsaENMM1Z6U0MwUVdZOGVodVVZQVBwSUlMb2VUQzlNOUo2SWEzb0haT0dDU1RQSmFpMnRCZmNxTVFRVzM2aGMxeHF1WTgrcHhEUC8vZHBJUng1TDhtaE5kNXA3VFFaTDNXUXlnVXJPWmlXamJiWHZkTnFVSndMNmJuM2c3ZDJRS1BjM2tldjVOZmErcVlNdUdFQnpUbU5FUi9KQkRGREVuR1ExaWtGQVJVcWJrUXZ3V2dGUWx1dDJ2WlJUOW9vRmhRYmpPR0FTbW1IR2huZm0rSU1aeHFYdkJaUFd6ajR1c0xVUWNycFB1ZDE2ZDdSTzZURmwzaXR1WHlkNEU2bGcrSXY4VWJkUG1ON2VaaW0reDdySVdGRXFEVHVCZTlBcmFLV2xkNDBpZXBMTHM5YmEydWozVmdJY014cHVvOGw1L29vbjlzV2xQdW01bUw0SHIvOUticXVTMXZqKzgrRi9ET1ZCeHg2YlVEZE9kYmxrbCs2YTB5SjBPZDVqblczSjZnTllieVdmSXZZbkhVL3pRRFRRbytDYmRDTmMvUVhTT2MzanIrYXhna09GaHB6R1FIbm1MYVBqMGhmQ0NuVjJPVC91RDd1MUZyOU5xcGdRajl4OXNUNUQyWlBzajNtaTJKQ0dQV0pzUk5qeDhPdncyL01RZ0lXS0FNQUFBPT0iCiAgICB9LAogICAgInNjYW4tcmVjZWlwdC5qc29uIjogewogICAgICAic2hhMjU2IjogImFhYWE5MTA2MWJiMDM2ZTZkMjI4YjFjMWJkNDMzMzU3OGRjOTQ4Y2IyYmI1YWM4YmEyNjk0MjkxMjFlNzMyMWEiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDUzOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMVZ5VzdiTUJDOTV5c0NYeHRLSkxWU3B4Ym91YWUyaHhTRndUVm1Zb2txU1RsT2kveDdLY2x3TEdkQmt5Ym9vUUlNMEhwOE01d1o4czM4T2prOVhUaE9tMGJhUlhXNm9EODY2aVNQdmRXYm0vZHVSWEdXVnpsbVNPYVpMTXVjTUo2eWxPZVVwb3BpaGxGR3NrRGhCY2NxaDZpa1JCQXFjc1NwS2d0VUZoeVJuQ3pPK2xNRVc0Nysrbk5nd2lsbktVd3p6Q1VyVXFxRTRoUVdtTE1TcTRMSWNGZ3FGT1VRNWxMaGxJWVBRUVZLRWdZVlFjWGVaUzA5RmRUVDRQUlhnQUw0VlZxblRSTUFmRFlpbitUV2Yya0RTL1pIWTRoemdDQkE2RE1xcTR4VUdZektra0FFc3dLZkwzWTJJMTk4OEJNVGVHeENjTEkzK1dpdW03V2g0Z0VybkZRSkRyOG9LU0ZNRXBTZzgwVXd1aDJ5Y0xTV1MyV2xXeTFEUXN6NDFWTFg5RUs2NE1UYlRnNmt4aXhkMTdhQnRVdHV2Mk1sTjFiMDVHOURIR01ad2dhMWZLVTNRODRzWENvWW5FYWUybDNBZ2FLTXJla1E3S1VMWHZlNEM2eVEvYkx6L0toa2tGUkpXU1ZwVkJScFh1QjNFRllRM2huS3JmWkxia1IvS3R5ajNOUTFiY1EreEFFVWhsL0p1MWdDQWdBM2pkSVhoMWpzNnpiV2pSS2c3V3hyUWhwdHg5YmFyYVFBRzJtMTBwejZVSkZZMXEyL0FhUFRCL3dBc0RMT0h5SmRvN2RWSE1jYmFtUGJOZkZvR3Jtd0hOTEMxdFNQcmFmZmpmVFh4azVzR3RQSW84VGF6aDBpYUxwZHk5clltd2xoR3YzbTRacjhYR3QyVUJEQ1VzWndKcW80WEo4TzZ2RXZjTkozQXhEVXVaSlZQQ3lIVm0vWEgzWUhESTkwV2h6ZHROMGtrWDEyOFNQdmVpeDVIenNRZWdMZnp3Z0FkNlZiSUJqb3hoWnhmKytTYnVpamhMRjNUaTUzMDYyUDNzeE9ad2ZZUkc4RHgzVCs2VHlIbWdQVnJkZlJZTDBqZmgvVzI3Ty9FRCsvNGV2d1pNWDJHUjJnak1vc3gxazZkNEM1QTh3ZDRBVWQ0TDdvL3F3Tk9HYnFpSXZ0ODVyQWF3NS9FaFdZRktTY3BUOUwveDlLL3orWSt5OGQrYTg5N1ZNWTVVVUcwMW55cytSbnliLzlvSDlxeHAvMC8yNVBmZ01VK0l2UnVoRUFBQT09IgogICAgfSwKICAgICJzZWFsZWQtbGl2ZS1kZXBsb3ltZW50Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiZjhhOWEwN2FiYzJlYjUyY2RmNmJjZGJhMmQ5Zjc5ZGVjMDczMTQ1YzMxZDA0NDRhOWUwZmUxMTQ3ZTQyY2M0ZSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MjY4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxWlcxUGJPQlIrNTFjd2ZzYkVEcmtZOW1VWmJtVVcwZ3pRN3V6c01CMUZQa2tFc3VXVjVOQzB3Myt2SkNmRUY5bE82V1g3VUY1Q3BLTnorYzVWeXVlZDNWMEhKZVE5Y0VGWTdCenBiNG5vTEh4blQyODlrampVaTZlUVVMYU1JSmJaZWdRU2hVZ2l0ZmRaZmRkTTRwaEpKQlVUOGJLb2wvbU00WEJmZnlTY1Bld1QxcEVjWWNWMzVoTERtc1JUeGlNSTNSQXcwVW9jR1EwMkVvOHFGSjNLaXRIS0NLeHM3V09XVWhaTjlnWERCTkVPQ2lNaWNzWnl0b0R3ajkzTDBmbXArL2ZZOVR4dnVJdFRxVmE1WTVnK1o3eWRHRVZnVmRqSkVZZ0U0V2FxTkRNYjlZTUFmQSs1aDE3WWRYdEJjT0FlRHZ2Z0RzSXdtQVJUd09pd3ErVWI2WTVJQUcrd1ZqclBPQWh4Q2lpa0pJWmJ3Q3dPTmU0RHoxdUo0UW8vZ3BGZTlGK1dGa2FUTjBSSXhwZFhKQ0pTYjYrUENLQ0ExVTdlZnhHU2VINkZKa0R6YmpWQmsrdy9waFBnTVVnUTJxLzErS3hPUFJmZ0ZDb09KTXlXZVdseW1SZ1dONEE1cU4yaUF5UkVDZFdyZWYzS2dkZ1FqRDhvUG5JcUdnbTBpcFlWTDh5aWhNVTZwWTR5MzhDVHM5ZDhwQlhpTmNnNWpZcXhrekZXNmtjc2plVXQ4QVhCY0l5eC9uYkhIa0ZiUFVWVVFNNGdGVndTcVREajJxaC9jeHJtRFZSMEVDOUtCRldpUWlacFRELzhkZmJQeWZINDdNUGw3ZTI3czVzQ0FpdnlCYUtwb1o5TG1ZaWpUdWNSbDV6bWxBNDk3MzJsRWlkdlIzZkhsNk96Ry8zZitlVkZveHJLYy9HVXpGSnVJcXpERlhRa2d2MEhrZmREMFJ2WjMzMlJxME1pTkRNY2xUZG44TURLb2JqNldpMTNmNG81NnZZSFI4UEJBVDRZOUx3dURpWXd4TGlIL1Vub280RS82QjZveituMDBQY0hZYi9iN2ZuQmNOanI5aWU5UGhwNmZvQ3hweW9PY213S2pWTkt4MHdWajZXQlp6cGljcXlxemJyMjU4Z3BXVUNzNnRDWXN3bVVBdDRRVEJHaEtZZTd1VG8vWjFRWHZvTXlzc2FyRnlBdDUzV3BRM0p1TUo4RG9uTCt5ZWFZaEhHNURnL2J2c0J6eUh6OTV1NXUzQm9yVGdLY3NIQlRWTmNGTXM4eXhWZ1puamZNcnhEcHFHQ3AzRERxN2pRSWJ1MHZCWHZGZHBuMmtycmpES1BBQzd5OStseW9RMUFWUWNrd281cm03bVQ4bW5TemFPSTNhUExFK0NObEtIeU5ObzA1cC9wS1NINEg3ZmNLV3NXS3BWeXh0U0ZKOVlRaDdCamhKTlhHOVQwdnNwa2ZRYVJHRkUyaDZ0dzFhYmVmdzM4cGlEWnBMYklHUFl1b1J2c0Y0SlFUdVR4UjRRMGZiZkhnSUVyWjA1aVRCYUV3Z3pPQkVUV05vOXBwMThxaUJFMElKWkpBalRraFo0bWxBSmk5NDZzcnA3Sit2d1YrS0h3YjArVU5ZL0pjYVNxV1FzMWJTb2prS1RSRElCR1hhZkkxK2VSM2Z5ZFVEWm9TZUVSaUV5RFhpcmZ1eDJ2alExaDBjdHN1WlRPbi9mUkxKOWRlTGRNdkdFMGp1TmJUMzVZZHhjeU5HNVgwNk4xUXhzMytLN3BGVVlxYXNEcHRYYkVnZGpXU2ZidGtHU1ZOY3ZUMk44c29USk5OMGxvSjF6bHN5OXJYYUxaQTNHQXY5SFZNaXFvUE9ra1dYVTFLcS9LbmJrcS9oTFlvRFlsc1VyYVc0T2ZydXJuNE5TbThvWEpSUW42RzV1dkJ6T1V3SStvTzMrajhyWWgvUHJhcldjRWVsbXZkQlpGU3YxSTFFcmZvdmxQWGd6Yzd1Zm5VQ1dPeEtkY25OTlZTendrWCtaRFVFNWR1dUJ2Q1kvcUVsdmtvTWEwdVRGWGFqZFpsR0tZb3BkSjkyU2hRTjQ0d3psUmNjSlltcGdONlhxRy9yZmRPNWlqT2Q1cTNzWjRpcm9rd3IwZkZSdzNsbWVNR2ptWjd4QXlERmFqVi9YY0N1UFcwTWtXL3FxaFJaS3FiWFhtVzJMd3ZaZjNoTklQRnNUcm11UUJSL3AzRStsNVRvbGtqWDZYTHRlZ0xqakNNUzNOR3I1OGp6dnB6eTd0TG9kbVc3NHI2WVZmRlVTemZHMVluRkpISU5xVmh2VEdxdTRLNjFVYWVEKzVDa3BaZmhhSkVMazhKdHdsVklraXExWEd1c3htOE9tS1JUN0IrcUhUOHlrMmc3ZzV0R1FCK09SMUx3ME9UZmxubnYwYUpUY0ZWY2wrelVMUHRIbFpuNjlxWEJYZUZrenZBM2E0ZkRJUFE2L3ZiYVY4Y1JyYTBvM0VvMFBmNkI4QVN3aTJzRElLcUcxNHVvdFY3MFdmYlRVbFlYejl0cEx2WmFBQng5clkvcGZEUlJhbWNXMXBDRms4ZkU1SWhzOG5yZzVlMytkcnJqVFFxV0dpZWQ5cFc3bCtWbTAxemo1UDF6OWY1Z3FpNzQxZDQ0aEdXRy90dElMVkJWSUdqR2gzR212b0NsMEh3VFNnMkRtTy9kblRiQXZiN3h1dmVkbG8zVmJyVzJLcm5XNHd6alBZeGx6WEpXN0J3UlZsRCtHeGR2NjlCTFI4bUxsZnpqVnZQL1VjbC9BOXJKTlZKZjZzdTBuaHNtNXhybTlML2h5cUdxV29VYXRiT0JEZFdzeUxwSzZvYVMzVE9JbHI3bHRoVzlxcjQxY2ZWVGpuMlZqL282bCtwZDU1M3ZnRG5UKzdMVENBQUFBPT0iCiAgICB9LAogICAgInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiMDQyMzI3YTAzNmVkMjU0Y2Y5NWRiZWIwYzA1NmFjMjViMDNhNmE4NDRiOTVhMzMyYzk5MmRmMjk0MzY5MTM2OSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODQxLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcxVXkyN2JNQkM4NXlzTW5VdFpvaVZMU205TmthS0hwRUVQeWFFb0FqNVdOaHVKVkVuS1FCcmszN3VVWlNkK0lJOURleEt3M0oyZG5aM1Z3OGxrRWdtamE3Vm9XUmVkVGg0d2dDSFdxV3V3VGhtTnNXaVZSaC9XY2RXMnZXZThBUXg3MjhNWXZsTmFoc1N6QWVrQ2tjYUhGanlUekxNdGNzRFcybmptRWRzOUM0Y0h1ekJDeHVIVFdmTXJWbWJxTFJNSXZpQnF3RmU2TnJZRlNTUUlGZGlkVHJjdFR3OGVwd2NSWW52dFZRdGtMaWhOeTZLVVNiNlpiVDNmZmtVc1ROK1lsc2ZPQ01XYUtaT3RjaHRkV0ljOFZ5QS9UcjVlbm44bU4xY2tTWkppSW5xUFVSdU5zSThiL0VpekZvNk84VEt2b2M1MVRCd3Zmc3JyMXlwVlNack9KSlVrejJSRk1pZ3A0YW1ja1NyaFdRVWNKT1g1bXR4SUxSSk1HNjBFYTI3RHNtN2RrdEY4SHFCS0VObWN5cFRPc2lMUHlqcFA1Z0RBNnhSbW9oQWlLK1pabWFTVktGbFJ6c29razBuRmhTZ3FudFNVc25vZTJneE5vbTRsWHJmWHhrZFg0ZEY1MFA3YU5IMExadzFUN2YvejFOSDJiL0xYd090Zitla1picmVLNzNvT1ZvTUhGNGJpcUJ3UnB1MGFqQXh6M1lON3VjTDBXTUx2c1VwN2E1b0dPeHlXclFZQllvNmE3OVU3Ynl4YkFBbVVoOUhXOVpacHNRUWJNaHFEamlJZDg4c2ppSHRnMElCQTRrUWJPYmljenFwNFRtT2E1SEZGNDZWeFBuWWdlZ3NPTEdvUlkrWHJvTzloZUhDc3RkS3NVWC9RQ2xqMDQ2blZiZyswZGNEM3lENHNjVXo3K1lhVDM3SEtlMDljbGdtbk9VOUptcVdNWkZuS0NVZXRTRlhXak5heUtua2hkay9jZFNCMkxrWUljTzRDNWQ2Yjd6c3dlV09WaDI4YTJSd01oQnN3dlJXd2QyY1dmdmZnL0c0MHRGM3ZJSEJPdjZobysvUjRvUGVZaWJmbTNPV28yaEVIamF1K0dIMXlyaHB3OTNpcjdYN0dCaU5zNkIxeVBmOWgzWFpMNWdhUVQrRllvcFBIazc5cUZFZ29NUWNBQUE9PSIKICAgIH0sCiAgICAic291cmNlLWNvbW1pdC1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogImIwODExZGEyZDNiZDU5Mzg3MzNmMDA3OGU1ZmVjOGUxOWE2ZDk3NTJjNDI3N2I4MGJmZTk4MzdlZDcyYzZhM2IiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMjM5LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTEyT3dXNkVNQXhFNzN3RjRyd0hJRFkyL1pXcWlwellLWkVLckFndFdsWDk5OEpLdmZUNk5QTm12cXU2YmpiN3lpV3ZTL05TTjJPQUVIcFUxK013c2hpQ016SVdGaGNkanIyR0xpR24yTnorbW5hWStsbVduS3pzdmt4eU5pOFQ5U0FDUkdTaGl6elNvRHl3WWNJV2dGeUNNT2dwNnB3U3Rzb2tsZ1FqSzBacENjaitMOXhsbjhycEpYanlPWmRaOWpqWnhWN2ZubXc5RnR2OFpxSitYVDRlL2oxZmY5YmpUT3picDFVLzFTL2RXMzI3N3dBQUFBPT0iCiAgICB9LAogICAgInNxbGl0ZV9yZWFkb25seS5weSI6IHsKICAgICAgInNoYTI1NiI6ICI5MDkzYzY0ZjdmMGUzOWIyNDlkYTlmZWZkZjVhYWY0ZTQyNThiYzMxZTdhMjdmZDg4ODQ3OWNlMzI5YTIwNTA5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDQ2MTAsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNVZZYlcvYk5oRCs3bC9CWmNBa1piTHlzcWJBa2hwRGxxVlpnZVpsU2J0aENBS0JGazgyRjBsMFNTcU5XL1MvNzQ0U1pmbWxhZU12TnQvdWpuZlBQWGYwMXRiV2xZYWhta0hGVERhRmt1L0l5c0pFU3p2ZnlWUmRXVGJUU3VWSHpGaFJ5REZUVlRHUFdRVVBvRm1tS21OMW5WbkRicXpTa0d4dGJRMWtPVlBhTXE0bk02NE5ESEt0U3RwcDRkR1NnSFk5SzVTUjFjUnZuM0l6eFZVL1ZNYi8wdUIvR2N1dC8vMmZVVlVqZWNidHRDZjJDb2ZkZ1ErRnRQRExZREFRa0ROWm1SbGtOdFhBQlYwaXBKTXgyNDVaU3JhQVNFM0ZaMmFxN09nMUx3eEVod09HSDlyRlJrNnVPeEc1V1ptelNsbTNtRWlUNXJLQU1HSktkek5tWGhheXVnOWJLZlRSWEJwZ2YvT2lobE90bFE0RGVKVEdvaE5RVnRVZVFHL0xCMjZCQ1c3NW1PTUJEUjlxcVVFRWplWmFTelRIcWRGZ1ZQR0FpaE51VXB4SEMzNW13VytsRWpEU0tzQkJHUHdreTdKR1NRV005Z0l5ZS9XeURQQ3VMR2lsLytpZGxweW9xa0ozU1ZYNTRMR1NWM3dDSlNBbW9CS0dXYzBydzkwZWM4U2taVUtCY1g1eE9oSW44YU5FLzdYQkRyM3dyQkVlb3RFeDNXajBUdGNRTXl0TFVMVWRIVVFSNDRhSjhjSjVZcHpBSTJTMWhUQzR1ajQrT3o5bUgyclE4NVJDT2JxOGFPMWYzZnI3NmRtYi9ocWkxdENWUnBzRTFnWjAydTRJb2lRSG0wMVZoZjY5M2IzckpLQUx2WkFmUnV4Z1llSG1FTTk4Y25YeGxJMkxtbVE3T01MNDVxaVlsWEtpdVhXYSs3bzJtTm5sWjRvaXNudHZLUzhLQkFEYWRCc0c2ajZJbzd0djJVYVpNQ1QvTFVReUo3SzFTZlJNS1dRTzJUd3JBRjMzdWVJbEhDNlpkblA2OXZUa0hUdTVmSC94THR5TzJPdnJ5M05HQ0hUUSs1b3ZsejQ1Wmc4Smpwc3phQk1MeWNaTWFXR0NtQVdkQ2FtZmpPTE5valo5TU5zZUVMa3JrdHE1NXduQ2NBcEU4N0lrUHhsRlh4WVpENll1TEhrc2FNTGRvZXZRZzZndkEyZTczNXNNQ2pBM3h1b1J0d21KeWJQQi8wU1JFQzlIb1RuRXpxNHYzMSt4My85dDlxQ1pHeldZZWx4S1E0YVpaNnJwbmZ4T1hSM29VSk5ETEhPSWRCbWRZdDZrbERlNDFuQkRZS2pDcEYzSlFYUWVNa2ZVWC9xWnIxVlJqSG1HeER0b0ltQnJYYldCV0NrRUswVFkxZ040cEVXYW4vTDlnNWN0ZjJOaHU2UkU0WjZmOFRmSzVySUNFVE1zUko4d3hVc2NEcWtVc0k1Y0hmdFZpdjF6L0JaM0licE5NbkFDVHpCZHNZS1d0VUV5TllSNGFhYW9QQ3RxSXg5NkVqTDBDZEhDRGhjbHBnU1dETHVEQWoraTQwREhqRmZDeVRQMWJJWTIyU2tWRE1vT0VIMnpNSlFUVkpPd0MxZTRpWEFvMzJoN1FlbzhPeldjL2NiWERIYnoxMXZVd3lndWhzbEpoU0dnb05MS24rZWszSGNDWkNYc0lBdFZFOXdoQldSWS9CdHBwNzdLK1drVTUyeks4UEpLekJrODRFS1Z3UkVSNDVSMklrY0tLQUREc09NSWFhWUlMQ0x4c1hpNk1tTWprdGRGVVhMa25GQUh0N3ZEWC9rd3Yvdjg4c1dYWUQzQXBPd0NxZW5wUW8xbHp2dXpDMDNqMDlVQ1RSQXJFUnJrMHRCaUd3UzIxd1RJS2xkb2RET2ZGSlFnNFJMaHU5cUFzOGxOK3VibSt2UXNwQk9Kc1NtVmRkZGkrTlh6eXo5T1YxYVIvWGZWeTkxZDJ1WlhLdGRXNE1yZXQydFYwM3BRcVM1ZzZNNHRjTmdHYStXMnZTUWpoVzdPQlhlMGNNSmEyN1RMWHJsTlpKNlJuNEM5d2txNnQ4KzIyZDd1L292dDdmMm5ZakhHcHJTSDdzN0FEV0h3Z090M1lRUTFLNjNFVGdWNWVjRWRsQTZtem5QNTZDcFBNUHpJQzZLa29abVdRYlRzdWlaNkhudklSODBWc2R3MUVxS2wzWGhwWlJMWHNSV3U0elByc0ZpQnh5cCsxdmZsWFh4cktTaTYzcDgwN0VWL3NyeUt3OE9OcFc3ZHo1MWpXeTkyQ0dpU3ZBK0FubFd0QzBjajFualFjWVEzeHNXYU1QcHNHL0I1ME9OUWJEWTdoaUpxMnRDdnJJZjd0akh0RHQzYlpZMkFoN2l6VGxZcVhqSjFNU3FwTTAwcnM0NzVUcnhiR1VOT1Jhb2p1bEVQZ2gwcUc5cm9ZL0tCcm95YjIwZFEwakJUanhkY0dYRUlvcHFJWGRFNGNCMHlRZzk0dWV4TkF2SzRVTmpGSVk2cFNJUUZMOGVDSDdhN0UvSlkyQ1phRkxOeEVHd0Fvak1wcVdlSVFnaWR1TFc3TjF1bThPZ3Y1RlBjanluVUsyejdWR0t2VmRHV1gxdTh0YzcxNVh2UktidjNLWHJ2S3crOHRkY2Q5UlBOU1o2amU3N0tWS0ZiN21EU2pSeE91aEhtVzI4MFdSb1JpSndYUXA5L1RwSWZPRUc5dkkzN2FSb3ZNV1QwTE1lMXFGeE4xYWRENDBwTGgxYmFzSUxtN3pCaFVTM2FtQWw4M0ZFOVg0MVpDeUVYT216TDZGMmFVdk9mcG80NjBwUXVrNmFCZjROcjR3TGwvMVJJanZXa3BvZm9sVnNKQlpoTXl4a3BHS1dwVUZtYVJyMlRDUmNpNWUwUnBQYWhHQ08xMi9rTVJsY09JNzUyOUxHaEo4WTl0SjBBOTBVaWZDSmJQVi80QXdzbnlxWC9KQkpSbHpNVHJrR1JUaVppak9sbWxMYnBQY3hObzZ1UmhuMGZ6Q3gyU3ZTRmwxaDE5YzNjV0NpeGtiTDlWMXY3aEZ6N3cyYkNYY3ZtS0pGNnF1YlBtYmFCZEUxMXhOeC9KOVQyRFA0SHBST2Jud0lTQUFBPSIKICAgIH0KICB9Cn0K" + } + ] + }, + "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-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json new file mode 100644 index 0000000..ed80aea --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/memo.json @@ -0,0 +1,117 @@ +{ + "id": "infd-20261011-zlib-remediation-r1", + "version": 1, + "question": "Approve the exact fixed zlib image release and protected drill, with expressly bounded manual service-outage rollback preserving the latest database?", + "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. Newexplicitconsent also allowsmanualsame763/c96outage-onlyrollback\u226430minanddeadline fromretainedrootconfirmedpre-releaseacceptance; laterrevocationuncheckableduringoutage disclosed. No401/403/revoked/conflict/mismatch/healthyservice orotherphasefallback; item19proposed.", + "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. Explicitly preauthorize ONLY manual same763/c96/latestDB-preserving recovery afterfailedf558serviceoutage: cachedrootconfirmedacceptancefreshbeforerelease, newprivatehashlinkedcache/journal, freshrootoutagewitnessandnativefailedcandidate/sealedcustody. \u226430minfromreleaseANDbeforedeadline. Duringoutage laterrevocationcannotbechecked; founderexpresslyconsentsthisboundeduncertainty. No401/403/revoked/conflict/mismatch/healthyservicefallback; nootherphase/future/customerreuse. Recoveryverifyrequirescompletedsamejournalrollbackandhashlinkedoriginaloutageplusrecovered763/c96Ready1. Ordinaryfreshoutcomespreferred; no currentPDP/approval/taskclosureclaim. Close-downchecklistitem19isproposeduntilthisactualacceptance." + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "decision-packet-md", + "label": "decision-packet.md", + "hash": "sha256:670b5b01e237b551f64f46f00271beba50a2b7652c769990e525c08a3d18809b" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:7fff0df04402d2c2979aa4e85396c4490f6ce0ef04fec944e880cada8617b5b9" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:446c172a1847a2c72f8cdb47223de849392fd8de23aff07dcea55302cc3a0bd7" + }, + { + "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:ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138" + } + ], + "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" + } + }, + { + "id": "bounded-manual-outage-recovery", + "item_id": "decision-packet-md", + "note": "This NEW human term explicitly accepts inability to check laterrevocation during a failedcandidate serviceoutage, solely for manualsameimage763/sourcec96/latestDB-preservingrollback\u226430minutesfromactualreleaseANDdeadline. Rootconfirmedacceptancecache andfreshrootoutage/sealedcustody checks required. No401/403/revoked/conflict/mismatch/healthy-service/other-phase/future-customer fallback. Item19 remains PROPOSED until acceptance; ordinaryfreshgate preferred.", + "required_ack": true, + "severity": "warning", + "locator": { + "kind": "section", + "heading": "Explicit recovery decision" + } + } + ], + "sealed": false, + "approval_id": null, + "approval_binding_digest": null +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md new file mode 100644 index 0000000..ac80810 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/native-backup-restore-protocol.md @@ -0,0 +1,38 @@ +# 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. + +Refinement 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. + + +## Proposed explicit manual service-outage recovery consent + +Close-down checklist item19 in the-custodian/docs/security-close-down-checklist.md is PROPOSED ONLY until the founder accepts this exact new packet. This term changes the recovery authority dependency for this trial; previous T04 approval and owner source reviews do not grant it. Ordinary fresh native sourceT05@1 confirmed founder readback remains preferred for every phase. No standing recovery/autopilot/signed grant is created. + +Before release, root freshly authenticates the independently confirmed acceptance of these exact terms, marks its scoped receipt bounded_outage_rollback_pre_authorized=true, and captures exact receipt/outcome bytes into a unique0600 release-authority-cache.json in this trial's0700 ignored custody. Hash is recorded in durable release journal before remote effect. Cache is historical confirmed acceptance, never fabricated current outcomes. During failed-candidate service outage the ability to check subsequent revocation is unavailable. The founder explicitly accepts that narrow uncertainty for manual supervised rollback only, for at most30minutes from the actual durable release attempt AND beforeOct12 deadline. Root must personally evaluate the exact bounded recovery receipt; no agent promotion or automatic grant. + +If fresh source1 readback is unavailable, a separate fixed private /tmp/security-infd-zlib-root-recovery-receipt.json must record fresh≤120second structural unavailable evidence (transport unavailable orHTTP502/503/504), rootmanualverification, exactproposal/source/memo/cache/releaseattempt/DeploymentUID/configmapUID/PVCUID and sameimage763/sourcec96 rollback scope. No401/403/explicitrevocation/currentconflict/identity-or-scope-mismatch/healthy-service fallback. Cached consent must have been rootverified≤120seconds before this release. Native rollback independently requires actual candidateimagef558 at exactnewsource andReady0 plus sealedDeployment/config/PVC. It changes only existingApplicationsource and oneDeployment, prune=false, while retaining latestschema5database; no candidatePod/DB open is required. No drill/backup/copy/release/normalverify fallback is permitted. A rejected current outcome is never disguised as an outage. + +Fallback rollback-verify after completed recovery requires COMPLETE rollback in this same private journal, hashlinked original outage/failed-candidate witness, current recoveredimage763/sourcec96/Ready1 and sealedcustody. It does not require a candidate that has already been recovered. Original outage evidence is retained unchanged. Actual PDP preservation can remain unavailable or rejected; no currentapproval/PDPsuccess or taskclosure is inferred from rollback. Ordinary fresh outcome receipt is preferred once restored. Beyond30minutes/deadline or any mismatch, stop and obtain a new independently available founder disposition; neither expiry nor uncertainty grants emergency authority. Item19 is closed by actual disposition/trial outcome, preserving ordinaryfreshgate with no future/customer-production reuse. Standing recovery, if wanted later, needs separately reviewed independently obtainable authority. + +Post-Ready provider command now emits only strictly bounded typed review IDs/state/stale and disposition IDs/version/verb/actor identifiers/time/approval/submissionstate. It omits note/reasons/unknown/freeform fields and static failure output never echoes raw errors. Actual ownerPod verification also refuses any nonempty ephemeralContainers; current native estate is not claimed to have this drift. Document command-local content is deduplicated by digest while memo preserves both labels; actualtypedmemo/documents/intake andHTTPbodylimit are tested. diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py new file mode 100644 index 0000000..28cfea6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py @@ -0,0 +1,78 @@ +"""Fixed admitted StateHub-Pod source1 readback after verified candidate Ready. + +Root never reads the credential. Only bounded typed structural metadata leaves +this command; freeform notes/reasons/unknown outcome fields are always omitted. +This is supervised evidence, not an autonomous grant or a provider verdict. +""" +import datetime +import json +import re +import urllib.request +import urllib.error + +MEMO_ID = 'infd-20261011-zlib-remediation-r1' +IDENTIFIER = re.compile(r'[A-Za-z0-9=,._:@/\-]{1,256}') +UUID = r'[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}' +VERBS = {'comment','discuss','return','forward','escalate','acknowledge','accept','decline','withdraw','configure'} + + +def require(value): + if not value: + raise ValueError('invalid bounded structural metadata') + + +def identifier(value, prefix=''): + require(isinstance(value,str) and re.fullmatch(prefix+UUID,value) is not None) + return value + + +def safe_disposition(row): + require(isinstance(row,dict)) + result={} + if 'id' in row and row['id'] is not None: + result['id']=identifier(row['id']) + state=row.get('submission_state') + require(state in {'confirmed','unresolved','pending','failed'}) + result['submission_state']=state + value=row.get('disposition');require(isinstance(value,dict)) + actor=value.get('actor');require(isinstance(actor,dict) and actor.get('kind') in {'person','agent','service'}) + require(isinstance(actor.get('sub'),str) and IDENTIFIER.fullmatch(actor['sub']) is not None) + require(value.get('verb') in VERBS and type(value.get('memo_version')) is int and value['memo_version']==1) + stamp=value.get('at');require(isinstance(stamp,str) and len(stamp)<=40) + try:parsed=datetime.datetime.fromisoformat(stamp.replace('Z','+00:00')) + except ValueError:raise ValueError('invalid bounded structural metadata') from None + require(parsed.tzinfo is not None) + approved=value.get('approval_id');require(approved is None or isinstance(approved,str) and re.fullmatch(UUID,approved) is not None) + result['disposition']={'id':identifier(value.get('id'),'disp-'),'memo_id':identifier(value.get('memo_id'),'review-'),'memo_version':1,'verb':value['verb'],'actor':{'kind':actor['kind'],'sub':actor['sub']},'at':stamp,'approval_id':approved} + return result + + +def safe_outcome_metadata(value): + require(isinstance(value,dict) and value.get('memo_id')==MEMO_ID) + review=value.get('review');require(isinstance(review,dict)) + require(type(review.get('stale')) is bool and review.get('intake_state') in {'ready','pending','failed','unresolved'}) + rows=value.get('dispositions');require(isinstance(rows,list) and len(rows)<=32) + return {'memo_id':MEMO_ID,'source_memo_version':1,'review':{'memo_id':identifier(review.get('memo_id'),'review-'),'intake_state':review['intake_state'],'stale':review['stale']},'disposition_count':len(rows),'dispositions':[safe_disposition(row) for row in rows]} + + +def main(): + from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file + request=urllib.request.Request(ORIGIN+'/v1/decisions/'+MEMO_ID+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) + opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) + try: + with opener.open(request,timeout=15) as response: + require(response.status==200) + raw=response.read(1048577);require(len(raw)<=1048576) + result=safe_outcome_metadata(json.loads(raw)) + result.update(observed_at=datetime.datetime.now(datetime.timezone.utc).isoformat(),native_authenticated_canonical_lifecycle_outcomes=True,native_provider_path_returned=True,credential_material_output=False) + print(json.dumps(result)) + except Exception as error: + result={'memo_id':MEMO_ID,'status':'unverified','failure':'native_readback_unavailable_or_invalid'} + if isinstance(error,urllib.error.HTTPError) and type(error.code) is int and 100<=error.code<=599: + result['http_status']=error.code + print(json.dumps(result)) + raise SystemExit(1) from None + + +if __name__=='__main__': + main() diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json new file mode 100644 index 0000000..102cb4e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/proposal.json @@ -0,0 +1,60 @@ +{ + "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": "5d373de0b737d586fad3428f58bbd977cbe7fda880fec556805236f84c450b9e", + "execution_bundle_sha256": "ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138", + "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", + "bounded_outage_rollback_pre_authorization": { + "status": "proposed-only-unapproved", + "close_down_checklist_item": 19, + "scope": "manual same763/c96 oneDeployment preserving latestDB, failedcandidate outage only", + "maximum_seconds_from_release": 1800, + "deadline": "2026-10-12T23:59:59Z", + "normal_fresh_readback_preferred": true, + "unavailable_revocation_check_disclosed": true, + "forbidden": [ + "401", + "403", + "revoked", + "conflict", + "identity/scope mismatch", + "healthy service", + "other phase", + "future/customer production reuse" + ] + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json new file mode 100644 index 0000000..6b41e68 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/submission-proof.json @@ -0,0 +1,14 @@ +{ + "kind": "source-only-native-authoring-packet", + "memo_id": "infd-20261011-zlib-remediation-r1", + "source_memo_version": 1, + "memo_sha256": "0dfd6454405cf6a0b08d48443c532e9396c426ed164b3f59ecfb84389193050d", + "intake_sha256": "7864b23f4fcf3d9aa95759a9e91994771b722c482e83ced868812c050fdd91be", + "lifecycle_commands_sha256": "7b658eddf4177ca12125c9e75eb5a1412197e11254a571e16bb2780323702a06", + "register_bytes": 204591, + "document_count": 12, + "documents_hashes_verified": true, + "execution_bundle_lossless_verified": true, + "native_submitted": false, + "founder_approval": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json new file mode 100644 index 0000000..1bad67a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json @@ -0,0 +1,3369 @@ +[ + { + "repo": "informed-decision", + "path": "deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": null, + "staged_sha256": "670b5b01e237b551f64f46f00271beba50a2b7652c769990e525c08a3d18809b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": null, + "staged_sha256": "43839e7c698dcc29472e14959c1c71970de6a305118414516245194a2399d6a1" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": null, + "staged_sha256": "db38ac605b48ce5c83b4fc5eb323ad34f06fa60a445f9ef276b302d358aa45fb" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": null, + "staged_sha256": "5d373de0b737d586fad3428f58bbd977cbe7fda880fec556805236f84c450b9e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": null, + "staged_sha256": "b064f14abdb14598a5d5c6fef0bad2f77b0a5854388f033c25003f210a2836da" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-final-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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": null, + "staged_sha256": "22ba8e719113976ed780e17c25f089da17ded60db0c3c90525d8189c8ef1e20e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "original_sha256": null, + "staged_sha256": "ce0b0a209cc72b35e9bb9a9a131b7786a6d5d2c12c1bc7a70f8af438c9227138" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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-final-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/initial-f170b34d/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/archive-map.json", + "original_sha256": null, + "staged_sha256": "68e79957aaaaa65252700db528caf651751f36b71d71a356efef7366859e84e5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/admission.candidate.json", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/registries.candidate.json", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/deploy/lifecycle/service.candidate.json", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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-f170b34d/owner-snapshot/informed-decision/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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": null, + "staged_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/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-final-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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "original_sha256": null, + "staged_sha256": "7864b23f4fcf3d9aa95759a9e91994771b722c482e83ced868812c050fdd91be" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": null, + "staged_sha256": "7b658eddf4177ca12125c9e75eb5a1412197e11254a571e16bb2780323702a06" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "0dfd6454405cf6a0b08d48443c532e9396c426ed164b3f59ecfb84389193050d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": null, + "staged_sha256": "446c172a1847a2c72f8cdb47223de849392fd8de23aff07dcea55302cc3a0bd7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json", + "staged_path": "/tmp/infd-zlib-release-final-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-final-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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": null, + "staged_sha256": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json", + "staged_path": "/tmp/infd-zlib-release-final-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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": null, + "staged_sha256": "7fff0df04402d2c2979aa4e85396c4490f6ce0ef04fec944e880cada8617b5b9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "staged_path": "/tmp/infd-zlib-release-final-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/review-history/platform143/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json", + "original_sha256": null, + "staged_sha256": "247e340f77b892a7997e112405e1e05ec959fe441222069909cc7f3da6231201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "original_sha256": null, + "staged_sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "original_sha256": null, + "staged_sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": null, + "staged_sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "original_sha256": null, + "staged_sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "original_sha256": null, + "staged_sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "original_sha256": null, + "staged_sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "original_sha256": null, + "staged_sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json", + "original_sha256": null, + "staged_sha256": "932ced6cbd48c84e3442c0ae47c74e2dba8f56ec9444d7efdb28caac2ad48221" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": null, + "staged_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": null, + "staged_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": null, + "staged_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": null, + "staged_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": null, + "staged_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": null, + "staged_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": null, + "staged_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": null, + "staged_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md", + "original_sha256": null, + "staged_sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-final-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-final-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-final-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/root-authority-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json", + "original_sha256": null, + "staged_sha256": "2a39b7dc5bf723c3596b6ffa071936705798e1a6ec674ac1f95fb3f3945949c0" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json", + "original_sha256": null, + "staged_sha256": "67b030c727377c0cc7edb9a1b66385044e7284c29d7a27dccaeaa5042ac7f297" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "staged_path": "/tmp/infd-zlib-release-final-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-final-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-final-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-final-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-final-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-final-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-final-stage/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "original_sha256": null, + "staged_sha256": "912b68eed07e2fbb85cbba8660e054f6efde37a68ce1fbb7879c5db4cb02bed7" + }, + { + "repo": "informed-decision", + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "staged_path": "/tmp/infd-zlib-release-final-stage/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "original_sha256": "af785afbf188184b72563c10813663d44117df7cb7394ecb1b9a25cbdfea67a4", + "staged_sha256": "60fd6b2db75ee6ff4a7cd4a0601051d5ee461d423b59f3cca2facb3b174dde9e" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json b/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json new file mode 100644 index 0000000..31fe756 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json @@ -0,0 +1,18 @@ +{ + "native_effect": false, + "initial67_manifest_sha256": "1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2", + "initial67_manifest_bytes_retained": false, + "initial67_complete_source_snapshot_retained": false, + "initial67_note": "Not snapshotted before unannounced81 amendment; knownhash preserved, exact reconstruction audited separately if possible. No fabricated claim of retained original bytes.", + "initial81_manifest_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "initial81_complete_source_snapshot_retained": true, + "draft29_manifest_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "draft29_complete_source_snapshot_retained": true, + "defects": [ + "Main dispatch passes operation_intent to remote without matching parameter", + "Remote payload lacked snapshot_identity/operation_intent", + "Fresh scan gate accepted empty/truncated result coverage under rootreceipt metadata", + "Owner review began67; unauthorized stage churn observed81" + ], + "same_trial": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/proposal.json b/docs/evidence/2026-10-11-zlib-image-release/proposal.json new file mode 100644 index 0000000..7bc538d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/proposal.json @@ -0,0 +1,60 @@ +{ + "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": "d871081999215bd3850ab1173064ed6cb6d7c23b26d9c3d5b3c5940e698d4c61", + "execution_bundle_sha256": "2ad65818444a72df7e6543575ba04a998e92b42d557409726a54fba116b5249d", + "rollback_preflight_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "post_ready_native_provider_probe": "Fixed canonical SOURCE T05@1 authenticated GET inside existing StateHub dispatcher: HTTP200/timestamp plus has_review/disposition_count only. Request identity explicitly derived from fixed route; no bodyexport/dispositioninterpretation/approvalinference. Actual native service response shape verified synthetically with no database/provider.", + "fresh_scan_contract_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "preparation_failure_history_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "bounded_outage_rollback_pre_authorization": { + "status": "proposed-only-unapproved", + "close_down_checklist_item": 19, + "scope": "manual same763/c96 oneDeployment preserving latestDB, failedcandidate outage only", + "maximum_seconds_from_release": 1800, + "deadline": "2026-10-12T23:59:59Z", + "normal_fresh_readback_preferred": true, + "unavailable_revocation_check_disclosed": true, + "forbidden": [ + "401", + "403", + "revoked", + "conflict", + "identity/scope mismatch", + "healthy service", + "other phase", + "future/customer production reuse" + ] + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/published-verification.json b/docs/evidence/2026-10-11-zlib-image-release/published-verification.json new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/published-verification.json @@ -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-zlib-image-release/review-history/platform143/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json new file mode 100644 index 0000000..c824eab --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/archive-map.json @@ -0,0 +1,740 @@ +[ + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "repo": "railiance-platform", + "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", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "path": "intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json new file mode 100644 index 0000000..ef00ac8 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json @@ -0,0 +1,863 @@ +[ + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json", + "original_sha256": null, + "staged_sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json", + "original_sha256": null, + "staged_sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": null, + "staged_sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-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", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-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", + "original_sha256": null, + "staged_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py", + "original_sha256": null, + "staged_sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json", + "original_sha256": null, + "staged_sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json", + "original_sha256": null, + "staged_sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "railiance-platform", + "path": "intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "staged_path": "/tmp/infd-zlib-release-platform-final-review-stage/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "original_sha256": null, + "staged_sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json new file mode 100644 index 0000000..2c3dc1a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json new file mode 100644 index 0000000..605f4da --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 new file mode 100644 index 0000000..d12207f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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 new file mode 100644 index 0000000..3ee1ded --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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 new file mode 100644 index 0000000..269ae42 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..a56e107 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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; 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. + +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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..5aae51c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..b897ef9 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..31cbd1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..c0ce95b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..3af5f7a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..3708e0d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,147 @@ +[ + { + "original_path": "deploy/lifecycle/admission.candidate.json", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/admission.candidate.json" + }, + { + "original_path": "deploy/lifecycle/kustomization.yaml", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/kustomization.yaml" + }, + { + "original_path": "deploy/lifecycle/registries.candidate.json", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/registries.candidate.json" + }, + { + "original_path": "deploy/lifecycle/service.candidate.json", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/deploy/lifecycle/service.candidate.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/decision-packet.md", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "archive_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" + }, + { + "original_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..0b5744a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..b88546d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..b81024f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..2a0b2c8 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..9da2804 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,59 @@ +{ + "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-awaiting-independent-owner-acknowledgments", + "executor_files": { + "actuator.py": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "authority_journal.py": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "native_program.py": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "receipt_safety.py": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + "case_files": { + "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", + "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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..04cb285 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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(0 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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..27b8bb7 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,393 @@ +"""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 +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) + + +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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..90bc2fc --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,101 @@ +{ + "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:763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "item_id": "proposal-json", + "label": "proposal.json", + "hash": "sha256:48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "item_id": "native-backup-restore-protocol-md", + "label": "native-backup-restore-protocol.md", + "hash": "sha256:f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "item_id": "native-preflight-json", + "label": "native-preflight.json", + "hash": "sha256:56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "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-plan-json", + "label": "execution-plan.json", + "hash": "sha256:9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + } + ], + "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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..5c0ac3a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..5e12288 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,37 @@ +{ + "kind": "informed-decision.supervised-release-proposal", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "trial_id": "infd-zlib-20261011-r1", + "state": "prepared-awaiting-independent-owner-acknowledgments", + "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": [ + "fresh rollback server admission", + "exact committed owner rendering revision", + "Product and Platform final acknowledgments", + "confirmed founder exact new disposition" + ], + "published_verification_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "native_readonly_preflight_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "executor_plan_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..0e1ccaf --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..9806488 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..9074439 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..aca7f5c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..41a876c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,20 @@ +"""Run only inside existing admitted StateHub Pod AFTER verified candidate Ready. + +The fixed existing dispatcher loads its internal credential; root never reads +it. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an +advisory verdict emission or a substitute for separate evidence obligations. +Root records this bounded metadata receipt with verified PodUID/image/source. +This preparation only writes source; no request is made here. +""" +import datetime,json,urllib.request,urllib.error +from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file +id='infd-20261011-zlib-remediation-r1' +req=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) +opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) +try: + with opener.open(req,timeout=15) as response: + raw=response.read(1048577) + if len(raw)>1048576: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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..b861731 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,39 @@ +{ + "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": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "execution_bundle_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "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" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..ff52810 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..99d5931 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -0,0 +1,13 @@ +{ + "kind": "source-only-native-authoring-packet", + "memo_id": "infd-20261011-zlib-remediation-r1", + "source_memo_version": 1, + "memo_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "intake_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "lifecycle_commands_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "register_bytes": 259129, + "document_count": 13, + "documents_hashes_verified": true, + "native_submitted": false, + "founder_approval": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 new file mode 100644 index 0000000..249eb1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 new file mode 100644 index 0000000..4502f07 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 new file mode 100644 index 0000000..a05b39b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..fbb466a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,23 @@ +--- +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. diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py new file mode 100644 index 0000000..9dfc1eb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py @@ -0,0 +1,22 @@ +"""Synthetic adapter/public scan boundary probes; no main/native/database/provider access.""" +import ast,copy,datetime,importlib.util,json,subprocess,sys +from pathlib import Path +from unittest.mock import patch +root=Path(sys.argv[1]);sys.path.insert(0,str(root));import actuator,native_program,test_execution +from authority_journal import fresh_scan +actuator.CASE=root.parent +results={};captured=[] +def fake(argv,body=None,**kwargs): + captured.append(json.loads(ast.literal_eval(body)));return subprocess.CompletedProcess(argv,0,'{"all_checks_pass":true}','') +intent={"state":"COMPLETE","result":{"fixture":True}};snapshot={"fixture":"exact-backup-receipt"} +with patch.object(native_program,"PROGRAM","__PAYLOAD__"),patch.object(actuator,"run",side_effect=fake):actuator.remote("verify","e"*40,{},snapshot_identity=snapshot,operation_intent=intent) +results["remote_keyword_and_exact_payload_fixed"]=captured[0]["snapshot_identity"]==snapshot and captured[0]["operation_intent"]==intent +contract=json.loads((root.parent/"fresh-scan-contract.json").read_text());receipt=json.loads((root.parent/"fresh-scan-receipt-template.json").read_text());receipt.update(completed_at="2026-10-11T10:00: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,exit_code=0) +try:fresh_scan(receipt,{"Results":[{}]},contract,datetime.datetime(2026,10,11,10,tzinfo=datetime.timezone.utc)) +except (ValueError,KeyError):results["original_partial_zero_scan_now_refused"]=True +fixture=test_execution.FixedNativeProgram();objects,payload=fixture.fixture();template=copy.deepcopy(objects["deployment"]["spec"]["template"]["spec"]);template["ephemeralContainers"]=[{"name":"unrelated-debug","image":"unrelated:mutable","securityContext":{"privileged":True}}] +objects["pods"]={"items":[{"metadata":{"name":"fixture-pod","uid":"c4cb1550-feda-4097-9de4-d891a657b662","ownerReferences":[{"kind":"ReplicaSet","name":"fixture-rs","uid":"rs-uid"}]},"spec":template,"status":{"phase":"Running","containerStatuses":[{"name":"informed-decision","ready":True,"imageID":template["containers"][0]["image"]}]}}]} +result,writes,calls=fixture.execute_fake(objects,payload) +results["unrelated_privileged_ephemeral_container_not_refused"]=result["all_checks_pass"] is True and len(writes)==1 +print(json.dumps(results,sort_keys=True)) +if not all(results.values()):raise SystemExit(1) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json new file mode 100644 index 0000000..26735f4 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json @@ -0,0 +1,68 @@ +{ + "review_id": "RPF-REVIEW-20261011-INFD-ZLIB-NATIVE-R2", + "work_record": "RPF-IN-0009", + "role": "railiance-platform technical owner only", + "status": "changes-requested-batched-boundary-refinement", + "release_manifest_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "release_paths": 143, + "published_manifest_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "all143_source_hashes_and_plan_bindings_verified": true, + "synthetic_test_methods_independently_passed": 25, + "original_blockers_fixed": [ + "Remote signature and operation/snapshot payload plumbing.", + "Exact ImageID622/source labels/11diffIDs/rootfs/44 canonical package identities/38OS6Python/zlibr1 report coverage and fresh DBNextUpdate/4h-zero requirement." + ], + "remaining_findings": [ + { + "id": "actual-pod-ephemeral-custody", + "required": "Refuse unrelated nonempty ephemeralContainers before DB inspection and release write.", + "independent_probe": "Synthetic privileged unrelated ephemeral container currently passes native gate and reaches one scoped patch." + }, + { + "id": "post-ready-output-custody", + "required": "Bounded typed allowlist for actual canonical outcomes receipt; omit freeform notes/reasons/unknown fields and prove sentinel withholding.", + "source_observation": "post-ready command emits entire review and nested disposition without field filtering; Product separately probed." + }, + { + "id": "recovery-authority-availability", + "required": "Explicitly owner-reviewed bounded supervised recovery authority contract or truthful unavailable-service stop/recovery limitation; no implicit autonomous grant or global fresh-readback relaxation.", + "source_observation": "Rollback still requires canonical native INFD outcomes <=120 seconds; failed candidate can make same authority service unreachable despite removing candidate Pod/DB prerequisites." + } + ], + "history": { + "previous_owner_manifest_sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c", + "previous74_owner_files_manifest_map_exact_archive": true, + "current143_current_source_subset_archive": "reviewed-143-f170b34d; scope explicitly selected current files plus source manifest/mapping", + "original67_fullsnapshot_absence_preserved": true + }, + "scope_limits": { + "technical_agreement": false, + "native_actions": false, + "private_database_access": false, + "credentials_read": false, + "owner_source_write": false, + "push": false, + "human_approval": false, + "T05_complete": false, + "other_owner_role": false + }, + "proposed_recovery_refinement_awaiting_code_review_and_new_founder_decision": { + "actor": "root explicit preparation choice", + "prior_acceptance": "independently root-confirmed exact same new decision retained before this release only", + "bounds": "at most30minutes after release and before2026-10-12T23:59:59Z", + "scope": "manual supervised763/sourcec96 Deployment-only latest current schema5 database retaining rollback; exact source/image/UID/config/PVC/journal pins", + "requires": "unavailable transport or502/503/504 evidence AND failed candidate placement", + "forbidden": [ + "401", + "403", + "explicit revocation", + "invalid signature", + "conflict", + "backup fallback", + "release fallback", + "signed or autonomous grant" + ], + "disclosure": "Later revocation cannot be queried while service unavailable; new human proposal must expressly permit bounded recovery.", + "status": "not yet implemented/reviewed/approved" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json new file mode 100644 index 0000000..ef4f28d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json @@ -0,0 +1,215 @@ +{ + "scope": "selected current-source bytes; historical source archives remain source-owner manifest bound, not all143 source files copied into this owner review", + "files": [ + { + "path": "deploy/lifecycle/admission.candidate.json", + "archived_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461" + }, + { + "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/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-zlib-image-release/execution/execution-plan.json", + "archived_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", + "sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b" + }, + { + "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/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-zlib-image-release/execution/receipt_safety.py", + "archived_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", + "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/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-zlib-image-release/execution-bundle.json", + "archived_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", + "sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + }, + { + "path": "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/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-zlib-image-release/fresh-scan-receipt-template.json", + "archived_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", + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "path": "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/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-zlib-image-release/installed-zlib-proof.json", + "archived_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", + "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/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json", + "sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844" + }, + { + "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/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/memo.json", + "archived_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", + "sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "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/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-zlib-image-release/native-preflight-full.json", + "archived_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", + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "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/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/native-preflight.json", + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "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/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-zlib-image-release/preparation-failure-history.json", + "archived_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", + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" + }, + { + "path": "docs/evidence/2026-10-11-zlib-image-release/proposal.json", + "archived_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", + "sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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-full.json", + "archived_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", + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "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/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json", + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "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/reviewed-143-f170b34d/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/reviewed-143-f170b34d/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/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-zlib-image-release/sealed-native-dependencies.json", + "archived_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", + "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/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-zlib-image-release/sqlite_readonly.py", + "archived_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", + "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/reviewed-143-f170b34d/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json", + "sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "path": "workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md", + "archived_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", + "sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json new file mode 100644 index 0000000..ee40b50 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/original-manifest.json @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json new file mode 100644 index 0000000..c0b7f2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/admission.candidate.json @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml new file mode 100644 index 0000000..2321c6c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/kustomization.yaml @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json new file mode 100644 index 0000000..60ad67b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/registries.candidate.json @@ -0,0 +1,16 @@ +{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-workload-registry", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007 concrete rollout approval required" + } + }, + "data": { + "lifecycle-callers.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"tenant\": \"tenant:platform\"\n }\n}\n", + "intake-submitters.json": "{\n \"system:serviceaccount:state-hub:state-hub\": {\n \"submitter_id\": \"state-hub\",\n \"memo_classes\": [\n \"decision-record\"\n ],\n \"review_groups\": [\n \"net-kingdom-admins\"\n ],\n \"daily_limit\": 50\n }\n}\n", + "review-groups.json": "{\n \"net-kingdom-admins\": {\n \"subject\": \"uid=platform-root,ou=people,dc=netkingdom,dc=local\",\n \"display_name\": \"Platform reviewer\"\n }\n}\n" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json new file mode 100644 index 0000000..c267584 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/owner-snapshot/deploy/lifecycle/service.candidate.json @@ -0,0 +1,800 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "automountServiceAccountToken": false + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "informed-decision-data", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "storageClassName": "local-path", + "resources": { + "requests": { + "storage": "1Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "informed-decision-runtime-6c221878d051", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "immutable": true, + "data": { + "runtime.json": "{\"approval_origin\":\"http://approval-engine.approval-engine.svc.cluster.local:8080\",\"audit\":{\"origin\":\"http://audit-core.audit-core.svc.cluster.local:8080\",\"sender_token_file\":\"/var/run/secrets/informed-decision/audit/token\"},\"evidence_db\":\"/data/private/review.sqlite\",\"intake_attributes\":true,\"intake_delivery\":{\"hub_origin\":\"http://state-hub.state-hub.svc.cluster.local:8000\"},\"lifecycle_delivery\":true,\"lifecycle_policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-lifecycle.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.lifecycle\",\"package_digest\":\"sha256:da01e045fc108adec6b489e5d51f7e57366793016c5a64776963780a6aae457c\",\"version\":\"v2\"},\"ordinary_approval_ids\":[\"2ce76d7f-01c3-4b63-8476-8d1230679769\",\"c2af4bcf-15b4-4305-aac1-acc7e4dcb099\",\"dc22666a-d5d7-46bc-9490-ebe9fe09dc38\"],\"policy\":{\"caller_token_file\":\"/var/run/secrets/informed-decision/policy/token\",\"origin\":\"http://flex-auth-informed-decision-sitting.flex-auth.svc.cluster.local:8080\",\"package\":\"informed-decision.compact-sitting\",\"package_digest\":\"sha256:31be5985c0c1e6b0c3a039ed7310d1e94daf523a94f6d926e6e8d759d3711873\",\"version\":\"v13\"},\"schema\":\"informed-decision.review-runtime.v1\",\"workload_api\":{\"intake\":{\"groups_file\":\"/workload-registry/review-groups.json\",\"secret_file\":\"/var/run/secrets/informed-decision/requester/client-secret\",\"submitters_file\":\"/workload-registry/intake-submitters.json\"},\"lifecycle_callers_file\":\"/workload-registry/lifecycle-callers.json\",\"token_review\":{\"ca_file\":\"/var/run/secrets/informed-decision/kubernetes/ca.crt\",\"origin\":\"https://kubernetes.default.svc:443\",\"token_file\":\"/var/run/secrets/informed-decision/kubernetes/token\"}}}" + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "progressDeadlineSeconds": 600, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "spec": { + "automountServiceAccountToken": false, + "serviceAccountName": "review", + "terminationGracePeriodSeconds": 45, + "securityContext": { + "runAsNonRoot": true, + "runAsUser": 10001, + "runAsGroup": 10001, + "fsGroup": 10001, + "fsGroupChangePolicy": "OnRootMismatch", + "seccompProfile": { + "type": "RuntimeDefault" + } + }, + "containers": [ + { + "name": "informed-decision", + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "securityContext": { + "allowPrivilegeEscalation": false, + "readOnlyRootFilesystem": true, + "capabilities": { + "drop": [ + "ALL" + ] + } + }, + "env": [ + { + "name": "INFD_KEYCAPE_ISSUER", + "value": "https://kc.coulomb.social" + }, + { + "name": "INFD_CONTAINER_CONFIG", + "value": "/configuration/runtime.json" + } + ], + "ports": [ + { + "name": "http", + "containerPort": 8080 + }, + { + "name": "workload", + "containerPort": 8081 + } + ], + "startupProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 12 + }, + "readinessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2 + }, + "resources": { + "requests": { + "cpu": "5m", + "memory": "64Mi" + }, + "limits": { + "cpu": "500m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "data", + "mountPath": "/data" + }, + { + "name": "runtime", + "mountPath": "/run/informed-decision" + }, + { + "name": "tmp", + "mountPath": "/tmp" + }, + { + "name": "configuration", + "mountPath": "/configuration", + "readOnly": true + }, + { + "name": "caller", + "mountPath": "/var/run/secrets/informed-decision/policy", + "readOnly": true + }, + { + "name": "audit", + "mountPath": "/var/run/secrets/informed-decision/audit", + "readOnly": true + }, + { + "name": "kubernetes-api", + "mountPath": "/var/run/secrets/informed-decision/kubernetes", + "readOnly": true + }, + { + "name": "workload-registry", + "mountPath": "/workload-registry", + "readOnly": true + }, + { + "name": "sitting-requester", + "mountPath": "/var/run/secrets/informed-decision/requester", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "data", + "persistentVolumeClaim": { + "claimName": "informed-decision-data" + } + }, + { + "name": "runtime", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "tmp", + "emptyDir": { + "medium": "Memory", + "sizeLimit": "16Mi" + } + }, + { + "name": "configuration", + "configMap": { + "name": "informed-decision-runtime-6c221878d051", + "defaultMode": 292 + } + }, + { + "name": "caller", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "audience": "flex-auth", + "expirationSeconds": 3600 + } + } + ] + } + }, + { + "name": "audit", + "secret": { + "secretName": "informed-decision-audit", + "defaultMode": 288, + "items": [ + { + "key": "token", + "path": "token" + } + ] + } + }, + { + "name": "kubernetes-api", + "projected": { + "defaultMode": 288, + "sources": [ + { + "serviceAccountToken": { + "path": "token", + "expirationSeconds": 600 + } + }, + { + "configMap": { + "name": "kube-root-ca.crt", + "items": [ + { + "key": "ca.crt", + "path": "ca.crt" + } + ] + } + } + ] + } + }, + { + "name": "workload-registry", + "configMap": { + "name": "informed-decision-workload-registry", + "defaultMode": 292 + } + }, + { + "name": "sitting-requester", + "secret": { + "secretName": "informed-decision-sitting-requester", + "defaultMode": 288, + "optional": false, + "items": [ + { + "key": "client-secret", + "path": "client-secret" + } + ] + } + } + ] + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "http", + "port": 80, + "targetPort": "http", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + }, + "policyTypes": [ + "Ingress", + "Egress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8081 + } + ] + } + ], + "egress": [ + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "k8s-app": "kube-dns" + } + } + } + ], + "ports": [ + { + "protocol": "UDP", + "port": 53 + }, + { + "protocol": "TCP", + "port": 53 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "approval-engine" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "audit-core" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "audit-core" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + } + }, + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "flex-auth" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "kube-system" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "traefik" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "state-hub" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "state-hub" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8000 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "10.43.0.1/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + { + "to": [ + { + "ipBlock": { + "cidr": "92.205.62.239/32" + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 6443 + } + ] + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "informed-decision-workload", + "namespace": "informed-decision", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + }, + "ports": [ + { + "name": "workload", + "port": 8081, + "targetPort": "workload", + "protocol": "TCP" + } + ] + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "name": "informed-decision-tokenreview", + "annotations": { + "informed-decision.coulomb.social/admission": "proposal; INFD-WP-0007/INFD-WP-0005 owner review required" + } + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "informed-decision-tokenreview" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "review", + "namespace": "informed-decision" + } + ] + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "approval-engine", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "APPROVAL-WP-0002-T01" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "approval-engine" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-review-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0001-T08 policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-sitting" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + }, + { + "apiVersion": "networking.k8s.io/v1", + "kind": "NetworkPolicy", + "metadata": { + "name": "informed-decision-lifecycle-ingress", + "namespace": "flex-auth", + "annotations": { + "informed-decision.coulomb.social/admission": "review-only; INFD-WP-0001-T08", + "informed-decision.coulomb.social/owner-review": "INFD-WP-0007 lifecycle policy-owner return" + } + }, + "spec": { + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "flex-auth-informed-decision-lifecycle" + } + }, + "policyTypes": [ + "Ingress" + ], + "ingress": [ + { + "from": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "informed-decision" + } + }, + "podSelector": { + "matchLabels": { + "app.kubernetes.io/name": "informed-decision", + "app.kubernetes.io/component": "review" + } + } + } + ], + "ports": [ + { + "protocol": "TCP", + "port": 8080 + } + ] + } + ] + } + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..a56e107 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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; 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. + +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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..52904d1 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,185 @@ +{ + "kind": "informed-decision.supervised-execution-source-bundle", + "version": 1, + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "codec": "gzip+base64", + "files": { + "execution/actuator.py": { + "sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "codec": "gzip+base64", + "uncompressed_bytes": 22015, + "content_base64": "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" + }, + "execution/authority_journal.py": { + "sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "codec": "gzip+base64", + "uncompressed_bytes": 11502, + "content_base64": "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" + }, + "execution/execution-plan.json": { + "sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "codec": "gzip+base64", + "uncompressed_bytes": 4770, + "content_base64": "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" + }, + "execution/native_program.py": { + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "codec": "gzip+base64", + "uncompressed_bytes": 18899, + "content_base64": "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" + }, + "execution/receipt_safety.py": { + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "codec": "gzip+base64", + "uncompressed_bytes": 1036, + "content_base64": "H4sIAAAAAAACA42TTW/bMAyG7/kVnC9yiq4fA3bZ2t626y7DLkVgKDIdC1UkgZK8GsP++yjZSd00A6qTKNEPX76iq6r6Yc0IIVJSMZE0oFyy8bqXoQdChdrHAEpaMCgHhNgjeNKDjAj4jCpF7Sx4TserqqpWLXYTIdSDNAnXX1bAS3dQB4zzGXy4hz8iqB73shmQAjPEJQijO1SjMpgDl+LWPeddSNu9Djkp5FDbiDvScRSXhX1mCULZNo47azxh4zwWfoiOI8Wc0i624u8rgiMoAh9PtW2y4s+L+xcN5Uq4J/Ef0hklG9ABrIvwkxIui76Rd8z8Lk3A0wpHQx8Xzm1md/ntHLXFMByQ3yPvuHqr7e5t27nGAjd7z6y7zDp8xoQWjWZXWBsHW+PU0zkXT3DLBzwyCb2cOdo2ndG7PuaA++807aebZAmDM0MuMo9SXiR1QPiV6d+IHNWizNzH7PNhaiH00uN1iHlUCbsUsP06WR3gt459j6YV68LsWPOOXPKgLdTvmcOFGJ5tacc6jh5rm/ZbpPXh2XhMih3lFO7gZhE9wO3NxcXtp9MZ7l5SWMzkYNG2uZrE1+tF8Xe7MTc+GzH3Tcj//Fxk9Q8H4RSfDAQAAA==" + }, + "execution/test_execution.py": { + "sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "codec": "gzip+base64", + "uncompressed_bytes": 38465, + "content_base64": "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" + } + }, + "native_execution": false, + "case_evidence": { + "artifact-comparison.json": { + "sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "codec": "gzip+base64", + "uncompressed_bytes": 2697, + "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" + }, + "candidate-deployment.json": { + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "candidate-runtime.json": { + "sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "codec": "gzip+base64", + "uncompressed_bytes": 5291, + "content_base64": "H4sIAAAAAAACA61Yy47cyBG8+ysEnd2Nej98sq+GARtYAz4SWVlZEj39WrJb2tHC/+4ostnTs6td+GBBAkZFMiorHxFR8/PH21g//umDVkrpP374+Ond/y7nw8ivw/yZjA9Y/5hrZF3EcQk656qdNEUkVH1LPnvdnC+KueC1pBTFViUbg6+tD6EE8/EN9Hiu0iHVOTj3tL7Go7BAl8vQxoO87f/zx2EYT+N1GPaX1+Xj1qSIcqmQT1YitrAtKEnNuZy9quxbdZkai7E52aQbaWdFJFknOvd9h+FI4+kBaQveCLGRqS42bqpUZY2kkF1WznkVo6faYrAUJLQsLqXEbFms1GzKxzXy6fyFDgMfRjld78g+sFG6VrI+cXFFmtakfcV+upSQfDBckTCxsThKSZWmkT4fSZJBxt8hf75eL3fc2ogYB5OaFKmQiGKixCmWpGrJuSDASKmxjSGKFM41mKApJ+BbuySfbnXc4lQBIQZ8YJ3XiKRwJIc1U1sI1WebvXGsowo+lRSRl1wMuUi6aMXVdjym0/k0Mh3Gb7IdX8dSOJSkmZPNwYaSYwpWSpVWLcK20Vetmsvao6y5NKMTKpGzQbr9Ans+XVEsmTbM5lQ11mgR27wJ0RqblMafINFpNIRBaqKYpHVuaOtWmFHHWoxK+Llj1nG+nOfxOp5PG2qtVWc2zrmWJHAuReEb5ZTz3LQxkZAa7wRj0lQsaLmInX1pSaXcUkeVL2OVE2+H1yELUkfsrTRvHYVakvUFZ0YhjI6R0csFgEU5oyzazDgjRvuMghndIXvJh+tEJ8Q7bcWSSlkplDIhXeJRhpo0UhdIAFV1ZWqZUH+qtk+tV7aqoIqEEKzNtADfyvB1Gq9SiF/uuDmVzERJZXQto0hJuKFbsBkpYsnJ4SgxII1euVZVouDwo/bB60xLE4wo1suWAYrWounxQcmCmIvhZNBLSlMfyZQI/a4q8oFCGa0sDlS59zUTEpLeAIdtCLZyGRzeBoy1Y8+h+YBMNN1q5hiRDzI6gJ9aSiidZIt6gQGsMGF2OT6FOlQ5jF9ker0juxi1NyA0dKvxFZ+yRUcocJtnW6N25H2Ovo+nJkTLyHnDSSv1n+oTMnJ8B8WHVCvoQseswSEJ3V1UdCpIczV6dCjYjExMjQr4gorFPKuAORT8e07ELNOX8dFjGXk1yVM0njGZ0UcthkJmKd5j1gPGj8kJ26yDioRzGTS1z1WQE70AH8Ym/MqHDVMMMoc5N0k8WMqklLliIqiJYomAc1hu1mvvrXLMsWI1BXYOL8t7zIHPxyOd6nwHj6BsBsfUGqVZW1lxq9GwRmcKIfGpgr1BtE0I3RFSNRHN4QPlohDSe/BnRnQle2d09Q5d3pQDz6rimgMbZFbaumxRJopRGWOpOJ8iONfrvoYjvAeeMMvy9Q5dQg0Z08PoMiumOY2R0gongSBqSCCIogVGOUlplBXlxUyCbxODVE1+D/2+gKazv0nKQFcDEi6IprhUI9q/609kYAWNqa2U0DitGZMsZRzXo+zqPfZt3LrYJUHFM2rOLkVBGNVVcEO0itANEEYIZ+3MBm6srTUU0RL+FEiPWubjKMfzHS7kqDzisWilUAXlcpaM6yWj5kX7HnincvboLWohawiDCx7ik4pfknseK29wxTiMS/YWAoKTa6RJoytiRNVRMSRTZ5BaTZhkHbgLDRpjwcVf/2YdtjH4f3iUSWYINz2LgsOZmCtYG4PJTuPoRvWJqkVEgfYLAKXgPwRB7oqGdnIevYwZ9mqFPX+RE73JQhVlIImYTYMpK5QRco0OY4Bmr4p8jS3pLkHiTITMtATKAnUaZKqlpTST8Hl6zBTYBJXWXqcMFkDiQ9LOkVUxVeVjQK5tF+yM3KEdUBUDgkD/hkYJ/L4i/niT+fpQWai+aIK4kW+olkPJxTkF+kM9U08EeD3q4iHTMBeGQCoJ5xdwmLWUVsynIaoOJUQVOgsHTzlHeIGCWIS7UwEn+yJpTURXXw8/AEOgesghJVkAb6freHyYC+uzA15FBB6+AbwCu5NjDg0yAhpJHv5HZcigquJqcKgQSJUrONDy0kXz9akywSBFJQZoIhjTQN9BdNHAQzR4TCuAhpPDGIGRcjQ1QwnYQYBhAgPc4Ap4nh7kjDGBPSrCcGRo5IwqqAgcAkNrNiB85WtzhBmE0JhmI4Js2iIP0M3FADwmujWFfFeOaPOuvCV15UxdiKPqrQc6qEg8obiYdsWQqOCYwJwQbV5I6KtsglQW8UY1SInTSQiuEAUOsBYFKXDoHBw3wkeCKxtEHhzdKkgUzRrRlwvaeXo5nKlukFAAKa0zWNLJoGlKgZFrtdTQlMAJeqAGcGXGUUAUsGoaglpz71rIxn8Wr/syXOBI6JPMi/kH+PXz+bRD6atc5oUylQnwZnqPC4ta2ZUOFzjEXaFZDvR6vl0XV7+Pe7Ob9Hdf2FW60m+89SKv60b7sJvU04NJDgKE9TPj9np7fHnZXc/nw7w+UY/vym1+LeefFje4t3GvdpPVTw92ZTzNn3/9mGnHMl3HBjt9lbdTB71t+Ys3dgX5Och3XvxUy3HdwGxR4Xy363iYd4exzOuzsLe7abkVvEzF7+C52/oAIZnH8tv7xjyShkWc/5cnx2r5Zu4Y+7Sbwn0VfmCQaVqfuLh3bx/w9Hq5nu0K5ftH25PWxm31aVs4osMjyu3VE9+mWeavy0Dvw3BZ8uH1U2Cn+bCWV/UKmvvqhU5y+L3P5vnwvdiu43Thewn3/i26Zf0pk+8e3tYrL2Jwpqd+W4cRvZ6XCxneN/fgjrf5fs6lIx9ru6WKv3xyT8AOXH4cT+28NP1vHWuCRh7Q2ouMYMstlJl7Nh6R5235xwOuDI8+wJHso4BIz/3u++t+vn7bxq3vz/cvfvr2QEJG+97L8jcsbhsv1d6IAYRzqE+/mcB9NkACYEVcDiYWihoKiasFFhJI0QhkKsDmwme71DWvwj44bYpEpYzcR3fo8/78C4f7tFf5Ioc/H8b5Ou/XJWTq9tP+PH3a4TIHOXNqP820v9zKne6VgTnAlZuadjnBiuYCk1kLdFZDJlLo0VVTodi4WUqAPwf5NtyyYc+eiOb3tsaVVzMk5XlrjesQrgLdEUJZDA6CKx9k0FrjoJENroBhKzRELKLiEVYuWDYlCoCU4v9xa8TrRXx+3trA7zrYDyiqghkAnM8BN1EEA6+Ju5TGtQzZ1hE6AtsIn4brKe6FMPq4HraluivJ4yp2kVO/Qo939u/9Ox2lIioeZxizdTQwuT3if7z+9V//XKdI+/1KnAuFfJro8nn1CKoP+fLkziF4d124vPKFMCnTnboWSaPxChv44HGzRNcbcrh7jwETugWyNOjWsf2ic+m/ufreC3j+7alxhRk34tpgeaX0XztlqL1q/dobDFQy2gSZFI8kqQYfD28U+y+IMixAtzrrr0WO3bH2rbAlw3bMUM4ldNf5gQ5r6oY1emm3mRaysI80Df/+eh22Iw/z8fzSeeA63aTbdZRiXnnn7/jxhx/+9mEhvg/Gf/jL7dOHPsgL3ci1G4GBmIEindUaNuoQfeY7+Qwd692TborHKtNwnga+wTMd8XN/fbg9QfznD/8Fe/Hz7qsUAAA=" + }, + "change_guard.py": { + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "codec": "gzip+base64", + "uncompressed_bytes": 3153, + "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" + }, + "check_installed.py": { + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "codec": "gzip+base64", + "uncompressed_bytes": 1912, + "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=" + }, + "fresh-scan-contract.json": { + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "codec": "gzip+base64", + "uncompressed_bytes": 9733, + "content_base64": "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" + }, + "fresh-scan-receipt-template.json": { + "sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "codec": "gzip+base64", + "uncompressed_bytes": 549, + "content_base64": "H4sIAAAAAAACA22RwY7cIAyG7/MUKOd2JxAgsKc+RO+RMWZLRcIskFFXVd+9JLOtVlWP/P7x99v+eWFsiCu80PDMhpDLC33PT5j3lFf3VDNGSNf35zVu3bCS/+wJY415+1K/gVD6OShlTJBWOx6Env04o0cblBgN6SCCkDzM0s2TRTFZId04zaPoXfgEqkvDpyMGlBYDYFtq3gvSUuh+Uo5k1knnhPJTx1kDpOREMxkwMOGkrPCdrEzAR6eKsG1Ujo/wukMlvLYS729/8mrhOGlFxmjrUDqJGkAGEE5wZVW34Iwi6JEbsN6C1xwhmJmbGbnV9kEJe0oLpFTpTiW2t+XAdmYrO52GLS91v90K1fcx/lboR2wLZn9sfettThHzekvUyC/QPureLSs18NDgH/kxzkfxzFTolkv7T3XL7bzzV+okaMRiZV1jfek7JNb37WlDYrkw6LnzHdJw+XX5DVUNbXAlAgAA" + }, + "fresh-scan-report-fixture.json": { + "sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "codec": "gzip+base64", + "uncompressed_bytes": 11944, + "content_base64": "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" + }, + "installed-zlib-proof.json": { + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "codec": "gzip+base64", + "uncompressed_bytes": 492, + "content_base64": "H4sIAAAAAAACA32QTW7CMBCF95wCZV2S8fifVe9RVdV47GlTAkGkbEDcvU6gq6q1ZGtm3vPTZ19X63XT7+m9NNt1I+PpvXyOLY/nYdyndhq5p6F7tF1/qIZ9yZtcuJ/68fA8fRBatxVrQxATXVKCzmfwnDmKRQjFCQoaJd4kryOjjmgSaA9YU5QmW0fN04xxGfr0diTePWhUq1vcnNRdlX4oUx1fa1Pb6u3ouOvyjDV90TCUXNWXRX3Yl4vzMgg/5e+iERvBO1TReQUFLUOJ4jETOINMOZDNnAiIYrGBoNbkrAsmq+oF1SxBr/e85jyduhmu7kv9wHZ5xd9kUf9DVphDilnY2JK8EMZkFIgQk0Prg9chQi5WpwBSovLaeu2TieA8W8EHWT1vq9vqG1zLL/rsAQAA" + }, + "native-preflight-full.json": { + "sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "codec": "gzip+base64", + "uncompressed_bytes": 21208, + "content_base64": "H4sIAAAAAAACA+1cWXPbOBJ+969w8XVDGaR4el/W6xyT2vgox5mp3a2UCgRBCTFFcEBQiSbl/74ASEk8IIn25pitZR5im2g2Gt2NPoCv+PXk9NSAaTpDC4weilkOi8I4P+WsxC/kEI0KzFY4nkEuHhs2sD3TAqZl3YPw3AHnljtxHRD4zl8AOAfAUC9lkJMVFixhNsexeC+BaVHxyxnlGHHBMIYcRrDAM4Zhm6bAiGHefx7jPKXrJc74bI4zzMQsNBMUtquGJf1avJWnBEG5CKvmBlMxXSol2nEQw1/FqFx8Tn7FrKhYib/y4mxlqXWIwQeSSRmMl7sX65El5lAuYctIssoyypVUReOxHGBziuKJ/CEU8GlC6BlnEAnuc5OoCUiWULbEsRljRKQw50qS3bznPYqz3pNaNjVlb3CCaJnSZTQpKCIwPYPxkhSNZTMqzPzX07fXr1+av92aAAD/FJVcPGVGzfZxw19YeIm1YhstkiKH6BhdWSkAukGALQDNEMS26QTB1Ax9F5teHAdRkGAEQ7uSo5bCKHKMmtoXK5gzXBQvhR+kJMPvMaJZLC3hAbCdrusf9cOVkuoXUnDK1u/IkkgPsXavFTgVbktZ265LyNHiHYxw2ja4cqt88lBGmGWY40JafL/Otu899hRdCD/heL5uz8vXuWJ1J3eKGO8biONlnsqRtrx9pz3ouN/Nk1rCqllSnRa1ekR0mdOs2sPKcviz8eLYSwOUv1N/S7aun1UTiOUsaZnx9yI6EoQvEJJ/3dMHnDVj1vYF4YocCqdkcon/bknbXrCgxdmqR6QjbO1Eqe3ZP1798/Li9tXs7fv3H17ddbRSv7CCaaneWHCeF+dnZw+oY1Cj99rji2cIc3lzfX/x9vrVnfzt9ds3R8QRds0SMi+rsH7GhDrJEk8+FW0bdS1V/fvY5W2QJZwrvsLec/yJdp22/rMfRP9WLKDteue+N0VTzwE2CiLsI+QgK4ot6FmePRU/kyS0LC92bduxAt93bDdyXOgDK0AIiOgFDb1It2Wa3lIRgtZKUck15bciau0yS3NPiJyViYh2y2iEe1tDkSSQpCXD9wvBY0FTGUqnfT0rW7/BXMtDhk7IF8oGC5Es+eIPvalyyvjGcfQUhagiKg/45f7+dpAfGTlmhMa7YL0Luk3GJUJCEc1lWhoy6TG05Dtm9skRAQZkstb6i+E7c7vlbyu9BSAALw7tmv16lVUTRTSVVPeXt8/foBqZrIMyfabsIaWiEHumXEf3qazayOjk39fJBUNaMsFcr99U1jvFPr2hvJSLdQFY6hWyxEtRNKn2wPWuyDCNMPx7iYvjsx6d03O0Ux7ViegySkb4+lJsCfxF7zWyM6KfbxlZkRTP8asCwXTTdfRy/EZwmMOIpIQTvHdxMaO5NpCo0Yt37wzNyMeBeoXxTZau7yjlr4XUxboQtWDd0h1XCoeMl/nT9qJlj5vxCZuRY7YkmXKjKzGDrAk2yojx6qwxbKZ0bgx5f1tPSIv331jRtFziK1mhPiF/qfp2J5psGw6mCkXx7MzUnk1Uf2fHM3Jr+rpg/FYS8GV+eD5J8I3malW+h2cdQLqJAPo9/1wZV5Apq1SHM0XfOmd55YWHxRcBVXSBfyq5YRkTfljsAyQ/S+pde3tY9B2dCXPyI9ewKR1Nhuek4OyIawwk/1n6ruuVfc67WUVBOJenekfIj67i5FDub462KmojzopdMrhMSynBa8KKtvPKelAm+h3pRfoZrtuepFJrXIrter0J8DiBZcrN7UCH/khBZSTFG0bLXGVcADrZdDN6qQ6Nd5LdZLKSuSKFOmvrHvQIm10c5KoIrqli0jjX7lJ8KDDbw0EsS544iZIokcm1X8/sTuOqDPSyUpOx12SPHbU1T5D2nGl1qDYW0VE2yoM3DCJ826l2HLdFXtUGA06lWmm+3xvLI3ThbRn/VTG8TCFZ6itIJIeu97Xdpq6MaG+Hzhbvn58tc75+SZh+ejEZKaVoxlXVQ+iKP/IH3hwCG5amp9l/jqAtQ/7UEvcKmWPSVjXIFcz14tZh4orGkr0d6rqDvacuZq0/00O2bQV+EAPXGr6Wdnn0pFUdKVHkWccndXM1aNVBoDPStgnXdX5f9d1goT1h1hOfVqUKzqpblyTFX0xY8oU2CVWe9yUnlbZ2EWLauC/Z27hxJYiW6vFkyLOP/9UeP1yZ1VeIz7cUET3zE+30gNc7vejVd1x5GjXp/Eitbn8IrZTyTfR7pHz8X9kVOjf/Hl7+YvgKDkfRAX54iHvbJxGcIMb3BoHWimvavaSPe0Y+7tVl05VMJuow89AcPyJ4fNcE1u9jBmevI68O3bPHe5CfGB9RKtKT6CEqAY7EyTbxs+MlzeXOh+mBU9tjIbWv08MeeKLz1e31/snmf2VSseeymIi6dwSojACVEaAyAlRGgMoIUDkOUElcEZESJ/QiK7E9PwY+ilGYuDYIsJfYie1Yie9E/jRE9jS0nQhMfWALLtYUuuLRCFAZASojQGUEqIwAlRGgMgJUxs04AlRGgMoIUBkBKiNAZQSojACVEaAyAlRGgMoIUBkBKiNAZQSojACVEaAyAlRGgMoIUPm/BKjU31CJcY6zWCTv5slx7azLlrN2QCtbvIq6ZFyWHEaqU2l2O1soy+XW+bdDWljAAVDAs/AsZ9uJh0BZ9HVgq3P5PriE5s3/E6vUzpsDwC87+EsILGsa27HpOnFoOjiwzciKp2YIIifEEY7tyO2jPBDMaEZExao+9zOrbq4luwAjx7Njy546vusEiQs8jHGUWHiK5McWfM8JgBWiAPrBNABODMIIIT+MQGLbMPHaSJt8hYY538bHbrXd4A/2N60Qg3yv1+J+W19rcc5XHaRKJHRoyhOHFFdllbHunPFp3hFFUGxGa1Pe7zKqGhjdi1WzP4mE/jscJO4JzrEpBVcLrDgwmKEFZpIipcLPTBWZdTw77BRcSugrq7KIYU/DiWdPbOBOQnuyoAWfqPMirL5/xSZZJxnsYfsUKbVbOiEiD4heuYfDMdozCZc3649ptTrJj4PCQ8eBnh4O4gBEthtZpuVY0HQcKzIjoTszDBJoJ3EYRD7qh4MeUsmA6hJLpvLeeu8wjH9jIpHfyG5Ru8B918b7L2+N2kLqFOINGQCuqujF3iyKTfbVetr2Eqvyp8bVZo9mw0fa8EmK7Aa9Wb6AhWL1d7nBjG3CloFol6FrmzlhGHhBYpsYRsh04sQxIZ5aZhSECLtB7LtgA6Ooe54WerEueSqI6llKEozWqHGbJ5GL9MPduyZ066nYpsm80SwbXCwD87sa+6jqrdCLAPLiILBw4LqxFVtuAMBUPMIhwMk0BLZn4w4QUzgXr08cmysaCgCtIkALkbbbinUxOilWqD2pQuBB3v7+nbx3VvfJTTmEa/F7ESJECSfmvSeVczQ/teefA3Du2P9qyCQSUVmoa2XFb92Bnq6zVkaU4RoyHN/T9vbTa+ZpIeHJGuptsa6vDfO37+Jz38Tv9EhZ9hx+GoPflPwmeS8N3KvSpRVmMVvPRPmnPuWovG/7McdtDTCjWbqeKbifKOpTVehsqaqeZhaTJJnhLxXOuDewq+QQShIfWRiJYIUjN0wQENHE85AFrCkUtZobJ67lwAQ4AfICx3eg7dth6APbwYkfVZ+MlDgWBFVfMEN5OZOnyQ6oDkA20Vx0IJuhqeNVQw34cQNs/HjyH6VWW6nYUgAA" + }, + "native-preflight.json": { + "sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "codec": "gzip+base64", + "uncompressed_bytes": 1871, + "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" + }, + "post-ready-native-outcomes-command.py": { + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "codec": "gzip+base64", + "uncompressed_bytes": 1655, + "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" + }, + "preparation-failure-history.json": { + "sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "codec": "gzip+base64", + "uncompressed_bytes": 1070, + "content_base64": "H4sIAAAAAAACA5VSwW7bMAy99yuInIsuVq1IXu+7rQN2HYaAkqhYqC0ZkpwsG/bvo5rmsKLDtoNhmH4kH997P24ANhFrONKevCdbN+/B41Totv0JMdSA007tZ4zBU6n7MqKQO0ZtOuqNxPutFkPvpNZWGa8kSScUmV5J7MiJVrHaykH73hmhpfXbTvbKG7H50wpzrlT2mSqGSO4PhGyal4kq7Utas+VXxKWMqf6tL6ZKjf1jqnDtqeTAkE+ZYI0YY1qjJac7wJmi46c+wFNMpzhiGWHJVCgfyd0CfUNbIZNNsdS82hpSBFxdaBMLLZix0nSG4GFJpQQz0R08JiZmcrDYUHbCMEPycOUNKYdDiDjBsw53v8mku7ec0B06M1Cn+sHtjBt8NygpURjjlJGstx4IlRZ9L+W9MsZ4GoSkjpHaY69er/gXbfnci7Quo69ieIuXQtu53aAtGuG8cbQzdou6NxadE/ZeiMGJ3vfYoxw6IT0p0TKy86gFbV94XRf8HytqYS5c+sKfXPjIEHChLFgte4ilUIG0EDvEpu1DrGwz1MQ+zBwROIU6prXC3PAhHqCZOfP6/MyKJ36+ABc8TwkdTGifmutXVsHxwFDP714vufZ/4ByNUCxGOHAUAK2lpUWC5oXb+JR4iQjj1qmCTUcedGgZdZQhp1Q5eRQWJskKOKx4Hf3pFBuCjoFOnOwDxp16aNle+agcvjeetY2y45ojJHMJtO423P/1WcDCx+5r5kC8yHrz8+YXqlwcii4EAAA=" + }, + "published-verification.json": { + "sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "codec": "gzip+base64", + "uncompressed_bytes": 5912, + "content_base64": "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" + }, + "rollback-deployment.json": { + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "rollback-preflight-full.json": { + "sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "codec": "gzip+base64", + "uncompressed_bytes": 21208, + "content_base64": "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" + }, + "rollback-preflight.json": { + "sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "codec": "gzip+base64", + "uncompressed_bytes": 1872, + "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==" + }, + "runtime-receipt.json": { + "sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "codec": "gzip+base64", + "uncompressed_bytes": 808, + "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==" + }, + "scan-receipt.json": { + "sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "codec": "gzip+base64", + "uncompressed_bytes": 4538, + "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==" + }, + "sealed-live-deployment.json": { + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "codec": "gzip+base64", + "uncompressed_bytes": 8268, + "content_base64": "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" + }, + "sealed-native-dependencies.json": { + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "codec": "gzip+base64", + "uncompressed_bytes": 1841, + "content_base64": "H4sIAAAAAAACA71Uy27bMBC85ysMnUtZoiVLSm9NkaKHpEEPyaEoAj5WNhuJVEnKQBrk37uUZSd+II9DexKw3J2dnZ3Vw8lkEgmja7VoWRedTh4wgCHWqWuwThmNsWiVRh/WcdW2vWe8AQx728MYvlNahsSzAekCkcaHFjyTzLMtcsDW2njmEds9C4cHuzBCxuHTWfMrVmbqLRMIviBqwFe6NrYFSSQIFdidTrctTw8epwcRYnvtVQtkLihNy6KUSb6ZbT3ffkUsTN+YlsfOCMWaKZOtchtdWIc8VyA/Tr5enn8mN1ckSZJiInqPURuNsI8b/EizFo6O8TKvoc51TBwvfsrr1ypVSZrOJJUkz2RFMigp4amckSrhWQUcJOX5mtxILRJMG60Ea27Dsm7dktF8HqBKENmcypTOsiLPyjpP5gDA6xRmohAiK+ZZmaSVKFlRzsokk0nFhSgqntSUsnoe2gxNom4lXrfXxkdX4dF50P7aNH0LZw1T7f/z1NH2b/LXwOtf+ekZbreK73oOVoMHF4biqBwRpu0ajAxz3YN7ucL0WMLvsUp7a5oGOxyWrQYBYo6a79U7byxbAAmUh9HW9ZZpsQQbMhqDjiId88sjiHtg0IBA4kQbObiczqp4TmOa5HFF46VxPnYgegsOLGoRY+XroO9heHCstdKsUX/QClj046nVbg+0dcD3yD4scUz7+YaT37HKe09clgmnOU9JmqWMZFnKCUetSFXWjNayKnkhdk/cdSB2LkYIcO4C5d6b7zsweWOVh28a2RwMhBswvRWwd2cWfvfg/G40tF3vIHBOv6ho+/R4oPeYibfm3OWo2hEHjau+GH1yrhpw93ir7X7GBiNs6B1yPf9h3XZL5gaQT+FYopPHk79qFEgoMQcAAA==" + }, + "source-commit-proof.json": { + "sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "codec": "gzip+base64", + "uncompressed_bytes": 239, + "content_base64": "H4sIAAAAAAACA12OwW6EMAxE73wF4rwHIDY2/ZWqipzYKZEKrAgtWlX998JKvfT6NPNmvqu6bjb7yiWvS/NSN2OAEHpU1+MwshiCMzIWFhcdjr2GLiGn2Nz+mnaY+lmWnKzsvkxyNi8T9SACRGShizzSoDywYcIWgFyCMOgp6pwStsoklgQjK0ZpCcj+L9xln8rpJXjyOZdZ9jjZxV7fnmw9Ftv8ZqJ+XT4e/j1ff9bjTOzbp1U/1S/dW3277wAAAA==" + }, + "sqlite_readonly.py": { + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "codec": "gzip+base64", + "uncompressed_bytes": 4610, + "content_base64": "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" + } + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..3c6572c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..66736d3 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..2236b55 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,519 @@ +"""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} + contract=json.loads((CASE/'fresh-scan-contract.json').read_text()) + report=json.loads((CASE/'fresh-scan-report-fixture.json').read_text()) + self.assertEqual(fresh_scan(receipt,report,contract,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=[]),lambda r,p:p.update(Results=[{}]),lambda r,p:p['Results'].pop(),lambda r,p:p['Results'][0]['Packages'].pop(),lambda r,p:p['Results'][0]['Packages'][0].update(Version='old'),lambda r,p:p['Metadata'].update(ImageID='other'),lambda r,p:p['Metadata']['DiffIDs'].pop(),lambda r,p:p['Metadata']['ImageConfig']['config']['Labels'].update(**{'org.opencontainers.image.revision':'other'}),lambda r,p:p.update(SchemaVersion=1),lambda r,p:p.update(ArtifactType='filesystem')] + for mutate in mutations: + r,p=copy.deepcopy(receipt),copy.deepcopy(report);mutate(r,p) + with self.assertRaises(ValueError):fresh_scan(r,p,contract,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) + + +class FullCliDispatch(unittest.TestCase): + def invoke(self,phase,corrupt_source=False): + import hashlib,shutil + import authority_journal + realpath=Path;called=[];output=io.StringIO() + with tempfile.TemporaryDirectory() as folder: + base=Path(folder);custody=base/'private';custody.mkdir(mode=0o700) + empty=custody/'empty-docker-config';empty.mkdir(mode=0o700) + owner=base/'owner';owner.mkdir();case=owner/'case';case.mkdir();execution=case/'execution';execution.mkdir() + for name in ('actuator.py','authority_journal.py','native_program.py','receipt_safety.py'): + shutil.copyfile(Path(__file__).parent/name,execution/name) + (case/'memo.json').write_text('{}') + for name in ('sealed-live-deployment.json','sealed-native-dependencies.json','candidate-deployment.json','rollback-deployment.json','check_installed.py','sqlite_readonly.py','change_guard.py','installed-zlib-proof.json','fresh-scan-contract.json'): + shutil.copyfile(CASE/name,case/name) + names=('deploy/lifecycle/admission.candidate.json','deploy/lifecycle/service.candidate.json','deploy/lifecycle/kustomization.yaml','deploy/lifecycle/registries.candidate.json') + for name in names: + target=owner/name;target.parent.mkdir(parents=True,exist_ok=True);target.write_text('sourcefixture') + plan={'state':'prepared-unapproved','published_artifact_verified':True,'proposal_id':'INFD-WP-0009-T05/zlib85091-r1','executor_files':{n:actuator.sha(execution/n) for n in ('actuator.py','authority_journal.py','native_program.py','receipt_safety.py')},'case_files':{p.name:actuator.sha(p) for p in case.iterdir() if p.is_file() and p.name!='memo.json'},'owner_source_files':{n:actuator.sha(owner/n) for n in names}} + (execution/'execution-plan.json').write_text(json.dumps(plan)) + receipt,outcome=accepted();receipt.update(native_outcome_sha256=hashlib.sha256(json.dumps(outcome).encode()).hexdigest(),executor_plan_sha256=actuator.sha(execution/'execution-plan.json')) + mapping={} + for fixed,data in [('/tmp/security-infd-zlib-root-authority.json',receipt),('/tmp/security-infd-zlib-native-outcome-latest.json',outcome),('/tmp/security-infd-zlib-fresh-scan-receipt.json',{'fixture':True}),('/tmp/security-infd-zlib-fresh-scan-full.json',{'fixture':True})]: + target=base/Path(fixed).name;target.write_text(json.dumps(data));target.chmod(0o600);mapping[fixed]=target + scanreceipt=mapping['/tmp/security-infd-zlib-fresh-scan-receipt.json'];scanreceipt.write_text(json.dumps({'full_report_sha256':actuator.sha(mapping['/tmp/security-infd-zlib-fresh-scan-full.json'])})) + identity={'proposal':plan['proposal_id'],'source_revision':REVISION,'memo_sha256':actuator.sha(case/'memo.json'),'plan_sha256':actuator.sha(execution/'execution-plan.json')} + blob=b'private synthetic full-cli snapshot';metadata={'all_checks_pass':True,'snapshot_file':'drill.sqlite','snapshot_bytes':len(blob),'snapshot_sha256':hashlib.sha256(blob).hexdigest(),'snapshot_readonly':COUNT,'pod_name':'fixture-pod','pod_uid':'fixture-poduid'} + j=Journal(custody,identity) + predecessors=list(actuator.PHASES[:actuator.PHASES.index(phase)]) + for predecessor in predecessors: + j.start(predecessor,{}) + result=metadata if predecessor=='drill-backup' else {'all_checks_pass':True} + if predecessor=='release':result={'all_checks_pass':True,'operation_requested':True,'prune':False,'source_revision':REVISION,'resources':[{'group':'apps','kind':'Deployment','name':'informed-decision','namespace':'informed-decision'}]} + j.finish(predecessor,result) + j.close() + if corrupt_source:(owner/names[0]).write_text('changed') + def mapped(value):return mapping.get(str(value),realpath(value)) + def run(argv,body=None,**kwargs): + if argv[:4]==['git','-C',str(owner),'rev-parse']:return subprocess.CompletedProcess(argv,0,REVISION+'\n','') + if argv[:4]==['git','-C',str(base),'check-ignore']:return subprocess.CompletedProcess(argv,0,'ignored','') + if argv[:2]==['ssh','railiance01']: + import ast + parsed=ast.parse(body);node=next(x for x in parsed.body if isinstance(x,ast.Assign) and any(isinstance(t,ast.Name) and t.id=='payload' for t in x.targets));payload=json.loads(ast.literal_eval(node.value.args[0]));called.append(payload) + self.assertEqual(json.loads(j.path.read_text())['phases'][phase]['state'],'RUNNING') + if phase=='drill-copy':self.assertEqual(payload['snapshot_identity'],metadata) + if phase=='verify':self.assertEqual(payload['operation_intent']['state'],'COMPLETE');self.assertFalse(payload['operation_intent']['result']['prune']) + result=metadata if phase=='drill-copy' else {'all_checks_pass':True,'phase':phase} + return subprocess.CompletedProcess(argv,0,json.dumps(result),'') + raise AssertionError('unexpected CLI transport') + def git_show(argv,**kwargs): + self.assertEqual(argv[:4],['git','-C',str(owner),'show']);data=(owner/argv[4].split(':',1)[1]).read_bytes();return subprocess.CompletedProcess(argv,0,data,b'') + real_popen=subprocess.Popen + def binary(*args,**kwargs):return real_popen([sys.executable,'-c','import sys;sys.stdout.buffer.write('+repr(blob)+')'],stdout=subprocess.PIPE,stderr=subprocess.DEVNULL) + argv=['actuator.py','--phase',phase,'--root-authority-receipt','/tmp/security-infd-zlib-root-authority.json','--root-native-outcome','/tmp/security-infd-zlib-native-outcome-latest.json','--root-fresh-scan-receipt','/tmp/security-infd-zlib-fresh-scan-receipt.json','--source-revision',REVISION] + with patch.object(actuator,'ROOT',execution),patch.object(actuator,'CASE',case),patch.object(actuator,'OWNER',owner),patch.object(actuator,'CUSTODIAN',base),patch.object(actuator,'CUSTODY',custody),patch.object(actuator,'Path',side_effect=mapped),patch.object(actuator,'run',side_effect=run),patch('subprocess.run',side_effect=git_show),patch('subprocess.Popen',side_effect=binary),patch.object(authority_journal,'authority',return_value={'fixture':True}),patch.object(authority_journal,'fresh_scan',return_value={'fixture':True}),patch('sys.argv',argv),redirect_stdout(output): + if corrupt_source: + with self.assertRaises(ValueError):actuator.main() + else:actuator.main() + state=json.loads(j.path.read_text())['phases'].get(phase) + return called,state,output.getvalue() + + def test_main_cli_copy_binds_snapshot_and_retains_private_bytes(self): + calls,state,output=self.invoke('drill-copy');self.assertEqual(len(calls),2);self.assertEqual(state['state'],'COMPLETE');self.assertNotIn('private synthetic',output) + + def test_main_cli_verify_binds_completed_release_intent(self): + calls,state,output=self.invoke('verify');self.assertEqual(len(calls),1);self.assertEqual(state['state'],'COMPLETE') + + def test_main_cli_release_dispatches_only_after_durable_phase(self): + calls,state,output=self.invoke('release');self.assertEqual(len(calls),1);self.assertEqual(state['state'],'COMPLETE') + + def test_main_cli_source_hash_refuses_before_journal_or_transport(self): + calls,state,output=self.invoke('release',corrupt_source=True);self.assertEqual(calls,[]);self.assertIsNone(state);self.assertEqual(output,'') + + +class PacketBindingAndBodyLimit(unittest.TestCase): + def test_lossless_gzip_bundle_retains_exact_source_hashes(self): + import gzip,base64,hashlib + bundle=json.loads((CASE/'execution-bundle.json').read_text()) + for group in ('files','case_evidence'): + for relative,item in bundle[group].items(): + data=gzip.decompress(base64.b64decode(item['content_base64'],validate=True)) + self.assertEqual(len(data),item['uncompressed_bytes']);self.assertEqual(hashlib.sha256(data).hexdigest(),item['sha256']) + self.assertEqual(data,(CASE/relative).read_bytes()) + item=next(iter(bundle['files'].values()));changed=bytearray(base64.b64decode(item['content_base64']));changed[-1]^=1 + with self.assertRaises((OSError,EOFError)):gzip.decompress(changed) + + def test_actual_source_http_256kib_limit_before_register_side_effect(self): + import os + script="""import io,json,sys +sys.dont_write_bytecode=True +sys.path.insert(0,'/home/worsch/informed-decision') +from informed_decision.lifecycle_http import LifecycleAPI,MAX_BODY +from informed_decision.lifecycle_service import Caller +from informed_decision.lifecycle_service import LifecycleError +from informed_decision.intake import validate_submission,SubmitterGrant +from pathlib import Path +root=Path(sys.argv[1]);commands=json.loads((root/'lifecycle-commands.json').read_text());envelope=json.loads((root/'intake.json').read_text()) +validate_submission(envelope,submitter_id='state-hub',grant=SubmitterGrant('state-hub',frozenset({'decision-record'}),frozenset({'net-kingdom-admins'}))) +class Service: + calls=0 + def _caller(self,caller):pass + def register(self,*args,**kwargs):self.calls+=1;return 'fixture-event' +service=Service();api=LifecycleAPI(service,lambda token:object.__new__(Caller)) +body=json.dumps(commands[0]['register']).encode();assert len(body)<240*1024 +base={'REQUEST_METHOD':'POST','PATH_INFO':'/v1/decisions','QUERY_STRING':'','CONTENT_TYPE':'application/json','HTTP_AUTHORIZATION':'Bearer synthetic-fixture','HTTP_IDEMPOTENCY_KEY':'fixture'} +status,result=api.dispatch({**base,'CONTENT_LENGTH':str(len(body)),'wsgi.input':io.BytesIO(body)});assert status==200 and service.calls==1 +oversize=b' '+body+b' '*(MAX_BODY+1-len(body)-1) +try:api.dispatch({**base,'CONTENT_LENGTH':str(len(oversize)),'wsgi.input':io.BytesIO(oversize)}) +except LifecycleError as e:assert e.status==413 +else:raise AssertionError('oversize accepted') +assert service.calls==1 +print(json.dumps({'synthetic_body_limit_verified':True,'intake_validated':True,'register_bytes':len(body)})) +""" + result=subprocess.run([sys.executable,'-c',script,str(CASE)],capture_output=True,text=True,env={**os.environ,'PYTHONDONTWRITEBYTECODE':'1'}) + self.assertEqual(result.returncode,0,result.stderr);self.assertTrue(json.loads(result.stdout)['synthetic_body_limit_verified']) + + +if __name__ == '__main__': + unittest.main() diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..516ef23 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,358 @@ +{ + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ], + "image_config_rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + }, + "image_source_labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "os": { + "Family": "alpine", + "Name": "3.24.1" + }, + "inventory": [ + [ + "lang-pkgs", + "python-pkg", + "PyJWT", + "2.15.1", + "pkg:pypi/pyjwt@2.15.1" + ], + [ + "lang-pkgs", + "python-pkg", + "cffi", + "2.1.1", + "pkg:pypi/cffi@2.1.1" + ], + [ + "lang-pkgs", + "python-pkg", + "cryptography", + "50.0.1", + "pkg:pypi/cryptography@50.0.1" + ], + [ + "lang-pkgs", + "python-pkg", + "informed-decision", + "0.2.0", + "pkg:pypi/informed-decision@0.2.0" + ], + [ + "lang-pkgs", + "python-pkg", + "pycparser", + "3.0", + "pkg:pypi/pycparser@3.0" + ], + [ + "lang-pkgs", + "python-pkg", + "waitress", + "3.0.2", + "pkg:pypi/waitress@3.0.2" + ], + [ + "os-pkgs", + "alpine", + ".python-rundeps", + "20260901.001029", + "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-baselayout", + "3.7.2-r1", + "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-baselayout-data", + "3.7.2-r1", + "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-keys", + "2.6-r0", + "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-release", + "3.24.1-r0", + "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "apk-tools", + "3.0.6-r0", + "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "busybox", + "1.37.0-r31", + "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "busybox-binsh", + "1.37.0-r31", + "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ca-certificates", + "20260611-r0", + "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ca-certificates-bundle", + "20260611-r0", + "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "gdbm", + "1.26-r0", + "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "keyutils-libs", + "1.6.3-r4", + "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "krb5-conf", + "1.0-r2", + "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "krb5-libs", + "1.22.2-r1", + "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libapk", + "3.0.6-r0", + "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libbz2", + "1.0.8-r6", + "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libcom_err", + "1.47.4-r0", + "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libcrypto3", + "3.5.8-r0", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libffi", + "3.5.2-r1", + "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libintl", + "1.0-r0", + "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libncursesw", + "6.6_p20260516-r0", + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libnsl", + "2.0.1-r2", + "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libpanelw", + "6.6_p20260516-r0", + "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libssl3", + "3.5.8-r0", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libtirpc", + "1.3.5-r1", + "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libtirpc-conf", + "1.3.5-r1", + "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libuuid", + "2.42.3-r1", + "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libverto", + "0.3.2-r2", + "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "musl", + "1.2.6-r2", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "musl-utils", + "1.2.6-r2", + "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ncurses-terminfo-base", + "6.6_p20260516-r0", + "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "readline", + "8.3.3-r1", + "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "scanelf", + "1.3.9-r1", + "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "sqlite-libs", + "3.53.4-r0", + "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ssl_client", + "1.37.0-r31", + "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "tzdata", + "2026c-r0", + "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "xz-libs", + "5.8.3-r0", + "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "zlib", + "1.3.2-r1", + "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + ] + ], + "inventory_canonical_sha256": "1fd5bfb2d7c04a7316a283adbea0f54f04f0c5acbb218b11e0c5677bfe87c464", + "published_fullreport_sha256": "2ff68e765b9c65292611d5a969202a7654637168edefcedac5d2c7634009edae", + "publication_manifest_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "scope": "Exact immutable published archive identity and inventory; findings must be checked anew on fresh DB." +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..3af5f7a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..72ead0f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,373 @@ +{ + "SchemaVersion": 2, + "ArtifactType": "container_image", + "Metadata": { + "ImageID": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "DiffIDs": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ], + "OS": { + "Family": "alpine", + "Name": "3.24.1" + }, + "ImageConfig": { + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + }, + "config": { + "Labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + } + } + } + }, + "Results": [ + { + "Class": "os-pkgs", + "Type": "alpine", + "Packages": [ + { + "Name": ".python-rundeps", + "Version": "20260901.001029", + "Identifier": { + "PURL": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1" + } + }, + { + "Name": "alpine-baselayout", + "Version": "3.7.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-baselayout-data", + "Version": "3.7.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-keys", + "Version": "2.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "alpine-release", + "Version": "3.24.1-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "apk-tools", + "Version": "3.0.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "busybox", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "busybox-binsh", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ca-certificates", + "Version": "20260611-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ca-certificates-bundle", + "Version": "20260611-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "gdbm", + "Version": "1.26-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "keyutils-libs", + "Version": "1.6.3-r4", + "Identifier": { + "PURL": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "krb5-conf", + "Version": "1.0-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "krb5-libs", + "Version": "1.22.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libapk", + "Version": "3.0.6-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libbz2", + "Version": "1.0.8-r6", + "Identifier": { + "PURL": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libcom_err", + "Version": "1.47.4-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libcrypto3", + "Version": "3.5.8-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libffi", + "Version": "3.5.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libintl", + "Version": "1.0-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libncursesw", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libnsl", + "Version": "2.0.1-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libpanelw", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libssl3", + "Version": "3.5.8-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libtirpc", + "Version": "1.3.5-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libtirpc-conf", + "Version": "1.3.5-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libuuid", + "Version": "2.42.3-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "libverto", + "Version": "0.3.2-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "musl", + "Version": "1.2.6-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "musl-utils", + "Version": "1.2.6-r2", + "Identifier": { + "PURL": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ncurses-terminfo-base", + "Version": "6.6_p20260516-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "readline", + "Version": "8.3.3-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "scanelf", + "Version": "1.3.9-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "sqlite-libs", + "Version": "3.53.4-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "ssl_client", + "Version": "1.37.0-r31", + "Identifier": { + "PURL": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "tzdata", + "Version": "2026c-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "xz-libs", + "Version": "5.8.3-r0", + "Identifier": { + "PURL": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1" + } + }, + { + "Name": "zlib", + "Version": "1.3.2-r1", + "Identifier": { + "PURL": "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + } + } + ] + }, + { + "Class": "lang-pkgs", + "Type": "python-pkg", + "Packages": [ + { + "Name": "PyJWT", + "Version": "2.15.1", + "Identifier": { + "PURL": "pkg:pypi/pyjwt@2.15.1" + } + }, + { + "Name": "cffi", + "Version": "2.1.1", + "Identifier": { + "PURL": "pkg:pypi/cffi@2.1.1" + } + }, + { + "Name": "cryptography", + "Version": "50.0.1", + "Identifier": { + "PURL": "pkg:pypi/cryptography@50.0.1" + } + }, + { + "Name": "informed-decision", + "Version": "0.2.0", + "Identifier": { + "PURL": "pkg:pypi/informed-decision@0.2.0" + } + }, + { + "Name": "pycparser", + "Version": "3.0", + "Identifier": { + "PURL": "pkg:pypi/pycparser@3.0" + } + }, + { + "Name": "waitress", + "Version": "3.0.2", + "Identifier": { + "PURL": "pkg:pypi/waitress@3.0.2" + } + } + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..e1ed42c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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\": \"H4sIAAAAAAACA8Va227jRhJ991cM9LBPIafv7B4gWAYZBPAimx0kk+RhsTD6anNNiVqSyowmmH/fal5kWVpzshbpPPhGSefU6ao6XU3696tXr1Y/2Tu/1r/4uimqzerNK/JVvPpN3RZB2/b9fuvh4spWm1YXG1/fFGt961fdm/7uW+10q+ENv8PfcOU6vnj9Nn6iudOEizeCEOOtpd44lVkjhBE+s1QEyk1QFOvMeesUE8wILjnGhFpsrbRKSZdx0zEB8tsihOu3DSD/s7vw6sBAmZRMG+MVkYIG6xWl3gGHssgjxgWQBOSdFI5bi1wwLqjgrGZEWE/twHAECC8ZT6zwSltECM0wp5wTTjP4khghxKSwxDCQYA0hNvAMG6El15g4dwbogddpFEwQhjNHGfWIMMyFk5ngnBrNM0cVES7DClaBGaqx9cwFhAUV4gyQISW1Q5RCUAQ0K6KlVpZjCXBKIMIdyxCWHmXSIoND5pR1XMTlwSH4M8CgDAMIholGFmWaSeWZCIY7w3BQDjkrmWPeUnhTXBptFKc4MOaRUwGfAQomGccaOachOQ4xIbGnxHCohQxCcVSzgLSTLGSSesVjtomxQgmCIE/nSRGYUaQxxlQJlTFqlPKQGkNQQIQ6zuCiosYGBXErSLmK2YMIjGWaqzNAGyxXgJUxJ7IgkGEMY0tg0a3zPJZthon3JqOZsA4phjXJOAY9SAuDyBkggZVVWEqoCGW14sEr4yFczkOGtOFcCi8ZRE2p4QQ+Qh2sYTDUZFx7Tc8AMeYSw6pBFRvnqeeQFoJBGiWIQB4ogcqBYKHuA868RFBNsKREKsVQ5s7LBklIGEE4o86qAN85gcAgfRpBOXkjEdFGMIc9aA0MKx0wNppQRAziXq86vH8NHfmPnw59D399p9dFuY+Nr8stGMUD+Q963VkITQlLcY/x+asjv/i22oTi9hisrqo2NEdX4Fo7OFGp9+BVB3h4xYE13BTu2BsW8YdFPGIRn1jEKxbxi0U8YxHfWMQ7FvGPRTxkfh/pvGT47fPBLeypGcC177Xx5WM7gKtVfZtWW785jCZN2s0mqdGNT11x65v2aBDJBIWxgyFipYEJxDKLjcNaYAFVAGmHtcfgAAQaTmYZIxxaV8fGAE+QkurHK/Ekee1/K4ZJagVNYgz0FwV+aELPoaFhjaFxIBSuiINu4zKcFm5lC12mttqV1doAYOmjoMZWvQFe//Dd2+TXdwlYjEreI/76U1mYRHKkcFLjSaym2tXWpzFo/7FN+5XpxjvOmRck9l2gDFmjMdiCUBrsUQbhkAUbIVA+EhkkwT254J6QDBKKCdTJH2HdVmVh90ekCkwYG89gKsRKOcw8dDdUsuNBcsXBLbhB1hp4m0RIZyGWaVf4PI6R5KGMPl8d/4zfu4Ja/eibXdk+bAyHDebbUjfx8qpqku397cN2shoH3tNd7J2295Dfx5vMo3oc97l0u2/vqk1S7zbOb5vHS/MwZ6+gAQVSCKcIYUROjOba+Q1M4IWvT8o+hvLzj99HAAj8jd7ev+5DfX3Cm5/g/1XX9u7rTRV//MUVTVtXXx9vyY9X8qgln5DZsyax2WBLrnbtk0JpmqXkrDSfofCMMh+he3EfpbgRbBFxSXfOeXmFHe/SMu/9fqJMU5HUaC5lkSrvIRcSM/jlRK4ixYySBsL8ADy7sO190lZV2UxoQjNlaaTKR8i5xZhdszfVxyel4JRmKUpqenkzDVT5A+RCYhJTbJq7F5TUEy4ozOrE+ngLqLC69V/YwwSepZ1OOPMj7IXlJQa2zNL/GSoH6iXF3jqznqhNMotxRJJ8AJtbAOwZu7YomwTm3GZCiUhpUrOLpTyiy0fY2UXVhifxsDMhCFqbXC5nJMp7wEWEfCEzhMwzHh248gPm3HIAHQiX32l7nsW2WYA3n8hUbaUyqcUcMoAnH/EWkGGr9Y2v6wkpLEvZTCkZyPID6BKC6v22rehEifG4lvPo6bnyEXMBOSEUk1JmafyeJx/xFpBRbNpy2opnSUik6Y14iVxs7K5ufPPhSSEiFTfbbtbgeC4bG0nzU/AlBDblxEEVxeMXmUVTU+Yj3gIytnrjy5fNUk/5EjlqmvJlzC0SLelsbVFv7dSpLuUzeVvHlI+IS0n50rg5s55x6FxM1G5XuAk3YCQO7rPoiUz5AXEBKb/BkbB6UguCNSQzOVvHlI+Ic0tZ75qpXbS78Xe5jMiSj2hLSEi6A+DLCOm5FpMz7M5J6+t1sQlVd2/55Xae/0m/+C5Ue+3K48c3pzol1P8s5jAy5SPi3FIaGzfuadtWcygZiPIRcHYh/ymL1k/fKYCtgs5zljtiyw+os0tqyhtbFhDcS9z7fWBb8MZv+2nyQVfsWTtHfnqefMSbW8bHT9OFBjNj7NbLdQxE+Qg4t5D4bH+y92c5XkeWfET7vyVcHf8vxyDo/El7qTe3TzxrHx5cw4vPed7+bv+3X99PzIGYp89coe1+W7ze7v/9oc0HmOc9bZi6RQLAF4UXwfMe5HnBdXeIbmu9vds/3S4onoUvifKIJR/QnhVunCHqtXeJ87b/P5unh2Y4wF8Q8hlT3iM+K+zt3m41DEL11I3li4p0wI83lJ8X4gddtLVvph8ykwtiHAnyHuiPeMlV/O3z1X8BmrvO4aguAAA=\"\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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..8ee6bbf --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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: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 + }, + "documents": [ + { + "digest": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "media_type": "text/markdown", + "content_base64": "IyBSZXF1ZXN0ZWQgZGVjaXNpb24KCkFwcHJvdmUgdGhlIGV4YWN0IG5ldyBUMDUgemxpYi1vbmx5IGltYWdlIHJlbGVhc2UgYW5kIHByb3RlY3RlZCBzYW1lLXNjaGVtYSBjb21wYXRpYmlsaXR5IGRyaWxsLCBhZnRlciBmaW5hbCBpbmRlcGVuZGVudCBQcm9kdWN0IGFuZCBQbGF0Zm9ybSBhY2tub3dsZWRnbWVudHMuIFRoaXMgcGFja2V0IGlzIHByZXBhcmVkIGFuZCB1bmFwcHJvdmVkOyBmcmVzaCByb2xsYmFjayBzZXJ2ZXIgZHJ5LXJ1biBwYXNzZWQgd2l0aCBleGFjdGx5IHRoZSBiYXNlbGluZSBpbWFnZSBhbmQgZW1wdHkgZGlmZi4gUm9vdCByZXRhaW5zIGV4YWN0IGZpbmFsIG93bmVyIHNvdXJjZSByZXZpc2lvbiBhbmQgaW5kZXBlbmRlbnQgYWNrbm93bGVkZ21lbnRzIGJlZm9yZSBhc2tpbmcgZm9yIG5hdGl2ZSBmb3VuZGVyIGRpc3Bvc2l0aW9uLiBUaGUgcHJpb3IgVDA0IGFwcHJvdmFsIGlzIGV4Y2x1ZGVkLgoKVGhlIGFkbWl0dGVkIG93bmVyIENJIHB1Ymxpc2hlZCBpbW11dGFibGUgaW1hZ2UgZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyBmcm9tIHNvdXJjZTliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMuIEl0cyBhY3R1YWwgZnVsbCBzY2FuIHJlcG9ydHMgemVybyBmaW5kaW5ncyBhY3Jvc3M0NHBhY2thZ2VzLiBUaGUgc2FtZSBzY2FuIERCIGZpbmRzIG9uZU1FRElVTSBvbiBjdXJyZW50aW1hZ2U3NjNjLiBTaWduZWQgb2ZmaWNpYWwgQWxwaW5lIHpsaWIxLjMuMi1yMSBpcyB0aGUgc29sZSBwYWNrYWdlIGNoYW5nZTsgYWN0dWFsIHB1Ymxpc2hlZCBmaWxlc3lzdGVtIHByb29mIHNob3dzIG9ubHlsaWJ6IGFuZEFQS2luc3RhbGxlZGRhdGFiYXNlIGNoYW5nZXMsIHplcm8zMTNkaXJlY3RvcnltZXRhZGF0YSBjaGFuZ2VzLCByZXRhaW5lZG5pbmViYXNlbGF5ZXJzIGFuZCB1bmNoYW5nZWQzNmFwcGxpY2F0aW9uZmlsZXMvcHVycG9zZXBvbGljeS9jb25maWcvY3JlZGVudGlhbHMvYXVkaWVuY2UvcmVzb3VyY2VzLiBSZWdpc3RyeS10by1kYWVtb24gY29uZmlnIHNlcmlhbGl6YXRpb24gZGlmZmVycyB1bmRlciBjbG9zZWQgdmVyaWZpZWQgbm9ybWFsaXphdGlvbiwgd2l0aG91dCBydW50aW1lIGNoYW5nZS4KClRoZSBleGFjdCBvcmRlcmVkIHByb3RlY3RlZCBkcmlsbCBhbmQgcmVsZWFzZSBhcmUgc3BlY2lmaWVkIGluIG5hdGl2ZS1iYWNrdXAtcmVzdG9yZS1wcm90b2NvbC5tZCBhbmQgaGFzaC1ib3VuZCBleGVjdXRpb24gYnVuZGxlLiBOZXcgYmFja3VwIHBhdGhzLCBpc29sYXRlZCBjbG9uZSBhbmQgam91cm5hbCBhcmUgZGlzdGluY3QgZnJvbSBvbGQgZXZpZGVuY2UuIFJlYWwgcHJpdmF0ZSBkYXRhIHdpbGwgZW50ZXIgb25seSBhcHByb3ZlZCBwcml2YXRlIGN1c3RvZHkgYW5kIHRoZSBpc29sYXRlZCBuby1uZXR3b3JrIGNsb25lOyBjb250ZW50IG5ldmVyIGVudGVycyBwdWJsaWMgZXZpZGVuY2UuIEZhaWxlZC91bmNlcnRhaW4gcGhhc2Ugc3RhdGVzIHJlbWFpbiBkdXJhYmxlIGFuZCBjYW5ub3QgYmUgcmV0cmllZC4gUHJpb3IgVDA0IGZhaWxlZCBjb3B5L3ZlcmlmeSBhcmUgcHJlc2VydmVkLgoKQWZ0ZXIgc2NoZW1hNS9pbnRlZ3JpdHkvZXhhY3RjbG9uZWNvdW50cyBwYXNzIGFuZCBjbG9uZSBjbGVhbnVwIHN1Y2NlZWRzLCBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5IHByZWNlZGVzIHRoZSBleGFjdCBtYW51YWwgaW1hZ2Utb25seSBEZXBsb3ltZW50IHN5bmMuIEN1cnJlbnQgYmFzZWxpbmUgaXMgaGVhbHRoeWdlbmVyYXRpb24yNS9pbWFnZTc2M2MvQXBwbGljYXRpb25jOTYuIEltbXV0YWJsZUNNNmMvUFZDL1BvZGNvbmZpZ3VyYXRpb24vUERQIG9yaWdpbnMgcmVtYWluIHNlYWxlZC4gRnJlc2hub2RlQ1BVMzQ2MG9mNDAwMG0gc3VwcG9ydHMgdW5jaGFuZ2VkUmVjcmVhdGUsIHdpdGggYW5vdGhlciBjaGVjayBiZWZvcmUgZWZmZWN0LiBCcmllZiBhdmFpbGFiaWxpdHkgaW50ZXJydXB0aW9uIGV4cGVjdGVkLgoKUm9sbGJhY2sgcmVzdG9yZXMgRGVwbG95bWVudGltYWdlNzYzYyBhbmRBcHBsaWNhdGlvbmM5NiB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBvbGQgc25hcHNob3QgcmVzdG9yYXRpb24uIFNlcGFyYXRlIGluc3RhbGxlZC9uYXRpdmUgaGVhbHRoL2N1c3RvZHkvUERQLWdhdGVkIHJlYWRiYWNrIGFuZCBhY3R1YWwgbmF0aXZlIGltYWdlIHJlc2NhbiBwcmVjZWRlIFQwNSBjbG9zdXJlLiBBbGxwaGFzZSBzdGFydHMgZXhwaXJlT2N0MTIgMjM6NTk6NTlaOyByZWxlYXNlIHJlc2VydmVzMzBtaW51dGVzZm9ydmVyaWZpY2F0aW9uYW5kcmVjb3ZlcnkuIEFmdGVyZXhwaXJ5IGEgbmV3Zm91bmRlcmRlY2lzaW9uIGlzIHJlcXVpcmVkLiBFVVIwbmV3cmVjdXJyaW5naW5mcmFzdHJ1Y3R1cmUsIGJvdW5kZWRwcml2YXRlIHN0b3JhZ2UgYW5kdW5wcmljZWRhdHRlbmRlZHRpbWUuIE5vIG5ld2RvY3RyaW5lL2F1dG9waWxvdC9jcmVkZW50aWFsZ3JhbnQgaXMgYXV0aG9yaXplZC4K" + }, + { + "digest": "sha256:29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtcmVsZWFzZS1wcm9wb3NhbCIsCiAgInZlcnNpb24iOiAxLAogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWI4NTA5MS1yMSIsCiAgInRyaWFsX2lkIjogImluZmQtemxpYi0yMDI2MTAxMS1yMSIsCiAgInN0YXRlIjogInByZXBhcmVkLXVuYXBwcm92ZWQiLAogICJtZW1vX2lkIjogImluZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMSIsCiAgIm1lbW9fdmVyc2lvbiI6IDEsCiAgInRhc2siOiAiSU5GRC1XUC0wMDA5LVQwNSIsCiAgImNhbmRpZGF0ZV9pbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJhcnRpZmFjdF9zb3VyY2VfcmV2aXNpb24iOiAiOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYyIsCiAgInByaW9yX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInByaW9yX2FwcGxpY2F0aW9uX3JldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiLAogICJzb3VyY2VfcmV2aXNpb24iOiBudWxsLAogICJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQiOiB0cnVlLAogICJuYXRpdmVfYWN0aW9uc19leGVjdXRlZCI6IGZhbHNlLAogICJhcHByb3ZhbF9pZCI6IG51bGwsCiAgImF1dGhvcml0eV9tb2RlIjogIkFETUlOSVNURVIiLAogICJ0YXJnZXQiOiAicmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbiIsCiAgImNvc3RfZXN0aW1hdGVfZXVyIjogMCwKICAicmlzayI6ICJQcml2YXRlIHNhbWUtc2NoZW1hIGJhY2t1cCBjb3BpZXMgYW5kIGJyaWVmIFJlY3JlYXRlIGF2YWlsYWJpbGl0eSBnYXAuIEZhaWxlZCBvciBhbWJpZ3VvdXMgcGhhc2VzIHJldGFpbmVkOyBubyByZXBsYXkuIFJvbGxiYWNrIGNoYW5nZXMgRGVwbG95bWVudCBpbWFnZS9zb3VyY2Ugb25seSwgcmV0YWlucyBsYXRlc3QgZGF0YWJhc2UuIiwKICAiZXhlY3V0ZV9ieSI6ICIyMDI2LTEwLTEyVDIzOjU5OjU5WiIsCiAgInJlbGVhc2VfbXVzdF9zdGFydF9ieSI6ICIyMDI2LTEwLTEyVDIzOjI5OjU5WiIsCiAgIm1heF9zbmFwc2hvdF9ieXRlcyI6IDUzNjg3MDkxMiwKICAibWF4aW11bV9uZXdfc25hcHNob3RfcGF5bG9hZF9ieXRlc19lYWNoX3NpdGUiOiAxMDczNzQxODI0LAogICJsb2NhbF9leHRyYV9kaXNwb3NhYmxlX2Nsb25lX21heF9ieXRlcyI6IDUzNjg3MDkxMiwKICAicHJpdmF0ZV9tZXRhZGF0YV9hbmRfc3FsaXRlX3NpZGVjYXJzX2FkZGl0aW9uYWxfaGVhZHJvb21fYnl0ZXMiOiAxNjc3NzIxNiwKICAidW5ib3VuZF9pbnB1dHMiOiBbCiAgICAiZXhhY3QgY29tbWl0dGVkIG93bmVyIHJlbmRlcmluZyByZXZpc2lvbiByZXRhaW5lZCBpbiByb290IHN1cGVydmlzZWQgcmVjZWlwdCIsCiAgICAiUHJvZHVjdCBhbmQgUGxhdGZvcm0gZmluYWwgYWNrbm93bGVkZ21lbnRzIiwKICAgICJjb25maXJtZWQgZm91bmRlciBleGFjdCBuZXcgZGlzcG9zaXRpb24iCiAgXSwKICAicHVibGlzaGVkX3ZlcmlmaWNhdGlvbl9zaGEyNTYiOiAiZGQ0ZWVjZjBjMTAzZGNhNzkyMjA5NGE4YmVlYjk5Yjc3YWU5NmZkMWQ1ZmU1MzJlMzdiZDgzM2RhYTAyNjE0ZSIsCiAgIm5hdGl2ZV9yZWFkb25seV9wcmVmbGlnaHRfc2hhMjU2IjogIjU2NjM3OTk0ZGZkYWU0NmE2ZjlhYjQ0MmMyZmY5YjI1OTIxMjY1MGIzNWViOThkODk2YzVlODM3ZjAxY2UyZjkiLAogICJleGVjdXRvcl9wbGFuX3NoYTI1NiI6ICJmZDM4Mzg1ZTM2ODdlYzZmOTg4NmQ1MDI1YjM5NDQ2M2MyNTJiODE5OGIwNDI2YzU2Zjk1NzQwMTM5ZWI3ZTliIiwKICAiZXhlY3V0aW9uX2J1bmRsZV9zaGEyNTYiOiAiMmJhMjVmN2QzZWZiYjEwOTVlMGEwZGQ3YmJiNTc3Zjc2YWYwNWM0MjVjYjkyOGY5YTFjN2JjNTJlYTlmNTMyYiIsCiAgInJvbGxiYWNrX3ByZWZsaWdodF9zaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgInBvc3RfcmVhZHlfbmF0aXZlX3Byb3ZpZGVyX3Byb2JlIjogImNhbm9uaWNhbCBsaWZlY3ljbGUub3V0Y29tZXMgU09VUkNFMSB0aHJvdWdoIGV4aXN0aW5nIGFkbWl0dGVkIFN0YXRlSHViIGRpc3BhdGNoZXI7IGNyZWRlbnRpYWxzIHN0YXkgaW5zaWRlIFBvZDsgYm91bmRlZCBtZXRhZGF0YSBjb3JyZWxhdGVkIHRvIHZlcmlmaWVkIGNhbmRpZGF0ZSBpbWFnZS9Qb2Qvc291cmNlIiwKICAiZnJlc2hfc2Nhbl9jb250cmFjdF9zaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgInByZXBhcmF0aW9uX2ZhaWx1cmVfaGlzdG9yeV9zaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIKfQo=" + }, + { + "digest": "sha256:3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "media_type": "text/markdown", + "content_base64": "IyBUMDUgemxpYjg1MDkxIHJlbGVhc2Ug4oCUIHByZWxpbWluYXJ5LCB1bmFwcHJvdmVkCgpUaGlzIGlzIGEgZGlzdGluY3QgcHJvcG9zYWwvdHJpYWwgZm9yIGV4aXN0aW5nIElORkQtV1AtMDAwOS1UMDUuIFRoZSBhY3R1YWwgVDA0IHNvdXJjZTIgYWNjZXB0YW5jZSBkb2VzIG5vdCBhdXRob3JpemUgaXQuIFByZXZpb3VzIFIxIGNvcHkgYW5kIFIyIHZlcmlmeSBVTkNFUlRBSU4gam91cm5hbCBzdGF0ZXMgcmVtYWluIHVudG91Y2hlZC4gSU5GRC1JTi0wMDEwIHJlbWFpbnMgYW4gdW5wcm9tb3RlZCBnZW5lcmFsIHZlcmlmaWVyIHJlc2lkdWFsOyB0aGlzIG5ldyB0YXNrLXNwZWNpZmljIHZlcmlmaWVyIGlzIGEgcHJlcmVxdWlzaXRlIG9mIGFjdGl2ZSBUMDUsIG5vdCBhbiBhbWVuZG1lbnQgb2YgdGhlIG9sZCBhcHByb3ZlZCBoZWxwZXIuCgpFeGFjdCBpbnRlbmRlZCBpbWFnZSBmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzIHdhcyBidWlsdCBieSBhZG1pdHRlZCBvd25lciBDSTExNTM0L3J1bjQgZnJvbSA5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjLiBQdWJsaWNhdGlvbiBpcyBub3QgaW5zdGFsbGVkIGFjY2VwdGFuY2UuIEZpbmFsIHBhY2tldCByZXF1aXJlcyBpbmRlcGVuZGVudCBwdWJsaXNoZWQtaW1hZ2Ugc2Nhbi9ydW50aW1lL2ZpbGVzeXN0ZW0vc291cmNlIHByb29mIGFuZCBmcmVzaCByZWFkLW9ubHkgbmF0aXZlIHByb2plY3Rpb24vb25lLW9iamVjdCBkcnktcnVuIGV2aWRlbmNlLiBVbnRpbCBhbGwgZmluYWwgaW5wdXRzIGFuZCBpbmRlcGVuZGVudCBvd25lciBhY2tub3dsZWRnbWVudHMgYXJlIGZyb3plbiwgZXhlY3V0aW9uLXBsYW4gc3RhdGUgcmVtYWlucyBwcmVsaW1pbmFyeSBhbmQgdGhlIGFjdHVhdG9yIHJlZnVzZXMgYmVmb3JlIGFueSBhdXRob3JpdHksIGpvdXJuYWwgb3IgbmF0aXZlIGFjdGlvbi4KCkFmdGVyIGEgTkVXIGV4YWN0IGNvbmZpcm1lZCBmb3VuZGVyIGFjY2VwdGFuY2UsIHJvb3QgZnJlc2hseSBhdXRoZW50aWNhdGVzIGZpeGVkLW9yaWdpbiBuYXRpdmUgc291cmNlLXZlcnNpb24xIG91dGNvbWVzIGJlZm9yZSBlYWNoIHBoYXNlLiBSZWNlaXB0IGZpbGVzIGFyZSBzdXBlcnZpc2VkIGJvb2trZWVwaW5nLCBub3Qgc2lnbmVkIGdyYW50cyBvciBhdXRvbm9teS4gV3JvbmcgdGFzaywgc291cmNlLCBtZW1vL3ZlcnNpb24sIHN0YWxlL3BlbmRpbmcvYWdlbnQgZGlzcG9zaXRpb24sIG9sZCBUMDQgYWNjZXB0YW5jZSBvciBjaGFuZ2VkIGlucHV0cyByZWZ1c2UuIFJvb3QgcmV0YWlucyBleGFjdCBhcHByb3ZlZCBzb3VyY2UgcmV2aXNpb24vZGlnZXN0cyBhbmQgYWN0aW9uIHJlc3VsdHMgaW4gc3VwZXJ2aXNpb24uIEFwcHJvdmFsIGRvZXMgbm90IHByb21vdGUgYW55IGFnZW50LgoKRml4ZWQgcGhhc2Ugb3JkZXI6IGRyaWxsLWJhY2t1cCDihpIgZHJpbGwtY29weSDihpIgb2ZmbGluZS12ZXJpZnkg4oaSIGNsZWFudXAtb2ZmbGluZSDihpIgY3V0b3Zlci1iYWNrdXAg4oaSIGN1dG92ZXItY29weSDihpIgcmVsZWFzZSDihpIgdmVyaWZ5LiBOZXcgcHJpdmF0ZSBuYXRpdmUgL2RhdGEvcHJpdmF0ZS96bGliODUwOTEtcjEsIHJvb3QgLnByaXZhdGUtYmFja3Vwcy8yMDI2MTAxMS1pbmZkLXpsaWItcjEgYW5kIGxvY2FsIHZvbHVtZSBpbmZkLXpsaWItcjEtcmVzdG9yZS0yMDI2MTAxMSBhcmUgZGlzdGluY3QgZnJvbSBhbGwgVDA0IGN1c3RvZHkuIE5ldyBwcml2YXRlIGpvdXJuYWwgaW50ZW50IGlzIGZzeW5jZWQgUlVOTklORyBiZWZvcmUgZGlzcGF0Y2g7IG5vIGF0dGVtcHRlZCBwaGFzZSByZXBsYXkuIEZpeGVkIG91dHB1dCBzY2hlbWEgY29udGFpbnMgb25seSBjb3VudHMsIGhhc2hlcywgb2JqZWN0IGlkZW50aXR5IGFuZCBib29sZWFuIHJlc3VsdHM7IHJhdyBlcnJvcnMgYW5kIHByaXZhdGUgY29udGVudCBhcmUgd2l0aGhlbGQuIEV4aXN0aW5nIG5hdGl2ZSBzbmFwc2hvdHMvZGF0YWJhc2Uvc2lkZWNhcnMgYXJlIG5ldmVyIHJlbW92ZWQgb3IgcmVzdG9yZWQgb3ZlciBjdXJyZW50IGRhdGEuCgpGcmVzaCBiYWNrdXAgaW5zcGVjdGlvbiB1c2VzIGNvcGllZCBleHBsaWNpdC1jbG9zZSBTUUxpdGUgaGVscGVyczogbGl2ZSBhbmQgb2ZmbGluZSBjbG9uZSByZWFkZXJzIGFyZSBtb2RlPXJvL3F1ZXJ5X29ubHkgYW5kIFdBTC1hd2FyZSwgYmVmb3JlIGFueSBTdG9yZS9hZG1pbiBvcGVuLiBJbW11dGFibGUgcmVhZGVyIGlzIHVzZWQgb25seSBmb3IgZnJlc2hseSBjbG9zZWQgaGFzaC1ib3VuZCBwcml2YXRlIHNuYXBzaG90IHdpdGggYWJzZW50L3plcm8gV0FMIGZyYW1lcyBhbmQgc3RhYmxlIGlkZW50aXR5L21ldGFkYXRhL2RpZ2VzdCBiZWZvcmUvYWZ0ZXIgcmVhZC9jb3B5LiBNYWluIGFuZCBzaWRlY2FycyByZW1haW4gcmV0YWluZWQuIFNjaGVtYSBtdXN0IGVxdWFsNSwgaW50ZWdyaXR5IG9rLCBhbmQgZXhhY3Qgc25hcHNob3QvaXNvbGF0ZWQgY2xvbmUgY291bnRzIG1hdGNoIGJlZm9yZS9hZG1pbi9hZnRlci4gVGhlIGRldGFjaGVkIGxvY2FsIGNsb25lIGhhcyBuZXR3b3JrIG5vbmUsIHJlYWRvbmx5IHJvb3QsIG5vIHNlcnZpY2UvcnVudGltZSBjb25maWcvY3JlZGVudGlhbCBtb3VudHM7IG9ubHkgbmFycm93bHkgc2NvcGVkIFVJRDAgQ0FQX0NIT1dOIGluaXRpYWxpemVyIHByZWNlZGVzIFVJRDEwMDAxIHJlYWRzL2FkbWluLiBPcmlnaW5hbCBwcml2YXRlIGNvcHkgaXMgaGFzaC1zdGFibGUuIENsZWFudXAgcmVtb3ZlcyBvbmx5IHRoZSBkaXNwb3NhYmxlIHZvbHVtZSB3aG9zZSBub25jZS9sYWJlbHMvY3JlYXRpb24gbWV0YWRhdGEgbWF0Y2ggdGhpcyB0cmlhbCwgYmVmb3JlIGN1dG92ZXIuCgpFYWNoIHNuYXBzaG90IGlzIGJvdW5kZWQ1MTJNaUIuIEF0IG1vc3QgdHdvIG5ldyBzbmFwc2hvdHMgb2NjdXB5IGVhY2ggbmF0aXZlL29mZmNsdXN0ZXIgY3VzdG9keSAoMUdpQiBwYXlsb2FkIGVhY2gpOyB0aGUgZGlzcG9zYWJsZSBvZmZjbHVzdGVyIGNsb25lIGFkZHM1MTJNaUIgd2hpbGUgcHJlc2VudCwgcGx1czE2TWlCIHNpZGVjYXIvbWV0YWRhdGEgcmVzZXJ2ZS4gTmV3IG5hdGl2ZSBkcmlsbCBwaGFzZSBjaGVja3MgZnJlZSBzcGFjZSBmb3IgYm90aDsgbG9jYWwgY3VzdG9keSBjaGVja3MgdHdvIHNuYXBzaG90IGJvdW5kcyBwbHVzIHJlc2VydmUuIEV4aXN0aW5nIFQwNCByZXRlbnRpb24gY29uc3VtZXMgYWRkaXRpb25hbCBwcmUtZXhpc3Rpbmcgc3BhY2UuIEVVUjAgcmVjdXJyaW5nIGluZnJhc3RydWN0dXJlIGVzdGltYXRlOyBodW1hbi9jb21wdXRlIHRpbWUgdW5wcmljZWQuCgpDdXRvdmVyIHRha2VzIGEgZnJlc2ggbmF0aXZlIGJhY2t1cCBhbmQgZXhhY3Qgb2ZmY2x1c3RlciBjb3B5LiBSZWxlYXNlIHRoZW4gcmVxdWlyZXMgbGF0ZXN0IHNjaGVtYTUgcmVhZG9ubHkgcHJvb2YsIHNlYWxlZCBQb2QvRGVwbG95bWVudC9jb25maWcvUFZDIGN1c3RvZHkgYW5kIHNhbWUgYmFzZWxpbmUgaW1hZ2U3NjNjL2N1cnJlbnQgQXBwbGljYXRpb24gc291cmNlYzk2LCBhIGhlYWx0aHkgc2luZ2xlIHRhcmdldDkyLjIwNS42Mi4yMzkgbm9kZSBhbmQgZnJlc2ggcmVxdWVzdGVkIENQVSDiiaQgYWxsb2NhdGFibGUgY2FwYWNpdHkuIFJlY3JlYXRlIGFuZCByZXNvdXJjZXMgcmVtYWluIHVuY2hhbmdlZC4gU2VydmVyIGRyeS1ydW4vY2xpZW50IGRpZmYgbXVzdCBzaG93IG9ubHkgdGhlIGltYWdlLiBBcHBsaWNhdGlvbiBVSUQvcmVzb3VyY2VWZXJzaW9uL3NvdXJjZSBDQVMgZGlzcGF0Y2hlcyBtYW51YWwgZXhhY3QgZmluYWwgcmV2aXNpb24sIGluaXRpYXRlZEJ5IGN1c3RvZGlhbi1jb2RleCwgZXhwbGljaXQgcHJ1bmU9ZmFsc2UgYW5kIG9ubHkgYXBwcy9EZXBsb3ltZW50IGluZm9ybWVkLWRlY2lzaW9uIGluIGl0cyBuYW1lc3BhY2UuIE5vIHdob2xlLUFwcGxpY2F0aW9uIHN5bmMsIG5hbWVzcGFjZS9jb25maWcvY3JlZGVudGlhbC9yZXNvdXJjZSBjaGFuZ2Ugb3IgcHJ1bmluZy4KClZlcmlmaWNhdGlvbiByZWFkcyBpbWFnZUlEL3JlYWRpbmVzcy9vd25lciBjaGFpbi9leGFjdCBjb25maWd1cmVkIFBvZCBmaWVsZHMsIHNjaGVtYTUvaW50ZWdyaXR5L21ldGFkYXRhIGNvdW50cywgaW5zdGFsbGVkIHBvbGljeSBoYXNoIGFuZCBzeW50aGV0aWMgcHVycG9zZSByZWZ1c2FscywgaGVhbHRoMjAwLCBpbnN0YWxsZWQgZml4ZWQgemxpYiBhbmQgZXhhY3QgaW1hZ2UgcHJvb2YuIEFmdGVyIGV4YWN0IGNhbmRpZGF0ZSBSZWFkeSBhbmQgdmVyaWZpZWQgcm9sbG91dCwgcm9vdCBleGVjdXRlcyBhdHRhY2hlZCBwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IGluc2lkZSB0aGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kLiBJdCBjYWxscyBjYW5vbmljYWwgbGlmZWN5Y2xlLm91dGNvbWVzIGZvciBpbmZkLTIwMjYxMDExLXpsaWItcmVtZWRpYXRpb24tcjEgU09VUkNFdmVyc2lvbjEgYXQgZGlzcGF0Y2hlciBmaXhlZCBPUklHSU4gd2l0aCBOb1JlZGlyZWN0L3Byb3h5IGRpc2FibGVkOyBleGlzdGluZyBpbnRlcm5hbCB0b2tlbl9maWxlIHN0YXlzIGluc2lkZSB0aGF0IFBvZCBhbmQgbm8gdG9rZW4vYm9keS9wcml2YXRlIGNvbnRlbnQgaXMgZXhwb3J0ZWQuIFJvb3QgcmV0YWlucyBib3VuZGVkIEhUVFAtc3VjY2VzcyBtZXRhZGF0YS9vYnNlcnZhdGlvbnRpbWUgYW5kIGNvcnJlbGF0ZXMgdmVyaWZpZWQgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UsIHRoZW4gcmVjaGVja3MgdGhvc2UgaWRlbnRpdGllcy4gVGhpcyBhY3R1YWwgcHJvdmlkZXIvUERQLWdhdGVkIHByZXNlcnZhdGlvbiBwcm9vZiBpcyBzZXBhcmF0ZSBmcm9tIGluc3RhbGxlZCBzeW50aGV0aWMyYWxsb3c4cmVmdXNlOyBib3RoIGFyZSByZXF1aXJlZCBiZWZvcmUgdGFzayBjbG9zdXJlLiBJdCBkb2VzIG5vdCBhc3NlcnQgcHJvdmlkZXIgYWR2aXNvcnkgZW1pc3Npb25zIG9yIG5ldyBkb2N0cmluZS4gQXJnbzMuNS4zIG9taXRzIGZhbHNlIHBydW5lIGluIG9wZXJhdGlvbiBzdGF0dXM6IG1pc3Npbmcgb3IgZXhhY3RmYWxzZSBpcyBhY2NlcHRlZCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBqb3VybmFsJ3MgQ09NUExFVEUgZXhwbGljaXRmYWxzZSByZXF1ZXN0LCBleGFjdCBzb3VyY2UvcmVzb3VyY2VzL2luaXRpYXRpb24sIG9wZXJhdGlvbiBzdGFydCBhZnRlciBvdXIgZHVyYWJsZSBhdHRlbXB0LCBib3VuZGVkIGZpbmlzaCBhbmQgb25lIFN5bmNlZCBEZXBsb3ltZW50IHJlc3VsdC4gVHJ1ZS9udWxsL3N0cmluZy9wcmlvci9mb3JlaWduL2V4dHJhLXJlc291cmNlIHJlc3VsdHMgcmVmdXNlLgoKUm9sbGJhY2sg4oaSIHJvbGxiYWNrLXZlcmlmeSBpcyBzZXBhcmF0ZSBhbmQgcGVybWl0dGVkIG9ubHkgYWZ0ZXIgYSByZWNvcmRlZCByZWxlYXNlIGF0dGVtcHQuIEl0IHN3aXRjaGVzIG9ubHkgQXBwbGljYXRpb24gc291cmNlIGJhY2sgdG8gYzk2IGFuZCBEZXBsb3ltZW50IGltYWdlNzYzYzsgaXQgbmV2ZXIgcmVzdG9yZXMgYW4gb2xkIHNuYXBzaG90IG92ZXIgdGhlIGxhdGVzdCBkYXRhYmFzZS4gUmVjb3ZlcnkgZGlzcGF0Y2ggd29ya3MgZXZlbiBpZiBjYW5kaWRhdGUgUG9kIGlzIGFic2VudC91bnJlYWR5IGFuZCBuZXZlciBkZXBlbmRzIG9uIGNhbmRpZGF0ZSBEQiBpbnNwZWN0aW9uLiBSZWNvdmVyeSB2ZXJpZmljYXRpb24gc2VwYXJhdGVseSByZXF1aXJlcyBSZWFkeTEvb2xkIGltYWdlL2N1cnJlbnQgc2NoZW1hNS9kYXRhLWN1c3RvZHkgYW5kIGV4YWN0IHJlY29yZGVkIHNjb3BlZCBjb21wbGV0aW9uLiBBbGwgcGhhc2VzIG11c3QgYmVnaW4gYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVo7IHJlbGVhc2UgbXVzdCBiZWdpbiBhdCBsZWFzdDMwbWludXRlcyBlYXJsaWVyLiBCZXlvbmQgZXhwaXJ5IHN0b3AgYW5kIG9idGFpbiBhIG5ldyBmb3VuZGVyIGRlY2lzaW9uOyBubyBhdXRvbWF0aWMgZXh0ZW5zaW9uIG9yIGVtZXJnZW5jeSBncmFudC4gQSBmYWlsZWQvdW5jZXJ0YWluIGF0dGVtcHQgcmVxdWlyZXMgaW5mb3JtZWQgcmVjb3ZlcnkgcmF0aGVyIHRoYW4gcmV0cnkuCgpUMDUgcmVtYWlucyBwcm9ncmVzcyB1bnRpbCBhY3R1YWwgaW5zdGFsbGVkIGFjY2VwdGFuY2UgYW5kIG5hdGl2ZSByZXNjYW4gcHJvdmUgdGhlIGZpbmRpbmcgYWJzZW50LiBObyBSaXNrIEVuZ2luZSBncmFkZSBpcyBhc3NpZ25lZC4gT25seSB0aGVuIG1heSBvd25lciBjbG9zZSBUMDUvcmlzayBhbmQgY29uc2lkZXIgZmluaXNoaW5nIFdQOSwgd2l0aCBleGlzdGluZyByZXNpZHVhbHMgbGl2ZSBmaXJzdC4KCkFjdHVhbCByZWxlYXNlIGFuZCBpbnN0YWxsZWQgdmVyaWZpY2F0aW9uIGFsc28gcmVxdWlyZSBmaXhlZCBwcml2YXRlIHJvb3Qgc2NhbiByZWNlaXB0IGFuZCByZXRhaW5lZCBmdWxscmVwb3J0IGF0IC90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4te3JlY2VpcHQsZnVsbH0uanNvbiwgc3VwZXJ2aXNlZCBtZXRhZGF0YSBiaW5kaW5nIHRvIGV4YWN0IGltbXV0YWJsZWY1NTgvYXJ0aWZhY3Rzb3VyY2U5YjQvc2Nhbm5lcmRpZ2VzdDYyYjEuIEJlZm9yZSBqb3VybmFsIHN0YXJ0LCBmdWxscmVwb3J0aGFzaCBtdXN0IG1hdGNoLCBubyBzdXBwcmVzc2lvbi9hbGxzZXZlcml0eSBmbGFncyB0cnVlLCBleGl0MCwgbm9uZW1wdHkgdmFsaWQgZnVsbHJlc3VsdHMgY29udGFpbiB6ZXJvIGZpbmRpbmdzLCBzY2FuIGNvbXBsZXRlZCB3aXRoaW40aG91cnMgYW5kIG5vdyBwcmVjZWRlcyBEQiBOZXh0VXBkYXRlLiBUaGUgcHVibGlzaGVkIERCIGV4cGlyZXMyMDI2LTEwLTExVDE4OjU5OjUwWjsgaXQgaXMgbm90IHZhbGlkIHVudGlsIHJlbGVhc2UgZGVhZGxpbmUuIFJvb3QgcmVmcmVzaGVzIERCIGFuZCByZXNjYW5zIHRoZSBzYW1lIGltbXV0YWJsZSBpbWFnZSBhcyByb3V0aW5lIHJlYWQtb25seSB2ZXJpZmljYXRpb24gd2hlbiBuZWVkZWQsIHJldGFpbmluZyBhbGwgcmF3IHB1YmxpY3NjYW4gYXJ0aWZhY3RzLiBBbnkgbmV3IGZpbmRpbmcgcmVmdXNlcyByZWxlYXNlL2Nsb3N1cmUgYW5kIGlzIHJldGFpbmVkIGZvciBpbmZvcm1lZCByZWFzc2Vzc21lbnQvbmV3IGRlY2lzaW9uIGFzIG5lZWRlZCwgbmV2ZXIgZmlsdGVyZWQgb3IgaWdub3JlZC4gRXhpc3RpbmcgcmlzayBzdGF5cyBvcGVuIHVudGlsIGFjdHVhbCBpbnN0YWxsZWQgcHJvb2YvbmF0aXZlIHJlc2Nhbi4KClJlZmluZW1lbnQgcHJlc2VydmVzIHJldmlld2VkODEvc291cmNlIGJ5dGVzIGFuZCBleGFjdGRyYWZ0MjkgY29tcGxldGUgYXJjaGl2ZXMuIEluaXRpYWw2NyBtYW5pZmVzdCBoYXNoIGlzIGtub3duIGJ1dCBleGFjdCBvcmlnaW5hbDY3bWFuaWZlc3Qvc291cmNlIHNuYXBzaG90IHdhcyBub3QgcmV0YWluZWQgYmVmb3JlODE7IHByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIGRpc2Nsb3NlcyB0aGlzLiBObyBwcmlvcm5hdGl2ZWVmZmVjdCBvY2N1cnJlZC4gTmV3IGZ1bGwgQ0xJIHN5bnRoZXRpYyB0ZXN0cyBleGVyY2lzZSBtYWluIHNvdXJjZWhhc2gvcmVjZWlwdC9qb3VybmFsL2Rpc3BhdGNoIHdpcmluZyBmb3IgZHJpbGwtY29weSxyZWxlYXNlLHZlcmlmeSBhbmQgcmVmdXNlIHNvdXJjZSBkcmlmdCBiZWZvcmUgbmV3am91cm5hbC9uYXRpdmUgYm91bmRhcnkuIFJlbW90ZSBwYXlsb2FkIGNhcnJpZXMgZXhhY3QgZnJvemVuIHNuYXBzaG90IGlkZW50aXR5IGFuZCBjb21wbGV0ZWQgcmVsZWFzZSBpbnRlbnQuIEZ1bGwgc2NhbiBjb250cmFjdCBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgU2NoZW1hVmVyc2lvbjIvY29udGFpbmVyX2ltYWdlLCBwdWJsaXNoZWQgY29uZmlnSW1hZ2VJRDYyMiAobm90IGRhZW1vbnNlcmlhbGl6YXRpb25mMiksIGV4YWN0MTFEaWZmSURzL3Jvb3Rmcy9zb3VyY2UvY29udGV4dGxhYmVscywgZXhhY3RseTM4T1MrNlB5dGhvbiBwYWNrYWdlcyB3aXRoIGNhbm9uaWNhbFBVUkwvdmVyc2lvbiBpbnZlbnRvcnksIGZpeGVkemxpYnIxIGFuZCBubyBvbWlzc2lvbnMvZHVwbGljYXRlcy90cnVuY2F0ZWQvZW1wdHljb3ZlcmFnZS4gQXJjaGl2ZSBzY2FuIFJlcG9EaWdlc3RzIGFic2VudCBpcyBsZWdpdGltYXRlOyBub3QgZmFicmljYXRlZC4K" + }, + { + "digest": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQwOjE1LjU0MDg3NCswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMSwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImNjZmY3YzFlY2ZkOWViNTlmYzBjZTU2NmMxMDEzYTJhZjVkZjUxNGFmMDQ4YzY4NDc0YTI3Mjk5NzAyNGVmN2IiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iLAogICJwcm9qZWN0aW9uX3JlZmVyZW5jZV9maWxlcyI6IHsKICAgICJzZWFsZWRfbGl2ZV9kZXBsb3ltZW50IjogInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiIsCiAgICAic2VhbGVkX2RlcGVuZGVuY2llcyI6ICJzZWFsZWQtbmF0aXZlLWRlcGVuZGVuY2llcy5qc29uIiwKICAgICJjYW5kaWRhdGVfZGVwbG95bWVudCI6ICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIgogIH0KfQo=" + }, + { + "digest": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQzOjQyLjg1MTA4NiswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMCwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiIsCiAgInByb2plY3Rpb25fcmVmZXJlbmNlX2ZpbGVzIjogewogICAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiAic2VhbGVkLWxpdmUtZGVwbG95bWVudC5qc29uIiwKICAgICJzZWFsZWRfZGVwZW5kZW5jaWVzIjogInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iLAogICAgImNhbmRpZGF0ZV9kZXBsb3ltZW50IjogInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiIKICB9Cn0K" + }, + { + "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:2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtZXhlY3V0aW9uLXNvdXJjZS1idW5kbGUiLAogICJ2ZXJzaW9uIjogMSwKICAicHJvcG9zYWxfaWQiOiAiSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEiLAogICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgImZpbGVzIjogewogICAgImV4ZWN1dGlvbi9hY3R1YXRvci5weSI6IHsKICAgICAgInNoYTI1NiI6ICJlYjU4ZGVlOTg5MzRmZWYwZmQ5MTZjNzgwN2VlYTFkNjAwZDcxZWUzNWNkYTliOWZiYmM1NTY0ZTQyNTYwNDYxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIyMDE1LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcwOGFYUGJ4cExmOVN2bUtSOUEyandWSHpFZFpsZXhsTVJ2SGNrbEgwbEtwVUtCd0pCRUJBSUlEa21NNC8rK2Zjd01CZ2NwT1p0OXFWZlBGRERUMDlQVGQvZmc4UER3UEpaaUdkN0pRT1JsS3JPYk1JZWY2ZHJMNVVzUnl4dVppYXlNUmJFT2N4R1VXUml2Uko2VW1TOUZtc25VeTd3aVRPTFI0ZUhoUWJoSms2d1FYcmFDeDduVWZ3T2tkUlF1OUorLzUwbXNmeWY1d1RKTE5pTDFDaHdpMU9PMzhLY2VraGs0dVl5a1h5UlpiaDRVWG1GK2w0czBTM3laVjIrMzVtY1JidVRCUWJqRVo2Tmw1SzN5VVpMQ3cvQlBPVHNROEYvbXdhYkZ1MjFleU0zcFhWajBIUDArRUdGY3lBeTJXaUFoNUxJRTZqajlnNE8zUHgyL08zMG41cUxuQkZrWVJjT0Y1MStYcVRNUTZtOC9TYmY0VjdKY1JtRXNoMERJY0VsUC9FaDZjWmtPMVJ0blFEandmNDVmRmdrTXRjRHBKeHBnQm5TQXc4R2ZGY3dzaVNLY1l2L1dTd0syQjRGY0F2Wi9sR0VtZXpkZVZNb0IvT25CVWZTWkFrQ2NPQ2tFdlpvWmZKZ3VIL0hoYVpZbFdVL05VUUR6dGRmRG8xTXdnbkFsOHdKSW9rNThCTytQbmo3cjllbnRiVmlzNldSNUNweUFqSHRPdG5ENndzdmhMQUgwcGxwNW1XUmlFU1grTmRCZmhFRDdYdVJ0Rm9FM1V5Tkg4SDlCYnpvNWV2TG8wVkYvSUJhTzA1OVpkTlRZak1vMDhBclpJMWlNQ0J4bG1jWDYvVnJlOGErZTNsV2FoVGM0QmRFY3dMQ011RzQ3LzhHTGNxbkpGUzhUMktpMW5RaTVzYWRYWUVMMzhObm9uZnY2M2Nucml4N09HZVdGdTBrQzJVZUNHOUJDQW1SaEJsK2MvbGdmM0s5dHpJc0RvVitYWVNEbWM1Q2owUXAyRlFhOVByM1dvSDQrUHpsdHJBdWplNVBrK1dUU2djRWtlVGFadEJmclZjUGdWRFM0R0hqM0dzRk5nZnlPSXBwSWJtT1FHYi9NaXlUWWFrS1F3RnljbjcvWEpIUGRaUmhKMSszRE1lWkpkQ043L1JIb0RCa1hCNjlBckdBWWp0YVB6bjg1TzczUVU1M3hPdG5JOFMzb0FYODlSbVN5alF5R2dmVERIQlFSclBUcXc3djM1eWV2ajgrNnB4UnJPV1Q4UXE4YS9oc01yaWFPaFROU08xS0NtSStQSmtmUHBwUHBkQWhyQnNNL2diK0gyZFE1ZUhmKzZuOU9jV05PR1lkM3MvRjRmT05sWTlDWTR3QTRUbWFqSFA1eERsNy9mUHdqN3NzQmZGZnk5MlRrSjJXVWJCYjRPdlNpc2ZxenZhSC9aaUdhTFo4Ky9lYWI1Wk1YenhiVDVkR3o1OEhrdVIvNEw1WlBqeWJmeUdmTG8rWFJrK255K1pQRjg2OWYrRWRmdnpoNnNwaDgvWHh5QkZDbVgzdFA0WkZ6OFBIOHpZZWZDUWQ3QjBNNEFUaGFPZFQ3Y3c1K1B2N1YvZjYzOTZUZG5rNlB4Q09oNUV6cmtUTHVnWksvQWFtRFE1NmZKVEZvRTlTeFNWbk1YMHlVaUNneHF4VHpxSm9YeGlrTXhka3dVZDRWOC9jWmFpVGZTMkdPZEFFT3Z1ZUhHckQ2VjBzcG1oRVhjQytqb3NmL3FIV0xiRnNwQXRKbnNBMGNQWW9TTDhqVllPRGdnS0RoS0hubnk3UVF2VXJSRGNUN2Jjby8rM3ZVb1pON1M4bTJFdmJyeXhDZ2xMRjM0NFdSdDRqQWZzSVNQdkFlUFBSbFZuZ2hNSndnaTRkRXEra0toUlpUelFkUlJkR2FzTERuWVF3U0RTQzA2ZzVDdjJCSnB3Y28vRDNIaXlMWFgwdi9PbmRUTDg5aEpiRFlSTU9hUkR1TWJnQ2FnelErMlFnQldLWVIyTGlYc01sYndRZEFLbnN0b3dEOGdBVFBNME5iZ2pEQVRkaUVSUUdTUGhlZkdDQWFuaVlHYUl1OFczV2Nyb2FHajJQd0dtNms2NlhBRzdBRmw3QUlaZUF1dG02V0pJVlR4NWtSMTVOS0VPRzRDSDJRenNCZFpWNWNJRWgyU2x5MEMwa2NiZDBGSU1YbUZkN0ZYcHF2azhLODdZUnZSckhJMVNZdXRvWE1hMDlRZzFsYllWM2xLcTJ4RDM5UTB6Z3ZUUUkzOWpaUy8xYVBJeHhpTmdFS1MyNDhGMzJRVlJZV1d4ZjBSRnprbmVCcEpyOTNOOTRXSnZsUkdlQ2oyQzh6d2c1T0djNk45Z0htbDEwM0Z6a1FkSUFNYWxTOFlYWGF0UkRxYkJ4RmNGS1FhcW05RGpocGM1UzBHU0FGbUFyQ0RNeXdoMmNDc0ZFUWNFQUhiRDhLRWRFZ1hDNnRZMUNVNjFwQ2I0MHA5ZlNCeTZoamN0R25xb0VqU1lzaVlLeTB6TklFNERCRDh5bEZvYjgxYUhXQjVSRm9hYTBKNm1RcjBLaDZpWDhJTFAyVmdwWHhWalJyTGIyb1dMdG93OEhaekcwZUEyRUpBNW5oandVVFhmcm9HK285K0hTaXp1ZWFac2xCT1pDYTZJdHY1NVhvRHRCaXlic1VMRHZJc1pKNElFTVU1RWJ3bGJpVHhsTDZ6VVdWVjJ5MXE4NzhkcUJkTm1SbzlOaDZYeXFPRDJWOFN4dWp5NnFXYTdpdCtCK1A1NDFmNHJpcmZoZVdiWkh2NE1BSEwxb3A4OUd5aktLTlYvanJYdVpjZXNQbFpQamk2dE96SjU5aENSc24xTkdvaHRtSUFvL0F5OUFjaC9Lb0c4Y0JPRFFWVXdjK0dwY0NESmtpUTNNV0x3ODBKbE15RWQrS0hlT1FjWXhYMEdiOEp0bzVCRTU3a1NiZHVRZm5KaG8wL29xUGpLS3JVZjVIRkJiU0NvLzBrMzZiaWppN2lZN3lUbWdoNVZHd3Y3YmJzNWtlTlZ3YjlHY3VIWjZHbUF3aFJJdVg0UXArUTVEUzA0NGxPSk55a3hiYklZL1VnL28wWTUza2FMM1lpN3dTandVdDM2UXdZYVBjcFc1M0tKT2JCR01XTk1VWTJySDZIZ2kyc0NqdGhwaWdRY0I2Rm5wN2xTRkFZWXNMZXF3MitwWDRnUklEb05CS29DSExQR29MRUZIaExURWszbmg0akt4QmM0SHBBZ2dtN2lTZVNxWVRCUmdQamlwTlVta3pNTjRiRS9SZm5QOTRjZnd6K3hmZUZwMDE4aTVhZUR1ejlsNXFCbzMzQWNPYWp3YksrWUZYaWxBdGV6ZXphT2RvOXdTZUdqb2V0THdHVU5kZ08yYTJqOW1qS0dhc1h3NVJ0NEZIbjBiSmRnTjRqSENvMDZjWTFrWC90OWZ2dHdIRGVCbkQvbndnN0g3d1ROQ2hQZUZoUy9nZzl5SEd4enZnbS9kZmpMekpSM1FETmltS0w0WmJzMElBdlVkeDViajVacFJ1NjdEYW9Cb0dIa0NaYmVNVDE5anJCOENxMi9ZZG16YURPUFlDaGtxV25idkd6U2pEYUdIRkNzNll5QlpXYlBWelA4TW9aSzdsQ1Vha2tRZWhnK082YjQ5L2UzTitmT0s2RHFxSU5Pc1Jsa0c1U2ZPZUVybCt2MjltbUYzQzFCOC9IRjlZRXkxU2VmRkt1cXZTeTlwMDZ0ZDBiUzFpSTlXWjUydU9FY0lveFBCbU1pV3ZhVnVzay9ock1YU3VCbW83bGRvN21rejZXdWVSODZaVndUN1Y5enNJZWV4RlNxbHhRTzl5R0RRWDlmUWQyaW4xWmw3TDVIR0dwSm1lWTIyVmhhRHI1bnFaRWJxZ2w2eHB3SFplMnV0ZFhUcE1BZWVLcG03QVNjWGhNUHZ2YUhCYXVmSnJydVYycDF2emdFaW03WmIxMjZaWlkzd0ppMTBoa1FnSCtvdWNwd1N6eDZEbS81U3hRVmd3bDJqYlN3N1UzT3k5WmVkcjNtdmxxOTFuK0kwVDB3SDRmai9HNFJUNEF0ekdBRlBoR25VcmhVVm5uUVExMUUwVWQzV3czd0g4RXgzQTN1VlEvWHFrSC9YL0MvWUNVSnFlSUtPRDZiU01GaVU2TkpDSkV0K0xUT0lLUFEwY3hleUFhQ1k1WjFscDNBRC9QSGQvdVRnL2UvT2IrSXYvZW5WeGV2eGUvM0g2NjZzMyt2ZlorUS9uYjk2Yy96S3drNEpmaWUvRDJBTURiNmpEV1JTeFNzRDJrMU5RSk1MVEdWUnl2QWFxaGxBa1NUUUdQaWpHVWJKU250bElRWDFud0pIWFB5YmZ2WktOV3k4WDVOQmh3QzhXRWxoZG9tMlBzUmJCZFFud2tzT1lLeEZWc2hrMnNneUlBRXVNZG01VnF0a2FYTEUzUnNiSVA1alB2eTRYRUJSRjVNYUlZU3hhT1RuaGdLT0doL0s0SFFNQ0o0bWgzekZuT0JRUW5va3hibW1zS0RSR1EvRE4wOG1MNlRDYmpoRXFIbUNWZ1MweUw4NlhFcFdMbFVkN1MzdmFvVDdWUmxCMTB0bk03WW12MzU0T3VsQnUvUWR6WlpiWmMwOU9QNTU5ZVBPbXdrMlhZeEEzWFprWm5jaWxCOXJ0blhyUWF3OEgrN0FLYzB6bzY4MnBWTnpBQW5QNjhmVHN2UXU4ZVZJQkNFQXBZUUFKNjZFeEdHMFNrSllrRHYxZUgrZzJmVHF4VkJWNEFqZVVuSnBZcE56V1k3WGJOWVlGbUIrYnRVZ0N1aGpjV21TdmViWHVzTFZ1eHp3dC9ucitkeXFIWjdiUFA2b1JkdkxjSERjdVJPR0wwMTZEcXlJazNGUURhWkJ4aEVJWEorQ2s2S3h0RzRRcTloQ2tXU2MvTEFEMGRjZjJGR0VmendVc1loZFZ1cW1naG44NzM2ZVRrVHoyMEQyQlpqTi9ReTRBcFc5bGtMZXNEb2FoSFFTMGxjVnRGdGFMUTAzSkc5MTZZZEhUM3NmR3UrdE5CL3RZd3FyVkxHR1JLR3B3bmVFRHNwUzlIWXVxbyt3YUEyZG5ocVhnUmZmSWNLRFJhSitrR1hnZDRzRGQ3Mm1UdHFoVkZGcEdaYjYyM3FGU3piZXgzNnNOVWp6WDEvNFFGZERJN05RclltYkZyanczalI5eEhRMHJUSlJHbU8vam5WYXBDaXVTdk95T2ljb2h1aG8wZUNpTWRRWjhiSEwxTHdYbkVBZk45UGRYNGtJT1VmaUU5c1RHR09LcWlOanNVYnhIMndUL3M1TnpBeEk5TUdySWVReVZUUlpQL2ovN2daclNCTzdTWkphdjZ2U29IaVBWMU5nV2tlNmpZZDJCVXNHK0lVblQrOVBkQTVvKzlVek1wMGVQOUZKY05IZDk0THlDa3AxZHVkb1psellzcjlWUEtNalBWYjBCUmxERjlyT0tGbFMxblNGc2UvV1k0R0VaVHJNajIrV3ErNlUxQWREanRWakFXU1psdmp0U3NPT05acVJnc3JuQTRRWXUrOThNZGhlVEF6TlJodGNnVDdMVGNNbjFvYUc5NHpUWUpWWUpFMDVyb1N2alVaSGwweWVNNHNUb0ROeVV6NStkcXpyUGFTaWQwbTFGeEdhY0tzSlJyTFdJaTJIa3BSUDBZdXFNeFc2dU9qOXhRdmdKR2Evd0w0TjRmVDhSdWhpQnZadWJKQ3E1MkJMbDdWM3QyQkNENmR5T3FxYWlNRU4wb2dZcXZaMm53QXVJYk43TUZUaEJtS2RKanNWQndSZ0piNUZMMERoVk1TNnNBcVVFWCt4bWwwWnJDVHp4aWdKempTNktOaFBDVzBEZ1NvbTBsa3M2OGprWFp0V0RUWkU3bTdZS0hCMEFTcDZ2OGRDbFpKM1NiMDlRK01FazJodW5MSHhRcFR0UGkxL3lpWUY0M0hDcWxWaUNIOUlPdTFmRC9jMGZ0am16eWIwQUZmcHo4dFJ4QTM4UERKQnR2b05tekZZTk5sUUU2dVJEL1U2elhwR0ZhWThraWtGaGx4QXpHbzNFU01ReWNBM0RGc2E1cWdkMW5vVjZ2UXROTTd1SktGYXc1SzFtZUNPeVZxVmNyYTlHMU9yMUZWUzdaRzhrRk54UW5rVjdubkpSbkI1Y1RrQWd6aWcycjhoUmY4K0Y4emNrSXc0QllIbHArUldOR1NmTWlLeTRtQmRwR01sd2ZlaDVpalRQbmY1OU1OK0IycGMxa0lwc1laNUVKQjlOK3UxVTRaK3U1WFptVVlGU05iVUUwWmtxUEt1dHc2OFRJMXVNQ1B4NHhheDFERkVJQzZyV1F6RTZLRjJOYlR6QjVaV3JoUDNBSUtmOXAzT1loNjZ6K1BENlpESitkZnpXZmZYVCtTOW5nRnhZaEJEcS84bWNTdTZUMm4yUlFLd3Z4ZG5wTHhRa2EzTG9ITUpaSXJDV01zWlV1M2o3OGRXWXl5empJcm1HbUdCREdRVjVCMm82ZjZsekJpQUNrWWdwZE1EeXF5ekkyNUszSXlVTENoWHl5ZzRQRCt2dGpJTWtINkNyT3FBK3c4N1dRbTRYdVlDVllhZXFZZVMrdnNKbEVrSGtQWGZHU2k4NEwzV0pkbjc2Njl2VFYrOVBUM0ExOE1MUjVBUmgxdU1aL1ZtN09RV1poeXBQSmlHak9NaEtJd0VnZjcxSkFnVm1RSzFoZ0VZdzE4a2pmdkVZTVNMaTZBUmNsVC82eTJTUC9xcmxqdjZ5RWs0RGxVYmlpdWE4MlNINEVuMzkrZVNnbmJjeGFadkN5MEJPd0YyckIrNFV1ODJSK2tpT2VMUW9seHhmV08yQkI0MlFWMGUzdU9qamVTMlN4Wk9FcDk4OW5SNDlVdE03S0t2cHFRNkpDNTQ2REtVVUlna2xvMXdMTWw5MnR5V3FrU3JZZW1tQ0xQM2N4RmZVdE5kc1hQelhYRFBKSGx4QnFrUGJEY1FDdDh4eXpRUEo3ZTZqbms3QUsrUC9KOXpzMGJXWEI3QllETHJzMDJHakZlaHdWcUMzZnRqcHkvUEx6NEFKU0ZsVnI5RDhybXNPZXh6ZHZ0VmlxbDgyRzB3cE9xbGlaS3l6Z2x6L28vWGJqc3A0VnNZTU90dlF2eUgvRmN2aU5zbW9XeGY4Q09YZUlNOGEzd21RU1V2U3pGUCtjd054WVVhdnBrZmZiRG9jR0JnRFNvUjJNcGxORkF3dkJhOHBvVDdpNHpkdnFvZGVRRDBwcEhXN1llWFNMN0h6WWdncWkvRUVyRytIZUlMQWpTdXB2R2pTclBnVCt3em1yR0FHZWVhVGo2UnM3bVBoREFLUWVxUFVPaGNFQzVGdDB5UmtjRndGZ2wvVU9ZbEwrV2hIS3FWOFplVnVpYlBuM2IyR3BCYm1mUHdQN3phY1BsVTViN3RxeFF2eDg0VHRPckhRZis2UXJUTW1pWnZSLys4NTZ3ZWNZc2NhZit0UWRaekt0YVBLZzlTVWVneVV1ditVbGFlL3dIODE2SVkrdXRybGRUKzRWTnB2Rkd2VXNMYmJxb1BPRkQzMEZKT0xYS0V3ZlVsaXhYYUE3TGUrTDBFajN4RlJlQ1hTaE1TaXFpMnAxbytxVmxmdWJjUDExek03QTMxVHFNTlF2NUgrSFBzUk1GMTFIcnl5VXZzS0x5L1lnRHY0b0pOcVJURkRtbXlPN3A2eWdoVTczSHU4alVRV0xyUG5hSGdQTEtGMm4yMjFRZFU3Vmc4ckdHeFhTRkdmbzcxcGRSQWR2clJxVllPRDU0NUpiR1ZiU24vcmMxVVY0QytTTzZxdmxvdE5tT2NjRG54dUpBYnEyOUVwczFZaEZiRmlxODF1N3pFTkoxNkRsekhZcmRJbjEzbFQ1Z1c1UERuNkRnWDI2MFRvYWpZWmVLeEJqbFI5azI1dy9FZEY5MitLTGFLNlQyVGg5VkF6aDVLQmJyRTFwZDI4Y1BkSktpM1lLYVgxcVhQeFlLbmR4d04wWGgwOFFIMGpUbjlQcHZGdjVncVRMRnhoelVKMEpBMGJPVnhLVkRZU3VLMzJiNU9pTmFsWHppVE1xdFNFZm1QMXV5amFkWlBHSlVxemhGcHpiUHBiR3pITklTN0dHeTRvQnhVeHo3cjY0bmRGcnpNVHZUWW0ySW9DVzhTc1B5bDBaK3MvcTZ4L3hxR2dTekZwN2lhWnk3NmtTL2FXOEtLVWRUT3hqcGZ5Zk9sVzhvZk53Wms5b1d2UHBnR2FkNnZ6NE9yMm1hc28ya2lFLy85bGdQaG1VRHYvYWFXREd1blBqc3NiM2NrZzA4WDhKYWxTblYyLzNIbndWKzFNRTdkUm0wU1RTclJRdDZySzQ4Q1R2bTBmTkc2ZmNaYitvNVVMTW5mdjJubWpLb0ZIelNENU9reEJxWnBrWGowSmhNV2ptMTJIUjk1cDU3bXBhWjBKUnYxdVY0S3h0WmNIc1kyOTFMK1FRUnF5eUV4cTdzOTRtMFc0S2tGenZRVHdSQzA3YmZrQURZUTk1Ulh2dVhXTjVLbzlWcHJwb1BQaVNSemdSRjJYYWtsY3ZrdmtzTlRmVXdKR1YyTXhvNlN2eVk2T3MxV0pEWkJ2NlEzV1Zhbm5EUTUzN3JwQVROZnRXek5IRUxtNW5wclNBM3VyYjk5QVVBNUtJcC96eGRTQlNmSlFZTE1YQWw2NEdlS3Rtb1FpQlZVR0E1RGsvYitsYTVCZkNFMTFwS3JqKzd1Z09HZ2JWcGRSdmhTTkpRajVlcGo3WHZ6Z1hRRU05QlFWVlBvSDRlYU5xNTM0YUlScnVJWndycjRCTmpmM0RvdE5PallSbUhYcnJrWncxUUxha3FOcUNjVi9XaGp1aFYrbi9wQnY0YWhsT3J2ZXJJdmZlaE40cXpWdk5wenRhbStiREY5NHcrWFZweWNUdk45QWlEY2FxNXZ0YmZMTzh3dmRIODdYa3BxTGZTVSs4dDAwa0dwMTF4encwNzNsWTdwRHFJcVpxaWNNUFFMMFRneHA4YjRxU2ozaUNTK1VpeHQ1Y2QycW1CNWlCbzdCRFE3cTZzMnR1MzA0aUxRMVpvSjE4bDZqT2l4alhiUG42a0ExUEMwWFVaaXZKYkpzRVM2QkZGVmh1N3EyaHhkMGxQTUhZRkIxUlFKWUdhbklpTXJHc2VCTkgxemswdEZVVXJlTXJnZ3owSTkrVVhyWWZjSTN5U3ZXMVdhVG45Y2I5RWY2Mm5tenYvcHpKeTgxbXY5MzhsQ0ZMTmsxVnpGTUhXRnVEeCtiZ0dxTVRsYXVpbnVxTjUyUDZXRjliZlgyK2pwbzVXYjk4NEN2OGJieFJ0VTBSbHR2RS8wRFFMbU5Mc05XL3diQzNjZkNuYVRoeGx2SlhTZURYa3NtSXpyOGdiNTdCQzVNTjB1TklGVGI1RDJyUlppVDFlcnlOb2lUaHRYcUlVWU9WcG50TUhmejdRYXZrdXVyNnhDejhEdGlBY1ppSUp6bW5aS3VMb2I5RzhCcThHN2tiZHhJdTJwQWZjVFJXK1RnS1VDZ3hVZzZvNUdqUy8rTndTRDY0UDYzODV1NHV2bHdCa3dSWU9hOTFLQmVvNStLaC85Uit0bnJmem50dWtSMER3UHdqZjEvZUFjV0IxTUMxVmlQMmo1ME02KytudHpJQ1Y4NnE1Q1RVSzlVbXA5d1JTOGJYTGpiSGRZTGs1MHp6SDNxRFYwOVNJQTdNc3o5RmlrTXNwM2VkNk5RVmcxVzhZOWRCcktvMWNGL2hpWk14d3l2Q2hscFVzVWc3b1BTVm91djZldGMwMXJTaGF4N2lBZ1VHNUxUaEs5L09qMCthYWJ6RUV6M1R2RkZPOGpvT2c3RERBcDdYTWVxWjVtR3JwWjkwejFkLytZL0I5V0lnU0JmMFVWZnNaWloyZVBvOVhjTXJMdHJldnZLTjZ6bElIZkQzcGV0NWdIa1NOU1hNdmRWa1hBb1JqdHhNa2JlUkZoZE9xRnpTV01IVURPMFZ0enJTVFVNRXlKbVdwNHF2NEg4cy9wcEdvNmNWeWVtc1JwMFU3Uys0Y2I5S3NSVUp4Mng1TktKWCsyL2JqYWtweFNBbVV1dTFTUE9EcmUvMXROaGRDcTBLeTU4ZURqUmpuTDBmclR4cHhFQ1I5VDgrNllEME0zT2JaU3NybjdyNmJ6ekhOcXoyNnpOcEVESmRCR3QrWU8zaTBHSTJ1dExqYmdGcUsxczhlRHRBZk41RFROaWNBVHFxa0dhdmFtOFl0R1F0RWlYeUxEdTBWdnUyZEFIdGFLUHdhSE9tczE3ZzJQSDJpNTJ1R2JndzNjRkppWVlodmkzNmsvVm45Q3hUNVlmMlY4MnFneFR1SXFUVE83VzgrWVRPVWdSeXJRTWVZcXFlQ1p3VG9HOGExZlFhMDJ5L1diYWtGZnRUdWFyZEl2NXBwQ0tJOVdjNm5ZNVB0Uzc1a2FmM2k1SmExN3dxNzYxdFF3emNIdU11dUdCVkVyaEpLRW80L0NQVXBxR0dvV1VVK3VQMzF4alg0N0NCUzlRUGRjWHFQUVJtSGRkWndCZWcrZHpJMWVTVXp2OHpUTFhVeHJWUVRWMHRIUVgxRXNuSGducjJUS2p4cFR2NWdJLzRsTjkxdWV4bUQ2cnZ1clQwTXA0Z0h5UHVMQUtBWnI2YUtWQnJqZVlLQzZYeTlESGp5V283ZVBXdldzSmU4cnZhNTRZNEpWeU9TZlNETGd2eTAydTdheE9uVks3NFhSUjBQWXlzVTJxZDI4dkIvcXlHWjRhM2I2bDhOelhuY2JVNk04RG1SWGdTTGJjV0tVMnJyMkx1WFlzcWdQKzVPalFIY3NVNUV2ckI5U2syM2tGdmRQWTNPZHdraUhUQ211MjA4VEI3aXk3UGJ2ZmFIL3V0eitycE5NRlZJYXdaS3E2cGRBWFh3bHFZUUxldWZod2R2YjY3RWVkcGZIaXJSSXNDVGJlVjdjQWQ1alArcmYwYXAvQzZ6ZS92VUVWNEhualduQU51VzRqM3JvbmJPREtxSTRTcW94R0pXRUhFanR1Ryt5RjNQd3U0Szc5N1NqZ1dMQnp1V091dWx6eUpVUnBmUitpdThUQ3R0TmMreGZ0N1RVL1M2aHVWR3NIcWQ5MS9PMFBISnFQR3ZKMCtsaEZpeStYWVJ6bTY5bzIxVGZDYkQ4bkx1d0w4R3BBbjdwVGRiOEUzZXNabXhLVnN1UzV2dFJhdjFNeHNqOG05ajJzZWtvL01YNzBjaUd4SGE4NkZ2cHkyTHl6WnFGTGV2cGJGZlkybkNWb2VZd3AvWWdIMCtkZENIWi81TkpWWk5mdENQL1VOS3hHc2t2SVJHNTluK3lsTUZWZ2lkOGF3Z3NJdXFwaHRZdDNkYnAxZk9sTGwwRXNBZC9EUGZZK1AzM3V0ek9yU3BFMEJHUFBvU09SOXh3NXZlNDNQdTltZlFWMDJ2eFlXK3RLbjE1YjM5U2pyNHpxWXlDY1hSZXJQNjdyZEh5ZGp1dENOdGNZanBudHhzcXhzdlZHWSt0ZUJxMWsxZmRiT3o3bVZ2c0MzZjhDU3dmb1lQOVZBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vYXV0aG9yaXR5X2pvdXJuYWwucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiOTQ0MTY1MGM1OGUxNTZhNDg1ODEwMjkwZWM4NjAyOGIxYTIxNjU1OTYwZTgxOTZjYzYwZDcxMGY1MWI1MTc4OCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMTUwMiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E2VWFhMVBqeVBFN3YySnE4MEh5bld4a0F3YWJWWkk5OEY1SVdLQU11M2VKNDNLTnBSSFdJVXM2alFSNENmODkzZlBReXcrNGhLSkFtdW51NmU3cDU0dytmUGh3bXljc2ZRdzQ4MGpLWEJZa0dabkg4Y01EWTBrUTNWc2tpak5DSTBMemJNR2lMSEJwQnBBMFNkTDRrWVlFL3dVZVN6c2ZQbnpZQzVaSm5HYkVBNUFzV0RMOTdydFJGdXFYQmVXTE1KanIxOTk0SE9ubm1PdW5sTzM1YWJ3a0NjMFFtS2poRzNqVklEeWptWDdPODhEYjIvdDgvZlhxZkRRbURua3hIb0xJTTRiRUFORmdBY01pQnMvbk9BQ1FUaExTekkvVFpUdU40OHlLY3lkaGNSSXl5M09kaUdXQWV1L0ZTM3dMWTVlR3h1dmVsOUdYNjluRk9WQTJnc2ozMmoyNzErL2EzVzc3T3pEWFR0bVNlUUhOZ2pocXAxMWo3Mlo4ZlhOOSsra1N3Uyt1UHArM2Y3bHAyN1k5YU4vWlIvdUljWEprRDdvUzlHK2Zia2UzQUdnYVhocUVZWHRPM1ljOFFYN2x1eHNuSzN5TGZUOE1JdForWkduZ2l4RTNaRFRLazdhYU1hdzlVdndZYnA3RkFGb2hwMGMwd1pRQlBtZjRXTkpNNHpCRWxPcXpYcksxdDdmbk1SKzI1dmM4U0prSm01OHpDMTRwS0xnMUZLc0h2ckFXTVRVcytFa3BHQmY1aG9Pak5JMVRVK0VvZ254QlRkeG5SY01MN2huUFFDWEtVRG93M3p2cW15MHgreFJrQzJFR0VxVVRKeXd5alhSdXRBamxZQk5BZWxtdURKdE01ckNKRHlTSVNKQ3gxQXpwY3U3Um9ZTHN3Qi9QN05xOXd4OSs2TFVzTWplTTFyQ2lSODFOSjAvUXBrMUJTektTc2l4UEl6Mi9ZTS95eWRSU0pXbndpQ2pJcGdWZzRGcFpuSzZjenpUa1RLc3I4bU1RdENKT2lGWnQ2aFdrb2swYzY5ek9MbTdQTDhZbTRuUjRObHZHSG11aHdndlNoQUZsVWdDUFJ6L1hnVnMxd1dqa0VUME5Qa0VjQjl5dmN3OVNCWjdaRXRPYTFKZnI4MUZqWFlBMjdmall0amR3WU1kOTIxNWZ6Q3pCWUZjMHVRaHM5d0hKZFVIOWhsSWFpWjhpaURGdXpyUFlXMmxGZUlVSllpaUsweUJibVNwZ1dTVE9NemRlZ2owdTJUS2VnY2xZaE1kNTZySlp5aUMyZ1d0YUpBR0xZaGpQbnB5ck9OS2JBSEZyREdHQUxHRTE0cWNNakc1RnBNMlRDSno2a1duaWhBSkE4QXljWFk4dmZyNjR3bkVPc1k5a2k0Q1RCUXNoMkhUMkJOR3hDcVIrRURLKzc0ZjBuaE9hTXVFZFBMaEg2ZTVUR21XOFErNFEyYzhqRitNSGNSZk1mZUJBa1JIMlROMU1VT1ByRVJyY1Z3U2NVd0FMZUFZaEMvd2xqUmlIMWVJOGdvQmNhZ21BbHpTSUJGVkJEK2ptR0xwWnVndzQ2Z1lDUHVEUWROVWhGeG1KMktOQzEvRWVtQ2NRQ1VNY0JrbnpKWTA2V25uaVArZ1VEQm4vd3Q3cThOOHBIbURDTEY3d3ozZlFmd2UwV3JkMHNVSG9xaklzZ2tGSWRjdnhpaGxVa1pSRzBIUk5NS0E0aVRrTlp3R0FvVmtWc1JoTnNBWXFERVdEcVFDL1pyVHJHS0FhMUpoRTYyNEJraUZMd3VpQjNiUWJ4aXBSRzRPN0tjQ21vdk1VeU1hbkd4RCsyK2pjZUFOUG00bHdiWTE3L3VYaTZ1TDJialIrQXp1aktmeFhXQkJOdytYd0laOHpzRVN3bW4ySS9HRkFJNWZaM1gzMCtCUVNaZHRqcnBSeE4yWGhnbWg5QURwYk1tRFMwOHVBdTdhRlpiU0I4ZnNnYWtzL2JXTTBGK2xyTitVMGo5QUdaN1dLWmliOEVWWUFieFF4ZWpjTkZSSm12K2NzWFNtKzlzUEFaKzRLRXZNK2JqcmZOOGlQMnJMZ3lkaFhTUHd2eW9pY2JpMXJROTRXUGc4dURha3FBbjlUZ1NnQUg5Z1lBMm9PVVlBNkd6d1FxNm1BeDdnRmtHQVVoWW1oY1dZME02YVFEYUV5Y3BscC9Bc0xnQjl0ZTJqYlJxdnViaHFqazMwWDZRdlVoVUVOQTZyUWtrMCtRbTdBU05BdU9HcDFzamdEcCtUTWpTT1BRM29CbUc3UGJnZ3ZnaS9CM2RXQlYyOW9JU3FaTXhBQllpT1FYc200b0tUM0FCVHJvSGRJYjJENTF1N2E3Vzd2cm5jd1BCckFyeGEySml0SzhiR2dEQ3FSVlMrd3daNFpGRlFZT1orZzBBUXc5cHhVdGdLU29veFowaXRrcFZVcGlIUm0xNlRic05LNmt2NE1TanF4YlZHc2NkaDhrV2hTaU9mTElNb3hLR041VTNVVGJhWlk2SzBhc2lqYjJ4NzdCSElOQ3VNT2V3SlRlSGx0cVNnRkRMSmRQcUx3SnhwM0t2R0NLS01QYklZRkJTdGpoU2Rxem1LckVVR2JrNWpkZC9NMFplaVVTaEtFbUdHdHNyN09wSkJwMnNnT0JaTFRpQUp5cGxERk9pc2VCZ2RRdDd1ZzBYMnh0OVIxV1pJSk41czhpeTE0eHBSVjA1d1hjRWhEQWU0SkJ4a24wM281cEV6a1dTazFuNnMwWEZNUVdJRWZZTUEwMW5CUjA4OXJLMVUzQ2d4Z3J1aElmcmNRbWRRSVRMZm11YnBTUTZpNXRScmtQSFlvNEhzRno2UW9RZ1FZcG9CbXVLcm9VVDlPN0dtRG9kcXlHcXpJZDNFcTJkT05INHBVQjZvWmVtRUxhMmJib0t4NjJ3cGlOVjlXWjkrZ3RKRkFSY0QzMEtEWkppWVVDTVp0dEZ5Wk43VFNLeXRBck9BUTg5ekZXdFhVOGZNd0ZGTm1ha3hvMjdmYmcvYjA1YUQvQ29aVTdFaE4zR21yR3U0M0pNZ2FUZVNpdlozd0g2WW50MitOWXJHck5XS04xS0k4dTZvWTZkNlFubEpabWk5cEtBdVVobjJDaXQrUlV5b0tlMjhtclN5d0xabFdlWUNVcWZPcHBiMWErQlZ5STlCRUVWK3BqMFdEK3ZMQVZrTnRQQk40bVlxWUJROFl0ZXJtaktjT2RlTXNWcEttcGc4TFZNWFFlbFVObWNqY00rN1NxT3pJUUFWeEN2OGhKbVFwV09mV3hxdFMyU0NGNnVIVHFXNVZjQ0lDeXdaZVl4OGIweFZIQWFHckFUZXBOQ0hPLzl1QzFMd3NXTko3Q01lT1k0REs3dGx2Y2NlTjh6QmV6anM4ZGdNYTdxdlg5ZHIycjdJREdQcEhSeWNuL3VHZ1ArLzZ2ZjZ4WngrN25qdndqM3IyQ2V2N1BiOTMyUFdQRCtmSEJ3TzNkekRvSGM3dGcyTzdCMVM2Qi9RSWh0NnEzVk93WUZEUmJLMTlBSjRIODhQNXZIZmtIUUFqZ3hQS2pnNFAyREU3b1NmMHdEMDRHdlE4NE9ub3hIZmZXRU9wWHBDa3YrZFF5Ymo3R2ZUcEt5MWp2emZ2c3Y0Uk96bnBEK2J1NGZ6UTdWTjY2TlBldk5jOUdod0JpSHZzOXZ5KzNUMmhBMjlBdlg3WHBmN0pjZmZrMk8wTytvTTMxbytnZThyQlNCbFgrUWljNUM3TjJUb2tCb3NaVk0wY3EwTnNhSkQxRW1IM010Qkdaek5YZEVDT1kxczZvZ0pKRWl5WGVVYm5JU3lwOUMwTnRaSFFwS0k4NTkzRk45UUxTY2l5VGRWM0kyUkErME9CR25VS1hHOCswNFBHOUZRZVQ3Mjl0RWFaR0Y4bHhxZnRDNTlHMEliTUpPVS9RUGdLc0NUeDNTSVZVVEFNelkzeEQ2TlVKbUtVVXF5bHBMUXFqRzA0MUZKUUh4MkY5aEZqd3NjS2pqeU5nc0cyZ2xpcnZEODYzY05EMjE0anJhV1VGdk5OVjBpTzA5dVVyMVNpbXI3MER5RlAxVXVBdVQ0aXNBeFFTQzF4Q1lmREdQYVloK0IzZEE0dE5CU2h1TzRjVzRwNnA2SFZDRzRmY1pFUFRCVjR2Y0RONURuZTJweGtZc3g0SG1ZYzZvY3c0QXBVemsrS3VhbGw2REFyZlVFWnZwamRmaUpUTG5Mckx0aVNibEJWQ2ZKSk9kWGRLcEhCRmpNR0xwbk9aQUMyaklZYkZnQ1NIUzdXYUhLak4yc20xM0txUzM3UnJtTkJ4WHdxcXRaN3A0RWdJUytRZ3pNQklJQnJnbTdIdURoSFNYVHFtOGhNTXBNTGlVcXFaazgxL1BQQTl5L09lUjNmZzBIQTQ2b2lyaHFsSktwNkdzaW5QdCt4dEFLWXJtRzZwWWh5NEpMT1diaVJsTW8xb1FTWWJ2V1NtbFRYdDNWU3NiQXRzWDJDcW1LR2hIU0ZCUm1ZdjF5R3lHVUlLZ0NUa0ZqTkRTbm5qRHNUVTNWQlp6Z0FocXhlcFNXMXl1WnN6YXpyalFXSFNlYVppaXp3T1RHTkVIcStkdkp3RC8yYmtheXlSUnpoRzZ4aEF1OTZnb1lKWHIyMHBqcGZYTjhLRmR3SUJHbWRvaHRIQ1J2MkdVU1BVSURpbGNCRWNvUGNTcy9heUhKNWZKQlE5d0VJY2tkQ1M1bHYxS0RST29VSXdWeE1LMUNlUkpsemNJTE5wb1NkS0ZWTndjMjBHUExVdnI5Mk9sRUpHM3JGU3FUQUhsQVBnOGJxYXlxUFZmT2xxRnVWb2VVdk1Rb3A2L2N4MjVuYkhQRFVwTlRSRlYzQ1psazhTM2ZERmVGS2dLNTF6c1gxeVJiMGk2S3pxUGpUemRmeHBTSUlCcVhGMUVjTWRNN0xnNDdpaUVDcnJRTkZPb3M4YzlMWVJFdS9DNE9mV29yc1JBcGFlZGNDVllZcVRFTFRMYmliVGh1VzJVSEhNRnVuMWI3L0pjdWhhREVUNlYySnVGalQ4SzlnQ0llSDZtcEpXM2MxZnVqQlJ0VFlwTnpHN1I5ZUUzZThmSmx3czZCaUlYc3o2R1M0Zy9XZHhWbENVd296M0RIQk9TMWpDRUdnd3lLczZreDRxbHpTYmVScUJ1NGFSNEdMcFlETXp1RFhaZFlwclZnR0kwN2tGWFUrQjY5WVFJSUVSMVArMzljUklDbThzbDcwUkNzem1kZzFMMFM4Wk5MRE1id2oxZ01IT05EdEhIUjZlR0c4UWVsZ1R2S1dCTEVLQnhJblN0RzlXdmZkb1dWak9ZRlEyOHFKTWdCOXE1UXJBVWhzVGFZUUxERmdXQm1ZcHlrNnYxWkxoWVpLSFlHaTBMQjJFbElld0daazF4cEFMV0pQeEE4aUQyL0FVdWJuRU1DSk9uR1ZTUzZNZVo2eVJsTXNld1dwQ0wzWnc2SzQzakFKbGxBV2JjTnFHVjRDMU9yNTRaWXlIemt1U2xGanVMbHd4c3hTdGpGS1BHNE1iV3k0UlpvaWY0ZjBHTkZRM1psRER6NmJCUkcwTURPVHM5QzN3QkR3Nk5RcVFremxYaHNCT25LK3ZIM0d0M0lEOU8xMUJiUjZpWTN1MW1yU3l4WkFyVXA3SDgrbDFEbDUremZKYndjZDJhaWppZ3Q2Y2Ywc2J2TzNrUkJ3aG9WdzE3T3o4ZWpUSGZtUGZMbTYvbng5ZVhuOWkzNGZuLzh5dHByMzBPSWpsSTZQUk14aVdVc05YMTZmL1dNMitoVUlWTjZ2ZnRxcGtBM01sZkNRY1F1MWRNUVZMZlFWOVZUV0lKa3Q2dEZmREtOcGdHcEU5QXRqQ3MxSlNSWFB5R2NaV0kzWjZJS0tza1pUd01NMmFRVlErVGxPWVJNV01kUzJFQmY4WlYrVlhGc092dkVIUzRYaFZqWmZ5bldHMVVYRVhRaVlMM2w1ZlYxSDV2U1I0V2NUMnBERk84NVU5SlV4L05DSFF1eDloNGxCU0NndHpQY3FwbFdRMldSRm8xL1BMcmRaMUMvajY2dkxmNjdaVkphdTZ0b1FuNmNBaHUrSjlYdzhxbnZhL0cySy9pa3lXN2xmbGdJRzc0MVFpMDV2dlFoUkg3QThRWVNBL3ZyZmtiRVZ4QTl6dmpEWHA1Rk52b3BjVThNRmtOL2pwakVCbE83aUs5cmJZclBsSng0YjNWbHAvZnhpUERxN3V4Ny9zL1JYMUc2ZDFKcHFheXdYQzlXUklGTGlyZWxHUkV3RWJCTWllOFlEVHZJVDJPaElQSUl0MVNuOGlZeEZFMHdZZnVvbTdqSkFkR2cvc3dXMjZoQ21jUnN3QThGckR2T3BnUGJ5VkJVT0dRamZxZnNvZmhOVnNmbU1RcVdsSXJmOFRFVWZ6TGJXczdPOFc4VGtDS3RVdkZ6NTJSUlBiVU54aFVab2hydVc2WThvVGdFTGsyQnhQU2dERWZNZ1dYRW9wemdlZFVPbU43OEhpU20vd3BoMGh5ZEFVYjBNajZldHpaaVR0Uy9HcHNTcGZGSldEWTNGaHg1VkFzTzNncGdXVDlRQ3RhWEZ6TFIrVVZsY3BKMWRmN201SE4yTkduZnR4ZDFBZ3BsYTFBK0tMWGtZVTF5bjYveGRqKzZWKzEwdDRXWUJpdnZmN1p1bEtXZ2MvTndHcjNGVFQ5ejJxMkpHN3FUUnlMdDFZa29USWhaTEhReUpNZjU2ZFhWeDliTlJYR0RURUliMW83V3pGSy9vU1RHQXh4ZmkremtUdjdyczRKOURDQnJ2SmlOTVhkVklmK2ljdmxNZU43WmU5M2FtRU5nL1Z2Y202QklzK1YzaUJuL2Fyc2lKMHFKSW0xVkZhZ3RHejI0VTI3dTNSbDdCT0pLWDNWSkFOSVBHb2k2SHJJWXJNc0Q2WlZiY3VPS2F1QUxsZjVWTUlVcytoSXZMeHlaQVFiM2lnT1U1aExxK2dESmJmdkEyUzhRQlRuRzJMNDRraks5WFo2UHgzYWVMSzJPM29tUm9iNVFNUmNndmlyM1czbjhCeklsUit1NHNBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vZXhlY3V0aW9uLXBsYW4uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmZDM4Mzg1ZTM2ODdlYzZmOTg4NmQ1MDI1YjM5NDQ2M2MyNTJiODE5OGIwNDI2YzU2Zjk1NzQwMTM5ZWI3ZTliIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDQ3NzAsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZZMjQ3Y3hoRjk5MWNRK3h5dStuNnhYMkxFU1p3WEkwQU1CRWdRRExxcnEzZnA1WkFUa3FQVnh2Qy81L1RjVnRKS1QwRUUzWmJUck9xcU9uWHExUHo2VGRmZFBRMVR1ZnUydXh1bU9pOTdMbjFoR3RaaG51N1g0NEdYOThPS1ozdW14elFObE1aKzRaSFR5djFoVE5QZDc1cUY5N3kwOHpBaVR6OGZsdmt3cjJuY0RTZkRmL25wVHovMGYvOXJMNFNJL2MvQ3Z2dlBPT1JnUlpUOUlzOFd0bVc0SGNjOVN0K085RW9vSjRWOFBiWnVhZU4yNXJEd0lTMjQxM0ZLQjdoN3orVjhnajh3SGJkNTJkVmg1QlZIZjhWVFBFKzBIUk9lM3g5ZTJ2dWNiU2pNTVVSdEtsZFJTNVNPZkJDZU9jbmloQ2hlTW10TEpjVWNhODVrclROc2xIWEN1UE4xbXRuajlqZ3Z3L2F5KzJVK0xsTWFML2FqTWRKWlFUYXd0QzZaWUlNVUtncW00SVFLV1NhRnoyMTBnb09NanNnMWg2SmFtYTMwSVZ6dFQya2Izdk1PRVQ0c2FYOHhYcW1HU3RwR0hhWElpbU1zeGNvaWJVeGFKTnczV0UxRzFDcHdBZWVTVTZJb3dTa1ZDcWtxY1RXK01QRncySFpycXJ5OVhJeGJza1o3WFZVaGs0VXpRZ1NsTE1uZ3VHWlpiS3JJRzJrSGQ5cUtYSkpJVWhVdTBTT3dJdk1kYlA5MktnVUJKSitYQWJEWUFLQlVYdnB6YVAxODNHamU4OXJqNzMyYXl1VWF4Q0VrU3BaVmNRU3YyVnV0UXd5WllsYkc1UmF0Q1lwTUlxSXNFSUVoWTFHeUVLcjFOVjFqWENsTi9TWFErMS9XRTBqdkVuNGhkVTdtTExSalYxUXJDY2xjak5iYStsQUl4aW1ybkcyaWtKTnkwYWdvbFdTdmxYdzFqcG9UbjI0K2JEMktOTmVianl5Q2xDV3Bvbk5CcFlMWEd2WHdnVzBGQ0ZqRzVKQXppd2lVOXptSVhJRkc3Ymw0UlM3cGZQV0IrNWVoQVBab3k4TTR2K3g1ZWczRUJGK0ROZ1JVRmNya2t6Q2tkRlM1c1BDS0tkWGdDMG5wc3NrcEFlSGFjbzVrWTB6RlVyUlhKK2QyUWtIbXFhOXBHSThMOTQvRGluNTV1ZmtDTkNOdVdGUUt3aW5BeXpwZ0pFY3JvN1dWZ25ZQ0tKSElwZ2dwbElyUFVyVGFTWEtBWjNTM2xsbTJvYUlkVzlyZ2RJRDUxOEpJc2lXeU1yR1FFT2hDWTJKejZrUk4xWEVBMnBSdzJicEF2aUVRellnRU9tTnJ3aFhZM0pBOWoyTk85SVNhY0IySGg4ZXRyOGR4dlBrUk1nU1B0dEZXc1Nud1ppbXBXQnpLNHIxUlJhQ3AwTFZaWkkxVFZWYUR3aG1abFZWUmdUdmUrUGxDYldwSU1RbWZNclUzRkpYcU1oVmdxY1RxSXpoV2VDMk5KUzBMd2pRcHNxZ3NwZkVnR1NMRFZ4OTE0Zld4ditENE1DOElaZml3b1VJM1R4cVo4c0xvWkNpWnhsRkNtZXkwQXgrd0ZERnFrdWFFRGZiZ2cyQ1Z0VVN0WTRxdUdmLy9sR3krbGpNd2lVYk9EQ3FiMklCVmFrelo0SzZxVnZTa2pVb3FVRjQrUVN5VUFGYXpERVJYSVlsVmpiZW0rZmM0Ykx4ckpEQlA0NVYyb3NBMW5hazR6cnExZUFUeGdwbEx0U25WRS9HaTl6VWFNQ2xmU3dqQitFaXNWVXhLWUpUY2tIek00N0ErWWpKZ0tBMFZBNnVCK2haRUtRYnNWWUZVb1FzbEg1VVMwYVNRR1plTzJmdUV3dGNDbnF0c3RXTHRjd2xhbDVUYUtIb3R5c3BwaEk5THhsQjluZ3BQTlBENmlqR2p0RUxXUVRCRldVTTEycEk1Q3hJWUNLUXNxQ2U1Rkl4QkN5V3RGY1dvU2xYUmFCY2wvbnptYXJ3NCtuL0I3UFBpdjZJcnUrd1FSellZTWd5YnFJRzNjQld5TXlsWkFBR0pxZFdwNk1GZnp1ZkU3RkZ4VndGTHA3Nkk0eE1mOXh2dklTSzJWeVNEdVRJQ0NsR1NoeXV3aUFsR2l5aEF2YkdFQXBoN0RWN3hSa3FGWWVkQm9nRmtSMEFBMktGOHZmOWZLWk0wY3VFd0UyMFFBZE5YSzR4ZlFCcVQxNkVwcXJjZVJlSnMyQkZJUVBwY05TNGhBUTFtYytQK1lZSVlHVnRsVGxMbFUvS0hJYWRxY05XS0JGSUVQZVVJUWFCSllWNEZhVEdNaTR2Y3pwVFFvRkNJa1ZhTGJNSzd1NDMvNVRodHc1N2ZERENIdm5OZ1FJSnVNYktLSkN5YVAzc2dBYk00QlIwckZXQUt4ck9TQUorMFZGMkI1Y0kyaEJ1Mm1xWjc0TjNETVMzWHdaczFzOG9CeUVGVkZUaWpjaWxDdXFLakVObXhscFVvb2t1VHFGb3FXMEE3SHF5QUVRY09GZkxWTk5QVDdwYWxpL1drVGNJZzRRZ1RLa3VYQkZvZ1NLK3pKVWNtdGk3QStHYWhKRldER29kV0FlMjlibElrbGJkVDhaS2kxdzZINUhMUUpZU1JiUU5JVG1FSUtoTmdNbEdKWUVZQVdsZ0tDaVBBWXdBa1g2Q2JNS200d2N4OEFhNDBUOXVDaWZVNjI2WEdERXdlS1VJbHJHR05FRkJBcDRDaGpGa2xFSUtxcFdTVXA0Q3V5R3JCaW5UQmNNTUVmZFZJOC9QRXkrNnNJejdYU3VkbWZ6Y09FQXd2TlBLN1ZQYkRlaExtdC9CZkVZR0JTSzFTSUFLVGdBN2tqN0tMaENuZ25aU2tBSVVDcll0K2NXQlVNQjMwb1FHL1F0bGdxbDNEZnVOMGJSc0E4UmRjYWhBamFBdEdDM2d1NUtha0FJWUNGQmFJUjgyQW01TzIra2FFb1JnTG5WTkpaZVBBRHNxSHI3cDhPa0o1N0lmL25LbjdKZTNINWc1aURhSlFabkxlb2grTnRrWUNLdERUVUtKR0syamQwaVMyeFdRWEFSd09aZ0x4c29ZMjhCamdYM1czOEFPa3p0SzQrMjJRTWFOVFM3WVYvQXBoWHJUTUFyZ1U2SWhrWk5BQ2tzb3E3QWRRTFZEdTJjdUFhWmc1ZURTY2lmeXhITDdZM2czNzlIRGFZckJ2UGZBdjh6M054M0hlNS90MUpxeEI3eTQvdm51emtQMStmVXhZUUw2dEZrMWNUWFJaVnZBQWFKR2dXS3RWSURSWFZWWGdCRyt5MS9Ha0JxRmp0Ry9FUUZJbmkwZDNseTF0d0o3MFAxL0dnOVkwbWxOQktFTmdrR2s2V2lZbm5kTDRGK0lBK3JOWWhVdUZKcTVzTmpaNUtEQWlFWUpPbDgzdTNBSUx2eDh1cStUZEhqRG9NL2Y4b2FuRk9tQzc2ay85MHYvNHgrOS82SitIN2JHL0xuOTl4ZnY5bjZIQzh6am45UkxnSXphUTFsRC92RlIrR2NheGIzUGhlTGloNGZTTVp0RFQ1Y2xjTVRFbVB1dUgyMU1BSlUzSFEzLzU5UFlZdXlZT2ZtYjArdlJqczVldCtmcmpwOWF2OCtyTi9Mb2N3OU4vblVLNjdKdm4xamhWcmRGVXh4ODJidHZuK05LMUU5QUhUZmh3NlRDVnRnNTZFUm5DYXcvRDFKM25mTmZrVi9QUVpVWmR1ZU5FajkwcFlkOTFwNFIzWUwwNnRJcDNiVWEzNHZjbmEyVllzY1VON1FJZElOM1JjVm5nc0R2QUdtL2QzMzc4L3QyNW1OMTVML3F1dTB5dkxzL3oweFB6WVpnZXVtSHRKaGhMVTd2d1BNMzcrYmgyNi9Bd3dSOVczV243ZUozblhUNU5qL1o5UUM5Rkw5WFBTbjlySTM3LzQzeHVTYzg3YkpLSDQ3WnJ1SGprc1gyVnNDMUhQbjE4V2FQUmZXa0h6RC9QeTlNNHA3SkRuQWhqZC9IU1hxbHBYTS92WUk2V1Z1cmR5dGhMa2RDR3BMdnZ4L0djcHJVYkpocVBwUVh6c2RRRW5WQXIva3ZYOEl2MHRxUmZrM3lMNXI3N2FUNVZiV3BvNytibGxJWTlMRkRIZTBZblR2UnlUc1IzZVB0bFJxS3ZGK3JBam9kVDZ1ZThKVmhQM1JrRjZBR28wS1c3ZlgvVC9RRXIxc2diZDhBRTB0OCtocDBHK2RQN0RXYklHb3EvQURrOHpjZUh4MjZiT3dCcGZ1NXVnYlNNd2syejhUeE1aWDYrLzZSbjk3eWZkNTkvQlhUSmVPdG5mdjd5a1p0VTMxMVh3dDA1a1h5dDNUZS9mZk5mSGJsLzdLSVNBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vbmF0aXZlX3Byb2dyYW0ucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiZmNmOGZjMzU5MzkxMGIyZTk5ZGQ1MWQxNTlhMzBhYTliODUzYzQwZmYwMGM1NjZhNjIwZDIwZWFhZGM4YWYyMCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODg5OSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E5VThhM1BiU0hMZjcxY2d1ZzhpWkpBRXFZY2x5cmlLMXRKNlZmSGFLa20rMUoyb1FvSEFrTVFLQkxBWVVETHQ2TCtudStlQkFRaFNXbWR6bGRUZDJ1QThlbnA2K2owOTN0blorVG4reWlMcjFqMjBDcmJJU21ieHNJano4dFRpMmJJSW1aVVhMQStLb0l5ejFFclpJeXVzS09aNVVJWnp4cTI0N08zczdQemw2dnJ6aCt1elh5M1AyaDJuOFNMUGl0SUtzM3psUkVISnluakJuSG5BNTBrOGNYN2pXZXBrM0NtWXc1ZVR2TWhDeHJuRFZ4em1UUzM0dXpkTmdobnZaVGxNaTcreFVSSEVuRm5YeXhUQlhCUkZWblRHdTZvM3N1SzBaQVdnQ0g4Qy90TWxaOUY0MXg2bmViQktzaUR5Y0wwZWZ2R083MStkL2VQajU3TnozNGNCN0NzTG9lbkRsN05yMFpBRGlzeVQ4KzdHdS9SN3ZIdFBpTkVQSzgxS1dOQUNCS0lpVHBMdUpBZ2Zsdmw0MXhudmhzc3lBOXFZVFdJTWtxRTJRamNVTEdHMEJIeERSenlWelZtU0lKVGFqNjRhWUV1Qy9EMUlscG9jVXpyQ0ZNN29rVWxVQy9iN01pNGtNU0lXUkVtY01rOGRSMDkvVEl0c0VmTnNtaFdMb0FSUVEzZDQxQjI0M2NId2RyZy9PanlCLzc5eDNaSHJTa0JUQmJuemlCakFPUVpBWVhzMFRpMGdFeEtJMnRleGxBUEhxWnEvamt1YVBWV3QrTWUzTEdXOVpSbmE3OVFPZ0NSNGNFdml4cWM0amJJbmkzM045VTVaK3VoOTM5dkxlQSsrNGdKNGJiejdIMTkrdW5qLytkUFBseC9HdTZQeGJwK1ZZYjhJVXVEZm92K3d6L0cvM2lwWUpPUGRaN25EWmRvSml0bWpNOG1pbGZjSmtIQVFtMnhaZWljdWJSWDRiVm1rVnNYQlBUMG5Ubk1ZaHpPZGtuMHR2ZHNDcUJRR09VeGdQb0RBWG1wVElPWGZEcUlPLzJrcUIxSG5BVGJvcEFHSUQvNEJRaGN5dVR4ZkpxV0hhd0tqUGl3bkxDd1Q0cGNaSytIdmF0NTR0NXRDZzU2T0RSbU5STUVBN3JZSm5EZ1JBYlluTmhkbUVmTTgxMUhjdFdCbEFJY1RFR1kxVVZQVU1FUk5RdUpsQkR1RElad0ZDWXNNNFJJTnNQNnBGYkdjd1piVE1HYmNHR0Uya3hRbXdOd2VrWVU2azJ5MVlHbEplNGxUNUY4V2RTTVd4anpHamJXM0FpcmhRZ0VKczNRYXp4WkIzajY2V3dpZDB6MEtoOFBCOGR2anlEMGNiQUdjUDRZS01ueHVnSWtVM0liY25JVVB2cm4xVHJod0FKeGp0c0hBSU0vVll2Q1p4Q0hwNXkzRUFON01RbkZlNnJoaEl0QlpuU3ZRR0g0dFl6d1V6eHZ2SHB5Y0hCOGRUNGRkRmt6QzdrRTBQZWdHYkgvUW5SeWZoT3p3T0hwNzZFWUUrYXhhMy9weWVXNkY4eUNkc2JhbGVNNUNzWXd3TGVJYnpFdjI1ZnFqWEhaZWxqa2Y5ZnV3aHhuN0xldUYyVExKRnBNZXo4STRTUHJ5WjM5dGs3MVpETHdBekJpa2tiVnRPYkJjYzdtVzRLSitFazladUFvVHRuRit4SGdacDVMRU1QWDdlRmRMRk9tVWRwcHpWb0RhcGdGcVd5aXJSUXJXaXZkQXlnTVNFbVNXNTdhVmV5RE5jTUI4bFlaWEdkQVk3Y1AzWjFzMkIyQlBRR2NUcGEyWVc2aW5KQlFPQXpiU3dDYjhOZFVkUlJMNEtJRkxXSG5OSHVVZW5na2FLdlZXdkFnaUNLZmQ0SUxzS1FYVnlzSFFzUm8zZ0tJR1JRVjZBRTBnN0ovbCtORVJ1c0N1N0N5ZWpiSjNJeldwdHBtU0xmSUU5aTYzcHR0QnBNc0F6RVNCS3VQT3hhWjRFY3h3blBmKzdOUDU1Zm5aN1VWOW9jcmNrZzNEMFI2cW12L3Blb1plcFNaeUhINDZ1N2x3TkNLMlllQXRPWWhib0RGNUhJRWJCaHpXNWFBUkZvR1ZCM0VoZE8yZlJnN3hJVFZPdUN3S1VLWWQzTGlqbGpCTzVOL1dDS1gyaGpNVVA1UkJ1ZVExSGtVVnRicG14QnJJS0o0M2dMbkVWWXJHY3BKaXFtV09Ia0QwaCtaa0U1SzA2QU9EclVvcGhXbHlkRjNCell3eDkxSkc0MUM0ZHRlSTdZRG9MQ1RCTkZqRTdINmhaZVBlYW1OWGl5WGc5Z0RsVDQ0bWJuZ1VIUjhQMlBIaFlUU0lCb2ZIcnJzUFRlekVaZFA5RS9DemhteUlLbWNETjc1R2R6WUY5cDY0VExRNjI1Q3ZzWjUwOUEzZTAveUcyL2t4VER4UG9nRm5xaVZmeHhSeEt1MERPVExmdGJjOW9yL1JYaVdKVDd6Si9UemdjTmlqbjRPRWVvcmdTZnBSL2xOY3p1Y3NBZTB5SXBjSytBUTFNN3JCUGlCYlpPQ0wrblEwTVl2OHljb3ZzcXpFUlRSbDFDakJER3Jxc3B5RE5LQTZnMmt6OEJWTHRUN282YkpZU1c5WGVOci9zb0RBaUFGUUlQSU1QR0sreFFzRW9tWVJwNC91TnRlZ0t5WUJLWHFHZVlxelB0bzRiOE9jTlNkU2F3U0oxNW9iQ2UyVkUvbjdraFdydWhlSkcrTGVYVzdCZWxhT1pEVWNTZ1ZVZXBTb3lFRHBjU21HS0x3TlgwYXFoZ2hJaXNKK0M0NGNxSTBGSElSOWIyS2JzQlNCYzFRekZGd0VZV254T0owbGpOU05NR2FJbXhsU25jSnZENmVCVW0zc3ZVVS9TZDYyVWNBaGtFMEJPbWdLVW1oaTljMUtXMmsvR3IxMVpFTzllMytXb2RDckc3ZzI5cWRuMzFBSHVnVE8zYjNkaHJ1YWVkYzZDNWVXTUpIM0pNbGFPUENId1pKQmtnNFRxb3dmQmtUa3VUd25LUUI0RUc1R0hOVVJkUDM3ZVBmTm4wWDlIZ2M3V0FxZ3pzQytHNURtTm5reWlHQW01MzNoUDVqdWx2V2lqdHFna0ZxMDJMcU9za2QxcHQ4VVI0UUg0V1J3ZU9oMnB5d0t1Z2Z1eWR2dVNjUU91dEh4eVNBNE9udzdPVG9hRXVTc2lHZmdaQ2VXV042Nmd1MkJMUUk5WEs0YSsxS0UvQU5NanRPUXpxaE13UU5GRDFtTnMvL3JPekpaWEw0M3pnRVFtbWU4L01US3A2eDQwTCt2NUpIajkrWFZlMEVTRVNlK1Q4Qk9mU0syUmI5aUhoVHNTaVFIUGxXeHdyT3BMY0RHMWFXZmVPdUJyWUR0RlhLNmlkUWlmT0JaVmh0QmJnQ050UVN5Q2FaQXFvbkFkaWx6ZG5ESTAxS1Rqa1p4YiszTWxDdUYzZGRzeXNBZERKVWduNXJLVWdCQTJTYTVFVDhGMDJMYVFaNjY5Tjl1S2tNazhZT0R4QTNVamhQd2tiRnNJZDArbW1hQ0Z1cmdmbVBnWEJFVlpteGlSaE9nYUJNeFY3cnFaTXI5eEdiWW5JaEpOa0RTU2tQTkVoc25aWFZ1WkNib3lESThzQ1pTMjZpTlIxcVJUeEo0SHVkTjJVNmgzU3QyZG5aMHhyV1pZMFZ0OXIrYlpaVkoxT3VMcy9QUG56Nyt3MHlzM3B6OWZIRXJXb0JCNFp3ODN6OTdmM3Y1K1pQdm4wWVRJRlVmaWRIUGkvZ1IrTHlQemlsNzZ2SGZRZC9CVVo5T3N5U0NEVGFIZllNTkhoKzZKNE51TVVBN1VNdElPa1V0RWRtU2hEUnlFaG5IVTRBVDdTQXp1NjRyR1pxYVowYXpkZ3dsQzMrNVBPOS91RHh2cGxoQjF3b2NPN2tUUVh0WVpzWEtJNitSc09JZWdFN3dURHA1SlZJZGJPamQrSmMzNTVmWEhRNE9qcjhBbDhuR1RXZ29JcXJRSTY4dlBoZ2piUlVkVVJQc3g5eU5tdlByNS9NTFk0N25kZHpzcmV1MnJPSm1SNjZyWVhhcVh1QmxBcEFtY2ZvQWF5Q2Z5aDJyMUhPNDVHVVdyZXFVVVZScG5DUXdPeHBnY0tWa2Z6U0J3Uk9RZmNwVWh4bndJdS9FS2FyRzBrZjlrS1hKQ2tmWjFsK3RYNy9jM09MTlJNZ2dXZ0VCdG00QVI5WVBvZ1ZJVzVhenRFZWNMamp2dFM2Nk9DWmdlRHdwT2loWURiZU1iWUt2b0FPekpUMzJGYnhSRHYxdndCZCt3dmpCSHVHb044YlVxc3VBOGFnR1BFNzVPa25zMDJuQm1QZlltL3FUNERHSWt6MzhuQlp5c21JYS9QazNWeHd3Zkw3ekRnZkR2WUU3UE5qYkcxSXJRdm1iaDMxN25hR2xDVUZKcnhvVnhKa1A3RGVESXdVQUNETUI0a2ZWalFKUGc1elBRYUxDQUt3WW11UGFBVytEUHpKVk13cWxJbUFpS1NqRTNLNWtETFcvd1pNTFlDbHJ3cXhsR2tQTW9Jd1k3eTBlWUl5YzdSQXYyNmZRSE02QnYrdk5NRUd4bUd3bnZvUG1hUXdHRFdNY2liVldQaTlUVEROUHBiQmtibCtzQVdmZkJ6ZFFyV0NjWFJzUnhGUWtnaWExYUdyZFBqRzUxN2g3dUd2TE50TklZbldENjd2ZGFBSWYwWVMreFRwb2Jlbmp2djJxUWw5a3FFdUx3ZEExYnc1b29YckVSM3hvUkhCaWlJemZLQVdwbk8yUlFBOUNiU1dYV2NxQkxtQkRmVVVQR2VFLzY2MkFrd01PRWhPM2txanNaWlIvYWtVWk5RQXl4VW9RVEIyL0pET2VQQ3F6NVhRYWY1VzZRUWlxWTIvazE5cEp2UkZ6YmRTSlN0N3JQVXJpUmVpclR4VXN0UFdmWng5QlB0RWxQTFhpeFdKWkJwT0V0ZHlxUlBFTVFsWlBHdlVlT0pURHc2TU85bUNjUVVwT0xvbys2QVNER29ET1M0QzBvRzNnSmlkSmhybEZrRkV3M1owa1dFeWlZQ1RHOU1qbmtrSnZPeE9LWTBaaTFaNUl3M1ZvT2hHc3lMNngxSmM0eVVGejlsVjhFVlpxazAzVkhTWVo3RW1mcE1LNUJwR01XRTN6eXJOU2ROVDIwbjIzcHZFYVlrTUpMS1hCTUc0aHdQOEhhUXBzbVpZZEVwRm91Y2g1NTN0YjJrc2t0cW9VbnJDRHZqS1VNRUo5R25UUTQ2QmJ0Wm5kWXVQUXVYNlM1ckRKcWtTdmxDeWIyWTVxRFpxVmRxc3laM21BYVdSZjJ6T0Z2ZXdtOTNsa09GN1BOdVVZbTViYVRINFpPYkgyUkJob3dXenFiYU1kNW5FcXlvbVV1bzh1N2F3QVkrWUxmcTBUa3FhSURuOFJyR0IwbUN3amJFcGxyaHcrRjR1NFZNczhOKzJndnNBZ1oxMDQ2TXNpUWJaRFhnWmFZd2RZcTJXQ0JxZ1B6bmIva2FXUGZSalJ6MWZsUEV2M2U0Tmhud09YZGNIc1BrQjR6L1c5bDY5MGZEK25tNkVlaHVlbjJGdDVtUUoyTFRpcXVaQTR1dkkzVVYyckZuSWkzWFVIc2pZRFJtUkhCd2NVa3NFb2pFWXRnVXlWNW92aTZaVENhY0tpa2pHQldrM0dpTDlIb3NOdmwxTXhSc2lZYlRmVWo5NWpIUVNROWlSNkd3NG03Q0NjSEExT1RxTEJBWnU2UVFCQURxZkhoeWVIZytuQjRjUU53d2tNTzNiZDRPMDBZaWZESWF5NGYzaDBOSkhaaVdxUE1vVXRsbW5zTUY4V09XaTdOZU9NRVplb1cwQmxqNFlYZzFsUkt1RDdWMSt1cno3ZlhQaitLeXNHOXQxNndsVXN1cFp3clZBVzR0Zk5reUJrR0pvcVBDMGhMdFlVUEUwanVjTHhqczVNdnNvRjlIVit0YlljN0gwM2x2TXBGZVhMV2Y1alVNU0JFTEFCb2pXQllEbE9aejR5TXZkaFJ2YUVhNDlRandmUlk4ekI3Zk96QXNRdWtieXV6ZUxvMktIcjBISU9oai8wcFlLcjZ4ak01NE1GS0hUR0hzTVV1VjF4M2RBNHN4RHpOdGFuN0pvSnI3TlRsOUxlTDdlM1Y2cnZGeENKaElrbzA3SkU3Q2w2ZkRtOEF5cGs2dXdGeFl3N2Uzc1BUL2pSV3JNelowRUM0cURtTjNMaEtDVVEvVFpRbVN6akpQSkZYOGZBMkxaUHVVeFNldCtmbFowcTRMQlU2cTh2bHZ0R3ZOeW5MT2czZFpGUXlTVzRzeVNlNHI1NjFPOFBobTk3THZ4dk1EcDJqMTF3YUFsbTVRVzZKTHRBMWh4Y05pYWdtZVVrMU53VHVIbmUwSFYxSmxsM2tqUWZEMDcyYmZ1ZEIzK2I4WWVrRVhHcFFTQzkyVHRDNXg0QjQ5S1lHL0QxSmJQdi8vUGo1VSsrcjEySFdqZjR5L1JiYWxhWnRocjA5bnREeWl6b3V3QlIvU0tIQ1dOVHV3bW8yQjdobWVSbkNYR2tnOW9RajZHNVBwcFB5cUxUVlVaSEhrWkZQVEZkSGlCYWhTQi82RWRZK3lCWEpDeVh2Q0NUQWY5OTYvR3NSMXNRZC9JQ2RWeFczN3NGeEhKbThHWlJveWZpRmJWb3c1TGdpQ3BsZ2Z1NWM0bGV3aEdvR1lvTnBtV2JIU0dBZy90MUUwUWR3M3JIVEhmczM5ZVVITzBURWRwa2ZnejdneHN5cmMrYzVIclViblpFNXlhem93OU1HUnpDN1dBVGJtS1VnVm1EZ2U3VUVkeExMNXZNQ25LZDhoL3I0OGtYNDE2OTBURlp1OGJXOWhad1NtRUxvK0FKMWU0SWt5NDlScTltWEZVZkhpT3M0b0kzQUN3cEcvRUFYVWRJc0srMWsvcHdHdG9hUHlaTVpzdmFmR1BDdWQxYjNIcXRLbDNFOWZqLzlBOUYvd0xZRDhYK3ArdmhwN3JXQUIxMTgrbnM2dWFYejdlR25nSy9EczhrRGVGVERuU2lPQ3lsanlhYlZORkYzU2NIYVRLOGNqQU9XWUdLVk4rdGlLaXJ5dWpvQzVhNlV2aURzWnlDY3RjU1l0eWpjWHBOWkNmQzVUWlFNZ3dSZXVDRkFCQTdkUlFvZDB2bVJKVXF5c1hVQmxzWHJLSW5GT01tellRTnFPbVcvOGR4NWVhWTdzVXc4SlZSWkVzc0t1TSt6bDZzWmhiWm5yNklwdHBxbStrQ3hMTCthdDJVUlp4YjRCcGE3ejllV2hPcThCMVo2SFZidURyMXFDd1JrRDRpbGJ4TVNkQWRXZGxPV2VTZWNIQUYwa1lKa01FVjhscDJCelNGN3lPNWZOL3lQTkFNUHJpdGNlcjdzTmNkdks4VjVRSGlyb2IrN09FVkY3amhIUnhiM1p1QTVvSU9xcEttTmNET21BUFZaWW9hWmlJVnNqaUhzd2ltckZ5UnVOVm1xaXNYTmJPaDBNemFvM1ZOUjEwTmdEcFlXY2VsYmtEV2NhbDBYV051VTVjcG1ZUURib0FRTHQzNjBuWDdSMHVUcFd1cmprR1dFSm5RK0tYaW1MYXI3ZW9xc2h0dXE2cnBpcHRQaXVSRmk0ajVnQW1jd1dFamhGc0wzbXJGL0tBNndteUJXZUFxelZrRVR5cEpyTXFnbkpiY3A1cGJpK2RVSktkMXJ4eWtLa3VieWtLWFN6UVJtK0hsVHoxeWthWGZVaWxKd0VoSWtoTnZHMFZ4RUxvTm13c0s3UFhDcTdZRWtZcHNVaUFucVo5dFJWSTRpTGNWTloxV2VXQUpadjJVNEt0eU41Y3AzZGxnaUMrSlFiQk4wbGVnMWl1WmF0ZnNORk1XSldVcHMwUXhIUUdzaFIvWTROSGdSaWtTM21vSDZrQ2pDSTZGeXl2cWsyRnY2QjcyanVDdi9STjVTMDBCQ29KcEZNSEltV1IrYlYwaExOQ1FmWTE3NlRDRDhCNTFLb1NpSVZaanJISTgzRkZvUXFZMXd3MXJWaERnZDYxZ291cVJHN3VXNVR5NExTcm5FYkVJRmxZMHhqN1FHUEl2NVpZZkpBUDl5aFpac2JyQ3JTd0x3VWZuTVgrb05WeGRubGUvNllhZUtMQk1oWDlMbDZPNUhLQUlBVWRDRDZuUWoyeGhQOUU5WVpvSDhabUdJRWFyZEJqOGFFQmU0MGhBS0FML1pHSEpCRklMVTFJT3lqT0JDRjdVdFVabkNiZ1NXUHVJd2l5S3ZFZXEvT2hVNWlJZ3dFWXZBNndsWjBFUnpqc0ZIRnkrSEkvNW04NTRITDJ4RnpDRFZySjdNd2pUODg0QUhFSE05b1JlRzUrSkpRV1d4QVFBQzBSQzNUalNZalRvYnRRZDNOUDFPUDAwQzY4V3FLbkljT25SOWg3ZWhkZnFReFQrN3p3Rm5Bb3VRcERLVXNnV2RWdnZyNzZBOXhBeUZuRjk4ZG1vTlpHVjhhcWFJNitxajFVeC8rYlNhRDBheTh0WXJVdlZDeHJ2elhUWklPQjZ5NG9GdlViQTN6WVp0QmpmSjh5c3MyS1dXUnF3dmp6a3JDd1RreS9WWTRiWDF6ZHJMZnNqQmM2V1JRK3A2bFgvMWRJaDBDcU9STUhXdGtVTnAwZnJlVkY2R2hXck5oSERsekVyZGVkWnJQQkJqNmZlWkdEalZKbmxOZDN2R040ejRtN1hqaDFnclQrU0FsR1p5d0lSc1FiZDAzSWtac05DWW52WlNMRWlTR1dVbjRKMHl5TUp5eEw5Zjk1N2lHMDB4d2NMTlVlbHlINWo1REozMURaQXNRcU1xS0NRcUt4TUFsWm1sSFBrekFsYmdUNjJSRXBOb2lDT0RzS29WdlVJN1kxVGFqbVZTaVhDY09OTVNHcGNoMnBVd2lUR2xEZU9hRkdHV2xvOFdRUVlvK0w3Q1lPVjc1aGNZNFhRdnlPTStyRzZKUTdTTGk3eGRiejdMTExSb1JoYmljN0lFREVxa2xuU1BaMHNZTWVjRVk3V3oyZEdkekNiZENRdEExd3IzQkZSVlRhcTE1UTV5aUJzZkhYMDRzdWs1L3Ruc3FyMGh0ZkR4VE94TW1aOGpBZEIrRlpTbWFJKytWOVlsNDZSR3ZSdGZqejJMTGI0T3JDS0RIOEhGbFViMkxiRTJ2aFhMWWNDMFJjVCs4MkhDbXNMdnZKOXc5cTZNa3o1c2FVTmpsa0RESDVXQTZoaGFRd1l1dldaSEVGOGplbzFwSXFPWE92R2wxOE5kdXVQQjBtVG9rUG5DVDFKdndsbUYvTUdYajlpajMxUVkzSHRrWUIwWURUTEtXMk5DTDY1YTFQT05VbW5PWWFvS3hocktyajJCRTBiUWFXUzZqcFlLQ2lOUnN0Nk5iK1RSbTlka0dicFFDMVlUT0xaTWx2eXRuS1VSb2pVaUxiRVZaL0czNi84TGVwbzJHbXZwbXBFT2xvcUZrL0R1Rk5xeXBRZ1RoRVhxaWFSZFhYUXFBTCsrcjJNWitncnRDMjg5T2xXSElVUmI4b0JCN0l0RWpHaFpuMVVzeXBaM0VpSGtZNldyaVlqTWpiUzZTM1IzY3ZQWUxMYys4TisxaW1TQStpejdyZ1pFd1hKc0VHa2NMQWV5YXNuTEtwVEV0MFlrTFZsY2FuVHpPRlNnNEd6ZXVydy92T3ZWeDh2YmkrcUowQ1lyRm9nYjZFVnJiaGFRR2hlNVVoZThXcndCYmZKalRlODRMVjlhRzR6Z241Q3VUNUJtalFhUW16U01tYk5vN1NOSjJFNk15M25DRitWZlVXQmlzdGtoZi9HQk5WRnFaVndlMENwQWdYaHBYL0ZRR3hmUkJnNHdROUtpdWVuWU4vNS9CVUFOR2VvR1dlbGZ1aFJaYVArU1czNlgwZXdUOVU3UkovV2ZmMHFFczFYTGRLbzVzQjV2ZkliYW04OEM5UTArQTVZVkRMWDBOazBTbTF4VTc5YzVKMVhCL2ZPVXhNZGczL01xandKQ1Bkc2dSUElyYUJFTjdWc3hGQ2FDdVlycVp0bGlJRVhzcUZBQW1SUnMvTWFQNGxLWmMyVkttekNTVlMxREgvZjZkNTd6Yk4yVmNlL1hSUFUzRUpSdS9pQ1k2Z2gxeEN2SGt4N1hsMVc2bjMvY245UVgzYkw1RjRqampRT3RjcEFLcG1FRFlKRVZid012Ni9iTkk0WStNSWhZdWFyTVZBVFJqMHBBMlMxUWhRUDliclpCSU1TY2VDeXhtTk5Nd280bm9EZXNJTVFHWjJhajNKVW44NGNQWXFNa2ZOSWp6bkUwYTNEVUJmNXR0U0dCcERLTkFuK0ppeU1Lb1BxU0xmdm9ucDAvU2UvZzlaUGlncXI2aUpKcW1jUDZyNkx2TVZkY3gyRVJ5QUw1VVRCM2VFbXh3Rk5BVXhjeWRtaHpFdzBYMFJYWmgrZm1JUXNMNjJmWU1nRmZTS3VBYmNZM2lCVi8wREtKZzlMT0RaWTlJUVZWbFQvNDZGWDI2SDVkazlkNlpEdkk0ZDU2bDZxbnBHWFhpV3FHY1BuYThuTm53SXREU2R3N1k1T1lJeDNwVlFxRnBjZGVwd2hOL0pTWGw2VjhZL1QzYi84Tjk1UUlqVFRTUUFBIgogICAgfSwKICAgICJleGVjdXRpb24vcmVjZWlwdF9zYWZldHkucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiNWM1NDM3M2YyZGM0YjA2NDAwODIyNWMxODZlZmIxZDVhZmRlZWMzNmQxNTM1MGJkYTBhMTJkZWQ5NzYwMmQxYiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMDM2LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTQyVFRXL2JNQXlHNy9rVm5DOXlpcTRmQTNiWjJ0NjI2eTdETGtWZ0tESWRDMVVrZ1pLOEdzUCsreWpaU2QwMEE2cVRLTkVQWDc2aXE2cjZZYzBJSVZKU01aRTBvRnl5OGJxWG9RZENoZHJIQUVwYU1DZ0hoTmdqZU5LRGpBajRqQ3BGN1N4NFRzZXJxcXBXTFhZVElkU0ROQW5YWDFiQVMzZFFCNHp6R1h5NGh6OGlxQjczc2htUUFqUEVKUWlqTzFTak1wZ0RsK0xXUGVkZFNOdTlEamtwNUZEYmlEdlNjUlNYaFgxbUNVTFpObzQ3YXp4aDR6d1dmb2lPSThXYzBpNjI0dThyZ2lNb0FoOVB0VzJ5NHMrTCt4Y041VXE0Si9FZjBoa2xHOUFCckl2d2t4SXVpNzZSZDh6OExrM0Ewd3BIUXg4WHptMW1kL250SExYRk1CeVEzeVB2dUhxcjdlNXQyN25HQWpkN3o2eTd6RHA4eG9RV2pXWlhXQnNIVytQVTB6a1hUM0RMQnp3eUNiMmNPZG8ybmRHN1B1YUErKzgwN2FlYlpBbURNME11TW85U1hpUjFRUGlWNmQrSUhOV2l6TnpIN1BOaGFpSDAwdU4xaUhsVUNic1VzUDA2V1IzZ3Q0NTlqNllWNjhMc1dQT09YUEtnTGRUdm1jT0ZHSjV0YWNjNmpoNXJtL1picFBYaDJYaE1paDNsRk83Z1poRTl3TzNOeGNYdHA5TVo3bDVTV016a1lORzJ1WnJFMSt0RjhYZTdNVGMrR3pIM1Rjai8vRnhrOVE4SDRSU2ZEQVFBQUE9PSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL3Rlc3RfZXhlY3V0aW9uLnB5IjogewogICAgICAic2hhMjU2IjogImExZDI5ZWE2ODIyYmUxMjgxN2IyZDYwMTA5Y2VjNDRiMDYxZDE2N2YxNDdiMTBmOWFhMzUyNTI5ZTFhNGM0NzUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMzg0NjUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzE5L1hQYlJ0UFk3L3dyVUhWYWtEWklrYklrUzFReHJXSXBpVnBiVWlVNWFWNCtMQVlFamhJaUVrQUFVQmFqNGYvZTNiMFBITDVJU25HZTU1M082MGxzQXJqYnU5dmIyNi9iMjl2WjJibGRodGtEeXdMUDhCWnBGdm5MM1N4eHd6U09rc3pJV0pxbFBlTXlNa0kzQzU2WTRidVpheGxua2ZmSUVpTktERzhHZGVDbjYyVkJGUFoyZG5aYXdaeXFlbEc4bEwraEZqUXdaL0k1aU9TdjM5TW9sTCtqdERWTm9ya1J1OW5ETEpnWTR2VTFQTW9pNldJU0o1SEgwbFM5V2FxZkdadkgwMkNtV2xtRVFZWUQ0RkRsVTI4T25aZXdvU252Z1gvM29qQmp6NW5XY01MOElHRmU1cVNaSHkyeWxvUUxZMTI0V1pUd2V1NGllNGlTSUZzNnYwZUxKSFJuc3ZyLzVJOVdYc0l5cGdsTEg1elVjME5lbVdQVmdUSGRKKzVjamZqbTZxZWIweSs4Q1BTQUJURjB3cDJ5YkdrbzdDN0NMRzIxUHAzZW5oczI0YWp0T0RoNngrbjBvSlZvOXNUYW5WN3NKaXpNeEQrdHk2dGZvYkNjalo3ODBkN3I3eDFheHFBUC93OHNZODh5NEZmMlp4Qk9JMXNWeHIvK2pFTFdXMlJlcDNWei9zdkY3Y1hWSllBem1XbThNL2I3clU5WFh5L3Y0TVdMbVhvUGJPNDZUeXhKZ1NyTW9YRmdHV1lBK0wxSE5NQ3pHVDJhOENwaHJ1OUU0V3dKR0dCT0ZETXNlNWNzR0h3RFVvUjNNQ3RwbGl5OGpQbnc2VWQzbGpLclpjZy81aXlZTW0vcHpSaDhmQUZ3WHBUNEtmeitBQURZRXd3Wkg0N2dBVUQ3UVhnUFQ0T1ZEZ0RtZFJJOVUrMjhDQ0RBOU5rTVppYWhaZ2Y5Rlhab01aa0hLUTRvcGZMUXRXbVF6SGtKK0w0SUJkcnB4V3JWYXJWOE5nVnE4VmdNM1c5M2h0U3VHOE5zUHdHWkFPWUc0aytYL3RySHY0N2tvL3hqVXEyRVBRWHNHOWJodjdwNzRnLzk2TzdqWDBmeVVmN2hWZjBBMW5JYTRQckUrdmpZL1NEKzBJL3VQdjUxSkIvbEg5a3drUjlOSzNRY0lMa3pKOEFobWhlWFA1NTFmNzN1OXZ2OTQrNWQvMkQzVDFnOFJ3Zjk0MEUzR1pnYWxnV3U1MndlaWFwQVduNFhxVzdRaCtGaXZXN0NBSldCaTkyazZxSjhUa09EQm9qcGc3dDNjSWhRWFNURXczMmNLMWg3SG5NUVY2SzJKRmo0aUx6cWlSckNTcWZYc054K09UK3I2WEMrdE9lUno2ancyWmVMeTR2YnUvTWI3R0RtSnZjc3cvZEF5TFA1OEhFeFlVbklnTXZzSm00d0M5elFZLzNCTHE0anBKT3V6enplbldwVE1NeGdHbmpVSzJmT29GM0NVeEpGV1hjYVBFTmw2TWg5RUhZNXgraml5cG00SGw5RndBcGdjVHJZWFNCNWhNSjhCeGhLbUtrMVE1VHVSVkRxandWTGFBbnVxc1d6aTNoTWR6ZE95cTZBa2Y1M01TdjJvSEVvMEFPWFVJTUF1NE0rMFBSZGYyL1k3OE4vLzJiU0xQQjFVVk5zTUR3NDVzVXF3RG4xT3prcDhSY0lUNndyL2xvK1daemdCZjN6YjlxTEZUVWdoa1UwcmtNbXloK3BWMk5MdGsvcnY2WVBhZVlTSzVJNEI1Ym5QaktRSHpBamdrejhwYm1xRGt2ckVqS1gwVXRwT0pmQWVBc3NLSWVaczZFSzJPb2Z2U0VhQkV6V2hKWU96VWJ0cWpPcUk5M2NVS1hoeHVrcFQ4bWJnSHNnTEdnOGowRklDeWVHQWVCQ0k1emhpMFhnMi9ITXpYQXBkbkZaV2RIQ2psa1V6NWpsZXphc1dxaDY3MGR6ZkpwRm5qdXJtYWR0dXBMcHBLTVQrWGkxR3E4RVQ4MUFOWkNsTEVsL0lEQzhtWnVteHFua082ZWgvNG5yWkcybHZ0ekJYNS9jbEFseGdpSUczenZzR2JEZ2hQQVRtcHVDZXVDenhKSEtReGhsVGhiRnpneUU0c3lSMkcrbmJEWVZjRFJlYjJrTElwZGVXcWwwTVVPQm9OaGp1MXpSMG5peHhuajlKSmpOdXFnWXdzU0FMcExEeEk3MFlPZ3N5YzcvV0VEUGVDT2pBdG5BK3NzUnE3L3Z0SXFvRUpMY29lWG9mRXNpK0Uwa0l1bmFjVVBmbVFTOFZNS21pNVNWY1RGZlpNVDJVaGpvYU9iT0o3NXJKREJBbU56ZUlrYXRxSjNMRWR1OFByODh1N2o4eWV3MDBFdzlCRTErMmFiMzRJYjNzSXhmQjZJazZkNEtob3N5MjR4QWhDU3ZyS3N4Zkx2RXh3Vzdmd3U4Z2l5RVlibXpHVXU2bkVaZVBidzFJdEpHZlhNcmFORklzdit4d2o1UzJGK0NvSXNJVyttZzIwSXJ5STN4cUo5M3JDUXBiRjA5ZlRQMHdxdDhETHJJc0Q5OGIraTBjdTJjdGJ2M01JTWFaeTl3ZFhQMXR1Wjd3RkFBOTIxa1RqMmZzUmgvdE90NjJlbU1WUVBRTEdjVXpBakNuR1VNQ3ozNEZtUVBuTUZCaDVGN3Qza1ZtLy9UR1ZiNmkzMnM1NzBGN2dSa0RRV3JIL01HK1dxNWNZT1VwZTFmM05tQ25TZEpsTlEwU1paSnpzOEJiZ01QVDlpTWdmU1JETHdzZzJLd21IM25HMHhWOUkyNDdDSjhES052b1JNL1FLMEdYdHM4M3RjT1phc2h1TWtreUJJM3FVaWhHVTdrQnZ2NHd5YkxXQTFxVk5DRXh3QVk0ZmVDTkVKcWRiTy9lNWhKTkpzSkV3RWJMcytWdjBqY0NZaEhOTXZEREExd2ova3NkWkRnMFN0Q3N4ZUN2b0JhUkpZRTBKL1N0Rkd2cGRNRjlCTDBUQUJXejhocEVpWExkc2R3VThPWGo4VWhjSStFZEYyb1FrVnFqdEtlOXdDMlY1dVh0b3grOUxIZkw1YVJYaGRiT2x4VVlURFJrVktCUllBRkJSb1hBK1pRVjdVSEhETEoya0k5UVpRdFloT3JGM1hXSmlnVjNRVjlXcjFaNVBwcFc3YUFMcTBlZVR2UXg5VHVkRVltTFFoa0tjVjI0Wm1yOW1odDNIeTl2Q1N0b3JiYjNpeUN0ZFF4alA5c3BNRjhnWlBzRzE3aXBnL0doQUdOTWFHcUZTcWpqNFQ4R205QjJGczRpMnF3Q2MzL2dqYnk4Z0tIWlFXU21GV1VvQXJObVpnSFBYR0QwQkhzendGdEpQcVdjdDhWckpnc0NFSDVGbUNYMzNXaHFEV2d2dGN2QTIwK3RaSi95NVQrTHRHY0M0TXlobEV5RWhaUk1FcUhhZS82NTlQYjg5dlI4SERjREpScVZRSHlJdE1nRE5JSFZjYUVhWEM4QitZOXBrNE0vUmZldy9JeTM5eGRCVmt2VXdPZERQdC9EZ2IvRWxpU1BNdmFnY3FHYyttd0JobGFvVzF4WGIraVV1YUJGSUVscFJRQzd5R1krUTRZalBFaWM0TFV3ZkUrc0psZlhqeElTUk93Z0pHUTJpWVlzdDNmaFdYL3NsUHEwczR3UTkveFRoWTlzbkJudUJNbmFKK3g3aFBpYkdmVjVDQnBCcFNHYnB3K1JMaXlYUi9YK3M3d1phZm8zTjRaSHF4V1ptZjRsK2RPTFJJY25zTTVkenZmNytoOWl1YnhqQUdMditZdjJxTXgrZWtSTjRBTXM2T3BFMmp4QWo4b0tyUGtuaThWR2trSCtGZzRlRG5Da3VnYlJ4cDVzdCtzcHZCTmlqYTFsRGNzM3ZMdW9QQ2F6SEE3eWQvTkxSUlJ4Z0M1Wk1DTUE3LytZNEdLcFpGRklOcU1QMWtTOVVvRUJ0WThzRlFIUjRyVU5DRUhpTytJRVduS0RQTWVJbGFoTXVqREJGQXdNVk8xR3lhcUdvSnhHcE1sTkdTcUduNXdEKzFDSGNmaGV6S08wemFCTCtIV2xkbnBjYXUralhBN3ZRZjJ6SXRyT2g4WXRpN3VwaEhpNjljVzJqaVNBbEYwSUJzbnlkWkwvNWdGR1RQMUFyeDdRMlBHUXQ1cVBiWG5GWlRmbkhkTmh5WEpIVDdTTkRXQWlpTkFxanZYeFVzWDNtRzM4Tk9pb0RaMThUR25wVnh0eTVZeGE1cy84bEpDaEFHSWRnZVpEbUtJNzg1d2RRbC9Gb1E3My9mQnhRSS9KVTVYOEtkVGNGbUJFaGZqL2hLMHA2MnBhM3hWNERTZ25TVXVzWnFKQ1oyWW1CR3Q4ei9SYXQ1azFsRmRtLzZHdm0rVTk5Tm9CdnBGbFJFb2djOEwxRXA3NGJVRzFna0RDcUxlTFNqbzRmM0ZsZVM3K2g5Y0lzUnMyKy9jNUQ2MWpIZnZIci9ocndZelVIa25KYzdhbzNTWjl0Z3o4OERxQkpNQnByZnI0U1RuVzdBbldJSnZrL1ltaSttVUpiMXZZSi9BdkJydkFWS2NFRW5DYjQ0ZCtHRjJRTVBkMHIvS0FkdjZ4RjFjbjF2NG5pV0ovdjdzL0pmTHI1OC8xMkNCcG9zTW0xNDArUjNtb1MwWkxnemswOWZidTZ1ejMyQk1aSTF3eEhkZ0Vwc3FKR3dlMGZyanlIS0lXZHFTL0tEaVB4cUhSaURiWnBrS0FWWWErTXhoZ0R3dnMybkNPbFo1RDdyTko3MWg1b0lweCsrd3NmRzN1Z1lxUW9yNHJPUVg3YUpuTjdkQlgxYVdYT2lkV3JnTTFLbm1Gbk5QODNkdXRtUzJJYTlWSHVkb09uVkVWSU9TSHRTc3RPYlIzN3dGVUc0THRuV0NNblpML0x2RGJVSmkzY2p2aUcrM05nTGxSTkM3WnhuUkhkWTB6UzNxYmVvTUdwNXQvSWYyTzQzL2lwem40MGRrUUlmSWdJb0NOMEdOanR5b2dMRlpFRExuS1pvdDVvQXNOOFR0aGdsemZFWUtTMW5XQXBtSFdaQXRTZkpkY3ZtaFp2aVhxODlmdjhEYU5qKzdFNkFPNHU5aEJQWVhSUTNNUUlUZ2V1VXRuMmJxNVhlUUt3WDhtV0pRWGFGSkY4UU1HRlZpNkdMSWNrVHdUZjVjbFdWUUVLWXh3emdHM0ZCNGVmZE9GaXdQUitIVlhJMWJXM0V2bjZKeHlzeG9DOVdSSEJYK1loNm5iZFU3VGtza29PYWtsbjFIemRZRFd5ZGN4SkpnMnJWcnRFSzF2QnM5ajNRazFBc3RZMUFtUmttQ2NRUVByajhIUzEyRm01RHV4M2ZQUWFLaGh1YUFYb24waXdvWHF6VTRBREJnUTVvY0llTXFUWnAxOHlBVzNGSVhRTHNJZExOK3dJSGEvSjl0TklRR2p3RHZKQzVpdStROE95bnJEZzJxZytTZ05pKzJXMlFFSi9JemwrR0NQVTJrZFdEa0tySXNhR290eTNlVzRCb1ZkWVMwVFZzUkJhaWhxazYxTkxSSnp2K0sxaXFVMWpxZGxWVFdWZFU0NXRSbTEvTUZZQXVTSytSTTRVV1hNTU9jQTFDdlZsYUZTWUFpbitHc1p1UXhGSHdMK0lDRmRpdHdNTEVIUVhyWUVQZjBDeHhDMDFiOTFCNk5LeDg0dDdFbDB5enpUTVV5WDh4S3lFbVB1NEY0NEEyRmRxaEFEd3kycWFtd29QSnloREJ5ak1mcUVvYnJpb3VCNTZPMnpMTUVJNmpnRGQ5T3Q4eGJ3Q1BUbmpXK3A5eFRsbmtWaXpBSVFsQ3RPc3M1WGh2UStNUU5ZSnNIU0d6UWJFRS93aXFqL3RpMmFRam1rQ3ByZk5DY2hGbDM1c2I5L3NCc1Vsa2ttT0Vld0JtWmZGYWc0NEQ2TVFkb21xK3N5bG0rckY2YTJGZkNFcXhjQXRNR04rSmx4bXNHVnAzWkxyRlRrL3g0MEZ5enRsWnU3ZVdSTGZsYUhNR3ZNZkZWK01HWmFpbEMwTklpK1N6cGs3QUtJWGVkVmJQYUJSMFh6TlV1TWVWaEF5OFR1K1FhTDVQMTFrMjcyZTJDMEU2V2NRUnlRS0hFQUFFRDRtR1pQVVRiNEltV3Q5eHZ4S0tkRXhEVTBkUmU2NjZwR1RKYStnU3NZOXQ3MUFtRmhKS3NHbElESXkwRWMyeWJYcFFrQzFpeFcwOG9BVm1qeHllb0N4aW5KTHBoeWtnZGFKdUxrRDBMeFVjd0U4T0w1blBvYmdPbWhmMjVUbitoaGQrM3lQVlZwL211VVpkeVcwL293VlpUdWRQYmM5UEN2eHVMU01WTE45ejRPMUdsWU9ZbEM2RHoxNmhvZmF2Wk0xbHJtZkNQS3hOeDBzd0NGWkdRWXJQSitzcVprVkx6U2RpMVgyTmdGV042YXBRMUpiekgxZ2E2YnpUYnBJS25GQUxTOUJhaGpJY1p2OFVDM1VMZGZUVitLbmpKMTdHMVYxWnNlY0Q0ZEFGVWdGSGpqai9obSt4TDRkSDg1a3g1R0ZQYXRMZk9JNlpBYVFqbTdyMnVOVng4T2YwSmxBWVhGdXNVUThjcU1iUG04V1IvTXRrNzhEK0F4blY4NUxLRC9RL3NJenR5ajl3UDNvZUQ0ejEvTXBnZUhFMDk1TlJvOVpHd2QyRk1LZk4yTTZEUTVmL2c2dHJ3Y0c4eVlJY0g3T2pvOEhqaTdVLzJ2VVBYM1orNmU1Tzl3Y0h4QVJUeFBucDcwOFArNE1nOTlvOWQvM0RndWRPamo0T2pqOTdnK1BEWVJBM0tTUmR4RFBqZ3ZTTUhxVW1ZZ1RXU29tOFhsWDNzaVB6SW5vTU1WZ2lHN3NKYTh1UVNvNGpUaG9CVEV4QXMzVGlvU0gybEdCU3VvcWdhL2J2QnNZcGtOUy9aYzhhTEZhSHFaWDZSOFpSN0sycENhckdtYTc0NzNCZkRTQmk1a2RXM0NYNWJhWDV6RUQwd1ViYTJ2OXhHL3JSckVwVjBjZWhkV1lxMkVhU0RRV3c2YTBTQkxhMEh4TXQwaFY2MkZseUZvdk5qRGlvMGtJT3paUGNzREx3WW1mck1TVUlHSHFDWkRTcW94czZqOE9LaEN1d3FVb1ZOKzNNZHE2NGtrYjl0NHI1NGNBOURxUzBreURpUGc2c3JwQk9TclZQRm5oYndwbGNjRmFoS0JUYmxoR1BYVTJNQlNqd3liNGpYRlFPOWZsbk1vTVB1SkFEVExXQ0FwUmZ6Vm1BVVNPanoxYS9tYWx5RUkyc0thR0JvYlBqK1VvYWc5YVFYUjNGN1hUOUg1clhyUFFMcVgxdFlINk1JTFNOWFQ3bitsd3BlTDNDbUw4NXFKN0ZRWVdTZUJkUHB4VmxUMS9TU0JQUVR4bHJmNDZPbmZnbWpTN1grN3QwTENLUDdIanAxa2RwZGtBbEoyaVB5NjJuTWxYZHVWWS83VzFLUDViZ0g5WVZPQmVlK0E0TVdDRHVZc1hTWmdoVm12alpDRGFDV2xFK3hhanRXK1RVdTRzNkpDaitMWDcxbnJiTUdLeTd5QXhVQS9TT2VlTGlra3c3WC9HalUydmhud2FQS29pOWw3b3pjYldVK2g2NVAvckdMaDN6QTFJbG4wWEtPQjZYV3NUa3NXOWxWNVhDS2hmRElRSmtvN3hrdVV3b1czdDhyRjBmSDZ5SVZtN0IwU09BR3VoU0F6UzdQRm5FeFZIb2JUUURKVDh6L1NjR0dEL3Q3dWNpQWdZR1JBWFFJbkdFOUhzU3hFcjNDV2x4NDh3b205THB5Z2N6ZFdGZTh2RG10TXhObVB3cGhJRE1Ia1NRbG5pNVFrcWZBWXcxZGh0cCtnUGpZZHVLRVpsTVBsVnhvNXU1RE5HZTczNklFRE5QcWdaMWQzcEIyWWtiQTZxbStpQTQwb212RW5VczR4U0YrZkthbCtZeXJzdGc5c05KZ0RTTXhnSzcrUE9KaHIxRE5Oa3pPZnI0QVRqc1NuR29oZnZJMnpBaVUwT2NDSGt1RVIxNHZkRUgvZ0p2bm1rOGRiRlZ4TmtZcVJ2QWdkbmYzajQrUERvK21lMTNtVHJ6dXZqL2Q3N3JzdzZBN09UcjIyTUdSLy9HZzcvT2pmbnlZU2hNeXpNSEh1cU13Nkx5Z0JuaDU0WG1QbzY4M243SFNRNWJGNlhCM0Y3QjN6MzZQZWw2MG1FWHpTUytOdk1DZDdZckg2aFQyN29QTTNHckQwY1JnUGRwcUwwMTZmdVRySmo5WFpuckhoNU8rZCtnZkhRM1kwY0dCUC9BSEIwZjkvZ2Q0eFk3N2JQcmhHRVQ3SHR0YmQ1d0Vtc0lRTWxjZHk4RmQ5VFIyK2E1SHpma3hYTGNKT2RkeWpPU256NEFDcGk0STFWNEtVNzVhNVJQSkxkaVVKak5mT3hnMEFJdmZNclJGT3dTU1JaLzNFODRGL00wUFdNMUVWRDQvd1pQRGpkMGxycVlpRmVXaFRSdU80NGtvU3h3NG5iTWtqZ1JQL0VjdDFreWR0REdFUVh1ME5BNUJVR2haMVlOUkFVN0RXazRqUDI5Z05BMnc4eUNLbk51U2gxMlp1NzE0V1FSbG1mRWlBYnVZQ1p2ZkhBckZuQjZkSU1RREI0Q1Vhc1hhTHFqeURycDhHd2FwQ25HL01IbDVha2RKZTFQYVdXUWNXT25nc1lqcTNTMFhyZlIzMVNxNWV3UnBXcEtXY2p1WUJ4NHdaK28rY2hGdlZRcGJCcWhId2YwaVdxUzJPSHNuSEl6Y0tQYUZZYUNGWktJM2tNNzI1Q3dVZDVqRXE1YnViYWFHdWE4NUNPTkZ0dDdaVEZBSzdyMVduUTk2dUVjOEhmZzdMRnN2dzUxSkV3K1Qxa1JHb2dUQVRYQ3N0bGZkRlFDSVZDSlFTS3ozWjFBUW5TM0xqTEJPRlJpNU9YbUROa1h4cE9aYWFDOUNXdEdaeFlKOGFBZ01FbUxEMi9jbWc0T0RmbmZLZkxlNzN6LysyRDMyMlg3WFB6b2V1SWNISHllSGgzdm1HODdmNGM3dE45Q0didGlVQVNsNlRIUk5IaDRSR3RRdG94TWs1VDRtcWRiRkpPVWhTK090endGSzJTVlJyUE5Zak92R3IvQXZicFRNeU4wdjMyM2ZBSmZYUTUzUDNpekNFTThNY2Y3TjdZMWJLaWNIejRkWkowZkVpVlFSYnNaZFJCZG41dkRWSXhqbGJVdFRqdnVieHF1eG9RNCtObE5hSWpSYlBFNjludDdxbEJBeFZWYnQ1RGZpTnFlS3MzeVVhdjRGYXhsSmVUVFd0Zm9SRllLeHJUWU5MSXg4OXQzV0VBS2pBSWljRHBwMUN0ZjMwUzBpaVVBOElyamp2ZDVlLzZCM0NQOThPQVlDUnlFOHcwMDVDdS9pQVE3eGdyUzd0Vm9MVExtdm4xbkduVlg0OWNpV2VoZE5wQzJUMkJSYkVrNXVpT2pJOVdxWXhKbk4xYlpMdmJDTHhBRkJZMS9ZUEVxVzF6aEEya1NFS1EzU1IvMzUrdUpNUFhiR0RSVFo1QXJldUxOQlIvVHprTTRrV21CQVRldXRXeHVsNEF5a2s1b1luM1dpQklWbW5TeUJPa1hKT1B4TGV6QmtobUo3TW5yNyt3MjZucktiSTJWUmhWV0tsU01HbVFlQjhJaGlHZEM2ZWlVNlVmZGQxdUVUdHk4eUh0UlR0TDBxN0tQVFdQZHRmQlZhYkJkOStUZ0MxU3dYRDdqUkxmVnd2dDVxMk5wYld2OXUweXlSOE1vSkFhYnFKY0dFMWMzSmEzcGlubkxHQnpNb0xkUjArSS9RQVA1bmZOZy83TStOOXRIaGYrbjhnMnl1MS9Rdm1FNy9VdDl3WVhVSjJVTmpBdFAzai9DOWVGTEd6YXM3Ulh1U0RWekI3SGI5Wk5sTkZxRXRURXVLdkYrN204MlZhS25yYXJZRnFjbWRUbU1RaGxUVzEyMCsvbXNZa0c3bDl1QnRCRlYrN3dWUjFhRlFpLzJOZ2lMZitpNTVwL0FrSkUvNzFFTmRDRXovdHVrNDE2ZS9mYjQ2UFhNY2l1NkxrN2ErSGM5WGNvZDhUcnhHTVlUUmNYNzZlbnFqVmM0OWFMUW42dHd2M0tScVNtcnoxaEJpWHQxbXIyNTBGNktaMFlMYU5wZzVxd3QzUTNGRyt5NWdaNHFVQnhhcFJibnJVZ1VRQ2VGSFlaNE9uVThBREF3UkhhSUlQSlppU2Rnem5qdzJORWUxWmR5U0wvMzhPYWlMdGtiUlU5NWlMZm9WS3pHNkhhVDh5bHZPbEp1UG1yVXFVZmtpMHdaZmV4WTNOOHZSa0NnQjJUTWRTN3gzTklyR0ZGdmNVVXpieDdseUx5SWkvMWhRK3BDeUk3MXNidU1oQ25UeVM3OTdwNXBCcE5BOVdiNWd5WmVCMW00bmlpMSttZlNqaEtSeGJSMUNYRjRKZlRpQTl0cnc3ZHF0ZU43MURrV1pLZ3hJdk1GUStIY1VodDBCQ0VSK1RtcmMzQk5WZDRTSGkwaXF4ckJFMk5xTzFGUlM4Z21QQmhldG1oZnpIbFRPbUxJanhERVpzZldtalRRb2FsMktHNXlPcTNIekZMbmhzbDBqUWZRQXFVMVNpVFI3S2cyMWlHelc3VERuazRCS0NYbHMwWXpabFNyNEx0cG5sVU9JM0EySlIzcVNBTSs2dTRzc211ZnJRZVEvZEh5Z0ZHUlNVZXp3ZzlRT1A4eXlSWW9Zbmx0Q2Q1V082M2FETUJ1UkZ1bTlJV2RGTFZDdW9hbU5heUNTNndpK0wrMFhVd3lMbktndnE5WGJvWStrRTE2MTg0Z29tZ2QvTWhsUVFxYWYyTXdjcjc3RFFEaU5pMTNuTGFCcEcwM2ZDOU8wVTFMdUdJK2R4TWhiMnhUeWRrdHdKUitLMkhKUnFXbjA3VDY3Ly9kbkY5bWVtNWV5allpS2RRcldkK0Q2bXpuNUd2YS9nVThBdjZ3bWlVb1lidEU3dWptTUo5NFNuamZTSWVyT0JlYS9SQ1pXM05pVWFhajFsMUMxSGtXbE16NWkvOFBCbzdsQXBvNnlQVlJtRU5CMUhEenNHU1cwbDR1bXl0dFJWYlplS2QrbDNLSXB3M3Zsd3JLTTBpYTZyVVVaZlVkL3AzNWNqY3p5YWlNYmVPMm92TXVJTU9XRzJUK1hyUDY5NkY4VjhLaHdiSEIrR1VLZkdBMC8xRysxV0dLRDQ4MnFoNjcvNlhxYW5EYnJGYnZEbmFhbEIwbzh4UWJpVEtWS1JZSGxGa1poN0FhSllGU2tzMnc2eXVUTlRiR3BTNmQza1Y1ZmVXcnBEZUxrWkx0VnZlWHFIcFhpWXhCYXY5VVk1a3orWmhoMnZxUFJvQzhJano3UHNDdTFoWHJmdmdhWjlzY1Y2SUxlSUU5azBGa2RBVmRvRGZXZTUrL0xnMlNnSS9jaG1mOStaUGJKSzJTMFRLampGRklDQnFtVHN0aE5YTEdURHF0aDVvdGxJQmdiYldLL1dnNnRwVlI1eUV2UGcwa00yMWJXbHpDK2hPMVZNTDNXN2NGcGRsZWQyYVVhbERrYXQrWXBWYm1hMi84ODdaYzV4ck4xUEpXcytlbnF5L1huODd0ekRPZkdKREgxa2RJcXBsa2VobnZSb0NvWGdnekJya1IrOEVGWXdnUWU4dDE2emJZZGp1VHZjVFZ3cFNvNkJWZXd0VTdjOHVHb0hWTHpkdUY1alBtWUlWY083TFIrWEFNY0YwOStVMTltSU1hdUd1T0g3WUlzUUg3eEF4MEJCRDZkaU5ubTNEcWdzR3lmUGVPaE9KSVNkSlN3akpFR0hQQXFOd3JaNnl1K3ZIc25IeTIxQldmZUFnUTZVS3dIQS8yemZUVW5qV1ZybC9uV091czZuNFIrUUU1SmY2a2ZySlA2ZjBrS3ZRR3o2eEM3V2JjdmNrM2xYbmQ0SWovZ2wzb2VQLzlmWk1ya0lUcC9oeFZUMWh4THgyZ1FzQlBOQXpxa3VnUjhNRjhrQ1FLVktzR2dKY203eUJQRWt5bUxRUDgxMXA4WW5MMUJqdGovSVVYK1E0cjgveWxGeWx4M000c2pSWFhOMHE2ZStJbXNlQmcxenRxb1BHbjZtOXd3azI0QklwazFLWnYvdmpZeGJQQzd0cWxsb2Via1dEeEgxTS9QRWYxZEE4MnpXQ3ZpdFF1MHEwNjVmTmNlYUxTc3VYdGtCdlQ4aU5mZjFtaGhOMFpQdTAzMWJmTWFKOXpmM0lPNGpwbU9KRk44QzgycTAwRmx1Sno4WHVsZGppb25nNlFUMktvTmQxRkhnNkx5MFNDcE9nak5nUlFIdTRaWmxPdDlGOU95YWxsR2NSYmdOZ2FLZW13K1NwU0xSV3o1Z1Byb1VCeEQ5VVF0bllzdWJuaFhjcVNaM1N2VFNyT2tQa0o2MTFRK1F0eCtoOUpkTG1lc1BHd2UzdEgxTHlyWmMxY01IVDd0VWxvRURQcVVwY1F1dUxpQW9WeUUwMnBYY1gxTHVoUEhNQk14YllyenJXa2lNZ3NEQVpxMXRNdW9jS0M3eDdlbVVUYnBCemUxQ2hkaDIxUUlONUFja3hncXNjUVFEa2c4RjArZ2VFWTM3U0RZWWpiN05Bdk9SRTdxdGFmQWd2QXBraEhpUEVHc3lIQWc5djBxTWVBaWZaM0kyV2lsRDRzc21KVy9WcTczS2lRVnhJMUhTc0p6UXZjVCtQWm9mQ0lRdVNaazRrMnBBZEd6YnVzSnZFNkVMOURHTDdzeU80OHBYL2ZtajM2UXRER1RsMTJUQm9qMFlGdmUrR2JTWTVjbkwraUt3NDBuOUhJREhBcTRGVjJnMytZSi9TT3FRUyt4My9ScWwrY2lwamZxTTE4eXlMYzlncUdlemZ5VExGekpNSXhDaG5zMjllVmttWlZKNDYrTHQ2M3hkelhuRktvK1RrNGFsSDBPNTYxaFRXTnZMTlZwZWl4MnVjMkhpTmNseUFNV1BDc0pCZDZZTHl0ejNSRFhuVmkwTnA3anM5WWNtN09hRDdwWWRTZFByTHB6TEZZbHFzaGFjN1RFV25ObWZUUCs2VXdNb1pzd1dzVTBHVU4ydTNLRWF4ZkREVk9SRUtsd2NzOHl0ejNqVjFOUzdvcnpzTEdsTzUvVmxVcllmWkJTSnYzS3NjSEdhYWVCVkJFaWpEaStyTERNQ1g4ajcvdmpDNFkvY0h2Ym9uZ2dKM3JrZkYyVzErbVBzMGtaUjFYc1V6eHpRODNJQS9hTndQM3VJdVRIdDhnc2loZVRHUms5amtvcW9YWjloQ1ZYdUVKdTB3MXlwcExOZExnWjdKWndXTWdicGkyMkRrZmI5K2NHSzR2WWx1cEMzRU44Ri9zUjg5Wmo3a2tDN2daSVRZaGxVVXh1TDBpcE9qTDMwRGM0aFA5a2E0d0FjNG5oWE1vUWxZYnhpdm5XeGtyMFVUcUVvS0VsWjZkZG5NRWFycU1IRkVLSlRyM1dKdFFLTzcraTQwUjhVb2tZT0RibExYUGlVaU1oVzJVMlpLMHhVYkRUWTZRNXREdUZMTW1XbW5uc2xJVFdNUGYxZ3l3T1pBNWtDckxZZmxsVmxocEZFVm9VdHc4SUhiWE4zV3dldytMM0ZxUjA1Um5UaXRxWVlBYnFwSHh6dmFKcTFzVk5uRlN5VjRtR05kVUxPVGs0em5uZEY1VTBiY2d6c1c4SEJIT05ORUVZTjdJYWt2QmMvVUI4ZFhvNjE2bW5KMHFGcXpnTnp3N0lrd0tlaU9rWUVheXh6WXNVOVg3b3FzeGRJMHUvR2tYakV3MU1ReTlmYXBPdkZFanROZTNuMkIxM1ZpVWlsQ2svN2Z3cVRYT0lKRHNxOE1WeGpjTkxuWmN0M25sWjZHWkZ1N0JNYmZXWXcxY3RuK0k2d2NTMGRsMEdTQnh1MTVzRmVTcklFN21uYXRkRXRRcDNYakdwZVNtbmVTV2xlWjdSdkpvR3NzUmdLdW5XbXhORVdscjY4dUloeFR4NXVmNittTDZjRWtyYThzSU5vVVpiY29KTHNoTUVKVU5ETVVwU0d3Umtua0pNWFloUmV0RUxRSGw3NXRkY2RNWTFOMnZrRUpGbjZRMnN1VmdqTDJYVjNhNGg3RnAxaUFrbFYxN0Z0b3Q1MXhzRGw0bVIxRzNJRjRGSk0zY29tbTBrbGpWdTRhTDNkODJhS2ZnMi8xNC9lODI1c3Z6YUVtMEcrTENiTHM4b29hNW95QTdidWQ2SGNTaEZLMExkLzljcVo4MUVOZ2FpbXdKV09rTVJVQzU0RzRha3Q5RmR3YjlhMHJnVnoxVmc2UE9nVXhONStzMDEyVGZWcVpSOTJvcWpYQXhtOXhQM2tOQm9PamhMVDEzUUtuSERaTGg5RWtBNXkrOU5QSkZSbHcxd2JlTW8xenJDeXVrRzkyR1V2SzU1azlmeE56VE50eURUOUFHVnpQeHU0THJET0xyekljMWE5VG5rRXd6YmdzODkrc2xQQ0o3ZzhWQzduRjJFbCszeEsxU21CcEFwR21YUWV2dlpRZ0NuWUE3ZGgxd3p4UzFUclVCR0JUQ0FoWC9PZW9HUHlTVzVyOCtrTmlpeTZMbkhKWGphVVh0ZmVuSXhoSUs4UFFINXh2RGVVZXhvanlnTHo5Z1FEWGVFQjBXZUptcU1OZGw0NWRiYXk3Ym9oM2JIVnNNVld6cmJ3aHFLKy9GTXdKWDI4MU4xVXRxb2xPQmpTMTBMc0trSm1VYTRHWHlkczFnTlJlMjhGUnloM0d1NkZrS2l2TnFWZ3dtYkJFUVZPV3NGZ3lXMzAraWYxVi9NLzZscGNZS2QxaTdDallleVBuMitNTExFRFZOY2REV01FemdHS0J6Uk45N3VHalpYbVRqSmQ2d21ub2RnMFhOTkNwUGc2MVJwZjl4TFkxZzBiUkF6MXFBekdveUxsd1djYkk4bWhHMU5La2ZWMVAwZWR1T05LQklCL0hJZGNYOUlQdjdOTjRYUVJTRmIzUlB5WHQwUzBubFBkNE0wWFBxeDVzNlB3dGxhR0xvOUtqa0NsSk9kdTRmWE90aGZZd00yKytEZllCRktZRldiWmczQVJodHhyZSsvdFczTzNKdXJxenN6ZDIxdXlKbnJrVWh0S0hMMTYrWDVEZGk5blA3WDV1aTlPTDAwcmNrNllDcVhyMURBR3d1aTRWck0wOHVWb2NZS2RJWlJMdzh2R3BQNjZ1VWtyNmdyTEM1NjBZdnpsVlh1UnRsaHBmbXdTaW1FcXo2QVRaRHlCSHpiZ1lJUndKckY5V1JhbE03RzJ2cE9tcXJtMnZxclNYYm5iaERXbkZDaEFOcDFoZmdseU51cUNhUU5jK3VyVlNPYXVLWmlFVXlyY3FTenROT0luWEhBUXVhcG12SFM4VFRQVVl5eFJnQVVpcVRxc2huTzRFdWJqclJmV21pUmI1NktUUzlkQU5kc2c2SUZ6U1BjckwyYXp3UjJveUp4R2RGR1hzVUhZSW9PTlE2Y3F6Vmk2SG55VkhtVkp0ZERYanRnb1N1dEgremdWWU50NnIvc3FMd1psNGw3UDkwcDNoRWs3OUVsY25udEtLUVYvTThZaHJDUEtTMTJhYTliTUFjOFZhRDBvTGNPcGJ6cnlyY2JLdjNuNEViRlRmdUxGQTFKUHJhYU9yeFowdkhrQmpIbWkyWFpEengxOEduby93QlM0SE13QjcxcDNWWXhJUVpNN1hRR2JObTUvek9JbmNraTlHZE1MVVllQUtpaHJMb2toVmFEdFVsS0hlNWJ3aHVWM3lwSVFHdnlMT2N1TjE1a2JmcEtOTFBJWjhFM04vamVnTmlWQUtHTzIzeVZjeHhZQjJhRTlBd0xveDZ4TG05clJMREdQVW82MUs1aDI2U0w0ckI2UHNQbGltbHoybnlFdmNuaFByNzBXUnVyOHhNSUdEekpQd01oQWhPa2pTMCs3MXRtUCtlWHBuR0lpMUMyeVlTeVd4dlpVWEw4RVlTQzQ0OURFMzdDYlk0S2twck01MGRpcnFoeWEzYzVBV3h1YUtOVjJ4WjRGVE16NXBZdFZnQ2psbnRqYkFUaEpvbTczQmFSZVYwOFp2Ui83Y0dtV3pqYlY3YzhjOEg1MVk5Y2FuYUc1VWtVRUNzQnd5ZzRaNHJhc3l4MkFHbVB3Y1NaNFZLU1hJTHZYK0ltVmE3QU5DeUtLTStPZ0hsYTRzemUyZGtSMzRLSUREY0wxSW9XcWhZK2pOekpiK2RBbkJEeDBFY1MwckFnWVp6dHZyVWhUU3Z3aFdrU0lhbnpENDVLL3FrMllXbDBzcGVmNWR2VDZ3dnJ5K24vY1g0QVpYSXpDSmxIVmtENWhOcEE4dXBxcW5HYXJLYnFJQnpkUjFWSExpNG52eGpGdXNXZndPbVNuNEJ6Wnh3T1lnMFdoNnlHMm04TGpRb2VQeUwxT2JRcFQwUkNrclRBcExEc2JuNGxTMWNXcW1OVEp5eDhZalBRYkdzZzhON1hNcmVhb2JRbEpDdVZZM0x3OURhSmcrN0RZbUphOXpoR3V6amt0bDRBaHY4bkEzTEoycGpoVk54Z2crY0xFaCtqRVBYUEljdTZqeUExL0dqTzc3aEpvUVQwakF1V1d6NWJRTms4VkszZm92WGlrTzZYOENnai9yc3o1TmxBeUNzcWxnai9YcmFYYWRFU3VQZjJRQnJ3YW8rQnpoMmJMVUVtdHVnQVdQcHVITmc2cWJabFNsTVI5a2ZYSFl2all6MkhMb1Z3MnB3cVlUamxXMXprWEZJWXJ1d3Y4QnUxRVh2QzJRcS9TQmFOcXYrMnQ5OS9OK2p2N2Jjb0J1bkZ2RG4vMzEvUGIrK2NMK2QzUDErZG1VUHordW9XN0VQeit2VHVaK2ZpOHNjcmVMWDdOTmlWRTREU0NtcmMvT2JjM3QyZ3MyMW80dTFQVjVkMzU1ZDN6dDF2MStmY0d5OGpNWGVGN2ZyejNkMjFjL29WR3JtNStMZlRPekJab2R3UHdFZFprcXVmZWVJWFh2N2k3UHpMOVJWQS92U2I4Ny9PZjlPdWxscTFlSGltSlc4MmlZT2UxT25hTCsvZVRjZ3BJTHYxK2Z6eXA3dWZ6U0Y2YXhRcU9wYjVMYjBQZWhRWWFBNkRxUGNEeW9hTEsvNTVwWkFuQWtIdHZYNmZYS2Q1TEFrU0UzQnplYStzUFRFTjh6M1dmbysvM3JVbEgzby82S3BtdTROT0MvUGl2SzdIc29rMXZWWkZWcDJXU0lKVDVFc1lqUWFXRlI4VTY4bGg3UTgrdE5iYytTUEJHakplQURpelJFd1pFV0JQaEtVTldUVzNEbzVlQ0tGeUpBbm5MWTdrSStxOWtsTDY3aUdmbkU0THBOQ3I0empCd09FeWpCeDNkQ0hRaHFoSkN4aVpEZE1UQWFUd0tVaUFTNXZYdndFWlg1N0JWUDE2YzNGMy9zTnZkK2VmcnM2UThBZDZOcUtHUzNNS01aYWxZTW5LdVNxTkQrY2xvYU9kMFFiTVVnSUFNTnBsMWlRNjR1cHdDOElST1N5VldpMk03UDhIR1pLSlhVR1dBQUE9IgogICAgfQogIH0sCiAgIm5hdGl2ZV9leGVjdXRpb24iOiBmYWxzZSwKICAiY2FzZV9ldmlkZW5jZSI6IHsKICAgICJhcnRpZmFjdC1jb21wYXJpc29uLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYTFjNWQ5ZTI0OWRjMDA2MDA0NDk5OTgzNjBmYWY2ZThkYTAyMDZiNTY4Yzc2ZDE1NTYwMmM0NjQ1ZmE1ZmNlNCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyNjk3LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWV1NhL2JSZ3krNTFjSVBzZjI3RXR5VFFzVUtJb2VDdlJRQkFKbmh1TUlieXk1R3RrdlRwRC9Yc3JiYzRJc1RYcW9BY01XaHlJLzh1TXk3NTgxelNKQXhiYmJ3Z2JiT1BTNTI3UmRXcnhvRnZVTkNHMWVaS2tTQ2k2dGp5cHJoc0NrNFJGNGNzS2I2TkNLN0oxWDNrTVN6akZ1Z3VPQzBiTUZWTmI2eGZQWlNZUStkUWttYk1zUW9YekZueEVpWUl3U1EvSTJCbU9DUVJ1bHlWS0g3Q1VIbXpBbXI0d0tSanZOdVpDUngraWk5eTVaSFQ3MU4rS21xOU40YkZPM3dUcVJwMzVmeXZOYjVBV09PTloyTjJMRjhZQXpGSDg2N2ZIeGNrZ2ljUkpoemhpbjdrQlc5LzNVYmU4aVFIcW13RWgxR3ZkNDBoN2g4WG9lamhQV2o3UXlsSHBXSTdjZGxPNGRUTjNRdC8wdzRaeU5YM0VEOGRqTUVCdDh1eXRkN0taeWJLN0ttQnJjN3FiaittUm5QWWZVSk15d0wxTjkyZHlpYjE0TjhRSEhaWVVETm1jc3piRHRwdHJnMy92dUFJVUFOUS85OE5qZjNsNDFQNzJGT0RXeERKVzhYTVJOUDR6Ykc4cG02TXZ4WlhOSlFwTTdMS2syK3o2K2dYNkRhWFhtb0VEQVV0dUFlUmpubU42VGtNVER1RmtOTyt3SnpnUmRUL2xkbmFwaE5jZTZ1ckYwclFlYmRUUXhDQjk5dGd5WU1DR2paRlIzWGlwaFZVclJlR0c0c1NabWs1UTEyZkdVcEtBeVROektFNWF2dVIzeDBGVUthdllwVVFYeVJTWVFBVncwU2lvZHRkRlV5VUVEVlZrTWdSdDNOVnFIU0hTczRyQXZ3emFRcVlKekVEV1NwOW5lTDcvOS9HcjU1KzlMeHBoZi9zSFVlcmNmZDVUWDVYREFrWXByZWVCZk1GV0gvUmh4dFJ1SStlUHFuSXZab2s4MjhvQ0tPb043bjdqQ3pBQVFrczVPZTgyejBvRVJTbEp6aklITkNiMFE5TGJVY3l1SkJYbjdjRThQNUFuSEgyZkhTT3BOeFVSMGdkbzBLZ0tYT0JBZFF0SnZ6cDV6azdRUWlqdHJsZEJCYWJDTVV5S1pjeEsraXgwZlZBaENFN2ZhZUFlb2xVU0xEaHdRQ08xRkNqeHJsK01Qc3FQWDcwb1hsazR6ejVmak40aVpnZUxiNlk2WnFMVkNJOEFwb0puSllnQ3VrekllbERhT0twTkZ4YnlRcUIwTHpDSE5LcU5SQ010RW9JRnAwLzlXQ0xucmFTSmZlcmZOWGNINlZBK1VrVFhzSHRZcHJMdStUbERLYVVTZVQrY1pldTN1dnk2U2s4R0NsMmptanhMczZlSHpmeGRHT29rZ0hUTkNFYVdKUmowR1JCY0R0WHB3R01GSWNBamFHMHF4cFQwZ2JESlVaOEU3R3Z0c2NUSDErbXB6Y2Ezci80WXJhOCtzRWR3Ynl4a0tIUm5TR0JJSm1GRWlRbktnRXpGTm1mZEVMTXlzZ3lHK1ZlS2t5L2dOMStuM3c0WGlmUjNYYzJMcCs0NElYdkdWWEludnphcVgzMFFQSEVWa01zV0VLUUMxRERQQUdNSE93VmhneUFLblZTcTlNODR3akN6cWlJYldyYU5kcjFEYkg4cnF2OEJGKzkwRm4zSlVHb1BOSUtpek9jc1ppR2FocmJQU2VaWlF5K0JZUms5VFhGdHBnL0xNMktpeitDU3J0MHBPM1VqN2VhQmx2OFVKYUFFQ0xlRHREc1pUemQ0Vzg1TWFOVmsvdGZOb28zUEo1V2VQYjl2MHN6bzNUd25MQkRPSlp5dzFETnQyQi9IaGZORzU4NlBVbHhUdVBkMXJ6ZXYyeWY2NWh1WlpkVWZFNGxSRHk1SGRxTGhLTGpYNCtxbmY2YkxRVnZKMUFsUm8ybExUaytOK00vYzkvMFRuNlNaRnZWK1I5bFkzSGU5ZllPZUVoTGIyc0t0dmhxbXRzTVg3ZlBkd3VqTTlEdU5ER1NCZFI4MzFGdlRzdzdOL0FGaGthdWVKQ2dBQSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI0ODdmODM0Y2M4NmRjYmM3YTA0YzIzOTJiZGUwNzJlY2FmODdkYzExNmI0YmFhMTZjMzVlYjljNTk5YWQ1Yzk1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRU1lVEd2aXpEcmN4Q21nSGFuWjBkcHFQSXg0bEF0cnlTSEpwMitPK1Y1SVQ0SXRzcHZXd2Z5Z3RZT2pxWDcxd2xQdS9zN2pvb0llK0JDOEppNTBoL0phS3o2RHA3ZXV1UnhJRmVQSVdFc21VRXNjeldJNUFvUUJLcHZjL3FXek9KWXlhUlZFekV5NkplNWpPR2czMzlLK0hzWVord2p1UUlLNzR6bHhqV0pBNFpqeUJ3QThCRUszRmtOTmhJUEtwUWRDb3JSaXNqc0xLMWoxbEtXVFRkRnd3VFJEc29pSWpJR2N2WkFvSS9kaS9INTZmdTN4UFg4N3pCTGs2bFd1V09ZZnFjOFhaaUZJRlZZU2RISUJLRW02blN6R3pVR3c2aDZ5RjM1QVcrZXpnY0hyaWpRUS9jZmhBTXA4TVFNQnI1V3I2UjdvZ0U4QVpycGZPTWd4Q25nQUpLWXJnRnpPSkE0OTczdkpVWXJ2QWpHT25GN3N2U3dtanloZ2pKK1BLS1JFVHE3ZlVSQVJTdzJzbjdMMElTejYvUUZHamVyU1pva3YzSGRBbzhCZ2xDKzdVZW45V3A1d0tjUXNXQmhOa3lMMDB1RThQaUJqQUh0VnQwZ0lRb29YbzFyMTg1RUJ1QzhRZkZSMDVGSTRGVzBiTGloVm1Vc0ZpbjFGSG1HM2h5OXBxUHRFSzhCam1uVVRGMk1zWksvWWlsc2J3RnZpQVlqakhXWDNmc0ViVFZJYUlDY2dhcDRKSkloUm5YUnYyYjB6QnZvS0tEZUZFaXFCSVZNa2xqK3VHdnMzOU9qaWRuSHk1dmI5K2QzUlFRV0pFdkVFME4vVnpLUkJ4MU9vKzQ1RFNuZE9oNTd5dVZPSGs3dmp1K0hKL2Q2TC9PTHk4YTFWQ2VpME15UzdtSnNBNVgwSkVJOWg5RTNnOUZiMlEvOTBXdURvblF6SEJVM3B6QkF5dUg0dXF6V3U3K0ZIUGs5L3BIWVU5VmtmQncxSjkyUTc4L0NMd0JEdkFvN1BuZUVQcWhIL3FIM1hCd09CMGNqTEIvTVBJUHA5N0J3UE1WbCs0QjZxa2x4NmJRSktWMHdsVHhXQnA0d2pHVEUxVnQxclUvUjA3SkFtSlZoeWFjVGFFVThJWWdSSVNtSE83bTZ2eWNVVjM0RHNySUdxOWVnTFNjMTZVT3libkJmQTZJeXZrbm0yTVN4dVU2UEd6N0FzOGg4L1didTd0SmE2dzRDWERDZ2sxUlhSZklQTXNVWTJWNDNyQnVoVWhIQlV2bGhwRy8weUM0dGI4VTdCWGJaZHBMNms0eWpJYmUwTnVyejRVNkJGVVJsQXd6cW1udVRpYXZTVGVMSnQwR1RaNFlmNlFNQmEvUnBqSG5WRjhKeU8rZy9WNUJxMWl4bEN1Mk5pU3BuakNFSFNPY3BOcTRudWRGTnZNamlOU0lvaWxVbmJzbTdmWnorQzhGMFNhdFJWYi8wQ0txMFg0Qk9PVkVMazlVZU1OSFd6dzRpRkwyTk9Ga1FTak00RXhnUkUzanFIYmF0YklvUVZOQ2lTUlFZMDdBV1dJcEFHYnYrT3JLcWF6ZmI0RWZDdDdHZEhuRG1EeFhtb3FsVVBPV0VpSjVDczBRU01SbG1ueE5Qblg5M3dsVmc2WUVIcEhZQk1pMTRxMzc4ZHI0QUJhZDNMWkwyY3hwUC8zU3liVlh5L1FMUnRNSXJ2WDB0MlZITVhQalJpVTllamVVY2JQL2ltNVJsS0ltckU1YlZ5eUlYWTFrM3k1WlJrbVRITDM5elRJSzAyU1R0RmJDZFE3YnN2WTFtaTBRTjlnTGZSMlRvdXFEVHBKRlY1UFNxdnlwbTlJdm9TMUtBeUtibEswbCtQbTZiaTUrVFFwdnFGeVVrSitoK1hvd2N6bk1pTHJETnpwL0srS2ZqKzFxVnJDSDVWcDNRYVRVcjFTTnhDMjY3OVQxNE0xT2JqNTFnbGhzeXZVSlRiWFVjOEpGUGlUMXhLVWI3b2J3bUQ2aFpUNUtUS3NMVXBWMjQzVVpoaENsVkxvdkd3WHF4aEhHQ2NVRloybGlPcURuRmZyYmV1OWtqdUo4cDNrYjZ5bmltZ2p6ZWxSODFGQ2VPVzdnYUxiSHpEQllnVnJkZnllQVcwOHJVL1NyaWhwRlF0M3N5clBFNW4wcDZ3K25HU3lPMVRIUEJZank3eVRXOTVvU3pScjVLbDJ1UlY5d2hHRlNtak1PZXpuaXJEKzN2THNVbW0zNXJxZ2ZkbFVjeGZLOVlYVkNFWWxzVXhyV0crTzZLNmhiYmVUNTRDNGthZmxWS0VyazhwUndtMUFsZ3FSYUhlYzZtOEdySXhiNUJPdUhTcWRidVFuVTNhRXRBOEF2cDJOcGVHalNMK3Y4MXlpeEtiaEs3bXNXYUxiK3FEcGIxNzRzdUN1YzNENzIvZTV3TUF5OFhuYzc3WXZEeUpaMk5BNEYrbDcvQUZoQ3NJV1Z3MkhWRFM4WDBlcTk2TFB0cGlTc3I1ODIwdDFzTklBNGU5c1BLWHgwVVNybmxwYVF4ZFBIaEdUSWJQTDY0T1Z0dnZaNkk0MEtGcHJubmJhVisxZmxadFBjNDJUOTgzVytJT3J1K0JXZWVJVGx4bjRiU0cwUVZlQ29Sb2V4cHI3QVpSQjhFNHFOdzlpdkhkMjJnUDIrOGJxM25kWk5sYTQxdHVyNUZ1TU1vMzNNWlUzeUZpeGNVZFlRUGx2WDcydFF5NGVKeTlWODQ5WnovMUVKLzhNYVNYWFMzNnFMTkI3Ykp1ZmFwdlQvb1lwaHFocUZtclV6d1kzVnJFajZpcXJHRXAyemlOYStKYmFWdlNwKzlYRzFVNDY5MVQ5MDlYK3BkNTUzdmdDREI4Ym5UQ0FBQUE9PSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLXJ1bnRpbWUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJkNThlNjBiZGM2OTQ1OGZlNDJhZjgyNDhlMDJhY2Q5MjRiM2I2MDVjODI4ODc3MzUyYTdkOWEzOTUzZTkwMTI0IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDUyOTEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNjFZeTQ3Y3lCRzgreXNFbmQyTmVqOThzcStHQVJ0WUF6NFNXVmxaRWozOVdySmIydEhDLys0b3N0blRzNnRkK0dCQkFrWkZNaW9ySHhGUjgvUEgyMWcvL3VtRFZrcnBQMzc0K09uZC95N253OGl2dy95WmpBOVkvNWhyWkYzRWNRazY1NnFkTkVVa1ZIMUxQbnZkbkMrS3VlQzFwQlRGVmlVYmc2K3RENkVFOC9FTjlIaXUwaUhWT1RqM3RMN0dvN0JBbDh2UXhvTzg3Zi96eDJFWVQrTjFHUGFYMStYajFxU0ljcW1RVDFZaXRyQXRLRW5OdVp5OXF1eGJkWmthaTdFNTJhUWJhV2RGSkZrbk92ZDloK0ZJNCtrQmFRdmVDTEdScVM0MmJxcFVaWTJra0YxV3pua1ZvNmZhWXJBVUpMUXNMcVhFYkZtczFHekt4elh5NmZ5RkRnTWZSamxkNzhnK3NGRzZWckkrY1hGRm10YWtmY1YrdXBTUWZEQmNrVEN4c1RoS1NaV21rVDRmU1pKQnh0OGhmNzVlTDNmYzJvZ1lCNU9hRkttUWlHS2l4Q21XcEdySnVTREFTS214alNHS0ZNNDFtS0FwSitCYnV5U2ZiblhjNGxRQklRWjhZSjNYaUtSd0pJYzFVMXNJMVdlYnZYR3Nvd28rbFJTUmwxd011VWk2YU1YVmRqeW0wL2swTWgzR2I3SWRYOGRTT0pTa21aUE53WWFTWXdwV1NwVldMY0syMFZldG1zdmFvNnk1TktNVEtwR3pRYnI5QW5zK1hWRXNtVGJNNWxRMTFtZ1IyN3dKMFJxYmxNYWZJTkZwTklSQmFxS1lwSFZ1YU90V21GSEhXb3hLK0xsajFuRytuT2Z4T3A1UEcycXRWV2MyenJtV0pIQXVSZUViNVpUejNMUXhrWkFhN3dSajBsUXNhTG1JblgxcFNhWGNVa2VWTDJPVkUyK0gxeUVMVWtmc3JUUnZIWVZha3ZVRlowWWhqSTZSMGNzRmdFVTVveXphekRnalJ2dU1naG5kSVh2SmgrdEVKOFE3YmNXU1Nsa3BsREloWGVKUmhwbzBVaGRJQUZWMVpXcVpVSCtxdGsrdFY3YXFvSXFFRUt6TnRBRGZ5dkIxR3E5U2lGL3V1RG1WekVSSlpYUXRvMGhKdUtGYnNCa3BZc25KNFNneElJMWV1VlpWb3VEd28vYkI2MHhMRTR3bzFzdVdBWXJXb3VueFFjbUNtSXZoWk5CTFNsTWZ5WlFJL2E0cThvRkNHYTBzRGxTNTl6VVRFcExlQUlkdENMWnlHUnplQm95MVk4K2grWUJNTk4xcTVoaVJEekk2Z0o5YVNpaWRaSXQ2Z1FHc01HRjJPVDZGT2xRNWpGOWtlcjBqdXhpMU55QTBkS3Z4RloreVJVY29jSnRuVzZOMjVIMk92bytuSmtUTHlIbkRTU3YxbitvVE1uSjhCOFdIVkN2b1FzZXN3U0VKM1YxVWRDcEljelY2ZENqWWpFeE1qUXI0Z29yRlBLdUFPUlQ4ZTA3RUxOT1g4ZEZqR1hrMXlWTTBuakdaMFVjdGhrSm1LZDVqMWdQR2o4a0oyNnlEaW9SekdUUzF6MVdRRTcwQUg4WW0vTXFIRFZNTU1vYzVOMGs4V01xa2xMbGlJcWlKWW9tQWMxaHUxbXZ2clhMTXNXSTFCWFlPTDh0N3pJSFB4eU9kNm53SGo2QnNCc2ZVR3FWWlcxbHhxOUd3Um1jS0lmR3BncjFCdEUwSTNSRlNOUkhONFFQbG9oRFNlL0JuUm5RbGUyZDA5UTVkM3BRRHo2cmltZ01iWkZiYXVteFJKb3BSR1dPcE9KOGlPTmZydm9ZanZBZWVNTXZ5OVE1ZFFnMFowOFBvTWl1bU9ZMlIwZ29uZ1NCcVNDQ0lvZ1ZHT1VscGxCWGx4VXlDYnhPRFZFMStELzIrZ0thenYwbktRRmNERWk2SXByaFVJOXEvNjA5a1lBV05xYTJVMERpdEdaTXNaUnpYbyt6cVBmWnQzTHJZSlVIRk0yck9Ma1ZCR05WVmNFTzBpdEFORUVZSVorM01CbTZzclRVVTBSTCtGRWlQV3ViaktNZnpIUzdrcUR6aXNXaWxVQVhsY3BhTTZ5V2o1a1g3SG5pbmN2Ym9MV29oYXdpREN4N2lrNHBma25zZUsyOXd4VGlNUy9ZV0FvS1RhNlJKb3l0aVJOVlJNU1JUWjVCYVRaaGtIYmdMRFJwandjVmYvMllkdGpINGYzaVVTV1lJTnoyTGdzT1ptQ3RZRzRQSlR1UG9SdldKcWtWRWdmWUxBS1hnUHdSQjdvcUdkbklldll3WjltcUZQWCtSRTczSlFoVmxJSW1ZVFlNcEs1UVJjbzBPWTRCbXI0cDhqUzNwTGtIaVRJVE10QVRLQW5VYVpLcWxwVFNUOEhsNnpCVFlCSlhXWHFjTUZrRGlROUxPa1ZVeFZlVmpRSzV0Rit5TTNLRWRVQlVEZ2tEL2hrWUovTDRpL25pVCtmcFFXYWkrYUlLNGtXK29sa1BKeFRrRitrTTlVMDhFZUQzcTRpSFRNQmVHUUNvSjV4ZHdtTFdVVnN5bklhb09KVVFWT2dzSFR6bEhlSUdDV0lTN1V3RW4reUpwVFVSWFh3OC9BRU9nZXNnaEpWa0FiNmZyZUh5WUMrdXpBMTVGQkI2K0Fid0N1NU5qRGcweUFocEpIdjVIWmNpZ3F1SnFjS2dRU0pVck9ORHkwa1h6OWFreXdTQkZKUVpvSWhqVFFOOUJkTkhBUXpSNFRDdUFocFBER0lHUmNqUTFRd25ZUVlCaEFnUGM0QXA0bmg3a2pER0JQU3JDY0dSbzVJd3FxQWdjQWtOck5pQjg1V3R6aEJtRTBKaG1JNEpzMmlJUDBNM0ZBRHdtdWpXRmZGZU9hUE91dkNWMTVVeGRpS1BxclFjNnFFZzhvYmlZZHNXUXFPQ1l3SndRYlY1STZLdHNnbFFXOFVZMVNJblRTUWl1RUFVT3NCWUZLWERvSEJ3M3drZUNLeHRFSGh6ZEtrZ1V6UnJSbHd2YWVYbzVuS2x1a0ZBQUthMHpXTkxKb0dsS2daRnJ0ZFRRbE1BSmVxQUdjR1hHVVVBVXNHb2FnbHB6NzFySXhuOFdyL3N5WE9CSTZKUE1pL2tIK1BYeitiUkQ2YXRjNW9VeWxRbndabnFQQzR0YTJaVU9GempFWGFGWkR2UjZ2bDBYVjcrUGU3T2I5SGRmMkZXNjBtKzg5U0t2NjBiN3NKdlUwNE5KRGdLRTlUUGo5bnA3ZkhuWlhjL253N3crVVkvdnltMStMZWVmRmplNHQzR3ZkcFBWVHc5MlpUek5uMy85bUduSE1sM0hCanQ5bGJkVEI3MXQrWXMzZGdYNU9jaDNYdnhVeTNIZHdHeFI0WHkzNjNpWWQ0ZXh6T3V6c0xlN2Fia1Z2RXpGNytDNTIvb0FJWm5IOHR2N3hqeVNoa1djLzVjbngycjVadTRZKzdTYnduMFZmbUNRYVZxZnVMaDNieC93OUhxNW51MEs1ZnRIMjVQV3htMzFhVnM0b3NNanl1M1ZFOSttV2VhdnkwRHZ3M0JaOHVIMVUyQ24rYkNXVi9VS212dnFoVTV5K0wzUDV2bnd2ZGl1NDNUaGV3bjMvaTI2WmYwcGsrOGUzdFlyTDJKd3BxZCtXNGNSdlo2WEN4bmVOL2ZnanJmNWZzNmxJeDlydTZXS3YzeHlUOEFPWEg0Y1QrMjhOUDF2SFd1Q1JoN1Eyb3VNWU1zdGxKbDdOaDZSNTIzNXh3T3VESTgrd0pIc280Qkl6LzN1Kyt0K3ZuN2J4cTN2ei9jdmZ2cjJRRUpHKzk3TDhqY3NiaHN2MWQ2SUFZUnpxRSsvbWNCOU5rQUNZRVZjRGlZV2lob0tpYXNGRmhKSTBRaGtLc0Rtd21lNzFEV3Z3ajQ0YllwRXBZemNSM2ZvOC83OEM0Zjd0RmY1SW9jL0g4YjVPdS9YSldUcTl0UCtQSDNhNFRJSE9YTnFQODIwdjl6S25lNlZnVG5BbFp1YWRqbkJpdVlDazFrTGRGWkRKbExvMFZWVG9kaTRXVXFBUHdmNU50eXlZYytlaU9iM3RzYVZWek1rNVhscmplc1FyZ0xkRVVKWkRBNkNLeDlrMEZyam9KRU5yb0JoS3pSRUxLTGlFVll1V0RZbENvQ1U0djl4YThUclJYeCszdHJBN3pyWUR5aXFnaGtBbk04Qk4xRUVBNitKdTVUR3RReloxaEU2QXRzSW40YnJLZTZGTVBxNEhyYWx1aXZKNHlwMmtWTy9RbzkzOXUvOU94MmxJaW9lWnhpemRUUXd1VDNpZjd6KzlWLy9YS2RJKy8xS25BdUZmSnJvOG5uMUNLb1ArZkxremlGNGQxMjR2UEtGTUNuVG5ib1dTYVB4Q2h2NDRIR3pSTmNiY3JoN2p3RVR1Z1d5Tk9qV3NmMmljK20vdWZyZUMzais3YWx4aFJrMzR0cGdlYVgwWHp0bHFMMXEvZG9iREZReTJnU1pGSThrcVFZZkQyOFUreStJTWl4QXR6cnJyMFdPM2JIMnJiQWx3M2JNVU00bGROZjVnUTVyNm9ZMWVtbTNtUmF5c0k4MERmLytlaDIySXcvejhmelNlZUE2M2FUYmRaUmlYbm5uNy9qeGh4Lys5bUVodmcvR2Yvakw3ZE9IUHNnTDNjaTFHNEdCbUlFaW5kVWFOdW9RZmVZNytRd2Q2OTJUYm9ySEt0TnduZ2Erd1RNZDhYTi9mYmc5UWZ6bkQvOEZlL0h6N3FzVUFBQT0iCiAgICB9LAogICAgImNoYW5nZV9ndWFyZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJiM2VlMmI4OWRlMTRlMjA0ZWZlZGQwMTZkMzkwMGI2ZTMxZmNjOWYwZWEwZjMxMjVkM2E0Nzk0ZDkzOGNhMjAxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDMxNTMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNlZYMzAvak9CQis3MS9oNHlWQktxVk5mOElKNlhaaFY5cUhSYXM3amhlRUtzZWV0QWJIdG13SFVhMzQzMitjT0cxcEM4ZmQ5aVdPTXg1L005L01aL2ZvNk9oUG9QeEVLN2tpOEV5WkoxZGdwRjZWb0R5aGloUEtTK0djMElya3VsS2NXZ0h1ZDZJMEtTdFBmWmlubFY5cUsveXFkM1IwMUJHbDBkWVRwczJxSFMrcFcwcVJ0NjhQVHF0TzUvT252NzZRQzVJVTJpN2dRZmVZcnFRdTg1N1RURkI1R2w5UGhVS0RFdmdKQnlZQ2pEL2NrbWJqeWZsME1tVER5YWlmc1ZrT1U4WkdiSkR6QVowTUp0a1FuMFZ4TmhoTStEakxSb1BaZERyS3h2bG9US2Y5d1l5eC9tdzJwRW5uOHRQMTFiZXJUemUvQktNWWoyZXpZblEyeVFkRk5wbnkvcFJ4ZGxhTXMvNE1Ka1ZXNFBiRmRKUlBoMmNzRzU1bG83dy9uUFl6OURJWTBqRk9KWjFPaDBOQk9CaFFIQlJielkzVkQ4QkNhbE9tVlNFV0pUVmRZcDdZOFhtSDRFOFVaUE9odHdDZkpvOUM4ZVNZL0lhQlhOWmZ2bE9URUczSmpwMG9BMnU1QkRRV0RsbjA1TVpXVUx0dGY5dXI3cElTUE9YVTArVCtMbEcwQkdjb2crUyszbW92S2NsL2NQU1dqeE5iS1M5S09KbXdMRVBxWnJ3L0h1dzVkaGpOVG15MTh5NzUrWEpjSitKbkVoMzFRcjBsTDI5Q2ExYm5RbEc3dWdvK2ptT2V3ODlTNFlEY1VsbkJGMnUxVFpOS3diTkJlb0NUZFRaSjNDbzZKUUtKOU5nUXlmR2FNS1J2ajZvZllKMXdIbTF2dGF4S3VKUlVsSHVoNHNwZnBlR2dpemNKcUkwT3VHandPK3o2eWpXSmJtWU05amZFa0Q0SGpkaGJIT3BzNHdDenQ3MzhxWTc5T2lENmNPWnJLU0kvYmk4SnE1elh2TTEwelA4Rk9kUkQyeVk5bzAwc21lM3B1NFJScFpWZ1ZNN0R4M25UNVppcWkxYkZlczFVR3FxcXg2dlN1SFNOZWF2Y20weDNpVVBGbXovQ3lsMkVSc04zTU5SU3I2MjdTSk11NWlFNXg3QjcyUGlhUTRxakpUeHpzUURuMHdhWUJWOVpoZVc4ZHA2Y3g0MXdNV1lWWDdlaURUTFJ6TThiWHM1YlVsNmkwckFsc01mNVdtOVF6bmRrSm9Da0V2aEdiajRrVG9IL1p1RjdKTzUwQ2haSFlMRnRtTk5JSjRLa2FnSFlLQkgwMXJaUHdWdkVWbytSbTNEYTlEaUFDWU5vc1RGb3lGNFg3clZXOFN0V1BrRnVpRkFFa1lIVGxXVndHN29TbXdpenVBQUZ0ajdrd2h1elVJOXZFRDg2SzAyWUxLbWlDUFNyQU1sZHNsVy85YzdiWFZlandOM2VCUEJZNVJpaTdJV25WZURCOVlRK2xkVDVFMnFNRk5palRkYXFEU2ErUHF4M2xsbDRhclRnWFVoMUExS0YvVmw3Yk52NkFOSllocldMVjRYRUttdHgrelErOTR0bnUySWFtdytXU21OQnBIZ0M4dmUzcTQxb3gvajNpcVFCRkM0c0hrVWliUWM3a05ZaXNsczIwYXFWQTA4RnN1L1FyRjF4MTJnWDZxZUgwa2pxSVl6YnVjMlM1TDZOWFVMZEpuRytqbnNRNDRoemQvMS9rZVBrZ0wwb3NlYWFCZUVhOVZIUlJEbVE2R1RqYmZlZ2VtT2JDN0srS2gwZ3RVMXpIVjI3Mlh1UU5qZktTT0FPclRtc05LcTdYd0txSng2dU5ReGloRm9UN1MxVkx0d2w1OWkwbGZRcFBBcy9Ed3JhSmJyeXB2SnQrVzNkT01PN3Q2dWRkc0RnYWlXWG1uS1h4c1d4VGhnWVQ5SU45QzY1V1psbXVIMVF0UUpOcFp6WEplam1oanFIeXZ1VlNvZVFVRnBvdUlPY0IzcHhWOEUzRVpBbWduZy93Y3l1UXducDdMZW5KNWFDUXMxUkRCcDE2eEl1R0RZU2ZtNGtydW5rSFFTdkxubi9FN0ZkL3owd0Znb3BGc3VBdWFnYzhBajZsVFQ4QTFNSkV3bFJEQUFBIgogICAgfSwKICAgICJjaGVja19pbnN0YWxsZWQucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiYTM0YTUxYmU5YzlmMmIxNmEwNmE4ODE3M2I1YzZjNDkyYzk5NTdmZTAyMWNmNDEyYTg2YTE3Mzc3MzA2NDBhZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxOTEyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTRWVlMyL2pOaEMrKzFlb0owcGVXcHNOMnFEUWdvZHQwQjdUb3ZVdE1BUmFHc1ZjU3lSTFVrN2N3UDk5WjZpSHRVSGFYZ1EraHNPWjcwR3B6aG9Ya3NyWU0vL3FqZVpCZGJCcW5PbVNXZ2FnV2FLR21Ha2VRLzR4ZWd4VHVqR3VnN3Fzb1ZKZUdaMWIwNnJxUEIzN0k4N3VXd1U2OFB2Zkg3Wi9mcm5mY3Qvdk94VUNIVk5QNE1QS0tpMllQOGpibis0SzlvSHQyZnJ1eDVXRHY4VXJVelVybU9ya0UyeHM3Nnp4c0duVVMrZ2RNTTRDYUtrREJneUR3cll5VUVHNGhYZDhoUXIzeGhUK3JNTUJXNmpvMk5rQ0xZRTdxZW8vODF3NGMrQk43ekJzeXRSQlo0cEZEVU15V3FWcnp6NUFSeVdQeUd3bVpQN25HbGtGQ2lyd3ZpZUZPUnpHVjBZSGVLRWVMcGRWMVVydms2MlQyaE8weFNxcG9Va1FwQjRSVEQyMERWOUw5K1Q1ZW4xOHBrR0dJWWsyejRJb3krbVRacDhUSDJSblJTdTdmUzJUVUV5ODVrUW5EZUorR21hZTh6NVVXYTY4b1VKbFNETk11aGV2NnpXcEpxOEJMQTNTMTJPQnBUd2Vkd25HSlVjVVJwSk8vVjdKbU50Y3dIcHRNN3RrdEI0YkdwVkJMTTJ5QUpKRlREYXE1MjNzVzEybEdKQmRzR0RWSkFSUVBpcm9COEcrL1BMWHJ3OWJWdXdmMmJqSWRtSVpnNmRxOFZZN1N6S3Bhb2Z0bENkd2NhbVk5VDAzUWFjSkZrcXo0d3lhSmtxU3liWTF6NWdEQWEwT1dPNWdtbXNtZHZxMGxIQk1NYzEyUzBuR25YbUtXM3VsYTZXZnNESE9XdFZFYmttNVIxd240WVVXRTJzVHlqMGdVYmcxOEkweTJYeEM5T0hGS2t4WHlyRFkrWEIzazZGQ3JUTW5JblN3d2xpeWxkVVJ2WW1wcjQ1NHY1dnZEOHljb2ZYNXFIbDNMcjJXMWgvTXUvUlhBLzF3a20wdmczRjBad3N2RzltSHc4ZnI3Uk5GNWRENjNFVjJJU1U0d0RDZDNON2M4SHFGMkZkSEx4NTNLeEx0U1B3ZzNWRWZuRVdweW5xUFplTVF5TlVWZEJCbDNlc2pKa1l4UEtCUitHK3k5Y0J2K09PT3YxN0lmRUhNYmtYbmhVbFpZbFpZSlpidlk4b09JVmhmZkp5YXlaWEdYbEU2ZkxEclVvaEd0MmZHUnpERkZmd1JkQkV4L3g1clFWQ0hxU0lSME1sR1ZIa0VJVHBsUlQ3NUZ4U3lBbDhmd0JmZDVBWmZCTk9CRUtPTVA1dWM5STY2S2F2ZU9lcGs4ZUpnVmtCYzNqcyt0amYvTzFnaWRZMFJNNFAwVDBxVVR3aGVSQ3V5bFV0clFkY3B5aVVkYThVN3JGTjRMY1huZGQ5Wm42SnpOVkxmdHVpdStQY294K0R5SkozQ1Y4bXpvZ1dkRGttejJUZ2xQWE9vZitvTTBERzMrR1RWSjN6K1VKekdsWjFzeHgrZWc2YjNGUEV6djlKU1JscUtyZXNCWFNhRE91RzlhQnRWNDN0ZVJJRmNzTnB2dldpbSszZ0hBQUE9IgogICAgfSwKICAgICJmcmVzaC1zY2FuLWNvbnRyYWN0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA5NzMzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcxYVM0L2p4aEcrNzY4UTVwQ1R4ZW4zWXdNalJPQVlTQTZHRHdaOENBS2huelAwVXFSQ1VydXJOZnpmVXkyS0VzV1owWGgzeUFDenMyRHJxNnFQVmZWVk42bjUvZDFxZFZkc3pVTzRlNys2aTNYekVINnJNMWZ2eTNwcnM3WjJoU252VDVmM1JRV0FiZkJySDF6UkZuV1Z0NCtHY1BFK2NxNVVaRnBZSEltUUhrbm5uWTZjSUJWRUpKRXdIQ1d6a21wSHFDYk1JaW9SQVMrWUdnNUxkOStkYVd4Y1hjWGlZVlA0Uk9qa1h4QmlnM00wV0srbHMwSllFYVNqSWxKdW82YllTUERsTlJQTUNxNDR4b1E2N0p4eVdpc3Z1ZTM5K3lKRzhOdUM0My9EOWVyc25qS2xtTEUyYUtJRWpTNW9Tb09IQU5xaGdCZ1hFQ0dpNEpYdzNEbmtvL1ZSUis4TUk4SUY2bzd1Uis3Z0F4dUlFMEViaHdpaEVuUEtPZUZVd2orRkVVSk1DVWNzQS9iT0V1SWlsOWdLbzdqQnhQdUp1d0F4dlVIUlJtRTU4NVRSZ0NDaFhIZ2xCZWZVR2k0OVpGVjRpVFhjUHJQVVlCZVlqd2dMS3NURUhVTmFHWThvQlVJRTdsWVRvNHgySEN0d3BnVWkzRE9Kc0FwSUtvZWdvTkpyNTdsSWljRXhob203cUMwREJ3d1RneHlTaGlrZG1JaVdld3RGMXg1NXA1aG53VkVBcGFRWXF6bkZrYkdBdkk1NDRrNHd4VGcyeUhzREpmR0lDWVVESlpaRCthR3B1S2VHUldTOFlsRXFHalJQQlNiV0NTMElndXBNU3lFd284aGdqS2tXV2pKcXRRNVFFRXRRUklSNnptQlJVK3VpQnM0YXlxeFR6U0MrZGN4d1BYSG5vdU1hUEVubWhZd0NXY1l3ZGdSUzdYemdxVXNsSmlGQW8wdmhQTklNR3lJNWhudEJSbGhFSnU0STVGTmpwYUFIdERPYXg2QnRBS3FjUjRtTUJWR0pvQmd3cHRSeUFpYlVRKzZpcFZaeUV3eWR1TU9ZS3d6WmdwNjFQdERBb1JnRXcwMVJnZ2hrbnhMb0ZTQUtYUjZ4REFwQi8wQXFpZEthSWVtbmpZSkEwWXdnTEduU012d0dPVVB4SWxRSEdpaFloWWl4Z25rYzRDNGp3OXBFakswaEZCR0xlREIzNE8wL1Q0WGQxSFVYa3daLzc2TjFoOTF4OXBUbUVKcDI0UEJFcTdPcmRYYTl6cTdZMlRVN3UycG4xKzNzeXAxZHU3T3JkM2I5enF0ZzBERDgvbU9rNDdiZU55NXNTbU5ET2RJeEhCMnllaGNxa0hsbmlncTBuQjN4bVRWdHlIenhFTnB1dEtWTFFXRURaNGc0WldFdmQ4eGg2N0VSV0VCeG9acVFXZ3dDSnFBYkpTVWpITlJuVW8rRHBKV2laaGdVTDRadHdzZmpHU1hGaEc2M0ZrUkNJVElvS1hCUUpDUVFGQUFrdUNZZUpNTlZ2T3dleDNQUCtSalVoREtrbTJoZDNjK3FmLzcwNHcvclgzOWV3MlRRNjE4UXYvOVNGbmF0T05KNDNlQVh2UFI1eXhMUjhMbkwrandrYjQ1ekZnUkp3b21VSVdjTkJqMExiV0NXcVNnOGNxQi9BdjJna0lVREZSeG9CQStFd0FuS1lnS0Z2eDF2VjVlRk80ekNhWmlWMkFZRzV5aXN0Y2NzZ0RDaElUMlBpbXNPSXVjV09XY0JwaEF5TXFhT08vWXZUd2N2Y25mdWgzcFUvaC9OdGlnUHliOHBkMUNIZ2RSUFpudE1HYzBJeS9ERnRxZytocXFybThONXdwL25mR21xaC9YdXcwTjdhZWpkb1h1c3E3UjRXZnY1OEs5ZmY3bGNrZ3p6YkRTWUFQdCtkOWdWOTd2RGI1KzYvUFJ4MzlIZmZWTkFGMk54RmUvWmNBbVY5eCsrS1ZoejJIWDFRMk4yajRmTEtrY1plajdxQ0o2ZlVHOEovK1NvZi9rSVpTUkR6MUI0K25UUUk5OUNZM2R3TzlPMG9ia3MwV2VEbjRFNWZXUElUNmJvbXRDMlZ4RXo4a3pNQVpuM2dHZUQxdTBrNUpVNjREbzdjV2oybFErN0VSQm12a0FhNFF3aGpJaStqbTkySCs1N1QvY1RCL25FN20rbWNZL2ZWM1g2N3krK2FMdW0vdjZpeFc4ZzNGK3YwMVNISTF1OTc4YUpraG01RE1DblhKL1k1b05KVC9PekVodkJscUc1OXFZemIrRjZkTEE0NFEvaE1HNkNUS3diOUJySFpKUDMwS1ZvbmJiQWNmNlMwejlCN21TWm53M21wN2o3c083cXVweEk5bmJtQnB0OGdNNU95KzdiZzYwL1h4WndSbVdHMWcxOXVlbE9OdmtGdWhTdHRTMnE5dkZieVBXV1MxSjBadTFDMHhXeGNLWUwwNWtvOE0yMm14am5JNXVsaWE0dHpPQXl2SW52eWNlaXRCKzgzWTRyVDI1S0phSHpFMmgyS2pDNjlsMVJ0bXM0UUxkalRpS2o2NGE5U09yS0xoL2c4OU5yTEYrbkZ4ZGphdEQwNUdWaWcwWGVBNWVoTk0wV0liYzNzN05SZnNiT1RnemNROFN2bU1HOXdYSURHUHpiTCtTcWNwbGFOK0lXSVRESUI5d1NoRnk5M1lTbUdaTmlNbU92cE9sa2xaL0JpMUE3UGtMUWNRRjV5c050WnIxUlBtQ1hJSGIxMkpVQzNXejEzaUFmY0VzUUtxcXVuQXlFbTBsSytINGNMSktmeXUzaHlhZjlkRmtVbWRqc2pqc0l4NjlKY0xET3AwYUxVRzNMOGVFV3BRTWh1Y211TGZNQnR3U2huYWxDK1kyWjYyMy9MM2xyMi9Jcmhaa3NGbFZsVnpRN2QzVit6UGdydWp5YTVBTnlNVkpQTnV3L3lXell0cGVqdDk4WGZ0ei9qS1JqeTAxbXlTUS9JNWNnOVJGT24vWDQ5UTVOZy9PbUtvOG0rWUNjbmRSMjMxN04xK09qN2N1RUVqd2ZVSXVRV1IvUG1sOUpxVGRhanRocGNLKzcwR3pUdTdmanE0cHZtR1RQK2xsK3FqWEIrUEpxUlVFLzNaVERZSklQeU5sSnRTN045TW53MExjNG5TenlBVGcvcGYrV1JSY21KMzRZVWZUMnFYRmtscC9SODVOcnk0MHJpMUIxWC9VbTRXSzI1R3VFN3N2MUs3L1V6ZTVXem5xRGZNRE5UdWp6bDBrWllYZE9mZnd5bzVORlBnQm5wNVMrdUxydTlwdUg2d1RQQjlTclpDNS9BREI4MmJNQnRkUlY0VXk1dVh3aGhhUG5ObHJpcFVQTVNJcUZJWW9hYjROQmtiT0k0TWR4NDZ3bFdGbU1BMXdKS1cwTVNqb20rcGNFZDd1OUxZdjJNZmhOM0pkbEUzWjEwNDJDa0JpRkNsSndxNTNnUkJPQnNlZEdDdzNsTnJET0JKVVlJRDVFRjd4eDNCTW5CV1VJYWJnTW95RE9kRVZkYmJhbUttSm94MEdFTmNSUmhpM1R3bGdacFk3YThlZ3BOUnB1Q1RzU2xVOWZSQ0tzRExNc0NPa1ozSTlKTU92NmwveDM1NjhaLy9IWnVHNVZiTGY3enRneXJNNjN1RXFaTHo2R1ZlRWhyMFYzV0puS3I4NVovdXNxRnBVdnFvZDJCUnRSdDdKaDVSNkQrNUFNcS9CcFZWZXIySVQyY2ZYRDM3TzdkMys4K3gvTkpHK2NCU1lBQUE9PSIKICAgIH0sCiAgICAiZnJlc2gtc2Nhbi1yZWNlaXB0LXRlbXBsYXRlLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiOTJiYmY4YTg5MWM3ZWY3OGRmNDg0MzA5MDEyMTlkOGQwNzA3M2NiYTc0MTEyYTMwN2E2ZDhiZGVjNTA5ZThkZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA1NDksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMjJSd1k3Y0lBeUc3L01VS09kMkp4QWdzS2MrUk8rUk1XWkxSY0lza0ZGWFZkKzlKTE90VmxXUC9QN3g5OXYrZVdGc2lDdTgwUERNaHBETEMzM1BUNWozbEZmM1ZETkdTTmYzNXpWdTNiQ1MvK3dKWTQxNSsxSy9nVkQ2T1NobFRKQldPeDZFbnYwNG8wY2JsQmdONlNDQ2tEek0wczJUUlRGWklkMDR6YVBvWGZnRXFrdkRweU1HbEJZRFlGdHEzZ3ZTVXVoK1VvNWsxa25uaFBKVHgxa0RwT1JFTXhrd01PR2tyUENkckV6QVI2ZUtzRzFVam8vd3VrTWx2TFlTNzI5LzhtcmhPR2xGeG1qclVEcUpHa0FHRUU1d1pWVzM0SXdpNkpFYnNONkMxeHdobUptYkdiblY5a0VKZTBvTHBGVHBUaVcydCtYQWRtWXJPNTJHTFM5MXY5MEsxZmN4L2xib1Iyd0xabjlzZmV0dFRoSHpla3ZVeUMvUVB1cmVMU3MxOE5EZ0gva3h6a2Z4ekZUb2xrdjdUM1hMN2J6elYrb2thTVJpWlYxamZlazdKTmIzN1dsRFlya3c2TG56SGRKdytYWDVEVlVOYlhBbEFnQUEiCiAgICB9LAogICAgImZyZXNoLXNjYW4tcmVwb3J0LWZpeHR1cmUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzMDYwNzA0M2E0Y2E0NGU0MjAyNGI2MzY1OWFlMTA5OTNjMTRjN2EwNGU3YzU2ODUyNTVjY2FmZTRkM2ZiNTVjIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDExOTQ0LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWYTIyN2pSaEo5OTFjTTlMQlBJYWZ2N0I0Z1dBWVpCUEFpbXgwa2srUmhzVEQ2YW5OTmlWcVN5b3dtbUgvZmFsNWtXVnB6c2hicFBQaEdTZWZVNmFvNlhVMzY5NnRYcjFZLzJUdS8xci80dWltcXplck5LL0pWdlBwTjNSWkIyL2I5ZnV2aDRzcFdtMVlYRzEvZkZHdDk2MWZkbS83dVcrMTBxK0VOdjhQZmNPVTZ2bmo5Tm42aXVkT0VpemVDRU9PdHBkNDRsVmtqaEJFK3MxUUV5azFRRk92TWVlc1VFOHdJTGpuR2hGcHNyYlJLU1pkeDB6RUI4dHNpaE91M0RTRC9zN3Z3NnNCQW1aUk1HK01Wa1lJRzZ4V2wzZ0dIc3NnanhnV1FCT1NkRkk1Ymkxd3dMcWpnckdaRVdFL3R3SEFFQ0M4WlQ2endTbHRFQ00wd3A1d1RUalA0a2hnaHhLU3d4RENRWUEwaE52QU1HNkVsMTVnNGR3Ym9nZGRwRkV3UWhqTkhHZldJTU15Rms1bmduQnJOTTBjVkVTN0RDbGFCR2FxeDljd0ZoQVVWNGd5UUlTVzFRNVJDVUFRMEs2S2xWcFpqQ1hCS0lNSWR5eENXSG1YU0lvTkQ1cFIxWE1UbHdTSDRNOENnREFNSWhvbEdGbVdhU2VXWkNJWTd3M0JRRGprcm1XUGVVbmhUWEJwdEZLYzRNT2FSVXdHZkFRb21HY2NhT2FjaE9RNHhJYkdueEhDb2hReENjVlN6Z0xTVExHU1Nlc1ZqdG9teFFnbUNJRS9uU1JHWVVhUXh4bFFKbFRGcWxQS1FHa05RUUlRNnp1Q2lvc1lHQlhFclNMbUsyWU1JakdXYXF6TkFHeXhYZ0pVeEo3SWdrR0VNWTB0ZzBhM3pQSlp0aG9uM0pxT1pzQTRwaGpYSk9BWTlTQXVEeUJrZ2daVlZXRXFvQ0dXMTRzRXI0eUZjemtPR3RPRmNDaThaUkUycDRRUStRaDJzWVREVVpGeDdUYzhBTWVZU3c2cEJGUnZucWVlUUZvSkJHaVdJUUI0b2djcUJZS0h1QTg2OFJGQk5zS1JFS3NWUTVzN0xCa2xJR0VFNG84NnFBTjg1Z2NBZ2ZScEJPWGtqRWRGR01JYzlhQTBNS3gwd05wcFFSQXppWHE4NnZIOE5IZm1Qbnc1OUQzOTlwOWRGdVkrTnI4c3RHTVVEK1E5NjNWa0lUUWxMY1kveCthc2p2L2kyMm9UaTloaXNycW8yTkVkWDRGbzdPRkdwOStCVkIzaDR4WUUxM0JUdTJCc1c4WWRGUEdJUm4xakVLeGJ4aTBVOFl4SGZXTVE3RnZHUFJUeGtmaC9wdkdUNDdmUEJMZXlwR2NDMTc3WHg1V003Z0t0VmZadFdXNzg1akNaTjJzMG1xZEdOVDExeDY1djJhQkRKQklXeGd5RmlwWUVKeERLTGpjTmFZQUZWQUdtSHRjZmdBQVFhVG1ZWkl4eGFWOGZHQUUrUWt1ckhLL0VrZWUxL0s0WkphZ1ZOWWd6MEZ3VithRUxQb2FGaGphRnhJQlN1aUlOdTR6S2NGbTVsQzEybXR0cVYxZG9BWU9tam9NWld2UUZlLy9EZDIrVFhkd2xZakVyZUkvNzZVMW1ZUkhLa2NGTGpTYXltMnRYV3B6Rm8vN0ZOKzVYcHhqdk9tUmNrOWwyZ0RGbWpNZGlDVUJyc1VRYmhrQVViSVZBK0Voa2t3VDI1NEo2UURCS0tDZFRKSDJIZFZtVmg5MGVrQ2t3WUc4OWdLc1JLT2N3OGREZFVzdU5CY3NYQkxiaEIxaHA0bTBSSVp5R1dhVmY0UEk2UjVLR01QbDhkLzR6ZnU0SmEvZWliWGRrK2JBeUhEZWJiVWpmeDhxcHFrdTM5N2NOMnNob0gzdE5kN0oyMjk1RGZ4NXZNbzNvYzk3bDB1Mi92cWsxUzd6Yk9iNXZIUy9Nd1o2K2dBUVZTQ0tjSVlVUk9qT2JhK1ExTTRJV3ZUOG8raHZMemo5OUhBQWo4amQ3ZXYrNURmWDNDbTUvZy8xWFg5dTdyVFJWLy9NVVZUVnRYWHg5dnlZOVg4cWdsbjVEWnN5YXgyV0JMcm5idGswSnBtcVhrckRTZm9mQ01NaCtoZTNFZnBiZ1JiQkZ4U1hmT2VYbUZIZS9TTXUvOWZxSk1VNUhVYUM1bGtTcnZJUmNTTS9qbFJLNGl4WXlTQnNMOEFEeTdzTzE5MGxaVjJVeG9Rak5sYWFUS1I4aTV4Wmhkc3pmVnh5ZWw0SlJtS1VwcWVua3pEVlQ1QStSQ1loSlRiSnE3RjVUVUV5NG96T3JFK25nTHFMQzY5Vi9Zd3dTZXBaMU9PUE1qN0lYbEpRYTJ6TkwvR1NvSDZpWEYzanF6bnFoTk1vdHhSSko4QUp0YkFPd1p1N1lvbXdUbTNHWkNpVWhwVXJPTHBUeWl5MGZZMlVYVmhpZnhzRE1oQ0ZxYlhDNW5KTXA3d0VXRWZDRXpoTXd6SGgyNDhnUG0zSElBSFFpWDMybDduc1cyV1lBM244aFViYVV5cWNVY01vQW5IL0VXa0dHcjlZMnY2d2twTEV2WlRDa1p5UElENkJLQzZ2MjJyZWhFaWZHNGx2UG82Ym55RVhNQk9TRVVrMUptYWZ5ZUp4L3hGcEJSYk5weTJvcG5TVWlrNlkxNGlWeHM3SzV1ZlBQaFNTRWlGVGZiYnRiZ2VDNGJHMG56VS9BbEJEYmx4RUVWeGVNWG1VVlRVK1lqM2dJeXRucmp5NWZOVWsvNUVqbHFtdkpsekMwU0xlbHNiVkZ2N2RTcEx1VXplVnZIbEkrSVMwbjUwcmc1czU1eDZGeE0xRzVYdUFrM1lDUU83clBvaVV6NUFYRUJLYi9Ca2JCNlVndUNOU1F6T1Z2SGxJK0ljMHRaNzVxcFhiUzc4WGU1ak1pU2oyaExTRWk2QStETENPbTVGcE16N001SjYrdDFzUWxWZDIvNTVYYWUvMG0vK0M1VWUrM0s0OGMzcHpvbDFQOHM1akF5NVNQaTNGSWFHemZ1YWR0V2N5Z1ppUElSY0hZaC95bUwxay9mS1lDdGdzNXpsanRpeXcrb3MwdHF5aHRiRmhEY1M5ejdmV0JiOE1adisybnlRVmZzV1R0SGZucWVmTVNiVzhiSFQ5T0ZCak5qN05iTGRReEUrUWc0dDVENGJIK3k5MmM1WGtlV2ZFVDd2eVZjSGY4dnh5RG8vRWw3cVRlM1R6eHJIeDVjdzR2UGVkNytidiszWDk5UHpJR1lwODljb2UxK1c3emU3di85b2MwSG1PYzliWmk2UlFMQUY0VVh3Zk1lNUhuQmRYZUlibXU5dmRzLzNTNG9ub1V2aWZLSUpSL1FuaFZ1bkNIcXRYZUo4N2IvUDV1bmgyWTR3RjhROGhsVDNpTStLK3p0M200MURFTDExSTNsaTRwMHdJODNsSjhYNGdkZHRMVnZwaDh5a3d0aUhBbnlIdWlQZU1sVi9PM3oxWDhCbXJ2TzRhZ3VBQUE9IgogICAgfSwKICAgICJpbnN0YWxsZWQtemxpYi1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogIjZhZjYyZjg2ZjUwYWMxODVmYWI5NDE2M2MyNGFjODE1MGVhZDY5ZTYyZjhkODI1YjBkY2UxZTc1YTVhNTdiNjgiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDkyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTMyUVRXN0NNQkNGOTV3Q1pWMlM4ZmlmVmU5UlZkVjQ3R2xUQWtHa2JFRGN2VTZncTZxMVpHdG0zdlBUWjE5WDYzWFQ3K205Tk50MUkrUHB2WHlPTFkvbllkeW5kaHE1cDZGN3RGMS9xSVo5eVp0Y3VKLzY4ZkE4ZlJCYXR4VnJReEFUWFZLQ3ptZnduRG1LUlFqRkNRb2FKZDRrcnlPamptZ1NhQTlZVTVRbVcwZk4wNHh4R2ZyMGRpVGVQV2hVcTF2Y25OUmRsWDRvVXgxZmExUGI2dTNvdU92eWpEVjkwVENVWE5XWFJYM1lsNHZ6TWdnLzVlK2lFUnZCTzFUUmVRVUZMVU9KNGpFVE9JTk1PWkRObkFpSVlyR0JvTmJrckFzbXErb0YxU3hCci9lODVqeWR1aG11N2t2OXdIWjV4ZDlrVWY5RFZwaERpbG5ZMkpLOEVNWmtGSWdRazBQcmc5Y2hRaTVXcHdCU292TGFldTJUaWVBOFc4RUhXVDF2cTl2cUcxekxML3JzQVFBQSIKICAgIH0sCiAgICAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTY2Mzc5OTRkZmRhZTQ2YTZmOWFiNDQyYzJmZjliMjU5MjEyNjUwYjM1ZWI5OGQ4OTZjNWU4MzdmMDFjZTJmOSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMTIwOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMWNXWFBiT0JKKzk2OXc4WFZER2FSNGVsL1c2eHlUMnZnb3g1bXAzYTJVQ2dSQkNURkZjRUJRaVNibC83NEFTRWs4SUluMjVwaXRaUjVpbTJnMkd0Mk5Qb0N2K1BYazlOU0FhVHBEQzR3ZWlsa09pOEk0UCtXc3hDL2tFSTBLekZZNG5rRXVIaHMyc0QzVEFxWmwzWVB3M0FIbmxqdHhIUkQ0emw4QU9BZkFVQzlsa0pNVkZpeGhOc2V4ZUMrQmFWSHh5eG5sR0hIQk1JWWNSckRBTTRaaG02YkFpR0hlZng3alBLWHJKYzc0Ykk0enpNUXNOQk1VdHF1R0pmMWF2SlduQkVHNUNLdm1CbE14WFNvbDJuRVF3MS9GcUZ4OFRuN0ZyS2hZaWIveTRteGxxWFdJd1FlU1NSbU1sN3NYNjVFbDVsQXVZY3RJc3NveXlwVlVSZU94SEdCeml1S0ovQ0VVOEdsQzZCbG5FQW51YzVPb0NVaVdVTGJFc1JsalJLUXc1MHFTM2J6blBZcXozcE5hTmpWbGIzQ0NhSm5TWlRRcEtDSXdQWVB4a2hTTlpUTXF6UHpYMDdmWHIxK2F2OTJhQUFEL0ZKVmNQR1ZHemZaeHcxOVllSW0xWWhzdGtpS0g2QmhkV1NrQXVrR0FMUURORU1TMjZRVEIxQXg5RjV0ZUhBZFJrR0FFUTd1U281YkNLSEtNbXRvWEs1Z3pYQlF2aFIra0pNUHZNYUpaTEMzaEFiQ2RydXNmOWNPVmt1b1hVbkRLMXUvSWtrZ1BzWGF2RlRnVmJrdFoyNjVMeU5IaUhZeHcyamE0Y3F0ODhsQkdtR1dZNDBKYWZML090dTg5OWhSZENEL2hlTDV1ejh2WHVXSjFKM2VLR084YmlPTmxuc3FSdHJ4OXB6M291Ti9OazFyQ3FsbFNuUmExZWtSMG1kT3Myc1BLY3ZpejhlTFlTd09VdjFOL1M3YXVuMVVUaU9Vc2Fabng5eUk2RW9RdkVKSi8zZE1IbkRWajF2WUY0WW9jQ3Fka2Nvbi9ia25iWHJDZ3hkbXFSNlFqYk8xRXFlM1pQMTc5OC9MaTl0WHM3ZnYzSDE3ZGRiUlN2N0NDYWFuZVdIQ2VGK2RuWncrb1kxQ2o5OXJqaTJjSWMzbHpmWC94OXZyVm5menQ5ZHMzUjhRUmRzMFNNaStyc0g3R2hEckpFazgrRlcwYmRTMVYvZnZZNVcyUUpad3J2c0xlYy95SmRwMjIvck1mUlA5V0xLRHRldWUrTjBWVHp3RTJDaUxzSStRZ0s0b3Q2Rm1lUFJVL2t5UzBMQzkyYmR1eEF0OTNiRGR5WE9nREswQUlpT2dGRGIxSXQyV2EzbElSZ3RaS1VjazE1YmNpYXUweVMzTlBpSnlWaVloMnkyaUVlMXREa1NTUXBDWEQ5d3ZCWTBGVEdVcW5mVDByVzcvQlhNdERoazdJRjhvR0M1RXMrZUlQdmFseXl2akdjZlFVaGFnaUtnLzQ1ZjcrZHBBZkdUbG1oTWE3WUwwTHVrM0dKVUpDRWMxbFdob3k2VEcwNUR0bTlza1JBUVprc3RiNmkrRTdjN3ZsYnl1OUJTQUFMdzd0bXYxNmxWVVRSVFNWVlBlWHQ4L2ZvQnFacklNeWZhYnNJYVdpRUh1bVhFZjNxYXpheU9qazM5ZkpCVU5hTXNGY3I5OVUxanZGUHIyaHZKU0xkUUZZNmhXeXhFdFJOS24yd1BXdXlEQ05NUHg3aVl2anN4NmQwM08wVXg3VmllZ3lTa2I0K2xKc0NmeEY3eld5TTZLZmJ4bFprUlRQOGFzQ3dYVFRkZlJ5L0Vad21NT0lwSVFUdkhkeE1hTzVOcENvMFl0Mzd3ek55TWVCZW9YeFRaYXU3eWpscjRYVXhib1F0V0RkMGgxWENvZU1sL25UOXFKbGo1dnhDWnVSWTdZa21YS2pLekdEckFrMnlvang2cXd4YktaMGJneDVmMXRQU0l2MzMxalJ0RnppSzFtaFBpRi9xZnAySjVwc0d3Nm1Da1h4N016VW5rMVVmMmZITTNKcitycGcvRllTOEdWK2VENUo4STNtYWxXK2gyY2RRTHFKQVBvOS8xd1pWNUFwcTFTSE0wWGZPbWQ1NVlXSHhSY0JWWFNCZnlxNVlSa1RmbGpzQXlRL1MrcGRlM3RZOUIyZENYUHlJOWV3S1IxTmh1ZWs0T3lJYXd3ay8xbjZydXVWZmM2N1dVVkJPSmVuZWtmSWo2N2k1RkR1YjQ2Mkttb2p6b3BkTXJoTVN5bkJhOEtLdHZQS2VsQW0raDNwUmZvWnJ0dWVwRkpyWElydGVyMEo4RGlCWmNyTjdVQ0gva2hCWlNURkcwYkxYR1ZjQURyWmRETjZxUTZOZDVMZFpMS1N1U0tGT212ckh2UUltMTBjNUtvSXJxbGkwampYN2xKOEtERGJ3MEVzUzU0NGlaSW9rY20xWDgvc1R1T3FEUFN5VXBPeDEyU1BIYlUxVDVEMm5HbDFxRFlXMFZFMnlvTTNEQ0o4MjZsMkhMZEZYdFVHQTA2bFdtbSszeHZMSTNUaGJSbi9WVEc4VENGWjZpdElKSWV1OTdYZHBxNk1hRytIemhidm41OHRjNzUrU1poK2VqRVpLYVZveGxYVlEraUtQL0lIM2h3Q0c1YW1wOWwvanFBdFEvN1VFdmNLbVdQU1ZqWElGY3oxNHRaaDRvckdrcjBkNnJxRHZhY3VacTAvMDBPMmJRVitFQVBYR3I2V2RubjBwRlVkS1ZIa1djY25kWE0xYU5WQm9EUFN0Z25YZFg1ZjlkMWdvVDFoMWhPZlZxVUt6cXBibHlURlgweFk4b1UyQ1ZXZTl5VW5sYloyRVdMYXVDL1oyN2h4SllpVzZ2Rmt5TE9QLzlVZVAxeVoxVmVJejdjVUVUM3pFKzMwZ05jN3ZlalZkMXg1R2pYcC9FaXRibjhJclpUeVRmUjdwSHo4WDlrVk9qZi9IbDcrWXZnS0RrZlJBWDU0aUh2Ykp4R2NJTWIzQm9IV2ltdmF2YVNQZTBZKzd0VmwwNVZNSnVvdzg5QWNQeUo0Zk5jRTF1OWpCbWV2STY4TzNiUEhlNUNmR0I5Ukt0S1Q2Q0VxQVk3RXlUYnhzK01semVYT2grbUJVOXRqSWJXdjA4TWVlS0x6MWUzMS9zbm1mMlZTc2VleW1JaTZkd1NvakFDVkVhQXlBbFJHZ01vSVVEa09VRWxjRVpFU0ovUWlLN0U5UHdZK2lsR1l1RFlJc0pmWWllMVlpZTlFL2pSRTlqUzBuUWhNZldBTEx0WVV1dUxSQ0ZBWkFTb2pRR1VFcUl3QWxSR2dNZ0pVeHMwNEFsUkdnTW9JVUJrQktpTkFaUVNvakFDVkVhQXlBbFJHZ01vSVVCa0JLaU5BWlFTb2pBQ1ZFYUF5QWxSR2dNb0lVUG0vQktqVTMxQ0pjWTZ6V0NUdjVzbHg3YXpMbHJOMlFDdGJ2SXE2WkZ5V0hFYXFVMmwyTzFzb3krWFcrYmREV2xqQUFWREFzL0FzWjl1SmgwQlo5SFZncTNQNVByaUU1czMvRTZ2VXpwc0R3Qzg3K0VzSUxHc2EyN0hwT25Gb09qaXd6Y2lLcDJZSUlpZkVFWTd0eU8yalBCRE1hRVpFeGFvKzl6T3JicTRsdXdBang3Tmp5NTQ2dnVzRWlRczhqSEdVV0hpSzVNY1dmTThKZ0JXaUFQckJOQUJPRE1JSUlUK01RR0xiTVBIYVNKdDhoWVk1MzhiSGJyWGQ0QS8yTjYwUWczeXYxK0orVzE5cmNjNVhIYVJLSkhSb3loT0hGRmRsbGJIdW5QRnAzaEZGVUd4R2ExUGU3ektxR2hqZGkxV3pQNG1FL2pzY0pPNEp6ckVwQlZjTHJEZ3dtS0VGWnBJaXBjTFBUQldaZFR3NzdCUmNTdWdycTdLSVlVL0RpV2RQYk9CT1FudXlvQVdmcVBNaXJMNS94U1paSnhuc1lmc1VLYlZiT2lFaUQ0aGV1WWZETWRvekNaYzM2NDlwdFRySmo0UENROGVCbmg0TzRnQkV0aHRacHVWWTBIUWNLeklqb1RzekRCSm9KM0VZUkQ3cWg0TWVVc21BNmhKTHB2TGVldTh3akg5aklwSGZ5RzVSdThCOTE4YjdMMitOMmtMcUZPSU5HUUN1cXVqRjNpeUtUZmJWZXRyMkVxdnlwOGJWWm85bXcwZmE4RW1LN0FhOVdiNkFoV0wxZDduQmpHM0Nsb0ZvbDZGcm16bGhHSGhCWXBzWVJzaDA0c1F4SVo1YVpoU0VDTHRCN0x0Z0E2T29lNTRXZXJFdWVTcUk2bGxLRW96V3FIR2JKNUdMOU1QZHV5WjA2Nm5ZcHNtODBTd2JYQ3dEODdzYSs2anFyZENMQVBMaUlMQnc0THF4RlZ0dUFNQlVQTUlod01rMEJMWm40dzRRVXpnWHIwOGNteXNhQ2dDdElrQUxrYmJiaW5VeE9pbFdxRDJwUXVCQjN2NytuYngzVnZmSlRUbUVhL0Y3RVNKRUNTZm12U2VWY3pRL3RlZWZBM0R1MlA5cXlDUVNVVm1vYTJYRmI5MkJucTZ6VmthVTRSb3lITi9UOXZiVGErWnBJZUhKR3VwdHNhNnZEZk8zNytKejM4VHY5RWhaOWh4K0dvUGZsUHdtZVM4TjNLdlNwUlZtTVZ2UFJQbW5QdVdvdkcvN01jZHREVENqV2JxZUtiaWZLT3BUVmVoc3FhcWVaaGFUSkpuaEx4WE91RGV3cStRUVNoSWZXUmlKWUlVak4wd1FFTkhFODVBRnJDa1V0Wm9iSjY3bHdBUTRBZklDeDNlZzdkdGg2QVBid1lrZlZaK01sRGdXQkZWZk1FTjVPWk9ueVE2b0RrQTIwVngwSUp1aHFlTlZRdzM0Y1FOcy9IanlINlZXVzZuWVVnQUEiCiAgICB9LAogICAgIm5hdGl2ZS1wcmVmbGlnaHQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzYjZiNjdhMGI0ZDUxZWY3OTFlNzc1YjUyOGI2NGFhNWE2ZjE0ZWZmNjI5NzM3ZTY3YmFlZTdlMmY2ZjYwNzYyIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NzEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZWeTI3Yk9oRGQreXNDYjI5bFV6VDFvTC9nTGdvVVNOTk5OOEtJSE5wTXFVZEZLcWhSNU44N2xGOXlrZ0p0Y085T25NZVpNOFBSNGMvRjNkMFNuS3ZVSHRVM1gvWGcvWEo3RjRZUlAwUlhWM3NjbmxCWEVNaTg1SXpuU2NxU05IMWdjaXZZTnMxV21XQmxJZjVoYk12WWNrcHFJZGduSkVob2Q2Z3B6NER6Ujd4KzZBS3FRSUFhQXRUZ3NSb1FibU04cWdIRGE3dkczbldIQnR0UTdiREZnYXAwTFVYd2JITEgrQU5sOWM0cWlFMmtreG1HWFVlSG4vUk5wOUZHektXUXNzeEx3eE9FV2lWQ0c1RUFidEtrTHFYQ3JOUkZ4dlRVUzZUVGpZUENDMFJzQXNJK29od0pyWjAxcUE3SzRTbGo0dEozWCs0L3hxQjlDTDNmcnRlbUczYjQySzFVTjdxdXFWZStVeGJjK25SYzI1WUNHdFNKUm1VOU5iYmEyWEFGRE5RR2hudDhtbndSVjhtOFppclhaWmxpbVdVNjFXbFdNclloRTBxR1ppUHByamp5NVFUeGZHcEdvdysyUFUvdTBsRUxEZm9lcGphWHI2aGNhVXpMTU16YitqYldPTFFZMEs4MEdoaGRXUGtuZFZzVXh0QTFFRzVYZ2V4N0JEZE44c0xEZ1E4UEE3VGVSb1lQdHNHWFcxZlFsbTBGL3pyakZDQ004YjZYLzA1NGg5dmkvdENxZVFuVk5UME1xQis2bWZXM2svbWI2YnhqUWpPaWIrL2FuKzNiLzdKei84bmVUUTB1WGpSS1ZOK0I5OGFGZnhyREovTTVYdkRpWE9qNUpDSHhGaW85a0NDTTdhUnEwL1pkZEExMFkzMmtVSFd0TzFTMmdSMVdHbDJBZVpSeU5xcU50c1pVK01PR2k2ak1IWDRQUE11blZwUXhoVXBSR1MyeHpxUlJqTlFrejFYSzBnMXdNSmsyV1NyQU1GR3F2QlNGQUY1d0tRdkdCWnFpUHFvbnFYR25vamc2a3RCK3JCcUNGb3l4azhoOUgybFJTVC9Qcm8zSWp5NGZTQkZ4ZDRoTTdxT0UwdW1JYUVZUytBRVYyajdNNkJLelRTRWxxWjhHRkRua1JrSXRCRmZjR0ZuelRQS1U1eG1yTnhuV3N0U2x6RldHNWFZd0xGWElqWHdEL0x5cHh4Y2c2UWMwenU3MklZbFJxMGQvK2x2aU0vQkl6MENjUDRYZ2dLM0N5bGlIL2lyVm52NW02dFBGcCtRcS9SSDk2RW1pSjdsNnJ2RFhaUEppcXduZFRzam56Qk85dWZjbVcwR3JMVDFRTHd0ZjdLL0t4czFiUEM5K0FVR3htNUZQQndBQSIKICAgIH0sCiAgICAicG9zdC1yZWFkeS1uYXRpdmUtb3V0Y29tZXMtY29tbWFuZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJjZTg4YWNhNWUyZDZjZDVhYjc1MzM4OThiYzliMjQ2YmQxNTk0ODJjNGFjY2NiMGFmZTRjNDUxZWU4OGY1N2ZhIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE2NTUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNFZVWFcvYk5oUjkxNjhnL0VJSmtlVzRXTnZCZ1RkMGFMcmtwUXRjYnk5RklkRGlkWHdYaWRSSXlvNFQ1TC92VUlxY3BzQ3dCNXNpNy9jOTU5N0paTExxakxDbVBnbzJualVKdW1jZjJOd0twUnNPZ2JUNEVsU2dxMjRqYnF3V0h6NnRMMWRpVDQ2M0RGbWxqR1lOdVZpUjBzY2lTZFk3RWx1K2gremtTYk52VmFoMjVFUnRsZmFDQTM0bWtET3FGcFVqVFNhd3FpK0VzellJUTNBdkhQejVoRU1ocnRickcrRzdxaUx2UmV2c25ueU1hdzFYTUs5NVM5V3hxcW13WGFoc0ErSE54eHR4RzNOeUZEcG5TT2ZDd0s4eWlkSjc5dFlkWXdHYXF5Q29ZZS9ab2dWT0tBVFpJT1BRd1hTTEIwK3RjdEVQN2RFWlU1R3dtNXJoR1FhK1NGWXhXVWVWZFNncDdOaUxqZTJNUnVVTkJZV21xQ2dsYm9NNGNOaTlOQTE5L1BQNjQ0d2JkVXN6Ynp0WFVZRytjYXh1Q05sbkZFRTVPQTZvYUZDNlFCbHcrVTlIUGdob053cDRvYXV3bmt3bUNUZXRkVUZFTkFJM2xQL3RyY2s3VjllOEtaNnR4aXM1WjEyeWRiWVJxdVhDazlzejJsczAxTmh5aEVzOE8veGpkZjM3OWVmOHMxMlJabFFVOG1EdnlKUmJyaWxodlpSc3RucjY1dnpOdS9uNWZENTlRSUNwb3diS2ZTRlRONWNKNGk5ZnAxS3Noak1kM0ovSjJYNCswMVJ4aE1QUDVCbHJ2STJZL29ybVJjRnlMdk1kbUlIYjhsRis2TUxPT243bzQ4aUYvSTJVQTNYazJVdUNLZndxTjNPZG1Ya0MxWUtmK2NqbjZhN2J6SkM0ZFVoME9zYWRuZGcwN1YzSTdDbExiRXVHM0kvcGJ6cXVkVG5JMGg5a044N2VINjh3R2pWa2owL1pkNzFMc3l3SjdyaElCazRNOWtVOFVsam5FVGpVdkp5L3pZVHlBTnUzNkFaQlhUaDFXSTczSWs1SE9qLy82ZWUzNzk5bkVQSlcxTkdGT21TL0RNL3ZGazZ4Si9HWHFqdTZqSGluMHZaZGZDQVpUZHd5RXFUb0o3STNURUEvVEdYYVArdXVhWDM2S0h0R3NKWUwxcmtjYUZqMmI4K0F5TVU4bDNZVEdVUzZWRUV1UnY0VnB3OWpEK25wRXY4ZXJLRUN5R1lGcGpGQ29OQ1hYQnJndUtkU0FkVzRFQ3FZNlBJMDZlVUptM0praFZ5c1hVY253N2diTUtpdUJIMTM1VGo4bzlMTG5pa1JEN09JRHpocU8rVDhTZFVlS2c2RFRnZTVjTVV0aFhTOElyTTRFdFp6cEZsWlljaGgwcmQ3MFB0TzZtWCs5VnYyMmdKcGZuMjhXK2hlK1M3clY4c2Q5cDlJSlJxYlM5WEd4SkZOZjhNT2V0NUpaVTlVK2NyWFNYMW9ObVJncmg0dTJWUHZXa2ZYLzVYWnR5ZndqKzRyd2xLNjdJKzRhc0EwV3Z3ditNaW1ReTJ5TStNbVEveCtrNVJWclR4RTRkaFNTbGxSbGtZMVZKWUlkakd3OE12UkIyb3U3em1rOHl6NUY5ekJyc3QzQmdBQSIKICAgIH0sCiAgICAicHJlcGFyYXRpb24tZmFpbHVyZS1oaXN0b3J5Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMDcwLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTVWU3dXN2JNQXk5OXl1SW5Jc3VWcTFJWHUrN3JRTjJIWWFBa3FoWXFDMFprcHdzRy9idm81cm1zS0xEdG9OaG1INGtIOTk3UDI0QU5oRnJPTktldkNkYk4rL0I0MVRvdHYwSk1kU0EwMDd0WjR6QlU2bjdNcUtRTzBadE91cU54UHV0RmtQdnBOWldHYThrU1NjVW1WNUo3TWlKVnJIYXlrSDczaG1ocGZYYlR2YktHN0g1MHdwenJsVDJtU3FHU080UGhHeWFsNGtxN1V0YXMrVlh4S1dNcWY2dEw2WktqZjFqcW5EdHFlVEFrRStaWUkwWVkxcWpKYWM3d0ptaTQ2Yyt3Rk5NcHpoaUdXSEpWQ2dmeWQwQ2ZVTmJJWk5Oc2RTODJocFNCRnhkYUJNTExaaXgwblNHNEdGSnBRUXowUjA4SmlabWNyRFlVSGJDTUVQeWNPVU5LWWREaURqQnN3NTN2OG1rdTdlYzBCMDZNMUNuK3NIdGpCdDhOeWdwVVJqamxKR3N0eDRJbFJaOUwrVzlNc1o0R29Ta2pwSGFZNjllci9nWGJmbmNpN1F1bzY5aWVJdVhRdHU1M2FBdEd1RzhjYlF6ZG91Nk54YWRFL1plaU1HSjN2ZllveHc2SVQwcDBUS3k4NmdGYlY5NFhSZjhIeXRxWVM1YytzS2ZYUGpJRUhDaExGZ3RlNGlsVUlHMEVEdkVwdTFEckd3ejFNUSt6QndST0lVNnByWEMzUEFoSHFDWk9mUDYvTXlLSjM2K0FCYzhUd2tkVEdpZm11dFhWc0h4d0ZEUDcxNHZ1ZlovNEJ5TlVDeEdPSEFVQUsybHBVV0M1b1hiK0pSNGlRamoxcW1DVFVjZWRHZ1pkWlFocDFRNWVSUVdKc2tLT0t4NEhmM3BGQnVDam9GT25Pd0R4cDE2YU5sZSthZ2N2amVldFkyeTQ1b2pKSE1KdE80MjNQLzFXY0RDeCs1cjVrQzh5SHJ6OCtZWHFsd2NpaTRFQUFBPSIKICAgIH0sCiAgICAicHVibGlzaGVkLXZlcmlmaWNhdGlvbi5qc29uIjogewogICAgICAic2hhMjU2IjogImRkNGVlY2YwYzEwM2RjYTc5MjIwOTRhOGJlZWI5OWI3N2FlOTZmZDFkNWZlNTMyZTM3YmQ4MzNkYWEwMjYxNGUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNTkxMiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0EzMVkyVzdjUmhaOXoxY1FlclZicW4xUm5wSW9HUWlURFpObEFBK0NSaTIzSkk1YnBFS3k1U2hCL24xT2tleHVTWmJIc0MxMVYvSHU5NXg3K2RkblRYTjJQL1QzL1JoMjJ6YWZYVFpuMTk5L2M3WDU5NDhieHBqZi9NejB4Wis3Tm02Y1pwNXZCbjcydGo0eWhmSDlKNjR2RjRZV0Z3WksvWEM2OUsvcm4vNjVFVXdZempqZnZQdjIrc3RGNnZMRU9JV0o2dDJRcG4zWWJmb1BIUTJicjY0MzkvdTRhOGRieXB1MnkzUlArSytiTmc4MHRLVk5ZV3I3Ym5NZnhoSG5IVDQ5MEdiZmhYdjQ5RUI1a2J4Y3BiemRUNmtxcUNac09OdHcvalB6bDRwZENuV3VqRGZLdkdIc2tySFZubjQvSklJUEQrMElIZlZCSDFXTVFtY3B0UEV1a0ZhU0xMbmdna3hTZTVFakw5cVZ0QWhJN2JhR0NROXlycVU2ZkRmc3E2emp4K3IyZnF6U3gzMUtOSTVyL0tDV1BzRG0xWXk3MExXRnhtazczZ1pvci9ldFVDRW9heTFGbnB5M0pqdmpTQmZObExLeXFHZ3lqT0V5VzgyeXM0RkswTWxsblFLenl0SnFaZGp0ckRwb3VRMkk4d2hsVTdyZExubllwdjd1cnAyZ2NCcjJORDl5VE1pMnZRczN0TTN0RFN5YlhaaU51eXhhTzFlVU40aUhNRFl6bTNMeVJRdm15QlJSaE9MRnFtaWxUMEo2b1NLVGxvbE1pVXVZS09SaVdRd2pmVXFETllpNFVVd2tGOG1tcEJLUG1RZkRqWkQ0V1lybkhPNExhSExXS3FHajBzRXk3bEppenNsd0NQSk5PMDdESTN6c1NudnpzUm9qUktTVUpNWHNiWXJHUkFOdDBoU3BZL0dTQnd1anMxY0d3ZFpPY3k1azRpbTU1TDFEMk9PaWh2Nmd0SjhRcmwyZkVOQWM2Szd2VnMrV0hqckVUUkN6SkhOMjBrZXRROGs2YTQ0OHkyQ05EZ0kxcWxGN3BNZ2dwMGcwZk9NaGEyMWlOcGtkR2dubEhuYnRuM05yYkZONG9ERDdkRFhyYlhaOXlNMUFoMXMwTm92M256Y29oU2EzcFZ4ZmpSZjN1ekNWZnJpN29GSW8xYlphcjczWmhVaTdzWG5TaTd2SGhuNUhxVFJUM3h4QytublRVVHZkMHJBKzFuVDkwQ3llTjlkWHpiaVA0OVJPaU1yWVFNM3hzV2FPU3JNbVlpblFwUXlQdWNvMHBxRzluL3BoM0lZT1FRMlBoRjhQVGY2MFVHc0YrZlY4MzZYYjBOMDh2d0NNR0hDK3lzQ0ptTDh1KzkxdVRLSGJWZ0c3dHF1dzlCY09jUFRkMTFmWHYzeFhlL3J0OHNXU3dLOSsvWHBHdGhYUWNQVDNjMG40bDlzTWhOc2l5aU5WYTZmSGJVRVUyKzZtYW1iUDczZjlkdHdEeFFBSXlPTDQxT2d4M05HMjRPUjJlL1hsTnZiVDdWSkx6eTlCQ1BCem0rTVR4R0F5aFJRVlUxb2tpbGFod0VwRkE1R2lFOFY2SXVkVUxpRXhaZ2hkR3ZBaGg4eWxqQXdkWmM5ZWlyNmpLY0NwY0lyUHI0ampncFppRGREMzlNZjB5MzFld2YwSjluSjNxZjJsWnVmT2VjYVp0dUxkMmZyTWNqOS9NVDE3aEwxOHhBdDVmT1FLZkZGTCs1V25oTHlVQW4vUHBXTk1TaTc1dTFPR0R0NmMrdVNMM1QxU0xzK0Zha0ljVWQvTjF6OTgyd0R4cHVaREdEcmtDNjB5RjZWMFAvejB4dno0T04yaXFqTk5hQlJVWlRPRTdyeDVSMFBmM0ZIb3htYTZiY2ZtVUovTjFaZk5DSUlhYi92cExicGlhdmJkK3c3R2I4cCsyZy9VZ01yMmtKQ29RVi9ReklwTlpkUG1ab0IzNTJzT1luOEgxTnAzMVdLbFR0LzEzYTYyeU81cFRpcC80OU4vNWsvNHpNL2gzR1pnYStoTzM4eUYyelMvbmNxMzdTb0RMSTJEYXQzTlJiWUlPb1BVaTNELy9pTEhpN2FEbmJ2ZFNyZzQyNC9EUlQzSHZ6L1B4LzU4VmxDbC96Ykx6ZTB3eCtyeDZBT3k4dUxrVUZzbmJ4YWJ3TzJMSmNCT0pBY2p3SzQrYitiRG95SGJYNjZ2YXBkaUt1RXZUdjd4NHVTKzM3WHA4VW1iK0d4Qko2UUErTno3ekJVVkZnSUJhSXZUWHZPaWRHUXBSVnhEUVFWYk1ua2g4TFRVbFNIRTJWT3hkMzJlQzUvMVJxbG5KNHVGUzkrZjRHR2hoUU5sZkVTNzZRU0VNMmpoWThneHBQZFBieTV6MExiT1FJalJzSjBXVmlzQnlQTWlHUGY3QWJNZmJSOEM2S0NieGpreXE3cmxwTExBV0ZHci8zQUV5T2RuQTVYOVdKMTBDNnNpbyswZHpaYk41ZGpSOUtFZlVPUXprTDYwc2g3Vnh0MzJnQlRrZTZaOS9INW9rdnA3R21qT05SekFXRktucERrMEo0ZFdXVU1QTS9mUGZTMm9zRHdIYWtkVjlESWJ6a1Z6dWpTUHE2VSsvV0c2SGZyOXpXM05HYVpaTU5OZFFMaHF4MFBENXcwR3NVcDF5M3pXNUQwZGdjYlZkcTUwTjFVendIeXY5bS96eFF3ZHpXSnhzMlppNXVxTEdkU2JNZlgzd0luVmJ1QkttZ2ZRQm9TNXE0cC8zNk5IY2hNSjBRY3I3M3JneFFFWG5rN0ZOUzhBc2p1YUcrenNtM1lBZ2lFNURaS1ZUNHk3OG5NWUQvU01iczg3NEZCWEw1WDU4a0hYb1VxYnBUNmhoQXQ5M256VkQ3VnI2OFhIRjRQQlhJUGRUYk5BODlNSkFIR3QzVHUrV1VjT3lFU00zd0l0cVdzTzlYL2VmQStFWE5CMm5RMUthSGNuaDZsV09NRHkxTDRyNklWaGFzRmswd2J6NnoyS2UreTc4LytPeXh3ZmVOTFprMUErVjZwakdKZzlKalpwV0FuRmtNdUJDV2FpTmk1aHF1YVlyekJvWXNqVG1LQkxJblZBdVZxcW05bXF6UkxGb3dZVk1zWTJuNnd1MlpmRU1PbGlTbmZHNGx2dWlhY1k2b25WUGxVNjFwRHRBU1pCWk9GMDV1d1ZEWWNONEtqRFc1ZTB4VGFTYkN3c2svUVpvRVZlRzR5b1BtV01xWlpGUzFySHhLM1VObVlNMmlYS2lNR2NsZmhNeDlxMFIrRUNpQmVqTDhvcEU2SXF3WkJ3bUU0Tnhtc3R1VU9NdU9aRVVnZ3ZwVEZCYzhqTXhWbUJxVUU4RDFGbHB2T1UvemhLejlsbW81TFhsa3ZQUThvcTgrSk1RcHhOZ0NDdkFBTlJFV2xET25pTUpwNlNLTlhWN0xrT241Wit2dXR2cWdhSHg3RUZJY3BZTkNSeUNyT1kxNFFvWjBNR3V4SUxsREMzWjQ3TVpJUDF4RmlwcW1zR0NYdXVZUnJhaDhkTm5jMk9Ia2lDM1JJVUF2Umx6Q1ZLRXFZRmt0Z3ZwQkpGWnlXeG13UnN1b2dTV1oyTURDWllqOUF4Ri96L2szL3d3WnVnWEVZdUM2SUZONVRYQ2h3VXNIcGFnNHJSeUVoaWhTeG1KOHh2eE1GVUVpc3ErTXNhdC9MUVUzTDVLTXRZRU1td21KUHhDcnNpS1JHS0V3cUpGa2hLM2N4a05BeGJvM0JZTmFRV29Ub3B2WWI3akoreW5OcGxTMS9YOFI1ajAvQXcvMzVVaFRVQ3F4OVdscGg4cEFpZFRnY0VoYkJHWTduUlJsQ0owWUZKUWExT1J4U1laSUVMSWs0cXJyTm5wYTdYMmczVUd5STJjSVlGa2lMU2FMUEFtc0tjRnVER2pBTDF0bmlMelVvS1VMdTJFbGxncE9HNHhLWXNud3YvdU5OU3FPS1N3UW9HLzMxeDJGWVJkNDJWMnNWU2NoSk9PVTBtcG9BdFZ5ZTR5TkNaQldzdDQvNFlwaVB0YmxZQ1BaVVROa2N1a2lsSWhyQ2FLOFlSK29UT3paSVJtVkFZSjh3YkVTTnNxZEZCSHpKTTVja1NCcFJ3bkxzV21OMHNNTHNDQnlDNEw2ZFFrVTRNQ3lWbkhCc3FoaHh0UEdvWXBvdkNmTVU5NnlNS0N3SEVHb3ErMEFybEp5enVKN0w4V0xoUDg3MnNhMGNWTlZvY3RDVmRqb0FvcEJVb1MwVVZZVU53UmxORytsV3dLUUIvQlkvSUVSUEFFTmpDYkpIdW9LSU9FTnQxNmpuQStmbjlZMVZCSVVnT0NFSWhpZHJXUVJPUHlRSVBtZVRZd0pWVkZwaG9pK1dPU1lVbHhrc2xOYzhjOVpWRE9hbFlXUEJGa0NRaGpXQUloU29wU0dZV2lMdXRieE55NHJxZ3lnQlV5SXZNaFFOYVVOa29aQ3NRUGd0TzhjZk9RNzl0VDI5TER0MjN1SkFoRnNWSENaSDJMa0VEUisrQ0FSSnhFWFdTcURSQVVZQnJValBoWWJrcXlUbGRORm53eXVzNjZqcXpLaERhb1N1OHdkT0tDK0IrRVN4aWN0V29FQ0NzUjZOZzRhdmxRQTZiVlBBSkpDY3krQW5VWWFSL29xQ2EvUnFSZWkralk5R0R0RWdndTZoZURNUEtDd3V2Q3RNbzRhU0Nkcms2eXlPYUxTUWJsSkVWMExoTUwxVmdpaUNzOWtmNUdKbUZBUVVuY0tYaW1NS1pEaGpMclEvMWRWRndnTWJhM1NJN0VRWFhDc2xKeGFDYVhTYU5IZkVnL3lNQ1VwamFoSkZNZzBRWklBZ1RnSlBDNFVmaWtPQWlEZ0NJVWdEUzBScmVjZkNPTWRoU2hjVjErYXJnQTI1cjdxeU1FdUVBZVFLL2d1R09BcmdlSGVjZHEwTUh5QTdadExnaVN5QWJpcSt4d2tZaEFPUkg0Y2psUnlFSitPTTVNenlDek1Ga1dRZ1hlWDM5cGFRRXlZTXd2SElKVFJXQnIyQWdBV3hIOVFoT1ZncCtKTGJsamQ5bWVidjNvdndqY3h6ZEpiS01XWHNKYjJSaHpOYVhpNVFjY1JSbW5WMXF1VmhiQzZBUXBpY0xnQUtFQlhtY0xGN2hUVkVRWFFMZ1I1K01GbDRZYUFMRkcvU2xxRys1YW5Gd1hNbUVTU3NIREdvQ1E1aFVqSGw4cEUrSVBvUWUyQS9yRUYyV0JZcEhnZFc1ZDZhQVhwVG5WVUFBbHFGSXBaRWdiWUM2QjYrQ09xMHRLcGJsemMxbmYzLzJQeWVmN3A4WUZ3QUEiCiAgICB9LAogICAgInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRURya1k5bVVaYm1VVzBnelE3dXpzTUIxRlBra0VzdVdWNU5DMHczK3ZKQ2ZFRjlsTzZXWDdVRjVDcEtOeitjNVZ5dWVkM1YwSEplUTljRUZZN0J6cGI0bm9MSHhuVDI4OWtqalVpNmVRVUxhTUlKYlplZ1FTaFVnaXRmZFpmZGRNNHBoSkpCVVQ4YktvbC9tTTRYQmZmeVNjUGV3VDFwRWNZY1YzNWhMRG1zUlR4aU1JM1JBdzBVb2NHUTAyRW84cUZKM0tpdEhLQ0t4czdXT1dVaFpOOWdYREJORU9DaU1pY3NaeXRvRHdqOTNMMGZtcCsvZlk5VHh2dUl0VHFWYTVZNWcrWjd5ZEdFVmdWZGpKRVlnRTRXYXFORE1iOVlNQWZBKzVoMTdZZFh0QmNPQWVEdnZnRHNJd21BUlR3T2l3cStVYjZZNUlBRyt3VmpyUE9BaHhDaWlrSklaYndDd09OZTREejF1SjRRby9ncEZlOUYrV0ZrYVROMFJJeHBkWEpDSlNiNitQQ0tDQTFVN2VmeEdTZUg2RkprRHpialZCayt3L3BoUGdNVWdRMnEvMStLeE9QUmZnRkNvT0pNeVdlV2x5bVJnV040QTVxTjJpQXlSRUNkV3JlZjNLZ2RnUWpEOG9QbklxR2dtMGlwWVZMOHlpaE1VNnBZNHkzOENUczlkOHBCWGlOY2c1allxeGt6Rlc2a2NzamVVdDhBWEJjSXl4L25iSEhrRmJQVVZVUU00Z0ZWd1NxVERqMnFoL2N4cm1EVlIwRUM5S0JGV2lRaVpwVEQvOGRmYlB5Zkg0N01QbDdlMjdzNXNDQWl2eUJhS3BvWjlMbVlpalR1Y1JsNXptbEE0OTczMmxFaWR2UjNmSGw2T3pHLzNmK2VWRm94cktjL0dVekZKdUlxekRGWFFrZ3YwSGtmZEQwUnZaMzMyUnEwTWlORE1jbFRkbjhNREtvYmo2V2kxM2Y0bzU2dllIUjhQQkFUNFk5THd1RGlZd3hMaUgvVW5vbzRFLzZCNm96K24wMFBjSFliL2I3Zm5CY05qcjlpZTlQaHA2Zm9DeHB5b09jbXdLalZOS3gwd1ZqNldCWnpwaWNxeXF6YnIyNThncFdVQ3M2dENZc3dtVUF0NFFUQkdoS1llN3VUby9aMVFYdm9NeXNzYXJGeUF0NTNXcFEzSnVNSjhEb25MK3llYVloSEc1RGcvYnZzQnp5SHo5NXU1dTNCb3JUZ0tjc0hCVFZOY0ZNczh5eFZnWm5qZk1yeERwcUdDcDNERHE3alFJYnUwdkJYdkZkcG4ya3JyakRLUEFDN3k5K2x5b1ExQVZRY2t3bzVybTdtVDhtblN6YU9JM2FQTEUrQ05sS0h5Tk5vMDVwL3BLU0g0SDdmY0tXc1dLcFZ5eHRTRko5WVFoN0JqaEpOWEc5VDB2c3BrZlFhUkdGRTJoNnR3MWFiZWZ3MzhwaURacExiSUdQWXVvUnZzRjRKUVR1VHhSNFEwZmJmSGdJRXJaMDVpVEJhRXdnek9CRVRXTm85cHAxOHFpQkUwSUpaSkFqVGtoWjRtbEFKaTk0NnNycDdKK3Z3VitLSHdiMCtVTlkvSmNhU3FXUXMxYlNvamtLVFJESUJHWGFmSTErZVIzZnlkVURab1NlRVJpRXlEWGlyZnV4MnZqUTFoMGN0c3VaVE9uL2ZSTEo5ZGVMZE12R0UwanVOYlQzNVlkeGN5Tkc1WDA2TjFReHMzK0s3cEZVWXFhc0RwdFhiRWdkaldTZmJ0a0dTVk5jdlQyTjhzb1RKTk4wbG9KMXpsc3k5clhhTFpBM0dBdjlIVk1pcW9QT2trV1hVMUtxL0tuYmtxL2hMWW9EWWxzVXJhVzRPZnJ1cm40TlNtOG9YSlJRbjZHNXV2QnpPVXdJK29PMytqOHJZaC9QcmFyV2NFZWxtdmRCWkZTdjFJMUVyZm92bFBYZ3pjN3VmblVDV094S2Rjbk5OVlN6d2tYK1pEVUU1ZHV1QnZDWS9xRWx2a29NYTB1VEZYYWpkWmxHS1lvcGRKOTJTaFFONDR3emxSY2NKWW1wZ042WHFHL3JmZE81aWpPZDVxM3NaNGlyb2t3cjBmRlJ3M2xtZU1Ham1aN3hBeURGYWpWL1hjQ3VQVzBNa1cvcXFoUlpLcWJYWG1XMkx3dlpmM2hOSVBGc1RybXVRQlIvcDNFK2w1VG9sa2pYNlhMdGVnTGpqQ01TM05HcjU4anp2cHp5N3RMb2RtVzc0cjZZVmZGVVN6ZkcxWW5GSkhJTnFWaHZUR3F1NEs2MVVhZUQrNUNrcFpmaGFKRUxrOEp0d2xWSWtpcTFYR3VzeG04T21LUlQ3QitxSFQ4eWsyZzdnNXRHUUIrT1IxTHcwT1RmbG5udjBhSlRjRlZjbCt6VUxQdEhsWm42OXFYQlhlRmt6dkEzYTRmRElQUTYvdmJhVjhjUnJhMG8zRW8wUGY2QjhBU3dpMnNESUtxRzE0dW90VjcwV2ZiVFVsWVh6OXRwTHZaYUFCeDlyWS9wZkRSUmFtY1cxcENGazhmRTVJaHM4bnJnNWUzK2RycmpUUXFXR2llZDlwVzdsK1ZtMDF6ajVQMXo5ZjVncWk3NDFkNDRoR1dHL3R0SUxWQlZJR2pHaDNHbXZvQ2wwSHdUU2cyRG1PL2RuVGJBdmI3eHV2ZWRsbzNWYnJXMktyblc0d3pqUFl4bHpYSlc3QndSVmxEK0d4ZHY2OUJMUjhtTGxmempWdlAvVWNsL0E5ckpOVkpmNnN1MG5oc201eHJtOUwvaHlxR3FXb1VhdGJPQkRkV3N5THBLNm9hUzNUT0lscjdsdGhXOXFyNDFjZlZUam4yVmovbzZsK3BkNTUzdmdEblQrN0xUQ0FBQUE9PSIKICAgIH0sCiAgICAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIxMjA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxY1c1T2JPQlorNzEvUnhlc0dHekJnNkgyWjNzNWxVdHNYVjZjelU3TmJLWmNRd2xZYUVDdUVFMCtxLy90S0F0dGNaQnYzcHBQWkt1WmhrbGhIUjBmbkhKMkw5QlhmenM3UE5SREhjN2hFOERHZlp5RFB0WXR6Umd2MFNneVJJRWQwaGNJNVlQeG56VElzVnpjTjNUUWZEUC9Dbmx6WTFzaHpUTU56LzJZWUY0YWh5VWtwWUhpRk9FdVFMbERJNTBVZ3prdCtHU1VNUWNZWmhvQ0JBT1JvVGhGbzB1UUlVc1M2djRjb2k4azZRU21iTDFDS0tGK0ZwSnpDY3VTd29GL3pXVm1NSVJDYk1DdHVJT2JMeFVLaUhRYysvSTJQaXMxbitEZEU4NUlWLzFlV2oxZW0zQWNmZk1TcGtFRjd2WnRZalNTSUFiR0ZMU1BCS2swSmsxTGx0Wi9GQUYwUUdJN0VIMXdCbjBlWWpCa0ZrSE5mNkZndWdOT0kwQVNGZW9nZ0ZzSmNTRWwyNjE1MEtNYWRYeXJaNUpLZHdSRWtSVXlTWUpRVGlFRThCbUdDODlxMktlRm0vdnY1Kzl1M3IvWGZaN3BoR05OeldERCtLOVVxdGs4Yi90ekNDVktLclRWSThnekFZM1JGcVFEZ2VCNHlEYUQ3Um1qcHR1ZE5kSC9xSU4wTlF5L3dJZ1NCYjVWeVZGSm9lWVpnWGZ0OEJ3dUs4dncxOTRNWXArZ0RnaVFOaFNWY3c5Z3UxL2FQNnNlVmxPcFhuRE5DMTljNHdjSkR6TjIwSE1YY2JRbHQyalVCREM2dlFZRGlwc0dsVzJXanh5SkFORVVNNWNMaSszVzJuZmZVVVhUTy9ZU2h4YnE1TGx0bmt0VzlPQ2w4dkdzZ2hwSXNGaU5OZWJ0T2U5QnhYOHlUR3NMS1ZXS1ZGcFY2aENUSlNGcWVZV2s1OUVWN2RXeFNEK1h2MU4rUXJlMW41UUo4T3drcFV2YUJSMGNNMFNXRTRsOFA1QkdsOVppMW5jQmRrUUh1bEZSczhkOE5hWnNiNXJRb1hYV0lWSVNOa3lpMFBmL25teit1TG1kdjV1OC9mUGo0NXI2bGxXckNDc1NGbkxGa0xNc3Z4dU5IMkRLbzFwbjI5T29ad2x6ZDNUNWN2cjk5Y3kvKzl2Yjl1eVBpY0x1bUVWNFVaVmdmVTY1T25LRFI1N3hwbzdhbHl2OCt0WGxyT0FFTHlaZmJlNEUrazdiVFZ2L3NCdEZmOGlXd0hQZGk2azdneExVTkMzb0Jta0pvUXpNSVRlQ2FyalhoZjBhUmI1cHU2RmlXYlhyVHFXMDVnZTJBcVdGNkVCbzhlZ0ZOTGRLc2lPTVo0U0ZvTFJVVjNSSTI0MUZybDFucVo0TG5ySlJIdEJrbEFlb2NEVWtTQVJ3WEZEMHNPWThsaVVVb25YVDFMRzM5RGpFbER4RTZBVnRLR3l4NXNtVExQOVdteWdobEc4ZFJVK1M4aWlnOTROZUhoMWt2UDlJeVJERUpkOEY2RjNUcmpBc0l1U0xxMnpRVlpNSmpTTUYyekt5ekl3TDB5R1NOL2VmOVQrYjJ5TTlLdlhtR1o3dzZkR3IyNjFWVVRRU1NXRkE5WE0yZWYwQVZNcGtIWmZwQzZHTk1lQ0gyVExtT25sTlJ0ZUhCeVYvV3lUbERVbERPWEszZldOUTcrVDY5d2F3UW0zVU1JMUVySkVFSkw1cGtlK0M0TjdpZlJpajZUNEh5NDZzZVhkTzFsVXNlMVFudk1ncUsyZnFLSHduMFZlMDFvak1pWDJZVXIzQ01GdWhORGtHODZUbzZPWDRqT01oQWdHUE1NTnE3dVpDU1RCbEk1T2psOWJXbUdQblVVNjhndkV2ajlUMGg3QzJYT2wvbnZCYXNXcnJqU21HQXNpSTc3U3lhMW5BWVR6aU1ETkVFcDlLTmJ2Z0tvaWJZS0NORXEzRnRXSS9KUXVzemYxdFBDSXQzWjZ4SVhDVG9SbFNvSitRdldkL3VSQk50dzhGVUlTbWVuWm1hcS9IcWIzdzhJemVXcndyRzd5VUJTN0xENndtQzc3UldvL0k5dkdvUDBrMEVVSi81NThxNEFsUmFwYnljeWJ2V0dXZWxGeDRXbndkVTNnWCtwZVFHUllqWlliRVBrUHdzcVhmdDdXSFJkM1E2eVBDUDNNT21kTlFwV3VDYzBTT3UwWlA4WittN3FsZjJPZTltRnpsbVROenFIU0UvdW91elE3bS9QdHFvcUxVd3pYZko0Q291aEFSdk1jMmJ6aXZxUVpIb2Q2U1g4UmV3Ym5xU1RLMWh3WS9yN1NiQW93Z1VNZE8zQXkzNkl3V1ZGdVh2S0NreW1YRU5vNVZOTjZOWDh0SjRKOWxkS2lxWkc1ekx1N2IyUlErMzJlVkJycExnbGtnbXRYdnROc1hISE5FOUhQaTJ4STBUTDRraWtWeTc5Y3p1TnE3TVFLOUxOV2w3VGZiVVVsdjlCbW5QblZhTGFtTVJGV1d0UEhoSEFVU3pWclZqT3czeXNqYm9jU3ZWU1BQZDNsaGNvWE52Uzlsdmt1RlZESENpcmlDaEdMcmQxM2JycWpLaWVSeGFSN3g3ZjVaa2JQMGFVL1h5ZkRGY0NORzBtN0tIVUJWLytFKzB1UVRXVEVWUHMvOGVRVm1HL0tVbDdoUXl4NlF0YTVBYmtLbkZyY0xFRFFrRmU4dFhkUWQ3YjEzMFNuKzZDeTNMOUtaZWFEaG0vNzAweTZPVGRuV2tSQkYzSFovbHkxV3ZYWHVleWtqYkpselYrWDFUZDRPNThvWlpUWHhlbGlvb0xWOWRvaGg5MVVIQmxzb2tWSHJlMXd5WDJ0cEZpRW50dldSdjQ4YWtJRXFxcDdNK3YzMzZuODc0NGNxc2VrSjh2cVV3NzVsUHROTWpXdS8wb2xiZmNlVXAxS1R5STdtNy9TRzBWTXAzMGUrUjh2SC81VlNvM1B3bHZQeFYveDBjanFJOS9QQVE5NlpQUWpDQ2xPME5BbzBkVjdSN1NaLzJqSHphcTh1NksrbVUxMkg2b1RWK1JQQjQwUVRXN1dONlo2OGpVL3VlMmVNOXlFK01qekRtNlluM0VLVUFSK0pray9qWjhaSms0dVNEK01DdDdiR1EydFhwWVE4OFUvbnE5bm4vYlBOL2FWSis1dElRODdwM0FLZ01BSlVCb0RJQVZBYUF5Z0JRR1FBcXczUGhBRkFaQUNvRFFHVUFxQXdBbFFHZ01nQlVCb0RLQUZBWkFDb0RRR1VBcUF3QWxRR2dNZ0JVQm9ES0FGQVpBQ29EUUdVQXFBd0FsUUdnTWdCVUJvREtBRkFaQUNvdkFsQ3B2cUVTb2d5bElVL2U5WnZqeWxtVGhyTzJRQ3RidklwOFpFd0tCZ0xacWRTN25TMlU1V3JyL05zaEpTemdBQ2pnV1hpVzhYYmhQbEFXZFIzWTZGeGVCcGRRZi9rL3NVcHR6ZXdCZnRuQlgzekROQ2VoRmVxT0hmcTZqVHhMRDh4d292dEdZUHNvUUtFVk9GMlVCd1FwU1RHdldPWG5mdWJseTdWZzV5Rm91MVpvV2hONzZ0aGU1Qmd1UWlpSVREU0I0aTE3NnRxZVlmclFBMU52NGhsMmFQZ0JoRk0vTUNMTEFwSGJSTnBrSzlqUCtUWStObE4yZ3ovWTM1UkM5UEs5VG92N2ZYMnR3VGxidFpBcUFkZWhMbTRjWWxTV1ZkcTZkY2VubU1PTG9GQVAxcnA0MzZWRU5qQ3FpV1d6UHdxNC9sc2NCTzRKTEpBdUJKY2JMRGxRa01JbG9vSWlKdHpQZEJtWlZUeGI3Q1JjaXVzckxiT0laazM4a1d1TkxNTVorZFpvU1hJMmt2ZEZTSDcvaW83U1ZqTFl3L1lVS1pWSE9zSThEL0JldVlQRDBab3JjWmZYcTQ5cE5UckpUNzNDUTh1QlRnOEhvV2NFbGhPWXVtbWJRTGR0TTlBRHJqdmQ5eUpnUmFIdkJWUFlEUWNkcEpJRzVDT1dTT1dkL2Q0akVQNU9lU0svRTkyaWNvUDdubzMzUDk1cWxZWGtMY1E3M0FOY1ZkTHpzNW5ubSt5cjlMVHRJMWJwVDdXbnpRN05obyt3NFVtS2JBZTllYllFdVdUMUQzSEF0RzNDRm9Gb2w2RXJtOW0rNzdsZVpPa0lCRkMzdzhqV0FacVlldUQ1RURsZU9IV01EWXlpNm5rYTZNV3E1Q2tocXVNWVJ3aXVZZTAxVHlBWHljZjc2enAwNjFSczAyaFJhNVkxeHJlQjJIMkZmWlQxbHU4R0JuUkR6ek9SNXppaEdacU9aeGdUL2hQeURSUk5mTU55TGRRQ1luTG5ZdFdOWTMxSGZRR2daUVJvSU5KMlI3RXFSa2Y1Q2pZWGxRZzh3SnJmdnhQdnp2STl1UzRIZHkzMndFTUVMK0g0dWcrNGRJNzZwL2FtRjRaeFlWdi9xc25FRTFHUnkyZGx5Vy9kZ3A2dTAwWkdGT0VhVUJRK2tPYnhVMnZtdEpCd3NvWTZSNnp0YS8zODdVVjg3cnY0blJvcFM1L0RUMkh3dTRMZFJSK0VnVHRWdXJEQ1BLVHJPUy8vNUtjY3BmZHRQK2E0clFIbUpJM1hjd24zNDBWOUxBdWRMVlhaMDh4REhFVno5RlZlMkJxZGdWMGxoeVo4SjdadDhZQUZUV2phUG9pQ3lJYWU3N3RSNEZ1Mk5RWElOcEh0Mm43Z1Qyd0liTi94ZlRPWWVvNFY4TDJYbjR3VU9CWUlaRjh3aDFreEY3Zkp0bEZlZ0d5aU9lOUFOa01UMnkySGF2RGpHdGo0NmV5L2gvamlKdGhTQUFBPSIKICAgIH0sCiAgICAicm9sbGJhY2stcHJlZmxpZ2h0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNGMzYzMxNjYyMDU4MDhlODEzMjZjY2RhZTFiNTZhZmVmNzU3YjBjZWI0ZTZjOTZhMTdiZjM4NDMxN2FlZWU0YSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODcyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTdWVlRXL2pOaEM5KzFjRXZtNWxVeFFsaS80RmV5aXdRSnBlZWhGRzVOQm1Rb21xU0FVMUZ2bnZIY3JmU1Jab0YrMU41TXk4ZVk4Y1BYNWZQRHdzd2JsRzdWRzloR2FBRUpiYmh6aE8rRXNLK1RiZytJcTZnVWpiUzg1NGxlVXN5L01uSnJlaTJBcStxc3VjMWRVWHhyYU1MZWVpSHFKOVJZS0Vmb2VhNmd5NGNNUWJSaDlSUlFMVUVLR0ZnTTJJY0o4VFVJMFlQKzVySEp3L2ROakhab2M5anRURjk1VEJ5em1jOGc5VU5UaXJJSW5JNTIwWWQ1NFczK21iVnBOTm1Fc2haVjNWaG1jSXJjcUVOaUlETFBLc3JhWENzdGFia3VsWlM2TGpwMUhoQlNLSmdMaFBLRWRDYTJjTnFvTnllS3FZdVF6Kzk4ZGZVOUkreGlGczEydmp4eDArKzVYeWsvTmR1d3BlV1hEcjAzSnRlMHJvVUdjYWxRMGtiTFd6OFFvWVNRYkdSM3lkWXdsWHlhcGxxdEoxbldOZGxqclhlVmt6VnRBV1NvYW1rSFJYSFBseWhuZzdpZEVZb3UzUEozZFIxRU9IWVlCWjV2SURsU3VOZVJqR1cxa3ZVNHRqanhIRFNxT0J5Y1ZWZUZYM1RXR0t2b040UHdxMHYwZHc4MGxlZURnSThXbUVQdGpFOE1sMitIN3FOalJsTkhWLzNIQ0tFS2QwMzh1dk05N2h2bms0OU9xMmhmTGRBQ1BxSjMreis4T1QrVGVuOHhNbmRFUDA4MW43Wi9QMnY4emNmekozczhERk82RkU5U2Z3UHJud2IxUDhabjVMRjd3NE4zbzdXVWk2aFVhUFpBaFRQN3ZhUEgwWFh3UGQyWkFvTkw1M2g4WjJzTU5HbzR0d202V2NUVzZqclRFTi9tV1RCYklQZ2JBSFhsYUpEaGFrUkFndWE2TnlsUXNKcGpWQzFWSldwcFZjOEEyZ3lGRlVRcmF5RUFxRUxLWE0yMDFkOHBhMEg5MlQzTmlyWkk2T0xIU1ltbzZnQldQc1pISi9UalNvNUovblVDR3FZeWhFY2tUY0hSS1R4MlNodERvaW1va01ma1NGZG9nM2RGbGUxeHNwZFZGeUZGcElYU3JnVWxlWXk4MUdjTTA0eWdwRXk5cUNza3h1eEtZbS9pMHZ1ZVRZbHArQW55ZDE5TTYxb0Y2eVlVVGo3RzRmczVTM2VnNm4veVU5Qk0vMEVLUWJvQlFjc1ZmWUdPc3dYTTA2MFA5TVNsMTZUSzdtbi9DUGtTeEZzbXZrQ244dHBpajJtdER0akh5dVBENVIyVzMwcmxwQnJ5MDlVZThiWDRTOTc1cEdiL0cyK0J2ZUJ2bWhVQWNBQUE9PSIKICAgIH0sCiAgICAicnVudGltZS1yZWNlaXB0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNjQ0MjY3NmRjZmQ5NDFmMGEwNWE0Y2I3OWEwMmRlYTgzOWZjZDMzMmQ4MmIyMTU0YzE1Y2Y2ZGI2OGRlNTg4OSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MDgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMldTeTQ3YklCU0c5M2tLSzl0MldpNEdUSmJkZDllOWRlQWNFalEyUkJobkpxcjY3c1hqempSVkpVdTIwWDg1SC9EejBIWEhRcmU0eEp5T3ArNW9YZStjVUNpRjBuWUFVcjBrUXdNTUlMMVVWcURqUVEzQkh6OXZ6dXZxcHJoY0NFZU1aMXJxbHJCY29IbFBRYWxoQ0wzVnpTQzBRV1k4ZWh1VVlBUHBJSUxvZVRDOU05SjZJYTNvSFpPR0NTVFBKYWkydEJmY3FNUVFXMzZoYzF4cXVZOCtweERQLy9kcElSeDVMOG1oTmQ1cDdUUVpMM1dReWdVck9aaVdqYmJYdmROcVVKd0w2Ym4zZzdkMlFLUGMza2V2NU5mYStxWU11R0VCelRtTkVSL0pCREZERW5HUTFpa0ZBUlVxYmtRdndXZ0ZRbHV0MnZaUlQ5b29GaFFiak9HQVNtbUhHaG5mbStJTVp4cVh2QlpQV3pqNHVzTFVRY3JwUHVkMTZkN1JPNlRGbDNpdHVYeWQ0RTZsZytJdjhVYmRQbU43ZVppbSt4N3JJV0ZFcURUdUJlOUFyYUtXbGQ0MGllcExMczliYTJ1ajNWZ0ljTXhwdW84bDUvb29uOXNXbFB1bTVtTDRIci85S2JxdVMxdmorOCtGL0RPVkJ4eDZiVURkT2RibGtsKzZhMHlKME9kNWpuVzNKNmdOWWJ5V2ZJdlluSFUvelFEVFFvK0NiZENOYy9RWFNPYzNqcitheGdrT0ZocHpHUUhubUxhUGowaGZDQ25WMk9UL3VEN3UxRnI5TnFwZ1FqOXg5c1Q1RDJaUHNqM21pMkpDR1BXSnNSTmp4OE92dzIvTVFnSVdLQU1BQUE9PSIKICAgIH0sCiAgICAic2Nhbi1yZWNlaXB0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYWFhYTkxMDYxYmIwMzZlNmQyMjhiMWMxYmQ0MzMzNTc4ZGM5NDhjYjJiYjVhYzhiYTI2OTQyOTEyMWU3MzIxYSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0NTM4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxVnlXN2JNQkM5NXlzQ1h4dEtKTFZTcHhib3VhZTJoeFNGd1RWbVlva3FTVGxPaS94N0tjbHdMR2RCa3lib29RSU0wSHA4TTV3WjhzMzhPams5WFRoT20wYmFSWFc2b0Q4NjZpU1B2ZFdibS9kdVJYR1dWemxtU09hWkxNdWNNSjZ5bE9lVXBvcGlobEZHc2tEaEJjY3FoNmlrUkJBcWNzU3BLZ3RVRmh5Um5Dek8rbE1FVzQ3KytuTmd3aWxuS1V3enpDVXJVcXFFNGhRV21MTVNxNExJY0ZncUZPVVE1bExobElZUFFRVktFZ1lWUWNYZVpTMDlGZFRUNFBSWGdBTDRWVnFuVFJNQWZEWWluK1RXZjJrRFMvWkhZNGh6Z0NCQTZETXFxNHhVR1l6S2trQUVzd0tmTDNZMkkxOTg4Qk1UZUd4Q2NMSTMrV2l1bTdXaDRnRXJuRlFKRHI4b0tTRk1FcFNnODBVd3VoMnljTFNXUzJXbFd5MURRc3o0MVZMWDlFSzY0TVRiVGc2a3hpeGQxN2FCdFV0dXYyTWxOMWIwNUc5REhHTVp3Z2ExZktVM1E4NHNYQ29ZbkVhZTJsM0FnYUtNcmVrUTdLVUxYdmU0QzZ5US9iTHovS2hra0ZSSldTVnBWQlJwWHVCM0VGWVEzaG5LcmZaTGJrUi9LdHlqM05RMWJjUSt4QUVVaGwvSnUxZ0NBZ0EzamRJWGgxanM2emJXalJLZzdXeHJRaHB0eDliYXJhUUFHMm0xMHB6NlVKRlkxcTIvQWFQVEIvd0FzRExPSHlKZG83ZFZITWNiYW1QYk5mRm9Hcm13SE5MQzF0U1ByYWZmamZUWHhrNXNHdFBJbzhUYXpoMGlhTHBkeTlyWW13bGhHdjNtNFpyOFhHdDJVQkRDVXNad0pxbzRYSjhPNnZFdmNOSjNBeERVdVpKVlBDeUhWbS9YSDNZSERJOTBXaHpkdE4wa2tYMTI4U1B2ZWl4NUh6c1FlZ0xmendnQWQ2VmJJQmpveGhaeGYrK1NidWlqaExGM1RpNTMwNjJQM3N4T1p3ZllSRzhEeDNUKzZUeUhtZ1BWcmRmUllMMGpmaC9XMjdPL0VEKy80ZXZ3Wk1YMkdSMmdqTW9zeDFrNmQ0QzVBOHdkNEFVZDRMN28vcXdOT0dicWlJdnQ4NXJBYXc1L0VoV1lGS1NjcFQ5TC94OUsveitZK3k4ZCthODk3Vk1ZNVVVRzAxbnlzK1JueWIvOW9IOXF4cC8wLzI1UGZnTVUrSXZSdWhFQUFBPT0iCiAgICB9LAogICAgInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRURya1k5bVVaYm1VVzBnelE3dXpzTUIxRlBra0VzdVdWNU5DMHczK3ZKQ2ZFRjlsTzZXWDdVRjVDcEtOeitjNVZ5dWVkM1YwSEplUTljRUZZN0J6cGI0bm9MSHhuVDI4OWtqalVpNmVRVUxhTUlKYlplZ1FTaFVnaXRmZFpmZGRNNHBoSkpCVVQ4YktvbC9tTTRYQmZmeVNjUGV3VDFwRWNZY1YzNWhMRG1zUlR4aU1JM1JBdzBVb2NHUTAyRW84cUZKM0tpdEhLQ0t4czdXT1dVaFpOOWdYREJORU9DaU1pY3NaeXRvRHdqOTNMMGZtcCsvZlk5VHh2dUl0VHFWYTVZNWcrWjd5ZEdFVmdWZGpKRVlnRTRXYXFORE1iOVlNQWZBKzVoMTdZZFh0QmNPQWVEdnZnRHNJd21BUlR3T2l3cStVYjZZNUlBRyt3VmpyUE9BaHhDaWlrSklaYndDd09OZTREejF1SjRRby9ncEZlOUYrV0ZrYVROMFJJeHBkWEpDSlNiNitQQ0tDQTFVN2VmeEdTZUg2RkprRHpialZCayt3L3BoUGdNVWdRMnEvMStLeE9QUmZnRkNvT0pNeVdlV2x5bVJnV040QTVxTjJpQXlSRUNkV3JlZjNLZ2RnUWpEOG9QbklxR2dtMGlwWVZMOHlpaE1VNnBZNHkzOENUczlkOHBCWGlOY2c1allxeGt6Rlc2a2NzamVVdDhBWEJjSXl4L25iSEhrRmJQVVZVUU00Z0ZWd1NxVERqMnFoL2N4cm1EVlIwRUM5S0JGV2lRaVpwVEQvOGRmYlB5Zkg0N01QbDdlMjdzNXNDQWl2eUJhS3BvWjlMbVlpalR1Y1JsNXptbEE0OTczMmxFaWR2UjNmSGw2T3pHLzNmK2VWRm94cktjL0dVekZKdUlxekRGWFFrZ3YwSGtmZEQwUnZaMzMyUnEwTWlORE1jbFRkbjhNREtvYmo2V2kxM2Y0bzU2dllIUjhQQkFUNFk5THd1RGlZd3hMaUgvVW5vbzRFLzZCNm96K24wMFBjSFliL2I3Zm5CY05qcjlpZTlQaHA2Zm9DeHB5b09jbXdLalZOS3gwd1ZqNldCWnpwaWNxeXF6YnIyNThncFdVQ3M2dENZc3dtVUF0NFFUQkdoS1llN3VUby9aMVFYdm9NeXNzYXJGeUF0NTNXcFEzSnVNSjhEb25MK3llYVloSEc1RGcvYnZzQnp5SHo5NXU1dTNCb3JUZ0tjc0hCVFZOY0ZNczh5eFZnWm5qZk1yeERwcUdDcDNERHE3alFJYnUwdkJYdkZkcG4ya3JyakRLUEFDN3k5K2x5b1ExQVZRY2t3bzVybTdtVDhtblN6YU9JM2FQTEUrQ05sS0h5Tk5vMDVwL3BLU0g0SDdmY0tXc1dLcFZ5eHRTRko5WVFoN0JqaEpOWEc5VDB2c3BrZlFhUkdGRTJoNnR3MWFiZWZ3MzhwaURacExiSUdQWXVvUnZzRjRKUVR1VHhSNFEwZmJmSGdJRXJaMDVpVEJhRXdnek9CRVRXTm85cHAxOHFpQkUwSUpaSkFqVGtoWjRtbEFKaTk0NnNycDdKK3Z3VitLSHdiMCtVTlkvSmNhU3FXUXMxYlNvamtLVFJESUJHWGFmSTErZVIzZnlkVURab1NlRVJpRXlEWGlyZnV4MnZqUTFoMGN0c3VaVE9uL2ZSTEo5ZGVMZE12R0UwanVOYlQzNVlkeGN5Tkc1WDA2TjFReHMzK0s3cEZVWXFhc0RwdFhiRWdkaldTZmJ0a0dTVk5jdlQyTjhzb1RKTk4wbG9KMXpsc3k5clhhTFpBM0dBdjlIVk1pcW9QT2trV1hVMUtxL0tuYmtxL2hMWW9EWWxzVXJhVzRPZnJ1cm40TlNtOG9YSlJRbjZHNXV2QnpPVXdJK29PMytqOHJZaC9QcmFyV2NFZWxtdmRCWkZTdjFJMUVyZm92bFBYZ3pjN3VmblVDV094S2Rjbk5OVlN6d2tYK1pEVUU1ZHV1QnZDWS9xRWx2a29NYTB1VEZYYWpkWmxHS1lvcGRKOTJTaFFONDR3emxSY2NKWW1wZ042WHFHL3JmZE81aWpPZDVxM3NaNGlyb2t3cjBmRlJ3M2xtZU1Ham1aN3hBeURGYWpWL1hjQ3VQVzBNa1cvcXFoUlpLcWJYWG1XMkx3dlpmM2hOSVBGc1RybXVRQlIvcDNFK2w1VG9sa2pYNlhMdGVnTGpqQ01TM05HcjU4anp2cHp5N3RMb2RtVzc0cjZZVmZGVVN6ZkcxWW5GSkhJTnFWaHZUR3F1NEs2MVVhZUQrNUNrcFpmaGFKRUxrOEp0d2xWSWtpcTFYR3VzeG04T21LUlQ3QitxSFQ4eWsyZzdnNXRHUUIrT1IxTHcwT1RmbG5udjBhSlRjRlZjbCt6VUxQdEhsWm42OXFYQlhlRmt6dkEzYTRmRElQUTYvdmJhVjhjUnJhMG8zRW8wUGY2QjhBU3dpMnNESUtxRzE0dW90VjcwV2ZiVFVsWVh6OXRwTHZaYUFCeDlyWS9wZkRSUmFtY1cxcENGazhmRTVJaHM4bnJnNWUzK2RycmpUUXFXR2llZDlwVzdsK1ZtMDF6ajVQMXo5ZjVncWk3NDFkNDRoR1dHL3R0SUxWQlZJR2pHaDNHbXZvQ2wwSHdUU2cyRG1PL2RuVGJBdmI3eHV2ZWRsbzNWYnJXMktyblc0d3pqUFl4bHpYSlc3QndSVmxEK0d4ZHY2OUJMUjhtTGxmempWdlAvVWNsL0E5ckpOVkpmNnN1MG5oc201eHJtOUwvaHlxR3FXb1VhdGJPQkRkV3N5THBLNm9hUzNUT0lscjdsdGhXOXFyNDFjZlZUam4yVmovbzZsK3BkNTUzdmdEblQrN0xUQ0FBQUE9PSIKICAgIH0sCiAgICAic2VhbGVkLW5hdGl2ZS1kZXBlbmRlbmNpZXMuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIwNDIzMjdhMDM2ZWQyNTRjZjk1ZGJlYjBjMDU2YWMyNWIwM2E2YTg0NGI5NWEzMzJjOTkyZGYyOTQzNjkxMzY5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NDEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNzFVeTI3Yk1CQzg1eXNNblV0Wm9pVkxTbTlOa2FLSHBFRVB5YUVvQWo1V05odUpWRW5LUUJyazM3dVVaU2QrSUk5RGV4S3czSjJkblozVnc4bGtFZ21qYTdWb1dSZWRUaDR3Z0NIV3FXdXdUaG1Oc1dpVlJoL1djZFcydldlOEFReDcyOE1ZdmxOYWhzU3pBZWtDa2NhSEZqeVR6TE10Y3NEVzJuam1FZHM5QzRjSHV6QkN4dUhUV2ZNclZtYnFMUk1JdmlCcXdGZTZOcllGU1NRSUZkaWRUcmN0VHc4ZXB3Y1JZbnZ0VlF0a0xpaE55NktVU2I2WmJUM2Zma1VzVE4rWWxzZk9DTVdhS1pPdGNodGRXSWM4VnlBL1RyNWVubjhtTjFja1NaSmlJbnFQVVJ1TnNJOGIvRWl6Rm82TzhUS3ZvYzUxVEJ3dmZzcnIxeXBWU1pyT0pKVWt6MlJGTWlncDRhbWNrU3JoV1FVY0pPWDVtdHhJTFJKTUc2MEVhMjdEc203ZGt0RjhIcUJLRU5tY3lwVE9zaUxQeWpwUDVnREE2eFJtb2hBaUsrWlptYVNWS0ZsUnpzb2trMG5GaFNncW50U1Vzbm9lMmd4Tm9tNGxYcmZYeGtkWDRkRjUwUDdhTkgwTFp3MVQ3Zi96MU5IMmIvTFh3T3RmK2VrWmJyZUs3M29PVm9NSEY0YmlxQndScHUwYWpBeHozWU43dWNMMFdNTHZzVXA3YTVvR094eVdyUVlCWW82YTc5VTdieXhiQUFtVWg5SFc5Wlpwc1FRYk1ocURqaUlkODhzamlIdGcwSUJBNGtRYk9iaWN6cXA0VG1PYTVIRkY0NlZ4UG5ZZ2Vnc09MR29SWStYcm9POWhlSENzdGRLc1VYL1FDbGowNDZuVmJnKzBkY0QzeUQ0c2NVejcrWWFUMzdIS2UwOWNsZ21uT1U5Sm1xV01aRm5LQ1VldFNGWFdqTmF5S25raGRrL2NkU0IyTGtZSWNPNEM1ZDZiN3pzd2VXT1ZoMjhhMlJ3TWhCc3d2Uld3ZDJjV2Z2ZmcvRzQwdEYzdklIQk92NmhvKy9SNG9QZVlpYmZtM09XbzJoRUhqYXUrR0gxeXJocHc5M2lyN1g3R0JpTnM2QjF5UGY5aDNYWkw1Z2FRVCtGWW9wUEhrNzlxRkVnb01RY0FBQT09IgogICAgfSwKICAgICJzb3VyY2UtY29tbWl0LXByb29mLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjA4MTFkYTJkM2JkNTkzODczM2YwMDc4ZTVmZWM4ZTE5YTZkOTc1MmM0Mjc3YjgwYmZlOTgzN2VkNzJjNmEzYiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMzksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMTJPd1c2RU1BeEU3M3dGNHJ3SElEWTIvWldxaXB6WUtaRUtyQWd0V2xYOTk4Skt2ZlQ2TlBObXZxdTZiamI3eWlXdlMvTlNOMk9BRUhwVTErTXdzaGlDTXpJV0ZoY2RqcjJHTGlHbjJOeittbmFZK2xtV25LenN2a3h5Tmk4VDlTQUNSR1NoaXp6U29EeXdZY0lXZ0Z5Q01PZ3A2cHdTdHNva2xnUWpLMFpwQ2NqK0w5eGxuOHJwSlhqeU9aZFo5ampaeFY3Zm5tdzlGdHY4WnFKK1hUNGUvajFmZjlialRPemJwMVUvMVMvZFczMjc3d0FBQUE9PSIKICAgIH0sCiAgICAic3FsaXRlX3JlYWRvbmx5LnB5IjogewogICAgICAic2hhMjU2IjogIjkwOTNjNjRmN2YwZTM5YjI0OWRhOWZlZmRmNWFhZjRlNDI1OGJjMzFlN2EyN2ZkODg4NDc5Y2UzMjlhMjA1MDkiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDYxMCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E1VlliVy9iTmhEKzdsL0JaY0FrWmJMeXNxYkFraHBEbHFWWmdlWmxTYnRoQ0FLQkZrODJGMGwwU1NxTlcvUy83NDRTWmZtbGFlTXZOdC91am5mUFBYZjAxdGJXbFlhaG1rSEZURGFGa3UvSXlzSkVTenZmeVZSZFdUYlRTdVZIekZoUnlERlRWVEdQV1FVUG9GbW1LbU4xblZuRGJxelNrR3h0YlExa09WUGFNcTRuTTY0TkRIS3RTdHBwNGRHU2dIWTlLNVNSMWNSdm4zSXp4VlUvVk1iLzB1Qi9HY3V0Ly8yZlVWVWplY2J0dENmMkNvZmRnUStGdFBETFlEQVFrRE5abVJsa050WEFCVjBpcEpNeDI0NVpTcmFBU0UzRloyYXE3T2cxTHd4RWh3T0dIOXJGUms2dU94RzVXWm16U2xtM21FaVQ1cktBTUdKS2R6Tm1YaGF5dWc5YktmVFJYQnBnZi9PaWhsT3RsUTREZUpUR29oTlFWdFVlUUcvTEIyNkJDVzc1bU9NQkRSOXFxVUVFamVaYVN6VEhxZEZnVlBHQWloTnVVcHhIQzM1bXdXK2xFakRTS3NCQkdQd2t5N0pHU1FXTTlnSXllL1d5RFBDdUxHaWwvK2lkbHB5b3FrSjNTVlg1NExHU1Yzd0NKU0Ftb0JLR1djMHJ3OTBlYzhTa1pVS0JjWDV4T2hJbjhhTkUvN1hCRHIzd3JCRWVvdEV4M1dqMFR0Y1FNeXRMVUxVZEhVUVI0NGFKOGNKNVlwekFJMlMxaFRDNHVqNCtPejltSDJyUTg1UkNPYnE4YU8xZjNmcjc2ZG1iL2hxaTF0Q1ZScHNFMWdaMDJ1NElvaVFIbTAxVmhmNjkzYjNySktBTHZaQWZSdXhnWWVIbUVNOThjblh4bEkyTG1tUTdPTUw0NXFpWWxYS2l1WFdhKzdvMm1ObmxaNG9pc250dktTOEtCQURhZEJzRzZqNklvN3R2MlVhWk1DVC9MVVF5SjdLMVNmUk1LV1FPMlR3ckFGMzN1ZUlsSEM2WmRuUDY5dlRrSFR1NWZIL3hMdHlPMk92cnkzTkdDSFRRKzVvdmx6NDVaZzhKanBzemFCTUx5Y1pNYVdHQ21BV2RDYW1mak9MTm9qWjlNTnNlRUxrcmt0cTU1d25DY0FwRTg3SWtQeGxGWHhZWkQ2WXVMSGtzYU1MZG9ldlFnNmd2QTJlNzM1c01DakEzeHVvUnR3bUp5YlBCLzBTUkVDOUhvVG5FenE0djMxK3gzLzl0OXFDWkd6V1llbHhLUTRhWlo2cnBuZnhPWFIzb1VKTkRMSE9JZEJtZFl0NmtsRGU0MW5CRFlLakNwRjNKUVhRZU1rZlVYL3FacjFWUmpIbUd4RHRvSW1CclhiV0JXQ2tFSzBUWTFnTjRwRVdhbi9MOWc1Y3RmMk5odTZSRTRaNmY4VGZLNXJJQ0VUTXNSSjh3eFVzY0Rxa1VzSTVjSGZ0Vml2MXovQlozSWJwTk1uQUNUekJkc1lLV3RVRXlOWVI0YWFhb1BDdHFJeDk2RWpMMENkSENEaGNscGdTV0RMdURBaitpNDBESGpGZkN5VFAxYklZMjJTa1ZETW9PRUgyek1KUVRWSk93QzFlNGlYQW8zMmg3UWVvOE96V2MvY2JYREhiejExdlV3eWd1aHNsSmhTR2dvTkxLbitlazNIY0NaQ1hzSUF0VkU5d2hCV1JZL0J0cHA3N0srV2tVNTJ6SzhQSkt6Qms4NEVLVndSRVI0NVIySWtjS0tBRERzT01JYWFZSUxDTHhzWGk2TW1Namt0ZEZVWExrbkZBSHQ3dkRYL2t3di92ODhzV1hZRDNBcE93Q3FlbnBRbzFsenZ1ekMwM2owOVVDVFJBckVScmswdEJpR3dTMjF3VElLbGRvZERPZkZKUWc0UkxodTlxQXM4bE4rdWJtK3ZRc3BCT0pzU21WZGRkaStOWHp5ejlPVjFhUi9YZlZ5OTFkMnVaWEt0ZFc0TXJldDJ0VjAzcFFxUzVnNk00dGNOZ0dhK1cydlNRamhXN09CWGUwY01KYTI3VExYcmxOWko2Um40Qzl3a3E2dDgrMjJkN3Uvb3Z0N2YybllqSEdwclNIN3M3QURXSHdnT3QzWVFRMUs2M0VUZ1Y1ZWNFZGxBNm16blA1NkNwUE1QeklDNktrb1ptV1FiVHN1aVo2SG52SVI4MFZzZHcxRXFLbDNYaHBaUkxYc1JXdTR6UHJzRmlCeHlwKzF2ZmxYWHhyS1NpNjNwODA3RVYvc3J5S3c4T05wVzdkejUxald5OTJDR2lTdkErQW5sV3RDMGNqMW5qUWNZUTN4c1dhTVBwc0cvQjUwT05RYkRZN2hpSnEydEN2cklmN3RqSHREdDNiWlkyQWg3aXpUbFlxWGpKMU1TcXBNMDByczQ3NVRyeGJHVU5PUmFvanVsRVBnaDBxRzlyb1kvS0Jyb3liMjBkUTBqQlRqeGRjR1hFSW9wcUlYZEU0Y0IweVFnOTR1ZXhOQXZLNFVOakZJWTZwU0lRRkw4ZUNIN2E3RS9KWTJDWmFGTE54RUd3QW9qTXBxV2VJUWdpZHVMVzdOMXVtOE9ndjVGUGNqeW5VSzJ6N1ZHS3ZWZEdXWDF1OHRjNzE1WHZSS2J2M0tYcnZLdys4dGRjZDlSUE5TWjZqZTc3S1ZLRmI3bURTalJ4T3VoSG1XMjgwV1JvUmlKd1hRcDkvVHBJZk9FRzl2STM3YVJvdk1XVDBMTWUxcUZ4TjFhZEQ0MHBMaDFiYXNJTG03ekJoVVMzYW1BbDgzRkU5WDQxWkN5RVhPbXpMNkYyYVV2T2ZwbzQ2MHBRdWs2YUJmNE5yNHdMbC8xUklqdldrcG9mb2xWc0pCWmhNeXhrcEdLV3BVRm1hUnIyVENSY2k1ZTBScFBhaEdDTzEyL2tNUmxjT0k3NTI5TEdoSjhZOXRKMEE5MFVpZkNKYlBWLzRBd3NueXFYL0pCSlJsek1UcmtHUlRpWmlqT2xtbExicFBjeE5vNnVSaG4wZnpDeDJTdlNGbDFoMTljM2NXQ2l4a2JMOVYxdjdoRno3dzJiQ1hjdm1LSkY2cXViUG1iYUJkRTExeE54L0o5VDJEUDRIcFJPYm53SVNBQUE9IgogICAgfQogIH0KfQo=" + } + ] + }, + "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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..7c38280 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..18e3acb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,25 @@ +# 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. + +Refinement 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. diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..2121afb --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,672 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate" +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..153f9a4 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,55 @@ +{ + "all_checks_pass": true, + "observed_at": "2026-10-11T09:40:15.540874+00:00", + "native_changed": false, + "protected_database_read": false, + "secret_read": false, + "deployment_generation": 25, + "ready_replicas": 1, + "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": 1, + "client_diff_sha256": "ccff7c1ecfd9eb59fc0ce566c1013a2af5df514af048c68474a272997024ef7b", + "allocatable_cpu_m": 4000, + "requested_cpu_m": 3460, + "strategy": "Recreate", + "full_receipt_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "full_receipt_path": "native-preflight-full.json", + "projection_reference_files": { + "sealed_live_deployment": "sealed-live-deployment.json", + "sealed_dependencies": "sealed-native-dependencies.json", + "candidate_deployment": "candidate-deployment.json" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..41a876c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,20 @@ +"""Run only inside existing admitted StateHub Pod AFTER verified candidate Ready. + +The fixed existing dispatcher loads its internal credential; root never reads +it. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an +advisory verdict emission or a substitute for separate evidence obligations. +Root records this bounded metadata receipt with verified PodUID/image/source. +This preparation only writes source; no request is made here. +""" +import datetime,json,urllib.request,urllib.error +from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file +id='infd-20261011-zlib-remediation-r1' +req=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) +opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) +try: + with opener.open(req,timeout=15) as response: + raw=response.read(1048577) + if len(raw)>1048576: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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..31fe756 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,18 @@ +{ + "native_effect": false, + "initial67_manifest_sha256": "1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2", + "initial67_manifest_bytes_retained": false, + "initial67_complete_source_snapshot_retained": false, + "initial67_note": "Not snapshotted before unannounced81 amendment; knownhash preserved, exact reconstruction audited separately if possible. No fabricated claim of retained original bytes.", + "initial81_manifest_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "initial81_complete_source_snapshot_retained": true, + "draft29_manifest_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "draft29_complete_source_snapshot_retained": true, + "defects": [ + "Main dispatch passes operation_intent to remote without matching parameter", + "Remote payload lacked snapshot_identity/operation_intent", + "Fresh scan gate accepted empty/truncated result coverage under rootreceipt metadata", + "Owner review began67; unauthorized stage churn observed81" + ], + "same_trial": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..02232fc --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..ff52810 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..d1475b3 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,55 @@ +{ + "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, + "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", + "full_receipt_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "full_receipt_path": "rollback-preflight-full.json", + "projection_reference_files": { + "sealed_live_deployment": "sealed-live-deployment.json", + "sealed_dependencies": "sealed-native-dependencies.json", + "candidate_deployment": "rollback-deployment.json" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..73657f4 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 new file mode 100644 index 0000000..249eb1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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 @@ -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-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md new file mode 100644 index 0000000..bad46c5 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md @@ -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-zlib-image-release/review-history/platform481/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/archive-map.json new file mode 100644 index 0000000..0beecfc --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/archive-map.json @@ -0,0 +1,782 @@ +[ + { + "repo": "railiance-platform", + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/mapping.json", + "original_sha256": "e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785" + }, + { + "repo": "railiance-platform", + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/original-manifest.json", + "original_sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/original-manifest.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/mapping.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-60507a10/original-manifest.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "deploy/lifecycle/admission.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "deploy/lifecycle/kustomization.yaml" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "deploy/lifecycle/registries.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "deploy/lifecycle/service.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/archive-map.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-7ac1d698/original-manifest.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "deploy/lifecycle/admission.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "deploy/lifecycle/kustomization.yaml" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "deploy/lifecycle/registries.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "deploy/lifecycle/service.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/intake.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/owner-snapshot/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/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" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/probe_refined_boundaries.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/refined-changes-requested-review.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/reviewed-143-f170b34d/mapping.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529", + "retained_path": "deploy/lifecycle/admission.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47", + "retained_path": "deploy/lifecycle/kustomization.yaml" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e", + "retained_path": "deploy/lifecycle/registries.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278", + "retained_path": "deploy/lifecycle/service.candidate.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/artifact-comparison.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-runtime.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/decision-packet.md" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/test_execution.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution-bundle.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-receipt-template.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-report-fixture.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/intake.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight-full.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/native-preflight.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/preparation-failure-history.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/proposal.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/published-verification.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md" + }, + { + "repo": "railiance-platform", + "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", + "original_sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform143/owner-snapshot/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md" + }, + { + "repo": "railiance-platform", + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/final-agreement-probes.json", + "original_sha256": "d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa" + }, + { + "repo": "railiance-platform", + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/final481-changes-requested-review.json", + "original_sha256": "faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a" + }, + { + "repo": "railiance-platform", + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/independent_final_probes.py", + "original_sha256": "c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43" + }, + { + "repo": "railiance-platform", + "original_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/unissued-final-technical-draft.json", + "original_sha256": "be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f" + }, + { + "repo": "railiance-platform", + "original_path": "intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "original_sha256": "8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6 new file mode 100644 index 0000000..61c3558 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/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-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f new file mode 100644 index 0000000..8aa8c6e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f @@ -0,0 +1,84 @@ +{ + "review_id": "RPF-REVIEW-20261011-INFD-ZLIB-NATIVE-R3", + "work_record": "RPF-IN-0009", + "role": "railiance-platform technical owner only", + "status": "unissued-draft-superseded-before-ack-by-actual-provider-contract-finding", + "release_manifest_sha256": "3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec", + "release_paths": 481, + "published_manifest_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "actual_candidate_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "rollback_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "rollback_source": "c96b0c6d881e855d1d158003c6de90ef390262e2", + "artifact_source_revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "validation": { + "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 + }, + "reviewed_boundaries": [ + "Exact four render hashes plus executor/case/memo hashes checked before authority/journal/dispatch; root records actual final owner revision before human post.", + "NEW founder confirmed exact source1/companionreview1 nested disposition only; each normal phase fresh fixed-origin readback, original purpose R2 never authorizes this task.", + "New custody/journal/attempt-linked snapshot identity; protected bounded binary transfer and isolated UID0 initializer/UID10001 clone before fresh cutover; no old approved journals/helpers altered.", + "One existing Deployment image only via manual Argo Application UID/RV/source CAS, explicit falseprune and exact namespace/source/resource/result; missing false status allowed only current completed explicitfalse request plus controller completion/time/initiator binding.", + "Deployment/immutable config/PVC full seals and actual Pod exact controlled fields/owner chain/UID/GID/image/Ready; ephemeral containers refuse before effect.", + "Same immutable artifact full exact622config/11diffIDs/source labels/44PURLs/38OS6Python/zlibr1 zeroallseverity freshscan before release+verify; four-hour age and DBNextUpdate expiry mandatory, new finding retained/refuses.", + "Native installed module/zlib/data/health proof and synthetic purpose checks remain separate from canonical current postReady native outcomes/PDP preservation proof; typed bounded metadata excludes notes/reasons/private payloads." + ], + "new_proposed_manual_recovery_consent": { + "requires_new_exact_founder_acceptance": true, + "scope": "763/c96 image/source only, latest database retained, this trial only", + "window": "at most30minutes after actual release attempt and before2026-10-12T23:59:59Z; rechecked immediately before native patch", + "authority": "independently root-confirmed exact acceptance privately cached before release and hash anchored to immutable journal; supervised bookkeeping only, no autonomous/signed grant", + "triggers": "fresh transport-unavailable or502/503/504 evidence AND actual failed exactf558/source placement", + "forbidden": [ + "backup fallback", + "release fallback", + "401", + "403", + "explicitrevoked", + "currentconflict", + "identity/scope mismatch", + "healthy candidate", + "foreign trial/source/UID", + "customer or future trial reuse" + ], + "revocation_limitation": "Later revocation cannot be queried while INFD unavailable; explicit new human consent must cover bounded supervised exception.", + "verification": "Separate COMPLETE rollback intent/original outage anchor +actual763Ready1/current same-schema data; no provider acceptance or T05 closure inferred." + }, + "history": { + "previous_owner_manifest_sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f", + "previous123_fullfiles_manifest_map_immutable_archive": true, + "path": "changes-requested-aa941510", + "original67_fullsnapshot_absence_remains_disclosed": true + }, + "remaining_before_native_action": [ + "Final narrow two-owner ACK/row19 reference rebinding and exact committed source/fourblob proof must be retained before human post.", + "Fresh new founder disposition for the complete proposal, including explicitly bounded manual recovery exception.", + "Current root native authority, exact fresh owner admission/custody/headroom and current full immutableartifact scan must pass at execution; old zero report expiresOct11T18:59:50Z and is not valid untilOct12 deadline." + ], + "scope_limits": { + "human_approval": false, + "native_execution": false, + "backup_restore_or_private_database_access": false, + "credentials_read": false, + "owner_source_write": false, + "push": false, + "T05_complete": false, + "risk_closed": false, + "autonomous_authority": false, + "other_owner_role": false, + "technical_agreement_issued": false + }, + "provider_command_actual_contract_verified": false, + "reason_not_issued": "Native lifecycle outcomes lacks invented top-level memo_id and actual optional states differ; synthetic sentinel metadata fixture did not establish actual API compatibility." +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43 new file mode 100644 index 0000000..69f45a3 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43 @@ -0,0 +1,25 @@ +"""Synthetic/read-only public artifact probes; no main, provider, native or database access.""" +import copy,datetime,importlib.util,json,sys +from pathlib import Path +root=Path(sys.argv[1]);sys.path.insert(0,str(root));import test_execution as tests +from authority_journal import fresh_scan,recovery_authority +results={} +fixture=tests.FixedNativeProgram();objects,payload=fixture.fixture();objects["pod_ephemeral_fixture"]=[{"name":"unrelated","image":"unrelated:mutable","securityContext":{"privileged":True}}] +# Maker fake transport has dedicated actual Pod-field injection; test checks before exec/effect. +fixture.test_actual_pod_ephemeral_container_refuses_before_native_effect();results["actual_ephemeral_custody_refusal"]=True +case=root.parent;pub=Path(sys.argv[2]);contract=json.loads((case/"fresh-scan-contract.json").read_text());receipt=json.loads((case/"fresh-scan-receipt-template.json").read_text());scan=json.loads((pub/"scan-receipt.json").read_text());receipt.update(completed_at="2026-10-11T09:40:00Z",db_metadata=scan["db_metadata"],db_sha256=scan["db_sha256"],full_report_sha256="a"*64,exit_code=0) +report=json.loads((pub/"trivy-full.json").read_text());fresh_scan(receipt,report,contract,datetime.datetime(2026,10,11,10,tzinfo=datetime.timezone.utc));results["actual_published_full_report_matches_contract"]=True +for label,mutate in [("empty",lambda x:x.update(Results=[{}])),("wrong_config",lambda x:x["Metadata"].update(ImageID="sha256:"+"f"*64)),("truncated",lambda x:x["Results"][0]["Packages"].pop()),("low_finding",lambda x:x["Results"][0].update(Vulnerabilities=[{"Severity":"LOW"}]))]: + r=copy.deepcopy(report);mutate(r) + try:fresh_scan(receipt,r,contract,datetime.datetime(2026,10,11,10,tzinfo=datetime.timezone.utc)) + except (ValueError,KeyError):results["scan_"+label+"_refused"]=True +fixture=tests.OutcomeMetadataAndOutage();probe,cache,journal,sealed,deps=fixture.recovery_fixture() +for label,mutate in [("boolean_status",lambda p:p.update(native_probe_status=True)),("foreign_release",lambda p:p.update(release_attempt_id="other")),("healthy_candidate",lambda p:p["failed_candidate"].update(ready_replicas=1)),("fresh_403",lambda p:p.update(native_probe_status=403))]: + r=copy.deepcopy(probe);mutate(r) + try:recovery_authority(r,cache,journal,"a"*64,tests.REVISION,sealed,deps,"rollback",tests.NOW) + except ValueError:results["recovery_"+label+"_refused"]=True +try:recovery_authority(probe,cache,journal,"a"*64,tests.REVISION,sealed,deps,"rollback",tests.NOW+datetime.timedelta(minutes=31)) +except ValueError:results["recovery_31min_refused"]=True +metadata=tests.OutcomeMetadataAndOutage();metadata.test_actual_command_mocked_opener_never_prints_private_fields();results["provider_command_synthetic_private_output_withheld"]=True +print(json.dumps(results,sort_keys=True)) +if len(results)!=12 or not all(results.values()):raise SystemExit(1) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa new file mode 100644 index 0000000..80eefe4 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/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-zlib-image-release/review-history/platform481/objects/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785 b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785 new file mode 100644 index 0000000..cb3790a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/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-zlib-image-release/review-history/platform481/objects/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a new file mode 100644 index 0000000..2fb1d2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/objects/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-zlib-image-release/review-history/platform481/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/original-manifest.json new file mode 100644 index 0000000..3b8db14 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/platform481/original-manifest.json @@ -0,0 +1,912 @@ +[ + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/mapping.json", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/mapping.json", + "original_sha256": null, + "staged_sha256": "e1aaea000c7de1be6cde62499d9fe2705c1e31b3fb8904fafa5333537978e785" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/changes-requested-aa941510/original-manifest.json", + "original_sha256": null, + "staged_sha256": "aa941510645a655190c967adb4a04f89dfae9c625981a27552dea8a27216df7f" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "796dbbff5c7ca61af2c84c2f2ad3de23b56f67210a30bded23a1ff5db806d26f" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "60507a1000a216623a3d53b21e64c6f4569b1aa064781d3ac672a9fa130e813c" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "e24b3fdae42721342a26ebe34caf57c2d21153ff855e584a0c4ebd3eb9adb349" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "dac8209ec57adc6df16673079f88a60cc56e89294de9389bc219ea19fdf51b5e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "7458222049d8df2f01f2ce359b5864ae41cd73054ee59659ca8cd8ac17cf73ac" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "09b0a8ed6c3c7d1e94f5f703a2d5834ca26fc166cfc8f4f9b4511ab70ec16ac9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "44be75acb94d8125efb9416dea91059aeeb79625d23c7959bdc099a95c26a9ca" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "7ac1d698cab2dfbde6bc0a84bcadd2c3229d24f4a4a59125fe72b2856fa82e07" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "763f30c1433d1ca872b029519ec46ad1b97c47d60b7ea0eea0275a2c6b647dc3" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "741b490bdb315896f05f2e91404c02765517dc1beea81fa590017fccafd299b4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "040144321c69622c223a8437832a3c5a4a9595fc37774fde5ff0ad676828ebf0" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9b458e2b4d418525987b6cb1b9a160c4b1a2c621625c1b5c571ea5c77e9d4361" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "aa86921fe37fcff382676490f937af2e62bd6472a6b4700c862aaf3ce4ab8225" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3c76c6a8f95dcb55183583a937a4428b745a5c918643de8f2a2bc11dee846d98" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f586a511c1921490185bab95334f27de6d3cca20b348df20d18bcb9257d7ae35" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "48b0f0baf4efc239111411ad7d1c291f8eceaa0ddf1414dac73d49ccdb3bbe70" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "8154c90745d860b2984e4616f0bb1c35889b07b7ff8b841e7430db7592a15b7a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "196e2cef9ba38f075b458f164f05b5df594d188ee84b210744ef94c31f753294" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "15b3fc9c708593adb52d9eb240c1a6b55d5ac43b1637b8047499f15e525e368f" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a992d799bc07e8fbf05b894a5b184b11092f0041ee68187e59a23c5395b263e9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "4a529f57b886260f8d1b109e06e487a936fa1eb5eeb79dbbd9e4e7a05f9ae2e9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "609250d2d15e31128d0331354babbaed6c27ea165cdfcbe893d14e932237dd1a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a187eae16bd6eb8b05fdbffc860a7e87b62e726379fde92915de15d6d8bd4290" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "5ab431b060c2417df920c6268a9f39181b0164fc887b5dc3359c4c1d70270ebd" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "354db3948f878ad14f790b02658739d0b620acfdebe0bcfd492667846e457fdf" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "4f6633dbbfd522465da60156b811a1dc29ebad645752d4b1fd72b5f49afaefae" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6c76cedd0abc4a4261cfcb69c6597611c282bd4fed8b6aaf77aff04fdf942529" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "1bbce81bc6758434354157f8601534320c5d0290587908fd15a6d25e3fa57f47" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9bad6db5fbc2178d31b04120016a41830c3552fbb9e2517b718f9bbe87cf649e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "383332cd4fd27a8b36e63a4d79addc43eb68615f742328d4577bfc2b467e2278" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1c5d9e249dc00600449998360faf6e8da0206b568c76d155602c4645fa5fce4" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "d58e60bdc69458fe42af8248e02acd924b3b605c828877352a7d9a3953e90124" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fd38385e3687ec6f9886d5025b394463c252b8198b0426c56f95740139eb7e9b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "a1d29ea6822be12817b2d60109cec44b061d167f147b10f9aa352529e1a4c475" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "92bbf8a891c7ef78df48430901219d8d07073cba74112a307a6d8bdec509e8dd" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "30607043a4ca44e42024b63659ae10993c14c7a04e7c5685255ccafe4d3fb55c" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6f173d6b257e9f0e4f360390e5846380eba7ecd5cadfd55c22b998bd7e7de844" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "56637994dfdae46a6f9ab442c2ff9b259212650b35eb98d896c5e837f01ce2f9" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "51b9983d2a806240f562dcb951955fc8360c181e6d08a8dfdcba95361c6dd596" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "dd4eecf0c103dca7922094a8beeb99b77ae96fd1d5fe532e37bd833daa02614e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "6442676dcfd941f0a05a4cb79a02dea839fcd332d82b2154c15cf6db68de5889" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "aaaa91061bb036e6d228b1c1bd4333578dc948cb2bb5ac8ba269429121e7321a" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "b0811da2d3bd5938733f0078e5fec8e19a6d9752c4277b80bfe9837ed72c6a3b" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "ecddcb00127774a17d5cf553417c60d1b6fb753b6eb91a49dabb7fc52678595e" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "112e0aa642a7f48edf8073eee180b62d5ab6000aa4a6197ea6ffc10d7087beb0" + }, + { + "repo": "railiance-platform", + "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", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/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", + "original_sha256": null, + "staged_sha256": "d162fda35ac46502f14cea91d7d614ce5041e15eae0d4705ede4bf9efc18b36a" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/final-agreement-probes.json", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/final-agreement-probes.json", + "original_sha256": null, + "staged_sha256": "d23f10a3eca61ee3fb9c20213621122a394679a3f97c1abd8e91edff089803aa" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/final481-changes-requested-review.json", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/final481-changes-requested-review.json", + "original_sha256": null, + "staged_sha256": "faeb2b4a9f57a3db029197d4488b528d0a93b6464bf60ade9b0ee189f5a9a95a" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/independent_final_probes.py", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/independent_final_probes.py", + "original_sha256": null, + "staged_sha256": "c29eba9ff32bd9d8ed9e825a4acf8ba692e19a03087fd7e7a55aa0d9e1fc2d43" + }, + { + "repo": "railiance-platform", + "path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/unissued-final-technical-draft.json", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/unissued-final-technical-draft.json", + "original_sha256": null, + "staged_sha256": "be936ee74899f9a2c2bee2e12560fd5e7aaeaa6fb6e38e717ef9dabbdf73055f" + }, + { + "repo": "railiance-platform", + "path": "intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "staged_path": "/tmp/infd-zlib-release-platform-agreement-stage/railiance-platform/intakes/RPF-IN-0009-infd-zlib-native-release-review.md", + "original_sha256": null, + "staged_sha256": "8261e4f08dc73410a1c507d562e0b3fae8629ee1f8c39ed16b3c926744a816f6" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json new file mode 100644 index 0000000..a9c083c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/archive-map.json @@ -0,0 +1,386 @@ +[ + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md" + }, + { + "repo": "informed-decision", + "path": "docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json" + }, + { + "repo": "informed-decision", + "path": "workplans/ADHOC-2026-10-11.md", + "sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md" + }, + { + "repo": "informed-decision", + "path": "docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "archive": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json new file mode 100644 index 0000000..f6ed76b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json @@ -0,0 +1,455 @@ +{ + "owner": "informed-decision", + "decision": "changes_requested", + "scope": "same T09 immutable143 source findings; initialc67 retained exactly; no native approval", + "files": [ + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": null, + "staged_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": null, + "staged_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/workplans/ADHOC-2026-10-11.md", + "original_sha256": "b7c3dda21fcf19644a24b2c656662d20f030327f47b9cea5e95032a2cfcad3e8", + "staged_sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a" + }, + { + "repo": "informed-decision", + "path": "docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": null, + "staged_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": null, + "staged_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": null, + "staged_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": null, + "staged_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": null, + "staged_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": null, + "staged_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-product-refined-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py new file mode 100644 index 0000000..b897ef9 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py new file mode 100644 index 0000000..31cbd1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py @@ -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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md new file mode 100644 index 0000000..aca7f5c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json new file mode 100644 index 0000000..269ae42 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json new file mode 100644 index 0000000..f1ed624 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json @@ -0,0 +1,9 @@ +{ + "remote_keyword_binding_refused_before_body": true, + "copy_payload_has_snapshot_identity": false, + "remote_payload_has_operation_intent": false, + "empty_detector_coverage_accepted_as_full_scan": true, + "native_commands": false, + "private_data": false, + "synthetic_source_probe": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py new file mode 100644 index 0000000..948b489 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py @@ -0,0 +1,24 @@ +from pathlib import Path +import importlib.util,sys,json,datetime,inspect +from unittest.mock import patch +import subprocess +E=Path(__file__).parent/'frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution';sys.path.insert(0,str(E)) +import actuator,authority_journal,native_program +result={} +try:inspect.signature(actuator.remote).bind('drill-backup','e'*40,{},operation_intent=None) +except TypeError:result['remote_keyword_binding_refused_before_body']=True +else:result['remote_keyword_binding_refused_before_body']=False +captured=[] +def fake(argv,body=None,timeout=90): + captured.append(json.loads(__import__('ast').literal_eval(body)));return subprocess.CompletedProcess([],0,'{"all_checks_pass":true}','') +with patch.object(native_program,'PROGRAM','__PAYLOAD__'),patch.object(actuator,'run',fake):actuator.remote('drill-copy','e'*40,{}) +result['copy_payload_has_snapshot_identity']='snapshot_identity' in captured[0] +result['remote_payload_has_operation_intent']='operation_intent' in captured[0] +now=datetime.datetime(2026,10,11,12,tzinfo=datetime.timezone.utc) +r={'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-11T11:59:00Z','db_metadata':{'Version':2,'UpdatedAt':'2026-10-11T10:00:00Z','NextUpdate':'2026-10-11T18:59:50Z'},'db_sha256':'a'*64,'full_report_sha256':'b'*64} +try:authority_journal.fresh_scan(r,{'Results':[{}]},now) +except ValueError:result['empty_detector_coverage_accepted_as_full_scan']=False +else:result['empty_detector_coverage_accepted_as_full_scan']=True +result.update(native_commands=False,private_data=False,synthetic_source_probe=True) +print(json.dumps(result,indent=2)) +assert result['remote_keyword_binding_refused_before_body'] and not result['copy_payload_has_snapshot_identity'] and not result['remote_payload_has_operation_intent'] and result['empty_detector_coverage_accepted_as_full_scan'] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json new file mode 100644 index 0000000..5e5b541 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json @@ -0,0 +1,9 @@ +{ + "all68_observed_hashes_verified": true, + "current_helper_tests_pass": 19, + "mocked_wiring_and_coverage_findings": 4, + "missing_fresh_scan_historical_corrected_in81": true, + "formal_decision": "changes_requested", + "native_actions": false, + "work_record_before_review": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json new file mode 100644 index 0000000..fe3bc0a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json @@ -0,0 +1,8 @@ +{ + "all_initial_wiring_and_emptycoverage_counterexamples_resolved": true, + "snapshot_and_operation_intents_forwarded": true, + "remote_keyword_signature_accepts": true, + "empty_detector_scan_refuses": true, + "native_commands": false, + "real_credentials": false +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py new file mode 100644 index 0000000..3c6572c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py new file mode 100644 index 0000000..66736d3 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py @@ -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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json new file mode 100644 index 0000000..516ef23 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json @@ -0,0 +1,358 @@ +{ + "image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ], + "image_config_rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + }, + "image_source_labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "os": { + "Family": "alpine", + "Name": "3.24.1" + }, + "inventory": [ + [ + "lang-pkgs", + "python-pkg", + "PyJWT", + "2.15.1", + "pkg:pypi/pyjwt@2.15.1" + ], + [ + "lang-pkgs", + "python-pkg", + "cffi", + "2.1.1", + "pkg:pypi/cffi@2.1.1" + ], + [ + "lang-pkgs", + "python-pkg", + "cryptography", + "50.0.1", + "pkg:pypi/cryptography@50.0.1" + ], + [ + "lang-pkgs", + "python-pkg", + "informed-decision", + "0.2.0", + "pkg:pypi/informed-decision@0.2.0" + ], + [ + "lang-pkgs", + "python-pkg", + "pycparser", + "3.0", + "pkg:pypi/pycparser@3.0" + ], + [ + "lang-pkgs", + "python-pkg", + "waitress", + "3.0.2", + "pkg:pypi/waitress@3.0.2" + ], + [ + "os-pkgs", + "alpine", + ".python-rundeps", + "20260901.001029", + "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-baselayout", + "3.7.2-r1", + "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-baselayout-data", + "3.7.2-r1", + "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-keys", + "2.6-r0", + "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "alpine-release", + "3.24.1-r0", + "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "apk-tools", + "3.0.6-r0", + "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "busybox", + "1.37.0-r31", + "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "busybox-binsh", + "1.37.0-r31", + "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ca-certificates", + "20260611-r0", + "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ca-certificates-bundle", + "20260611-r0", + "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "gdbm", + "1.26-r0", + "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "keyutils-libs", + "1.6.3-r4", + "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "krb5-conf", + "1.0-r2", + "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "krb5-libs", + "1.22.2-r1", + "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libapk", + "3.0.6-r0", + "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libbz2", + "1.0.8-r6", + "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libcom_err", + "1.47.4-r0", + "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libcrypto3", + "3.5.8-r0", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libffi", + "3.5.2-r1", + "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libintl", + "1.0-r0", + "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libncursesw", + "6.6_p20260516-r0", + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libnsl", + "2.0.1-r2", + "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libpanelw", + "6.6_p20260516-r0", + "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libssl3", + "3.5.8-r0", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libtirpc", + "1.3.5-r1", + "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libtirpc-conf", + "1.3.5-r1", + "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libuuid", + "2.42.3-r1", + "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "libverto", + "0.3.2-r2", + "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "musl", + "1.2.6-r2", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "musl-utils", + "1.2.6-r2", + "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ncurses-terminfo-base", + "6.6_p20260516-r0", + "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "readline", + "8.3.3-r1", + "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "scanelf", + "1.3.9-r1", + "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "sqlite-libs", + "3.53.4-r0", + "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "ssl_client", + "1.37.0-r31", + "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "tzdata", + "2026c-r0", + "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "xz-libs", + "5.8.3-r0", + "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1" + ], + [ + "os-pkgs", + "alpine", + "zlib", + "1.3.2-r1", + "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + ] + ], + "inventory_canonical_sha256": "1fd5bfb2d7c04a7316a283adbea0f54f04f0c5acbb218b11e0c5677bfe87c464", + "published_fullreport_sha256": "2ff68e765b9c65292611d5a969202a7654637168edefcedac5d2c7634009edae", + "publication_manifest_sha256": "6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9", + "scope": "Exact immutable published archive identity and inventory; findings must be checked anew on fresh DB." +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json new file mode 100644 index 0000000..8ee6bbf --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json @@ -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: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 + }, + "documents": [ + { + "digest": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "media_type": "text/markdown", + "content_base64": "IyBSZXF1ZXN0ZWQgZGVjaXNpb24KCkFwcHJvdmUgdGhlIGV4YWN0IG5ldyBUMDUgemxpYi1vbmx5IGltYWdlIHJlbGVhc2UgYW5kIHByb3RlY3RlZCBzYW1lLXNjaGVtYSBjb21wYXRpYmlsaXR5IGRyaWxsLCBhZnRlciBmaW5hbCBpbmRlcGVuZGVudCBQcm9kdWN0IGFuZCBQbGF0Zm9ybSBhY2tub3dsZWRnbWVudHMuIFRoaXMgcGFja2V0IGlzIHByZXBhcmVkIGFuZCB1bmFwcHJvdmVkOyBmcmVzaCByb2xsYmFjayBzZXJ2ZXIgZHJ5LXJ1biBwYXNzZWQgd2l0aCBleGFjdGx5IHRoZSBiYXNlbGluZSBpbWFnZSBhbmQgZW1wdHkgZGlmZi4gUm9vdCByZXRhaW5zIGV4YWN0IGZpbmFsIG93bmVyIHNvdXJjZSByZXZpc2lvbiBhbmQgaW5kZXBlbmRlbnQgYWNrbm93bGVkZ21lbnRzIGJlZm9yZSBhc2tpbmcgZm9yIG5hdGl2ZSBmb3VuZGVyIGRpc3Bvc2l0aW9uLiBUaGUgcHJpb3IgVDA0IGFwcHJvdmFsIGlzIGV4Y2x1ZGVkLgoKVGhlIGFkbWl0dGVkIG93bmVyIENJIHB1Ymxpc2hlZCBpbW11dGFibGUgaW1hZ2UgZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyBmcm9tIHNvdXJjZTliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMuIEl0cyBhY3R1YWwgZnVsbCBzY2FuIHJlcG9ydHMgemVybyBmaW5kaW5ncyBhY3Jvc3M0NHBhY2thZ2VzLiBUaGUgc2FtZSBzY2FuIERCIGZpbmRzIG9uZU1FRElVTSBvbiBjdXJyZW50aW1hZ2U3NjNjLiBTaWduZWQgb2ZmaWNpYWwgQWxwaW5lIHpsaWIxLjMuMi1yMSBpcyB0aGUgc29sZSBwYWNrYWdlIGNoYW5nZTsgYWN0dWFsIHB1Ymxpc2hlZCBmaWxlc3lzdGVtIHByb29mIHNob3dzIG9ubHlsaWJ6IGFuZEFQS2luc3RhbGxlZGRhdGFiYXNlIGNoYW5nZXMsIHplcm8zMTNkaXJlY3RvcnltZXRhZGF0YSBjaGFuZ2VzLCByZXRhaW5lZG5pbmViYXNlbGF5ZXJzIGFuZCB1bmNoYW5nZWQzNmFwcGxpY2F0aW9uZmlsZXMvcHVycG9zZXBvbGljeS9jb25maWcvY3JlZGVudGlhbHMvYXVkaWVuY2UvcmVzb3VyY2VzLiBSZWdpc3RyeS10by1kYWVtb24gY29uZmlnIHNlcmlhbGl6YXRpb24gZGlmZmVycyB1bmRlciBjbG9zZWQgdmVyaWZpZWQgbm9ybWFsaXphdGlvbiwgd2l0aG91dCBydW50aW1lIGNoYW5nZS4KClRoZSBleGFjdCBvcmRlcmVkIHByb3RlY3RlZCBkcmlsbCBhbmQgcmVsZWFzZSBhcmUgc3BlY2lmaWVkIGluIG5hdGl2ZS1iYWNrdXAtcmVzdG9yZS1wcm90b2NvbC5tZCBhbmQgaGFzaC1ib3VuZCBleGVjdXRpb24gYnVuZGxlLiBOZXcgYmFja3VwIHBhdGhzLCBpc29sYXRlZCBjbG9uZSBhbmQgam91cm5hbCBhcmUgZGlzdGluY3QgZnJvbSBvbGQgZXZpZGVuY2UuIFJlYWwgcHJpdmF0ZSBkYXRhIHdpbGwgZW50ZXIgb25seSBhcHByb3ZlZCBwcml2YXRlIGN1c3RvZHkgYW5kIHRoZSBpc29sYXRlZCBuby1uZXR3b3JrIGNsb25lOyBjb250ZW50IG5ldmVyIGVudGVycyBwdWJsaWMgZXZpZGVuY2UuIEZhaWxlZC91bmNlcnRhaW4gcGhhc2Ugc3RhdGVzIHJlbWFpbiBkdXJhYmxlIGFuZCBjYW5ub3QgYmUgcmV0cmllZC4gUHJpb3IgVDA0IGZhaWxlZCBjb3B5L3ZlcmlmeSBhcmUgcHJlc2VydmVkLgoKQWZ0ZXIgc2NoZW1hNS9pbnRlZ3JpdHkvZXhhY3RjbG9uZWNvdW50cyBwYXNzIGFuZCBjbG9uZSBjbGVhbnVwIHN1Y2NlZWRzLCBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5IHByZWNlZGVzIHRoZSBleGFjdCBtYW51YWwgaW1hZ2Utb25seSBEZXBsb3ltZW50IHN5bmMuIEN1cnJlbnQgYmFzZWxpbmUgaXMgaGVhbHRoeWdlbmVyYXRpb24yNS9pbWFnZTc2M2MvQXBwbGljYXRpb25jOTYuIEltbXV0YWJsZUNNNmMvUFZDL1BvZGNvbmZpZ3VyYXRpb24vUERQIG9yaWdpbnMgcmVtYWluIHNlYWxlZC4gRnJlc2hub2RlQ1BVMzQ2MG9mNDAwMG0gc3VwcG9ydHMgdW5jaGFuZ2VkUmVjcmVhdGUsIHdpdGggYW5vdGhlciBjaGVjayBiZWZvcmUgZWZmZWN0LiBCcmllZiBhdmFpbGFiaWxpdHkgaW50ZXJydXB0aW9uIGV4cGVjdGVkLgoKUm9sbGJhY2sgcmVzdG9yZXMgRGVwbG95bWVudGltYWdlNzYzYyBhbmRBcHBsaWNhdGlvbmM5NiB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBvbGQgc25hcHNob3QgcmVzdG9yYXRpb24uIFNlcGFyYXRlIGluc3RhbGxlZC9uYXRpdmUgaGVhbHRoL2N1c3RvZHkvUERQLWdhdGVkIHJlYWRiYWNrIGFuZCBhY3R1YWwgbmF0aXZlIGltYWdlIHJlc2NhbiBwcmVjZWRlIFQwNSBjbG9zdXJlLiBBbGxwaGFzZSBzdGFydHMgZXhwaXJlT2N0MTIgMjM6NTk6NTlaOyByZWxlYXNlIHJlc2VydmVzMzBtaW51dGVzZm9ydmVyaWZpY2F0aW9uYW5kcmVjb3ZlcnkuIEFmdGVyZXhwaXJ5IGEgbmV3Zm91bmRlcmRlY2lzaW9uIGlzIHJlcXVpcmVkLiBFVVIwbmV3cmVjdXJyaW5naW5mcmFzdHJ1Y3R1cmUsIGJvdW5kZWRwcml2YXRlIHN0b3JhZ2UgYW5kdW5wcmljZWRhdHRlbmRlZHRpbWUuIE5vIG5ld2RvY3RyaW5lL2F1dG9waWxvdC9jcmVkZW50aWFsZ3JhbnQgaXMgYXV0aG9yaXplZC4K" + }, + { + "digest": "sha256:29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtcmVsZWFzZS1wcm9wb3NhbCIsCiAgInZlcnNpb24iOiAxLAogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWI4NTA5MS1yMSIsCiAgInRyaWFsX2lkIjogImluZmQtemxpYi0yMDI2MTAxMS1yMSIsCiAgInN0YXRlIjogInByZXBhcmVkLXVuYXBwcm92ZWQiLAogICJtZW1vX2lkIjogImluZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMSIsCiAgIm1lbW9fdmVyc2lvbiI6IDEsCiAgInRhc2siOiAiSU5GRC1XUC0wMDA5LVQwNSIsCiAgImNhbmRpZGF0ZV9pbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJhcnRpZmFjdF9zb3VyY2VfcmV2aXNpb24iOiAiOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYyIsCiAgInByaW9yX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInByaW9yX2FwcGxpY2F0aW9uX3JldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiLAogICJzb3VyY2VfcmV2aXNpb24iOiBudWxsLAogICJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQiOiB0cnVlLAogICJuYXRpdmVfYWN0aW9uc19leGVjdXRlZCI6IGZhbHNlLAogICJhcHByb3ZhbF9pZCI6IG51bGwsCiAgImF1dGhvcml0eV9tb2RlIjogIkFETUlOSVNURVIiLAogICJ0YXJnZXQiOiAicmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbiIsCiAgImNvc3RfZXN0aW1hdGVfZXVyIjogMCwKICAicmlzayI6ICJQcml2YXRlIHNhbWUtc2NoZW1hIGJhY2t1cCBjb3BpZXMgYW5kIGJyaWVmIFJlY3JlYXRlIGF2YWlsYWJpbGl0eSBnYXAuIEZhaWxlZCBvciBhbWJpZ3VvdXMgcGhhc2VzIHJldGFpbmVkOyBubyByZXBsYXkuIFJvbGxiYWNrIGNoYW5nZXMgRGVwbG95bWVudCBpbWFnZS9zb3VyY2Ugb25seSwgcmV0YWlucyBsYXRlc3QgZGF0YWJhc2UuIiwKICAiZXhlY3V0ZV9ieSI6ICIyMDI2LTEwLTEyVDIzOjU5OjU5WiIsCiAgInJlbGVhc2VfbXVzdF9zdGFydF9ieSI6ICIyMDI2LTEwLTEyVDIzOjI5OjU5WiIsCiAgIm1heF9zbmFwc2hvdF9ieXRlcyI6IDUzNjg3MDkxMiwKICAibWF4aW11bV9uZXdfc25hcHNob3RfcGF5bG9hZF9ieXRlc19lYWNoX3NpdGUiOiAxMDczNzQxODI0LAogICJsb2NhbF9leHRyYV9kaXNwb3NhYmxlX2Nsb25lX21heF9ieXRlcyI6IDUzNjg3MDkxMiwKICAicHJpdmF0ZV9tZXRhZGF0YV9hbmRfc3FsaXRlX3NpZGVjYXJzX2FkZGl0aW9uYWxfaGVhZHJvb21fYnl0ZXMiOiAxNjc3NzIxNiwKICAidW5ib3VuZF9pbnB1dHMiOiBbCiAgICAiZXhhY3QgY29tbWl0dGVkIG93bmVyIHJlbmRlcmluZyByZXZpc2lvbiByZXRhaW5lZCBpbiByb290IHN1cGVydmlzZWQgcmVjZWlwdCIsCiAgICAiUHJvZHVjdCBhbmQgUGxhdGZvcm0gZmluYWwgYWNrbm93bGVkZ21lbnRzIiwKICAgICJjb25maXJtZWQgZm91bmRlciBleGFjdCBuZXcgZGlzcG9zaXRpb24iCiAgXSwKICAicHVibGlzaGVkX3ZlcmlmaWNhdGlvbl9zaGEyNTYiOiAiZGQ0ZWVjZjBjMTAzZGNhNzkyMjA5NGE4YmVlYjk5Yjc3YWU5NmZkMWQ1ZmU1MzJlMzdiZDgzM2RhYTAyNjE0ZSIsCiAgIm5hdGl2ZV9yZWFkb25seV9wcmVmbGlnaHRfc2hhMjU2IjogIjU2NjM3OTk0ZGZkYWU0NmE2ZjlhYjQ0MmMyZmY5YjI1OTIxMjY1MGIzNWViOThkODk2YzVlODM3ZjAxY2UyZjkiLAogICJleGVjdXRvcl9wbGFuX3NoYTI1NiI6ICJmZDM4Mzg1ZTM2ODdlYzZmOTg4NmQ1MDI1YjM5NDQ2M2MyNTJiODE5OGIwNDI2YzU2Zjk1NzQwMTM5ZWI3ZTliIiwKICAiZXhlY3V0aW9uX2J1bmRsZV9zaGEyNTYiOiAiMmJhMjVmN2QzZWZiYjEwOTVlMGEwZGQ3YmJiNTc3Zjc2YWYwNWM0MjVjYjkyOGY5YTFjN2JjNTJlYTlmNTMyYiIsCiAgInJvbGxiYWNrX3ByZWZsaWdodF9zaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgInBvc3RfcmVhZHlfbmF0aXZlX3Byb3ZpZGVyX3Byb2JlIjogImNhbm9uaWNhbCBsaWZlY3ljbGUub3V0Y29tZXMgU09VUkNFMSB0aHJvdWdoIGV4aXN0aW5nIGFkbWl0dGVkIFN0YXRlSHViIGRpc3BhdGNoZXI7IGNyZWRlbnRpYWxzIHN0YXkgaW5zaWRlIFBvZDsgYm91bmRlZCBtZXRhZGF0YSBjb3JyZWxhdGVkIHRvIHZlcmlmaWVkIGNhbmRpZGF0ZSBpbWFnZS9Qb2Qvc291cmNlIiwKICAiZnJlc2hfc2Nhbl9jb250cmFjdF9zaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgInByZXBhcmF0aW9uX2ZhaWx1cmVfaGlzdG9yeV9zaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIKfQo=" + }, + { + "digest": "sha256:3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "media_type": "text/markdown", + "content_base64": "IyBUMDUgemxpYjg1MDkxIHJlbGVhc2Ug4oCUIHByZWxpbWluYXJ5LCB1bmFwcHJvdmVkCgpUaGlzIGlzIGEgZGlzdGluY3QgcHJvcG9zYWwvdHJpYWwgZm9yIGV4aXN0aW5nIElORkQtV1AtMDAwOS1UMDUuIFRoZSBhY3R1YWwgVDA0IHNvdXJjZTIgYWNjZXB0YW5jZSBkb2VzIG5vdCBhdXRob3JpemUgaXQuIFByZXZpb3VzIFIxIGNvcHkgYW5kIFIyIHZlcmlmeSBVTkNFUlRBSU4gam91cm5hbCBzdGF0ZXMgcmVtYWluIHVudG91Y2hlZC4gSU5GRC1JTi0wMDEwIHJlbWFpbnMgYW4gdW5wcm9tb3RlZCBnZW5lcmFsIHZlcmlmaWVyIHJlc2lkdWFsOyB0aGlzIG5ldyB0YXNrLXNwZWNpZmljIHZlcmlmaWVyIGlzIGEgcHJlcmVxdWlzaXRlIG9mIGFjdGl2ZSBUMDUsIG5vdCBhbiBhbWVuZG1lbnQgb2YgdGhlIG9sZCBhcHByb3ZlZCBoZWxwZXIuCgpFeGFjdCBpbnRlbmRlZCBpbWFnZSBmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzIHdhcyBidWlsdCBieSBhZG1pdHRlZCBvd25lciBDSTExNTM0L3J1bjQgZnJvbSA5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjLiBQdWJsaWNhdGlvbiBpcyBub3QgaW5zdGFsbGVkIGFjY2VwdGFuY2UuIEZpbmFsIHBhY2tldCByZXF1aXJlcyBpbmRlcGVuZGVudCBwdWJsaXNoZWQtaW1hZ2Ugc2Nhbi9ydW50aW1lL2ZpbGVzeXN0ZW0vc291cmNlIHByb29mIGFuZCBmcmVzaCByZWFkLW9ubHkgbmF0aXZlIHByb2plY3Rpb24vb25lLW9iamVjdCBkcnktcnVuIGV2aWRlbmNlLiBVbnRpbCBhbGwgZmluYWwgaW5wdXRzIGFuZCBpbmRlcGVuZGVudCBvd25lciBhY2tub3dsZWRnbWVudHMgYXJlIGZyb3plbiwgZXhlY3V0aW9uLXBsYW4gc3RhdGUgcmVtYWlucyBwcmVsaW1pbmFyeSBhbmQgdGhlIGFjdHVhdG9yIHJlZnVzZXMgYmVmb3JlIGFueSBhdXRob3JpdHksIGpvdXJuYWwgb3IgbmF0aXZlIGFjdGlvbi4KCkFmdGVyIGEgTkVXIGV4YWN0IGNvbmZpcm1lZCBmb3VuZGVyIGFjY2VwdGFuY2UsIHJvb3QgZnJlc2hseSBhdXRoZW50aWNhdGVzIGZpeGVkLW9yaWdpbiBuYXRpdmUgc291cmNlLXZlcnNpb24xIG91dGNvbWVzIGJlZm9yZSBlYWNoIHBoYXNlLiBSZWNlaXB0IGZpbGVzIGFyZSBzdXBlcnZpc2VkIGJvb2trZWVwaW5nLCBub3Qgc2lnbmVkIGdyYW50cyBvciBhdXRvbm9teS4gV3JvbmcgdGFzaywgc291cmNlLCBtZW1vL3ZlcnNpb24sIHN0YWxlL3BlbmRpbmcvYWdlbnQgZGlzcG9zaXRpb24sIG9sZCBUMDQgYWNjZXB0YW5jZSBvciBjaGFuZ2VkIGlucHV0cyByZWZ1c2UuIFJvb3QgcmV0YWlucyBleGFjdCBhcHByb3ZlZCBzb3VyY2UgcmV2aXNpb24vZGlnZXN0cyBhbmQgYWN0aW9uIHJlc3VsdHMgaW4gc3VwZXJ2aXNpb24uIEFwcHJvdmFsIGRvZXMgbm90IHByb21vdGUgYW55IGFnZW50LgoKRml4ZWQgcGhhc2Ugb3JkZXI6IGRyaWxsLWJhY2t1cCDihpIgZHJpbGwtY29weSDihpIgb2ZmbGluZS12ZXJpZnkg4oaSIGNsZWFudXAtb2ZmbGluZSDihpIgY3V0b3Zlci1iYWNrdXAg4oaSIGN1dG92ZXItY29weSDihpIgcmVsZWFzZSDihpIgdmVyaWZ5LiBOZXcgcHJpdmF0ZSBuYXRpdmUgL2RhdGEvcHJpdmF0ZS96bGliODUwOTEtcjEsIHJvb3QgLnByaXZhdGUtYmFja3Vwcy8yMDI2MTAxMS1pbmZkLXpsaWItcjEgYW5kIGxvY2FsIHZvbHVtZSBpbmZkLXpsaWItcjEtcmVzdG9yZS0yMDI2MTAxMSBhcmUgZGlzdGluY3QgZnJvbSBhbGwgVDA0IGN1c3RvZHkuIE5ldyBwcml2YXRlIGpvdXJuYWwgaW50ZW50IGlzIGZzeW5jZWQgUlVOTklORyBiZWZvcmUgZGlzcGF0Y2g7IG5vIGF0dGVtcHRlZCBwaGFzZSByZXBsYXkuIEZpeGVkIG91dHB1dCBzY2hlbWEgY29udGFpbnMgb25seSBjb3VudHMsIGhhc2hlcywgb2JqZWN0IGlkZW50aXR5IGFuZCBib29sZWFuIHJlc3VsdHM7IHJhdyBlcnJvcnMgYW5kIHByaXZhdGUgY29udGVudCBhcmUgd2l0aGhlbGQuIEV4aXN0aW5nIG5hdGl2ZSBzbmFwc2hvdHMvZGF0YWJhc2Uvc2lkZWNhcnMgYXJlIG5ldmVyIHJlbW92ZWQgb3IgcmVzdG9yZWQgb3ZlciBjdXJyZW50IGRhdGEuCgpGcmVzaCBiYWNrdXAgaW5zcGVjdGlvbiB1c2VzIGNvcGllZCBleHBsaWNpdC1jbG9zZSBTUUxpdGUgaGVscGVyczogbGl2ZSBhbmQgb2ZmbGluZSBjbG9uZSByZWFkZXJzIGFyZSBtb2RlPXJvL3F1ZXJ5X29ubHkgYW5kIFdBTC1hd2FyZSwgYmVmb3JlIGFueSBTdG9yZS9hZG1pbiBvcGVuLiBJbW11dGFibGUgcmVhZGVyIGlzIHVzZWQgb25seSBmb3IgZnJlc2hseSBjbG9zZWQgaGFzaC1ib3VuZCBwcml2YXRlIHNuYXBzaG90IHdpdGggYWJzZW50L3plcm8gV0FMIGZyYW1lcyBhbmQgc3RhYmxlIGlkZW50aXR5L21ldGFkYXRhL2RpZ2VzdCBiZWZvcmUvYWZ0ZXIgcmVhZC9jb3B5LiBNYWluIGFuZCBzaWRlY2FycyByZW1haW4gcmV0YWluZWQuIFNjaGVtYSBtdXN0IGVxdWFsNSwgaW50ZWdyaXR5IG9rLCBhbmQgZXhhY3Qgc25hcHNob3QvaXNvbGF0ZWQgY2xvbmUgY291bnRzIG1hdGNoIGJlZm9yZS9hZG1pbi9hZnRlci4gVGhlIGRldGFjaGVkIGxvY2FsIGNsb25lIGhhcyBuZXR3b3JrIG5vbmUsIHJlYWRvbmx5IHJvb3QsIG5vIHNlcnZpY2UvcnVudGltZSBjb25maWcvY3JlZGVudGlhbCBtb3VudHM7IG9ubHkgbmFycm93bHkgc2NvcGVkIFVJRDAgQ0FQX0NIT1dOIGluaXRpYWxpemVyIHByZWNlZGVzIFVJRDEwMDAxIHJlYWRzL2FkbWluLiBPcmlnaW5hbCBwcml2YXRlIGNvcHkgaXMgaGFzaC1zdGFibGUuIENsZWFudXAgcmVtb3ZlcyBvbmx5IHRoZSBkaXNwb3NhYmxlIHZvbHVtZSB3aG9zZSBub25jZS9sYWJlbHMvY3JlYXRpb24gbWV0YWRhdGEgbWF0Y2ggdGhpcyB0cmlhbCwgYmVmb3JlIGN1dG92ZXIuCgpFYWNoIHNuYXBzaG90IGlzIGJvdW5kZWQ1MTJNaUIuIEF0IG1vc3QgdHdvIG5ldyBzbmFwc2hvdHMgb2NjdXB5IGVhY2ggbmF0aXZlL29mZmNsdXN0ZXIgY3VzdG9keSAoMUdpQiBwYXlsb2FkIGVhY2gpOyB0aGUgZGlzcG9zYWJsZSBvZmZjbHVzdGVyIGNsb25lIGFkZHM1MTJNaUIgd2hpbGUgcHJlc2VudCwgcGx1czE2TWlCIHNpZGVjYXIvbWV0YWRhdGEgcmVzZXJ2ZS4gTmV3IG5hdGl2ZSBkcmlsbCBwaGFzZSBjaGVja3MgZnJlZSBzcGFjZSBmb3IgYm90aDsgbG9jYWwgY3VzdG9keSBjaGVja3MgdHdvIHNuYXBzaG90IGJvdW5kcyBwbHVzIHJlc2VydmUuIEV4aXN0aW5nIFQwNCByZXRlbnRpb24gY29uc3VtZXMgYWRkaXRpb25hbCBwcmUtZXhpc3Rpbmcgc3BhY2UuIEVVUjAgcmVjdXJyaW5nIGluZnJhc3RydWN0dXJlIGVzdGltYXRlOyBodW1hbi9jb21wdXRlIHRpbWUgdW5wcmljZWQuCgpDdXRvdmVyIHRha2VzIGEgZnJlc2ggbmF0aXZlIGJhY2t1cCBhbmQgZXhhY3Qgb2ZmY2x1c3RlciBjb3B5LiBSZWxlYXNlIHRoZW4gcmVxdWlyZXMgbGF0ZXN0IHNjaGVtYTUgcmVhZG9ubHkgcHJvb2YsIHNlYWxlZCBQb2QvRGVwbG95bWVudC9jb25maWcvUFZDIGN1c3RvZHkgYW5kIHNhbWUgYmFzZWxpbmUgaW1hZ2U3NjNjL2N1cnJlbnQgQXBwbGljYXRpb24gc291cmNlYzk2LCBhIGhlYWx0aHkgc2luZ2xlIHRhcmdldDkyLjIwNS42Mi4yMzkgbm9kZSBhbmQgZnJlc2ggcmVxdWVzdGVkIENQVSDiiaQgYWxsb2NhdGFibGUgY2FwYWNpdHkuIFJlY3JlYXRlIGFuZCByZXNvdXJjZXMgcmVtYWluIHVuY2hhbmdlZC4gU2VydmVyIGRyeS1ydW4vY2xpZW50IGRpZmYgbXVzdCBzaG93IG9ubHkgdGhlIGltYWdlLiBBcHBsaWNhdGlvbiBVSUQvcmVzb3VyY2VWZXJzaW9uL3NvdXJjZSBDQVMgZGlzcGF0Y2hlcyBtYW51YWwgZXhhY3QgZmluYWwgcmV2aXNpb24sIGluaXRpYXRlZEJ5IGN1c3RvZGlhbi1jb2RleCwgZXhwbGljaXQgcHJ1bmU9ZmFsc2UgYW5kIG9ubHkgYXBwcy9EZXBsb3ltZW50IGluZm9ybWVkLWRlY2lzaW9uIGluIGl0cyBuYW1lc3BhY2UuIE5vIHdob2xlLUFwcGxpY2F0aW9uIHN5bmMsIG5hbWVzcGFjZS9jb25maWcvY3JlZGVudGlhbC9yZXNvdXJjZSBjaGFuZ2Ugb3IgcHJ1bmluZy4KClZlcmlmaWNhdGlvbiByZWFkcyBpbWFnZUlEL3JlYWRpbmVzcy9vd25lciBjaGFpbi9leGFjdCBjb25maWd1cmVkIFBvZCBmaWVsZHMsIHNjaGVtYTUvaW50ZWdyaXR5L21ldGFkYXRhIGNvdW50cywgaW5zdGFsbGVkIHBvbGljeSBoYXNoIGFuZCBzeW50aGV0aWMgcHVycG9zZSByZWZ1c2FscywgaGVhbHRoMjAwLCBpbnN0YWxsZWQgZml4ZWQgemxpYiBhbmQgZXhhY3QgaW1hZ2UgcHJvb2YuIEFmdGVyIGV4YWN0IGNhbmRpZGF0ZSBSZWFkeSBhbmQgdmVyaWZpZWQgcm9sbG91dCwgcm9vdCBleGVjdXRlcyBhdHRhY2hlZCBwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IGluc2lkZSB0aGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kLiBJdCBjYWxscyBjYW5vbmljYWwgbGlmZWN5Y2xlLm91dGNvbWVzIGZvciBpbmZkLTIwMjYxMDExLXpsaWItcmVtZWRpYXRpb24tcjEgU09VUkNFdmVyc2lvbjEgYXQgZGlzcGF0Y2hlciBmaXhlZCBPUklHSU4gd2l0aCBOb1JlZGlyZWN0L3Byb3h5IGRpc2FibGVkOyBleGlzdGluZyBpbnRlcm5hbCB0b2tlbl9maWxlIHN0YXlzIGluc2lkZSB0aGF0IFBvZCBhbmQgbm8gdG9rZW4vYm9keS9wcml2YXRlIGNvbnRlbnQgaXMgZXhwb3J0ZWQuIFJvb3QgcmV0YWlucyBib3VuZGVkIEhUVFAtc3VjY2VzcyBtZXRhZGF0YS9vYnNlcnZhdGlvbnRpbWUgYW5kIGNvcnJlbGF0ZXMgdmVyaWZpZWQgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UsIHRoZW4gcmVjaGVja3MgdGhvc2UgaWRlbnRpdGllcy4gVGhpcyBhY3R1YWwgcHJvdmlkZXIvUERQLWdhdGVkIHByZXNlcnZhdGlvbiBwcm9vZiBpcyBzZXBhcmF0ZSBmcm9tIGluc3RhbGxlZCBzeW50aGV0aWMyYWxsb3c4cmVmdXNlOyBib3RoIGFyZSByZXF1aXJlZCBiZWZvcmUgdGFzayBjbG9zdXJlLiBJdCBkb2VzIG5vdCBhc3NlcnQgcHJvdmlkZXIgYWR2aXNvcnkgZW1pc3Npb25zIG9yIG5ldyBkb2N0cmluZS4gQXJnbzMuNS4zIG9taXRzIGZhbHNlIHBydW5lIGluIG9wZXJhdGlvbiBzdGF0dXM6IG1pc3Npbmcgb3IgZXhhY3RmYWxzZSBpcyBhY2NlcHRlZCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBqb3VybmFsJ3MgQ09NUExFVEUgZXhwbGljaXRmYWxzZSByZXF1ZXN0LCBleGFjdCBzb3VyY2UvcmVzb3VyY2VzL2luaXRpYXRpb24sIG9wZXJhdGlvbiBzdGFydCBhZnRlciBvdXIgZHVyYWJsZSBhdHRlbXB0LCBib3VuZGVkIGZpbmlzaCBhbmQgb25lIFN5bmNlZCBEZXBsb3ltZW50IHJlc3VsdC4gVHJ1ZS9udWxsL3N0cmluZy9wcmlvci9mb3JlaWduL2V4dHJhLXJlc291cmNlIHJlc3VsdHMgcmVmdXNlLgoKUm9sbGJhY2sg4oaSIHJvbGxiYWNrLXZlcmlmeSBpcyBzZXBhcmF0ZSBhbmQgcGVybWl0dGVkIG9ubHkgYWZ0ZXIgYSByZWNvcmRlZCByZWxlYXNlIGF0dGVtcHQuIEl0IHN3aXRjaGVzIG9ubHkgQXBwbGljYXRpb24gc291cmNlIGJhY2sgdG8gYzk2IGFuZCBEZXBsb3ltZW50IGltYWdlNzYzYzsgaXQgbmV2ZXIgcmVzdG9yZXMgYW4gb2xkIHNuYXBzaG90IG92ZXIgdGhlIGxhdGVzdCBkYXRhYmFzZS4gUmVjb3ZlcnkgZGlzcGF0Y2ggd29ya3MgZXZlbiBpZiBjYW5kaWRhdGUgUG9kIGlzIGFic2VudC91bnJlYWR5IGFuZCBuZXZlciBkZXBlbmRzIG9uIGNhbmRpZGF0ZSBEQiBpbnNwZWN0aW9uLiBSZWNvdmVyeSB2ZXJpZmljYXRpb24gc2VwYXJhdGVseSByZXF1aXJlcyBSZWFkeTEvb2xkIGltYWdlL2N1cnJlbnQgc2NoZW1hNS9kYXRhLWN1c3RvZHkgYW5kIGV4YWN0IHJlY29yZGVkIHNjb3BlZCBjb21wbGV0aW9uLiBBbGwgcGhhc2VzIG11c3QgYmVnaW4gYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVo7IHJlbGVhc2UgbXVzdCBiZWdpbiBhdCBsZWFzdDMwbWludXRlcyBlYXJsaWVyLiBCZXlvbmQgZXhwaXJ5IHN0b3AgYW5kIG9idGFpbiBhIG5ldyBmb3VuZGVyIGRlY2lzaW9uOyBubyBhdXRvbWF0aWMgZXh0ZW5zaW9uIG9yIGVtZXJnZW5jeSBncmFudC4gQSBmYWlsZWQvdW5jZXJ0YWluIGF0dGVtcHQgcmVxdWlyZXMgaW5mb3JtZWQgcmVjb3ZlcnkgcmF0aGVyIHRoYW4gcmV0cnkuCgpUMDUgcmVtYWlucyBwcm9ncmVzcyB1bnRpbCBhY3R1YWwgaW5zdGFsbGVkIGFjY2VwdGFuY2UgYW5kIG5hdGl2ZSByZXNjYW4gcHJvdmUgdGhlIGZpbmRpbmcgYWJzZW50LiBObyBSaXNrIEVuZ2luZSBncmFkZSBpcyBhc3NpZ25lZC4gT25seSB0aGVuIG1heSBvd25lciBjbG9zZSBUMDUvcmlzayBhbmQgY29uc2lkZXIgZmluaXNoaW5nIFdQOSwgd2l0aCBleGlzdGluZyByZXNpZHVhbHMgbGl2ZSBmaXJzdC4KCkFjdHVhbCByZWxlYXNlIGFuZCBpbnN0YWxsZWQgdmVyaWZpY2F0aW9uIGFsc28gcmVxdWlyZSBmaXhlZCBwcml2YXRlIHJvb3Qgc2NhbiByZWNlaXB0IGFuZCByZXRhaW5lZCBmdWxscmVwb3J0IGF0IC90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4te3JlY2VpcHQsZnVsbH0uanNvbiwgc3VwZXJ2aXNlZCBtZXRhZGF0YSBiaW5kaW5nIHRvIGV4YWN0IGltbXV0YWJsZWY1NTgvYXJ0aWZhY3Rzb3VyY2U5YjQvc2Nhbm5lcmRpZ2VzdDYyYjEuIEJlZm9yZSBqb3VybmFsIHN0YXJ0LCBmdWxscmVwb3J0aGFzaCBtdXN0IG1hdGNoLCBubyBzdXBwcmVzc2lvbi9hbGxzZXZlcml0eSBmbGFncyB0cnVlLCBleGl0MCwgbm9uZW1wdHkgdmFsaWQgZnVsbHJlc3VsdHMgY29udGFpbiB6ZXJvIGZpbmRpbmdzLCBzY2FuIGNvbXBsZXRlZCB3aXRoaW40aG91cnMgYW5kIG5vdyBwcmVjZWRlcyBEQiBOZXh0VXBkYXRlLiBUaGUgcHVibGlzaGVkIERCIGV4cGlyZXMyMDI2LTEwLTExVDE4OjU5OjUwWjsgaXQgaXMgbm90IHZhbGlkIHVudGlsIHJlbGVhc2UgZGVhZGxpbmUuIFJvb3QgcmVmcmVzaGVzIERCIGFuZCByZXNjYW5zIHRoZSBzYW1lIGltbXV0YWJsZSBpbWFnZSBhcyByb3V0aW5lIHJlYWQtb25seSB2ZXJpZmljYXRpb24gd2hlbiBuZWVkZWQsIHJldGFpbmluZyBhbGwgcmF3IHB1YmxpY3NjYW4gYXJ0aWZhY3RzLiBBbnkgbmV3IGZpbmRpbmcgcmVmdXNlcyByZWxlYXNlL2Nsb3N1cmUgYW5kIGlzIHJldGFpbmVkIGZvciBpbmZvcm1lZCByZWFzc2Vzc21lbnQvbmV3IGRlY2lzaW9uIGFzIG5lZWRlZCwgbmV2ZXIgZmlsdGVyZWQgb3IgaWdub3JlZC4gRXhpc3RpbmcgcmlzayBzdGF5cyBvcGVuIHVudGlsIGFjdHVhbCBpbnN0YWxsZWQgcHJvb2YvbmF0aXZlIHJlc2Nhbi4KClJlZmluZW1lbnQgcHJlc2VydmVzIHJldmlld2VkODEvc291cmNlIGJ5dGVzIGFuZCBleGFjdGRyYWZ0MjkgY29tcGxldGUgYXJjaGl2ZXMuIEluaXRpYWw2NyBtYW5pZmVzdCBoYXNoIGlzIGtub3duIGJ1dCBleGFjdCBvcmlnaW5hbDY3bWFuaWZlc3Qvc291cmNlIHNuYXBzaG90IHdhcyBub3QgcmV0YWluZWQgYmVmb3JlODE7IHByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIGRpc2Nsb3NlcyB0aGlzLiBObyBwcmlvcm5hdGl2ZWVmZmVjdCBvY2N1cnJlZC4gTmV3IGZ1bGwgQ0xJIHN5bnRoZXRpYyB0ZXN0cyBleGVyY2lzZSBtYWluIHNvdXJjZWhhc2gvcmVjZWlwdC9qb3VybmFsL2Rpc3BhdGNoIHdpcmluZyBmb3IgZHJpbGwtY29weSxyZWxlYXNlLHZlcmlmeSBhbmQgcmVmdXNlIHNvdXJjZSBkcmlmdCBiZWZvcmUgbmV3am91cm5hbC9uYXRpdmUgYm91bmRhcnkuIFJlbW90ZSBwYXlsb2FkIGNhcnJpZXMgZXhhY3QgZnJvemVuIHNuYXBzaG90IGlkZW50aXR5IGFuZCBjb21wbGV0ZWQgcmVsZWFzZSBpbnRlbnQuIEZ1bGwgc2NhbiBjb250cmFjdCBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgU2NoZW1hVmVyc2lvbjIvY29udGFpbmVyX2ltYWdlLCBwdWJsaXNoZWQgY29uZmlnSW1hZ2VJRDYyMiAobm90IGRhZW1vbnNlcmlhbGl6YXRpb25mMiksIGV4YWN0MTFEaWZmSURzL3Jvb3Rmcy9zb3VyY2UvY29udGV4dGxhYmVscywgZXhhY3RseTM4T1MrNlB5dGhvbiBwYWNrYWdlcyB3aXRoIGNhbm9uaWNhbFBVUkwvdmVyc2lvbiBpbnZlbnRvcnksIGZpeGVkemxpYnIxIGFuZCBubyBvbWlzc2lvbnMvZHVwbGljYXRlcy90cnVuY2F0ZWQvZW1wdHljb3ZlcmFnZS4gQXJjaGl2ZSBzY2FuIFJlcG9EaWdlc3RzIGFic2VudCBpcyBsZWdpdGltYXRlOyBub3QgZmFicmljYXRlZC4K" + }, + { + "digest": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQwOjE1LjU0MDg3NCswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMSwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImNjZmY3YzFlY2ZkOWViNTlmYzBjZTU2NmMxMDEzYTJhZjVkZjUxNGFmMDQ4YzY4NDc0YTI3Mjk5NzAyNGVmN2IiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iLAogICJwcm9qZWN0aW9uX3JlZmVyZW5jZV9maWxlcyI6IHsKICAgICJzZWFsZWRfbGl2ZV9kZXBsb3ltZW50IjogInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiIsCiAgICAic2VhbGVkX2RlcGVuZGVuY2llcyI6ICJzZWFsZWQtbmF0aXZlLWRlcGVuZGVuY2llcy5qc29uIiwKICAgICJjYW5kaWRhdGVfZGVwbG95bWVudCI6ICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIgogIH0KfQo=" + }, + { + "digest": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQzOjQyLjg1MTA4NiswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMCwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiIsCiAgInByb2plY3Rpb25fcmVmZXJlbmNlX2ZpbGVzIjogewogICAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiAic2VhbGVkLWxpdmUtZGVwbG95bWVudC5qc29uIiwKICAgICJzZWFsZWRfZGVwZW5kZW5jaWVzIjogInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iLAogICAgImNhbmRpZGF0ZV9kZXBsb3ltZW50IjogInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiIKICB9Cn0K" + }, + { + "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:2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtZXhlY3V0aW9uLXNvdXJjZS1idW5kbGUiLAogICJ2ZXJzaW9uIjogMSwKICAicHJvcG9zYWxfaWQiOiAiSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEiLAogICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgImZpbGVzIjogewogICAgImV4ZWN1dGlvbi9hY3R1YXRvci5weSI6IHsKICAgICAgInNoYTI1NiI6ICJlYjU4ZGVlOTg5MzRmZWYwZmQ5MTZjNzgwN2VlYTFkNjAwZDcxZWUzNWNkYTliOWZiYmM1NTY0ZTQyNTYwNDYxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIyMDE1LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcwOGFYUGJ4cExmOVN2bUtSOUEyandWSHpFZFpsZXhsTVJ2SGNrbEgwbEtwVUtCd0pCRUJBSUlEa21NNC8rK2Zjd01CZ2NwT1p0OXFWZlBGRERUMDlQVGQvZmc4UER3UEpaaUdkN0pRT1JsS3JPYk1JZWY2ZHJMNVVzUnl4dVppYXlNUmJFT2N4R1VXUml2Uko2VW1TOUZtc25VeTd3aVRPTFI0ZUhoUWJoSms2d1FYcmFDeDduVWZ3T2tkUlF1OUorLzUwbXNmeWY1d1RKTE5pTDFDaHdpMU9PMzhLY2VraGs0dVl5a1h5UlpiaDRVWG1GK2w0czBTM3laVjIrMzVtY1JidVRCUWJqRVo2Tmw1SzN5VVpMQ3cvQlBPVHNROEYvbXdhYkZ1MjFleU0zcFhWajBIUDArRUdGY3lBeTJXaUFoNUxJRTZqajlnNE8zUHgyL08zMG41cUxuQkZrWVJjT0Y1MStYcVRNUTZtOC9TYmY0VjdKY1JtRXNoMERJY0VsUC9FaDZjWmtPMVJ0blFEandmNDVmRmdrTXRjRHBKeHBnQm5TQXc4R2ZGY3dzaVNLY1l2L1dTd0syQjRGY0F2Wi9sR0VtZXpkZVZNb0IvT25CVWZTWkFrQ2NPQ2tFdlpvWmZKZ3VIL0hoYVpZbFdVL05VUUR6dGRmRG8xTXdnbkFsOHdKSW9rNThCTytQbmo3cjllbnRiVmlzNldSNUNweUFqSHRPdG5ENndzdmhMQUgwcGxwNW1XUmlFU1grTmRCZmhFRDdYdVJ0Rm9FM1V5Tkg4SDlCYnpvNWV2TG8wVkYvSUJhTzA1OVpkTlRZak1vMDhBclpJMWlNQ0J4bG1jWDYvVnJlOGErZTNsV2FoVGM0QmRFY3dMQ011RzQ3LzhHTGNxbkpGUzhUMktpMW5RaTVzYWRYWUVMMzhObm9uZnY2M2Nucml4N09HZVdGdTBrQzJVZUNHOUJDQW1SaEJsK2MvbGdmM0s5dHpJc0RvVitYWVNEbWM1Q2owUXAyRlFhOVByM1dvSDQrUHpsdHJBdWplNVBrK1dUU2djRWtlVGFadEJmclZjUGdWRFM0R0hqM0dzRk5nZnlPSXBwSWJtT1FHYi9NaXlUWWFrS1F3RnljbjcvWEpIUGRaUmhKMSszRE1lWkpkQ043L1JIb0RCa1hCNjlBckdBWWp0YVB6bjg1TzczUVU1M3hPdG5JOFMzb0FYODlSbVN5alF5R2dmVERIQlFSclBUcXc3djM1eWV2ajgrNnB4UnJPV1Q4UXE4YS9oc01yaWFPaFROU08xS0NtSStQSmtmUHBwUHBkQWhyQnNNL2diK0gyZFE1ZUhmKzZuOU9jV05PR1lkM3MvRjRmT05sWTlDWTR3QTRUbWFqSFA1eERsNy9mUHdqN3NzQmZGZnk5MlRrSjJXVWJCYjRPdlNpc2ZxenZhSC9aaUdhTFo4Ky9lYWI1Wk1YenhiVDVkR3o1OEhrdVIvNEw1WlBqeWJmeUdmTG8rWFJrK255K1pQRjg2OWYrRWRmdnpoNnNwaDgvWHh5QkZDbVgzdFA0WkZ6OFBIOHpZZWZDUWQ3QjBNNEFUaGFPZFQ3Y3c1K1B2N1YvZjYzOTZUZG5rNlB4Q09oNUV6cmtUTHVnWksvQWFtRFE1NmZKVEZvRTlTeFNWbk1YMHlVaUNneHF4VHpxSm9YeGlrTXhka3dVZDRWOC9jWmFpVGZTMkdPZEFFT3Z1ZUhHckQ2VjBzcG1oRVhjQytqb3NmL3FIV0xiRnNwQXRKbnNBMGNQWW9TTDhqVllPRGdnS0RoS0hubnk3UVF2VXJSRGNUN2Jjby8rM3ZVb1pON1M4bTJFdmJyeXhDZ2xMRjM0NFdSdDRqQWZzSVNQdkFlUFBSbFZuZ2hNSndnaTRkRXEra0toUlpUelFkUlJkR2FzTERuWVF3U0RTQzA2ZzVDdjJCSnB3Y28vRDNIaXlMWFgwdi9PbmRUTDg5aEpiRFlSTU9hUkR1TWJnQ2FnelErMlFnQldLWVIyTGlYc01sYndRZEFLbnN0b3dEOGdBVFBNME5iZ2pEQVRkaUVSUUdTUGhlZkdDQWFuaVlHYUl1OFczV2Nyb2FHajJQd0dtNms2NlhBRzdBRmw3QUlaZUF1dG02V0pJVlR4NWtSMTVOS0VPRzRDSDJRenNCZFpWNWNJRWgyU2x5MEMwa2NiZDBGSU1YbUZkN0ZYcHF2azhLODdZUnZSckhJMVNZdXRvWE1hMDlRZzFsYllWM2xLcTJ4RDM5UTB6Z3ZUUUkzOWpaUy8xYVBJeHhpTmdFS1MyNDhGMzJRVlJZV1d4ZjBSRnprbmVCcEpyOTNOOTRXSnZsUkdlQ2oyQzh6d2c1T0djNk45Z0htbDEwM0Z6a1FkSUFNYWxTOFlYWGF0UkRxYkJ4RmNGS1FhcW05RGpocGM1UzBHU0FGbUFyQ0RNeXdoMmNDc0ZFUWNFQUhiRDhLRWRFZ1hDNnRZMUNVNjFwQ2I0MHA5ZlNCeTZoamN0R25xb0VqU1lzaVlLeTB6TklFNERCRDh5bEZvYjgxYUhXQjVSRm9hYTBKNm1RcjBLaDZpWDhJTFAyVmdwWHhWalJyTGIyb1dMdG93OEhaekcwZUEyRUpBNW5oandVVFhmcm9HK285K0hTaXp1ZWFac2xCT1pDYTZJdHY1NVhvRHRCaXlic1VMRHZJc1pKNElFTVU1RWJ3bGJpVHhsTDZ6VVdWVjJ5MXE4NzhkcUJkTm1SbzlOaDZYeXFPRDJWOFN4dWp5NnFXYTdpdCtCK1A1NDFmNHJpcmZoZVdiWkh2NE1BSEwxb3A4OUd5aktLTlYvanJYdVpjZXNQbFpQamk2dE96SjU5aENSc24xTkdvaHRtSUFvL0F5OUFjaC9Lb0c4Y0JPRFFWVXdjK0dwY0NESmtpUTNNV0x3ODBKbE15RWQrS0hlT1FjWXhYMEdiOEp0bzVCRTU3a1NiZHVRZm5KaG8wL29xUGpLS3JVZjVIRkJiU0NvLzBrMzZiaWppN2lZN3lUbWdoNVZHd3Y3YmJzNWtlTlZ3YjlHY3VIWjZHbUF3aFJJdVg0UXArUTVEUzA0NGxPSk55a3hiYklZL1VnL28wWTUza2FMM1lpN3dTandVdDM2UXdZYVBjcFc1M0tKT2JCR01XTk1VWTJySDZIZ2kyc0NqdGhwaWdRY0I2Rm5wN2xTRkFZWXNMZXF3MitwWDRnUklEb05CS29DSExQR29MRUZIaExURWszbmg0akt4QmM0SHBBZ2dtN2lTZVNxWVRCUmdQamlwTlVta3pNTjRiRS9SZm5QOTRjZnd6K3hmZUZwMDE4aTVhZUR1ejlsNXFCbzMzQWNPYWp3YksrWUZYaWxBdGV6ZXphT2RvOXdTZUdqb2V0THdHVU5kZ08yYTJqOW1qS0dhc1h3NVJ0NEZIbjBiSmRnTjRqSENvMDZjWTFrWC90OWZ2dHdIRGVCbkQvbndnN0g3d1ROQ2hQZUZoUy9nZzl5SEd4enZnbS9kZmpMekpSM1FETmltS0w0WmJzMElBdlVkeDViajVacFJ1NjdEYW9Cb0dIa0NaYmVNVDE5anJCOENxMi9ZZG16YURPUFlDaGtxV25idkd6U2pEYUdIRkNzNll5QlpXYlBWelA4TW9aSzdsQ1Vha2tRZWhnK082YjQ5L2UzTitmT0s2RHFxSU5Pc1Jsa0c1U2ZPZUVybCt2MjltbUYzQzFCOC9IRjlZRXkxU2VmRkt1cXZTeTlwMDZ0ZDBiUzFpSTlXWjUydU9FY0lveFBCbU1pV3ZhVnVzay9ock1YU3VCbW83bGRvN21rejZXdWVSODZaVndUN1Y5enNJZWV4RlNxbHhRTzl5R0RRWDlmUWQyaW4xWmw3TDVIR0dwSm1lWTIyVmhhRHI1bnFaRWJxZ2w2eHB3SFplMnV0ZFhUcE1BZWVLcG03QVNjWGhNUHZ2YUhCYXVmSnJydVYycDF2emdFaW03WmIxMjZaWlkzd0ppMTBoa1FnSCtvdWNwd1N6eDZEbS81U3hRVmd3bDJqYlN3N1UzT3k5WmVkcjNtdmxxOTFuK0kwVDB3SDRmai9HNFJUNEF0ekdBRlBoR25VcmhVVm5uUVExMUUwVWQzV3czd0g4RXgzQTN1VlEvWHFrSC9YL0MvWUNVSnFlSUtPRDZiU01GaVU2TkpDSkV0K0xUT0lLUFEwY3hleUFhQ1k1WjFscDNBRC9QSGQvdVRnL2UvT2IrSXYvZW5WeGV2eGUvM0g2NjZzMyt2ZlorUS9uYjk2Yy96S3drNEpmaWUvRDJBTURiNmpEV1JTeFNzRDJrMU5RSk1MVEdWUnl2QWFxaGxBa1NUUUdQaWpHVWJKU250bElRWDFud0pIWFB5YmZ2WktOV3k4WDVOQmh3QzhXRWxoZG9tMlBzUmJCZFFud2tzT1lLeEZWc2hrMnNneUlBRXVNZG01VnF0a2FYTEUzUnNiSVA1alB2eTRYRUJSRjVNYUlZU3hhT1RuaGdLT0doL0s0SFFNQ0o0bWgzekZuT0JRUW5va3hibW1zS0RSR1EvRE4wOG1MNlRDYmpoRXFIbUNWZ1MweUw4NlhFcFdMbFVkN1MzdmFvVDdWUmxCMTB0bk03WW12MzU0T3VsQnUvUWR6WlpiWmMwOU9QNTU5ZVBPbXdrMlhZeEEzWFprWm5jaWxCOXJ0blhyUWF3OEgrN0FLYzB6bzY4MnBWTnpBQW5QNjhmVHN2UXU4ZVZJQkNFQXBZUUFKNjZFeEdHMFNrSllrRHYxZUgrZzJmVHF4VkJWNEFqZVVuSnBZcE56V1k3WGJOWVlGbUIrYnRVZ0N1aGpjV21TdmViWHVzTFZ1eHp3dC9ucitkeXFIWjdiUFA2b1JkdkxjSERjdVJPR0wwMTZEcXlJazNGUURhWkJ4aEVJWEorQ2s2S3h0RzRRcTloQ2tXU2MvTEFEMGRjZjJGR0VmendVc1loZFZ1cW1naG44NzM2ZVRrVHoyMEQyQlpqTi9ReTRBcFc5bGtMZXNEb2FoSFFTMGxjVnRGdGFMUTAzSkc5MTZZZEhUM3NmR3UrdE5CL3RZd3FyVkxHR1JLR3B3bmVFRHNwUzlIWXVxbyt3YUEyZG5ocVhnUmZmSWNLRFJhSitrR1hnZDRzRGQ3Mm1UdHFoVkZGcEdaYjYyM3FGU3piZXgzNnNOVWp6WDEvNFFGZERJN05RclltYkZyanczalI5eEhRMHJUSlJHbU8vam5WYXBDaXVTdk95T2ljb2h1aG8wZUNpTWRRWjhiSEwxTHdYbkVBZk45UGRYNGtJT1VmaUU5c1RHR09LcWlOanNVYnhIMndUL3M1TnpBeEk5TUdySWVReVZUUlpQL2ovN2daclNCTzdTWkphdjZ2U29IaVBWMU5nV2tlNmpZZDJCVXNHK0lVblQrOVBkQTVvKzlVek1wMGVQOUZKY05IZDk0THlDa3AxZHVkb1psellzcjlWUEtNalBWYjBCUmxERjlyT0tGbFMxblNGc2UvV1k0R0VaVHJNajIrV3ErNlUxQWREanRWakFXU1psdmp0U3NPT05acVJnc3JuQTRRWXUrOThNZGhlVEF6TlJodGNnVDdMVGNNbjFvYUc5NHpUWUpWWUpFMDVyb1N2alVaSGwweWVNNHNUb0ROeVV6NStkcXpyUGFTaWQwbTFGeEdhY0tzSlJyTFdJaTJIa3BSUDBZdXFNeFc2dU9qOXhRdmdKR2Evd0w0TjRmVDhSdWhpQnZadWJKQ3E1MkJMbDdWM3QyQkNENmR5T3FxYWlNRU4wb2dZcXZaMm53QXVJYk43TUZUaEJtS2RKanNWQndSZ0piNUZMMERoVk1TNnNBcVVFWCt4bWwwWnJDVHp4aWdKempTNktOaFBDVzBEZ1NvbTBsa3M2OGprWFp0V0RUWkU3bTdZS0hCMEFTcDZ2OGRDbFpKM1NiMDlRK01FazJodW5MSHhRcFR0UGkxL3lpWUY0M0hDcWxWaUNIOUlPdTFmRC9jMGZ0am16eWIwQUZmcHo4dFJ4QTM4UERKQnR2b05tekZZTk5sUUU2dVJEL1U2elhwR0ZhWThraWtGaGx4QXpHbzNFU01ReWNBM0RGc2E1cWdkMW5vVjZ2UXROTTd1SktGYXc1SzFtZUNPeVZxVmNyYTlHMU9yMUZWUzdaRzhrRk54UW5rVjdubkpSbkI1Y1RrQWd6aWcycjhoUmY4K0Y4emNrSXc0QllIbHArUldOR1NmTWlLeTRtQmRwR01sd2ZlaDVpalRQbmY1OU1OK0IycGMxa0lwc1laNUVKQjlOK3UxVTRaK3U1WFptVVlGU05iVUUwWmtxUEt1dHc2OFRJMXVNQ1B4NHhheDFERkVJQzZyV1F6RTZLRjJOYlR6QjVaV3JoUDNBSUtmOXAzT1loNjZ6K1BENlpESitkZnpXZmZYVCtTOW5nRnhZaEJEcS84bWNTdTZUMm4yUlFLd3Z4ZG5wTHhRa2EzTG9ITUpaSXJDV01zWlV1M2o3OGRXWXl5empJcm1HbUdCREdRVjVCMm82ZjZsekJpQUNrWWdwZE1EeXF5ekkyNUszSXlVTENoWHl5ZzRQRCt2dGpJTWtINkNyT3FBK3c4N1dRbTRYdVlDVllhZXFZZVMrdnNKbEVrSGtQWGZHU2k4NEwzV0pkbjc2Njl2VFYrOVBUM0ExOE1MUjVBUmgxdU1aL1ZtN09RV1poeXBQSmlHak9NaEtJd0VnZjcxSkFnVm1RSzFoZ0VZdzE4a2pmdkVZTVNMaTZBUmNsVC82eTJTUC9xcmxqdjZ5RWs0RGxVYmlpdWE4MlNINEVuMzkrZVNnbmJjeGFadkN5MEJPd0YyckIrNFV1ODJSK2tpT2VMUW9seHhmV08yQkI0MlFWMGUzdU9qamVTMlN4Wk9FcDk4OW5SNDlVdE03S0t2cHFRNkpDNTQ2REtVVUlna2xvMXdMTWw5MnR5V3FrU3JZZW1tQ0xQM2N4RmZVdE5kc1hQelhYRFBKSGx4QnFrUGJEY1FDdDh4eXpRUEo3ZTZqbms3QUsrUC9KOXpzMGJXWEI3QllETHJzMDJHakZlaHdWcUMzZnRqcHkvUEx6NEFKU0ZsVnI5RDhybXNPZXh6ZHZ0VmlxbDgyRzB3cE9xbGlaS3l6Z2x6L28vWGJqc3A0VnNZTU90dlF2eUgvRmN2aU5zbW9XeGY4Q09YZUlNOGEzd21RU1V2U3pGUCtjd054WVVhdnBrZmZiRG9jR0JnRFNvUjJNcGxORkF3dkJhOHBvVDdpNHpkdnFvZGVRRDBwcEhXN1llWFNMN0h6WWdncWkvRUVyRytIZUlMQWpTdXB2R2pTclBnVCt3em1yR0FHZWVhVGo2UnM3bVBoREFLUWVxUFVPaGNFQzVGdDB5UmtjRndGZ2wvVU9ZbEwrV2hIS3FWOFplVnVpYlBuM2IyR3BCYm1mUHdQN3phY1BsVTViN3RxeFF2eDg0VHRPckhRZis2UXJUTW1pWnZSLys4NTZ3ZWNZc2NhZit0UWRaekt0YVBLZzlTVWVneVV1ditVbGFlL3dIODE2SVkrdXRybGRUKzRWTnB2Rkd2VXNMYmJxb1BPRkQzMEZKT0xYS0V3ZlVsaXhYYUE3TGUrTDBFajN4RlJlQ1hTaE1TaXFpMnAxbytxVmxmdWJjUDExek03QTMxVHFNTlF2NUgrSFBzUk1GMTFIcnl5VXZzS0x5L1lnRHY0b0pOcVJURkRtbXlPN3A2eWdoVTczSHU4alVRV0xyUG5hSGdQTEtGMm4yMjFRZFU3Vmc4ckdHeFhTRkdmbzcxcGRSQWR2clJxVllPRDU0NUpiR1ZiU24vcmMxVVY0QytTTzZxdmxvdE5tT2NjRG54dUpBYnEyOUVwczFZaEZiRmlxODF1N3pFTkoxNkRsekhZcmRJbjEzbFQ1Z1c1UERuNkRnWDI2MFRvYWpZWmVLeEJqbFI5azI1dy9FZEY5MitLTGFLNlQyVGg5VkF6aDVLQmJyRTFwZDI4Y1BkSktpM1lLYVgxcVhQeFlLbmR4d04wWGgwOFFIMGpUbjlQcHZGdjVncVRMRnhoelVKMEpBMGJPVnhLVkRZU3VLMzJiNU9pTmFsWHppVE1xdFNFZm1QMXV5amFkWlBHSlVxemhGcHpiUHBiR3pITklTN0dHeTRvQnhVeHo3cjY0bmRGcnpNVHZUWW0ySW9DVzhTc1B5bDBaK3MvcTZ4L3hxR2dTekZwN2lhWnk3NmtTL2FXOEtLVWRUT3hqcGZ5Zk9sVzhvZk53Wms5b1d2UHBnR2FkNnZ6NE9yMm1hc28ya2lFLy85bGdQaG1VRHYvYWFXREd1blBqc3NiM2NrZzA4WDhKYWxTblYyLzNIbndWKzFNRTdkUm0wU1RTclJRdDZySzQ4Q1R2bTBmTkc2ZmNaYitvNVVMTW5mdjJubWpLb0ZIelNENU9reEJxWnBrWGowSmhNV2ptMTJIUjk1cDU3bXBhWjBKUnYxdVY0S3h0WmNIc1kyOTFMK1FRUnF5eUV4cTdzOTRtMFc0S2tGenZRVHdSQzA3YmZrQURZUTk1Ulh2dVhXTjVLbzlWcHJwb1BQaVNSemdSRjJYYWtsY3ZrdmtzTlRmVXdKR1YyTXhvNlN2eVk2T3MxV0pEWkJ2NlEzV1Zhbm5EUTUzN3JwQVROZnRXek5IRUxtNW5wclNBM3VyYjk5QVVBNUtJcC96eGRTQlNmSlFZTE1YQWw2NEdlS3Rtb1FpQlZVR0E1RGsvYitsYTVCZkNFMTFwS3JqKzd1Z09HZ2JWcGRSdmhTTkpRajVlcGo3WHZ6Z1hRRU05QlFWVlBvSDRlYU5xNTM0YUlScnVJWndycjRCTmpmM0RvdE5PallSbUhYcnJrWncxUUxha3FOcUNjVi9XaGp1aFYrbi9wQnY0YWhsT3J2ZXJJdmZlaE40cXpWdk5wenRhbStiREY5NHcrWFZweWNUdk45QWlEY2FxNXZ0YmZMTzh3dmRIODdYa3BxTGZTVSs4dDAwa0dwMTF4encwNzNsWTdwRHFJcVpxaWNNUFFMMFRneHA4YjRxU2ozaUNTK1VpeHQ1Y2QycW1CNWlCbzdCRFE3cTZzMnR1MzA0aUxRMVpvSjE4bDZqT2l4alhiUG42a0ExUEMwWFVaaXZKYkpzRVM2QkZGVmh1N3EyaHhkMGxQTUhZRkIxUlFKWUdhbklpTXJHc2VCTkgxemswdEZVVXJlTXJnZ3owSTkrVVhyWWZjSTN5U3ZXMVdhVG45Y2I5RWY2Mm5tenYvcHpKeTgxbXY5MzhsQ0ZMTmsxVnpGTUhXRnVEeCtiZ0dxTVRsYXVpbnVxTjUyUDZXRjliZlgyK2pwbzVXYjk4NEN2OGJieFJ0VTBSbHR2RS8wRFFMbU5Mc05XL3diQzNjZkNuYVRoeGx2SlhTZURYa3NtSXpyOGdiNTdCQzVNTjB1TklGVGI1RDJyUlppVDFlcnlOb2lUaHRYcUlVWU9WcG50TUhmejdRYXZrdXVyNnhDejhEdGlBY1ppSUp6bW5aS3VMb2I5RzhCcThHN2tiZHhJdTJwQWZjVFJXK1RnS1VDZ3hVZzZvNUdqUy8rTndTRDY0UDYzODV1NHV2bHdCa3dSWU9hOTFLQmVvNStLaC85Uit0bnJmem50dWtSMER3UHdqZjEvZUFjV0IxTUMxVmlQMmo1ME02KytudHpJQ1Y4NnE1Q1RVSzlVbXA5d1JTOGJYTGpiSGRZTGs1MHp6SDNxRFYwOVNJQTdNc3o5RmlrTXNwM2VkNk5RVmcxVzhZOWRCcktvMWNGL2hpWk14d3l2Q2hscFVzVWc3b1BTVm91djZldGMwMXJTaGF4N2lBZ1VHNUxUaEs5L09qMCthYWJ6RUV6M1R2RkZPOGpvT2c3RERBcDdYTWVxWjVtR3JwWjkwejFkLytZL0I5V0lnU0JmMFVWZnNaWloyZVBvOVhjTXJMdHJldnZLTjZ6bElIZkQzcGV0NWdIa1NOU1hNdmRWa1hBb1JqdHhNa2JlUkZoZE9xRnpTV01IVURPMFZ0enJTVFVNRXlKbVdwNHF2NEg4cy9wcEdvNmNWeWVtc1JwMFU3Uys0Y2I5S3NSVUp4Mng1TktKWCsyL2JqYWtweFNBbVV1dTFTUE9EcmUvMXROaGRDcTBLeTU4ZURqUmpuTDBmclR4cHhFQ1I5VDgrNllEME0zT2JaU3NybjdyNmJ6ekhOcXoyNnpOcEVESmRCR3QrWU8zaTBHSTJ1dExqYmdGcUsxczhlRHRBZk41RFROaWNBVHFxa0dhdmFtOFl0R1F0RWlYeUxEdTBWdnUyZEFIdGFLUHdhSE9tczE3ZzJQSDJpNTJ1R2JndzNjRkppWVlodmkzNmsvVm45Q3hUNVlmMlY4MnFneFR1SXFUVE83VzgrWVRPVWdSeXJRTWVZcXFlQ1p3VG9HOGExZlFhMDJ5L1diYWtGZnRUdWFyZEl2NXBwQ0tJOVdjNm5ZNVB0Uzc1a2FmM2k1SmExN3dxNzYxdFF3emNIdU11dUdCVkVyaEpLRW80L0NQVXBxR0dvV1VVK3VQMzF4alg0N0NCUzlRUGRjWHFQUVJtSGRkWndCZWcrZHpJMWVTVXp2OHpUTFhVeHJWUVRWMHRIUVgxRXNuSGducjJUS2p4cFR2NWdJLzRsTjkxdWV4bUQ2cnZ1clQwTXA0Z0h5UHVMQUtBWnI2YUtWQnJqZVlLQzZYeTlESGp5V283ZVBXdldzSmU4cnZhNTRZNEpWeU9TZlNETGd2eTAydTdheE9uVks3NFhSUjBQWXlzVTJxZDI4dkIvcXlHWjRhM2I2bDhOelhuY2JVNk04RG1SWGdTTGJjV0tVMnJyMkx1WFlzcWdQKzVPalFIY3NVNUV2ckI5U2syM2tGdmRQWTNPZHdraUhUQ211MjA4VEI3aXk3UGJ2ZmFIL3V0eitycE5NRlZJYXdaS3E2cGRBWFh3bHFZUUxldWZod2R2YjY3RWVkcGZIaXJSSXNDVGJlVjdjQWQ1alArcmYwYXAvQzZ6ZS92VUVWNEhualduQU51VzRqM3JvbmJPREtxSTRTcW94R0pXRUhFanR1Ryt5RjNQd3U0Szc5N1NqZ1dMQnp1V091dWx6eUpVUnBmUitpdThUQ3R0TmMreGZ0N1RVL1M2aHVWR3NIcWQ5MS9PMFBISnFQR3ZKMCtsaEZpeStYWVJ6bTY5bzIxVGZDYkQ4bkx1d0w4R3BBbjdwVGRiOEUzZXNabXhLVnN1UzV2dFJhdjFNeHNqOG05ajJzZWtvL01YNzBjaUd4SGE4NkZ2cHkyTHl6WnFGTGV2cGJGZlkybkNWb2VZd3AvWWdIMCtkZENIWi81TkpWWk5mdENQL1VOS3hHc2t2SVJHNTluK3lsTUZWZ2lkOGF3Z3NJdXFwaHRZdDNkYnAxZk9sTGwwRXNBZC9EUGZZK1AzM3V0ek9yU3BFMEJHUFBvU09SOXh3NXZlNDNQdTltZlFWMDJ2eFlXK3RLbjE1YjM5U2pyNHpxWXlDY1hSZXJQNjdyZEh5ZGp1dENOdGNZanBudHhzcXhzdlZHWSt0ZUJxMWsxZmRiT3o3bVZ2c0MzZjhDU3dmb1lQOVZBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vYXV0aG9yaXR5X2pvdXJuYWwucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiOTQ0MTY1MGM1OGUxNTZhNDg1ODEwMjkwZWM4NjAyOGIxYTIxNjU1OTYwZTgxOTZjYzYwZDcxMGY1MWI1MTc4OCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMTUwMiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E2VWFhMVBqeVBFN3YySnE4MEh5bld4a0F3YWJWWkk5OEY1SVdLQU11M2VKNDNLTnBSSFdJVXM2alFSNENmODkzZlBReXcrNGhLSkFtdW51NmU3cDU0dytmUGh3bXljc2ZRdzQ4MGpLWEJZa0dabkg4Y01EWTBrUTNWc2tpak5DSTBMemJNR2lMSEJwQnBBMFNkTDRrWVlFL3dVZVN6c2ZQbnpZQzVaSm5HYkVBNUFzV0RMOTdydFJGdXFYQmVXTE1KanIxOTk0SE9ubm1PdW5sTzM1YWJ3a0NjMFFtS2poRzNqVklEeWptWDdPODhEYjIvdDgvZlhxZkRRbURua3hIb0xJTTRiRUFORmdBY01pQnMvbk9BQ1FUaExTekkvVFpUdU40OHlLY3lkaGNSSXl5M09kaUdXQWV1L0ZTM3dMWTVlR3h1dmVsOUdYNjluRk9WQTJnc2ozMmoyNzErL2EzVzc3T3pEWFR0bVNlUUhOZ2pocXAxMWo3Mlo4ZlhOOSsra1N3Uyt1UHArM2Y3bHAyN1k5YU4vWlIvdUljWEprRDdvUzlHK2Zia2UzQUdnYVhocUVZWHRPM1ljOFFYN2x1eHNuSzN5TGZUOE1JdForWkduZ2l4RTNaRFRLazdhYU1hdzlVdndZYnA3RkFGb2hwMGMwd1pRQlBtZjRXTkpNNHpCRWxPcXpYcksxdDdmbk1SKzI1dmM4U0prSm01OHpDMTRwS0xnMUZLc0h2ckFXTVRVcytFa3BHQmY1aG9Pak5JMVRVK0VvZ254QlRkeG5SY01MN2huUFFDWEtVRG93M3p2cW15MHgreFJrQzJFR0VxVVRKeXd5alhSdXRBamxZQk5BZWxtdURKdE01ckNKRHlTSVNKQ3gxQXpwY3U3Um9ZTHN3Qi9QN05xOXd4OSs2TFVzTWplTTFyQ2lSODFOSjAvUXBrMUJTektTc2l4UEl6Mi9ZTS95eWRSU0pXbndpQ2pJcGdWZzRGcFpuSzZjenpUa1RLc3I4bU1RdENKT2lGWnQ2aFdrb2swYzY5ek9MbTdQTDhZbTRuUjRObHZHSG11aHdndlNoQUZsVWdDUFJ6L1hnVnMxd1dqa0VUME5Qa0VjQjl5dmN3OVNCWjdaRXRPYTFKZnI4MUZqWFlBMjdmall0amR3WU1kOTIxNWZ6Q3pCWUZjMHVRaHM5d0hKZFVIOWhsSWFpWjhpaURGdXpyUFlXMmxGZUlVSllpaUsweUJibVNwZ1dTVE9NemRlZ2owdTJUS2VnY2xZaE1kNTZySlp5aUMyZ1d0YUpBR0xZaGpQbnB5ck9OS2JBSEZyREdHQUxHRTE0cWNNakc1RnBNMlRDSno2a1duaWhBSkE4QXljWFk4dmZyNjR3bkVPc1k5a2k0Q1RCUXNoMkhUMkJOR3hDcVIrRURLKzc0ZjBuaE9hTXVFZFBMaEg2ZTVUR21XOFErNFEyYzhqRitNSGNSZk1mZUJBa1JIMlROMU1VT1ByRVJyY1Z3U2NVd0FMZUFZaEMvd2xqUmlIMWVJOGdvQmNhZ21BbHpTSUJGVkJEK2ptR0xwWnVndzQ2Z1lDUHVEUWROVWhGeG1KMktOQzEvRWVtQ2NRQ1VNY0JrbnpKWTA2V25uaVArZ1VEQm4vd3Q3cThOOHBIbURDTEY3d3ozZlFmd2UwV3JkMHNVSG9xaklzZ2tGSWRjdnhpaGxVa1pSRzBIUk5NS0E0aVRrTlp3R0FvVmtWc1JoTnNBWXFERVdEcVFDL1pyVHJHS0FhMUpoRTYyNEJraUZMd3VpQjNiUWJ4aXBSRzRPN0tjQ21vdk1VeU1hbkd4RCsyK2pjZUFOUG00bHdiWTE3L3VYaTZ1TDJialIrQXp1aktmeFhXQkJOdytYd0laOHpzRVN3bW4ySS9HRkFJNWZaM1gzMCtCUVNaZHRqcnBSeE4yWGhnbWg5QURwYk1tRFMwOHVBdTdhRlpiU0I4ZnNnYWtzL2JXTTBGK2xyTitVMGo5QUdaN1dLWmliOEVWWUFieFF4ZWpjTkZSSm12K2NzWFNtKzlzUEFaKzRLRXZNK2JqcmZOOGlQMnJMZ3lkaFhTUHd2eW9pY2JpMXJROTRXUGc4dURha3FBbjlUZ1NnQUg5Z1lBMm9PVVlBNkd6d1FxNm1BeDdnRmtHQVVoWW1oY1dZME02YVFEYUV5Y3BscC9Bc0xnQjl0ZTJqYlJxdnViaHFqazMwWDZRdlVoVUVOQTZyUWtrMCtRbTdBU05BdU9HcDFzamdEcCtUTWpTT1BRM29CbUc3UGJnZ3ZnaS9CM2RXQlYyOW9JU3FaTXhBQllpT1FYc200b0tUM0FCVHJvSGRJYjJENTF1N2E3Vzd2cm5jd1BCckFyeGEySml0SzhiR2dEQ3FSVlMrd3daNFpGRlFZT1orZzBBUXc5cHhVdGdLU29veFowaXRrcFZVcGlIUm0xNlRic05LNmt2NE1TanF4YlZHc2NkaDhrV2hTaU9mTElNb3hLR041VTNVVGJhWlk2SzBhc2lqYjJ4NzdCSElOQ3VNT2V3SlRlSGx0cVNnRkRMSmRQcUx3SnhwM0t2R0NLS01QYklZRkJTdGpoU2Rxem1LckVVR2JrNWpkZC9NMFplaVVTaEtFbUdHdHNyN09wSkJwMnNnT0JaTFRpQUp5cGxERk9pc2VCZ2RRdDd1ZzBYMnh0OVIxV1pJSk41czhpeTE0eHBSVjA1d1hjRWhEQWU0SkJ4a24wM281cEV6a1dTazFuNnMwWEZNUVdJRWZZTUEwMW5CUjA4OXJLMVUzQ2d4Z3J1aElmcmNRbWRRSVRMZm11YnBTUTZpNXRScmtQSFlvNEhzRno2UW9RZ1FZcG9CbXVLcm9VVDlPN0dtRG9kcXlHcXpJZDNFcTJkT05INHBVQjZvWmVtRUxhMmJib0t4NjJ3cGlOVjlXWjkrZ3RKRkFSY0QzMEtEWkppWVVDTVp0dEZ5Wk43VFNLeXRBck9BUTg5ekZXdFhVOGZNd0ZGTm1ha3hvMjdmYmcvYjA1YUQvQ29aVTdFaE4zR21yR3U0M0pNZ2FUZVNpdlozd0g2WW50MitOWXJHck5XS04xS0k4dTZvWTZkNlFubEpabWk5cEtBdVVobjJDaXQrUlV5b0tlMjhtclN5d0xabFdlWUNVcWZPcHBiMWErQlZ5STlCRUVWK3BqMFdEK3ZMQVZrTnRQQk40bVlxWUJROFl0ZXJtaktjT2RlTXNWcEttcGc4TFZNWFFlbFVObWNqY00rN1NxT3pJUUFWeEN2OGhKbVFwV09mV3hxdFMyU0NGNnVIVHFXNVZjQ0lDeXdaZVl4OGIweFZIQWFHckFUZXBOQ0hPLzl1QzFMd3NXTko3Q01lT1k0REs3dGx2Y2NlTjh6QmV6anM4ZGdNYTdxdlg5ZHIycjdJREdQcEhSeWNuL3VHZ1ArLzZ2ZjZ4WngrN25qdndqM3IyQ2V2N1BiOTMyUFdQRCtmSEJ3TzNkekRvSGM3dGcyTzdCMVM2Qi9RSWh0NnEzVk93WUZEUmJLMTlBSjRIODhQNXZIZmtIUUFqZ3hQS2pnNFAyREU3b1NmMHdEMDRHdlE4NE9ub3hIZmZXRU9wWHBDa3YrZFF5Ymo3R2ZUcEt5MWp2emZ2c3Y0Uk96bnBEK2J1NGZ6UTdWTjY2TlBldk5jOUdod0JpSHZzOXZ5KzNUMmhBMjlBdlg3WHBmN0pjZmZrMk8wTytvTTMxbytnZThyQlNCbFgrUWljNUM3TjJUb2tCb3NaVk0wY3EwTnNhSkQxRW1IM010Qkdaek5YZEVDT1kxczZvZ0pKRWl5WGVVYm5JU3lwOUMwTnRaSFFwS0k4NTkzRk45UUxTY2l5VGRWM0kyUkErME9CR25VS1hHOCswNFBHOUZRZVQ3Mjl0RWFaR0Y4bHhxZnRDNTlHMEliTUpPVS9RUGdLc0NUeDNTSVZVVEFNelkzeEQ2TlVKbUtVVXF5bHBMUXFqRzA0MUZKUUh4MkY5aEZqd3NjS2pqeU5nc0cyZ2xpcnZEODYzY05EMjE0anJhV1VGdk5OVjBpTzA5dVVyMVNpbXI3MER5RlAxVXVBdVQ0aXNBeFFTQzF4Q1lmREdQYVloK0IzZEE0dE5CU2h1TzRjVzRwNnA2SFZDRzRmY1pFUFRCVjR2Y0RONURuZTJweGtZc3g0SG1ZYzZvY3c0QXBVemsrS3VhbGw2REFyZlVFWnZwamRmaUpUTG5Mckx0aVNibEJWQ2ZKSk9kWGRLcEhCRmpNR0xwbk9aQUMyaklZYkZnQ1NIUzdXYUhLak4yc20xM0txUzM3UnJtTkJ4WHdxcXRaN3A0RWdJUytRZ3pNQklJQnJnbTdIdURoSFNYVHFtOGhNTXBNTGlVcXFaazgxL1BQQTl5L09lUjNmZzBIQTQ2b2lyaHFsSktwNkdzaW5QdCt4dEFLWXJtRzZwWWh5NEpMT1diaVJsTW8xb1FTWWJ2V1NtbFRYdDNWU3NiQXRzWDJDcW1LR2hIU0ZCUm1ZdjF5R3lHVUlLZ0NUa0ZqTkRTbm5qRHNUVTNWQlp6Z0FocXhlcFNXMXl1WnN6YXpyalFXSFNlYVppaXp3T1RHTkVIcStkdkp3RC8yYmtheXlSUnpoRzZ4aEF1OTZnb1lKWHIyMHBqcGZYTjhLRmR3SUJHbWRvaHRIQ1J2MkdVU1BVSURpbGNCRWNvUGNTcy9heUhKNWZKQlE5d0VJY2tkQ1M1bHYxS0RST29VSXdWeE1LMUNlUkpsemNJTE5wb1NkS0ZWTndjMjBHUExVdnI5Mk9sRUpHM3JGU3FUQUhsQVBnOGJxYXlxUFZmT2xxRnVWb2VVdk1Rb3A2L2N4MjVuYkhQRFVwTlRSRlYzQ1psazhTM2ZERmVGS2dLNTF6c1gxeVJiMGk2S3pxUGpUemRmeHBTSUlCcVhGMUVjTWRNN0xnNDdpaUVDcnJRTkZPb3M4YzlMWVJFdS9DNE9mV29yc1JBcGFlZGNDVllZcVRFTFRMYmliVGh1VzJVSEhNRnVuMWI3L0pjdWhhREVUNlYySnVGalQ4SzlnQ0llSDZtcEpXM2MxZnVqQlJ0VFlwTnpHN1I5ZUUzZThmSmx3czZCaUlYc3o2R1M0Zy9XZHhWbENVd296M0RIQk9TMWpDRUdnd3lLczZreDRxbHpTYmVScUJ1NGFSNEdMcFlETXp1RFhaZFlwclZnR0kwN2tGWFUrQjY5WVFJSUVSMVArMzljUklDbThzbDcwUkNzem1kZzFMMFM4Wk5MRE1id2oxZ01IT05EdEhIUjZlR0c4UWVsZ1R2S1dCTEVLQnhJblN0RzlXdmZkb1dWak9ZRlEyOHFKTWdCOXE1UXJBVWhzVGFZUUxERmdXQm1ZcHlrNnYxWkxoWVpLSFlHaTBMQjJFbElld0daazF4cEFMV0pQeEE4aUQyL0FVdWJuRU1DSk9uR1ZTUzZNZVo2eVJsTXNld1dwQ0wzWnc2SzQzakFKbGxBV2JjTnFHVjRDMU9yNTRaWXlIemt1U2xGanVMbHd4c3hTdGpGS1BHNE1iV3k0UlpvaWY0ZjBHTkZRM1psRER6NmJCUkcwTURPVHM5QzN3QkR3Nk5RcVFremxYaHNCT25LK3ZIM0d0M0lEOU8xMUJiUjZpWTN1MW1yU3l4WkFyVXA3SDgrbDFEbDUremZKYndjZDJhaWppZ3Q2Y2Ywc2J2TzNrUkJ3aG9WdzE3T3o4ZWpUSGZtUGZMbTYvbng5ZVhuOWkzNGZuLzh5dHByMzBPSWpsSTZQUk14aVdVc05YMTZmL1dNMitoVUlWTjZ2ZnRxcGtBM01sZkNRY1F1MWRNUVZMZlFWOVZUV0lKa3Q2dEZmREtOcGdHcEU5QXRqQ3MxSlNSWFB5R2NaV0kzWjZJS0tza1pUd01NMmFRVlErVGxPWVJNV01kUzJFQmY4WlYrVlhGc092dkVIUzRYaFZqWmZ5bldHMVVYRVhRaVlMM2w1ZlYxSDV2U1I0V2NUMnBERk84NVU5SlV4L05DSFF1eDloNGxCU0NndHpQY3FwbFdRMldSRm8xL1BMcmRaMUMvajY2dkxmNjdaVkphdTZ0b1FuNmNBaHUrSjlYdzhxbnZhL0cySy9pa3lXN2xmbGdJRzc0MVFpMDV2dlFoUkg3QThRWVNBL3ZyZmtiRVZ4QTl6dmpEWHA1Rk52b3BjVThNRmtOL2pwakVCbE83aUs5cmJZclBsSng0YjNWbHAvZnhpUERxN3V4Ny9zL1JYMUc2ZDFKcHFheXdYQzlXUklGTGlyZWxHUkV3RWJCTWllOFlEVHZJVDJPaElQSUl0MVNuOGlZeEZFMHdZZnVvbTdqSkFkR2cvc3dXMjZoQ21jUnN3QThGckR2T3BnUGJ5VkJVT0dRamZxZnNvZmhOVnNmbU1RcVdsSXJmOFRFVWZ6TGJXczdPOFc4VGtDS3RVdkZ6NTJSUlBiVU54aFVab2hydVc2WThvVGdFTGsyQnhQU2dERWZNZ1dYRW9wemdlZFVPbU43OEhpU20vd3BoMGh5ZEFVYjBNajZldHpaaVR0Uy9HcHNTcGZGSldEWTNGaHg1VkFzTzNncGdXVDlRQ3RhWEZ6TFIrVVZsY3BKMWRmN201SE4yTkduZnR4ZDFBZ3BsYTFBK0tMWGtZVTF5bjYveGRqKzZWKzEwdDRXWUJpdnZmN1p1bEtXZ2MvTndHcjNGVFQ5ejJxMkpHN3FUUnlMdDFZa29USWhaTEhReUpNZjU2ZFhWeDliTlJYR0RURUliMW83V3pGSy9vU1RHQXh4ZmkremtUdjdyczRKOURDQnJ2SmlOTVhkVklmK2ljdmxNZU43WmU5M2FtRU5nL1Z2Y202QklzK1YzaUJuL2Fyc2lKMHFKSW0xVkZhZ3RHejI0VTI3dTNSbDdCT0pLWDNWSkFOSVBHb2k2SHJJWXJNc0Q2WlZiY3VPS2F1QUxsZjVWTUlVcytoSXZMeHlaQVFiM2lnT1U1aExxK2dESmJmdkEyUzhRQlRuRzJMNDRraks5WFo2UHgzYWVMSzJPM29tUm9iNVFNUmNndmlyM1czbjhCeklsUit1NHNBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vZXhlY3V0aW9uLXBsYW4uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmZDM4Mzg1ZTM2ODdlYzZmOTg4NmQ1MDI1YjM5NDQ2M2MyNTJiODE5OGIwNDI2YzU2Zjk1NzQwMTM5ZWI3ZTliIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDQ3NzAsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZZMjQ3Y3hoRjk5MWNRK3h5dStuNnhYMkxFU1p3WEkwQU1CRWdRRExxcnEzZnA1WkFUa3FQVnh2Qy81L1RjVnRKS1QwRUUzWmJUck9xcU9uWHExUHo2VGRmZFBRMVR1ZnUydXh1bU9pOTdMbjFoR3RaaG51N1g0NEdYOThPS1ozdW14elFObE1aKzRaSFR5djFoVE5QZDc1cUY5N3kwOHpBaVR6OGZsdmt3cjJuY0RTZkRmL25wVHovMGYvOXJMNFNJL2MvQ3Z2dlBPT1JnUlpUOUlzOFd0bVc0SGNjOVN0K085RW9vSjRWOFBiWnVhZU4yNXJEd0lTMjQxM0ZLQjdoN3orVjhnajh3SGJkNTJkVmg1QlZIZjhWVFBFKzBIUk9lM3g5ZTJ2dWNiU2pNTVVSdEtsZFJTNVNPZkJDZU9jbmloQ2hlTW10TEpjVWNhODVrclROc2xIWEN1UE4xbXRuajlqZ3Z3L2F5KzJVK0xsTWFML2FqTWRKWlFUYXd0QzZaWUlNVUtncW00SVFLV1NhRnoyMTBnb09NanNnMWg2SmFtYTMwSVZ6dFQya2Izdk1PRVQ0c2FYOHhYcW1HU3RwR0hhWElpbU1zeGNvaWJVeGFKTnczV0UxRzFDcHdBZWVTVTZJb3dTa1ZDcWtxY1RXK01QRncySFpycXJ5OVhJeGJza1o3WFZVaGs0VXpRZ1NsTE1uZ3VHWlpiS3JJRzJrSGQ5cUtYSkpJVWhVdTBTT3dJdk1kYlA5MktnVUJKSitYQWJEWUFLQlVYdnB6YVAxODNHamU4OXJqNzMyYXl1VWF4Q0VrU3BaVmNRU3YyVnV0UXd5WllsYkc1UmF0Q1lwTUlxSXNFSUVoWTFHeUVLcjFOVjFqWENsTi9TWFErMS9XRTBqdkVuNGhkVTdtTExSalYxUXJDY2xjak5iYStsQUl4aW1ybkcyaWtKTnkwYWdvbFdTdmxYdzFqcG9UbjI0K2JEMktOTmVianl5Q2xDV3Bvbk5CcFlMWEd2WHdnVzBGQ0ZqRzVKQXppd2lVOXptSVhJRkc3Ymw0UlM3cGZQV0IrNWVoQVBab3k4TTR2K3g1ZWczRUJGK0ROZ1JVRmNya2t6Q2tkRlM1c1BDS0tkWGdDMG5wc3NrcEFlSGFjbzVrWTB6RlVyUlhKK2QyUWtIbXFhOXBHSThMOTQvRGluNTV1ZmtDTkNOdVdGUUt3aW5BeXpwZ0pFY3JvN1dWZ25ZQ0tKSElwZ2dwbElyUFVyVGFTWEtBWjNTM2xsbTJvYUlkVzlyZ2RJRDUxOEpJc2lXeU1yR1FFT2hDWTJKejZrUk4xWEVBMnBSdzJicEF2aUVRellnRU9tTnJ3aFhZM0pBOWoyTk85SVNhY0IySGg4ZXRyOGR4dlBrUk1nU1B0dEZXc1Nud1ppbXBXQnpLNHIxUlJhQ3AwTFZaWkkxVFZWYUR3aG1abFZWUmdUdmUrUGxDYldwSU1RbWZNclUzRkpYcU1oVmdxY1RxSXpoV2VDMk5KUzBMd2pRcHNxZ3NwZkVnR1NMRFZ4OTE0Zld4ditENE1DOElaZml3b1VJM1R4cVo4c0xvWkNpWnhsRkNtZXkwQXgrd0ZERnFrdWFFRGZiZ2cyQ1Z0VVN0WTRxdUdmLy9sR3krbGpNd2lVYk9EQ3FiMklCVmFrelo0SzZxVnZTa2pVb3FVRjQrUVN5VUFGYXpERVJYSVlsVmpiZW0rZmM0Ykx4ckpEQlA0NVYyb3NBMW5hazR6cnExZUFUeGdwbEx0U25WRS9HaTl6VWFNQ2xmU3dqQitFaXNWVXhLWUpUY2tIek00N0ErWWpKZ0tBMFZBNnVCK2haRUtRYnNWWUZVb1FzbEg1VVMwYVNRR1plTzJmdUV3dGNDbnF0c3RXTHRjd2xhbDVUYUtIb3R5c3BwaEk5THhsQjluZ3BQTlBENmlqR2p0RUxXUVRCRldVTTEycEk1Q3hJWUNLUXNxQ2U1Rkl4QkN5V3RGY1dvU2xYUmFCY2wvbnptYXJ3NCtuL0I3UFBpdjZJcnUrd1FSellZTWd5YnFJRzNjQld5TXlsWkFBR0pxZFdwNk1GZnp1ZkU3RkZ4VndGTHA3Nkk0eE1mOXh2dklTSzJWeVNEdVRJQ0NsR1NoeXV3aUFsR2l5aEF2YkdFQXBoN0RWN3hSa3FGWWVkQm9nRmtSMEFBMktGOHZmOWZLWk0wY3VFd0UyMFFBZE5YSzR4ZlFCcVQxNkVwcXJjZVJlSnMyQkZJUVBwY05TNGhBUTFtYytQK1lZSVlHVnRsVGxMbFUvS0hJYWRxY05XS0JGSUVQZVVJUWFCSllWNEZhVEdNaTR2Y3pwVFFvRkNJa1ZhTGJNSzd1NDMvNVRodHc1N2ZERENIdm5OZ1FJSnVNYktLSkN5YVAzc2dBYk00QlIwckZXQUt4ck9TQUorMFZGMkI1Y0kyaEJ1Mm1xWjc0TjNETVMzWHdaczFzOG9CeUVGVkZUaWpjaWxDdXFLakVObXhscFVvb2t1VHFGb3FXMEE3SHF5QUVRY09GZkxWTk5QVDdwYWxpL1drVGNJZzRRZ1RLa3VYQkZvZ1NLK3pKVWNtdGk3QStHYWhKRldER29kV0FlMjlibElrbGJkVDhaS2kxdzZINUhMUUpZU1JiUU5JVG1FSUtoTmdNbEdKWUVZQVdsZ0tDaVBBWXdBa1g2Q2JNS200d2N4OEFhNDBUOXVDaWZVNjI2WEdERXdlS1VJbHJHR05FRkJBcDRDaGpGa2xFSUtxcFdTVXA0Q3V5R3JCaW5UQmNNTUVmZFZJOC9QRXkrNnNJejdYU3VkbWZ6Y09FQXd2TlBLN1ZQYkRlaExtdC9CZkVZR0JTSzFTSUFLVGdBN2tqN0tMaENuZ25aU2tBSVVDcll0K2NXQlVNQjMwb1FHL1F0bGdxbDNEZnVOMGJSc0E4UmRjYWhBamFBdEdDM2d1NUtha0FJWUNGQmFJUjgyQW01TzIra2FFb1JnTG5WTkpaZVBBRHNxSHI3cDhPa0o1N0lmL25LbjdKZTNINWc1aURhSlFabkxlb2grTnRrWUNLdERUVUtKR0syamQwaVMyeFdRWEFSd09aZ0x4c29ZMjhCamdYM1czOEFPa3p0SzQrMjJRTWFOVFM3WVYvQXBoWHJUTUFyZ1U2SWhrWk5BQ2tzb3E3QWRRTFZEdTJjdUFhWmc1ZURTY2lmeXhITDdZM2czNzlIRGFZckJ2UGZBdjh6M054M0hlNS90MUpxeEI3eTQvdm51emtQMStmVXhZUUw2dEZrMWNUWFJaVnZBQWFKR2dXS3RWSURSWFZWWGdCRyt5MS9Ha0JxRmp0Ry9FUUZJbmkwZDNseTF0d0o3MFAxL0dnOVkwbWxOQktFTmdrR2s2V2lZbm5kTDRGK0lBK3JOWWhVdUZKcTVzTmpaNUtEQWlFWUpPbDgzdTNBSUx2eDh1cStUZEhqRG9NL2Y4b2FuRk9tQzc2ay85MHYvNHgrOS82SitIN2JHL0xuOTl4ZnY5bjZIQzh6am45UkxnSXphUTFsRC92RlIrR2NheGIzUGhlTGloNGZTTVp0RFQ1Y2xjTVRFbVB1dUgyMU1BSlUzSFEzLzU5UFlZdXlZT2ZtYjArdlJqczVldCtmcmpwOWF2OCtyTi9Mb2N3OU4vblVLNjdKdm4xamhWcmRGVXh4ODJidHZuK05LMUU5QUhUZmh3NlRDVnRnNTZFUm5DYXcvRDFKM25mTmZrVi9QUVpVWmR1ZU5FajkwcFlkOTFwNFIzWUwwNnRJcDNiVWEzNHZjbmEyVllzY1VON1FJZElOM1JjVm5nc0R2QUdtL2QzMzc4L3QyNW1OMTVML3F1dTB5dkxzL3oweFB6WVpnZXVtSHRKaGhMVTd2d1BNMzcrYmgyNi9Bd3dSOVczV243ZUozblhUNU5qL1o5UUM5Rkw5WFBTbjlySTM3LzQzeHVTYzg3YkpLSDQ3WnJ1SGprc1gyVnNDMUhQbjE4V2FQUmZXa0h6RC9QeTlNNHA3SkRuQWhqZC9IU1hxbHBYTS92WUk2V1Z1cmR5dGhMa2RDR3BMdnZ4L0djcHJVYkpocVBwUVh6c2RRRW5WQXIva3ZYOEl2MHRxUmZrM3lMNXI3N2FUNVZiV3BvNytibGxJWTlMRkRIZTBZblR2UnlUc1IzZVB0bFJxS3ZGK3JBam9kVDZ1ZThKVmhQM1JrRjZBR28wS1c3ZlgvVC9RRXIxc2diZDhBRTB0OCtocDBHK2RQN0RXYklHb3EvQURrOHpjZUh4MjZiT3dCcGZ1NXVnYlNNd2syejhUeE1aWDYrLzZSbjk3eWZkNTkvQlhUSmVPdG5mdjd5a1p0VTMxMVh3dDA1a1h5dDNUZS9mZk5mSGJsLzdLSVNBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vbmF0aXZlX3Byb2dyYW0ucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiZmNmOGZjMzU5MzkxMGIyZTk5ZGQ1MWQxNTlhMzBhYTliODUzYzQwZmYwMGM1NjZhNjIwZDIwZWFhZGM4YWYyMCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODg5OSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E5VThhM1BiU0hMZjcxY2d1ZzhpWkpBRXFZY2x5cmlLMXRKNlZmSGFLa20rMUoyb1FvSEFrTVFLQkxBWVVETHQ2TCtudStlQkFRaFNXbWR6bGRUZDJ1QThlbnA2K2owOTN0blorVG4reWlMcjFqMjBDcmJJU21ieHNJano4dFRpMmJJSW1aVVhMQStLb0l5ejFFclpJeXVzS09aNVVJWnp4cTI0N08zczdQemw2dnJ6aCt1elh5M1AyaDJuOFNMUGl0SUtzM3psUkVISnluakJuSG5BNTBrOGNYN2pXZXBrM0NtWXc1ZVR2TWhDeHJuRFZ4em1UUzM0dXpkTmdobnZaVGxNaTcreFVSSEVuRm5YeXhUQlhCUkZWblRHdTZvM3N1SzBaQVdnQ0g4Qy90TWxaOUY0MXg2bmViQktzaUR5Y0wwZWZ2R083MStkL2VQajU3TnozNGNCN0NzTG9lbkRsN05yMFpBRGlzeVQ4KzdHdS9SN3ZIdFBpTkVQSzgxS1dOQUNCS0lpVHBMdUpBZ2Zsdmw0MXhudmhzc3lBOXFZVFdJTWtxRTJRamNVTEdHMEJIeERSenlWelZtU0lKVGFqNjRhWUV1Qy9EMUlscG9jVXpyQ0ZNN29rVWxVQy9iN01pNGtNU0lXUkVtY01rOGRSMDkvVEl0c0VmTnNtaFdMb0FSUVEzZDQxQjI0M2NId2RyZy9PanlCLzc5eDNaSHJTa0JUQmJuemlCakFPUVpBWVhzMFRpMGdFeEtJMnRleGxBUEhxWnEvamt1YVBWV3QrTWUzTEdXOVpSbmE3OVFPZ0NSNGNFdml4cWM0amJJbmkzM045VTVaK3VoOTM5dkxlQSsrNGdKNGJiejdIMTkrdW5qLytkUFBseC9HdTZQeGJwK1ZZYjhJVXVEZm92K3d6L0cvM2lwWUpPUGRaN25EWmRvSml0bWpNOG1pbGZjSmtIQVFtMnhaZWljdWJSWDRiVm1rVnNYQlBUMG5Ubk1ZaHpPZGtuMHR2ZHNDcUJRR09VeGdQb0RBWG1wVElPWGZEcUlPLzJrcUIxSG5BVGJvcEFHSUQvNEJRaGN5dVR4ZkpxV0hhd0tqUGl3bkxDd1Q0cGNaSytIdmF0NTR0NXRDZzU2T0RSbU5STUVBN3JZSm5EZ1JBYlluTmhkbUVmTTgxMUhjdFdCbEFJY1RFR1kxVVZQVU1FUk5RdUpsQkR1RElad0ZDWXNNNFJJTnNQNnBGYkdjd1piVE1HYmNHR0Uya3hRbXdOd2VrWVU2azJ5MVlHbEplNGxUNUY4V2RTTVd4anpHamJXM0FpcmhRZ0VKczNRYXp4WkIzajY2V3dpZDB6MEtoOFBCOGR2anlEMGNiQUdjUDRZS01ueHVnSWtVM0liY25JVVB2cm4xVHJod0FKeGp0c0hBSU0vVll2Q1p4Q0hwNXkzRUFON01RbkZlNnJoaEl0QlpuU3ZRR0g0dFl6d1V6eHZ2SHB5Y0hCOGRUNGRkRmt6QzdrRTBQZWdHYkgvUW5SeWZoT3p3T0hwNzZFWUUrYXhhMy9weWVXNkY4eUNkc2JhbGVNNUNzWXd3TGVJYnpFdjI1ZnFqWEhaZWxqa2Y5ZnV3aHhuN0xldUYyVExKRnBNZXo4STRTUHJ5WjM5dGs3MVpETHdBekJpa2tiVnRPYkJjYzdtVzRLSitFazladUFvVHRuRit4SGdacDVMRU1QWDdlRmRMRk9tVWRwcHpWb0RhcGdGcVd5aXJSUXJXaXZkQXlnTVNFbVNXNTdhVmV5RE5jTUI4bFlaWEdkQVk3Y1AzWjFzMkIyQlBRR2NUcGEyWVc2aW5KQlFPQXpiU3dDYjhOZFVkUlJMNEtJRkxXSG5OSHVVZW5na2FLdlZXdkFnaUNLZmQ0SUxzS1FYVnlzSFFzUm8zZ0tJR1JRVjZBRTBnN0ovbCtORVJ1c0N1N0N5ZWpiSjNJeldwdHBtU0xmSUU5aTYzcHR0QnBNc0F6RVNCS3VQT3hhWjRFY3h3blBmKzdOUDU1Zm5aN1VWOW9jcmNrZzNEMFI2cW12L3Blb1plcFNaeUhINDZ1N2x3TkNLMlllQXRPWWhib0RGNUhJRWJCaHpXNWFBUkZvR1ZCM0VoZE8yZlJnN3hJVFZPdUN3S1VLWWQzTGlqbGpCTzVOL1dDS1gyaGpNVVA1UkJ1ZVExSGtVVnRicG14QnJJS0o0M2dMbkVWWXJHY3BKaXFtV09Ia0QwaCtaa0U1SzA2QU9EclVvcGhXbHlkRjNCell3eDkxSkc0MUM0ZHRlSTdZRG9MQ1RCTkZqRTdINmhaZVBlYW1OWGl5WGc5Z0RsVDQ0bWJuZ1VIUjhQMlBIaFlUU0lCb2ZIcnJzUFRlekVaZFA5RS9DemhteUlLbWNETjc1R2R6WUY5cDY0VExRNjI1Q3ZzWjUwOUEzZTAveUcyL2t4VER4UG9nRm5xaVZmeHhSeEt1MERPVExmdGJjOW9yL1JYaVdKVDd6Si9UemdjTmlqbjRPRWVvcmdTZnBSL2xOY3p1Y3NBZTB5SXBjSytBUTFNN3JCUGlCYlpPQ0wrblEwTVl2OHljb3ZzcXpFUlRSbDFDakJER3Jxc3B5RE5LQTZnMmt6OEJWTHRUN282YkpZU1c5WGVOci9zb0RBaUFGUUlQSU1QR0sreFFzRW9tWVJwNC91TnRlZ0t5WUJLWHFHZVlxelB0bzRiOE9jTlNkU2F3U0oxNW9iQ2UyVkUvbjdraFdydWhlSkcrTGVYVzdCZWxhT1pEVWNTZ1ZVZXBTb3lFRHBjU21HS0x3TlgwYXFoZ2hJaXNKK0M0NGNxSTBGSElSOWIyS2JzQlNCYzFRekZGd0VZV254T0owbGpOU05NR2FJbXhsU25jSnZENmVCVW0zc3ZVVS9TZDYyVWNBaGtFMEJPbWdLVW1oaTljMUtXMmsvR3IxMVpFTzllMytXb2RDckc3ZzI5cWRuMzFBSHVnVE8zYjNkaHJ1YWVkYzZDNWVXTUpIM0pNbGFPUENId1pKQmtnNFRxb3dmQmtUa3VUd25LUUI0RUc1R0hOVVJkUDM3ZVBmTm4wWDlIZ2M3V0FxZ3pzQytHNURtTm5reWlHQW01MzNoUDVqdWx2V2lqdHFna0ZxMDJMcU9za2QxcHQ4VVI0UUg0V1J3ZU9oMnB5d0t1Z2Z1eWR2dVNjUU91dEh4eVNBNE9udzdPVG9hRXVTc2lHZmdaQ2VXV042Nmd1MkJMUUk5WEs0YSsxS0UvQU5NanRPUXpxaE13UU5GRDFtTnMvL3JPekpaWEw0M3pnRVFtbWU4L01US3A2eDQwTCt2NUpIajkrWFZlMEVTRVNlK1Q4Qk9mU0syUmI5aUhoVHNTaVFIUGxXeHdyT3BMY0RHMWFXZmVPdUJyWUR0RlhLNmlkUWlmT0JaVmh0QmJnQ050UVN5Q2FaQXFvbkFkaWx6ZG5ESTAxS1Rqa1p4YiszTWxDdUYzZGRzeXNBZERKVWduNXJLVWdCQTJTYTVFVDhGMDJMYVFaNjY5Tjl1S2tNazhZT0R4QTNVamhQd2tiRnNJZDArbW1hQ0Z1cmdmbVBnWEJFVlpteGlSaE9nYUJNeFY3cnFaTXI5eEdiWW5JaEpOa0RTU2tQTkVoc25aWFZ1WkNib3lESThzQ1pTMjZpTlIxcVJUeEo0SHVkTjJVNmgzU3QyZG5aMHhyV1pZMFZ0OXIrYlpaVkoxT3VMcy9QUG56Nyt3MHlzM3B6OWZIRXJXb0JCNFp3ODN6OTdmM3Y1K1pQdm4wWVRJRlVmaWRIUGkvZ1IrTHlQemlsNzZ2SGZRZC9CVVo5T3N5U0NEVGFIZllNTkhoKzZKNE51TVVBN1VNdElPa1V0RWRtU2hEUnlFaG5IVTRBVDdTQXp1NjRyR1pxYVowYXpkZ3dsQzMrNVBPOS91RHh2cGxoQjF3b2NPN2tUUVh0WVpzWEtJNitSc09JZWdFN3dURHA1SlZJZGJPamQrSmMzNTVmWEhRNE9qcjhBbDhuR1RXZ29JcXJRSTY4dlBoZ2piUlVkVVJQc3g5eU5tdlByNS9NTFk0N25kZHpzcmV1MnJPSm1SNjZyWVhhcVh1QmxBcEFtY2ZvQWF5Q2Z5aDJyMUhPNDVHVVdyZXFVVVZScG5DUXdPeHBnY0tWa2Z6U0J3Uk9RZmNwVWh4bndJdS9FS2FyRzBrZjlrS1hKQ2tmWjFsK3RYNy9jM09MTlJNZ2dXZ0VCdG00QVI5WVBvZ1ZJVzVhenRFZWNMamp2dFM2Nk9DWmdlRHdwT2loWURiZU1iWUt2b0FPekpUMzJGYnhSRHYxdndCZCt3dmpCSHVHb044YlVxc3VBOGFnR1BFNzVPa25zMDJuQm1QZlltL3FUNERHSWt6MzhuQlp5c21JYS9QazNWeHd3Zkw3ekRnZkR2WUU3UE5qYkcxSXJRdm1iaDMxN25hR2xDVUZKcnhvVnhKa1A3RGVESXdVQUNETUI0a2ZWalFKUGc1elBRYUxDQUt3WW11UGFBVytEUHpKVk13cWxJbUFpS1NqRTNLNWtETFcvd1pNTFlDbHJ3cXhsR2tQTW9Jd1k3eTBlWUl5YzdSQXYyNmZRSE02QnYrdk5NRUd4bUd3bnZvUG1hUXdHRFdNY2liVldQaTlUVEROUHBiQmtibCtzQVdmZkJ6ZFFyV0NjWFJzUnhGUWtnaWExYUdyZFBqRzUxN2g3dUd2TE50TklZbldENjd2ZGFBSWYwWVMreFRwb2Jlbmp2djJxUWw5a3FFdUx3ZEExYnc1b29YckVSM3hvUkhCaWlJemZLQVdwbk8yUlFBOUNiU1dYV2NxQkxtQkRmVVVQR2VFLzY2MkFrd01PRWhPM2txanNaWlIvYWtVWk5RQXl4VW9RVEIyL0pET2VQQ3F6NVhRYWY1VzZRUWlxWTIvazE5cEp2UkZ6YmRTSlN0N3JQVXJpUmVpclR4VXN0UFdmWng5QlB0RWxQTFhpeFdKWkJwT0V0ZHlxUlBFTVFsWlBHdlVlT0pURHc2TU85bUNjUVVwT0xvbys2QVNER29ET1M0QzBvRzNnSmlkSmhybEZrRkV3M1owa1dFeWlZQ1RHOU1qbmtrSnZPeE9LWTBaaTFaNUl3M1ZvT2hHc3lMNngxSmM0eVVGejlsVjhFVlpxazAzVkhTWVo3RW1mcE1LNUJwR01XRTN6eXJOU2ROVDIwbjIzcHZFYVlrTUpMS1hCTUc0aHdQOEhhUXBzbVpZZEVwRm91Y2g1NTN0YjJrc2t0cW9VbnJDRHZqS1VNRUo5R25UUTQ2QmJ0Wm5kWXVQUXVYNlM1ckRKcWtTdmxDeWIyWTVxRFpxVmRxc3laM21BYVdSZjJ6T0Z2ZXdtOTNsa09GN1BOdVVZbTViYVRINFpPYkgyUkJob3dXenFiYU1kNW5FcXlvbVV1bzh1N2F3QVkrWUxmcTBUa3FhSURuOFJyR0IwbUN3amJFcGxyaHcrRjR1NFZNczhOKzJndnNBZ1oxMDQ2TXNpUWJaRFhnWmFZd2RZcTJXQ0JxZ1B6bmIva2FXUGZSalJ6MWZsUEV2M2U0Tmhud09YZGNIc1BrQjR6L1c5bDY5MGZEK25tNkVlaHVlbjJGdDVtUUoyTFRpcXVaQTR1dkkzVVYyckZuSWkzWFVIc2pZRFJtUkhCd2NVa3NFb2pFWXRnVXlWNW92aTZaVENhY0tpa2pHQldrM0dpTDlIb3NOdmwxTXhSc2lZYlRmVWo5NWpIUVNROWlSNkd3NG03Q0NjSEExT1RxTEJBWnU2UVFCQURxZkhoeWVIZytuQjRjUU53d2tNTzNiZDRPMDBZaWZESWF5NGYzaDBOSkhaaVdxUE1vVXRsbW5zTUY4V09XaTdOZU9NRVplb1cwQmxqNFlYZzFsUkt1RDdWMSt1cno3ZlhQaitLeXNHOXQxNndsVXN1cFp3clZBVzR0Zk5reUJrR0pvcVBDMGhMdFlVUEUwanVjTHhqczVNdnNvRjlIVit0YlljN0gwM2x2TXBGZVhMV2Y1alVNU0JFTEFCb2pXQllEbE9aejR5TXZkaFJ2YUVhNDlRandmUlk4ekI3Zk96QXNRdWtieXV6ZUxvMktIcjBISU9oai8wcFlLcjZ4ak01NE1GS0hUR0hzTVV1VjF4M2RBNHN4RHpOdGFuN0pvSnI3TlRsOUxlTDdlM1Y2cnZGeENKaElrbzA3SkU3Q2w2ZkRtOEF5cGs2dXdGeFl3N2Uzc1BUL2pSV3JNelowRUM0cURtTjNMaEtDVVEvVFpRbVN6akpQSkZYOGZBMkxaUHVVeFNldCtmbFowcTRMQlU2cTh2bHZ0R3ZOeW5MT2czZFpGUXlTVzRzeVNlNHI1NjFPOFBobTk3THZ4dk1EcDJqMTF3YUFsbTVRVzZKTHRBMWh4Y05pYWdtZVVrMU53VHVIbmUwSFYxSmxsM2tqUWZEMDcyYmZ1ZEIzK2I4WWVrRVhHcFFTQzkyVHRDNXg0QjQ5S1lHL0QxSmJQdi8vUGo1VSsrcjEySFdqZjR5L1JiYWxhWnRocjA5bnREeWl6b3V3QlIvU0tIQ1dOVHV3bW8yQjdobWVSbkNYR2tnOW9RajZHNVBwcFB5cUxUVlVaSEhrWkZQVEZkSGlCYWhTQi82RWRZK3lCWEpDeVh2Q0NUQWY5OTYvR3NSMXNRZC9JQ2RWeFczN3NGeEhKbThHWlJveWZpRmJWb3c1TGdpQ3BsZ2Z1NWM0bGV3aEdvR1lvTnBtV2JIU0dBZy90MUUwUWR3M3JIVEhmczM5ZVVITzBURWRwa2ZnejdneHN5cmMrYzVIclViblpFNXlhem93OU1HUnpDN1dBVGJtS1VnVm1EZ2U3VUVkeExMNXZNQ25LZDhoL3I0OGtYNDE2OTBURlp1OGJXOWhad1NtRUxvK0FKMWU0SWt5NDlScTltWEZVZkhpT3M0b0kzQUN3cEcvRUFYVWRJc0srMWsvcHdHdG9hUHlaTVpzdmFmR1BDdWQxYjNIcXRLbDNFOWZqLzlBOUYvd0xZRDhYK3ArdmhwN3JXQUIxMTgrbnM2dWFYejdlR25nSy9EczhrRGVGVERuU2lPQ3lsanlhYlZORkYzU2NIYVRLOGNqQU9XWUdLVk4rdGlLaXJ5dWpvQzVhNlV2aURzWnlDY3RjU1l0eWpjWHBOWkNmQzVUWlFNZ3dSZXVDRkFCQTdkUlFvZDB2bVJKVXF5c1hVQmxzWHJLSW5GT01tellRTnFPbVcvOGR4NWVhWTdzVXc4SlZSWkVzc0t1TSt6bDZzWmhiWm5yNklwdHBxbStrQ3hMTCthdDJVUlp4YjRCcGE3ejllV2hPcThCMVo2SFZidURyMXFDd1JrRDRpbGJ4TVNkQWRXZGxPV2VTZWNIQUYwa1lKa01FVjhscDJCelNGN3lPNWZOL3lQTkFNUHJpdGNlcjdzTmNkdks4VjVRSGlyb2IrN09FVkY3amhIUnhiM1p1QTVvSU9xcEttTmNET21BUFZaWW9hWmlJVnNqaUhzd2ltckZ5UnVOVm1xaXNYTmJPaDBNemFvM1ZOUjEwTmdEcFlXY2VsYmtEV2NhbDBYV051VTVjcG1ZUURib0FRTHQzNjBuWDdSMHVUcFd1cmprR1dFSm5RK0tYaW1MYXI3ZW9xc2h0dXE2cnBpcHRQaXVSRmk0ajVnQW1jd1dFamhGc0wzbXJGL0tBNndteUJXZUFxelZrRVR5cEpyTXFnbkpiY3A1cGJpK2RVSktkMXJ4eWtLa3VieWtLWFN6UVJtK0hsVHoxeWthWGZVaWxKd0VoSWtoTnZHMFZ4RUxvTm13c0s3UFhDcTdZRWtZcHNVaUFucVo5dFJWSTRpTGNWTloxV2VXQUpadjJVNEt0eU41Y3AzZGxnaUMrSlFiQk4wbGVnMWl1WmF0ZnNORk1XSldVcHMwUXhIUUdzaFIvWTROSGdSaWtTM21vSDZrQ2pDSTZGeXl2cWsyRnY2QjcyanVDdi9STjVTMDBCQ29KcEZNSEltV1IrYlYwaExOQ1FmWTE3NlRDRDhCNTFLb1NpSVZaanJISTgzRkZvUXFZMXd3MXJWaERnZDYxZ291cVJHN3VXNVR5NExTcm5FYkVJRmxZMHhqN1FHUEl2NVpZZkpBUDl5aFpac2JyQ3JTd0x3VWZuTVgrb05WeGRubGUvNllhZUtMQk1oWDlMbDZPNUhLQUlBVWRDRDZuUWoyeGhQOUU5WVpvSDhabUdJRWFyZEJqOGFFQmU0MGhBS0FML1pHSEpCRklMVTFJT3lqT0JDRjdVdFVabkNiZ1NXUHVJd2l5S3ZFZXEvT2hVNWlJZ3dFWXZBNndsWjBFUnpqc0ZIRnkrSEkvNW04NTRITDJ4RnpDRFZySjdNd2pUODg0QUhFSE05b1JlRzUrSkpRV1d4QVFBQzBSQzNUalNZalRvYnRRZDNOUDFPUDAwQzY4V3FLbkljT25SOWg3ZWhkZnFReFQrN3p3Rm5Bb3VRcERLVXNnV2RWdnZyNzZBOXhBeUZuRjk4ZG1vTlpHVjhhcWFJNitxajFVeC8rYlNhRDBheTh0WXJVdlZDeHJ2elhUWklPQjZ5NG9GdlViQTN6WVp0QmpmSjh5c3MyS1dXUnF3dmp6a3JDd1RreS9WWTRiWDF6ZHJMZnNqQmM2V1JRK3A2bFgvMWRJaDBDcU9STUhXdGtVTnAwZnJlVkY2R2hXck5oSERsekVyZGVkWnJQQkJqNmZlWkdEalZKbmxOZDN2R040ejRtN1hqaDFnclQrU0FsR1p5d0lSc1FiZDAzSWtac05DWW52WlNMRWlTR1dVbjRKMHl5TUp5eEw5Zjk1N2lHMDB4d2NMTlVlbHlINWo1REozMURaQXNRcU1xS0NRcUt4TUFsWm1sSFBrekFsYmdUNjJSRXBOb2lDT0RzS29WdlVJN1kxVGFqbVZTaVhDY09OTVNHcGNoMnBVd2lUR2xEZU9hRkdHV2xvOFdRUVlvK0w3Q1lPVjc1aGNZNFhRdnlPTStyRzZKUTdTTGk3eGRiejdMTExSb1JoYmljN0lFREVxa2xuU1BaMHNZTWVjRVk3V3oyZEdkekNiZENRdEExd3IzQkZSVlRhcTE1UTV5aUJzZkhYMDRzdWs1L3Ruc3FyMGh0ZkR4VE94TW1aOGpBZEIrRlpTbWFJKytWOVlsNDZSR3ZSdGZqejJMTGI0T3JDS0RIOEhGbFViMkxiRTJ2aFhMWWNDMFJjVCs4MkhDbXNMdnZKOXc5cTZNa3o1c2FVTmpsa0RESDVXQTZoaGFRd1l1dldaSEVGOGplbzFwSXFPWE92R2wxOE5kdXVQQjBtVG9rUG5DVDFKdndsbUYvTUdYajlpajMxUVkzSHRrWUIwWURUTEtXMk5DTDY1YTFQT05VbW5PWWFvS3hocktyajJCRTBiUWFXUzZqcFlLQ2lOUnN0Nk5iK1RSbTlka0dicFFDMVlUT0xaTWx2eXRuS1VSb2pVaUxiRVZaL0czNi84TGVwbzJHbXZwbXBFT2xvcUZrL0R1Rk5xeXBRZ1RoRVhxaWFSZFhYUXFBTCsrcjJNWitncnRDMjg5T2xXSElVUmI4b0JCN0l0RWpHaFpuMVVzeXBaM0VpSGtZNldyaVlqTWpiUzZTM1IzY3ZQWUxMYys4TisxaW1TQStpejdyZ1pFd1hKc0VHa2NMQWV5YXNuTEtwVEV0MFlrTFZsY2FuVHpPRlNnNEd6ZXVydy92T3ZWeDh2YmkrcUowQ1lyRm9nYjZFVnJiaGFRR2hlNVVoZThXcndCYmZKalRlODRMVjlhRzR6Z241Q3VUNUJtalFhUW16U01tYk5vN1NOSjJFNk15M25DRitWZlVXQmlzdGtoZi9HQk5WRnFaVndlMENwQWdYaHBYL0ZRR3hmUkJnNHdROUtpdWVuWU4vNS9CVUFOR2VvR1dlbGZ1aFJaYVArU1czNlgwZXdUOVU3UkovV2ZmMHFFczFYTGRLbzVzQjV2ZkliYW04OEM5UTArQTVZVkRMWDBOazBTbTF4VTc5YzVKMVhCL2ZPVXhNZGczL01xandKQ1Bkc2dSUElyYUJFTjdWc3hGQ2FDdVlycVp0bGlJRVhzcUZBQW1SUnMvTWFQNGxLWmMyVkttekNTVlMxREgvZjZkNTd6Yk4yVmNlL1hSUFUzRUpSdS9pQ1k2Z2gxeEN2SGt4N1hsMVc2bjMvY245UVgzYkw1RjRqampRT3RjcEFLcG1FRFlKRVZid012Ni9iTkk0WStNSWhZdWFyTVZBVFJqMHBBMlMxUWhRUDliclpCSU1TY2VDeXhtTk5Nd280bm9EZXNJTVFHWjJhajNKVW44NGNQWXFNa2ZOSWp6bkUwYTNEVUJmNXR0U0dCcERLTkFuK0ppeU1Lb1BxU0xmdm9ucDAvU2UvZzlaUGlncXI2aUpKcW1jUDZyNkx2TVZkY3gyRVJ5QUw1VVRCM2VFbXh3Rk5BVXhjeWRtaHpFdzBYMFJYWmgrZm1JUXNMNjJmWU1nRmZTS3VBYmNZM2lCVi8wREtKZzlMT0RaWTlJUVZWbFQvNDZGWDI2SDVkazlkNlpEdkk0ZDU2bDZxbnBHWFhpV3FHY1BuYThuTm53SXREU2R3N1k1T1lJeDNwVlFxRnBjZGVwd2hOL0pTWGw2VjhZL1QzYi84Tjk1UUlqVFRTUUFBIgogICAgfSwKICAgICJleGVjdXRpb24vcmVjZWlwdF9zYWZldHkucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiNWM1NDM3M2YyZGM0YjA2NDAwODIyNWMxODZlZmIxZDVhZmRlZWMzNmQxNTM1MGJkYTBhMTJkZWQ5NzYwMmQxYiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMDM2LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTQyVFRXL2JNQXlHNy9rVm5DOXlpcTRmQTNiWjJ0NjI2eTdETGtWZ0tESWRDMVVrZ1pLOEdzUCsreWpaU2QwMEE2cVRLTkVQWDc2aXE2cjZZYzBJSVZKU01aRTBvRnl5OGJxWG9RZENoZHJIQUVwYU1DZ0hoTmdqZU5LRGpBajRqQ3BGN1N4NFRzZXJxcXBXTFhZVElkU0ROQW5YWDFiQVMzZFFCNHp6R1h5NGh6OGlxQjczc2htUUFqUEVKUWlqTzFTak1wZ0RsK0xXUGVkZFNOdTlEamtwNUZEYmlEdlNjUlNYaFgxbUNVTFpObzQ3YXp4aDR6d1dmb2lPSThXYzBpNjI0dThyZ2lNb0FoOVB0VzJ5NHMrTCt4Y041VXE0Si9FZjBoa2xHOUFCckl2d2t4SXVpNzZSZDh6OExrM0Ewd3BIUXg4WHptMW1kL250SExYRk1CeVEzeVB2dUhxcjdlNXQyN25HQWpkN3o2eTd6RHA4eG9RV2pXWlhXQnNIVytQVTB6a1hUM0RMQnp3eUNiMmNPZG8ybmRHN1B1YUErKzgwN2FlYlpBbURNME11TW85U1hpUjFRUGlWNmQrSUhOV2l6TnpIN1BOaGFpSDAwdU4xaUhsVUNic1VzUDA2V1IzZ3Q0NTlqNllWNjhMc1dQT09YUEtnTGRUdm1jT0ZHSjV0YWNjNmpoNXJtL1picFBYaDJYaE1paDNsRk83Z1poRTl3TzNOeGNYdHA5TVo3bDVTV016a1lORzJ1WnJFMSt0RjhYZTdNVGMrR3pIM1Rjai8vRnhrOVE4SDRSU2ZEQVFBQUE9PSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL3Rlc3RfZXhlY3V0aW9uLnB5IjogewogICAgICAic2hhMjU2IjogImExZDI5ZWE2ODIyYmUxMjgxN2IyZDYwMTA5Y2VjNDRiMDYxZDE2N2YxNDdiMTBmOWFhMzUyNTI5ZTFhNGM0NzUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMzg0NjUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzE5L1hQYlJ0UFk3L3dyVUhWYWtEWklrYklrUzFReHJXSXBpVnBiVWlVNWFWNCtMQVlFamhJaUVrQUFVQmFqNGYvZTNiMFBITDVJU25HZTU1M082MGxzQXJqYnU5dmIyNi9iMjl2WjJibGRodGtEeXdMUDhCWnBGdm5MM1N4eHd6U09rc3pJV0pxbFBlTXlNa0kzQzU2WTRidVpheGxua2ZmSUVpTktERzhHZGVDbjYyVkJGUFoyZG5aYXdaeXFlbEc4bEwraEZqUXdaL0k1aU9TdjM5TW9sTCtqdERWTm9ya1J1OW5ETEpnWTR2VTFQTW9pNldJU0o1SEgwbFM5V2FxZkdadkgwMkNtV2xtRVFZWUQ0RkRsVTI4T25aZXdvU252Z1gvM29qQmp6NW5XY01MOElHRmU1cVNaSHkyeWxvUUxZMTI0V1pUd2V1NGllNGlTSUZzNnYwZUxKSFJuc3ZyLzVJOVdYc0l5cGdsTEg1elVjME5lbVdQVmdUSGRKKzVjamZqbTZxZWIweSs4Q1BTQUJURjB3cDJ5YkdrbzdDN0NMRzIxUHAzZW5oczI0YWp0T0RoNngrbjBvSlZvOXNUYW5WN3NKaXpNeEQrdHk2dGZvYkNjalo3ODBkN3I3eDFheHFBUC93OHNZODh5NEZmMlp4Qk9JMXNWeHIvK2pFTFdXMlJlcDNWei9zdkY3Y1hWSllBem1XbThNL2I3clU5WFh5L3Y0TVdMbVhvUGJPNDZUeXhKZ1NyTW9YRmdHV1lBK0wxSE5NQ3pHVDJhOENwaHJ1OUU0V3dKR0dCT0ZETXNlNWNzR0h3RFVvUjNNQ3RwbGl5OGpQbnc2VWQzbGpLclpjZy81aXlZTW0vcHpSaDhmQUZ3WHBUNEtmeitBQURZRXd3Wkg0N2dBVUQ3UVhnUFQ0T1ZEZ0RtZFJJOVUrMjhDQ0RBOU5rTVppYWhaZ2Y5Rlhab01aa0hLUTRvcGZMUXRXbVF6SGtKK0w0SUJkcnB4V3JWYXJWOE5nVnE4VmdNM1c5M2h0U3VHOE5zUHdHWkFPWUc0aytYL3RySHY0N2tvL3hqVXEyRVBRWHNHOWJodjdwNzRnLzk2TzdqWDBmeVVmN2hWZjBBMW5JYTRQckUrdmpZL1NEKzBJL3VQdjUxSkIvbEg5a3drUjlOSzNRY0lMa3pKOEFobWhlWFA1NTFmNzN1OXZ2OTQrNWQvMkQzVDFnOFJ3Zjk0MEUzR1pnYWxnV3U1MndlaWFwQVduNFhxVzdRaCtGaXZXN0NBSldCaTkyazZxSjhUa09EQm9qcGc3dDNjSWhRWFNURXczMmNLMWg3SG5NUVY2SzJKRmo0aUx6cWlSckNTcWZYc054K09UK3I2WEMrdE9lUno2ancyWmVMeTR2YnUvTWI3R0RtSnZjc3cvZEF5TFA1OEhFeFlVbklnTXZzSm00d0M5elFZLzNCTHE0anBKT3V6enplbldwVE1NeGdHbmpVSzJmT29GM0NVeEpGV1hjYVBFTmw2TWg5RUhZNXgraml5cG00SGw5RndBcGdjVHJZWFNCNWhNSjhCeGhLbUtrMVE1VHVSVkRxandWTGFBbnVxc1d6aTNoTWR6ZE95cTZBa2Y1M01TdjJvSEVvMEFPWFVJTUF1NE0rMFBSZGYyL1k3OE4vLzJiU0xQQjFVVk5zTUR3NDVzVXF3RG4xT3prcDhSY0lUNndyL2xvK1daemdCZjN6YjlxTEZUVWdoa1UwcmtNbXloK3BWMk5MdGsvcnY2WVBhZVlTSzVJNEI1Ym5QaktRSHpBamdrejhwYm1xRGt2ckVqS1gwVXRwT0pmQWVBc3NLSWVaczZFSzJPb2Z2U0VhQkV6V2hKWU96VWJ0cWpPcUk5M2NVS1hoeHVrcFQ4bWJnSHNnTEdnOGowRklDeWVHQWVCQ0k1emhpMFhnMi9ITXpYQXBkbkZaV2RIQ2psa1V6NWpsZXphc1dxaDY3MGR6ZkpwRm5qdXJtYWR0dXBMcHBLTVQrWGkxR3E4RVQ4MUFOWkNsTEVsL0lEQzhtWnVteHFua082ZWgvNG5yWkcybHZ0ekJYNS9jbEFseGdpSUczenZzR2JEZ2hQQVRtcHVDZXVDenhKSEtReGhsVGhiRnpneUU0c3lSMkcrbmJEWVZjRFJlYjJrTElwZGVXcWwwTVVPQm9OaGp1MXpSMG5peHhuajlKSmpOdXFnWXdzU0FMcExEeEk3MFlPZ3N5YzcvV0VEUGVDT2pBdG5BK3NzUnE3L3Z0SXFvRUpMY29lWG9mRXNpK0Uwa0l1bmFjVVBmbVFTOFZNS21pNVNWY1RGZlpNVDJVaGpvYU9iT0o3NXJKREJBbU56ZUlrYXRxSjNMRWR1OFByODh1N2o4eWV3MDBFdzlCRTErMmFiMzRJYjNzSXhmQjZJazZkNEtob3N5MjR4QWhDU3ZyS3N4Zkx2RXh3Vzdmd3U4Z2l5RVlibXpHVXU2bkVaZVBidzFJdEpHZlhNcmFORklzdit4d2o1UzJGK0NvSXNJVyttZzIwSXJ5STN4cUo5M3JDUXBiRjA5ZlRQMHdxdDhETHJJc0Q5OGIraTBjdTJjdGJ2M01JTWFaeTl3ZFhQMXR1Wjd3RkFBOTIxa1RqMmZzUmgvdE90NjJlbU1WUVBRTEdjVXpBakNuR1VNQ3ozNEZtUVBuTUZCaDVGN3Qza1ZtLy9UR1ZiNmkzMnM1NzBGN2dSa0RRV3JIL01HK1dxNWNZT1VwZTFmM05tQ25TZEpsTlEwU1paSnpzOEJiZ01QVDlpTWdmU1JETHdzZzJLd21IM25HMHhWOUkyNDdDSjhES052b1JNL1FLMEdYdHM4M3RjT1phc2h1TWtreUJJM3FVaWhHVTdrQnZ2NHd5YkxXQTFxVk5DRXh3QVk0ZmVDTkVKcWRiTy9lNWhKTkpzSkV3RWJMcytWdjBqY0NZaEhOTXZEREExd2ova3NkWkRnMFN0Q3N4ZUN2b0JhUkpZRTBKL1N0Rkd2cGRNRjlCTDBUQUJXejhocEVpWExkc2R3VThPWGo4VWhjSStFZEYyb1FrVnFqdEtlOXdDMlY1dVh0b3grOUxIZkw1YVJYaGRiT2x4VVlURFJrVktCUllBRkJSb1hBK1pRVjdVSEhETEoya0k5UVpRdFloT3JGM1hXSmlnVjNRVjlXcjFaNVBwcFc3YUFMcTBlZVR2UXg5VHVkRVltTFFoa0tjVjI0Wm1yOW1odDNIeTl2Q1N0b3JiYjNpeUN0ZFF4alA5c3BNRjhnWlBzRzE3aXBnL0doQUdOTWFHcUZTcWpqNFQ4R205QjJGczRpMnF3Q2MzL2dqYnk4Z0tIWlFXU21GV1VvQXJObVpnSFBYR0QwQkhzendGdEpQcVdjdDhWckpnc0NFSDVGbUNYMzNXaHFEV2d2dGN2QTIwK3RaSi95NVQrTHRHY0M0TXlobEV5RWhaUk1FcUhhZS82NTlQYjg5dlI4SERjREpScVZRSHlJdE1nRE5JSFZjYUVhWEM4QitZOXBrNE0vUmZldy9JeTM5eGRCVmt2VXdPZERQdC9EZ2IvRWxpU1BNdmFnY3FHYyttd0JobGFvVzF4WGIraVV1YUJGSUVscFJRQzd5R1krUTRZalBFaWM0TFV3ZkUrc0psZlhqeElTUk93Z0pHUTJpWVlzdDNmaFdYL3NsUHEwczR3UTkveFRoWTlzbkJudUJNbmFKK3g3aFBpYkdmVjVDQnBCcFNHYnB3K1JMaXlYUi9YK3M3d1phZm8zTjRaSHF4V1ptZjRsK2RPTFJJY25zTTVkenZmNytoOWl1YnhqQUdMditZdjJxTXgrZWtSTjRBTXM2T3BFMmp4QWo4b0tyUGtuaThWR2trSCtGZzRlRG5Da3VnYlJ4cDVzdCtzcHZCTmlqYTFsRGNzM3ZMdW9QQ2F6SEE3eWQvTkxSUlJ4Z0M1Wk1DTUE3LytZNEdLcFpGRklOcU1QMWtTOVVvRUJ0WThzRlFIUjRyVU5DRUhpTytJRVduS0RQTWVJbGFoTXVqREJGQXdNVk8xR3lhcUdvSnhHcE1sTkdTcUduNXdEKzFDSGNmaGV6S08wemFCTCtIV2xkbnBjYXUralhBN3ZRZjJ6SXRyT2g4WXRpN3VwaEhpNjljVzJqaVNBbEYwSUJzbnlkWkwvNWdGR1RQMUFyeDdRMlBHUXQ1cVBiWG5GWlRmbkhkTmh5WEpIVDdTTkRXQWlpTkFxanZYeFVzWDNtRzM4Tk9pb0RaMThUR25wVnh0eTVZeGE1cy84bEpDaEFHSWRnZVpEbUtJNzg1d2RRbC9Gb1E3My9mQnhRSS9KVTVYOEtkVGNGbUJFaGZqL2hLMHA2MnBhM3hWNERTZ25TVXVzWnFKQ1oyWW1CR3Q4ei9SYXQ1azFsRmRtLzZHdm0rVTk5Tm9CdnBGbFJFb2djOEwxRXA3NGJVRzFna0RDcUxlTFNqbzRmM0ZsZVM3K2g5Y0lzUnMyKy9jNUQ2MWpIZnZIci9ocndZelVIa25KYzdhbzNTWjl0Z3o4OERxQkpNQnByZnI0U1RuVzdBbldJSnZrL1ltaSttVUpiMXZZSi9BdkJydkFWS2NFRW5DYjQ0ZCtHRjJRTVBkMHIvS0FkdjZ4RjFjbjF2NG5pV0ovdjdzL0pmTHI1OC8xMkNCcG9zTW0xNDArUjNtb1MwWkxnemswOWZidTZ1ejMyQk1aSTF3eEhkZ0Vwc3FKR3dlMGZyanlIS0lXZHFTL0tEaVB4cUhSaURiWnBrS0FWWWErTXhoZ0R3dnMybkNPbFo1RDdyTko3MWg1b0lweCsrd3NmRzN1Z1lxUW9yNHJPUVg3YUpuTjdkQlgxYVdYT2lkV3JnTTFLbm1Gbk5QODNkdXRtUzJJYTlWSHVkb09uVkVWSU9TSHRTc3RPYlIzN3dGVUc0THRuV0NNblpML0x2RGJVSmkzY2p2aUcrM05nTGxSTkM3WnhuUkhkWTB6UzNxYmVvTUdwNXQvSWYyTzQzL2lwem40MGRrUUlmSWdJb0NOMEdOanR5b2dMRlpFRExuS1pvdDVvQXNOOFR0aGdsemZFWUtTMW5XQXBtSFdaQXRTZkpkY3ZtaFp2aVhxODlmdjhEYU5qKzdFNkFPNHU5aEJQWVhSUTNNUUlUZ2V1VXRuMmJxNVhlUUt3WDhtV0pRWGFGSkY4UU1HRlZpNkdMSWNrVHdUZjVjbFdWUUVLWXh3emdHM0ZCNGVmZE9GaXdQUitIVlhJMWJXM0V2bjZKeHlzeG9DOVdSSEJYK1loNm5iZFU3VGtza29PYWtsbjFIemRZRFd5ZGN4SkpnMnJWcnRFSzF2QnM5ajNRazFBc3RZMUFtUmttQ2NRUVByajhIUzEyRm01RHV4M2ZQUWFLaGh1YUFYb24waXdvWHF6VTRBREJnUTVvY0llTXFUWnAxOHlBVzNGSVhRTHNJZExOK3dJSGEvSjl0TklRR2p3RHZKQzVpdStROE95bnJEZzJxZytTZ05pKzJXMlFFSi9JemwrR0NQVTJrZFdEa0tySXNhR290eTNlVzRCb1ZkWVMwVFZzUkJhaWhxazYxTkxSSnp2K0sxaXFVMWpxZGxWVFdWZFU0NXRSbTEvTUZZQXVTSytSTTRVV1hNTU9jQTFDdlZsYUZTWUFpbitHc1p1UXhGSHdMK0lDRmRpdHdNTEVIUVhyWUVQZjBDeHhDMDFiOTFCNk5LeDg0dDdFbDB5enpUTVV5WDh4S3lFbVB1NEY0NEEyRmRxaEFEd3kycWFtd29QSnloREJ5ak1mcUVvYnJpb3VCNTZPMnpMTUVJNmpnRGQ5T3Q4eGJ3Q1BUbmpXK3A5eFRsbmtWaXpBSVFsQ3RPc3M1WGh2UStNUU5ZSnNIU0d6UWJFRS93aXFqL3RpMmFRam1rQ3ByZk5DY2hGbDM1c2I5L3NCc1Vsa2ttT0Vld0JtWmZGYWc0NEQ2TVFkb21xK3N5bG0rckY2YTJGZkNFcXhjQXRNR04rSmx4bXNHVnAzWkxyRlRrL3g0MEZ5enRsWnU3ZVdSTGZsYUhNR3ZNZkZWK01HWmFpbEMwTklpK1N6cGs3QUtJWGVkVmJQYUJSMFh6TlV1TWVWaEF5OFR1K1FhTDVQMTFrMjcyZTJDMEU2V2NRUnlRS0hFQUFFRDRtR1pQVVRiNEltV3Q5eHZ4S0tkRXhEVTBkUmU2NjZwR1RKYStnU3NZOXQ3MUFtRmhKS3NHbElESXkwRWMyeWJYcFFrQzFpeFcwOG9BVm1qeHllb0N4aW5KTHBoeWtnZGFKdUxrRDBMeFVjd0U4T0w1blBvYmdPbWhmMjVUbitoaGQrM3lQVlZwL211VVpkeVcwL293VlpUdWRQYmM5UEN2eHVMU01WTE45ejRPMUdsWU9ZbEM2RHoxNmhvZmF2Wk0xbHJtZkNQS3hOeDBzd0NGWkdRWXJQSitzcVprVkx6U2RpMVgyTmdGV042YXBRMUpiekgxZ2E2YnpUYnBJS25GQUxTOUJhaGpJY1p2OFVDM1VMZGZUVitLbmpKMTdHMVYxWnNlY0Q0ZEFGVWdGSGpqai9obSt4TDRkSDg1a3g1R0ZQYXRMZk9JNlpBYVFqbTdyMnVOVng4T2YwSmxBWVhGdXNVUThjcU1iUG04V1IvTXRrNzhEK0F4blY4NUxLRC9RL3NJenR5ajl3UDNvZUQ0ejEvTXBnZUhFMDk1TlJvOVpHd2QyRk1LZk4yTTZEUTVmL2c2dHJ3Y0c4eVlJY0g3T2pvOEhqaTdVLzJ2VVBYM1orNmU1Tzl3Y0h4QVJUeFBucDcwOFArNE1nOTlvOWQvM0RndWRPamo0T2pqOTdnK1BEWVJBM0tTUmR4RFBqZ3ZTTUhxVW1ZZ1RXU29tOFhsWDNzaVB6SW5vTU1WZ2lHN3NKYTh1UVNvNGpUaG9CVEV4QXMzVGlvU0gybEdCU3VvcWdhL2J2QnNZcGtOUy9aYzhhTEZhSHFaWDZSOFpSN0sycENhckdtYTc0NzNCZkRTQmk1a2RXM0NYNWJhWDV6RUQwd1ViYTJ2OXhHL3JSckVwVjBjZWhkV1lxMkVhU0RRV3c2YTBTQkxhMEh4TXQwaFY2MkZseUZvdk5qRGlvMGtJT3paUGNzREx3WW1mck1TVUlHSHFDWkRTcW94czZqOE9LaEN1d3FVb1ZOKzNNZHE2NGtrYjl0NHI1NGNBOURxUzBreURpUGc2c3JwQk9TclZQRm5oYndwbGNjRmFoS0JUYmxoR1BYVTJNQlNqd3liNGpYRlFPOWZsbk1vTVB1SkFEVExXQ0FwUmZ6Vm1BVVNPanoxYS9tYWx5RUkyc0thR0JvYlBqK1VvYWc5YVFYUjNGN1hUOUg1clhyUFFMcVgxdFlINk1JTFNOWFQ3bitsd3BlTDNDbUw4NXFKN0ZRWVdTZUJkUHB4VmxUMS9TU0JQUVR4bHJmNDZPbmZnbWpTN1grN3QwTENLUDdIanAxa2RwZGtBbEoyaVB5NjJuTWxYZHVWWS83VzFLUDViZ0g5WVZPQmVlK0E0TVdDRHVZc1hTWmdoVm12alpDRGFDV2xFK3hhanRXK1RVdTRzNkpDaitMWDcxbnJiTUdLeTd5QXhVQS9TT2VlTGlra3c3WC9HalUydmhud2FQS29pOWw3b3pjYldVK2g2NVAvckdMaDN6QTFJbG4wWEtPQjZYV3NUa3NXOWxWNVhDS2hmRElRSmtvN3hrdVV3b1czdDhyRjBmSDZ5SVZtN0IwU09BR3VoU0F6UzdQRm5FeFZIb2JUUURKVDh6L1NjR0dEL3Q3dWNpQWdZR1JBWFFJbkdFOUhzU3hFcjNDV2x4NDh3b205THB5Z2N6ZFdGZTh2RG10TXhObVB3cGhJRE1Ia1NRbG5pNVFrcWZBWXcxZGh0cCtnUGpZZHVLRVpsTVBsVnhvNXU1RE5HZTczNklFRE5QcWdaMWQzcEIyWWtiQTZxbStpQTQwb212RW5VczR4U0YrZkthbCtZeXJzdGc5c05KZ0RTTXhnSzcrUE9KaHIxRE5Oa3pPZnI0QVRqc1NuR29oZnZJMnpBaVUwT2NDSGt1RVIxNHZkRUgvZ0p2bm1rOGRiRlZ4TmtZcVJ2QWdkbmYzajQrUERvK21lMTNtVHJ6dXZqL2Q3N3JzdzZBN09UcjIyTUdSLy9HZzcvT2pmbnlZU2hNeXpNSEh1cU13Nkx5Z0JuaDU0WG1QbzY4M243SFNRNWJGNlhCM0Y3QjN6MzZQZWw2MG1FWHpTUytOdk1DZDdZckg2aFQyN29QTTNHckQwY1JnUGRwcUwwMTZmdVRySmo5WFpuckhoNU8rZCtnZkhRM1kwY0dCUC9BSEIwZjkvZ2Q0eFk3N2JQcmhHRVQ3SHR0YmQ1d0Vtc0lRTWxjZHk4RmQ5VFIyK2E1SHpma3hYTGNKT2RkeWpPU256NEFDcGk0STFWNEtVNzVhNVJQSkxkaVVKak5mT3hnMEFJdmZNclJGT3dTU1JaLzNFODRGL00wUFdNMUVWRDQvd1pQRGpkMGxycVlpRmVXaFRSdU80NGtvU3h3NG5iTWtqZ1JQL0VjdDFreWR0REdFUVh1ME5BNUJVR2haMVlOUkFVN0RXazRqUDI5Z05BMnc4eUNLbk51U2gxMlp1NzE0V1FSbG1mRWlBYnVZQ1p2ZkhBckZuQjZkSU1RREI0Q1Vhc1hhTHFqeURycDhHd2FwQ25HL01IbDVha2RKZTFQYVdXUWNXT25nc1lqcTNTMFhyZlIzMVNxNWV3UnBXcEtXY2p1WUJ4NHdaK28rY2hGdlZRcGJCcWhId2YwaVdxUzJPSHNuSEl6Y0tQYUZZYUNGWktJM2tNNzI1Q3dVZDVqRXE1YnViYWFHdWE4NUNPTkZ0dDdaVEZBSzdyMVduUTk2dUVjOEhmZzdMRnN2dzUxSkV3K1Qxa1JHb2dUQVRYQ3N0bGZkRlFDSVZDSlFTS3ozWjFBUW5TM0xqTEJPRlJpNU9YbUROa1h4cE9aYWFDOUNXdEdaeFlKOGFBZ01FbUxEMi9jbWc0T0RmbmZLZkxlNzN6LysyRDMyMlg3WFB6b2V1SWNISHllSGgzdm1HODdmNGM3dE45Q0didGlVQVNsNlRIUk5IaDRSR3RRdG94TWs1VDRtcWRiRkpPVWhTK090endGSzJTVlJyUE5Zak92R3IvQXZicFRNeU4wdjMyM2ZBSmZYUTUzUDNpekNFTThNY2Y3TjdZMWJLaWNIejRkWkowZkVpVlFSYnNaZFJCZG41dkRWSXhqbGJVdFRqdnVieHF1eG9RNCtObE5hSWpSYlBFNjludDdxbEJBeFZWYnQ1RGZpTnFlS3MzeVVhdjRGYXhsSmVUVFd0Zm9SRllLeHJUWU5MSXg4OXQzV0VBS2pBSWljRHBwMUN0ZjMwUzBpaVVBOElyamp2ZDVlLzZCM0NQOThPQVlDUnlFOHcwMDVDdS9pQVE3eGdyUzd0Vm9MVExtdm4xbkduVlg0OWNpV2VoZE5wQzJUMkJSYkVrNXVpT2pJOVdxWXhKbk4xYlpMdmJDTHhBRkJZMS9ZUEVxVzF6aEEya1NFS1EzU1IvMzUrdUpNUFhiR0RSVFo1QXJldUxOQlIvVHprTTRrV21CQVRldXRXeHVsNEF5a2s1b1luM1dpQklWbW5TeUJPa1hKT1B4TGV6QmtobUo3TW5yNyt3MjZucktiSTJWUmhWV0tsU01HbVFlQjhJaGlHZEM2ZWlVNlVmZGQxdUVUdHk4eUh0UlR0TDBxN0tQVFdQZHRmQlZhYkJkOStUZ0MxU3dYRDdqUkxmVnd2dDVxMk5wYld2OXUweXlSOE1vSkFhYnFKY0dFMWMzSmEzcGlubkxHQnpNb0xkUjArSS9RQVA1bmZOZy83TStOOXRIaGYrbjhnMnl1MS9Rdm1FNy9VdDl3WVhVSjJVTmpBdFAzai9DOWVGTEd6YXM3Ulh1U0RWekI3SGI5Wk5sTkZxRXRURXVLdkYrN204MlZhS25yYXJZRnFjbWRUbU1RaGxUVzEyMCsvbXNZa0c3bDl1QnRCRlYrN3dWUjFhRlFpLzJOZ2lMZitpNTVwL0FrSkUvNzFFTmRDRXovdHVrNDE2ZS9mYjQ2UFhNY2l1NkxrN2ErSGM5WGNvZDhUcnhHTVlUUmNYNzZlbnFqVmM0OWFMUW42dHd2M0tScVNtcnoxaEJpWHQxbXIyNTBGNktaMFlMYU5wZzVxd3QzUTNGRyt5NWdaNHFVQnhhcFJibnJVZ1VRQ2VGSFlaNE9uVThBREF3UkhhSUlQSlppU2Rnem5qdzJORWUxWmR5U0wvMzhPYWlMdGtiUlU5NWlMZm9WS3pHNkhhVDh5bHZPbEp1UG1yVXFVZmtpMHdaZmV4WTNOOHZSa0NnQjJUTWRTN3gzTklyR0ZGdmNVVXpieDdseUx5SWkvMWhRK3BDeUk3MXNidU1oQ25UeVM3OTdwNXBCcE5BOVdiNWd5WmVCMW00bmlpMSttZlNqaEtSeGJSMUNYRjRKZlRpQTl0cnc3ZHF0ZU43MURrV1pLZ3hJdk1GUStIY1VodDBCQ0VSK1RtcmMzQk5WZDRTSGkwaXF4ckJFMk5xTzFGUlM4Z21QQmhldG1oZnpIbFRPbUxJanhERVpzZldtalRRb2FsMktHNXlPcTNIekZMbmhzbDBqUWZRQXFVMVNpVFI3S2cyMWlHelc3VERuazRCS0NYbHMwWXpabFNyNEx0cG5sVU9JM0EySlIzcVNBTSs2dTRzc211ZnJRZVEvZEh5Z0ZHUlNVZXp3ZzlRT1A4eXlSWW9Zbmx0Q2Q1V082M2FETUJ1UkZ1bTlJV2RGTFZDdW9hbU5heUNTNndpK0wrMFhVd3lMbktndnE5WGJvWStrRTE2MTg0Z29tZ2QvTWhsUVFxYWYyTXdjcjc3RFFEaU5pMTNuTGFCcEcwM2ZDOU8wVTFMdUdJK2R4TWhiMnhUeWRrdHdKUitLMkhKUnFXbjA3VDY3Ly9kbkY5bWVtNWV5allpS2RRcldkK0Q2bXpuNUd2YS9nVThBdjZ3bWlVb1lidEU3dWptTUo5NFNuamZTSWVyT0JlYS9SQ1pXM05pVWFhajFsMUMxSGtXbE16NWkvOFBCbzdsQXBvNnlQVlJtRU5CMUhEenNHU1cwbDR1bXl0dFJWYlplS2QrbDNLSXB3M3Zsd3JLTTBpYTZyVVVaZlVkL3AzNWNqY3p5YWlNYmVPMm92TXVJTU9XRzJUK1hyUDY5NkY4VjhLaHdiSEIrR1VLZkdBMC8xRysxV0dLRDQ4MnFoNjcvNlhxYW5EYnJGYnZEbmFhbEIwbzh4UWJpVEtWS1JZSGxGa1poN0FhSllGU2tzMnc2eXVUTlRiR3BTNmQza1Y1ZmVXcnBEZUxrWkx0VnZlWHFIcFhpWXhCYXY5VVk1a3orWmhoMnZxUFJvQzhJano3UHNDdTFoWHJmdmdhWjlzY1Y2SUxlSUU5azBGa2RBVmRvRGZXZTUrL0xnMlNnSS9jaG1mOStaUGJKSzJTMFRLampGRklDQnFtVHN0aE5YTEdURHF0aDVvdGxJQmdiYldLL1dnNnRwVlI1eUV2UGcwa00yMWJXbHpDK2hPMVZNTDNXN2NGcGRsZWQyYVVhbERrYXQrWXBWYm1hMi84ODdaYzV4ck4xUEpXcytlbnF5L1huODd0ekRPZkdKREgxa2RJcXBsa2VobnZSb0NvWGdnekJya1IrOEVGWXdnUWU4dDE2emJZZGp1VHZjVFZ3cFNvNkJWZXd0VTdjOHVHb0hWTHpkdUY1alBtWUlWY083TFIrWEFNY0YwOStVMTltSU1hdUd1T0g3WUlzUUg3eEF4MEJCRDZkaU5ubTNEcWdzR3lmUGVPaE9KSVNkSlN3akpFR0hQQXFOd3JaNnl1K3ZIc25IeTIxQldmZUFnUTZVS3dIQS8yemZUVW5qV1ZybC9uV091czZuNFIrUUU1SmY2a2ZySlA2ZjBrS3ZRR3o2eEM3V2JjdmNrM2xYbmQ0SWovZ2wzb2VQLzlmWk1ya0lUcC9oeFZUMWh4THgyZ1FzQlBOQXpxa3VnUjhNRjhrQ1FLVktzR2dKY203eUJQRWt5bUxRUDgxMXA4WW5MMUJqdGovSVVYK1E0cjgveWxGeWx4M000c2pSWFhOMHE2ZStJbXNlQmcxenRxb1BHbjZtOXd3azI0QklwazFLWnYvdmpZeGJQQzd0cWxsb2Via1dEeEgxTS9QRWYxZEE4MnpXQ3ZpdFF1MHEwNjVmTmNlYUxTc3VYdGtCdlQ4aU5mZjFtaGhOMFpQdTAzMWJmTWFKOXpmM0lPNGpwbU9KRk44QzgycTAwRmx1Sno4WHVsZGppb25nNlFUMktvTmQxRkhnNkx5MFNDcE9nak5nUlFIdTRaWmxPdDlGOU95YWxsR2NSYmdOZ2FLZW13K1NwU0xSV3o1Z1Byb1VCeEQ5VVF0bllzdWJuaFhjcVNaM1N2VFNyT2tQa0o2MTFRK1F0eCtoOUpkTG1lc1BHd2UzdEgxTHlyWmMxY01IVDd0VWxvRURQcVVwY1F1dUxpQW9WeUUwMnBYY1gxTHVoUEhNQk14YllyenJXa2lNZ3NEQVpxMXRNdW9jS0M3eDdlbVVUYnBCemUxQ2hkaDIxUUlONUFja3hncXNjUVFEa2c4RjArZ2VFWTM3U0RZWWpiN05Bdk9SRTdxdGFmQWd2QXBraEhpUEVHc3lIQWc5djBxTWVBaWZaM0kyV2lsRDRzc21KVy9WcTczS2lRVnhJMUhTc0p6UXZjVCtQWm9mQ0lRdVNaazRrMnBBZEd6YnVzSnZFNkVMOURHTDdzeU80OHBYL2ZtajM2UXRER1RsMTJUQm9qMFlGdmUrR2JTWTVjbkwraUt3NDBuOUhJREhBcTRGVjJnMytZSi9TT3FRUyt4My9ScWwrY2lwamZxTTE4eXlMYzlncUdlemZ5VExGekpNSXhDaG5zMjllVmttWlZKNDYrTHQ2M3hkelhuRktvK1RrNGFsSDBPNTYxaFRXTnZMTlZwZWl4MnVjMkhpTmNseUFNV1BDc0pCZDZZTHl0ejNSRFhuVmkwTnA3anM5WWNtN09hRDdwWWRTZFByTHB6TEZZbHFzaGFjN1RFV25ObWZUUCs2VXdNb1pzd1dzVTBHVU4ydTNLRWF4ZkREVk9SRUtsd2NzOHl0ejNqVjFOUzdvcnpzTEdsTzUvVmxVcllmWkJTSnYzS3NjSEdhYWVCVkJFaWpEaStyTERNQ1g4ajcvdmpDNFkvY0h2Ym9uZ2dKM3JrZkYyVzErbVBzMGtaUjFYc1V6eHpRODNJQS9hTndQM3VJdVRIdDhnc2loZVRHUms5amtvcW9YWjloQ1ZYdUVKdTB3MXlwcExOZExnWjdKWndXTWdicGkyMkRrZmI5K2NHSzR2WWx1cEMzRU44Ri9zUjg5Wmo3a2tDN2daSVRZaGxVVXh1TDBpcE9qTDMwRGM0aFA5a2E0d0FjNG5oWE1vUWxZYnhpdm5XeGtyMFVUcUVvS0VsWjZkZG5NRWFycU1IRkVLSlRyM1dKdFFLTzcraTQwUjhVb2tZT0RibExYUGlVaU1oVzJVMlpLMHhVYkRUWTZRNXREdUZMTW1XbW5uc2xJVFdNUGYxZ3l3T1pBNWtDckxZZmxsVmxocEZFVm9VdHc4SUhiWE4zV3dldytMM0ZxUjA1Um5UaXRxWVlBYnFwSHh6dmFKcTFzVk5uRlN5VjRtR05kVUxPVGs0em5uZEY1VTBiY2d6c1c4SEJIT05ORUVZTjdJYWt2QmMvVUI4ZFhvNjE2bW5KMHFGcXpnTnp3N0lrd0tlaU9rWUVheXh6WXNVOVg3b3FzeGRJMHUvR2tYakV3MU1ReTlmYXBPdkZFanROZTNuMkIxM1ZpVWlsQ2svN2Z3cVRYT0lKRHNxOE1WeGpjTkxuWmN0M25sWjZHWkZ1N0JNYmZXWXcxY3RuK0k2d2NTMGRsMEdTQnh1MTVzRmVTcklFN21uYXRkRXRRcDNYakdwZVNtbmVTV2xlWjdSdkpvR3NzUmdLdW5XbXhORVdscjY4dUloeFR4NXVmNittTDZjRWtyYThzSU5vVVpiY29KTHNoTUVKVU5ETVVwU0d3Umtua0pNWFloUmV0RUxRSGw3NXRkY2RNWTFOMnZrRUpGbjZRMnN1VmdqTDJYVjNhNGg3RnAxaUFrbFYxN0Z0b3Q1MXhzRGw0bVIxRzNJRjRGSk0zY29tbTBrbGpWdTRhTDNkODJhS2ZnMi8xNC9lODI1c3Z6YUVtMEcrTENiTHM4b29hNW95QTdidWQ2SGNTaEZLMExkLzljcVo4MUVOZ2FpbXdKV09rTVJVQzU0RzRha3Q5RmR3YjlhMHJnVnoxVmc2UE9nVXhONStzMDEyVGZWcVpSOTJvcWpYQXhtOXhQM2tOQm9PamhMVDEzUUtuSERaTGg5RWtBNXkrOU5QSkZSbHcxd2JlTW8xenJDeXVrRzkyR1V2SzU1azlmeE56VE50eURUOUFHVnpQeHU0THJET0xyekljMWE5VG5rRXd6YmdzODkrc2xQQ0o3ZzhWQzduRjJFbCszeEsxU21CcEFwR21YUWV2dlpRZ0NuWUE3ZGgxd3p4UzFUclVCR0JUQ0FoWC9PZW9HUHlTVzVyOCtrTmlpeTZMbkhKWGphVVh0ZmVuSXhoSUs4UFFINXh2RGVVZXhvanlnTHo5Z1FEWGVFQjBXZUptcU1OZGw0NWRiYXk3Ym9oM2JIVnNNVld6cmJ3aHFLKy9GTXdKWDI4MU4xVXRxb2xPQmpTMTBMc0trSm1VYTRHWHlkczFnTlJlMjhGUnloM0d1NkZrS2l2TnFWZ3dtYkJFUVZPV3NGZ3lXMzAraWYxVi9NLzZscGNZS2QxaTdDallleVBuMitNTExFRFZOY2REV01FemdHS0J6Uk45N3VHalpYbVRqSmQ2d21ub2RnMFhOTkNwUGc2MVJwZjl4TFkxZzBiUkF6MXFBekdveUxsd1djYkk4bWhHMU5La2ZWMVAwZWR1T05LQklCL0hJZGNYOUlQdjdOTjRYUVJTRmIzUlB5WHQwUzBubFBkNE0wWFBxeDVzNlB3dGxhR0xvOUtqa0NsSk9kdTRmWE90aGZZd00yKytEZllCRktZRldiWmczQVJodHhyZSsvdFczTzNKdXJxenN6ZDIxdXlKbnJrVWh0S0hMMTYrWDVEZGk5blA3WDV1aTlPTDAwcmNrNllDcVhyMURBR3d1aTRWck0wOHVWb2NZS2RJWlJMdzh2R3BQNjZ1VWtyNmdyTEM1NjBZdnpsVlh1UnRsaHBmbXdTaW1FcXo2QVRaRHlCSHpiZ1lJUndKckY5V1JhbE03RzJ2cE9tcXJtMnZxclNYYm5iaERXbkZDaEFOcDFoZmdseU51cUNhUU5jK3VyVlNPYXVLWmlFVXlyY3FTenROT0luWEhBUXVhcG12SFM4VFRQVVl5eFJnQVVpcVRxc2huTzRFdWJqclJmV21pUmI1NktUUzlkQU5kc2c2SUZ6U1BjckwyYXp3UjJveUp4R2RGR1hzVUhZSW9PTlE2Y3F6Vmk2SG55VkhtVkp0ZERYanRnb1N1dEgremdWWU50NnIvc3FMd1psNGw3UDkwcDNoRWs3OUVsY25udEtLUVYvTThZaHJDUEtTMTJhYTliTUFjOFZhRDBvTGNPcGJ6cnlyY2JLdjNuNEViRlRmdUxGQTFKUHJhYU9yeFowdkhrQmpIbWkyWFpEengxOEduby93QlM0SE13QjcxcDNWWXhJUVpNN1hRR2JObTUvek9JbmNraTlHZE1MVVllQUtpaHJMb2toVmFEdFVsS0hlNWJ3aHVWM3lwSVFHdnlMT2N1TjE1a2JmcEtOTFBJWjhFM04vamVnTmlWQUtHTzIzeVZjeHhZQjJhRTlBd0xveDZ4TG05clJMREdQVW82MUs1aDI2U0w0ckI2UHNQbGltbHoybnlFdmNuaFByNzBXUnVyOHhNSUdEekpQd01oQWhPa2pTMCs3MXRtUCtlWHBuR0lpMUMyeVlTeVd4dlpVWEw4RVlTQzQ0OURFMzdDYlk0S2twck01MGRpcnFoeWEzYzVBV3h1YUtOVjJ4WjRGVE16NXBZdFZnQ2psbnRqYkFUaEpvbTczQmFSZVYwOFp2Ui83Y0dtV3pqYlY3YzhjOEg1MVk5Y2FuYUc1VWtVRUNzQnd5ZzRaNHJhc3l4MkFHbVB3Y1NaNFZLU1hJTHZYK0ltVmE3QU5DeUtLTStPZ0hsYTRzemUyZGtSMzRLSUREY0wxSW9XcWhZK2pOekpiK2RBbkJEeDBFY1MwckFnWVp6dHZyVWhUU3Z3aFdrU0lhbnpENDVLL3FrMllXbDBzcGVmNWR2VDZ3dnJ5K24vY1g0QVpYSXpDSmxIVmtENWhOcEE4dXBxcW5HYXJLYnFJQnpkUjFWSExpNG52eGpGdXNXZndPbVNuNEJ6Wnh3T1lnMFdoNnlHMm04TGpRb2VQeUwxT2JRcFQwUkNrclRBcExEc2JuNGxTMWNXcW1OVEp5eDhZalBRYkdzZzhON1hNcmVhb2JRbEpDdVZZM0x3OURhSmcrN0RZbUphOXpoR3V6amt0bDRBaHY4bkEzTEoycGpoVk54Z2crY0xFaCtqRVBYUEljdTZqeUExL0dqTzc3aEpvUVQwakF1V1d6NWJRTms4VkszZm92WGlrTzZYOENnai9yc3o1TmxBeUNzcWxnai9YcmFYYWRFU3VQZjJRQnJ3YW8rQnpoMmJMVUVtdHVnQVdQcHVITmc2cWJabFNsTVI5a2ZYSFl2all6MkhMb1Z3MnB3cVlUamxXMXprWEZJWXJ1d3Y4QnUxRVh2QzJRcS9TQmFOcXYrMnQ5OS9OK2p2N2Jjb0J1bkZ2RG4vMzEvUGIrK2NMK2QzUDErZG1VUHordW9XN0VQeit2VHVaK2ZpOHNjcmVMWDdOTmlWRTREU0NtcmMvT2JjM3QyZ3MyMW80dTFQVjVkMzU1ZDN6dDF2MStmY0d5OGpNWGVGN2ZyejNkMjFjL29WR3JtNStMZlRPekJab2R3UHdFZFprcXVmZWVJWFh2N2k3UHpMOVJWQS92U2I4Ny9PZjlPdWxscTFlSGltSlc4MmlZT2UxT25hTCsvZVRjZ3BJTHYxK2Z6eXA3dWZ6U0Y2YXhRcU9wYjVMYjBQZWhRWWFBNkRxUGNEeW9hTEsvNTVwWkFuQWtIdHZYNmZYS2Q1TEFrU0UzQnplYStzUFRFTjh6M1dmbysvM3JVbEgzby82S3BtdTROT0MvUGl2SzdIc29rMXZWWkZWcDJXU0lKVDVFc1lqUWFXRlI4VTY4bGg3UTgrdE5iYytTUEJHakplQURpelJFd1pFV0JQaEtVTldUVzNEbzVlQ0tGeUpBbm5MWTdrSStxOWtsTDY3aUdmbkU0THBOQ3I0empCd09FeWpCeDNkQ0hRaHFoSkN4aVpEZE1UQWFUd0tVaUFTNXZYdndFWlg1N0JWUDE2YzNGMy9zTnZkK2VmcnM2UThBZDZOcUtHUzNNS01aYWxZTW5LdVNxTkQrY2xvYU9kMFFiTVVnSUFNTnBsMWlRNjR1cHdDOElST1N5VldpMk03UDhIR1pLSlhVR1dBQUE9IgogICAgfQogIH0sCiAgIm5hdGl2ZV9leGVjdXRpb24iOiBmYWxzZSwKICAiY2FzZV9ldmlkZW5jZSI6IHsKICAgICJhcnRpZmFjdC1jb21wYXJpc29uLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYTFjNWQ5ZTI0OWRjMDA2MDA0NDk5OTgzNjBmYWY2ZThkYTAyMDZiNTY4Yzc2ZDE1NTYwMmM0NjQ1ZmE1ZmNlNCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyNjk3LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWV1NhL2JSZ3krNTFjSVBzZjI3RXR5VFFzVUtJb2VDdlJRQkFKbmh1TUlieXk1R3RrdlRwRC9Yc3JiYzRJc1RYcW9BY01XaHlJLzh1TXk3NTgxelNKQXhiYmJ3Z2JiT1BTNTI3UmRXcnhvRnZVTkNHMWVaS2tTQ2k2dGp5cHJoc0NrNFJGNGNzS2I2TkNLN0oxWDNrTVN6akZ1Z3VPQzBiTUZWTmI2eGZQWlNZUStkUWttYk1zUW9YekZueEVpWUl3U1EvSTJCbU9DUVJ1bHlWS0g3Q1VIbXpBbXI0d0tSanZOdVpDUngraWk5eTVaSFQ3MU4rS21xOU40YkZPM3dUcVJwMzVmeXZOYjVBV09PTloyTjJMRjhZQXpGSDg2N2ZIeGNrZ2ljUkpoemhpbjdrQlc5LzNVYmU4aVFIcW13RWgxR3ZkNDBoN2g4WG9lamhQV2o3UXlsSHBXSTdjZGxPNGRUTjNRdC8wdzRaeU5YM0VEOGRqTUVCdDh1eXRkN0taeWJLN0ttQnJjN3FiaittUm5QWWZVSk15d0wxTjkyZHlpYjE0TjhRSEhaWVVETm1jc3piRHRwdHJnMy92dUFJVUFOUS85OE5qZjNsNDFQNzJGT0RXeERKVzhYTVJOUDR6Ykc4cG02TXZ4WlhOSlFwTTdMS2syK3o2K2dYNkRhWFhtb0VEQVV0dUFlUmpubU42VGtNVER1RmtOTyt3SnpnUmRUL2xkbmFwaE5jZTZ1ckYwclFlYmRUUXhDQjk5dGd5WU1DR2paRlIzWGlwaFZVclJlR0c0c1NabWs1UTEyZkdVcEtBeVROektFNWF2dVIzeDBGVUthdllwVVFYeVJTWVFBVncwU2lvZHRkRlV5VUVEVlZrTWdSdDNOVnFIU0hTczRyQXZ3emFRcVlKekVEV1NwOW5lTDcvOS9HcjU1KzlMeHBoZi9zSFVlcmNmZDVUWDVYREFrWXByZWVCZk1GV0gvUmh4dFJ1SStlUHFuSXZab2s4MjhvQ0tPb043bjdqQ3pBQVFrczVPZTgyejBvRVJTbEp6aklITkNiMFE5TGJVY3l1SkJYbjdjRThQNUFuSEgyZkhTT3BOeFVSMGdkbzBLZ0tYT0JBZFF0SnZ6cDV6azdRUWlqdHJsZEJCYWJDTVV5S1pjeEsraXgwZlZBaENFN2ZhZUFlb2xVU0xEaHdRQ08xRkNqeHJsK01Qc3FQWDcwb1hsazR6ejVmak40aVpnZUxiNlk2WnFMVkNJOEFwb0puSllnQ3VrekllbERhT0twTkZ4YnlRcUIwTHpDSE5LcU5SQ010RW9JRnAwLzlXQ0xucmFTSmZlcmZOWGNINlZBK1VrVFhzSHRZcHJMdStUbERLYVVTZVQrY1pldTN1dnk2U2s4R0NsMmptanhMczZlSHpmeGRHT29rZ0hUTkNFYVdKUmowR1JCY0R0WHB3R01GSWNBamFHMHF4cFQwZ2JESlVaOEU3R3Z0c2NUSDErbXB6Y2Ezci80WXJhOCtzRWR3Ynl4a0tIUm5TR0JJSm1GRWlRbktnRXpGTm1mZEVMTXlzZ3lHK1ZlS2t5L2dOMStuM3c0WGlmUjNYYzJMcCs0NElYdkdWWEludnphcVgzMFFQSEVWa01zV0VLUUMxRERQQUdNSE93VmhneUFLblZTcTlNODR3akN6cWlJYldyYU5kcjFEYkg4cnF2OEJGKzkwRm4zSlVHb1BOSUtpek9jc1ppR2FocmJQU2VaWlF5K0JZUms5VFhGdHBnL0xNMktpeitDU3J0MHBPM1VqN2VhQmx2OFVKYUFFQ0xlRHREc1pUemQ0Vzg1TWFOVmsvdGZOb28zUEo1V2VQYjl2MHN6bzNUd25MQkRPSlp5dzFETnQyQi9IaGZORzU4NlBVbHhUdVBkMXJ6ZXYyeWY2NWh1WlpkVWZFNGxSRHk1SGRxTGhLTGpYNCtxbmY2YkxRVnZKMUFsUm8ybExUaytOK00vYzkvMFRuNlNaRnZWK1I5bFkzSGU5ZllPZUVoTGIyc0t0dmhxbXRzTVg3ZlBkd3VqTTlEdU5ER1NCZFI4MzFGdlRzdzdOL0FGaGthdWVKQ2dBQSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI0ODdmODM0Y2M4NmRjYmM3YTA0YzIzOTJiZGUwNzJlY2FmODdkYzExNmI0YmFhMTZjMzVlYjljNTk5YWQ1Yzk1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRU1lVEd2aXpEcmN4Q21nSGFuWjBkcHFQSXg0bEF0cnlTSEpwMitPK1Y1SVQ0SXRzcHZXd2Z5Z3RZT2pxWDcxd2xQdS9zN2pvb0llK0JDOEppNTBoL0phS3o2RHA3ZXV1UnhJRmVQSVdFc21VRXNjeldJNUFvUUJLcHZjL3FXek9KWXlhUlZFekV5NkplNWpPR2czMzlLK0hzWVord2p1UUlLNzR6bHhqV0pBNFpqeUJ3QThCRUszRmtOTmhJUEtwUWRDb3JSaXNqc0xLMWoxbEtXVFRkRnd3VFJEc29pSWpJR2N2WkFvSS9kaS9INTZmdTN4UFg4N3pCTGs2bFd1V09ZZnFjOFhaaUZJRlZZU2RISUJLRW02blN6R3pVR3c2aDZ5RjM1QVcrZXpnY0hyaWpRUS9jZmhBTXA4TVFNQnI1V3I2UjdvZ0U4QVpycGZPTWd4Q25nQUpLWXJnRnpPSkE0OTczdkpVWXJ2QWpHT25GN3N2U3dtanloZ2pKK1BLS1JFVHE3ZlVSQVJTdzJzbjdMMElTejYvUUZHamVyU1pva3YzSGRBbzhCZ2xDKzdVZW45V3A1d0tjUXNXQmhOa3lMMDB1RThQaUJqQUh0VnQwZ0lRb29YbzFyMTg1RUJ1QzhRZkZSMDVGSTRGVzBiTGloVm1Vc0ZpbjFGSG1HM2h5OXBxUHRFSzhCam1uVVRGMk1zWksvWWlsc2J3RnZpQVlqakhXWDNmc0ViVFZJYUlDY2dhcDRKSkloUm5YUnYyYjB6QnZvS0tEZUZFaXFCSVZNa2xqK3VHdnMzOU9qaWRuSHk1dmI5K2QzUlFRV0pFdkVFME4vVnpLUkJ4MU9vKzQ1RFNuZE9oNTd5dVZPSGs3dmp1K0hKL2Q2TC9PTHk4YTFWQ2VpME15UzdtSnNBNVgwSkVJOWg5RTNnOUZiMlEvOTBXdURvblF6SEJVM3B6QkF5dUg0dXF6V3U3K0ZIUGs5L3BIWVU5VmtmQncxSjkyUTc4L0NMd0JEdkFvN1BuZUVQcWhIL3FIM1hCd09CMGNqTEIvTVBJUHA5N0J3UE1WbCs0QjZxa2x4NmJRSktWMHdsVHhXQnA0d2pHVEUxVnQxclUvUjA3SkFtSlZoeWFjVGFFVThJWWdSSVNtSE83bTZ2eWNVVjM0RHNySUdxOWVnTFNjMTZVT3libkJmQTZJeXZrbm0yTVN4dVU2UEd6N0FzOGg4L1didTd0SmE2dzRDWERDZ2sxUlhSZklQTXNVWTJWNDNyQnVoVWhIQlV2bGhwRy8weUM0dGI4VTdCWGJaZHBMNms0eWpJYmUwTnVyejRVNkJGVVJsQXd6cW1udVRpYXZTVGVMSnQwR1RaNFlmNlFNQmEvUnBqSG5WRjhKeU8rZy9WNUJxMWl4bEN1Mk5pU3BuakNFSFNPY3BOcTRudWRGTnZNamlOU0lvaWxVbmJzbTdmWnorQzhGMFNhdFJWYi8wQ0txMFg0Qk9PVkVMazlVZU1OSFd6dzRpRkwyTk9Ga1FTak00RXhnUkUzanFIYmF0YklvUVZOQ2lTUlFZMDdBV1dJcEFHYnYrT3JLcWF6ZmI0RWZDdDdHZEhuRG1EeFhtb3FsVVBPV0VpSjVDczBRU01SbG1ueE5Qblg5M3dsVmc2WUVIcEhZQk1pMTRxMzc4ZHI0QUJhZDNMWkwyY3hwUC8zU3liVlh5L1FMUnRNSXJ2WDB0MlZITVhQalJpVTllamVVY2JQL2ltNVJsS0ltckU1YlZ5eUlYWTFrM3k1WlJrbVRITDM5elRJSzAyU1R0RmJDZFE3YnN2WTFtaTBRTjlnTGZSMlRvdXFEVHBKRlY1UFNxdnlwbTlJdm9TMUtBeUtibEswbCtQbTZiaTUrVFFwdnFGeVVrSitoK1hvd2N6bk1pTHJETnpwL0srS2ZqKzFxVnJDSDVWcDNRYVRVcjFTTnhDMjY3OVQxNE0xT2JqNTFnbGhzeXZVSlRiWFVjOEpGUGlUMXhLVWI3b2J3bUQ2aFpUNUtUS3NMVXBWMjQzVVpoaENsVkxvdkd3WHF4aEhHQ2NVRloybGlPcURuRmZyYmV1OWtqdUo4cDNrYjZ5bmltZ2p6ZWxSODFGQ2VPVzdnYUxiSHpEQllnVnJkZnllQVcwOHJVL1NyaWhwRlF0M3N5clBFNW4wcDZ3K25HU3lPMVRIUEJZank3eVRXOTVvU3pScjVLbDJ1UlY5d2hHRlNtak1PZXpuaXJEKzN2THNVbW0zNXJxZ2ZkbFVjeGZLOVlYVkNFWWxzVXhyV0crTzZLNmhiYmVUNTRDNGthZmxWS0VyazhwUndtMUFsZ3FSYUhlYzZtOEdySXhiNUJPdUhTcWRidVFuVTNhRXRBOEF2cDJOcGVHalNMK3Y4MXlpeEtiaEs3bXNXYUxiK3FEcGIxNzRzdUN1YzNENzIvZTV3TUF5OFhuYzc3WXZEeUpaMk5BNEYrbDcvQUZoQ3NJV1Z3MkhWRFM4WDBlcTk2TFB0cGlTc3I1ODIwdDFzTklBNGU5c1BLWHgwVVNybmxwYVF4ZFBIaEdUSWJQTDY0T1Z0dnZaNkk0MEtGcHJubmJhVisxZmxadFBjNDJUOTgzVytJT3J1K0JXZWVJVGx4bjRiU0cwUVZlQ29Sb2V4cHI3QVpSQjhFNHFOdzlpdkhkMjJnUDIrOGJxM25kWk5sYTQxdHVyNUZ1TU1vMzNNWlUzeUZpeGNVZFlRUGx2WDcydFF5NGVKeTlWODQ5WnovMUVKLzhNYVNYWFMzNnFMTkI3Ykp1ZmFwdlQvb1lwaHFocUZtclV6d1kzVnJFajZpcXJHRXAyemlOYStKYmFWdlNwKzlYRzFVNDY5MVQ5MDlYK3BkNTUzdmdDREI4Ym5UQ0FBQUE9PSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLXJ1bnRpbWUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJkNThlNjBiZGM2OTQ1OGZlNDJhZjgyNDhlMDJhY2Q5MjRiM2I2MDVjODI4ODc3MzUyYTdkOWEzOTUzZTkwMTI0IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDUyOTEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNjFZeTQ3Y3lCRzgreXNFbmQyTmVqOThzcStHQVJ0WUF6NFNXVmxaRWozOVdySmIydEhDLys0b3N0blRzNnRkK0dCQkFrWkZNaW9ySHhGUjgvUEgyMWcvL3VtRFZrcnBQMzc0K09uZC95N253OGl2dy95WmpBOVkvNWhyWkYzRWNRazY1NnFkTkVVa1ZIMUxQbnZkbkMrS3VlQzFwQlRGVmlVYmc2K3RENkVFOC9FTjlIaXUwaUhWT1RqM3RMN0dvN0JBbDh2UXhvTzg3Zi96eDJFWVQrTjFHUGFYMStYajFxU0ljcW1RVDFZaXRyQXRLRW5OdVp5OXF1eGJkWmthaTdFNTJhUWJhV2RGSkZrbk92ZDloK0ZJNCtrQmFRdmVDTEdScVM0MmJxcFVaWTJra0YxV3pua1ZvNmZhWXJBVUpMUXNMcVhFYkZtczFHekt4elh5NmZ5RkRnTWZSamxkNzhnK3NGRzZWckkrY1hGRm10YWtmY1YrdXBTUWZEQmNrVEN4c1RoS1NaV21rVDRmU1pKQnh0OGhmNzVlTDNmYzJvZ1lCNU9hRkttUWlHS2l4Q21XcEdySnVTREFTS214alNHS0ZNNDFtS0FwSitCYnV5U2ZiblhjNGxRQklRWjhZSjNYaUtSd0pJYzFVMXNJMVdlYnZYR3Nvd28rbFJTUmwxd011VWk2YU1YVmRqeW0wL2swTWgzR2I3SWRYOGRTT0pTa21aUE53WWFTWXdwV1NwVldMY0syMFZldG1zdmFvNnk1TktNVEtwR3pRYnI5QW5zK1hWRXNtVGJNNWxRMTFtZ1IyN3dKMFJxYmxNYWZJTkZwTklSQmFxS1lwSFZ1YU90V21GSEhXb3hLK0xsajFuRytuT2Z4T3A1UEcycXRWV2MyenJtV0pIQXVSZUViNVpUejNMUXhrWkFhN3dSajBsUXNhTG1JblgxcFNhWGNVa2VWTDJPVkUyK0gxeUVMVWtmc3JUUnZIWVZha3ZVRlowWWhqSTZSMGNzRmdFVTVveXphekRnalJ2dU1naG5kSVh2SmgrdEVKOFE3YmNXU1Nsa3BsREloWGVKUmhwbzBVaGRJQUZWMVpXcVpVSCtxdGsrdFY3YXFvSXFFRUt6TnRBRGZ5dkIxR3E5U2lGL3V1RG1WekVSSlpYUXRvMGhKdUtGYnNCa3BZc25KNFNneElJMWV1VlpWb3VEd28vYkI2MHhMRTR3bzFzdVdBWXJXb3VueFFjbUNtSXZoWk5CTFNsTWZ5WlFJL2E0cThvRkNHYTBzRGxTNTl6VVRFcExlQUlkdENMWnlHUnplQm95MVk4K2grWUJNTk4xcTVoaVJEekk2Z0o5YVNpaWRaSXQ2Z1FHc01HRjJPVDZGT2xRNWpGOWtlcjBqdXhpMU55QTBkS3Z4RloreVJVY29jSnRuVzZOMjVIMk92bytuSmtUTHlIbkRTU3YxbitvVE1uSjhCOFdIVkN2b1FzZXN3U0VKM1YxVWRDcEljelY2ZENqWWpFeE1qUXI0Z29yRlBLdUFPUlQ4ZTA3RUxOT1g4ZEZqR1hrMXlWTTBuakdaMFVjdGhrSm1LZDVqMWdQR2o4a0oyNnlEaW9SekdUUzF6MVdRRTcwQUg4WW0vTXFIRFZNTU1vYzVOMGs4V01xa2xMbGlJcWlKWW9tQWMxaHUxbXZ2clhMTXNXSTFCWFlPTDh0N3pJSFB4eU9kNm53SGo2QnNCc2ZVR3FWWlcxbHhxOUd3Um1jS0lmR3BncjFCdEUwSTNSRlNOUkhONFFQbG9oRFNlL0JuUm5RbGUyZDA5UTVkM3BRRHo2cmltZ01iWkZiYXVteFJKb3BSR1dPcE9KOGlPTmZydm9ZanZBZWVNTXZ5OVE1ZFFnMFowOFBvTWl1bU9ZMlIwZ29uZ1NCcVNDQ0lvZ1ZHT1VscGxCWGx4VXlDYnhPRFZFMStELzIrZ0thenYwbktRRmNERWk2SXByaFVJOXEvNjA5a1lBV05xYTJVMERpdEdaTXNaUnpYbyt6cVBmWnQzTHJZSlVIRk0yck9Ma1ZCR05WVmNFTzBpdEFORUVZSVorM01CbTZzclRVVTBSTCtGRWlQV3ViaktNZnpIUzdrcUR6aXNXaWxVQVhsY3BhTTZ5V2o1a1g3SG5pbmN2Ym9MV29oYXdpREN4N2lrNHBma25zZUsyOXd4VGlNUy9ZV0FvS1RhNlJKb3l0aVJOVlJNU1JUWjVCYVRaaGtIYmdMRFJwandjVmYvMllkdGpINGYzaVVTV1lJTnoyTGdzT1ptQ3RZRzRQSlR1UG9SdldKcWtWRWdmWUxBS1hnUHdSQjdvcUdkbklldll3WjltcUZQWCtSRTczSlFoVmxJSW1ZVFlNcEs1UVJjbzBPWTRCbXI0cDhqUzNwTGtIaVRJVE10QVRLQW5VYVpLcWxwVFNUOEhsNnpCVFlCSlhXWHFjTUZrRGlROUxPa1ZVeFZlVmpRSzV0Rit5TTNLRWRVQlVEZ2tEL2hrWUovTDRpL25pVCtmcFFXYWkrYUlLNGtXK29sa1BKeFRrRitrTTlVMDhFZUQzcTRpSFRNQmVHUUNvSjV4ZHdtTFdVVnN5bklhb09KVVFWT2dzSFR6bEhlSUdDV0lTN1V3RW4reUpwVFVSWFh3OC9BRU9nZXNnaEpWa0FiNmZyZUh5WUMrdXpBMTVGQkI2K0Fid0N1NU5qRGcweUFocEpIdjVIWmNpZ3F1SnFjS2dRU0pVck9ORHkwa1h6OWFreXdTQkZKUVpvSWhqVFFOOUJkTkhBUXpSNFRDdUFocFBER0lHUmNqUTFRd25ZUVlCaEFnUGM0QXA0bmg3a2pER0JQU3JDY0dSbzVJd3FxQWdjQWtOck5pQjg1V3R6aEJtRTBKaG1JNEpzMmlJUDBNM0ZBRHdtdWpXRmZGZU9hUE91dkNWMTVVeGRpS1BxclFjNnFFZzhvYmlZZHNXUXFPQ1l3SndRYlY1STZLdHNnbFFXOFVZMVNJblRTUWl1RUFVT3NCWUZLWERvSEJ3M3drZUNLeHRFSGh6ZEtrZ1V6UnJSbHd2YWVYbzVuS2x1a0ZBQUthMHpXTkxKb0dsS2daRnJ0ZFRRbE1BSmVxQUdjR1hHVVVBVXNHb2FnbHB6NzFySXhuOFdyL3N5WE9CSTZKUE1pL2tIK1BYeitiUkQ2YXRjNW9VeWxRbndabnFQQzR0YTJaVU9GempFWGFGWkR2UjZ2bDBYVjcrUGU3T2I5SGRmMkZXNjBtKzg5U0t2NjBiN3NKdlUwNE5KRGdLRTlUUGo5bnA3ZkhuWlhjL253N3crVVkvdnltMStMZWVmRmplNHQzR3ZkcFBWVHc5MlpUek5uMy85bUduSE1sM0hCanQ5bGJkVEI3MXQrWXMzZGdYNU9jaDNYdnhVeTNIZHdHeFI0WHkzNjNpWWQ0ZXh6T3V6c0xlN2Fia1Z2RXpGNytDNTIvb0FJWm5IOHR2N3hqeVNoa1djLzVjbngycjVadTRZKzdTYnduMFZmbUNRYVZxZnVMaDNieC93OUhxNW51MEs1ZnRIMjVQV3htMzFhVnM0b3NNanl1M1ZFOSttV2VhdnkwRHZ3M0JaOHVIMVUyQ24rYkNXVi9VS212dnFoVTV5K0wzUDV2bnd2ZGl1NDNUaGV3bjMvaTI2WmYwcGsrOGUzdFlyTDJKd3BxZCtXNGNSdlo2WEN4bmVOL2ZnanJmNWZzNmxJeDlydTZXS3YzeHlUOEFPWEg0Y1QrMjhOUDF2SFd1Q1JoN1Eyb3VNWU1zdGxKbDdOaDZSNTIzNXh3T3VESTgrd0pIc280Qkl6LzN1Kyt0K3ZuN2J4cTN2ei9jdmZ2cjJRRUpHKzk3TDhqY3NiaHN2MWQ2SUFZUnpxRSsvbWNCOU5rQUNZRVZjRGlZV2lob0tpYXNGRmhKSTBRaGtLc0Rtd21lNzFEV3Z3ajQ0YllwRXBZemNSM2ZvOC83OEM0Zjd0RmY1SW9jL0g4YjVPdS9YSldUcTl0UCtQSDNhNFRJSE9YTnFQODIwdjl6S25lNlZnVG5BbFp1YWRqbkJpdVlDazFrTGRGWkRKbExvMFZWVG9kaTRXVXFBUHdmNU50eXlZYytlaU9iM3RzYVZWek1rNVhscmplc1FyZ0xkRVVKWkRBNkNLeDlrMEZyam9KRU5yb0JoS3pSRUxLTGlFVll1V0RZbENvQ1U0djl4YThUclJYeCszdHJBN3pyWUR5aXFnaGtBbk04Qk4xRUVBNitKdTVUR3RReloxaEU2QXRzSW40YnJLZTZGTVBxNEhyYWx1aXZKNHlwMmtWTy9RbzkzOXUvOU94MmxJaW9lWnhpemRUUXd1VDNpZjd6KzlWLy9YS2RJKy8xS25BdUZmSnJvOG5uMUNLb1ArZkxremlGNGQxMjR2UEtGTUNuVG5ib1dTYVB4Q2h2NDRIR3pSTmNiY3JoN2p3RVR1Z1d5Tk9qV3NmMmljK20vdWZyZUMzais3YWx4aFJrMzR0cGdlYVgwWHp0bHFMMXEvZG9iREZReTJnU1pGSThrcVFZZkQyOFUreStJTWl4QXR6cnJyMFdPM2JIMnJiQWx3M2JNVU00bGROZjVnUTVyNm9ZMWVtbTNtUmF5c0k4MERmLytlaDIySXcvejhmelNlZUE2M2FUYmRaUmlYbm5uNy9qeGh4Lys5bUVodmcvR2Yvakw3ZE9IUHNnTDNjaTFHNEdCbUlFaW5kVWFOdW9RZmVZNytRd2Q2OTJUYm9ySEt0TnduZ2Erd1RNZDhYTi9mYmc5UWZ6bkQvOEZlL0h6N3FzVUFBQT0iCiAgICB9LAogICAgImNoYW5nZV9ndWFyZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJiM2VlMmI4OWRlMTRlMjA0ZWZlZGQwMTZkMzkwMGI2ZTMxZmNjOWYwZWEwZjMxMjVkM2E0Nzk0ZDkzOGNhMjAxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDMxNTMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNlZYMzAvak9CQis3MS9oNHlWQktxVk5mOElKNlhaaFY5cUhSYXM3amhlRUtzZWV0QWJIdG13SFVhMzQzMitjT0cxcEM4ZmQ5aVdPTXg1L005L01aL2ZvNk9oUG9QeEVLN2tpOEV5WkoxZGdwRjZWb0R5aGloUEtTK0djMElya3VsS2NXZ0h1ZDZJMEtTdFBmWmlubFY5cUsveXFkM1IwMUJHbDBkWVRwczJxSFMrcFcwcVJ0NjhQVHF0TzUvT252NzZRQzVJVTJpN2dRZmVZcnFRdTg1N1RURkI1R2w5UGhVS0RFdmdKQnlZQ2pEL2NrbWJqeWZsME1tVER5YWlmc1ZrT1U4WkdiSkR6QVowTUp0a1FuMFZ4TmhoTStEakxSb1BaZERyS3h2bG9US2Y5d1l5eC9tdzJwRW5uOHRQMTFiZXJUemUvQktNWWoyZXpZblEyeVFkRk5wbnkvcFJ4ZGxhTXMvNE1Ka1ZXNFBiRmRKUlBoMmNzRzU1bG83dy9uUFl6OURJWTBqRk9KWjFPaDBOQk9CaFFIQlJielkzVkQ4QkNhbE9tVlNFV0pUVmRZcDdZOFhtSDRFOFVaUE9odHdDZkpvOUM4ZVNZL0lhQlhOWmZ2bE9URUczSmpwMG9BMnU1QkRRV0RsbjA1TVpXVUx0dGY5dXI3cElTUE9YVTArVCtMbEcwQkdjb2crUyszbW92S2NsL2NQU1dqeE5iS1M5S09KbXdMRVBxWnJ3L0h1dzVkaGpOVG15MTh5NzUrWEpjSitKbkVoMzFRcjBsTDI5Q2ExYm5RbEc3dWdvK2ptT2V3ODlTNFlEY1VsbkJGMnUxVFpOS3diTkJlb0NUZFRaSjNDbzZKUUtKOU5nUXlmR2FNS1J2ajZvZllKMXdIbTF2dGF4S3VKUlVsSHVoNHNwZnBlR2dpemNKcUkwT3VHandPK3o2eWpXSmJtWU05amZFa0Q0SGpkaGJIT3BzNHdDenQ3MzhxWTc5T2lENmNPWnJLU0kvYmk4SnE1elh2TTEwelA4Rk9kUkQyeVk5bzAwc21lM3B1NFJScFpWZ1ZNN0R4M25UNVppcWkxYkZlczFVR3FxcXg2dlN1SFNOZWF2Y20weDNpVVBGbXovQ3lsMkVSc04zTU5SU3I2MjdTSk11NWlFNXg3QjcyUGlhUTRxakpUeHpzUURuMHdhWUJWOVpoZVc4ZHA2Y3g0MXdNV1lWWDdlaURUTFJ6TThiWHM1YlVsNmkwckFsc01mNVdtOVF6bmRrSm9Da0V2aEdiajRrVG9IL1p1RjdKTzUwQ2haSFlMRnRtTk5JSjRLa2FnSFlLQkgwMXJaUHdWdkVWbytSbTNEYTlEaUFDWU5vc1RGb3lGNFg3clZXOFN0V1BrRnVpRkFFa1lIVGxXVndHN29TbXdpenVBQUZ0ajdrd2h1elVJOXZFRDg2SzAyWUxLbWlDUFNyQU1sZHNsVy85YzdiWFZlandOM2VCUEJZNVJpaTdJV25WZURCOVlRK2xkVDVFMnFNRk5palRkYXFEU2ErUHF4M2xsbDRhclRnWFVoMUExS0YvVmw3Yk52NkFOSllocldMVjRYRUttdHgrelErOTR0bnUySWFtdytXU21OQnBIZ0M4dmUzcTQxb3gvajNpcVFCRkM0c0hrVWliUWM3a05ZaXNsczIwYXFWQTA4RnN1L1FyRjF4MTJnWDZxZUgwa2pxSVl6YnVjMlM1TDZOWFVMZEpuRytqbnNRNDRoemQvMS9rZVBrZ0wwb3NlYWFCZUVhOVZIUlJEbVE2R1RqYmZlZ2VtT2JDN0srS2gwZ3RVMXpIVjI3Mlh1UU5qZktTT0FPclRtc05LcTdYd0txSng2dU5ReGloRm9UN1MxVkx0d2w1OWkwbGZRcFBBcy9Ed3JhSmJyeXB2SnQrVzNkT01PN3Q2dWRkc0RnYWlXWG1uS1h4c1d4VGhnWVQ5SU45QzY1V1psbXVIMVF0UUpOcFp6WEplam1oanFIeXZ1VlNvZVFVRnBvdUlPY0IzcHhWOEUzRVpBbWduZy93Y3l1UXducDdMZW5KNWFDUXMxUkRCcDE2eEl1R0RZU2ZtNGtydW5rSFFTdkxubi9FN0ZkL3owd0Znb3BGc3VBdWFnYzhBajZsVFQ4QTFNSkV3bFJEQUFBIgogICAgfSwKICAgICJjaGVja19pbnN0YWxsZWQucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiYTM0YTUxYmU5YzlmMmIxNmEwNmE4ODE3M2I1YzZjNDkyYzk5NTdmZTAyMWNmNDEyYTg2YTE3Mzc3MzA2NDBhZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxOTEyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTRWVlMyL2pOaEMrKzFlb0owcGVXcHNOMnFEUWdvZHQwQjdUb3ZVdE1BUmFHc1ZjU3lSTFVrN2N3UDk5WjZpSHRVSGFYZ1EraHNPWjcwR3B6aG9Ya3NyWU0vL3FqZVpCZGJCcW5PbVNXZ2FnV2FLR21Ha2VRLzR4ZWd4VHVqR3VnN3Fzb1ZKZUdaMWIwNnJxUEIzN0k4N3VXd1U2OFB2Zkg3Wi9mcm5mY3Qvdk94VUNIVk5QNE1QS0tpMllQOGpibis0SzlvSHQyZnJ1eDVXRHY4VXJVelVybU9ya0UyeHM3Nnp4c0duVVMrZ2RNTTRDYUtrREJneUR3cll5VUVHNGhYZDhoUXIzeGhUK3JNTUJXNmpvMk5rQ0xZRTdxZW8vODF3NGMrQk43ekJzeXRSQlo0cEZEVU15V3FWcnp6NUFSeVdQeUd3bVpQN25HbGtGQ2lyd3ZpZUZPUnpHVjBZSGVLRWVMcGRWMVVydms2MlQyaE8weFNxcG9Va1FwQjRSVEQyMERWOUw5K1Q1ZW4xOHBrR0dJWWsyejRJb3krbVRacDhUSDJSblJTdTdmUzJUVUV5ODVrUW5EZUorR21hZTh6NVVXYTY4b1VKbFNETk11aGV2NnpXcEpxOEJMQTNTMTJPQnBUd2Vkd25HSlVjVVJwSk8vVjdKbU50Y3dIcHRNN3RrdEI0YkdwVkJMTTJ5QUpKRlREYXE1MjNzVzEybEdKQmRzR0RWSkFSUVBpcm9COEcrL1BMWHJ3OWJWdXdmMmJqSWRtSVpnNmRxOFZZN1N6S3Bhb2Z0bENkd2NhbVk5VDAzUWFjSkZrcXo0d3lhSmtxU3liWTF6NWdEQWEwT1dPNWdtbXNtZHZxMGxIQk1NYzEyUzBuR25YbUtXM3VsYTZXZnNESE9XdFZFYmttNVIxd240WVVXRTJzVHlqMGdVYmcxOEkweTJYeEM5T0hGS2t4WHlyRFkrWEIzazZGQ3JUTW5JblN3d2xpeWxkVVJ2WW1wcjQ1NHY1dnZEOHljb2ZYNXFIbDNMcjJXMWgvTXUvUlhBLzF3a20wdmczRjBad3N2RzltSHc4ZnI3Uk5GNWRENjNFVjJJU1U0d0RDZDNON2M4SHFGMkZkSEx4NTNLeEx0U1B3ZzNWRWZuRVdweW5xUFplTVF5TlVWZEJCbDNlc2pKa1l4UEtCUitHK3k5Y0J2K09PT3YxN0lmRUhNYmtYbmhVbFpZbFpZSlpidlk4b09JVmhmZkp5YXlaWEdYbEU2ZkxEclVvaEd0MmZHUnpERkZmd1JkQkV4L3g1clFWQ0hxU0lSME1sR1ZIa0VJVHBsUlQ3NUZ4U3lBbDhmd0JmZDVBWmZCTk9CRUtPTVA1dWM5STY2S2F2ZU9lcGs4ZUpnVmtCYzNqcyt0amYvTzFnaWRZMFJNNFAwVDBxVVR3aGVSQ3V5bFV0clFkY3B5aVVkYThVN3JGTjRMY1huZGQ5Wm42SnpOVkxmdHVpdStQY294K0R5SkozQ1Y4bXpvZ1dkRGttejJUZ2xQWE9vZitvTTBERzMrR1RWSjN6K1VKekdsWjFzeHgrZWc2YjNGUEV6djlKU1JscUtyZXNCWFNhRE91RzlhQnRWNDN0ZVJJRmNzTnB2dldpbSszZ0hBQUE9IgogICAgfSwKICAgICJmcmVzaC1zY2FuLWNvbnRyYWN0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA5NzMzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcxYVM0L2p4aEcrNzY4UTVwQ1R4ZW4zWXdNalJPQVlTQTZHRHdaOENBS2huelAwVXFSQ1VydXJOZnpmVXkyS0VzV1owWGgzeUFDenMyRHJxNnFQVmZWVk42bjUvZDFxZFZkc3pVTzRlNys2aTNYekVINnJNMWZ2eTNwcnM3WjJoU252VDVmM1JRV0FiZkJySDF6UkZuV1Z0NCtHY1BFK2NxNVVaRnBZSEltUUhrbm5uWTZjSUJWRUpKRXdIQ1d6a21wSHFDYk1JaW9SQVMrWUdnNUxkOStkYVd4Y1hjWGlZVlA0Uk9qa1h4QmlnM00wV0srbHMwSllFYVNqSWxKdW82YllTUERsTlJQTUNxNDR4b1E2N0p4eVdpc3Z1ZTM5K3lKRzhOdUM0My9EOWVyc25qS2xtTEUyYUtJRWpTNW9Tb09IQU5xaGdCZ1hFQ0dpNEpYdzNEbmtvL1ZSUis4TUk4SUY2bzd1Uis3Z0F4dUlFMEViaHdpaEVuUEtPZUZVd2orRkVVSk1DVWNzQS9iT0V1SWlsOWdLbzdqQnhQdUp1d0F4dlVIUlJtRTU4NVRSZ0NDaFhIZ2xCZWZVR2k0OVpGVjRpVFhjUHJQVVlCZVlqd2dMS3NURUhVTmFHWThvQlVJRTdsWVRvNHgySEN0d3BnVWkzRE9Kc0FwSUtvZWdvTkpyNTdsSWljRXhob203cUMwREJ3d1RneHlTaGlrZG1JaVdld3RGMXg1NXA1aG53VkVBcGFRWXF6bkZrYkdBdkk1NDRrNHd4VGcyeUhzREpmR0lDWVVESlpaRCthR3B1S2VHUldTOFlsRXFHalJQQlNiV0NTMElndXBNU3lFd284aGdqS2tXV2pKcXRRNVFFRXRRUklSNnptQlJVK3VpQnM0YXlxeFR6U0MrZGN4d1BYSG5vdU1hUEVubWhZd0NXY1l3ZGdSUzdYemdxVXNsSmlGQW8wdmhQTklNR3lJNWhudEJSbGhFSnU0STVGTmpwYUFIdERPYXg2QnRBS3FjUjRtTUJWR0pvQmd3cHRSeUFpYlVRKzZpcFZaeUV3eWR1TU9ZS3d6WmdwNjFQdERBb1JnRXcwMVJnZ2hrbnhMb0ZTQUtYUjZ4REFwQi8wQXFpZEthSWVtbmpZSkEwWXdnTEduU012d0dPVVB4SWxRSEdpaFloWWl4Z25rYzRDNGp3OXBFakswaEZCR0xlREIzNE8wL1Q0WGQxSFVYa3daLzc2TjFoOTF4OXBUbUVKcDI0UEJFcTdPcmRYYTl6cTdZMlRVN3UycG4xKzNzeXAxZHU3T3JkM2I5enF0ZzBERDgvbU9rNDdiZU55NXNTbU5ET2RJeEhCMnllaGNxa0hsbmlncTBuQjN4bVRWdHlIenhFTnB1dEtWTFFXRURaNGc0WldFdmQ4eGg2N0VSV0VCeG9acVFXZ3dDSnFBYkpTVWpITlJuVW8rRHBKV2laaGdVTDRadHdzZmpHU1hGaEc2M0ZrUkNJVElvS1hCUUpDUVFGQUFrdUNZZUpNTlZ2T3dleDNQUCtSalVoREtrbTJoZDNjK3FmLzcwNHcvclgzOWV3MlRRNjE4UXYvOVNGbmF0T05KNDNlQVh2UFI1eXhMUjhMbkwrandrYjQ1ekZnUkp3b21VSVdjTkJqMExiV0NXcVNnOGNxQi9BdjJna0lVREZSeG9CQStFd0FuS1lnS0Z2eDF2VjVlRk80ekNhWmlWMkFZRzV5aXN0Y2NzZ0RDaElUMlBpbXNPSXVjV09XY0JwaEF5TXFhT08vWXZUd2N2Y25mdWgzcFUvaC9OdGlnUHliOHBkMUNIZ2RSUFpudE1HYzBJeS9ERnRxZytocXFybThONXdwL25mR21xaC9YdXcwTjdhZWpkb1h1c3E3UjRXZnY1OEs5ZmY3bGNrZ3p6YkRTWUFQdCtkOWdWOTd2RGI1KzYvUFJ4MzlIZmZWTkFGMk54RmUvWmNBbVY5eCsrS1ZoejJIWDFRMk4yajRmTEtrY1plajdxQ0o2ZlVHOEovK1NvZi9rSVpTUkR6MUI0K25UUUk5OUNZM2R3TzlPMG9ia3MwV2VEbjRFNWZXUElUNmJvbXRDMlZ4RXo4a3pNQVpuM2dHZUQxdTBrNUpVNjREbzdjV2oybFErN0VSQm12a0FhNFF3aGpJaStqbTkySCs1N1QvY1RCL25FN20rbWNZL2ZWM1g2N3krK2FMdW0vdjZpeFc4ZzNGK3YwMVNISTF1OTc4YUpraG01RE1DblhKL1k1b05KVC9PekVodkJscUc1OXFZemIrRjZkTEE0NFEvaE1HNkNUS3diOUJySFpKUDMwS1ZvbmJiQWNmNlMwejlCN21TWm53M21wN2o3c083cXVweEk5bmJtQnB0OGdNNU95KzdiZzYwL1h4WndSbVdHMWcxOXVlbE9OdmtGdWhTdHRTMnE5dkZieVBXV1MxSjBadTFDMHhXeGNLWUwwNWtvOE0yMm14am5JNXVsaWE0dHpPQXl2SW52eWNlaXRCKzgzWTRyVDI1S0phSHpFMmgyS2pDNjlsMVJ0bXM0UUxkalRpS2o2NGE5U09yS0xoL2c4OU5yTEYrbkZ4ZGphdEQwNUdWaWcwWGVBNWVoTk0wV0liYzNzN05SZnNiT1RnemNROFN2bU1HOXdYSURHUHpiTCtTcWNwbGFOK0lXSVRESUI5d1NoRnk5M1lTbUdaTmlNbU92cE9sa2xaL0JpMUE3UGtMUWNRRjV5c050WnIxUlBtQ1hJSGIxMkpVQzNXejEzaUFmY0VzUUtxcXVuQXlFbTBsSytINGNMSktmeXUzaHlhZjlkRmtVbWRqc2pqc0l4NjlKY0xET3AwYUxVRzNMOGVFV3BRTWh1Y211TGZNQnR3U2huYWxDK1kyWjYyMy9MM2xyMi9Jcmhaa3NGbFZsVnpRN2QzVit6UGdydWp5YTVBTnlNVkpQTnV3L3lXell0cGVqdDk4WGZ0ei9qS1JqeTAxbXlTUS9JNWNnOVJGT24vWDQ5UTVOZy9PbUtvOG0rWUNjbmRSMjMxN04xK09qN2N1RUVqd2ZVSXVRV1IvUG1sOUpxVGRhanRocGNLKzcwR3pUdTdmanE0cHZtR1RQK2xsK3FqWEIrUEpxUlVFLzNaVERZSklQeU5sSnRTN045TW53MExjNG5TenlBVGcvcGYrV1JSY21KMzRZVWZUMnFYRmtscC9SODVOcnk0MHJpMUIxWC9VbTRXSzI1R3VFN3N2MUs3L1V6ZTVXem5xRGZNRE5UdWp6bDBrWllYZE9mZnd5bzVORlBnQm5wNVMrdUxydTlwdUg2d1RQQjlTclpDNS9BREI4MmJNQnRkUlY0VXk1dVh3aGhhUG5ObHJpcFVQTVNJcUZJWW9hYjROQmtiT0k0TWR4NDZ3bFdGbU1BMXdKS1cwTVNqb20rcGNFZDd1OUxZdjJNZmhOM0pkbEUzWjEwNDJDa0JpRkNsSndxNTNnUkJPQnNlZEdDdzNsTnJET0JKVVlJRDVFRjd4eDNCTW5CV1VJYWJnTW95RE9kRVZkYmJhbUttSm94MEdFTmNSUmhpM1R3bGdacFk3YThlZ3BOUnB1Q1RzU2xVOWZSQ0tzRExNc0NPa1ozSTlKTU92NmwveDM1NjhaLy9IWnVHNVZiTGY3enRneXJNNjN1RXFaTHo2R1ZlRWhyMFYzV0puS3I4NVovdXNxRnBVdnFvZDJCUnRSdDdKaDVSNkQrNUFNcS9CcFZWZXIySVQyY2ZYRDM3TzdkMys4K3gvTkpHK2NCU1lBQUE9PSIKICAgIH0sCiAgICAiZnJlc2gtc2Nhbi1yZWNlaXB0LXRlbXBsYXRlLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiOTJiYmY4YTg5MWM3ZWY3OGRmNDg0MzA5MDEyMTlkOGQwNzA3M2NiYTc0MTEyYTMwN2E2ZDhiZGVjNTA5ZThkZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA1NDksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMjJSd1k3Y0lBeUc3L01VS09kMkp4QWdzS2MrUk8rUk1XWkxSY0lza0ZGWFZkKzlKTE90VmxXUC9QN3g5OXYrZVdGc2lDdTgwUERNaHBETEMzM1BUNWozbEZmM1ZETkdTTmYzNXpWdTNiQ1MvK3dKWTQxNSsxSy9nVkQ2T1NobFRKQldPeDZFbnYwNG8wY2JsQmdONlNDQ2tEek0wczJUUlRGWklkMDR6YVBvWGZnRXFrdkRweU1HbEJZRFlGdHEzZ3ZTVXVoK1VvNWsxa25uaFBKVHgxa0RwT1JFTXhrd01PR2tyUENkckV6QVI2ZUtzRzFVam8vd3VrTWx2TFlTNzI5LzhtcmhPR2xGeG1qclVEcUpHa0FHRUU1d1pWVzM0SXdpNkpFYnNONkMxeHdobUptYkdiblY5a0VKZTBvTHBGVHBUaVcydCtYQWRtWXJPNTJHTFM5MXY5MEsxZmN4L2xib1Iyd0xabjlzZmV0dFRoSHpla3ZVeUMvUVB1cmVMU3MxOE5EZ0gva3h6a2Z4ekZUb2xrdjdUM1hMN2J6elYrb2thTVJpWlYxamZlazdKTmIzN1dsRFlya3c2TG56SGRKdytYWDVEVlVOYlhBbEFnQUEiCiAgICB9LAogICAgImZyZXNoLXNjYW4tcmVwb3J0LWZpeHR1cmUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzMDYwNzA0M2E0Y2E0NGU0MjAyNGI2MzY1OWFlMTA5OTNjMTRjN2EwNGU3YzU2ODUyNTVjY2FmZTRkM2ZiNTVjIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDExOTQ0LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWYTIyN2pSaEo5OTFjTTlMQlBJYWZ2N0I0Z1dBWVpCUEFpbXgwa2srUmhzVEQ2YW5OTmlWcVN5b3dtbUgvZmFsNWtXVnB6c2hicFBQaEdTZWZVNmFvNlhVMzY5NnRYcjFZLzJUdS8xci80dWltcXplck5LL0pWdlBwTjNSWkIyL2I5ZnV2aDRzcFdtMVlYRzEvZkZHdDk2MWZkbS83dVcrMTBxK0VOdjhQZmNPVTZ2bmo5Tm42aXVkT0VpemVDRU9PdHBkNDRsVmtqaEJFK3MxUUV5azFRRk92TWVlc1VFOHdJTGpuR2hGcHNyYlJLU1pkeDB6RUI4dHNpaE91M0RTRC9zN3Z3NnNCQW1aUk1HK01Wa1lJRzZ4V2wzZ0dIc3NnanhnV1FCT1NkRkk1Ymkxd3dMcWpnckdaRVdFL3R3SEFFQ0M4WlQ2endTbHRFQ00wd3A1d1RUalA0a2hnaHhLU3d4RENRWUEwaE52QU1HNkVsMTVnNGR3Ym9nZGRwRkV3UWhqTkhHZldJTU15Rms1bmduQnJOTTBjVkVTN0RDbGFCR2FxeDljd0ZoQVVWNGd5UUlTVzFRNVJDVUFRMEs2S2xWcFpqQ1hCS0lNSWR5eENXSG1YU0lvTkQ1cFIxWE1UbHdTSDRNOENnREFNSWhvbEdGbVdhU2VXWkNJWTd3M0JRRGprcm1XUGVVbmhUWEJwdEZLYzRNT2FSVXdHZkFRb21HY2NhT2FjaE9RNHhJYkdueEhDb2hReENjVlN6Z0xTVExHU1Nlc1ZqdG9teFFnbUNJRS9uU1JHWVVhUXh4bFFKbFRGcWxQS1FHa05RUUlRNnp1Q2lvc1lHQlhFclNMbUsyWU1JakdXYXF6TkFHeXhYZ0pVeEo3SWdrR0VNWTB0ZzBhM3pQSlp0aG9uM0pxT1pzQTRwaGpYSk9BWTlTQXVEeUJrZ2daVlZXRXFvQ0dXMTRzRXI0eUZjemtPR3RPRmNDaThaUkUycDRRUStRaDJzWVREVVpGeDdUYzhBTWVZU3c2cEJGUnZucWVlUUZvSkJHaVdJUUI0b2djcUJZS0h1QTg2OFJGQk5zS1JFS3NWUTVzN0xCa2xJR0VFNG84NnFBTjg1Z2NBZ2ZScEJPWGtqRWRGR01JYzlhQTBNS3gwd05wcFFSQXppWHE4NnZIOE5IZm1Qbnc1OUQzOTlwOWRGdVkrTnI4c3RHTVVEK1E5NjNWa0lUUWxMY1kveCthc2p2L2kyMm9UaTloaXNycW8yTkVkWDRGbzdPRkdwOStCVkIzaDR4WUUxM0JUdTJCc1c4WWRGUEdJUm4xakVLeGJ4aTBVOFl4SGZXTVE3RnZHUFJUeGtmaC9wdkdUNDdmUEJMZXlwR2NDMTc3WHg1V003Z0t0VmZadFdXNzg1akNaTjJzMG1xZEdOVDExeDY1djJhQkRKQklXeGd5RmlwWUVKeERLTGpjTmFZQUZWQUdtSHRjZmdBQVFhVG1ZWkl4eGFWOGZHQUUrUWt1ckhLL0VrZWUxL0s0WkphZ1ZOWWd6MEZ3VithRUxQb2FGaGphRnhJQlN1aUlOdTR6S2NGbTVsQzEybXR0cVYxZG9BWU9tam9NWld2UUZlLy9EZDIrVFhkd2xZakVyZUkvNzZVMW1ZUkhLa2NGTGpTYXltMnRYV3B6Rm8vN0ZOKzVYcHhqdk9tUmNrOWwyZ0RGbWpNZGlDVUJyc1VRYmhrQVViSVZBK0Voa2t3VDI1NEo2UURCS0tDZFRKSDJIZFZtVmg5MGVrQ2t3WUc4OWdLc1JLT2N3OGREZFVzdU5CY3NYQkxiaEIxaHA0bTBSSVp5R1dhVmY0UEk2UjVLR01QbDhkLzR6ZnU0SmEvZWliWGRrK2JBeUhEZWJiVWpmeDhxcHFrdTM5N2NOMnNob0gzdE5kN0oyMjk1RGZ4NXZNbzNvYzk3bDB1Mi92cWsxUzd6Yk9iNXZIUy9Nd1o2K2dBUVZTQ0tjSVlVUk9qT2JhK1ExTTRJV3ZUOG8raHZMemo5OUhBQWo4amQ3ZXYrNURmWDNDbTUvZy8xWFg5dTdyVFJWLy9NVVZUVnRYWHg5dnlZOVg4cWdsbjVEWnN5YXgyV0JMcm5idGswSnBtcVhrckRTZm9mQ01NaCtoZTNFZnBiZ1JiQkZ4U1hmT2VYbUZIZS9TTXUvOWZxSk1VNUhVYUM1bGtTcnZJUmNTTS9qbFJLNGl4WXlTQnNMOEFEeTdzTzE5MGxaVjJVeG9Rak5sYWFUS1I4aTV4Wmhkc3pmVnh5ZWw0SlJtS1VwcWVua3pEVlQ1QStSQ1loSlRiSnE3RjVUVUV5NG96T3JFK25nTHFMQzY5Vi9Zd3dTZXBaMU9PUE1qN0lYbEpRYTJ6TkwvR1NvSDZpWEYzanF6bnFoTk1vdHhSSko4QUp0YkFPd1p1N1lvbXdUbTNHWkNpVWhwVXJPTHBUeWl5MGZZMlVYVmhpZnhzRE1oQ0ZxYlhDNW5KTXA3d0VXRWZDRXpoTXd6SGgyNDhnUG0zSElBSFFpWDMybDduc1cyV1lBM244aFViYVV5cWNVY01vQW5IL0VXa0dHcjlZMnY2d2twTEV2WlRDa1p5UElENkJLQzZ2MjJyZWhFaWZHNGx2UG82Ym55RVhNQk9TRVVrMUptYWZ5ZUp4L3hGcEJSYk5weTJvcG5TVWlrNlkxNGlWeHM3SzV1ZlBQaFNTRWlGVGZiYnRiZ2VDNGJHMG56VS9BbEJEYmx4RUVWeGVNWG1VVlRVK1lqM2dJeXRucmp5NWZOVWsvNUVqbHFtdkpsekMwU0xlbHNiVkZ2N2RTcEx1VXplVnZIbEkrSVMwbjUwcmc1czU1eDZGeE0xRzVYdUFrM1lDUU83clBvaVV6NUFYRUJLYi9Ca2JCNlVndUNOU1F6T1Z2SGxJK0ljMHRaNzVxcFhiUzc4WGU1ak1pU2oyaExTRWk2QStETENPbTVGcE16N001SjYrdDFzUWxWZDIvNTVYYWUvMG0vK0M1VWUrM0s0OGMzcHpvbDFQOHM1akF5NVNQaTNGSWFHemZ1YWR0V2N5Z1ppUElSY0hZaC95bUwxay9mS1lDdGdzNXpsanRpeXcrb3MwdHF5aHRiRmhEY1M5ejdmV0JiOE1adisybnlRVmZzV1R0SGZucWVmTVNiVzhiSFQ5T0ZCak5qN05iTGRReEUrUWc0dDVENGJIK3k5MmM1WGtlV2ZFVDd2eVZjSGY4dnh5RG8vRWw3cVRlM1R6eHJIeDVjdzR2UGVkNytidiszWDk5UHpJR1lwODljb2UxK1c3emU3di85b2MwSG1PYzliWmk2UlFMQUY0VVh3Zk1lNUhuQmRYZUlibXU5dmRzLzNTNG9ub1V2aWZLSUpSL1FuaFZ1bkNIcXRYZUo4N2IvUDV1bmgyWTR3RjhROGhsVDNpTStLK3p0M200MURFTDExSTNsaTRwMHdJODNsSjhYNGdkZHRMVnZwaDh5a3d0aUhBbnlIdWlQZU1sVi9PM3oxWDhCbXJ2TzRhZ3VBQUE9IgogICAgfSwKICAgICJpbnN0YWxsZWQtemxpYi1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogIjZhZjYyZjg2ZjUwYWMxODVmYWI5NDE2M2MyNGFjODE1MGVhZDY5ZTYyZjhkODI1YjBkY2UxZTc1YTVhNTdiNjgiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDkyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTMyUVRXN0NNQkNGOTV3Q1pWMlM4ZmlmVmU5UlZkVjQ3R2xUQWtHa2JFRGN2VTZncTZxMVpHdG0zdlBUWjE5WDYzWFQ3K205Tk50MUkrUHB2WHlPTFkvbllkeW5kaHE1cDZGN3RGMS9xSVo5eVp0Y3VKLzY4ZkE4ZlJCYXR4VnJReEFUWFZLQ3ptZnduRG1LUlFqRkNRb2FKZDRrcnlPamptZ1NhQTlZVTVRbVcwZk4wNHh4R2ZyMGRpVGVQV2hVcTF2Y25OUmRsWDRvVXgxZmExUGI2dTNvdU92eWpEVjkwVENVWE5XWFJYM1lsNHZ6TWdnLzVlK2lFUnZCTzFUUmVRVUZMVU9KNGpFVE9JTk1PWkRObkFpSVlyR0JvTmJrckFzbXErb0YxU3hCci9lODVqeWR1aG11N2t2OXdIWjV4ZDlrVWY5RFZwaERpbG5ZMkpLOEVNWmtGSWdRazBQcmc5Y2hRaTVXcHdCU292TGFldTJUaWVBOFc4RUhXVDF2cTl2cUcxekxML3JzQVFBQSIKICAgIH0sCiAgICAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTY2Mzc5OTRkZmRhZTQ2YTZmOWFiNDQyYzJmZjliMjU5MjEyNjUwYjM1ZWI5OGQ4OTZjNWU4MzdmMDFjZTJmOSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMTIwOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMWNXWFBiT0JKKzk2OXc4WFZER2FSNGVsL1c2eHlUMnZnb3g1bXAzYTJVQ2dSQkNURkZjRUJRaVNibC83NEFTRWs4SUluMjVwaXRaUjVpbTJnMkd0Mk5Qb0N2K1BYazlOU0FhVHBEQzR3ZWlsa09pOEk0UCtXc3hDL2tFSTBLekZZNG5rRXVIaHMyc0QzVEFxWmwzWVB3M0FIbmxqdHhIUkQ0emw4QU9BZkFVQzlsa0pNVkZpeGhOc2V4ZUMrQmFWSHh5eG5sR0hIQk1JWWNSckRBTTRaaG02YkFpR0hlZng3alBLWHJKYzc0Ykk0enpNUXNOQk1VdHF1R0pmMWF2SlduQkVHNUNLdm1CbE14WFNvbDJuRVF3MS9GcUZ4OFRuN0ZyS2hZaWIveTRteGxxWFdJd1FlU1NSbU1sN3NYNjVFbDVsQXVZY3RJc3NveXlwVlVSZU94SEdCeml1S0ovQ0VVOEdsQzZCbG5FQW51YzVPb0NVaVdVTGJFc1JsalJLUXc1MHFTM2J6blBZcXozcE5hTmpWbGIzQ0NhSm5TWlRRcEtDSXdQWVB4a2hTTlpUTXF6UHpYMDdmWHIxK2F2OTJhQUFEL0ZKVmNQR1ZHemZaeHcxOVllSW0xWWhzdGtpS0g2QmhkV1NrQXVrR0FMUURORU1TMjZRVEIxQXg5RjV0ZUhBZFJrR0FFUTd1U281YkNLSEtNbXRvWEs1Z3pYQlF2aFIra0pNUHZNYUpaTEMzaEFiQ2RydXNmOWNPVmt1b1hVbkRLMXUvSWtrZ1BzWGF2RlRnVmJrdFoyNjVMeU5IaUhZeHcyamE0Y3F0ODhsQkdtR1dZNDBKYWZML090dTg5OWhSZENEL2hlTDV1ejh2WHVXSjFKM2VLR084YmlPTmxuc3FSdHJ4OXB6M291Ti9OazFyQ3FsbFNuUmExZWtSMG1kT3Myc1BLY3ZpejhlTFlTd09VdjFOL1M3YXVuMVVUaU9Vc2Fabng5eUk2RW9RdkVKSi8zZE1IbkRWajF2WUY0WW9jQ3Fka2Nvbi9ia25iWHJDZ3hkbXFSNlFqYk8xRXFlM1pQMTc5OC9MaTl0WHM3ZnYzSDE3ZGRiUlN2N0NDYWFuZVdIQ2VGK2RuWncrb1kxQ2o5OXJqaTJjSWMzbHpmWC94OXZyVm5menQ5ZHMzUjhRUmRzMFNNaStyc0g3R2hEckpFazgrRlcwYmRTMVYvZnZZNVcyUUpad3J2c0xlYy95SmRwMjIvck1mUlA5V0xLRHRldWUrTjBWVHp3RTJDaUxzSStRZ0s0b3Q2Rm1lUFJVL2t5UzBMQzkyYmR1eEF0OTNiRGR5WE9nREswQUlpT2dGRGIxSXQyV2EzbElSZ3RaS1VjazE1YmNpYXUweVMzTlBpSnlWaVloMnkyaUVlMXREa1NTUXBDWEQ5d3ZCWTBGVEdVcW5mVDByVzcvQlhNdERoazdJRjhvR0M1RXMrZUlQdmFseXl2akdjZlFVaGFnaUtnLzQ1ZjcrZHBBZkdUbG1oTWE3WUwwTHVrM0dKVUpDRWMxbFdob3k2VEcwNUR0bTlza1JBUVprc3RiNmkrRTdjN3ZsYnl1OUJTQUFMdzd0bXYxNmxWVVRSVFNWVlBlWHQ4L2ZvQnFacklNeWZhYnNJYVdpRUh1bVhFZjNxYXpheU9qazM5ZkpCVU5hTXNGY3I5OVUxanZGUHIyaHZKU0xkUUZZNmhXeXhFdFJOS24yd1BXdXlEQ05NUHg3aVl2anN4NmQwM08wVXg3VmllZ3lTa2I0K2xKc0NmeEY3eld5TTZLZmJ4bFprUlRQOGFzQ3dYVFRkZlJ5L0Vad21NT0lwSVFUdkhkeE1hTzVOcENvMFl0Mzd3ek55TWVCZW9YeFRaYXU3eWpscjRYVXhib1F0V0RkMGgxWENvZU1sL25UOXFKbGo1dnhDWnVSWTdZa21YS2pLekdEckFrMnlvang2cXd4YktaMGJneDVmMXRQU0l2MzMxalJ0RnppSzFtaFBpRi9xZnAySjVwc0d3Nm1Da1h4N016VW5rMVVmMmZITTNKcitycGcvRllTOEdWK2VENUo4STNtYWxXK2gyY2RRTHFKQVBvOS8xd1pWNUFwcTFTSE0wWGZPbWQ1NVlXSHhSY0JWWFNCZnlxNVlSa1RmbGpzQXlRL1MrcGRlM3RZOUIyZENYUHlJOWV3S1IxTmh1ZWs0T3lJYXd3ay8xbjZydXVWZmM2N1dVVkJPSmVuZWtmSWo2N2k1RkR1YjQ2Mkttb2p6b3BkTXJoTVN5bkJhOEtLdHZQS2VsQW0raDNwUmZvWnJ0dWVwRkpyWElydGVyMEo4RGlCWmNyTjdVQ0gva2hCWlNURkcwYkxYR1ZjQURyWmRETjZxUTZOZDVMZFpMS1N1U0tGT212ckh2UUltMTBjNUtvSXJxbGkwampYN2xKOEtERGJ3MEVzUzU0NGlaSW9rY20xWDgvc1R1T3FEUFN5VXBPeDEyU1BIYlUxVDVEMm5HbDFxRFlXMFZFMnlvTTNEQ0o4MjZsMkhMZEZYdFVHQTA2bFdtbSszeHZMSTNUaGJSbi9WVEc4VENGWjZpdElKSWV1OTdYZHBxNk1hRytIemhidm41OHRjNzUrU1poK2VqRVpLYVZveGxYVlEraUtQL0lIM2h3Q0c1YW1wOWwvanFBdFEvN1VFdmNLbVdQU1ZqWElGY3oxNHRaaDRvckdrcjBkNnJxRHZhY3VacTAvMDBPMmJRVitFQVBYR3I2V2RubjBwRlVkS1ZIa1djY25kWE0xYU5WQm9EUFN0Z25YZFg1ZjlkMWdvVDFoMWhPZlZxVUt6cXBibHlURlgweFk4b1UyQ1ZXZTl5VW5sYloyRVdMYXVDL1oyN2h4SllpVzZ2Rmt5TE9QLzlVZVAxeVoxVmVJejdjVUVUM3pFKzMwZ05jN3ZlalZkMXg1R2pYcC9FaXRibjhJclpUeVRmUjdwSHo4WDlrVk9qZi9IbDcrWXZnS0RrZlJBWDU0aUh2Ykp4R2NJTWIzQm9IV2ltdmF2YVNQZTBZKzd0VmwwNVZNSnVvdzg5QWNQeUo0Zk5jRTF1OWpCbWV2STY4TzNiUEhlNUNmR0I5Ukt0S1Q2Q0VxQVk3RXlUYnhzK01semVYT2grbUJVOXRqSWJXdjA4TWVlS0x6MWUzMS9zbm1mMlZTc2VleW1JaTZkd1NvakFDVkVhQXlBbFJHZ01vSVVEa09VRWxjRVpFU0ovUWlLN0U5UHdZK2lsR1l1RFlJc0pmWWllMVlpZTlFL2pSRTlqUzBuUWhNZldBTEx0WVV1dUxSQ0ZBWkFTb2pRR1VFcUl3QWxSR2dNZ0pVeHMwNEFsUkdnTW9JVUJrQktpTkFaUVNvakFDVkVhQXlBbFJHZ01vSVVCa0JLaU5BWlFTb2pBQ1ZFYUF5QWxSR2dNb0lVUG0vQktqVTMxQ0pjWTZ6V0NUdjVzbHg3YXpMbHJOMlFDdGJ2SXE2WkZ5V0hFYXFVMmwyTzFzb3krWFcrYmREV2xqQUFWREFzL0FzWjl1SmgwQlo5SFZncTNQNVByaUU1czMvRTZ2VXpwc0R3Qzg3K0VzSUxHc2EyN0hwT25Gb09qaXd6Y2lLcDJZSUlpZkVFWTd0eU8yalBCRE1hRVpFeGFvKzl6T3JicTRsdXdBang3Tmp5NTQ2dnVzRWlRczhqSEdVV0hpSzVNY1dmTThKZ0JXaUFQckJOQUJPRE1JSUlUK01RR0xiTVBIYVNKdDhoWVk1MzhiSGJyWGQ0QS8yTjYwUWczeXYxK0orVzE5cmNjNVhIYVJLSkhSb3loT0hGRmRsbGJIdW5QRnAzaEZGVUd4R2ExUGU3ektxR2hqZGkxV3pQNG1FL2pzY0pPNEp6ckVwQlZjTHJEZ3dtS0VGWnBJaXBjTFBUQldaZFR3NzdCUmNTdWdycTdLSVlVL0RpV2RQYk9CT1FudXlvQVdmcVBNaXJMNS94U1paSnhuc1lmc1VLYlZiT2lFaUQ0aGV1WWZETWRvekNaYzM2NDlwdFRySmo0UENROGVCbmg0TzRnQkV0aHRacHVWWTBIUWNLeklqb1RzekRCSm9KM0VZUkQ3cWg0TWVVc21BNmhKTHB2TGVldTh3akg5aklwSGZ5RzVSdThCOTE4YjdMMitOMmtMcUZPSU5HUUN1cXVqRjNpeUtUZmJWZXRyMkVxdnlwOGJWWm85bXcwZmE4RW1LN0FhOVdiNkFoV0wxZDduQmpHM0Nsb0ZvbDZGcm16bGhHSGhCWXBzWVJzaDA0c1F4SVo1YVpoU0VDTHRCN0x0Z0E2T29lNTRXZXJFdWVTcUk2bGxLRW96V3FIR2JKNUdMOU1QZHV5WjA2Nm5ZcHNtODBTd2JYQ3dEODdzYSs2anFyZENMQVBMaUlMQnc0THF4RlZ0dUFNQlVQTUlod01rMEJMWm40dzRRVXpnWHIwOGNteXNhQ2dDdElrQUxrYmJiaW5VeE9pbFdxRDJwUXVCQjN2NytuYngzVnZmSlRUbUVhL0Y3RVNKRUNTZm12U2VWY3pRL3RlZWZBM0R1MlA5cXlDUVNVVm1vYTJYRmI5MkJucTZ6VmthVTRSb3lITi9UOXZiVGErWnBJZUhKR3VwdHNhNnZEZk8zNytKejM4VHY5RWhaOWh4K0dvUGZsUHdtZVM4TjNLdlNwUlZtTVZ2UFJQbW5QdVdvdkcvN01jZHREVENqV2JxZUtiaWZLT3BUVmVoc3FhcWVaaGFUSkpuaEx4WE91RGV3cStRUVNoSWZXUmlKWUlVak4wd1FFTkhFODVBRnJDa1V0Wm9iSjY3bHdBUTRBZklDeDNlZzdkdGg2QVBid1lrZlZaK01sRGdXQkZWZk1FTjVPWk9ueVE2b0RrQTIwVngwSUp1aHFlTlZRdzM0Y1FOcy9IanlINlZXVzZuWVVnQUEiCiAgICB9LAogICAgIm5hdGl2ZS1wcmVmbGlnaHQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzYjZiNjdhMGI0ZDUxZWY3OTFlNzc1YjUyOGI2NGFhNWE2ZjE0ZWZmNjI5NzM3ZTY3YmFlZTdlMmY2ZjYwNzYyIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NzEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZWeTI3Yk9oRGQreXNDYjI5bFV6VDFvTC9nTGdvVVNOTk5OOEtJSE5wTXFVZEZLcWhSNU44N2xGOXlrZ0p0Y085T25NZVpNOFBSNGMvRjNkMFNuS3ZVSHRVM1gvWGcvWEo3RjRZUlAwUlhWM3NjbmxCWEVNaTg1SXpuU2NxU05IMWdjaXZZTnMxV21XQmxJZjVoYk12WWNrcHFJZGduSkVob2Q2Z3B6NER6Ujd4KzZBS3FRSUFhQXRUZ3NSb1FibU04cWdIRGE3dkczbldIQnR0UTdiREZnYXAwTFVYd2JITEgrQU5sOWM0cWlFMmtreG1HWFVlSG4vUk5wOUZHektXUXNzeEx3eE9FV2lWQ0c1RUFidEtrTHFYQ3JOUkZ4dlRVUzZUVGpZUENDMFJzQXNJK29od0pyWjAxcUE3SzRTbGo0dEozWCs0L3hxQjlDTDNmcnRlbUczYjQySzFVTjdxdXFWZStVeGJjK25SYzI1WUNHdFNKUm1VOU5iYmEyWEFGRE5RR2hudDhtbndSVjhtOFppclhaWmxpbVdVNjFXbFdNclloRTBxR1ppUHByamp5NVFUeGZHcEdvdysyUFUvdTBsRUxEZm9lcGphWHI2aGNhVXpMTU16YitqYldPTFFZMEs4MEdoaGRXUGtuZFZzVXh0QTFFRzVYZ2V4N0JEZE44c0xEZ1E4UEE3VGVSb1lQdHNHWFcxZlFsbTBGL3pyakZDQ004YjZYLzA1NGg5dmkvdENxZVFuVk5UME1xQis2bWZXM2svbWI2YnhqUWpPaWIrL2FuKzNiLzdKei84bmVUUTB1WGpSS1ZOK0I5OGFGZnhyREovTTVYdkRpWE9qNUpDSHhGaW85a0NDTTdhUnEwL1pkZEExMFkzMmtVSFd0TzFTMmdSMVdHbDJBZVpSeU5xcU50c1pVK01PR2k2ak1IWDRQUE11blZwUXhoVXBSR1MyeHpxUlJqTlFrejFYSzBnMXdNSmsyV1NyQU1GR3F2QlNGQUY1d0tRdkdCWnFpUHFvbnFYR25vamc2a3RCK3JCcUNGb3l4azhoOUgybFJTVC9Qcm8zSWp5NGZTQkZ4ZDRoTTdxT0UwdW1JYUVZUytBRVYyajdNNkJLelRTRWxxWjhHRkRua1JrSXRCRmZjR0ZuelRQS1U1eG1yTnhuV3N0U2x6RldHNWFZd0xGWElqWHdEL0x5cHh4Y2c2UWMwenU3MklZbFJxMGQvK2x2aU0vQkl6MENjUDRYZ2dLM0N5bGlIL2lyVm52NW02dFBGcCtRcS9SSDk2RW1pSjdsNnJ2RFhaUEppcXduZFRzam56Qk85dWZjbVcwR3JMVDFRTHd0ZjdLL0t4czFiUEM5K0FVR3htNUZQQndBQSIKICAgIH0sCiAgICAicG9zdC1yZWFkeS1uYXRpdmUtb3V0Y29tZXMtY29tbWFuZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJjZTg4YWNhNWUyZDZjZDVhYjc1MzM4OThiYzliMjQ2YmQxNTk0ODJjNGFjY2NiMGFmZTRjNDUxZWU4OGY1N2ZhIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE2NTUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNFZVWFcvYk5oUjkxNjhnL0VJSmtlVzRXTnZCZ1RkMGFMcmtwUXRjYnk5RklkRGlkWHdYaWRSSXlvNFQ1TC92VUlxY3BzQ3dCNXNpNy9jOTU5N0paTExxakxDbVBnbzJualVKdW1jZjJOd0twUnNPZ2JUNEVsU2dxMjRqYnF3V0h6NnRMMWRpVDQ2M0RGbWxqR1lOdVZpUjBzY2lTZFk3RWx1K2gremtTYk52VmFoMjVFUnRsZmFDQTM0bWtET3FGcFVqVFNhd3FpK0VzellJUTNBdkhQejVoRU1ocnRickcrRzdxaUx2UmV2c25ueU1hdzFYTUs5NVM5V3hxcW13WGFoc0ErSE54eHR4RzNOeUZEcG5TT2ZDd0s4eWlkSjc5dFlkWXdHYXF5Q29ZZS9ab2dWT0tBVFpJT1BRd1hTTEIwK3RjdEVQN2RFWlU1R3dtNXJoR1FhK1NGWXhXVWVWZFNncDdOaUxqZTJNUnVVTkJZV21xQ2dsYm9NNGNOaTlOQTE5L1BQNjQ0d2JkVXN6Ynp0WFVZRytjYXh1Q05sbkZFRTVPQTZvYUZDNlFCbHcrVTlIUGdob053cDRvYXV3bmt3bUNUZXRkVUZFTkFJM2xQL3RyY2s3VjllOEtaNnR4aXM1WjEyeWRiWVJxdVhDazlzejJsczAxTmh5aEVzOE8veGpkZjM3OWVmOHMxMlJabFFVOG1EdnlKUmJyaWxodlpSc3RucjY1dnpOdS9uNWZENTlRSUNwb3diS2ZTRlRONWNKNGk5ZnAxS3Noak1kM0ovSjJYNCswMVJ4aE1QUDVCbHJ2STJZL29ybVJjRnlMdk1kbUlIYjhsRis2TUxPT243bzQ4aUYvSTJVQTNYazJVdUNLZndxTjNPZG1Ya0MxWUtmK2NqbjZhN2J6SkM0ZFVoME9zYWRuZGcwN1YzSTdDbExiRXVHM0kvcGJ6cXVkVG5JMGg5a044N2VINjh3R2pWa2owL1pkNzFMc3l3SjdyaElCazRNOWtVOFVsam5FVGpVdkp5L3pZVHlBTnUzNkFaQlhUaDFXSTczSWs1SE9qLy82ZWUzNzk5bkVQSlcxTkdGT21TL0RNL3ZGazZ4Si9HWHFqdTZqSGluMHZaZGZDQVpUZHd5RXFUb0o3STNURUEvVEdYYVArdXVhWDM2S0h0R3NKWUwxcmtjYUZqMmI4K0F5TVU4bDNZVEdVUzZWRUV1UnY0VnB3OWpEK25wRXY4ZXJLRUN5R1lGcGpGQ29OQ1hYQnJndUtkU0FkVzRFQ3FZNlBJMDZlVUptM0praFZ5c1hVY253N2diTUtpdUJIMTM1VGo4bzlMTG5pa1JEN09JRHpocU8rVDhTZFVlS2c2RFRnZTVjTVV0aFhTOElyTTRFdFp6cEZsWlljaGgwcmQ3MFB0TzZtWCs5VnYyMmdKcGZuMjhXK2hlK1M3clY4c2Q5cDlJSlJxYlM5WEd4SkZOZjhNT2V0NUpaVTlVK2NyWFNYMW9ObVJncmg0dTJWUHZXa2ZYLzVYWnR5ZndqKzRyd2xLNjdJKzRhc0EwV3Z3ditNaW1ReTJ5TStNbVEveCtrNVJWclR4RTRkaFNTbGxSbGtZMVZKWUlkakd3OE12UkIyb3U3em1rOHl6NUY5ekJyc3QzQmdBQSIKICAgIH0sCiAgICAicHJlcGFyYXRpb24tZmFpbHVyZS1oaXN0b3J5Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMDcwLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTVWU3dXN2JNQXk5OXl1SW5Jc3VWcTFJWHUrN3JRTjJIWWFBa3FoWXFDMFprcHdzRy9idm81cm1zS0xEdG9OaG1INGtIOTk3UDI0QU5oRnJPTktldkNkYk4rL0I0MVRvdHYwSk1kU0EwMDd0WjR6QlU2bjdNcUtRTzBadE91cU54UHV0RmtQdnBOWldHYThrU1NjVW1WNUo3TWlKVnJIYXlrSDczaG1ocGZYYlR2YktHN0g1MHdwenJsVDJtU3FHU080UGhHeWFsNGtxN1V0YXMrVlh4S1dNcWY2dEw2WktqZjFqcW5EdHFlVEFrRStaWUkwWVkxcWpKYWM3d0ptaTQ2Yyt3Rk5NcHpoaUdXSEpWQ2dmeWQwQ2ZVTmJJWk5Oc2RTODJocFNCRnhkYUJNTExaaXgwblNHNEdGSnBRUXowUjA4SmlabWNyRFlVSGJDTUVQeWNPVU5LWWREaURqQnN3NTN2OG1rdTdlYzBCMDZNMUNuK3NIdGpCdDhOeWdwVVJqamxKR3N0eDRJbFJaOUwrVzlNc1o0R29Ta2pwSGFZNjllci9nWGJmbmNpN1F1bzY5aWVJdVhRdHU1M2FBdEd1RzhjYlF6ZG91Nk54YWRFL1plaU1HSjN2ZllveHc2SVQwcDBUS3k4NmdGYlY5NFhSZjhIeXRxWVM1YytzS2ZYUGpJRUhDaExGZ3RlNGlsVUlHMEVEdkVwdTFEckd3ejFNUSt6QndST0lVNnByWEMzUEFoSHFDWk9mUDYvTXlLSjM2K0FCYzhUd2tkVEdpZm11dFhWc0h4d0ZEUDcxNHZ1ZlovNEJ5TlVDeEdPSEFVQUsybHBVV0M1b1hiK0pSNGlRamoxcW1DVFVjZWRHZ1pkWlFocDFRNWVSUVdKc2tLT0t4NEhmM3BGQnVDam9GT25Pd0R4cDE2YU5sZSthZ2N2amVldFkyeTQ1b2pKSE1KdE80MjNQLzFXY0RDeCs1cjVrQzh5SHJ6OCtZWHFsd2NpaTRFQUFBPSIKICAgIH0sCiAgICAicHVibGlzaGVkLXZlcmlmaWNhdGlvbi5qc29uIjogewogICAgICAic2hhMjU2IjogImRkNGVlY2YwYzEwM2RjYTc5MjIwOTRhOGJlZWI5OWI3N2FlOTZmZDFkNWZlNTMyZTM3YmQ4MzNkYWEwMjYxNGUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNTkxMiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0EzMVkyVzdjUmhaOXoxY1FlclZicW4xUm5wSW9HUWlURFpObEFBK0NSaTIzSkk1YnBFS3k1U2hCL24xT2tleHVTWmJIc0MxMVYvSHU5NXg3K2RkblRYTjJQL1QzL1JoMjJ6YWZYVFpuMTk5L2M3WDU5NDhieHBqZi9NejB4Wis3Tm02Y1pwNXZCbjcydGo0eWhmSDlKNjR2RjRZV0Z3WksvWEM2OUsvcm4vNjVFVXdZempqZnZQdjIrc3RGNnZMRU9JV0o2dDJRcG4zWWJmb1BIUTJicjY0MzkvdTRhOGRieXB1MnkzUlArSytiTmc4MHRLVk5ZV3I3Ym5NZnhoSG5IVDQ5MEdiZmhYdjQ5RUI1a2J4Y3BiemRUNmtxcUNac09OdHcvalB6bDRwZENuV3VqRGZLdkdIc2tySFZubjQvSklJUEQrMElIZlZCSDFXTVFtY3B0UEV1a0ZhU0xMbmdna3hTZTVFakw5cVZ0QWhJN2JhR0NROXlycVU2ZkRmc3E2emp4K3IyZnF6U3gzMUtOSTVyL0tDV1BzRG0xWXk3MExXRnhtazczZ1pvci9ldFVDRW9heTFGbnB5M0pqdmpTQmZObExLeXFHZ3lqT0V5VzgyeXM0RkswTWxsblFLenl0SnFaZGp0ckRwb3VRMkk4d2hsVTdyZExubllwdjd1cnAyZ2NCcjJORDl5VE1pMnZRczN0TTN0RFN5YlhaaU51eXhhTzFlVU40aUhNRFl6bTNMeVJRdm15QlJSaE9MRnFtaWxUMEo2b1NLVGxvbE1pVXVZS09SaVdRd2pmVXFETllpNFVVd2tGOG1tcEJLUG1RZkRqWkQ0V1lybkhPNExhSExXS3FHajBzRXk3bEppenNsd0NQSk5PMDdESTN6c1NudnpzUm9qUktTVUpNWHNiWXJHUkFOdDBoU3BZL0dTQnd1anMxY0d3ZFpPY3k1azRpbTU1TDFEMk9PaWh2Nmd0SjhRcmwyZkVOQWM2Szd2VnMrV0hqckVUUkN6SkhOMjBrZXRROGs2YTQ0OHkyQ05EZ0kxcWxGN3BNZ2dwMGcwZk9NaGEyMWlOcGtkR2dubEhuYnRuM05yYkZONG9ERDdkRFhyYlhaOXlNMUFoMXMwTm92M256Y29oU2EzcFZ4ZmpSZjN1ekNWZnJpN29GSW8xYlphcjczWmhVaTdzWG5TaTd2SGhuNUhxVFJUM3h4QytublRVVHZkMHJBKzFuVDkwQ3llTjlkWHpiaVA0OVJPaU1yWVFNM3hzV2FPU3JNbVlpblFwUXlQdWNvMHBxRzluL3BoM0lZT1FRMlBoRjhQVGY2MFVHc0YrZlY4MzZYYjBOMDh2d0NNR0hDK3lzQ0ptTDh1KzkxdVRLSGJWZ0c3dHF1dzlCY09jUFRkMTFmWHYzeFhlL3J0OHNXU3dLOSsvWHBHdGhYUWNQVDNjMG40bDlzTWhOc2l5aU5WYTZmSGJVRVUyKzZtYW1iUDczZjlkdHdEeFFBSXlPTDQxT2d4M05HMjRPUjJlL1hsTnZiVDdWSkx6eTlCQ1BCem0rTVR4R0F5aFJRVlUxb2tpbGFod0VwRkE1R2lFOFY2SXVkVUxpRXhaZ2hkR3ZBaGg4eWxqQXdkWmM5ZWlyNmpLY0NwY0lyUHI0ampncFppRGREMzlNZjB5MzFld2YwSjluSjNxZjJsWnVmT2VjYVp0dUxkMmZyTWNqOS9NVDE3aEwxOHhBdDVmT1FLZkZGTCs1V25oTHlVQW4vUHBXTk1TaTc1dTFPR0R0NmMrdVNMM1QxU0xzK0Zha0ljVWQvTjF6OTgyd0R4cHVaREdEcmtDNjB5RjZWMFAvejB4dno0T04yaXFqTk5hQlJVWlRPRTdyeDVSMFBmM0ZIb3htYTZiY2ZtVUovTjFaZk5DSUlhYi92cExicGlhdmJkK3c3R2I4cCsyZy9VZ01yMmtKQ29RVi9ReklwTlpkUG1ab0IzNTJzT1luOEgxTnAzMVdLbFR0LzEzYTYyeU81cFRpcC80OU4vNWsvNHpNL2gzR1pnYStoTzM4eUYyelMvbmNxMzdTb0RMSTJEYXQzTlJiWUlPb1BVaTNELy9pTEhpN2FEbmJ2ZFNyZzQyNC9EUlQzSHZ6L1B4LzU4VmxDbC96Ykx6ZTB3eCtyeDZBT3k4dUxrVUZzbmJ4YWJ3TzJMSmNCT0pBY2p3SzQrYitiRG95SGJYNjZ2YXBkaUt1RXZUdjd4NHVTKzM3WHA4VW1iK0d4Qko2UUErTno3ekJVVkZnSUJhSXZUWHZPaWRHUXBSVnhEUVFWYk1ua2g4TFRVbFNIRTJWT3hkMzJlQzUvMVJxbG5KNHVGUzkrZjRHR2hoUU5sZkVTNzZRU0VNMmpoWThneHBQZFBieTV6MExiT1FJalJzSjBXVmlzQnlQTWlHUGY3QWJNZmJSOEM2S0NieGpreXE3cmxwTExBV0ZHci8zQUV5T2RuQTVYOVdKMTBDNnNpbyswZHpaYk41ZGpSOUtFZlVPUXprTDYwc2g3Vnh0MzJnQlRrZTZaOS9INW9rdnA3R21qT05SekFXRktucERrMEo0ZFdXVU1QTS9mUGZTMm9zRHdIYWtkVjlESWJ6a1Z6dWpTUHE2VSsvV0c2SGZyOXpXM05HYVpaTU5OZFFMaHF4MFBENXcwR3NVcDF5M3pXNUQwZGdjYlZkcTUwTjFVendIeXY5bS96eFF3ZHpXSnhzMlppNXVxTEdkU2JNZlgzd0luVmJ1QkttZ2ZRQm9TNXE0cC8zNk5IY2hNSjBRY3I3M3JneFFFWG5rN0ZOUzhBc2p1YUcrenNtM1lBZ2lFNURaS1ZUNHk3OG5NWUQvU01iczg3NEZCWEw1WDU4a0hYb1VxYnBUNmhoQXQ5M256VkQ3VnI2OFhIRjRQQlhJUGRUYk5BODlNSkFIR3QzVHUrV1VjT3lFU00zd0l0cVdzTzlYL2VmQStFWE5CMm5RMUthSGNuaDZsV09NRHkxTDRyNklWaGFzRmswd2J6NnoyS2UreTc4LytPeXh3ZmVOTFprMUErVjZwakdKZzlKalpwV0FuRmtNdUJDV2FpTmk1aHF1YVlyekJvWXNqVG1LQkxJblZBdVZxcW05bXF6UkxGb3dZVk1zWTJuNnd1MlpmRU1PbGlTbmZHNGx2dWlhY1k2b25WUGxVNjFwRHRBU1pCWk9GMDV1d1ZEWWNONEtqRFc1ZTB4VGFTYkN3c2svUVpvRVZlRzR5b1BtV01xWlpGUzFySHhLM1VObVlNMmlYS2lNR2NsZmhNeDlxMFIrRUNpQmVqTDhvcEU2SXF3WkJ3bUU0Tnhtc3R1VU9NdU9aRVVnZ3ZwVEZCYzhqTXhWbUJxVUU4RDFGbHB2T1UvemhLejlsbW81TFhsa3ZQUThvcTgrSk1RcHhOZ0NDdkFBTlJFV2xET25pTUpwNlNLTlhWN0xrT241Wit2dXR2cWdhSHg3RUZJY3BZTkNSeUNyT1kxNFFvWjBNR3V4SUxsREMzWjQ3TVpJUDF4RmlwcW1zR0NYdXVZUnJhaDhkTm5jMk9Ia2lDM1JJVUF2Umx6Q1ZLRXFZRmt0Z3ZwQkpGWnlXeG13UnN1b2dTV1oyTURDWllqOUF4Ri96L2szL3d3WnVnWEVZdUM2SUZONVRYQ2h3VXNIcGFnNHJSeUVoaWhTeG1KOHh2eE1GVUVpc3ErTXNhdC9MUVUzTDVLTXRZRU1td21KUHhDcnNpS1JHS0V3cUpGa2hLM2N4a05BeGJvM0JZTmFRV29Ub3B2WWI3akoreW5OcGxTMS9YOFI1ajAvQXcvMzVVaFRVQ3F4OVdscGg4cEFpZFRnY0VoYkJHWTduUlJsQ0owWUZKUWExT1J4U1laSUVMSWs0cXJyTm5wYTdYMmczVUd5STJjSVlGa2lMU2FMUEFtc0tjRnVER2pBTDF0bmlMelVvS1VMdTJFbGxncE9HNHhLWXNud3YvdU5OU3FPS1N3UW9HLzMxeDJGWVJkNDJWMnNWU2NoSk9PVTBtcG9BdFZ5ZTR5TkNaQldzdDQvNFlwaVB0YmxZQ1BaVVROa2N1a2lsSWhyQ2FLOFlSK29UT3paSVJtVkFZSjh3YkVTTnNxZEZCSHpKTTVja1NCcFJ3bkxzV21OMHNNTHNDQnlDNEw2ZFFrVTRNQ3lWbkhCc3FoaHh0UEdvWXBvdkNmTVU5NnlNS0N3SEVHb3ErMEFybEp5enVKN0w4V0xoUDg3MnNhMGNWTlZvY3RDVmRqb0FvcEJVb1MwVVZZVU53UmxORytsV3dLUUIvQlkvSUVSUEFFTmpDYkpIdW9LSU9FTnQxNmpuQStmbjlZMVZCSVVnT0NFSWhpZHJXUVJPUHlRSVBtZVRZd0pWVkZwaG9pK1dPU1lVbHhrc2xOYzhjOVpWRE9hbFlXUEJGa0NRaGpXQUloU29wU0dZV2lMdXRieE55NHJxZ3lnQlV5SXZNaFFOYVVOa29aQ3NRUGd0TzhjZk9RNzl0VDI5TER0MjN1SkFoRnNWSENaSDJMa0VEUisrQ0FSSnhFWFdTcURSQVVZQnJValBoWWJrcXlUbGRORm53eXVzNjZqcXpLaERhb1N1OHdkT0tDK0IrRVN4aWN0V29FQ0NzUjZOZzRhdmxRQTZiVlBBSkpDY3krQW5VWWFSL29xQ2EvUnFSZWkralk5R0R0RWdndTZoZURNUEtDd3V2Q3RNbzRhU0Nkcms2eXlPYUxTUWJsSkVWMExoTUwxVmdpaUNzOWtmNUdKbUZBUVVuY0tYaW1NS1pEaGpMclEvMWRWRndnTWJhM1NJN0VRWFhDc2xKeGFDYVhTYU5IZkVnL3lNQ1VwamFoSkZNZzBRWklBZ1RnSlBDNFVmaWtPQWlEZ0NJVWdEUzBScmVjZkNPTWRoU2hjVjErYXJnQTI1cjdxeU1FdUVBZVFLL2d1R09BcmdlSGVjZHEwTUh5QTdadExnaVN5QWJpcSt4d2tZaEFPUkg0Y2psUnlFSitPTTVNenlDek1Ga1dRZ1hlWDM5cGFRRXlZTXd2SElKVFJXQnIyQWdBV3hIOVFoT1ZncCtKTGJsamQ5bWVidjNvdndqY3h6ZEpiS01XWHNKYjJSaHpOYVhpNVFjY1JSbW5WMXF1VmhiQzZBUXBpY0xnQUtFQlhtY0xGN2hUVkVRWFFMZ1I1K01GbDRZYUFMRkcvU2xxRys1YW5Gd1hNbUVTU3NIREdvQ1E1aFVqSGw4cEUrSVBvUWUyQS9yRUYyV0JZcEhnZFc1ZDZhQVhwVG5WVUFBbHFGSXBaRWdiWUM2QjYrQ09xMHRLcGJsemMxbmYzLzJQeWVmN3A4WUZ3QUEiCiAgICB9LAogICAgInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRURya1k5bVVaYm1VVzBnelE3dXpzTUIxRlBra0VzdVdWNU5DMHczK3ZKQ2ZFRjlsTzZXWDdVRjVDcEtOeitjNVZ5dWVkM1YwSEplUTljRUZZN0J6cGI0bm9MSHhuVDI4OWtqalVpNmVRVUxhTUlKYlplZ1FTaFVnaXRmZFpmZGRNNHBoSkpCVVQ4YktvbC9tTTRYQmZmeVNjUGV3VDFwRWNZY1YzNWhMRG1zUlR4aU1JM1JBdzBVb2NHUTAyRW84cUZKM0tpdEhLQ0t4czdXT1dVaFpOOWdYREJORU9DaU1pY3NaeXRvRHdqOTNMMGZtcCsvZlk5VHh2dUl0VHFWYTVZNWcrWjd5ZEdFVmdWZGpKRVlnRTRXYXFORE1iOVlNQWZBKzVoMTdZZFh0QmNPQWVEdnZnRHNJd21BUlR3T2l3cStVYjZZNUlBRyt3VmpyUE9BaHhDaWlrSklaYndDd09OZTREejF1SjRRby9ncEZlOUYrV0ZrYVROMFJJeHBkWEpDSlNiNitQQ0tDQTFVN2VmeEdTZUg2RkprRHpialZCayt3L3BoUGdNVWdRMnEvMStLeE9QUmZnRkNvT0pNeVdlV2x5bVJnV040QTVxTjJpQXlSRUNkV3JlZjNLZ2RnUWpEOG9QbklxR2dtMGlwWVZMOHlpaE1VNnBZNHkzOENUczlkOHBCWGlOY2c1allxeGt6Rlc2a2NzamVVdDhBWEJjSXl4L25iSEhrRmJQVVZVUU00Z0ZWd1NxVERqMnFoL2N4cm1EVlIwRUM5S0JGV2lRaVpwVEQvOGRmYlB5Zkg0N01QbDdlMjdzNXNDQWl2eUJhS3BvWjlMbVlpalR1Y1JsNXptbEE0OTczMmxFaWR2UjNmSGw2T3pHLzNmK2VWRm94cktjL0dVekZKdUlxekRGWFFrZ3YwSGtmZEQwUnZaMzMyUnEwTWlORE1jbFRkbjhNREtvYmo2V2kxM2Y0bzU2dllIUjhQQkFUNFk5THd1RGlZd3hMaUgvVW5vbzRFLzZCNm96K24wMFBjSFliL2I3Zm5CY05qcjlpZTlQaHA2Zm9DeHB5b09jbXdLalZOS3gwd1ZqNldCWnpwaWNxeXF6YnIyNThncFdVQ3M2dENZc3dtVUF0NFFUQkdoS1llN3VUby9aMVFYdm9NeXNzYXJGeUF0NTNXcFEzSnVNSjhEb25MK3llYVloSEc1RGcvYnZzQnp5SHo5NXU1dTNCb3JUZ0tjc0hCVFZOY0ZNczh5eFZnWm5qZk1yeERwcUdDcDNERHE3alFJYnUwdkJYdkZkcG4ya3JyakRLUEFDN3k5K2x5b1ExQVZRY2t3bzVybTdtVDhtblN6YU9JM2FQTEUrQ05sS0h5Tk5vMDVwL3BLU0g0SDdmY0tXc1dLcFZ5eHRTRko5WVFoN0JqaEpOWEc5VDB2c3BrZlFhUkdGRTJoNnR3MWFiZWZ3MzhwaURacExiSUdQWXVvUnZzRjRKUVR1VHhSNFEwZmJmSGdJRXJaMDVpVEJhRXdnek9CRVRXTm85cHAxOHFpQkUwSUpaSkFqVGtoWjRtbEFKaTk0NnNycDdKK3Z3VitLSHdiMCtVTlkvSmNhU3FXUXMxYlNvamtLVFJESUJHWGFmSTErZVIzZnlkVURab1NlRVJpRXlEWGlyZnV4MnZqUTFoMGN0c3VaVE9uL2ZSTEo5ZGVMZE12R0UwanVOYlQzNVlkeGN5Tkc1WDA2TjFReHMzK0s3cEZVWXFhc0RwdFhiRWdkaldTZmJ0a0dTVk5jdlQyTjhzb1RKTk4wbG9KMXpsc3k5clhhTFpBM0dBdjlIVk1pcW9QT2trV1hVMUtxL0tuYmtxL2hMWW9EWWxzVXJhVzRPZnJ1cm40TlNtOG9YSlJRbjZHNXV2QnpPVXdJK29PMytqOHJZaC9QcmFyV2NFZWxtdmRCWkZTdjFJMUVyZm92bFBYZ3pjN3VmblVDV094S2Rjbk5OVlN6d2tYK1pEVUU1ZHV1QnZDWS9xRWx2a29NYTB1VEZYYWpkWmxHS1lvcGRKOTJTaFFONDR3emxSY2NKWW1wZ042WHFHL3JmZE81aWpPZDVxM3NaNGlyb2t3cjBmRlJ3M2xtZU1Ham1aN3hBeURGYWpWL1hjQ3VQVzBNa1cvcXFoUlpLcWJYWG1XMkx3dlpmM2hOSVBGc1RybXVRQlIvcDNFK2w1VG9sa2pYNlhMdGVnTGpqQ01TM05HcjU4anp2cHp5N3RMb2RtVzc0cjZZVmZGVVN6ZkcxWW5GSkhJTnFWaHZUR3F1NEs2MVVhZUQrNUNrcFpmaGFKRUxrOEp0d2xWSWtpcTFYR3VzeG04T21LUlQ3QitxSFQ4eWsyZzdnNXRHUUIrT1IxTHcwT1RmbG5udjBhSlRjRlZjbCt6VUxQdEhsWm42OXFYQlhlRmt6dkEzYTRmRElQUTYvdmJhVjhjUnJhMG8zRW8wUGY2QjhBU3dpMnNESUtxRzE0dW90VjcwV2ZiVFVsWVh6OXRwTHZaYUFCeDlyWS9wZkRSUmFtY1cxcENGazhmRTVJaHM4bnJnNWUzK2RycmpUUXFXR2llZDlwVzdsK1ZtMDF6ajVQMXo5ZjVncWk3NDFkNDRoR1dHL3R0SUxWQlZJR2pHaDNHbXZvQ2wwSHdUU2cyRG1PL2RuVGJBdmI3eHV2ZWRsbzNWYnJXMktyblc0d3pqUFl4bHpYSlc3QndSVmxEK0d4ZHY2OUJMUjhtTGxmempWdlAvVWNsL0E5ckpOVkpmNnN1MG5oc201eHJtOUwvaHlxR3FXb1VhdGJPQkRkV3N5THBLNm9hUzNUT0lscjdsdGhXOXFyNDFjZlZUam4yVmovbzZsK3BkNTUzdmdEblQrN0xUQ0FBQUE9PSIKICAgIH0sCiAgICAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIxMjA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxY1c1T2JPQlorNzEvUnhlc0dHekJnNkgyWjNzNWxVdHNYVjZjelU3TmJLWmNRd2xZYUVDdUVFMCtxLy90S0F0dGNaQnYzcHBQWkt1WmhrbGhIUjBmbkhKMkw5QlhmenM3UE5SREhjN2hFOERHZlp5RFB0WXR6Umd2MFNneVJJRWQwaGNJNVlQeG56VElzVnpjTjNUUWZEUC9Dbmx6WTFzaHpUTU56LzJZWUY0YWh5VWtwWUhpRk9FdVFMbERJNTBVZ3prdCtHU1VNUWNZWmhvQ0JBT1JvVGhGbzB1UUlVc1M2djRjb2k4azZRU21iTDFDS0tGK0ZwSnpDY3VTd29GL3pXVm1NSVJDYk1DdHVJT2JMeFVLaUhRYysvSTJQaXMxbitEZEU4NUlWLzFlV2oxZW0zQWNmZk1TcGtFRjd2WnRZalNTSUFiR0ZMU1BCS2swSmsxTGx0Wi9GQUYwUUdJN0VIMXdCbjBlWWpCa0ZrSE5mNkZndWdOT0kwQVNGZW9nZ0ZzSmNTRWwyNjE1MEtNYWRYeXJaNUpLZHdSRWtSVXlTWUpRVGlFRThCbUdDODlxMktlRm0vdnY1Kzl1M3IvWGZaN3BoR05OeldERCtLOVVxdGs4Yi90ekNDVktLclRWSThnekFZM1JGcVFEZ2VCNHlEYUQ3Um1qcHR1ZE5kSC9xSU4wTlF5L3dJZ1NCYjVWeVZGSm9lWVpnWGZ0OEJ3dUs4dncxOTRNWXArZ0RnaVFOaFNWY3c5Z3UxL2FQNnNlVmxPcFhuRE5DMTljNHdjSkR6TjIwSE1YY2JRbHQyalVCREM2dlFZRGlwc0dsVzJXanh5SkFORVVNNWNMaSszVzJuZmZVVVhUTy9ZU2h4YnE1TGx0bmt0VzlPQ2w4dkdzZ2hwSXNGaU5OZWJ0T2U5QnhYOHlUR3NMS1ZXS1ZGcFY2aENUSlNGcWVZV2s1OUVWN2RXeFNEK1h2MU4rUXJlMW41UUo4T3drcFV2YUJSMGNNMFNXRTRsOFA1QkdsOVppMW5jQmRrUUh1bEZSczhkOE5hWnNiNXJRb1hYV0lWSVNOa3lpMFBmL25teit1TG1kdjV1OC9mUGo0NXI2bGxXckNDc1NGbkxGa0xNc3Z4dU5IMkRLbzFwbjI5T29ad2x6ZDNUNWN2cjk5Y3kvKzl2Yjl1eVBpY0x1bUVWNFVaVmdmVTY1T25LRFI1N3hwbzdhbHl2OCt0WGxyT0FFTHlaZmJlNEUrazdiVFZ2L3NCdEZmOGlXd0hQZGk2azdneExVTkMzb0Jta0pvUXpNSVRlQ2FyalhoZjBhUmI1cHU2RmlXYlhyVHFXMDVnZTJBcVdGNkVCbzhlZ0ZOTGRLc2lPTVo0U0ZvTFJVVjNSSTI0MUZybDFucVo0TG5ySlJIdEJrbEFlb2NEVWtTQVJ3WEZEMHNPWThsaVVVb25YVDFMRzM5RGpFbER4RTZBVnRLR3l4NXNtVExQOVdteWdobEc4ZFJVK1M4aWlnOTROZUhoMWt2UDlJeVJERUpkOEY2RjNUcmpBc0l1U0xxMnpRVlpNSmpTTUYyekt5ekl3TDB5R1NOL2VmOVQrYjJ5TTlLdlhtR1o3dzZkR3IyNjFWVVRRU1NXRkE5WE0yZWYwQVZNcGtIWmZwQzZHTk1lQ0gyVExtT25sTlJ0ZUhCeVYvV3lUbERVbERPWEszZldOUTcrVDY5d2F3UW0zVU1JMUVySkVFSkw1cGtlK0M0TjdpZlJpajZUNEh5NDZzZVhkTzFsVXNlMVFudk1ncUsyZnFLSHduMFZlMDFvak1pWDJZVXIzQ01GdWhORGtHODZUbzZPWDRqT01oQWdHUE1NTnE3dVpDU1RCbEk1T2psOWJXbUdQblVVNjhndkV2ajlUMGg3QzJYT2wvbnZCYXNXcnJqU21HQXNpSTc3U3lhMW5BWVR6aU1ETkVFcDlLTmJ2Z0tvaWJZS0NORXEzRnRXSS9KUXVzemYxdFBDSXQzWjZ4SVhDVG9SbFNvSitRdldkL3VSQk50dzhGVUlTbWVuWm1hcS9IcWIzdzhJemVXcndyRzd5VUJTN0xENndtQzc3UldvL0k5dkdvUDBrMEVVSi81NThxNEFsUmFwYnljeWJ2V0dXZWxGeDRXbndkVTNnWCtwZVFHUllqWlliRVBrUHdzcVhmdDdXSFJkM1E2eVBDUDNNT21kTlFwV3VDYzBTT3UwWlA4WittN3FsZjJPZTltRnpsbVROenFIU0UvdW91elE3bS9QdHFvcUxVd3pYZko0Q291aEFSdk1jMmJ6aXZxUVpIb2Q2U1g4UmV3Ym5xU1RLMWh3WS9yN1NiQW93Z1VNZE8zQXkzNkl3V1ZGdVh2S0NreW1YRU5vNVZOTjZOWDh0SjRKOWxkS2lxWkc1ekx1N2IyUlErMzJlVkJycExnbGtnbXRYdnROc1hISE5FOUhQaTJ4STBUTDRraWtWeTc5Y3p1TnE3TVFLOUxOV2w3VGZiVVVsdjlCbW5QblZhTGFtTVJGV1d0UEhoSEFVU3pWclZqT3czeXNqYm9jU3ZWU1BQZDNsaGNvWE52Uzlsdmt1RlZESENpcmlDaEdMcmQxM2JycWpLaWVSeGFSN3g3ZjVaa2JQMGFVL1h5ZkRGY0NORzBtN0tIVUJWLytFKzB1UVRXVEVWUHMvOGVRVm1HL0tVbDdoUXl4NlF0YTVBYmtLbkZyY0xFRFFrRmU4dFhkUWQ3YjEzMFNuKzZDeTNMOUtaZWFEaG0vNzAweTZPVGRuV2tSQkYzSFovbHkxV3ZYWHVleWtqYkpselYrWDFUZDRPNThvWlpUWHhlbGlvb0xWOWRvaGg5MVVIQmxzb2tWSHJlMXd5WDJ0cEZpRW50dldSdjQ4YWtJRXFxcDdNK3YzMzZuODc0NGNxc2VrSjh2cVV3NzVsUHROTWpXdS8wb2xiZmNlVXAxS1R5STdtNy9TRzBWTXAzMGUrUjh2SC81VlNvM1B3bHZQeFYveDBjanFJOS9QQVE5NlpQUWpDQ2xPME5BbzBkVjdSN1NaLzJqSHphcTh1NksrbVUxMkg2b1RWK1JQQjQwUVRXN1dONlo2OGpVL3VlMmVNOXlFK01qekRtNlluM0VLVUFSK0pray9qWjhaSms0dVNEK01DdDdiR1EydFhwWVE4OFUvbnE5bm4vYlBOL2FWSis1dElRODdwM0FLZ01BSlVCb0RJQVZBYUF5Z0JRR1FBcXczUGhBRkFaQUNvRFFHVUFxQXdBbFFHZ01nQlVCb0RLQUZBWkFDb0RRR1VBcUF3QWxRR2dNZ0JVQm9ES0FGQVpBQ29EUUdVQXFBd0FsUUdnTWdCVUJvREtBRkFaQUNvdkFsQ3B2cUVTb2d5bElVL2U5WnZqeWxtVGhyTzJRQ3RidklwOFpFd0tCZ0xacWRTN25TMlU1V3JyL05zaEpTemdBQ2pnV1hpVzhYYmhQbEFXZFIzWTZGeGVCcGRRZi9rL3NVcHR6ZXdCZnRuQlgzekROQ2VoRmVxT0hmcTZqVHhMRDh4d292dEdZUHNvUUtFVk9GMlVCd1FwU1RHdldPWG5mdWJseTdWZzV5Rm91MVpvV2hONzZ0aGU1Qmd1UWlpSVREU0I0aTE3NnRxZVlmclFBMU52NGhsMmFQZ0JoRk0vTUNMTEFwSGJSTnBrSzlqUCtUWStObE4yZ3ovWTM1UkM5UEs5VG92N2ZYMnR3VGxidFpBcUFkZWhMbTRjWWxTV1ZkcTZkY2VubU1PTG9GQVAxcnA0MzZWRU5qQ3FpV1d6UHdxNC9sc2NCTzRKTEpBdUJKY2JMRGxRa01JbG9vSWlKdHpQZEJtWlZUeGI3Q1JjaXVzckxiT0laazM4a1d1TkxNTVorZFpvU1hJMmt2ZEZTSDcvaW83U1ZqTFl3L1lVS1pWSE9zSThEL0JldVlQRDBab3JjWmZYcTQ5cE5UckpUNzNDUTh1QlRnOEhvV2NFbGhPWXVtbWJRTGR0TTlBRHJqdmQ5eUpnUmFIdkJWUFlEUWNkcEpJRzVDT1dTT1dkL2Q0akVQNU9lU0svRTkyaWNvUDdubzMzUDk1cWxZWGtMY1E3M0FOY1ZkTHpzNW5ubSt5cjlMVHRJMWJwVDdXbnpRN05obyt3NFVtS2JBZTllYllFdVdUMUQzSEF0RzNDRm9Gb2w2RXJtOW0rNzdsZVpPa0lCRkMzdzhqV0FacVlldUQ1RURsZU9IV01EWXlpNm5rYTZNV3E1Q2tocXVNWVJ3aXVZZTAxVHlBWHljZjc2enAwNjFSczAyaFJhNVkxeHJlQjJIMkZmWlQxbHU4R0JuUkR6ek9SNXppaEdacU9aeGdUL2hQeURSUk5mTU55TGRRQ1luTG5ZdFdOWTMxSGZRR2daUVJvSU5KMlI3RXFSa2Y1Q2pZWGxRZzh3SnJmdnhQdnp2STl1UzRIZHkzMndFTUVMK0g0dWcrNGRJNzZwL2FtRjRaeFlWdi9xc25FRTFHUnkyZGx5Vy9kZ3A2dTAwWkdGT0VhVUJRK2tPYnhVMnZtdEpCd3NvWTZSNnp0YS8zODdVVjg3cnY0blJvcFM1L0RUMkh3dTRMZFJSK0VnVHRWdXJEQ1BLVHJPUy8vNUtjY3BmZHRQK2E0clFIbUpJM1hjd24zNDBWOUxBdWRMVlhaMDh4REhFVno5RlZlMkJxZGdWMGxoeVo4SjdadDhZQUZUV2phUG9pQ3lJYWU3N3RSNEZ1Mk5RWElOcEh0Mm43Z1Qyd0liTi94ZlRPWWVvNFY4TDJYbjR3VU9CWUlaRjh3aDFreEY3Zkp0bEZlZ0d5aU9lOUFOa01UMnkySGF2RGpHdGo0NmV5L2gvamlKdGhTQUFBPSIKICAgIH0sCiAgICAicm9sbGJhY2stcHJlZmxpZ2h0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNGMzYzMxNjYyMDU4MDhlODEzMjZjY2RhZTFiNTZhZmVmNzU3YjBjZWI0ZTZjOTZhMTdiZjM4NDMxN2FlZWU0YSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODcyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTdWVlRXL2pOaEM5KzFjRXZtNWxVeFFsaS80RmV5aXdRSnBlZWhGRzVOQm1Rb21xU0FVMUZ2bnZIY3JmU1Jab0YrMU41TXk4ZVk4Y1BYNWZQRHdzd2JsRzdWRzloR2FBRUpiYmh6aE8rRXNLK1RiZytJcTZnVWpiUzg1NGxlVXN5L01uSnJlaTJBcStxc3VjMWRVWHhyYU1MZWVpSHFKOVJZS0Vmb2VhNmd5NGNNUWJSaDlSUlFMVUVLR0ZnTTJJY0o4VFVJMFlQKzVySEp3L2ROakhab2M5anRURjk1VEJ5em1jOGc5VU5UaXJJSW5JNTIwWWQ1NFczK21iVnBOTm1Fc2haVjNWaG1jSXJjcUVOaUlETFBLc3JhWENzdGFia3VsWlM2TGpwMUhoQlNLSmdMaFBLRWRDYTJjTnFvTnllS3FZdVF6Kzk4ZGZVOUkreGlGczEydmp4eDArKzVYeWsvTmR1d3BlV1hEcjAzSnRlMHJvVUdjYWxRMGtiTFd6OFFvWVNRYkdSM3lkWXdsWHlhcGxxdEoxbldOZGxqclhlVmt6VnRBV1NvYW1rSFJYSFBseWhuZzdpZEVZb3UzUEozZFIxRU9IWVlCWjV2SURsU3VOZVJqR1cxa3ZVNHRqanhIRFNxT0J5Y1ZWZUZYM1RXR0t2b040UHdxMHYwZHc4MGxlZURnSThXbUVQdGpFOE1sMitIN3FOalJsTkhWLzNIQ0tFS2QwMzh1dk05N2h2bms0OU9xMmhmTGRBQ1BxSjMreis4T1QrVGVuOHhNbmRFUDA4MW43Wi9QMnY4emNmekozczhERk82RkU5U2Z3UHJud2IxUDhabjVMRjd3NE4zbzdXVWk2aFVhUFpBaFRQN3ZhUEgwWFh3UGQyWkFvTkw1M2g4WjJzTU5HbzR0d202V2NUVzZqclRFTi9tV1RCYklQZ2JBSFhsYUpEaGFrUkFndWE2TnlsUXNKcGpWQzFWSldwcFZjOEEyZ3lGRlVRcmF5RUFxRUxLWE0yMDFkOHBhMEg5MlQzTmlyWkk2T0xIU1ltbzZnQldQc1pISi9UalNvNUovblVDR3FZeWhFY2tUY0hSS1R4MlNodERvaW1va01ma1NGZG9nM2RGbGUxeHNwZFZGeUZGcElYU3JnVWxlWXk4MUdjTTA0eWdwRXk5cUNza3h1eEtZbS9pMHZ1ZVRZbHArQW55ZDE5TTYxb0Y2eVlVVGo3RzRmczVTM2VnNm4veVU5Qk0vMEVLUWJvQlFjc1ZmWUdPc3dYTTA2MFA5TVNsMTZUSzdtbi9DUGtTeEZzbXZrQ244dHBpajJtdER0akh5dVBENVIyVzMwcmxwQnJ5MDlVZThiWDRTOTc1cEdiL0cyK0J2ZUJ2bWhVQWNBQUE9PSIKICAgIH0sCiAgICAicnVudGltZS1yZWNlaXB0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNjQ0MjY3NmRjZmQ5NDFmMGEwNWE0Y2I3OWEwMmRlYTgzOWZjZDMzMmQ4MmIyMTU0YzE1Y2Y2ZGI2OGRlNTg4OSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MDgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMldTeTQ3YklCU0c5M2tLSzl0MldpNEdUSmJkZDllOWRlQWNFalEyUkJobkpxcjY3c1hqempSVkpVdTIwWDg1SC9EejBIWEhRcmU0eEp5T3ArNW9YZStjVUNpRjBuWUFVcjBrUXdNTUlMMVVWcURqUVEzQkh6OXZ6dXZxcHJoY0NFZU1aMXJxbHJCY29IbFBRYWxoQ0wzVnpTQzBRV1k4ZWh1VVlBUHBJSUxvZVRDOU05SjZJYTNvSFpPR0NTVFBKYWkydEJmY3FNUVFXMzZoYzF4cXVZOCtweERQLy9kcElSeDVMOG1oTmQ1cDdUUVpMM1dReWdVck9aaVdqYmJYdmROcVVKd0w2Ym4zZzdkMlFLUGMza2V2NU5mYStxWU11R0VCelRtTkVSL0pCREZERW5HUTFpa0ZBUlVxYmtRdndXZ0ZRbHV0MnZaUlQ5b29GaFFiak9HQVNtbUhHaG5mbStJTVp4cVh2QlpQV3pqNHVzTFVRY3JwUHVkMTZkN1JPNlRGbDNpdHVYeWQ0RTZsZytJdjhVYmRQbU43ZVppbSt4N3JJV0ZFcURUdUJlOUFyYUtXbGQ0MGllcExMczliYTJ1ajNWZ0ljTXhwdW84bDUvb29uOXNXbFB1bTVtTDRIci85S2JxdVMxdmorOCtGL0RPVkJ4eDZiVURkT2RibGtsKzZhMHlKME9kNWpuVzNKNmdOWWJ5V2ZJdlluSFUvelFEVFFvK0NiZENOYy9RWFNPYzNqcitheGdrT0ZocHpHUUhubUxhUGowaGZDQ25WMk9UL3VEN3UxRnI5TnFwZ1FqOXg5c1Q1RDJaUHNqM21pMkpDR1BXSnNSTmp4OE92dzIvTVFnSVdLQU1BQUE9PSIKICAgIH0sCiAgICAic2Nhbi1yZWNlaXB0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYWFhYTkxMDYxYmIwMzZlNmQyMjhiMWMxYmQ0MzMzNTc4ZGM5NDhjYjJiYjVhYzhiYTI2OTQyOTEyMWU3MzIxYSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0NTM4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxVnlXN2JNQkM5NXlzQ1h4dEtKTFZTcHhib3VhZTJoeFNGd1RWbVlva3FTVGxPaS94N0tjbHdMR2RCa3lib29RSU0wSHA4TTV3WjhzMzhPams5WFRoT20wYmFSWFc2b0Q4NjZpU1B2ZFdibS9kdVJYR1dWemxtU09hWkxNdWNNSjZ5bE9lVXBvcGlobEZHc2tEaEJjY3FoNmlrUkJBcWNzU3BLZ3RVRmh5Um5Dek8rbE1FVzQ3KytuTmd3aWxuS1V3enpDVXJVcXFFNGhRV21MTVNxNExJY0ZncUZPVVE1bExobElZUFFRVktFZ1lWUWNYZVpTMDlGZFRUNFBSWGdBTDRWVnFuVFJNQWZEWWluK1RXZjJrRFMvWkhZNGh6Z0NCQTZETXFxNHhVR1l6S2trQUVzd0tmTDNZMkkxOTg4Qk1UZUd4Q2NMSTMrV2l1bTdXaDRnRXJuRlFKRHI4b0tTRk1FcFNnODBVd3VoMnljTFNXUzJXbFd5MURRc3o0MVZMWDlFSzY0TVRiVGc2a3hpeGQxN2FCdFV0dXYyTWxOMWIwNUc5REhHTVp3Z2ExZktVM1E4NHNYQ29ZbkVhZTJsM0FnYUtNcmVrUTdLVUxYdmU0QzZ5US9iTHovS2hra0ZSSldTVnBWQlJwWHVCM0VGWVEzaG5LcmZaTGJrUi9LdHlqM05RMWJjUSt4QUVVaGwvSnUxZ0NBZ0EzamRJWGgxanM2emJXalJLZzdXeHJRaHB0eDliYXJhUUFHMm0xMHB6NlVKRlkxcTIvQWFQVEIvd0FzRExPSHlKZG83ZFZITWNiYW1QYk5mRm9Hcm13SE5MQzF0U1ByYWZmamZUWHhrNXNHdFBJbzhUYXpoMGlhTHBkeTlyWW13bGhHdjNtNFpyOFhHdDJVQkRDVXNad0pxbzRYSjhPNnZFdmNOSjNBeERVdVpKVlBDeUhWbS9YSDNZSERJOTBXaHpkdE4wa2tYMTI4U1B2ZWl4NUh6c1FlZ0xmendnQWQ2VmJJQmpveGhaeGYrK1NidWlqaExGM1RpNTMwNjJQM3N4T1p3ZllSRzhEeDNUKzZUeUhtZ1BWcmRmUllMMGpmaC9XMjdPL0VEKy80ZXZ3Wk1YMkdSMmdqTW9zeDFrNmQ0QzVBOHdkNEFVZDRMN28vcXdOT0dicWlJdnQ4NXJBYXc1L0VoV1lGS1NjcFQ5TC94OUsveitZK3k4ZCthODk3Vk1ZNVVVRzAxbnlzK1JueWIvOW9IOXF4cC8wLzI1UGZnTVUrSXZSdWhFQUFBPT0iCiAgICB9LAogICAgInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRURya1k5bVVaYm1VVzBnelE3dXpzTUIxRlBra0VzdVdWNU5DMHczK3ZKQ2ZFRjlsTzZXWDdVRjVDcEtOeitjNVZ5dWVkM1YwSEplUTljRUZZN0J6cGI0bm9MSHhuVDI4OWtqalVpNmVRVUxhTUlKYlplZ1FTaFVnaXRmZFpmZGRNNHBoSkpCVVQ4YktvbC9tTTRYQmZmeVNjUGV3VDFwRWNZY1YzNWhMRG1zUlR4aU1JM1JBdzBVb2NHUTAyRW84cUZKM0tpdEhLQ0t4czdXT1dVaFpOOWdYREJORU9DaU1pY3NaeXRvRHdqOTNMMGZtcCsvZlk5VHh2dUl0VHFWYTVZNWcrWjd5ZEdFVmdWZGpKRVlnRTRXYXFORE1iOVlNQWZBKzVoMTdZZFh0QmNPQWVEdnZnRHNJd21BUlR3T2l3cStVYjZZNUlBRyt3VmpyUE9BaHhDaWlrSklaYndDd09OZTREejF1SjRRby9ncEZlOUYrV0ZrYVROMFJJeHBkWEpDSlNiNitQQ0tDQTFVN2VmeEdTZUg2RkprRHpialZCayt3L3BoUGdNVWdRMnEvMStLeE9QUmZnRkNvT0pNeVdlV2x5bVJnV040QTVxTjJpQXlSRUNkV3JlZjNLZ2RnUWpEOG9QbklxR2dtMGlwWVZMOHlpaE1VNnBZNHkzOENUczlkOHBCWGlOY2c1allxeGt6Rlc2a2NzamVVdDhBWEJjSXl4L25iSEhrRmJQVVZVUU00Z0ZWd1NxVERqMnFoL2N4cm1EVlIwRUM5S0JGV2lRaVpwVEQvOGRmYlB5Zkg0N01QbDdlMjdzNXNDQWl2eUJhS3BvWjlMbVlpalR1Y1JsNXptbEE0OTczMmxFaWR2UjNmSGw2T3pHLzNmK2VWRm94cktjL0dVekZKdUlxekRGWFFrZ3YwSGtmZEQwUnZaMzMyUnEwTWlORE1jbFRkbjhNREtvYmo2V2kxM2Y0bzU2dllIUjhQQkFUNFk5THd1RGlZd3hMaUgvVW5vbzRFLzZCNm96K24wMFBjSFliL2I3Zm5CY05qcjlpZTlQaHA2Zm9DeHB5b09jbXdLalZOS3gwd1ZqNldCWnpwaWNxeXF6YnIyNThncFdVQ3M2dENZc3dtVUF0NFFUQkdoS1llN3VUby9aMVFYdm9NeXNzYXJGeUF0NTNXcFEzSnVNSjhEb25MK3llYVloSEc1RGcvYnZzQnp5SHo5NXU1dTNCb3JUZ0tjc0hCVFZOY0ZNczh5eFZnWm5qZk1yeERwcUdDcDNERHE3alFJYnUwdkJYdkZkcG4ya3JyakRLUEFDN3k5K2x5b1ExQVZRY2t3bzVybTdtVDhtblN6YU9JM2FQTEUrQ05sS0h5Tk5vMDVwL3BLU0g0SDdmY0tXc1dLcFZ5eHRTRko5WVFoN0JqaEpOWEc5VDB2c3BrZlFhUkdGRTJoNnR3MWFiZWZ3MzhwaURacExiSUdQWXVvUnZzRjRKUVR1VHhSNFEwZmJmSGdJRXJaMDVpVEJhRXdnek9CRVRXTm85cHAxOHFpQkUwSUpaSkFqVGtoWjRtbEFKaTk0NnNycDdKK3Z3VitLSHdiMCtVTlkvSmNhU3FXUXMxYlNvamtLVFJESUJHWGFmSTErZVIzZnlkVURab1NlRVJpRXlEWGlyZnV4MnZqUTFoMGN0c3VaVE9uL2ZSTEo5ZGVMZE12R0UwanVOYlQzNVlkeGN5Tkc1WDA2TjFReHMzK0s3cEZVWXFhc0RwdFhiRWdkaldTZmJ0a0dTVk5jdlQyTjhzb1RKTk4wbG9KMXpsc3k5clhhTFpBM0dBdjlIVk1pcW9QT2trV1hVMUtxL0tuYmtxL2hMWW9EWWxzVXJhVzRPZnJ1cm40TlNtOG9YSlJRbjZHNXV2QnpPVXdJK29PMytqOHJZaC9QcmFyV2NFZWxtdmRCWkZTdjFJMUVyZm92bFBYZ3pjN3VmblVDV094S2Rjbk5OVlN6d2tYK1pEVUU1ZHV1QnZDWS9xRWx2a29NYTB1VEZYYWpkWmxHS1lvcGRKOTJTaFFONDR3emxSY2NKWW1wZ042WHFHL3JmZE81aWpPZDVxM3NaNGlyb2t3cjBmRlJ3M2xtZU1Ham1aN3hBeURGYWpWL1hjQ3VQVzBNa1cvcXFoUlpLcWJYWG1XMkx3dlpmM2hOSVBGc1RybXVRQlIvcDNFK2w1VG9sa2pYNlhMdGVnTGpqQ01TM05HcjU4anp2cHp5N3RMb2RtVzc0cjZZVmZGVVN6ZkcxWW5GSkhJTnFWaHZUR3F1NEs2MVVhZUQrNUNrcFpmaGFKRUxrOEp0d2xWSWtpcTFYR3VzeG04T21LUlQ3QitxSFQ4eWsyZzdnNXRHUUIrT1IxTHcwT1RmbG5udjBhSlRjRlZjbCt6VUxQdEhsWm42OXFYQlhlRmt6dkEzYTRmRElQUTYvdmJhVjhjUnJhMG8zRW8wUGY2QjhBU3dpMnNESUtxRzE0dW90VjcwV2ZiVFVsWVh6OXRwTHZaYUFCeDlyWS9wZkRSUmFtY1cxcENGazhmRTVJaHM4bnJnNWUzK2RycmpUUXFXR2llZDlwVzdsK1ZtMDF6ajVQMXo5ZjVncWk3NDFkNDRoR1dHL3R0SUxWQlZJR2pHaDNHbXZvQ2wwSHdUU2cyRG1PL2RuVGJBdmI3eHV2ZWRsbzNWYnJXMktyblc0d3pqUFl4bHpYSlc3QndSVmxEK0d4ZHY2OUJMUjhtTGxmempWdlAvVWNsL0E5ckpOVkpmNnN1MG5oc201eHJtOUwvaHlxR3FXb1VhdGJPQkRkV3N5THBLNm9hUzNUT0lscjdsdGhXOXFyNDFjZlZUam4yVmovbzZsK3BkNTUzdmdEblQrN0xUQ0FBQUE9PSIKICAgIH0sCiAgICAic2VhbGVkLW5hdGl2ZS1kZXBlbmRlbmNpZXMuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIwNDIzMjdhMDM2ZWQyNTRjZjk1ZGJlYjBjMDU2YWMyNWIwM2E2YTg0NGI5NWEzMzJjOTkyZGYyOTQzNjkxMzY5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NDEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNzFVeTI3Yk1CQzg1eXNNblV0Wm9pVkxTbTlOa2FLSHBFRVB5YUVvQWo1V05odUpWRW5LUUJyazM3dVVaU2QrSUk5RGV4S3czSjJkblozVnc4bGtFZ21qYTdWb1dSZWRUaDR3Z0NIV3FXdXdUaG1Oc1dpVlJoL1djZFcydldlOEFReDcyOE1ZdmxOYWhzU3pBZWtDa2NhSEZqeVR6TE10Y3NEVzJuam1FZHM5QzRjSHV6QkN4dUhUV2ZNclZtYnFMUk1JdmlCcXdGZTZOcllGU1NRSUZkaWRUcmN0VHc4ZXB3Y1JZbnZ0VlF0a0xpaE55NktVU2I2WmJUM2Zma1VzVE4rWWxzZk9DTVdhS1pPdGNodGRXSWM4VnlBL1RyNWVubjhtTjFja1NaSmlJbnFQVVJ1TnNJOGIvRWl6Rm82TzhUS3ZvYzUxVEJ3dmZzcnIxeXBWU1pyT0pKVWt6MlJGTWlncDRhbWNrU3JoV1FVY0pPWDVtdHhJTFJKTUc2MEVhMjdEc203ZGt0RjhIcUJLRU5tY3lwVE9zaUxQeWpwUDVnREE2eFJtb2hBaUsrWlptYVNWS0ZsUnpzb2trMG5GaFNncW50U1Vzbm9lMmd4Tm9tNGxYcmZYeGtkWDRkRjUwUDdhTkgwTFp3MVQ3Zi96MU5IMmIvTFh3T3RmK2VrWmJyZUs3M29PVm9NSEY0YmlxQndScHUwYWpBeHozWU43dWNMMFdNTHZzVXA3YTVvR094eVdyUVlCWW82YTc5VTdieXhiQUFtVWg5SFc5Wlpwc1FRYk1ocURqaUlkODhzamlIdGcwSUJBNGtRYk9iaWN6cXA0VG1PYTVIRkY0NlZ4UG5ZZ2Vnc09MR29SWStYcm9POWhlSENzdGRLc1VYL1FDbGowNDZuVmJnKzBkY0QzeUQ0c2NVejcrWWFUMzdIS2UwOWNsZ21uT1U5Sm1xV01aRm5LQ1VldFNGWFdqTmF5S25raGRrL2NkU0IyTGtZSWNPNEM1ZDZiN3pzd2VXT1ZoMjhhMlJ3TWhCc3d2Uld3ZDJjV2Z2ZmcvRzQwdEYzdklIQk92NmhvKy9SNG9QZVlpYmZtM09XbzJoRUhqYXUrR0gxeXJocHc5M2lyN1g3R0JpTnM2QjF5UGY5aDNYWkw1Z2FRVCtGWW9wUEhrNzlxRkVnb01RY0FBQT09IgogICAgfSwKICAgICJzb3VyY2UtY29tbWl0LXByb29mLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjA4MTFkYTJkM2JkNTkzODczM2YwMDc4ZTVmZWM4ZTE5YTZkOTc1MmM0Mjc3YjgwYmZlOTgzN2VkNzJjNmEzYiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMzksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMTJPd1c2RU1BeEU3M3dGNHJ3SElEWTIvWldxaXB6WUtaRUtyQWd0V2xYOTk4Skt2ZlQ2TlBObXZxdTZiamI3eWlXdlMvTlNOMk9BRUhwVTErTXdzaGlDTXpJV0ZoY2RqcjJHTGlHbjJOeittbmFZK2xtV25LenN2a3h5Tmk4VDlTQUNSR1NoaXp6U29EeXdZY0lXZ0Z5Q01PZ3A2cHdTdHNva2xnUWpLMFpwQ2NqK0w5eGxuOHJwSlhqeU9aZFo5ampaeFY3Zm5tdzlGdHY4WnFKK1hUNGUvajFmZjlialRPemJwMVUvMVMvZFczMjc3d0FBQUE9PSIKICAgIH0sCiAgICAic3FsaXRlX3JlYWRvbmx5LnB5IjogewogICAgICAic2hhMjU2IjogIjkwOTNjNjRmN2YwZTM5YjI0OWRhOWZlZmRmNWFhZjRlNDI1OGJjMzFlN2EyN2ZkODg4NDc5Y2UzMjlhMjA1MDkiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDYxMCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E1VlliVy9iTmhEKzdsL0JaY0FrWmJMeXNxYkFraHBEbHFWWmdlWmxTYnRoQ0FLQkZrODJGMGwwU1NxTlcvUy83NDRTWmZtbGFlTXZOdC91am5mUFBYZjAxdGJXbFlhaG1rSEZURGFGa3UvSXlzSkVTenZmeVZSZFdUYlRTdVZIekZoUnlERlRWVEdQV1FVUG9GbW1LbU4xblZuRGJxelNrR3h0YlExa09WUGFNcTRuTTY0TkRIS3RTdHBwNGRHU2dIWTlLNVNSMWNSdm4zSXp4VlUvVk1iLzB1Qi9HY3V0Ly8yZlVWVWplY2J0dENmMkNvZmRnUStGdFBETFlEQVFrRE5abVJsa050WEFCVjBpcEpNeDI0NVpTcmFBU0UzRloyYXE3T2cxTHd4RWh3T0dIOXJGUms2dU94RzVXWm16U2xtM21FaVQ1cktBTUdKS2R6Tm1YaGF5dWc5YktmVFJYQnBnZi9PaWhsT3RsUTREZUpUR29oTlFWdFVlUUcvTEIyNkJDVzc1bU9NQkRSOXFxVUVFamVaYVN6VEhxZEZnVlBHQWloTnVVcHhIQzM1bXdXK2xFakRTS3NCQkdQd2t5N0pHU1FXTTlnSXllL1d5RFBDdUxHaWwvK2lkbHB5b3FrSjNTVlg1NExHU1Yzd0NKU0Ftb0JLR1djMHJ3OTBlYzhTa1pVS0JjWDV4T2hJbjhhTkUvN1hCRHIzd3JCRWVvdEV4M1dqMFR0Y1FNeXRMVUxVZEhVUVI0NGFKOGNKNVlwekFJMlMxaFRDNHVqNCtPejltSDJyUTg1UkNPYnE4YU8xZjNmcjc2ZG1iL2hxaTF0Q1ZScHNFMWdaMDJ1NElvaVFIbTAxVmhmNjkzYjNySktBTHZaQWZSdXhnWWVIbUVNOThjblh4bEkyTG1tUTdPTUw0NXFpWWxYS2l1WFdhKzdvMm1ObmxaNG9pc250dktTOEtCQURhZEJzRzZqNklvN3R2MlVhWk1DVC9MVVF5SjdLMVNmUk1LV1FPMlR3ckFGMzN1ZUlsSEM2WmRuUDY5dlRrSFR1NWZIL3hMdHlPMk92cnkzTkdDSFRRKzVvdmx6NDVaZzhKanBzemFCTUx5Y1pNYVdHQ21BV2RDYW1mak9MTm9qWjlNTnNlRUxrcmt0cTU1d25DY0FwRTg3SWtQeGxGWHhZWkQ2WXVMSGtzYU1MZG9ldlFnNmd2QTJlNzM1c01DakEzeHVvUnR3bUp5YlBCLzBTUkVDOUhvVG5FenE0djMxK3gzLzl0OXFDWkd6V1llbHhLUTRhWlo2cnBuZnhPWFIzb1VKTkRMSE9JZEJtZFl0NmtsRGU0MW5CRFlLakNwRjNKUVhRZU1rZlVYL3FacjFWUmpIbUd4RHRvSW1CclhiV0JXQ2tFSzBUWTFnTjRwRVdhbi9MOWc1Y3RmMk5odTZSRTRaNmY4VGZLNXJJQ0VUTXNSSjh3eFVzY0Rxa1VzSTVjSGZ0Vml2MXovQlozSWJwTk1uQUNUekJkc1lLV3RVRXlOWVI0YWFhb1BDdHFJeDk2RWpMMENkSENEaGNscGdTV0RMdURBaitpNDBESGpGZkN5VFAxYklZMjJTa1ZETW9PRUgyek1KUVRWSk93QzFlNGlYQW8zMmg3UWVvOE96V2MvY2JYREhiejExdlV3eWd1aHNsSmhTR2dvTkxLbitlazNIY0NaQ1hzSUF0VkU5d2hCV1JZL0J0cHA3N0srV2tVNTJ6SzhQSkt6Qms4NEVLVndSRVI0NVIySWtjS0tBRERzT01JYWFZSUxDTHhzWGk2TW1Namt0ZEZVWExrbkZBSHQ3dkRYL2t3di92ODhzV1hZRDNBcE93Q3FlbnBRbzFsenZ1ekMwM2owOVVDVFJBckVScmswdEJpR3dTMjF3VElLbGRvZERPZkZKUWc0UkxodTlxQXM4bE4rdWJtK3ZRc3BCT0pzU21WZGRkaStOWHp5ejlPVjFhUi9YZlZ5OTFkMnVaWEt0ZFc0TXJldDJ0VjAzcFFxUzVnNk00dGNOZ0dhK1cydlNRamhXN09CWGUwY01KYTI3VExYcmxOWko2Um40Qzl3a3E2dDgrMjJkN3Uvb3Z0N2YybllqSEdwclNIN3M3QURXSHdnT3QzWVFRMUs2M0VUZ1Y1ZWNFZGxBNm16blA1NkNwUE1QeklDNktrb1ptV1FiVHN1aVo2SG52SVI4MFZzZHcxRXFLbDNYaHBaUkxYc1JXdTR6UHJzRmlCeHlwKzF2ZmxYWHhyS1NpNjNwODA3RVYvc3J5S3c4T05wVzdkejUxald5OTJDR2lTdkErQW5sV3RDMGNqMW5qUWNZUTN4c1dhTVBwc0cvQjUwT05RYkRZN2hpSnEydEN2cklmN3RqSHREdDNiWlkyQWg3aXpUbFlxWGpKMU1TcXBNMDByczQ3NVRyeGJHVU5PUmFvanVsRVBnaDBxRzlyb1kvS0Jyb3liMjBkUTBqQlRqeGRjR1hFSW9wcUlYZEU0Y0IweVFnOTR1ZXhOQXZLNFVOakZJWTZwU0lRRkw4ZUNIN2E3RS9KWTJDWmFGTE54RUd3QW9qTXBxV2VJUWdpZHVMVzdOMXVtOE9ndjVGUGNqeW5VSzJ6N1ZHS3ZWZEdXWDF1OHRjNzE1WHZSS2J2M0tYcnZLdys4dGRjZDlSUE5TWjZqZTc3S1ZLRmI3bURTalJ4T3VoSG1XMjgwV1JvUmlKd1hRcDkvVHBJZk9FRzl2STM3YVJvdk1XVDBMTWUxcUZ4TjFhZEQ0MHBMaDFiYXNJTG03ekJoVVMzYW1BbDgzRkU5WDQxWkN5RVhPbXpMNkYyYVV2T2ZwbzQ2MHBRdWs2YUJmNE5yNHdMbC8xUklqdldrcG9mb2xWc0pCWmhNeXhrcEdLV3BVRm1hUnIyVENSY2k1ZTBScFBhaEdDTzEyL2tNUmxjT0k3NTI5TEdoSjhZOXRKMEE5MFVpZkNKYlBWLzRBd3NueXFYL0pCSlJsek1UcmtHUlRpWmlqT2xtbExicFBjeE5vNnVSaG4wZnpDeDJTdlNGbDFoMTljM2NXQ2l4a2JMOVYxdjdoRno3dzJiQ1hjdm1LSkY2cXViUG1iYUJkRTExeE54L0o5VDJEUDRIcFJPYm53SVNBQUE9IgogICAgfQogIH0KfQo=" + } + ] + }, + "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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json new file mode 100644 index 0000000..7c38280 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py new file mode 100644 index 0000000..41a876c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py @@ -0,0 +1,20 @@ +"""Run only inside existing admitted StateHub Pod AFTER verified candidate Ready. + +The fixed existing dispatcher loads its internal credential; root never reads +it. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an +advisory verdict emission or a substitute for separate evidence obligations. +Root records this bounded metadata receipt with verified PodUID/image/source. +This preparation only writes source; no request is made here. +""" +import datetime,json,urllib.request,urllib.error +from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file +id='infd-20261011-zlib-remediation-r1' +req=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) +opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) +try: + with opener.open(req,timeout=15) as response: + raw=response.read(1048577) + if len(raw)>1048576: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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json new file mode 100644 index 0000000..ee40b50 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json new file mode 100644 index 0000000..cf1d22b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json @@ -0,0 +1,147 @@ +{ + "owner": "informed-decision", + "decision": "changes_requested", + "scope": "same new T09 distinct native-release source review at frozen81ad; no native approval", + "files": [ + { + "repo": "informed-decision", + "path": "workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/workplans/ADHOC-2026-10-11.md", + "original_sha256": "b7c3dda21fcf19644a24b2c656662d20f030327f47b9cea5e95032a2cfcad3e8", + "staged_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d" + }, + { + "repo": "informed-decision", + "path": "docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py new file mode 100644 index 0000000..ddfe90a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py @@ -0,0 +1,68 @@ +"""Read-only exact Deployment and admission boundaries; no mutation authority.""" +import copy +import hashlib +import json + +BASE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +CANDIDATE = 'forgejo.coulomb.social/coulomb/informed-decision@sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23' + + +def dependency_projection(configmap, pvc): + if (configmap.get('kind') != 'ConfigMap' or configmap.get('immutable') is not True + or configmap['metadata']['namespace'] != 'informed-decision' + or configmap['metadata']['name'] != 'informed-decision-runtime-6c221878d051' + or set(configmap.get('data', {})) != {'runtime.json'} + or configmap.get('binaryData')): + raise ValueError('unexpected immutable runtime config identity') + if (pvc.get('kind') != 'PersistentVolumeClaim' + or pvc['metadata']['namespace'] != 'informed-decision' + or pvc['metadata']['name'] != 'informed-decision-data' + or pvc.get('status', {}).get('phase') != 'Bound' + or not pvc.get('spec', {}).get('volumeName')): + raise ValueError('unexpected bound PVC custody') + config = projection(configmap) + config.pop('data') + config['canonical_data_sha256'] = hashlib.sha256(json.dumps( + configmap['data'], sort_keys=True, separators=(',', ':')).encode()).hexdigest() + return {'configmap': config, 'pvc': projection(pvc), 'pvc_phase': 'Bound'} + + +def check_dependencies(configmap, pvc, sealed): + if dependency_projection(configmap, pvc) != sealed: + raise ValueError('runtime config or PVC identity/custody changed') + + +def projection(value): + value = copy.deepcopy(value) + value.pop('status', None) + for key in ('resourceVersion', 'generation', 'creationTimestamp', 'managedFields'): + value['metadata'].pop(key, None) + for key in ('kubectl.kubernetes.io/last-applied-configuration', 'deployment.kubernetes.io/revision'): + value['metadata'].get('annotations', {}).pop(key, None) + return value + + +def check_current(current, sealed): + if projection(current) != sealed: + raise ValueError('sealed live UID or configuration changed') + + +def check_admitted(admitted, sealed): + expected = copy.deepcopy(sealed) + containers = expected['spec']['template']['spec']['containers'] + if len(containers) != 1 or containers[0]['name'] != 'informed-decision' or containers[0]['image'] != BASE: + raise ValueError('unexpected baseline container identity') + containers[0]['image'] = CANDIDATE + if projection(admitted) != expected: + raise ValueError('admission changed configuration beyond the sole image pin') + + +def transport_result(exit_code, output): + import json + try: + value = json.loads(output) + except (ValueError, TypeError): + return {'all_checks_pass': False, 'reason': 'invalid transport result'} + if exit_code != 0 or not isinstance(value, dict) or value.get('all_checks_pass') is not True: + return {'all_checks_pass': False, 'reason': 'read-only preflight refused'} + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py new file mode 100644 index 0000000..0736145 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py @@ -0,0 +1,21 @@ +import copy,json,time +from datetime import datetime,timezone +from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest +pin='sha256:'+'b'*64 +req={'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':{}} +class Transport: + def request(self,*args,**kwargs): + now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() + 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)} + if self.purpose!='ABSENT':b['purpose']=self.purpose + 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)}} + return 200,d +checks=[] +for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): + t=Transport();t.purpose=purpose + c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) + o=c.check(req) + if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) + else:assert o.outcome=='invalid_decision' and o.decision_json is None + checks.append(str(purpose)) +print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False})) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py new file mode 100644 index 0000000..b897ef9 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py new file mode 100644 index 0000000..31cbd1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py @@ -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<=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 + for number in value[group].values()): + raise ValueError('count-only receipt values refused') + return value diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md new file mode 100644 index 0000000..aca7f5c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json new file mode 100644 index 0000000..269ae42 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json @@ -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-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json new file mode 100644 index 0000000..f1ed624 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json @@ -0,0 +1,9 @@ +{ + "remote_keyword_binding_refused_before_body": true, + "copy_payload_has_snapshot_identity": false, + "remote_payload_has_operation_intent": false, + "empty_detector_coverage_accepted_as_full_scan": true, + "native_commands": false, + "private_data": false, + "synthetic_source_probe": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py new file mode 100644 index 0000000..948b489 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py @@ -0,0 +1,24 @@ +from pathlib import Path +import importlib.util,sys,json,datetime,inspect +from unittest.mock import patch +import subprocess +E=Path(__file__).parent/'frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution';sys.path.insert(0,str(E)) +import actuator,authority_journal,native_program +result={} +try:inspect.signature(actuator.remote).bind('drill-backup','e'*40,{},operation_intent=None) +except TypeError:result['remote_keyword_binding_refused_before_body']=True +else:result['remote_keyword_binding_refused_before_body']=False +captured=[] +def fake(argv,body=None,timeout=90): + captured.append(json.loads(__import__('ast').literal_eval(body)));return subprocess.CompletedProcess([],0,'{"all_checks_pass":true}','') +with patch.object(native_program,'PROGRAM','__PAYLOAD__'),patch.object(actuator,'run',fake):actuator.remote('drill-copy','e'*40,{}) +result['copy_payload_has_snapshot_identity']='snapshot_identity' in captured[0] +result['remote_payload_has_operation_intent']='operation_intent' in captured[0] +now=datetime.datetime(2026,10,11,12,tzinfo=datetime.timezone.utc) +r={'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-11T11:59:00Z','db_metadata':{'Version':2,'UpdatedAt':'2026-10-11T10:00:00Z','NextUpdate':'2026-10-11T18:59:50Z'},'db_sha256':'a'*64,'full_report_sha256':'b'*64} +try:authority_journal.fresh_scan(r,{'Results':[{}]},now) +except ValueError:result['empty_detector_coverage_accepted_as_full_scan']=False +else:result['empty_detector_coverage_accepted_as_full_scan']=True +result.update(native_commands=False,private_data=False,synthetic_source_probe=True) +print(json.dumps(result,indent=2)) +assert result['remote_keyword_binding_refused_before_body'] and not result['copy_payload_has_snapshot_identity'] and not result['remote_payload_has_operation_intent'] and result['empty_detector_coverage_accepted_as_full_scan'] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json new file mode 100644 index 0000000..5e5b541 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json @@ -0,0 +1,9 @@ +{ + "all68_observed_hashes_verified": true, + "current_helper_tests_pass": 19, + "mocked_wiring_and_coverage_findings": 4, + "missing_fresh_scan_historical_corrected_in81": true, + "formal_decision": "changes_requested", + "native_actions": false, + "work_record_before_review": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md new file mode 100644 index 0000000..71f6794 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md @@ -0,0 +1,71 @@ +# Distinct T05 release initial Product source review + +```yaml +reviewer: informed-decision-owner (agent informed-decision, codex) +decision: changes_requested +work_item: INFD-WP-ADHOC-2026-10-11-T09 +scope: new zlib native release source preparation; no approval +requested_manifest_sha256: 1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2 +observed_frozen_manifest_sha256: 81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47 +published_proof_manifest_sha256: 6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9 +comment: >- + Completed new T09 source assessment precedes formal review. Mutable staging + changed during initial reads; stop approval at observed frozen81ad and retain + source findings as historical preparation evidence, not native failures. + A separate exact refined freeze requires final technical review. +``` + +The proposal is distinct from T04/R2 authority: new source memo ownversion1, +new human acceptance, new private drill/cutover directories/journal and explicit +Deployment-only non-pruning f558 release; image-only rollback763 preserves latest +data. Product intent requires preserved evidence and human binding, so source +prose and execution wiring must agree before preparation can be accepted. +No current or earlier founder acceptance authorizes this new trial. + +Initial observations were from requested67 first source reads: authority_journal +contained no fresh_scan while actuator imported it; remote accepted only three +positional arguments although main supplied operation_intent; copy payload lacked +snapshot_identity and verify payload lacked operation_intent. During inspection, +stage changed to81ad/68paths. Fresh_scan now exists and19 current synthetic tests +pass; missing-function observation is historical only. Frozen81ad bytes and all68 +hashes independently verify. The remaining wiring and coverage findings below +are independently reproduced against that frozen source. + +1. Main passes operation_intent keyword to remote for every nonlocal phase, but + remote signature remains (phase, revision, approved). Python signature binding + refuses before body; main would already have durable RUNNING intent. Correct + dispatcher signature and payload construction together, and test the actual + CLI/dispatch path with mocked transport rather than only embedded native code. +2. Copy dispatch does not forward recorded previous COMPLETE backup result as + snapshot_identity, which the native closed-snapshot checker requires. Verify + and rollback-verify dispatch do not forward matching recorded operation_intent, + which current-attempt false-omission reconciliation requires. Test those exact + relations through real wrapper construction and refuse absent/wrong intent. +3. Valid scan receipt plus report {Results:[{}]} passes fresh_scan, although no + detector or package inventory exists. Require actual immutablef558 report/ + input identity and complete expected38OS+6Python/44package inventory, including + fixedzlib1.3.2-r1, with explicit empty/truncated/mismatched coverage refusals. + +These are synthetic source observations only: no helper main/native phase was +run, no SSH/Docker/cluster command was dispatched and no journal or private +backup was created. The mocked wrapper probe intercepts transport before any +external call. It does not establish actual native failure or alter any historical +R2 outcome. Frozen source/probe receipt is value-free and contains no secret, DB +content or customer rows. + +The published scan's DB NextUpdate2026-10-11T18:59:50 precedes execute-by +2026-10-12T23:59:59. Current81ad protocol correctly permits root to refresh DB +and rescan the same immutable image as read-only verification, and requires +matching report hash, fresh age<=4hours and now- + Completed new T09 source assessment precedes formal review. Mutable staging + changed during initial reads; stop approval at observed frozen81ad and retain + source findings as historical preparation evidence, not native failures. + A separate exact refined freeze requires final technical review. +``` + +The proposal is distinct from T04/R2 authority: new source memo ownversion1, +new human acceptance, new private drill/cutover directories/journal and explicit +Deployment-only non-pruning f558 release; image-only rollback763 preserves latest +data. Product intent requires preserved evidence and human binding, so source +prose and execution wiring must agree before preparation can be accepted. +No current or earlier founder acceptance authorizes this new trial. + +Initial observations were from requested67 first source reads: authority_journal +contained no fresh_scan while actuator imported it; remote accepted only three +positional arguments although main supplied operation_intent; copy payload lacked +snapshot_identity and verify payload lacked operation_intent. During inspection, +stage changed to81ad/68paths. Fresh_scan now exists and19 current synthetic tests +pass; missing-function observation is historical only. Frozen81ad bytes and all68 +hashes independently verify. The remaining wiring and coverage findings below +are independently reproduced against that frozen source. + +1. Main passes operation_intent keyword to remote for every nonlocal phase, but + remote signature remains (phase, revision, approved). Python signature binding + refuses before body; main would already have durable RUNNING intent. Correct + dispatcher signature and payload construction together, and test the actual + CLI/dispatch path with mocked transport rather than only embedded native code. +2. Copy dispatch does not forward recorded previous COMPLETE backup result as + snapshot_identity, which the native closed-snapshot checker requires. Verify + and rollback-verify dispatch do not forward matching recorded operation_intent, + which current-attempt false-omission reconciliation requires. Test those exact + relations through real wrapper construction and refuse absent/wrong intent. +3. Valid scan receipt plus report {Results:[{}]} passes fresh_scan, although no + detector or package inventory exists. Require actual immutablef558 report/ + input identity and complete expected38OS+6Python/44package inventory, including + fixedzlib1.3.2-r1, with explicit empty/truncated/mismatched coverage refusals. + +These are synthetic source observations only: no helper main/native phase was +run, no SSH/Docker/cluster command was dispatched and no journal or private +backup was created. The mocked wrapper probe intercepts transport before any +external call. It does not establish actual native failure or alter any historical +R2 outcome. Frozen source/probe receipt is value-free and contains no secret, DB +content or customer rows. + +The published scan's DB NextUpdate2026-10-11T18:59:50 precedes execute-by +2026-10-12T23:59:59. Current81ad protocol correctly permits root to refresh DB +and rescan the same immutable image as read-only verification, and requires +matching report hash, fresh age<=4hours and now- + Same completed T09 source refinement record prepared before this formal + review. Initialc67 changes-requested20files and manifest remain exact + historical bytes. Original requested67 full snapshot is unavailable; + initial observations are disclosed, never reconstructed as source history. + No actual native trial/action/failure or human approval occurred. +``` + +All143 staged hashes and unchanged29 published evidence hashes verify. The +original wiring defects are corrected: remote signature accepts intent/snapshot +keywords, wrapper forwards them, copy checks recorded original snapshot before +and after transfer, and real mocked CLI tests prove durable intent before dispatch. +Fresh-scan gate binds actual registry config622, eleven diffIDs/source labels and +exact38OS+6Python/44PURL inventory including fixedzlibr1. Empty Results:[{}] +now refuses in the original independent Product counterexample. All25 source +tests pass, covering source/authority/expiry/replay/private copy/pre-admin/post +integrity/created-volume/recovery/default-false completion and whole CLI paths. +Gzip bundle decompression/hash/source equality verifies; actual body-limit test +passes. These are source/synthetic facts, not native operations. + +The new distinct protocol preserves fresh founder source1/new review own1 +authority, new protected snapshot/copy/drill/journal custody, schema5-before-Store +and exact isolated pre/admin/post counts. Image-only rollback763/c96 works without +candidate Ready/DB and keeps latest native records. Original R2 helper/journals +remain immutable, INFD-IN-0010 remains unpromoted. DBNextUpdateOct11 precedes +Oct12 execution deadline; protocol permits fresh same-image read-only scan and +requires valid DB/<=4hour full scan before release/verify, with new findings +refusing release/closure. Actual post-Ready canonical PDP outcomes must remain +separate from synthetic installed2allow/8refuse. + +Two concrete Product source corrections remain: + +1. Actual `decode_memo(register.memo)` succeeds, but actual + `decode_documents(register.documents, memo)` raises `invalid document`. + Thirteen document entries contain the same SHA f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e + twice, for sealed-live and identical rollback Deployment. Native decoder + requires unique command-local digests; deduplicate content by digest while + retaining both memo item labels if desired. Recompute payload/submission + hashes/bytes and test the exact actual packet's typed decode before release. + HTTP body-limit proof alone cannot establish packet acceptance. +2. The post-ready-native-outcomes command prints whole review and nested + disposition bodies. Actual Disposition includes freeform note/reasons. + Synthetic execution with mocked fixed dispatcher/opener exports sentinel + note, reasons and unknown review text, contradicting protocol's no-body/ + private-content promise. Use validated bounded typed structural allowlists + for review and disposition/actor metadata, exclude freeform/unknown keys, + and test sentinels plus malformed/oversize types against the actual outcome + contract. Keep fixed existing dispatcher credentials inside Pod, fixed + sourceversion1/NoRedirect/proxy-disabled GET and actual PDP gate unchanged. + +The probes perform no real HTTP request or credential read; synthetic credentials +and outcomes are isolated fixtures. The receipt retains only boolean leak +findings, never actual private content. No native phase was invoked. +Full143 source was independently frozen before review; maker will correct in +a separate immutable stage. No approval issued until exact corrected freeze. +Published CI11534/run4/source9b4/imagef558 proof remains bounded publication; +T05progress/WP0009active and distinct founder acceptance/installed proof remain +pending. Root's later final review attachment/memo hash rebinding needs its +bounded exact reference check before first human post. + +Root/Platform also identified a recovery authority dependency: current143 requires +fresh service-dependent outcomes readback for rollback even if failed candidate +makes that service unavailable. Mechanical rollback independence does not resolve +that authorization dependency. A proposed narrowly preauthenticated recovery +choice is a new explicit human-packet term, not authority from this review or +current143: only same763/c96 image rollback preserving latest DB after actual +release/candidate failure and service unavailability, <=30minutes plus existing +deadline, no401/403/revoked/mismatched fallback, no backup/release fallback. +Later-revocation uncertainty must be disclosed and bounded manual supervision +retained. Its source/tests and exact revised packet need independent review. diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md new file mode 100644 index 0000000..c144dfa --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md @@ -0,0 +1,360 @@ +--- +id: INFD-WP-ADHOC-2026-10-11 +type: workplan +title: "Application-owner catalogue facts review" +domain: infotech +repo: informed-decision +status: finished +owner: codex +topic_slug: netkingdom +created: "2026-10-11" +updated: "2026-10-11" +flavor: planning +state_hub_workstream_id: "4594d714-a6ec-5ab6-ad44-4227a27fc7be" +--- + +## Review exact one-application catalogue facts + +```task +id: INFD-WP-ADHOC-2026-10-11-T01 +status: done +priority: medium +state_hub_task_id: "cfe1ec8c-c635-5f23-847c-bf8296965305" +``` + +Completed informed-decision application-owner source review under INTENT.md +Purpose, What informed-decision Owns/Does Not Own, Design Principles 9-10, +and Layer Placement. Read actual owner OIDC, requester and policy-request +code, governing Staff/PEP-shaped declaration, User Engine model, and existing +value-free native registration/Ingress/preflight receipts. Exact canonical +facts agree. Browser client is distinct from create-only requester. + +Review entry: docs/reviews/2026-10-11-one-app-catalogue-facts-review.md. +Canonical facts SHA-256: +`ae6fde5f2c879e75fabb53e132261899dae0f4d864e18dd425bc272be713426b`. +Reviewed refined nine-file executor manifest SHA-256: +`0ff545d26a0fd72f06040fe377de3efdcc3bd62cdcb6f653247c8ba72f3f34a7`. + +This task completes the application-facts source review only. It grants no +maintenance exception, native dry-run/apply/recovery, IAM permission, image +release or human disposition. Existing User Engine native acceptance work +remains with USER-WP-0026-T03 and USER-WP-0028-T02; no new residual work is +created by this bounded review. No tests were needed for this evidence-only +review; no native, credential or login action occurred. + +## Independently review purpose overlay release preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T02 +status: done +priority: medium +``` + +Completed same-role informed-decision-owner technical review of frozen36-path +purpose release manifest SHA-256 +`7c6738b39ea8e54e61c8ed625e94ad0b2755e672e1576efcdf84a1d665ac3300`. +All36 staged file hashes and exact source PolicyClient9d7 hash were verified. +Source candidates and captured candidate Deployment differ only in the image. +Actual raw base/candidate scans contain the same one fixable MEDIUM zlib finding; +T05 keeps its2026-10-18 follow-through. Actual published-image receipts and +sealed native read-only preflight support preparation, not native deployment. + +Independent owner negatives:50 passed in4.21s, covering10 advisory/malformed +binding forms across register, replay, publish, annotate and revise. Each +refusal preserves every domain table, records a truthful invalid-decision +observation and leaves the same idempotency key reusable after restoring a +canonical enforcement response. These are synthetic source tests only. +Test: tests/test_purpose_owner_mutation_negatives.py. +Receipt: docs/evidence/2026-10-11-purpose-image-release/product-owner-review-validation.json. +Review: docs/reviews/2026-10-11-purpose-release-product-owner-review.md. + +This bounded review grants no native backup/export/restore, image rollout, +credentials, login, human disposition or vulnerability acceptance. Existing +INFD-WP-0009-T04/T05 retain release/remediation obligations; no separate residual +is created or claimed completed. Catalogue ACK/T01 remains unchanged. + +## Confirm amended purpose release custody and preflight gates + +```task +id: INFD-WP-ADHOC-2026-10-11-T03 +status: done +priority: medium +``` + +Same informed-decision-owner reviewed amended78-path release manifest SHA-256 +`b1e3e66bc4023dc80c6ea59564c3557c7653fb3c307f46a049997b76198a9033`. +All78 file hashes verified, original36 archive retained, source PolicyClient9d7 +and both image-only source candidates unchanged. Prior50 source lifecycle +mutation/idempotency negatives remain applicable and were not repeated. + +Confirmed stdlib read-only schema5/integrity/count gate before ANY native or +restored Store/admin open, explicit local/remote optimized-interpreter refusal, +sealed actual ConfigMap/PVC identity/data/custody and frozen offline clone count +equality distinguished from legitimate concurrent live commits. Revised20-doc +184912-byte packet and01:39 read-only dry-run receipts remain preparation. +Native schema gate, backup/export/restore/release and founder disposition remain +unperformed; T04/T05 obligations and temporary vulnerability review persist. + +Confirmation: docs/reviews/2026-10-11-purpose-release-amended-product-owner-review.md. +Prior T01 catalogue ACK including hub identifiers and T02 initial36 review/test/ +receipt remain unchanged. No new residual or authority is created by this review. + +## Reconcile Staff evidence source declaration and current guarantees + +```task +id: INFD-WP-ADHOC-2026-10-11-T04 +status: done +priority: medium +``` + +Reviewed accepted bounded GH-DEC-2026-025 handoff against actual source +class definitions, transactional recording, heartbeat/reconciliation scheduling, +existing component-test assertions and native count/receipt evidence. Reconciled +stale outbox/AUDIT-WP-0009 blockers without promoting owed guarantees or reopening +finished INFD-WP-0005/0007. INFD-IN-0007 retains doctrine response and pending +NET-IN-0004 standard voice. INFD-IN-0009 is the one live, unpromoted residual +source intake for remaining class-specific declaration/verification gaps, +origin INFD-WP-0007. No residual implementation or native action occurred. + +Source evidence reconciliation: +docs/evidence/2026-10-11-staff-evidence-source-reconciliation.md. +Formal source review: +docs/reviews/2026-10-11-staff-evidence-source-owner-review.md. +Existing Staff/PEP-shaped classification, three load-bearing class classifications, +compromised-source and commitment/content availability limits remain unchanged. + +## Independently review supervised purpose actuator product boundaries + +```task +id: INFD-WP-ADHOC-2026-10-11-T05 +status: done +priority: medium +``` + +Same informed-decision-owner reviewed exact23-path helper manifest +`f2fad6c251fbb4420e07c1329802f521b513bbf66e51f64c5d673ef04f16284c`, +all staged hashes and embedded source bundle/plan. Product evidence/schema5, +private snapshot custody, confined offline UID0 initialization followed by +UID10001 pre/post-admin verification, independent failed-candidate rollback +and all-phase start deadline are technically agreed as source preparation. + +No purpose-policy or candidate image change. Retained helper16 synthetic tests +and platform5 independent recovery negatives are mechanism proof; prior50 +product policy negatives remain applicable. No new test run was needed for this +unchanged-source review. Native-provider acceptance remains distinct from the +installed10 synthetic purpose forms; T04 is not complete. Before first human +post, amend exact20-document packet to hash-bind helper/plan, four render inputs, +initializer/recovery/deadline refinements and preserved full scan provenance. +Exact combined packet acknowledgement remains a separate review gate. + +Review: docs/reviews/2026-10-11-purpose-actuator-product-owner-review.md. +No native reads/backups/export/restore/release, credentials, human disposition, +founder approval or phase authority was exercised by this review. + +## Prepare separately gated provider-derived denial mechanism probe + +```task +id: INFD-WP-ADHOC-2026-10-11-T06 +status: done +priority: medium +``` + +Prepared source-only readonly lifecycle.search provider-derived mechanism probe +with truthful informed-decision/review SERVICE and no human/StateHub attributes. +Actual lifecyclev2 permits only StateHub workload or admitted AAL2 humans, so a +canonical real DENY is required; no claims are invented to obtain ALLOW. +One actual provider response will remain in Pod memory; ten transformed +noncanonical purpose copies test installed consumer refusal without further +provider calls, DB/admin or act effects. This is a denial/binding mechanism +proof candidate, not actual authorized lifecycle or full T04 acceptance. + +Source: docs/evidence/2026-10-11-purpose-provider-probe/. +Ten synthetic source tests pass; no actual provider, credential, runtime config, +DB, native data or live action was accessed. Posted frozen112 packet/helper +remain unchanged. Exact separate founder go for this newly prepared probe and +its target must precede any execution; current memo has no acceptance and this +new helper is not hash-bound in that submitted packet. T04 remains progress. + +## Review exact existing-snapshot rescue version2 preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T07 +status: done +priority: medium +``` + +Reviewed exact66-path rescue manifest0867e27a6754dddff3eedbb333ab4ca4faa98ee31d383ebe940b8e054c6cabf7 +under the same informed-decision-owner role. Actual original backupCOMPLETE/copy +UNCERTAIN are retained; new rescue journal/phase and sourceversion2/newreviewown1 +require fresh founder acceptance. Immutable reads are bounded to proven frozen +closed snapshots; live/offline writable-clone reads remain WAL-aware/explicitclose. +Independent existing26 mocked tests plus41 subtests pass, and10 new product scope +guards pass (including eight refusal mutations and a frozen initial packet check). +No native command, DB open, credentials or rescue operation occurred. + +Initial review decision changes_requested: proposal.json misleadingly names old +f2fad helper manifest as execution_helper_manifest_sha256 after helper bytes changed; +label it original/historical and refreeze all dependent packet hashes. Correct +current bundle/plan digests already exist. The normalized test fixture is not an +owner edit or approval. Initial review/failure must remain after correction; +exact amended confirmation is still required before newhuman submission/execution. + +Review: docs/reviews/2026-10-11-purpose-rescue-product-owner-review.md. +Evidence/checks: docs/evidence/2026-10-11-purpose-rescue-product-review/. +T04 remains progress; original version1 approval is not newversion2 authority. + +**Amended source confirmation, same T07 trial:** exact134-path manifest +`d05d6e3b15df9acf1d7aef0ba2ec82a5a00d979ab1f324e981025cffe2cc753d` +corrects only the historical helper provenance label and dependent packet hashes; +original66 source and initial changes-requested review remain retained. Current +helper code/bundle49c9/plan9ce5 are unchanged. Strict typed sourceversion2/CAS1 +and20documents validate:173469packetbytes/240451revisionbytes. Eight scope +mutations and three packet mutations independently refuse. Final technical +source acknowledgement approved; no new human acceptance or native rescue. +Confirmation: docs/reviews/2026-10-11-purpose-rescue-product-owner-final-ack.md. + + +**Actual-outcome assessment preparation, same completed T07 trial:** independently +verified original receipt-byte hashes and source consumer path after approved +source c96b0c6 release. Offline schema5/admin/post counts match; fresh cutover +backup/private copy matches live post-release counts16/56/0, delivered336, +confirmed43. Independent image/module/config/PVC/controlled Pod and UID/GID10001 +checks pass. Actual post-rollout authenticated provider-backed outcomes readback +is separate from installed ten synthetic purpose forms (2allow/8refuse). +Completed source-only assessment supports T04 done, T05 todo and WP0009 active. +Original failed copy and verifier UNCERTAIN remain preserved, with no replay or +helper amendment. Created unpromoted INFD-IN-0010 for future verifier omission +handling correction; no implementation, native action or authority grant. +This work-record preparation precedes the formal actual-outcome review entry. +Review: docs/reviews/2026-10-11-purpose-native-outcome-product-owner-acceptance.md. +Evidence: docs/evidence/2026-10-11-purpose-native-acceptance/. + + +## Independently review bounded zlib-only T05 source candidate + +```task +id: INFD-WP-ADHOC-2026-10-11-T08 +status: done +priority: medium +``` + +Completed informed-decision Product source review of exact27-path candidate +manifest8d345bb2bde3efce4d0cc99dfc2f883a64f79c42d2cd4abb288229a995e9ad66. +All staged/evidence hashes verify. Independently reread local saved base/candidate +image archives, effective runtime config, nine base layer prefix, two final file +changes and both full scan/SBOM artifacts. Only zlib1.3.2-r0 to r1 differs; +44 packages/base1MED to candidate0 at retained same scanner database. +Signed APK/index named key matches unchanged base trust metadata; enforced +apk verify against existing keys retained, no allow-untrusted or truststore override. +Four existing source tests pass (eight refusal mutations), plus five independent +appfile/trustkeys/world/network/provider metadata mutations refuse. +Purpose/backend checks remain local and synthetic, not actual PDP or data proof. +Technical source preparation agreement only: local image78bfdcc is unpublished, +T05 remains progress/WP0009 active; CI exact published provenance/scan/SBOM and +new native founder approval/installed proof are still required. Current763/native +DB/config/PVC/identity/approved R2 helper and journal remain unchanged; INFD-IN-0010 +is unpromoted/unimplemented. No native actions, credentials or owner source writes. +This completed work record is prepared before the formal review entry. +Review: docs/reviews/2026-10-11-zlib-candidate-product-owner-review.md. +Evidence: docs/evidence/2026-10-11-zlib-candidate-product-review/. + + +**Exact amended confirmation, same completed T08 preparation trial:** verified +final58-path candidate manifest64509029b3de6d33e3675587663ccdae027d9ea18aba83750892480766dd03b8 +and immutable archived initial27 hashes. Only artifact-audit source/receipts/docs +change; recipe/workflow/four build inputs/image78bfdcc/config625d/runtime/scan/DB +remain identical. New3 artifact tests pass (optimized malformed input refused +before reads; matching directories pass; directory mode/UID/GID drift refuse). +Independent actual saved-image reread proves all directory metadata unchanged, +with the same two final file changes. Initial Product manifest5f334/ack/validation +are retained as historical source agreement, not new scored native success. +This work-record refinement precedes final formal acknowledgment. No publication, +native operation, credentials or owner edits. T05progress/WP0009active remains. +Confirmation: docs/reviews/2026-10-11-zlib-candidate-product-owner-final-ack.md. + + +**Exact66 whiteout follow-through, same completed T08 preparation:** independently +verified manifest3e41ab391cda26f09a556fecef8a17c2759ef2899e43eb136b25ef4b3fde23a0 +and all66 hashes. New source correction preserves leading whiteout dots/root +parent handling, but three Product synthetic probes find same-layer new files +incorrectly removed by subsequent nested/root opaque or explicit descendant +whiteouts. OCI requires whiteouts affect only lower layers and preserve same-layer +additions regardless archive order. Completed source assessment changes_requested +before formal entry: apply whiteouts only previous layers then merge current +layer additions, with both archive orders covered. No actual candidate failure +or image/sourcecontext/scan change is inferred. Initial5f334 and intermediate +8bc6 reviews/evidence remain historical, not rewritten; same T08/no new trial. +No owner edits, native operation, publication or credentials. +Review: docs/reviews/2026-10-11-zlib-candidate-product-whiteout-review.md. + + +**Exact74 final acknowledgment, same completed T08:** all74 candidate hashes +verify for manifest724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec. +Checker now collects additions separately, applies whiteouts only lower-layer +state and merges additions afterward. Five audit tests pass, including12 whiteout +semantic cases/both marker orders. All three original Product counterexamples +now preserve same-layer files. Independent actual saved-image re-audit proves +313directories unchanged and same two changed files/nine base prefix/runtime/ +SBOM/scan. Image78/contextc554/recipe/workflow/package/trust/DB unchanged. +Initial5f334, intermediate8bc6 and changes-requested85ffd source reviews/evidence +remain exact historical bytes, not revised prior success or a new scored trial. +Completed refinement record precedes final formal exact74 technical agreement. +No owner edits, native operation, publication or credentials; T05progress and +WP0009active remain. Distinct published/installed proof and founder approval +remain pending. +Final review: docs/reviews/2026-10-11-zlib-candidate-product-owner-complete-ack.md. + + +## Review distinct T05 native release proposal source preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T09 +status: done +priority: medium +``` + +Completed source-only Product review preparation for NEW distinct zlib release +trial infd-zlib-20261011-r1. Initial requested67 manifest1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2 +changed during source reads to68-path manifest81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47. +Stopped approval and froze81ad source; all68 staged hashes independently verify. +Current19 synthetic helper tests pass, but independent mocked source probes +reproduce remote keyword signature failure, missing frozen snapshot/operation +intent forwarding and empty detector/package coverage accepted as full scan. +Initial missing fresh_scan observation was corrected by81ad; not a current +missing-function finding. Readbacks are source-only, no actual phase failure. +Scan NextUpdateOct11 precedes release deadlineOct12: fresh same-image rescan is +explicitly permitted/required but coverage gate still needs correction. +Completed T09 record precedes formal changes-requested entry. Maker will refreeze +a separate corrected source; exact review still required, no native approval. +T05progress/WP0009active; originalT04/R2 journals/helpers and unpromotedIN10 +remain unchanged. No publication/native command, owner edit, credentials or +private DB/customer data access. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md. +Evidence: docs/evidence/2026-10-11-zlib-release-product-initial-review/. + + +**Immutable143 refinement assessment, same completed T09:** all143 refined +hashes verify for manifestf170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29 +and unchanged published29/6ba2 proof. All25 source tests pass; independent original +remote keyword/intent and empty-coverage counterexamples are corrected. Gzip +bundle losslessly binds exact source. Two remaining Product findings prevent +acknowledgment: actual typed document decoder rejects duplicate SHA for sealed +live and identical rollback JSON; post-Ready command exports freeform note/reasons +and unknown review body in synthetic sentinel fixture. Require unique command +digests and exact typed packet check; require closed bounded structural receipt +allowlist/sentinel tests with actual canonical provider path unchanged. +Initialc67 exact20files/manifest and historical observations remain preserved; +original67 full source unavailable is explicitly disclosed, never invented. +No native phase failure/provider request/credentials/owner write. This completed +source-refinement record precedes formal143 changes-requested entry. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md. +T05progress/WP0009active; final corrected freeze and founder approval pending. + +**Recovery authority dependency retained for next proposal:** current143 demands +fresh service-dependent founder readback before rollback as well as release. +Candidate/service failure can prevent that readback even though mechanical +rollback itself is independent of candidate readiness/DB. Root/Platform identified +this further proposal gap. Any newly proposed preauthenticated limited recovery +authority must be explicit in a new human packet, bounded to same763/c96/image-only +latestDB retention/time/deadline, exclude401/403/revoked/mismatch fallbacks and +disclose later-revocation uncertainty; current143 grants none. diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/archive-map.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/archive-map.json new file mode 100644 index 0000000..f209e91 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/archive-map.json @@ -0,0 +1,812 @@ +[ + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/original-manifest.json", + "original_sha256": "ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-81adb9e1/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/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" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/workplans/ADHOC-2026-10-11.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product143/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/check_installed.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/change_guard.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/initial-f170b34d/owner-snapshot/informed-decision/docs/evidence/2026-10-11-zlib-image-release/memo.json" + }, + { + "repo": "informed-decision", + "original_path": "workplans/ADHOC-2026-10-11.md", + "original_sha256": "896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03" + }, + { + "repo": "informed-decision", + "original_path": "docs/reviews/2026-10-11-zlib-release-product-owner-native-contract-review.md", + "original_sha256": "53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/frozen481-original-manifest.json", + "original_sha256": "3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/original-manifest.json" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/frozen481-post-ready-native-outcomes-command.py", + "original_sha256": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/precontract-3f1ce7ed/before-changed/post-ready-native-outcomes-command.py" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/probe_native_shape.py", + "original_sha256": "7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/native-contract-counterexamples.json", + "original_sha256": "5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/validation.json", + "original_sha256": "dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660", + "retained_path": "docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660" + } +] diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240 b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240 new file mode 100644 index 0000000..be5834d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240 @@ -0,0 +1,81 @@ +# Exact481 native outcomes contract Product finding + +```yaml +reviewer: informed-decision-owner (agent informed-decision, codex) +decision: changes_requested +work_item: INFD-WP-ADHOC-2026-10-11-T09 +scope: exact481 distinct T05 release source preparation +manifest_sha256: 3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec +comment: >- + Same completed T09, with source-refinement record prepared before formal + review. Full ad63564files/manifest and earlier findings preserved exact. + Original67 full snapshot remains unavailable/disclosed. No native outcome, + founder acceptance, scored new trial or current recovery grant claimed. +``` + +All481 hashes independently verify. All36 synthetic/source tests pass. Exact +typed native memo/document decoder accepts12unique content digests under13 +packet labels; defaultJSON register body204591bytes remains below262144byte +limit. Gzip bundle losslessly matches every source digest/size. Original wiring, +snapshot/operation intent forwarding, coverage, typed duplicate and freeform +receipt-body findings are corrected. + +The new proposed outage term is explicit in question/terms/highlight/protocol, +not inherited from T04 or source acknowledgment. It permits only manually +supervised same763/c96 image-only recovery preserving latest DB after actual +release/failed candidate/service outage, <=30minutes AND execution deadline, +using exact pre-release confirmed acceptance cache and fresh root outage witness. +No401/403/explicit revocation/current conflict/mismatch/healthy service or other +phase fallback. Current later revocation cannot be checked during outage and is +expressly disclosed; cached acceptance is historical, not fresh or autonomous +authority. Recovery verification requires this journal's COMPLETE rollback and +hash-linked original outage plus recovered763/c96/Ready1. Native code rechecks +window immediately before patch; controlled Pod/ephemeral drift refuses before +effect. Item19 remains proposed until a new exact human decision. No source +review approves this privileged exception. + +The remaining blocker is actual provider response compatibility, not privacy: +`safe_outcome_metadata` requires top-level memo_id. Actual lifecycle_http.py101 +returns LifecycleService.outcomes directly; lifecycle_review.py123 builds only +review/dispositions. There is no native body memo_id. The earlier root normalized +receipt's memo_id was locally injected. Current privacy fixtures reuse synthetic +authority accepted() body containing that extra field, so they do not prove real +post-Ready metadata acceptance. Fixed canonical request/context should correlate +source MEMO_ID, then inject it into bounded output; if native body optionally +includes memo_id, reject mismatch rather than requiring an invented field. + +Other real contract shapes are also rejected: lifecycle_review.py127–132 LEFT +JOIN yields null submission_state for non-accept comments, and store.py428/449/465 +uses prepared/in_flight/confirmed/unresolved. ActorKind includes system in +disposition.py42–46. The bounded serializer should support legitimate typed +metadata while preserving authority's separate ready/confirmed founder gate, +without turning comments/unconfirmed states into acceptance. Align review +intake states with actual native contract where needed. Test the actual native +body without memo_id, confirmed accept plus comment/null, prepared/in_flight +and system metadata, preserving freeform/unknown sentinel exclusion. + +Five isolated source counterexamples against frozen481 helper reject these +legitimate shapes. No HTTP request, real credential read, database open or +cluster command occurred. Frozen helper/manifest/source-probe/boolean receipt +are retained under docs/evidence/2026-10-11-zlib-release-product-contract-review/. + +Published/source/scan proof remains unchanged. Fresh same-image full scan gate +binds exact artifact/config/11diffIDs/38OS+6Python44PURLs, now before DBNextUpdate +and <=4hour age; Oct11 DB is not presumed valid through Oct12 execution window. +New findings refuse release/closure. Actual post-Ready canonical PDP operation +remains mandatory and distinct from installed synthetic2allow/8refuse. Because +current helper rejects that actual response shape, no final acknowledgment is +issued. T05progress/WP0009active and new human acceptance/installed proof remain +pending; old approved R2 helpers/journals and unpromotedIN10 are unchanged. +The corrected immutable packet and later final review/memo reference rebinding +need bounded exact source confirmation before first human post. + +Root selected the narrower correction: retain only fixed authenticated canonical +GET/source1 HTTP200 and captured timestamp, shape-check native review=None/dict +and dispositions=list of dicts, emit only has_review/disposition_count. Source +memo correlation derives from the fixed request, not a claimed body memo_id; +optional body ID must match. Omit all review/disposition states/actors/bodies, so +legitimate native comment/null/prepared/in_flight/system rows are not mistaken +for approval or rejected by invented enums. Founder consent remains exclusively +in the separate authority relation. New source and actual native-shape/sentinel +fixtures must independently verify this choice before exact final acknowledgment. diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4 b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4 new file mode 100644 index 0000000..fecd586 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4 @@ -0,0 +1,27 @@ +{ + "synthetic_source_only": true, + "native_request": false, + "real_credentials": false, + "current481_rejects_actual_native_shapes": [ + { + "native_contract_case": "actual_native_no_memo_id", + "metadata_accepted": false + }, + { + "native_contract_case": "comment_null", + "metadata_accepted": false + }, + { + "native_contract_case": "prepared", + "metadata_accepted": false + }, + { + "native_contract_case": "in_flight", + "metadata_accepted": false + }, + { + "native_contract_case": "system_actor", + "metadata_accepted": false + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3 b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3 new file mode 100644 index 0000000..5821a2c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3 @@ -0,0 +1,17 @@ +from pathlib import Path +import runpy,json +P=Path(__file__).parent/'frozen481-post-ready-native-outcomes-command.py';ns=runpy.run_path(str(P)) +u='11111111-1111-4111-8111-111111111111';base={'review':{'memo_id':'review-'+u,'intake_state':'ready','stale':False},'dispositions':[{'disposition':{'id':'disp-'+u,'memo_id':'review-'+u,'memo_version':1,'verb':'accept','actor':{'kind':'person','sub':'uid=platform-root,ou=people,dc=netkingdom,dc=local'},'at':'2026-10-11T10:00:00Z','approval_id':u,'note':'SYNTHETIC_PRIVATE_SENTINEL','reasons':['SYNTHETIC_PRIVATE_SENTINEL']},'submission_state':'confirmed','approved_at':'2026-10-11T10:00:01Z'}]} +results=[] +for kind in ['actual_native_no_memo_id','comment_null','prepared','in_flight','system_actor']: + d=json.loads(json.dumps(base)) + if kind!='actual_native_no_memo_id':d['memo_id']=ns['MEMO_ID'] + if kind=='comment_null':d['dispositions'][0]['submission_state']=None;d['dispositions'][0]['disposition'].update(verb='comment',approval_id=None) + if kind in ['prepared','in_flight']:d['dispositions'][0]['submission_state']=kind + if kind=='system_actor':d['dispositions'][0]['disposition']['actor']['kind']='system' + try:ns['safe_outcome_metadata'](d) + except ValueError:accepted=False + else:accepted=True + results.append({'native_contract_case':kind,'metadata_accepted':accepted}) +assert all(not x['metadata_accepted'] for x in results) +print(json.dumps({'synthetic_source_only':True,'native_request':False,'real_credentials':False,'current481_rejects_actual_native_shapes':results},indent=2)) diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03 b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03 new file mode 100644 index 0000000..f40bb56 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03 @@ -0,0 +1,387 @@ +--- +id: INFD-WP-ADHOC-2026-10-11 +type: workplan +title: "Application-owner catalogue facts review" +domain: infotech +repo: informed-decision +status: finished +owner: codex +topic_slug: netkingdom +created: "2026-10-11" +updated: "2026-10-11" +flavor: planning +state_hub_workstream_id: "4594d714-a6ec-5ab6-ad44-4227a27fc7be" +--- + +## Review exact one-application catalogue facts + +```task +id: INFD-WP-ADHOC-2026-10-11-T01 +status: done +priority: medium +state_hub_task_id: "cfe1ec8c-c635-5f23-847c-bf8296965305" +``` + +Completed informed-decision application-owner source review under INTENT.md +Purpose, What informed-decision Owns/Does Not Own, Design Principles 9-10, +and Layer Placement. Read actual owner OIDC, requester and policy-request +code, governing Staff/PEP-shaped declaration, User Engine model, and existing +value-free native registration/Ingress/preflight receipts. Exact canonical +facts agree. Browser client is distinct from create-only requester. + +Review entry: docs/reviews/2026-10-11-one-app-catalogue-facts-review.md. +Canonical facts SHA-256: +`ae6fde5f2c879e75fabb53e132261899dae0f4d864e18dd425bc272be713426b`. +Reviewed refined nine-file executor manifest SHA-256: +`0ff545d26a0fd72f06040fe377de3efdcc3bd62cdcb6f653247c8ba72f3f34a7`. + +This task completes the application-facts source review only. It grants no +maintenance exception, native dry-run/apply/recovery, IAM permission, image +release or human disposition. Existing User Engine native acceptance work +remains with USER-WP-0026-T03 and USER-WP-0028-T02; no new residual work is +created by this bounded review. No tests were needed for this evidence-only +review; no native, credential or login action occurred. + +## Independently review purpose overlay release preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T02 +status: done +priority: medium +``` + +Completed same-role informed-decision-owner technical review of frozen36-path +purpose release manifest SHA-256 +`7c6738b39ea8e54e61c8ed625e94ad0b2755e672e1576efcdf84a1d665ac3300`. +All36 staged file hashes and exact source PolicyClient9d7 hash were verified. +Source candidates and captured candidate Deployment differ only in the image. +Actual raw base/candidate scans contain the same one fixable MEDIUM zlib finding; +T05 keeps its2026-10-18 follow-through. Actual published-image receipts and +sealed native read-only preflight support preparation, not native deployment. + +Independent owner negatives:50 passed in4.21s, covering10 advisory/malformed +binding forms across register, replay, publish, annotate and revise. Each +refusal preserves every domain table, records a truthful invalid-decision +observation and leaves the same idempotency key reusable after restoring a +canonical enforcement response. These are synthetic source tests only. +Test: tests/test_purpose_owner_mutation_negatives.py. +Receipt: docs/evidence/2026-10-11-purpose-image-release/product-owner-review-validation.json. +Review: docs/reviews/2026-10-11-purpose-release-product-owner-review.md. + +This bounded review grants no native backup/export/restore, image rollout, +credentials, login, human disposition or vulnerability acceptance. Existing +INFD-WP-0009-T04/T05 retain release/remediation obligations; no separate residual +is created or claimed completed. Catalogue ACK/T01 remains unchanged. + +## Confirm amended purpose release custody and preflight gates + +```task +id: INFD-WP-ADHOC-2026-10-11-T03 +status: done +priority: medium +``` + +Same informed-decision-owner reviewed amended78-path release manifest SHA-256 +`b1e3e66bc4023dc80c6ea59564c3557c7653fb3c307f46a049997b76198a9033`. +All78 file hashes verified, original36 archive retained, source PolicyClient9d7 +and both image-only source candidates unchanged. Prior50 source lifecycle +mutation/idempotency negatives remain applicable and were not repeated. + +Confirmed stdlib read-only schema5/integrity/count gate before ANY native or +restored Store/admin open, explicit local/remote optimized-interpreter refusal, +sealed actual ConfigMap/PVC identity/data/custody and frozen offline clone count +equality distinguished from legitimate concurrent live commits. Revised20-doc +184912-byte packet and01:39 read-only dry-run receipts remain preparation. +Native schema gate, backup/export/restore/release and founder disposition remain +unperformed; T04/T05 obligations and temporary vulnerability review persist. + +Confirmation: docs/reviews/2026-10-11-purpose-release-amended-product-owner-review.md. +Prior T01 catalogue ACK including hub identifiers and T02 initial36 review/test/ +receipt remain unchanged. No new residual or authority is created by this review. + +## Reconcile Staff evidence source declaration and current guarantees + +```task +id: INFD-WP-ADHOC-2026-10-11-T04 +status: done +priority: medium +``` + +Reviewed accepted bounded GH-DEC-2026-025 handoff against actual source +class definitions, transactional recording, heartbeat/reconciliation scheduling, +existing component-test assertions and native count/receipt evidence. Reconciled +stale outbox/AUDIT-WP-0009 blockers without promoting owed guarantees or reopening +finished INFD-WP-0005/0007. INFD-IN-0007 retains doctrine response and pending +NET-IN-0004 standard voice. INFD-IN-0009 is the one live, unpromoted residual +source intake for remaining class-specific declaration/verification gaps, +origin INFD-WP-0007. No residual implementation or native action occurred. + +Source evidence reconciliation: +docs/evidence/2026-10-11-staff-evidence-source-reconciliation.md. +Formal source review: +docs/reviews/2026-10-11-staff-evidence-source-owner-review.md. +Existing Staff/PEP-shaped classification, three load-bearing class classifications, +compromised-source and commitment/content availability limits remain unchanged. + +## Independently review supervised purpose actuator product boundaries + +```task +id: INFD-WP-ADHOC-2026-10-11-T05 +status: done +priority: medium +``` + +Same informed-decision-owner reviewed exact23-path helper manifest +`f2fad6c251fbb4420e07c1329802f521b513bbf66e51f64c5d673ef04f16284c`, +all staged hashes and embedded source bundle/plan. Product evidence/schema5, +private snapshot custody, confined offline UID0 initialization followed by +UID10001 pre/post-admin verification, independent failed-candidate rollback +and all-phase start deadline are technically agreed as source preparation. + +No purpose-policy or candidate image change. Retained helper16 synthetic tests +and platform5 independent recovery negatives are mechanism proof; prior50 +product policy negatives remain applicable. No new test run was needed for this +unchanged-source review. Native-provider acceptance remains distinct from the +installed10 synthetic purpose forms; T04 is not complete. Before first human +post, amend exact20-document packet to hash-bind helper/plan, four render inputs, +initializer/recovery/deadline refinements and preserved full scan provenance. +Exact combined packet acknowledgement remains a separate review gate. + +Review: docs/reviews/2026-10-11-purpose-actuator-product-owner-review.md. +No native reads/backups/export/restore/release, credentials, human disposition, +founder approval or phase authority was exercised by this review. + +## Prepare separately gated provider-derived denial mechanism probe + +```task +id: INFD-WP-ADHOC-2026-10-11-T06 +status: done +priority: medium +``` + +Prepared source-only readonly lifecycle.search provider-derived mechanism probe +with truthful informed-decision/review SERVICE and no human/StateHub attributes. +Actual lifecyclev2 permits only StateHub workload or admitted AAL2 humans, so a +canonical real DENY is required; no claims are invented to obtain ALLOW. +One actual provider response will remain in Pod memory; ten transformed +noncanonical purpose copies test installed consumer refusal without further +provider calls, DB/admin or act effects. This is a denial/binding mechanism +proof candidate, not actual authorized lifecycle or full T04 acceptance. + +Source: docs/evidence/2026-10-11-purpose-provider-probe/. +Ten synthetic source tests pass; no actual provider, credential, runtime config, +DB, native data or live action was accessed. Posted frozen112 packet/helper +remain unchanged. Exact separate founder go for this newly prepared probe and +its target must precede any execution; current memo has no acceptance and this +new helper is not hash-bound in that submitted packet. T04 remains progress. + +## Review exact existing-snapshot rescue version2 preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T07 +status: done +priority: medium +``` + +Reviewed exact66-path rescue manifest0867e27a6754dddff3eedbb333ab4ca4faa98ee31d383ebe940b8e054c6cabf7 +under the same informed-decision-owner role. Actual original backupCOMPLETE/copy +UNCERTAIN are retained; new rescue journal/phase and sourceversion2/newreviewown1 +require fresh founder acceptance. Immutable reads are bounded to proven frozen +closed snapshots; live/offline writable-clone reads remain WAL-aware/explicitclose. +Independent existing26 mocked tests plus41 subtests pass, and10 new product scope +guards pass (including eight refusal mutations and a frozen initial packet check). +No native command, DB open, credentials or rescue operation occurred. + +Initial review decision changes_requested: proposal.json misleadingly names old +f2fad helper manifest as execution_helper_manifest_sha256 after helper bytes changed; +label it original/historical and refreeze all dependent packet hashes. Correct +current bundle/plan digests already exist. The normalized test fixture is not an +owner edit or approval. Initial review/failure must remain after correction; +exact amended confirmation is still required before newhuman submission/execution. + +Review: docs/reviews/2026-10-11-purpose-rescue-product-owner-review.md. +Evidence/checks: docs/evidence/2026-10-11-purpose-rescue-product-review/. +T04 remains progress; original version1 approval is not newversion2 authority. + +**Amended source confirmation, same T07 trial:** exact134-path manifest +`d05d6e3b15df9acf1d7aef0ba2ec82a5a00d979ab1f324e981025cffe2cc753d` +corrects only the historical helper provenance label and dependent packet hashes; +original66 source and initial changes-requested review remain retained. Current +helper code/bundle49c9/plan9ce5 are unchanged. Strict typed sourceversion2/CAS1 +and20documents validate:173469packetbytes/240451revisionbytes. Eight scope +mutations and three packet mutations independently refuse. Final technical +source acknowledgement approved; no new human acceptance or native rescue. +Confirmation: docs/reviews/2026-10-11-purpose-rescue-product-owner-final-ack.md. + + +**Actual-outcome assessment preparation, same completed T07 trial:** independently +verified original receipt-byte hashes and source consumer path after approved +source c96b0c6 release. Offline schema5/admin/post counts match; fresh cutover +backup/private copy matches live post-release counts16/56/0, delivered336, +confirmed43. Independent image/module/config/PVC/controlled Pod and UID/GID10001 +checks pass. Actual post-rollout authenticated provider-backed outcomes readback +is separate from installed ten synthetic purpose forms (2allow/8refuse). +Completed source-only assessment supports T04 done, T05 todo and WP0009 active. +Original failed copy and verifier UNCERTAIN remain preserved, with no replay or +helper amendment. Created unpromoted INFD-IN-0010 for future verifier omission +handling correction; no implementation, native action or authority grant. +This work-record preparation precedes the formal actual-outcome review entry. +Review: docs/reviews/2026-10-11-purpose-native-outcome-product-owner-acceptance.md. +Evidence: docs/evidence/2026-10-11-purpose-native-acceptance/. + + +## Independently review bounded zlib-only T05 source candidate + +```task +id: INFD-WP-ADHOC-2026-10-11-T08 +status: done +priority: medium +``` + +Completed informed-decision Product source review of exact27-path candidate +manifest8d345bb2bde3efce4d0cc99dfc2f883a64f79c42d2cd4abb288229a995e9ad66. +All staged/evidence hashes verify. Independently reread local saved base/candidate +image archives, effective runtime config, nine base layer prefix, two final file +changes and both full scan/SBOM artifacts. Only zlib1.3.2-r0 to r1 differs; +44 packages/base1MED to candidate0 at retained same scanner database. +Signed APK/index named key matches unchanged base trust metadata; enforced +apk verify against existing keys retained, no allow-untrusted or truststore override. +Four existing source tests pass (eight refusal mutations), plus five independent +appfile/trustkeys/world/network/provider metadata mutations refuse. +Purpose/backend checks remain local and synthetic, not actual PDP or data proof. +Technical source preparation agreement only: local image78bfdcc is unpublished, +T05 remains progress/WP0009 active; CI exact published provenance/scan/SBOM and +new native founder approval/installed proof are still required. Current763/native +DB/config/PVC/identity/approved R2 helper and journal remain unchanged; INFD-IN-0010 +is unpromoted/unimplemented. No native actions, credentials or owner source writes. +This completed work record is prepared before the formal review entry. +Review: docs/reviews/2026-10-11-zlib-candidate-product-owner-review.md. +Evidence: docs/evidence/2026-10-11-zlib-candidate-product-review/. + + +**Exact amended confirmation, same completed T08 preparation trial:** verified +final58-path candidate manifest64509029b3de6d33e3675587663ccdae027d9ea18aba83750892480766dd03b8 +and immutable archived initial27 hashes. Only artifact-audit source/receipts/docs +change; recipe/workflow/four build inputs/image78bfdcc/config625d/runtime/scan/DB +remain identical. New3 artifact tests pass (optimized malformed input refused +before reads; matching directories pass; directory mode/UID/GID drift refuse). +Independent actual saved-image reread proves all directory metadata unchanged, +with the same two final file changes. Initial Product manifest5f334/ack/validation +are retained as historical source agreement, not new scored native success. +This work-record refinement precedes final formal acknowledgment. No publication, +native operation, credentials or owner edits. T05progress/WP0009active remains. +Confirmation: docs/reviews/2026-10-11-zlib-candidate-product-owner-final-ack.md. + + +**Exact66 whiteout follow-through, same completed T08 preparation:** independently +verified manifest3e41ab391cda26f09a556fecef8a17c2759ef2899e43eb136b25ef4b3fde23a0 +and all66 hashes. New source correction preserves leading whiteout dots/root +parent handling, but three Product synthetic probes find same-layer new files +incorrectly removed by subsequent nested/root opaque or explicit descendant +whiteouts. OCI requires whiteouts affect only lower layers and preserve same-layer +additions regardless archive order. Completed source assessment changes_requested +before formal entry: apply whiteouts only previous layers then merge current +layer additions, with both archive orders covered. No actual candidate failure +or image/sourcecontext/scan change is inferred. Initial5f334 and intermediate +8bc6 reviews/evidence remain historical, not rewritten; same T08/no new trial. +No owner edits, native operation, publication or credentials. +Review: docs/reviews/2026-10-11-zlib-candidate-product-whiteout-review.md. + + +**Exact74 final acknowledgment, same completed T08:** all74 candidate hashes +verify for manifest724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec. +Checker now collects additions separately, applies whiteouts only lower-layer +state and merges additions afterward. Five audit tests pass, including12 whiteout +semantic cases/both marker orders. All three original Product counterexamples +now preserve same-layer files. Independent actual saved-image re-audit proves +313directories unchanged and same two changed files/nine base prefix/runtime/ +SBOM/scan. Image78/contextc554/recipe/workflow/package/trust/DB unchanged. +Initial5f334, intermediate8bc6 and changes-requested85ffd source reviews/evidence +remain exact historical bytes, not revised prior success or a new scored trial. +Completed refinement record precedes final formal exact74 technical agreement. +No owner edits, native operation, publication or credentials; T05progress and +WP0009active remain. Distinct published/installed proof and founder approval +remain pending. +Final review: docs/reviews/2026-10-11-zlib-candidate-product-owner-complete-ack.md. + + +## Review distinct T05 native release proposal source preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T09 +status: done +priority: medium +``` + +Completed source-only Product review preparation for NEW distinct zlib release +trial infd-zlib-20261011-r1. Initial requested67 manifest1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2 +changed during source reads to68-path manifest81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47. +Stopped approval and froze81ad source; all68 staged hashes independently verify. +Current19 synthetic helper tests pass, but independent mocked source probes +reproduce remote keyword signature failure, missing frozen snapshot/operation +intent forwarding and empty detector/package coverage accepted as full scan. +Initial missing fresh_scan observation was corrected by81ad; not a current +missing-function finding. Readbacks are source-only, no actual phase failure. +Scan NextUpdateOct11 precedes release deadlineOct12: fresh same-image rescan is +explicitly permitted/required but coverage gate still needs correction. +Completed T09 record precedes formal changes-requested entry. Maker will refreeze +a separate corrected source; exact review still required, no native approval. +T05progress/WP0009active; originalT04/R2 journals/helpers and unpromotedIN10 +remain unchanged. No publication/native command, owner edit, credentials or +private DB/customer data access. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md. +Evidence: docs/evidence/2026-10-11-zlib-release-product-initial-review/. + + +**Immutable143 refinement assessment, same completed T09:** all143 refined +hashes verify for manifestf170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29 +and unchanged published29/6ba2 proof. All25 source tests pass; independent original +remote keyword/intent and empty-coverage counterexamples are corrected. Gzip +bundle losslessly binds exact source. Two remaining Product findings prevent +acknowledgment: actual typed document decoder rejects duplicate SHA for sealed +live and identical rollback JSON; post-Ready command exports freeform note/reasons +and unknown review body in synthetic sentinel fixture. Require unique command +digests and exact typed packet check; require closed bounded structural receipt +allowlist/sentinel tests with actual canonical provider path unchanged. +Initialc67 exact20files/manifest and historical observations remain preserved; +original67 full source unavailable is explicitly disclosed, never invented. +No native phase failure/provider request/credentials/owner write. This completed +source-refinement record precedes formal143 changes-requested entry. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md. +T05progress/WP0009active; final corrected freeze and founder approval pending. + +**Recovery authority dependency retained for next proposal:** current143 demands +fresh service-dependent founder readback before rollback as well as release. +Candidate/service failure can prevent that readback even though mechanical +rollback itself is independent of candidate readiness/DB. Root/Platform identified +this further proposal gap. Any newly proposed preauthenticated limited recovery +authority must be explicit in a new human packet, bounded to same763/c96/image-only +latestDB retention/time/deadline, exclude401/403/revoked/mismatch fallbacks and +disclose later-revocation uncertainty; current143 grants none. + + +**Exact481 actual provider-contract follow-through, same completed T09:** +all481 manifest3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec +hashes verify; all36 source tests pass. Typed native decoder now accepts12unique +contents/13labels and defaultJSON register204591bytes; exactgzip bundle verifies. +Prior wiring/coverage/document/privacy findings are corrected. Proposed manual +outage recovery is explicit new-human consent only, bounded30min/deadline and +same763/c96/latestDB, with no401/403/revoked/conflict/other-phase reuse; separate +rollback completion and Ready recovered verification required. No currentgo. +Deep actual provider-source check finds final metadata validator still requires +root-added memo_id absent from real native outcomes body, and rejects native +null non-submission/prepared/in_flight/system metadata. Five isolated source +counterexamples reproduce rejection. Require exact native-contract fixtures +and fixed-request-context memo correlation without inventing provider fields. +Allad63564files/manifest and earlier findings remain exact historical bytes; +missing original67 fullsnapshot remains disclosed. Completed refinement record +precedes this formal changes-requested entry. No native/provider request, private +DB/customer data, real credentials, owner edit/push or taskclosure. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-native-contract-review.md. + +**Root-selected minimal correction:** fixed authenticated source1 GET/HTTP200/ +observation time with native response review=None/dict and dispositions=list of +dicts, output only has_review/disposition_count. Memo correlation derives from +fixed request, optional response ID must match. No review/disposition/state/actor +body output or consent claim; actual founder authority remains separate. Exact +corrected source/native-shape/sentinel fixtures still require review before ACK. diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660 b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660 new file mode 100644 index 0000000..c8a565c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660 @@ -0,0 +1,12 @@ +{ + "all481_hashes_verified": true, + "existing_tests_pass": 36, + "actual_typed_memo_and_documents_pass": true, + "unique_contents": 12, + "packet_labels": 13, + "register_bytes": 204591, + "bundle_source_equal": true, + "outage_consent_proposed_only": true, + "native_actions": false, + "remaining_provider_contract_findings": 5 +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/original-manifest.json b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/original-manifest.json new file mode 100644 index 0000000..2d3766b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/review-history/product481/original-manifest.json @@ -0,0 +1,952 @@ +{ + "owner": "informed-decision", + "decision": "changes_requested", + "scope": "same T09 exact481 actual native response contract finding; ad635 all64 preserved; no privileged approval", + "files": [ + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/original-manifest.json", + "original_sha256": null, + "staged_sha256": "ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": null, + "staged_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": null, + "staged_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": null, + "staged_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": null, + "staged_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": null, + "staged_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": null, + "staged_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": null, + "staged_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": null, + "staged_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": null, + "staged_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": null, + "staged_sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": null, + "staged_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a" + }, + { + "repo": "informed-decision", + "path": "docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": null, + "staged_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": null, + "staged_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": null, + "staged_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": null, + "staged_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": null, + "staged_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": null, + "staged_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": null, + "staged_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": null, + "staged_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": null, + "staged_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": null, + "staged_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": null, + "staged_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": null, + "staged_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/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-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": null, + "staged_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d" + }, + { + "repo": "informed-decision", + "path": "workplans/ADHOC-2026-10-11.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/workplans/ADHOC-2026-10-11.md", + "original_sha256": "b7c3dda21fcf19644a24b2c656662d20f030327f47b9cea5e95032a2cfcad3e8", + "staged_sha256": "896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03" + }, + { + "repo": "informed-decision", + "path": "docs/reviews/2026-10-11-zlib-release-product-owner-native-contract-review.md", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/reviews/2026-10-11-zlib-release-product-owner-native-contract-review.md", + "original_sha256": null, + "staged_sha256": "53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/frozen481-original-manifest.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/frozen481-original-manifest.json", + "original_sha256": null, + "staged_sha256": "3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/frozen481-post-ready-native-outcomes-command.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/frozen481-post-ready-native-outcomes-command.py", + "original_sha256": null, + "staged_sha256": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/probe_native_shape.py", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/probe_native_shape.py", + "original_sha256": null, + "staged_sha256": "7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/native-contract-counterexamples.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/native-contract-counterexamples.json", + "original_sha256": null, + "staged_sha256": "5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4" + }, + { + "repo": "informed-decision", + "path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/validation.json", + "staged_path": "/tmp/infd-zlib-release-product-contract-review-stage/owner/docs/evidence/2026-10-11-zlib-release-product-contract-review/validation.json", + "original_sha256": null, + "staged_sha256": "dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660" + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json @@ -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-zlib-image-release/rollback-preflight-full.json b/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json new file mode 100644 index 0000000..ff52810 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight-full.json @@ -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-zlib-image-release/rollback-preflight.json b/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json new file mode 100644 index 0000000..d1475b3 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/rollback-preflight.json @@ -0,0 +1,55 @@ +{ + "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, + "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", + "full_receipt_sha256": "0188799d352e4d49d5ca29d6e197742d02e96a4b0b399df1f478e41b25292eb5", + "full_receipt_path": "rollback-preflight-full.json", + "projection_reference_files": { + "sealed_live_deployment": "sealed-live-deployment.json", + "sealed_dependencies": "sealed-native-dependencies.json", + "candidate_deployment": "rollback-deployment.json" + } +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json b/docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json new file mode 100644 index 0000000..1e788fd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/root-authority-receipt-template.json @@ -0,0 +1,22 @@ +{ + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "memo_id": "infd-20261011-zlib-remediation-r1", + "memo_version": 1, + "memo_sha256": null, + "source_revision": null, + "executor_plan_sha256": null, + "native_outcome_sha256": null, + "activation": "PENDING", + "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": null, + "review_memo_id": null, + "approval_id": null, + "disposition_id": null, + "accepted_at": null, + "bounded_outage_rollback_pre_authorized": false, + "note": "Template is not evidence/approval. Root sets scopedpreauthorizationtrue only after actual confirmed founder acceptance of this exact new packet/terms, retains original currentreadback before release." +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json b/docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json new file mode 100644 index 0000000..c1bd28c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/root-recovery-receipt-template.json @@ -0,0 +1,25 @@ +{ + "kind": "informed-decision.root-supervised-outage-recovery", + "proposal_id": "INFD-WP-0009-T05/zlib85091-r1", + "source_revision": null, + "memo_sha256": null, + "phase": null, + "release_attempt_id": null, + "cache_sha256": null, + "root_verified": false, + "manual_supervised_recovery": false, + "current_native_outcomes_claimed": false, + "observed_at": null, + "native_probe_status": null, + "explicit_revoked": null, + "current_conflict": null, + "identity_or_scope_mismatch": null, + "service_healthy": null, + "deployment_uid": null, + "configmap_uid": null, + "pvc_uid": null, + "rollback_image": "forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "rollback_source": "c96b0c6d881e855d1d158003c6de90ef390262e2", + "failed_candidate": null, + "note": "Template not actual evidence or approval. Rollbackverify uses original_outage_receipt_sha256,recovered_image,recovered_application_source,ready_replicas instead of a currentlyfailedcandidate." +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/runtime-receipt.json @@ -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-zlib-image-release/scan-receipt.json b/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/scan-receipt.json @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json b/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json @@ -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-zlib-image-release/sealed-native-dependencies.json b/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json @@ -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-zlib-image-release/security-close-down-checklist.md b/docs/evidence/2026-10-11-zlib-image-release/security-close-down-checklist.md new file mode 100644 index 0000000..394161f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/security-close-down-checklist.md @@ -0,0 +1,28 @@ +# Security close-down checklist + +**Owner:** the-custodian, on behalf of the founder. **Started:** 2026-10-03. +**Purpose:** while the estate is in build mode (orientation §0), agents may fix, simplify or relax parts of the security layer. Every such relaxation, and every control known to be unarmed, is listed here. At the production close-down the founder works this list, arms each item, and hands over the keys. After that, changes to the security system need elevated clearance. + +Add a row whenever you loosen, shortcut or leave unarmed a control. Remove nothing; mark items armed with date and evidence. + +| # | Control | Current state (build mode) | Re-arm at close-down | Owner | Added | +|---|---------|---------------------------|----------------------|-------|-------| +| 1 | Warden secret-fetch policy check (`check_fetch_policy`) | Misrouted to the ops-warden SSH signing pin; caller auth there binds only `ops-warden`, so every other owner gets 403. Bug reports: ops-warden `faf11061`, access-engine `b792c5d0`. access-engine built a separate pin `flex-auth-ops-warden-fetch` (package `ops-warden.secret.read` v1, allowed set generated from the routing catalog, deny by default, caller auth enforced; access-engine `02b15a7`). Deployed 2026-10-03 (access-engine `424f1e5`, release `flex-auth-ops-warden-fetch`, ClusterIP 10.43.151.3, tunnel `:19091`). Probes: allow ×2; deny `unknown_need`, `wrong_system`, `wrong_resource_type`; unbound system 403; no token 401. ops-warden routes fetch checks there (`7d4381e`, live `fetch_flex_auth_url` set). The gate is armed with a correct policy; its residuals are rows 5 and 6. | Fetch checks go to an evaluator with an explicit secret-read policy per owner system, deny by default, caller auth enforced; positive and negative evidence recorded. | ops-warden, access-engine | 2026-10-03 | +| 2 | informed-decision posing path | Each memo needs an attended requester login, a hand-edited exact-record admission package and a manual store load. Redesign specified in informed-decision `docs/specs/FrictionlessDecisionIntake.md`, workplan INFD-WP-0005 (`a973d36`; intake validation and hub write-back built and tested, nothing deployed). Its build-mode relaxations are rows 7–14; mark each live as it lands. | Attribute-based admission and workload-identity intake, with humans-only binding, MFA freshness, one question per memo and audit evidence verified. | informed-decision, access-engine, approval-engine | 2026-10-03 | +| 3 | State Hub qualifier sync (C-41) | `statehub fix-consistency` reports PASS without pushing wait qualifiers; the direct checker run works. Reported: state-hub `70d08f35`. | CLI path fixed and covered by a regression test; hub decision and gate data trusted again. | state-hub | 2026-10-03 | +| 4 | Provenance of `platform/workloads/tenant-engine/audit-core-sender` v1 | Value is correct (`already_identical`), but nothing records who first seeded it. | Audit-trail entry reconstructed or the secret rotated under a recorded lane. | railiance-platform, ops-mason | 2026-10-03 | +| 5 | Fetch-pin subject identity | `subject.id` is asserted by warden (its subject env, or `operator`). The caller binding proves ops-warden asked, not which human operator did. | Bind the subject to an attended human identity (KeyCape/NetKingdom claim) on fetch checks. | access-engine, ops-warden | 2026-10-03 | +| 6 | Fetch-pin lane set baked into the image | Any change to a secret lane in the catalog needs a regeneration (`tools/gen_ops_warden_fetch.py`) and an image rebuild. A new owner system also needs a binding redeploy. secrets-engine owns no lane and has no binding yet. | Lane changes flow through a reviewed regeneration pipeline, or the policy data is loaded at runtime with integrity checks. | access-engine | 2026-10-03 | +| 7 | informed-decision intake submitters (R1) | Posing is no longer operator-gated: any listed intake submitter can put a memo in front of the founder. Not yet live (INFD-WP-0005). | Submitter and memo-class lists are reviewed data with a signed regeneration path. | informed-decision, access-engine | 2026-10-03 | +| 8 | Posing via State Hub (R2) | Workstation agents pose through State Hub, whose API is unauthenticated on the loopback tunnel; `drafted_by` is asserted. Not yet live. | The hub authenticates its writers before forwarding; the forwarded submitter carries that identity. | state-hub | 2026-10-03 | +| 9 | Admission on carried context (R3) | The decision point decides on context the review service carries (approval requester, human_control, digest, submitter, class). Not yet live. | access-engine verifies a signed approval-engine claim and a signed intake receipt itself. | access-engine, approval-engine, informed-decision | 2026-10-03 | +| 10 | Requester client credential custody (R4) | The `informed-decision-sitting-requester` client credential moves from attended custody into workload custody (ESO into the review pod). Not yet live. | Rotation schedule, ESO read audit, sibling-path denial proof. | railiance-platform | 2026-10-03 | +| 11 | Admission data baked into the image (R5) | Admitted classes and submitters are baked into the access-engine image. Not yet live. | Runtime-loaded policy data with integrity checks, or a reviewed regeneration pipeline (as row 6). | access-engine | 2026-10-03 | +| 12 | Hub decision write-back (R6) | Answered memos resolve hub decisions through the unauthenticated hub API. Not yet live. | The hub requires the informed-decision workload identity on resolve and records it. | state-hub | 2026-10-03 | +| 13 | Approval create idempotency (R7) | No idempotency key on approval create; a crash can leave orphan draft approvals. Not yet live. | Idempotent approval create. | approval-engine | 2026-10-03 | +| 14 | Founder notification channel (R8) | The founder is notified only through the hub inbox. Not yet live. gate-house F3: any hub writer could send a fake memo notice. | An authenticated notification channel carrying only id and question. | informed-decision | 2026-10-03 | +| 15 | Posing volume (gate-house F2) | With posing ungated, a submitter can flood the founder with memos; habituation would turn the human control into theatre. A per-submitter volume cap is a SHOULD in build mode. | Per-submitter volume budget enforced (MUST). | informed-decision | 2026-10-03 | +| 16 | Intake doctrine conditions (gate-house C1–C6) | Draft ruling GH-DEC-2026-023 (gate-house `aac350d`, status proposed, awaiting the founder). C1–C6 apply now; R3 (row 9) is the main relaxation (F1), R2 (row 8) also covers C6, R5 (row 11) also covers C5. | Remove the `compact-sitting` exact-record branch once its memos are terminal; re-arm R3 with an access-engine approval-claim check and a signed intake receipt. | gate-house, informed-decision, access-engine | 2026-10-03 | +| 17 | Owner reviews and approval recording (canon `delegated-owner-review_v0.1`) | Owner reviews required by CCRs and similar records are written by each owner repo's worker agent from its INTENT.md, not by a human owner. The requesting agent records the founder's resolved hub decision (status, binding confirmations, admission markers) and commits. The founder still decides; `decided_by` is unauthenticated (rows 8, 12). | Reviews and recordings signed by authenticated agent workload identities; recording tooling verifies an authenticated human resolver; human owner review restored for red-lane records if wanted. | the-custodian | 2026-10-07 | +| 18 | Ordinary authenticated operator/PDP admission for User Engine application.register | Executed one-use exception USER-CATALOGUE-INFDEC-20261011-R1 under confirmed founder approval b859698b-5d08-4da5-9599-4760c6a799f1 (02:07:09Z). Exact executor b0dbbb97 and transport3e594e0e; packet307c4fc5, grant SHA 72ee846034809f4ae6848eac3a43f2b7390f1df7a67ede50eff7435d1b43f839. Two exact informed-decision catalogue records committed; genuine denial retained, three truthful audits, one consumed ledger and unsent/unclaimed registered event verified. Private grant removed. Ordinary management admission remains unmet; no IAM/human claim/future registration/targeted replay authority. Execution deadline2026-10-12T23:59:59Z does not erase facts. [Outcome](evidence/2026-10-10-security-consolidation/user-catalogue-independent-postapply-verification.json). | Before customer production, supported authenticated operator management with genuine ordinary allow/deny/attribution and unavailable refusal; retire bootstrap use, preserve/reconcile ledger/audits/events. Broader USER-WP-0026-T03/USER-WP-0028-T02 remain live; no human journey completion inferred. | user-engine, access-engine; Custodian tracks | 2026-10-11 | +| 19 | Fresh informed-decision readback during a failed T05 rollout | Proposed only; no exception approved or used. The new INFD-WP-0009-T05/zlib-85091-r1 packet will request manual, supervised rollback to exact image763c/sourcec96 if the candidate makes informed-decision unavailable. Proposed limits: separately confirmed founder consent retained before release, exact same journal/source/Deployment/config/PVC, at most30minutes after release and before2026-10-12T23:59:59Z. Later revocation cannot be checked during the outage. No fallback on401/403, explicit revocation, conflicts or mismatches; no cached authority for backups or release. | Close this one-use entry with actual disposition and trial outcome. Preserve the ordinary fresh-authority gate; do not reuse the outage path after its window, for another trial or for customer production. A future standing recovery mechanism needs independently obtainable authority and its own review. | informed-decision, railiance-platform; Custodian tracks | 2026-10-11 | diff --git a/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json b/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/source-commit-proof.json @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py b/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py @@ -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-zlib-image-release/submission-proof.json b/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json new file mode 100644 index 0000000..f8b5f53 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-image-release/submission-proof.json @@ -0,0 +1,40 @@ +{ + "kind": "source-only-native-authoring-packet", + "memo_id": "infd-20261011-zlib-remediation-r1", + "source_memo_version": 1, + "memo_sha256": "5dea0d404e4d13683fbf71d56273c06db7a6a916ab68759a90d7394005eee206", + "intake_sha256": "ddd480531bdde6930e9b7a3e6b012d1a1d0c1d1b927764423059fdf756b563a2", + "lifecycle_commands_sha256": "4cf81acb7d42f52d81f8ba624a6b2349a0b8948477a14c09bd069d2a4acab7cf", + "register_bytes": 237367, + "document_count": 15, + "documents_hashes_verified": true, + "execution_bundle_lossless_verified": true, + "native_submitted": false, + "founder_approval": false, + "memo_packet_labels": 16, + "owner_ack_attachments": [ + { + "label": "owner-product-final-ack.md", + "source_path": "/tmp/infd-zlib-release-product-final-ack-stage/owner/docs/reviews/2026-10-11-zlib-release-product-owner-final-ack.md", + "source_repo_path": "docs/reviews/2026-10-11-zlib-release-product-owner-final-ack.md", + "source_manifest_sha256": "84f7fb6acc9a5c7a5af2d41376a4b94aaaad680900456b9027f1ae664d3c54ad", + "sha256": "fe7b2153e525a23980aee63e62efcd7fd3dad18145633f8f57d8d2b4640c99d4", + "bytes": 6420 + }, + { + "label": "owner-platform-final-ack.json", + "source_path": "/tmp/infd-zlib-release-platform-postcontract-ack-stage/railiance-platform/docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/postcontract-technical-agreement.json", + "source_repo_path": "docs/evidence/2026-10-11-infd-zlib-native-release-owner-review/postcontract-technical-agreement.json", + "source_manifest_sha256": "185bdec062548be8bd89edd89ae3f4b29dc87716123bbab87ee7a406ee5c5609", + "sha256": "30c200b98f8692a8456e786d0c7a3acb5ff3634973911b088f56aa178d393fee", + "bytes": 5559 + }, + { + "label": "security-close-down-checklist.md", + "source_path": "/home/worsch/the-custodian/docs/security-close-down-checklist.md", + "sha256": "94d5757bfd612c489d419f421c0abbaf3d5a991cc1a49d04a33f957aed3ddd8a", + "bytes": 9710, + "status": "row19-proposed-only-unapproved" + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/README.md b/docs/evidence/2026-10-11-zlib-published-verification/README.md new file mode 100644 index 0000000..b56d01b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/README.md @@ -0,0 +1 @@ +Actual owner CI task11534/run4 succeeded at exact9b4bb25d. Independent anonymous public digest readback, full same-fresh-DB baseline/candidate scans and SBOM, exact74source hashes, directory-aware layer audit and isolated readonly/networknone runtime+10purpose variants pass. Only zlibr0→r1 changes44package SBOM; two final files differ and313directory metadata entries remain unchanged. Zero scan findings is DB snapshot scope; Alpine3.24 EOL-list coverage warning retained. Registry/daemon configuration serialization distinction and initial tooling refusal preserved. Native deployment, database/provider checks and distinct founder release approval remain unperformed. T05/risk record stay active. See published-verification.json and all raw non-filtered evidence. diff --git a/docs/evidence/2026-10-11-zlib-published-verification/artifact-comparison.json b/docs/evidence/2026-10-11-zlib-published-verification/artifact-comparison.json new file mode 100644 index 0000000..3b7b67c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/artifact-comparison.json @@ -0,0 +1,73 @@ +{ + "base_image_config_id": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "candidate_local_image_config_id": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "candidate_registry_digest": null, + "base_layers_preserved": 9, + "new_layers": 2, + "effective_runtime_config_identical": true, + "raw_config_bytes_identical": false, + "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.", + "labels_before": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "labels_after": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "final_changed_files": { + "lib/apk/db/installed": { + "before": [ + "file", + 420, + 0, + 0, + "6383ea3806247e8dbf9ebee8cb30eb8eca63a8ea59662a793127d6a61b988d70" + ], + "after": [ + "file", + 420, + 0, + 0, + "f590762196710e25c0e9f72da0642cad8a5dcba0aa9e58a0cbaa65684d15c001" + ] + }, + "usr/lib/libz.so.1.3.2": { + "before": [ + "file", + 493, + 0, + 0, + "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57" + ], + "after": [ + "file", + 493, + 0, + 0, + "ecc8b9dfc45eb7fa29b410ffaca6257873890de53b80fe91735737b49067c5f2" + ] + } + }, + "directory_metadata_compared": true, + "directory_count_base": 313, + "directory_count_candidate": 313, + "directory_metadata_delta": {}, + "sbom_package_count_base": 44, + "sbom_package_count_candidate": 44, + "sbom_only_delta": { + "zlib": [ + "1.3.2-r0", + "1.3.2-r1" + ] + }, + "full_scan_baseline_findings": 1, + "full_scan_candidate_allseverity_findings": 0, + "db_snapshot_same": true, + "native_workload_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/base-image-config.json b/docs/evidence/2026-10-11-zlib-published-verification/base-image-config.json new file mode 100644 index 0000000..bc38933 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/base-image-config.json @@ -0,0 +1,222 @@ +{ + "architecture": "amd64", + "config": { + "Hostname": "", + "Domainname": "", + "User": "10001:10001", + "AttachStdin": false, + "AttachStdout": false, + "AttachStderr": false, + "ExposedPorts": { + "8080/tcp": {}, + "8081/tcp": {} + }, + "Tty": false, + "OpenStdin": false, + "StdinOnce": false, + "Env": [ + "PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "LANG=C.UTF-8", + "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "PYTHON_VERSION=3.12.14", + "PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "PYTHONDONTWRITEBYTECODE=1", + "PYTHONUNBUFFERED=1" + ], + "Cmd": null, + "Image": "sha256:90f1574f9eda35fa6cb972961beb27a7cb904c36560e381930b0e14065c23883", + "Volumes": null, + "WorkingDir": "/app", + "Entrypoint": [ + "informed-decision-container" + ], + "OnBuild": null, + "Labels": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + } + }, + "container_config": { + "Hostname": "", + "Domainname": "", + "User": "10001:10001", + "AttachStdin": false, + "AttachStdout": false, + "AttachStderr": false, + "ExposedPorts": { + "8080/tcp": {}, + "8081/tcp": {} + }, + "Tty": false, + "OpenStdin": false, + "StdinOnce": false, + "Env": [ + "PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "LANG=C.UTF-8", + "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "PYTHON_VERSION=3.12.14", + "PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "PYTHONDONTWRITEBYTECODE=1", + "PYTHONUNBUFFERED=1" + ], + "Cmd": [ + "/bin/sh", + "-c", + "#(nop) COPY file:2be9cb36e7253e15733673359cda8caa22986b6888822a008c1b360d909994e0 in /opt/venv/lib/python3.12/site-packages/informed_decision/policy.py " + ], + "Image": "sha256:90f1574f9eda35fa6cb972961beb27a7cb904c36560e381930b0e14065c23883", + "Volumes": null, + "WorkingDir": "/app", + "Entrypoint": [ + "informed-decision-container" + ], + "OnBuild": null, + "Labels": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + } + }, + "created": "2026-10-11T01:21:04.787527697Z", + "docker_version": "27.5.1", + "history": [ + { + "created": "2026-06-16T00:01:29.967161902Z", + "created_by": "ADD alpine-minirootfs-3.24.1-x86_64.tar.gz / # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-06-16T00:01:29.967161902Z", + "created_by": "CMD [\"/bin/sh\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV LANG=C.UTF-8", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "RUN /bin/sh -c set -eux; \tapk add --no-cache \t\tca-certificates \t\ttzdata \t; # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PYTHON_VERSION=3.12.14", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:10:30.672225972Z", + "created_by": "RUN /bin/sh -c set -eux; \t\tapk add --no-cache --virtual .build-deps \t\tbluez-dev \t\tbzip2-dev \t\tdpkg-dev dpkg \t\tfindutils \t\tg++ \t\tgcc \t\tgdbm-dev \t\tgnupg \t\tlibc-dev \t\tlibffi-dev \t\tlibnsl-dev \t\tlibtirpc-dev \t\tlinux-headers \t\tmake \t\tncurses-dev \t\topenssl-dev \t\tpax-utils \t\treadline-dev \t\tsqlite-dev \t\ttar \t\ttcl-dev \t\ttk \t\ttk-dev \t\tutil-linux-dev \t\txz \t\txz-dev \t\tzlib-dev \t; \t\twget -O python.tar.xz \"https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz\"; \techo \"$PYTHON_SHA256 *python.tar.xz\" | sha256sum -c -; \twget -O python.tar.xz.asc \"https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc\"; \tGNUPGHOME=\"$(mktemp -d)\"; export GNUPGHOME; \tgpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$GPG_KEY\"; \tgpg --batch --verify python.tar.xz.asc python.tar.xz; \tgpgconf --kill all; \trm -rf \"$GNUPGHOME\" python.tar.xz.asc; \tmkdir -p /usr/src/python; \ttar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; \trm python.tar.xz; \t\tcd /usr/src/python; \tgnuArch=\"$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)\"; \t./configure \t\t--build=\"$gnuArch\" \t\t--enable-loadable-sqlite-extensions \t\t--enable-option-checking=fatal \t\t--enable-shared \t\t$(test \"${gnuArch%%-*}\" != 'riscv64' && echo '--with-lto') \t\t--with-ensurepip \t; \tnproc=\"$(nproc)\"; \tEXTRA_CFLAGS=\"-DTHREAD_STACK_SIZE=0x100000\"; \tLDFLAGS=\"${LDFLAGS:-} -Wl,--strip-all\"; \tarch=\"$(apk --print-arch)\"; \tcase \"$arch\" in \t\tx86_64|aarch64) \t\t\tEXTRA_CFLAGS=\"${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer\"; \t\t\t;; \t\tx86) \t\t\t;; \t\t*) \t\t\tEXTRA_CFLAGS=\"${EXTRA_CFLAGS:-} -fno-omit-frame-pointer\"; \t\t\t;; \tesac; \tmake -j \"$nproc\" \t\t\"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}\" \t\t\"LDFLAGS=${LDFLAGS:-}\" \t; \trm python; \tmake -j \"$nproc\" \t\t\"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}\" \t\t\"LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\\$\\$ORIGIN/../lib'\" \t\tpython \t; \tmake install; \t\tcd /; \trm -rf /usr/src/python; \t\tfind /usr/local -depth \t\t\\( \t\t\t\\( -type d -a \\( -name test -o -name tests -o -name idle_test \\) \\) \t\t\t-o \\( -type f -a \\( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \\) \\) \t\t\\) -exec rm -rf '{}' + \t; \t\tfind /usr/local -type f -executable -not \\( -name '*tkinter*' \\) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \t\t| tr ',' '\\n' \t\t| sort -u \t\t| awk 'system(\"[ -e /usr/local/lib/\" $1 \" ]\") == 0 { next } { print \"so:\" $1 }' \t\t| xargs -rt apk add --no-network --virtual .python-rundeps \t; \tapk del --no-network .build-deps; \t\texport PYTHONDONTWRITEBYTECODE=1; \tpython3 --version; \tpip3 --version # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:10:30.782726003Z", + "created_by": "RUN /bin/sh -c set -eux; \tfor src in idle3 pip3 pydoc3 python3 python3-config; do \t\tdst=\"$(echo \"$src\" | tr -d 3)\"; \t\t[ -s \"/usr/local/bin/$src\" ]; \t\t[ ! -e \"/usr/local/bin/$dst\" ]; \t\tln -svT \"$src\" \"/usr/local/bin/$dst\"; \tdone # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:10:30.782726003Z", + "created_by": "CMD [\"python3\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-11T00:49:47.962156876+02:00", + "created_by": "ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-11T00:49:47.962156876+02:00", + "created_by": "RUN /bin/sh -c apk add --no-cache 'libuuid>=2.42.3-r1' && addgroup -S -g 10001 informed && adduser -S -u 10001 -G informed -H informed # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:55.351944978+02:00", + "created_by": "COPY /opt/venv /opt/venv # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.462092072+02:00", + "created_by": "RUN /bin/sh -c rm -rf /usr/local/bin/pip* /usr/local/lib/python3.12/site-packages/pip* /usr/local/lib/python3.12/site-packages/setuptools* /usr/local/lib/python3.12/site-packages/pkg_resources /opt/venv/bin/pip* /opt/venv/lib/python3.12/site-packages/pip* /opt/venv/lib/python3.12/site-packages/setuptools* /opt/venv/lib/python3.12/site-packages/pkg_resources # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "WORKDIR /app", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "USER 10001:10001", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "EXPOSE [8080/tcp 8081/tcp]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "ENTRYPOINT [\"informed-decision-container\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-11T01:15:11.991443676Z", + "created_by": "/bin/sh -c #(nop) ARG SOURCE_REVISION", + "empty_layer": true + }, + { + "created": "2026-10-11T01:21:04.716126392Z", + "created_by": "/bin/sh -c #(nop) LABEL org.opencontainers.image.revision=3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168 org.opencontainers.image.base.digest=sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173 social.coulomb.source.policy.sha256=9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62 social.coulomb.release.scope=INFD-WP-0009-T04/purpose-overlay-v1", + "empty_layer": true + }, + { + "created": "2026-10-11T01:21:04.787527697Z", + "created_by": "/bin/sh -c #(nop) COPY file:2be9cb36e7253e15733673359cda8caa22986b6888822a008c1b360d909994e0 in /opt/venv/lib/python3.12/site-packages/informed_decision/policy.py " + } + ], + "os": "linux", + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3" + ] + } +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/base-image-manifest.json b/docs/evidence/2026-10-11-zlib-published-verification/base-image-manifest.json new file mode 100644 index 0000000..71f69b0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/base-image-manifest.json @@ -0,0 +1,56 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.docker.distribution.manifest.v2+json", + "config": { + "mediaType": "application/vnd.docker.container.image.v1+json", + "size": 10428, + "digest": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779" + }, + "layers": [ + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 3846391, + "digest": "sha256:55afa1ecc21d2bb5e5045f32dafee56272ffd89860bac26f6c32123439af26a4" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 408093, + "digest": "sha256:47393b668ce535d06e8967917d424c177e2ecccae83856d48b2e99164f8cc6cb" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 16346740, + "digest": "sha256:2014fd3d47b2c2dd4dedc765822ac60ae269f3efa0e614f46ae29f540c7f1235" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 248, + "digest": "sha256:ed62c91ccd94e36a928e96d704cfcf20861302590245cc12aa89a15a5d6be29b" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 49243, + "digest": "sha256:f0fe3e08ab046c0c5e29d34ee73bc8c7e03398eb891e4498e0a67088a5ea3e86" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 10216362, + "digest": "sha256:82ff17b555d91096dd328eb1e829daaeba9a48d7757143d0b97c35a721f6fb87" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 459, + "digest": "sha256:16a3dba6b720d3059eab918cd3596f94145ac9cf4d456f925a21f0f72522863f" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 93, + "digest": "sha256:e73dd464fbff5607cc62a1b2b66b0eefe737dfad4db8e7b58a48cda7c12d94d3" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 3586, + "digest": "sha256:cfee29c2f8119d2a39714ecbe5095a2dc1c986054f2e1fe0a6565163242417e3" + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/base-runtime.json b/docs/evidence/2026-10-11-zlib-published-verification/base-runtime.json new file mode 100644 index 0000000..b45c853 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/base-runtime.json @@ -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-r0"}, "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": "a1e2c03dcdedba98a06a00cadfb67a0e0b1cd93986860ec0c5ce66e789c44e57", "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-zlib-published-verification/base-sbom.cdx.json b/docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json new file mode 100644 index 0000000..95720ee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json @@ -0,0 +1,2375 @@ +{ + "$schema": "http://cyclonedx.org/schema/bom-1.7.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.7", + "serialNumber": "urn:uuid:81e22ab9-d8dc-474e-a1e4-5ca19c9e6edb", + "version": 1, + "metadata": { + "timestamp": "2026-10-11T09:38:39+00:00", + "tools": { + "components": [ + { + "type": "application", + "manufacturer": { + "name": "Aqua Security Software Ltd." + }, + "group": "aquasecurity", + "name": "trivy", + "version": "0.74.0" + } + ] + }, + "component": { + "bom-ref": "1f2691c9-f1ed-4691-875a-d37ff7a589fd", + "type": "container", + "name": "/artifact/base-image.tar", + "properties": [ + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1" + }, + { + "name": "aquasecurity:trivy:ImageID", + "value": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779" + }, + { + "name": "aquasecurity:trivy:Labels:org.opencontainers.image.base.digest", + "value": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173" + }, + { + "name": "aquasecurity:trivy:Labels:org.opencontainers.image.revision", + "value": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168" + }, + { + "name": "aquasecurity:trivy:Labels:social.coulomb.release.scope", + "value": "INFD-WP-0009-T04/purpose-overlay-v1" + }, + { + "name": "aquasecurity:trivy:Labels:social.coulomb.source.policy.sha256", + "value": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + { + "name": "aquasecurity:trivy:SchemaVersion", + "value": "2" + }, + { + "name": "aquasecurity:trivy:Size", + "value": "88258048" + } + ] + } + }, + "components": [ + { + "bom-ref": "329952bc-6416-4b32-b882-8b42aad59885", + "type": "operating-system", + "name": "alpine", + "version": "3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:Class", + "value": "os-pkgs" + }, + { + "name": "aquasecurity:trivy:Type", + "value": "alpine" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1", + "type": "library", + "name": ".python-rundeps", + "version": "20260901.001029", + "hashes": [ + { + "alg": "SHA-1", + "content": "51d0c1e7d88a414345799f0309185c625013ef32" + } + ], + "purl": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": ".python-rundeps@20260901.001029" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "alpine-baselayout-data", + "version": "3.7.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "c6f9bded17d844b6f1b0bb5766d2c35c0d5c8508" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "alpine-baselayout-data@3.7.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "alpine-baselayout" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.7.2-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "alpine-baselayout", + "version": "3.7.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "f0fcfdc2f4da058af6473bc45c4eab62916225b2" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "alpine-baselayout@3.7.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "alpine-baselayout" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.7.2-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "alpine-keys", + "version": "2.6-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "d8d6b80e53c059a77e4915da78ba964f3ffea240" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "alpine-keys@2.6-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "alpine-keys" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2.6-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "alpine-release", + "version": "3.24.1-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "bc6912a25cdc7733e0035ed509eceaa4026946e3" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "alpine-release@3.24.1-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "alpine-base" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.24.1-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "apk-tools", + "version": "3.0.6-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "043333589798a1f52e09ae63f026c6c8fa676d34" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "apk-tools@3.0.6-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "apk-tools" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.0.6-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Sören Tempel " + }, + "name": "busybox-binsh", + "version": "1.37.0-r31", + "hashes": [ + { + "alg": "SHA-1", + "content": "5cbd14acc6f1804c5bac6c77dc2c492f010b0fc7" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "busybox-binsh@1.37.0-r31" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "busybox" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.37.0-r31" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Sören Tempel " + }, + "name": "busybox", + "version": "1.37.0-r31", + "hashes": [ + { + "alg": "SHA-1", + "content": "b5405ebc02f7dd8be95b6265c54b243d5456ab8f" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "busybox@1.37.0-r31" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "busybox" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.37.0-r31" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "ca-certificates-bundle", + "version": "20260611-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "c9534a03750bdfae341f10969016090fc11febbd" + } + ], + "licenses": [ + { + "license": { + "id": "MPL-2.0" + } + }, + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "ca-certificates-bundle@20260611-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ca-certificates" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "20260611-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "ca-certificates", + "version": "20260611-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "8f2a04abeb54b331e2970a0a0dffb7bd6bdde567" + } + ], + "licenses": [ + { + "license": { + "id": "MPL-2.0" + } + }, + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "ca-certificates@20260611-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ca-certificates" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "20260611-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "gdbm", + "version": "1.26-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "619493d8124fe49a8ee1d8f7a1372cf7e3977337" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-3.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "gdbm@1.26-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "gdbm" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.26-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "keyutils-libs", + "version": "1.6.3-r4", + "hashes": [ + { + "alg": "SHA-1", + "content": "b7331c96f077fc3522ee4361a441d1097204cd90" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-or-later" + } + }, + { + "license": { + "id": "LGPL-2.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "keyutils-libs@1.6.3-r4" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "keyutils" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.6.3-r4" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "krb5-conf", + "version": "1.0-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "40a11e0690a59e110367b62a80661024e9942a2d" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "krb5-conf@1.0-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "krb5-conf" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.0-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "krb5-libs", + "version": "1.22.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "ef02346e21b817ff379e4601e5b1fc9760e5e31a" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "krb5-libs@1.22.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "krb5" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.22.2-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libapk", + "version": "3.0.6-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "523a8f58104589f74f743d501c81bf6517155378" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libapk@3.0.6-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "apk-tools" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.0.6-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libbz2", + "version": "1.0.8-r6", + "hashes": [ + { + "alg": "SHA-1", + "content": "08566ba5c7af97c25474be8b24e8b48f0116b67d" + } + ], + "licenses": [ + { + "license": { + "name": "bzip-2-1.0.6" + } + } + ], + "purl": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libbz2@1.0.8-r6" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "bzip2" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.0.8-r6" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libcom_err", + "version": "1.47.4-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "4b9fb5899ea0b1c0cfbb2a2c5952704437d4ecef" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-or-later" + } + }, + { + "license": { + "id": "LGPL-2.0-or-later" + } + }, + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libcom_err@1.47.4-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "e2fsprogs" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.47.4-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libcrypto3", + "version": "3.5.8-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "1b3b9fc0c136f4936932bcb2ec21499f0ae5dfd3" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "purl": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libcrypto3@3.5.8-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "openssl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.5.8-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libffi", + "version": "3.5.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "2f7b261f7fcecc4eebd8b330e7f6fb80713bfe3a" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libffi@3.5.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libffi" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.5.2-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Carlo Landmeter " + }, + "name": "libintl", + "version": "1.0-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "282d6642ccac87237e43a864159d73cf5abe7550" + } + ], + "licenses": [ + { + "license": { + "id": "LGPL-2.1-or-later" + } + } + ], + "purl": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libintl@1.0-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "gettext" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.0-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Milan P. Stanić " + }, + "name": "libncursesw", + "version": "6.6_p20260516-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "9f318e6e324d6827274829194cf6ac6afbaded12" + } + ], + "licenses": [ + { + "license": { + "name": "X-11" + } + } + ], + "purl": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libncursesw@6.6_p20260516-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ncurses" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "6.6_p20260516-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "name": "libnsl", + "version": "2.0.1-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "5194adbf26560b52be318481a7af294ab05fd795" + } + ], + "licenses": [ + { + "license": { + "id": "LGPL-2.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libnsl@2.0.1-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libnsl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2.0.1-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Milan P. Stanić " + }, + "name": "libpanelw", + "version": "6.6_p20260516-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "149bdc434232ed11fc5bb975ba519a07154a6f56" + } + ], + "licenses": [ + { + "license": { + "name": "X-11" + } + } + ], + "purl": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libpanelw@6.6_p20260516-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ncurses" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "6.6_p20260516-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libssl3", + "version": "3.5.8-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "5f9b1e55d821953d2e2b1db322dad70a3b5041ea" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "purl": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libssl3@3.5.8-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "openssl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.5.8-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libtirpc-conf", + "version": "1.3.5-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "0c17d9988dc986c90e22f79778df047eca9973ff" + } + ], + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "purl": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libtirpc-conf@1.3.5-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libtirpc" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.3.5-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libtirpc", + "version": "1.3.5-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "c32865bd86a8b8829d152279cabbc5ac6d430eb2" + } + ], + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "purl": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libtirpc@1.3.5-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libtirpc" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.3.5-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libuuid", + "version": "2.42.3-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "8f041ef637ad75f381cc0c034f2afbbb0303264e" + } + ], + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "purl": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libuuid@2.42.3-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "util-linux" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2.42.3-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Francesco Colista " + }, + "name": "libverto", + "version": "0.3.2-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "73233059338142e4ac6d8fb8bb0074e93da75dc1" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libverto@0.3.2-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libverto" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "0.3.2-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "musl-utils", + "version": "1.2.6-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "75ada3c48d63ec5d87c42fdf934a3fdd11298dc5" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "id": "BSD-2-Clause" + } + }, + { + "license": { + "id": "GPL-2.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "musl-utils@1.2.6-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "musl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.2.6-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "musl", + "version": "1.2.6-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "0f7e5827e4e1a73631beda27b78431a8ba240e05" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "musl@1.2.6-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "musl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.2.6-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Milan P. Stanić " + }, + "name": "ncurses-terminfo-base", + "version": "6.6_p20260516-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "9d551d828e9c8ee52c5801c1d6046828ebf15752" + } + ], + "licenses": [ + { + "license": { + "name": "X-11" + } + } + ], + "purl": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "ncurses-terminfo-base@6.6_p20260516-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ncurses" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "6.6_p20260516-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "qaqland " + }, + "name": "readline", + "version": "8.3.3-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "945b16e378bc00e44d89d4de8124bba7647fdf4d" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-3.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "readline@8.3.3-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "readline" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "8.3.3-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "scanelf", + "version": "1.3.9-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "013f903d0ba219673aebbdd04f74bb5ed82b01f0" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "scanelf@1.3.9-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "pax-utils" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.3.9-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Jingyun Hua " + }, + "name": "sqlite-libs", + "version": "3.53.4-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "f7630ceb37c232b6609861aeab6cdb9cd120e6fa" + } + ], + "licenses": [ + { + "license": { + "id": "blessing" + } + } + ], + "purl": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "sqlite-libs@3.53.4-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "sqlite" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.53.4-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Sören Tempel " + }, + "name": "ssl_client", + "version": "1.37.0-r31", + "hashes": [ + { + "alg": "SHA-1", + "content": "c220f4a5125a313af733e98def94132bb1e9d40d" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "ssl_client@1.37.0-r31" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "busybox" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.37.0-r31" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "tzdata", + "version": "2026c-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "61f7544ecd8dd63eac23fe3e645702fda92ef02a" + } + ], + "licenses": [ + { + "license": { + "name": "Public-Domain" + } + } + ], + "purl": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "tzdata@2026c-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "tzdata" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2026c-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "xz-libs", + "version": "5.8.3-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "4c92c5be0c5bef404e93c880eba9037a9b147347" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-or-later" + } + }, + { + "license": { + "id": "0BSD" + } + }, + { + "license": { + "name": "Public-Domain" + } + }, + { + "license": { + "id": "LGPL-2.1-or-later" + } + } + ], + "purl": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "xz-libs@5.8.3-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "xz" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "5.8.3-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "zlib", + "version": "1.3.2-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "dd4c3d102acaef2a71a1495951d55fabc8680613" + } + ], + "licenses": [ + { + "license": { + "id": "Zlib" + } + } + ], + "purl": "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "zlib@1.3.2-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "zlib" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.3.2-r0" + } + ] + }, + { + "bom-ref": "pkg:pypi/cffi@2.1.1", + "type": "library", + "name": "cffi", + "version": "2.1.1", + "licenses": [ + { + "license": { + "id": "MIT-0" + } + } + ], + "purl": "pkg:pypi/cffi@2.1.1", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/cffi-2.1.1.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/cryptography@50.0.1", + "type": "library", + "name": "cryptography", + "version": "50.0.1", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:pypi/cryptography@50.0.1", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/cryptography-50.0.1.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/informed-decision@0.2.0", + "type": "library", + "name": "informed-decision", + "version": "0.2.0", + "purl": "pkg:pypi/informed-decision@0.2.0", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/informed_decision-0.2.0.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/pycparser@3.0", + "type": "library", + "name": "pycparser", + "version": "3.0", + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "purl": "pkg:pypi/pycparser@3.0", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/pycparser-3.0.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/pyjwt@2.15.1", + "type": "library", + "name": "PyJWT", + "version": "2.15.1", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:pypi/pyjwt@2.15.1", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/waitress@3.0.2", + "type": "library", + "name": "waitress", + "version": "3.0.2", + "licenses": [ + { + "license": { + "id": "ZPL-2.1" + } + } + ], + "purl": "pkg:pypi/waitress@3.0.2", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/waitress-3.0.2.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + } + ], + "dependencies": [ + { + "ref": "1f2691c9-f1ed-4691-875a-d37ff7a589fd", + "dependsOn": [ + "329952bc-6416-4b32-b882-8b42aad59885", + "pkg:pypi/cffi@2.1.1", + "pkg:pypi/cryptography@50.0.1", + "pkg:pypi/informed-decision@0.2.0", + "pkg:pypi/pycparser@3.0", + "pkg:pypi/pyjwt@2.15.1", + "pkg:pypi/waitress@3.0.2" + ] + }, + { + "ref": "329952bc-6416-4b32-b882-8b42aad59885", + "dependsOn": [ + "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1", + "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:pypi/cffi@2.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/cryptography@50.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/informed-decision@0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/pycparser@3.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/pyjwt@2.15.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/waitress@3.0.2", + "dependsOn": [] + } + ], + "vulnerabilities": [ + { + "id": "CVE-2026-85091", + "source": { + "name": "alpine", + "url": "https://secdb.alpinelinux.org/" + }, + "ratings": [ + { + "source": { + "name": "ubuntu" + }, + "severity": "medium" + } + ], + "cwes": [ + 787 + ], + "description": "zlib versions 1.3.1.2 through 1.3.2 contain a heap buffer overflow vulnerability in the gz_vacate() function when processing non-blocking gzwrite() operations with stale external buffer pointers. Attackers can trigger the overflow by calling gzprintf() or gzvprintf() after a write stall, causing an unchecked memmove() to write beyond the internal input buffer boundary.", + "recommendation": "Upgrade zlib to version 1.3.2-r1", + "advisories": [ + { + "url": "https://avd.aquasec.com/nvd/cve-2026-85091" + }, + { + "url": "https://gist.github.com/thesmartshadow/e0b9481792afb7c31e86fee1ff084490" + }, + { + "url": "https://github.com/madler/zlib" + }, + { + "url": "https://github.com/madler/zlib/blob/v1.3.2/gzwrite.c#L393" + }, + { + "url": "https://www.cve.org/CVERecord?id=CVE-2026-85091" + }, + { + "url": "https://www.vulncheck.com/advisories/zlib-1.3.1.2-through-1.3.2-heap-buffer-overflow-via-gz-vacate" + } + ], + "published": "2026-09-03T13:06:20+00:00", + "updated": "2026-09-09T20:41:07+00:00", + "affects": [ + { + "ref": "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64&distro=3.24.1", + "versions": [ + { + "version": "1.3.2-r0", + "status": "affected" + } + ] + } + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json.log b/docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json.log new file mode 100644 index 0000000..c99e391 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/base-sbom.cdx.json.log @@ -0,0 +1,7 @@ +2026-10-11T09:38:39Z INFO [vuln] Vulnerability scanning is enabled +2026-10-11T09:38:39Z INFO Detected OS family="alpine" version="3.24.1" +2026-10-11T09:38:39Z WARN This OS version is not on the EOL list family="alpine" version="3.24" +2026-10-11T09:38:39Z INFO [alpine] Detecting vulnerabilities... os_version="3.24" repository="3.24" pkg_num=38 +2026-10-11T09:38:39Z INFO Number of language-specific files num=1 +2026-10-11T09:38:39Z INFO [python-pkg] Detecting vulnerabilities... +2026-10-11T09:38:39Z WARN Using severities from other vendors for some vulnerabilities. Read https://trivy.dev/docs/v0.74/guide/scanner/vulnerability#severity-selection for details. diff --git a/docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json b/docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json new file mode 100644 index 0000000..68e0d3d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json @@ -0,0 +1,2333 @@ +{ + "SchemaVersion": 2, + "Trivy": { + "Version": "0.74.0" + }, + "ReportID": "01a12a54-1ac5-757a-a649-a08e22fd3015", + "CreatedAt": "2026-10-11T09:38:37.381362946Z", + "ArtifactID": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "ArtifactName": "/artifact/base-image.tar", + "ArtifactType": "container_image", + "Metadata": { + "Size": 88258048, + "OS": { + "Family": "alpine", + "Name": "3.24.1" + }, + "ImageID": "sha256:f34de21379c4f50ea0361ca1d8296c8e72f989499ad288016b81204997ae4779", + "DiffIDs": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3" + ], + "ImageConfig": { + "architecture": "amd64", + "created": "2026-10-11T01:21:04.787527697Z", + "docker_version": "27.5.1", + "history": [ + { + "created": "2026-06-16T00:01:29.967161902Z", + "created_by": "ADD alpine-minirootfs-3.24.1-x86_64.tar.gz / # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-06-16T00:01:29.967161902Z", + "created_by": "CMD [\"/bin/sh\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV LANG=C.UTF-8", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "RUN /bin/sh -c set -eux; \tapk add --no-cache \t\tca-certificates \t\ttzdata \t; # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PYTHON_VERSION=3.12.14", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:10:30.672225972Z", + "created_by": "RUN /bin/sh -c set -eux; \t\tapk add --no-cache --virtual .build-deps \t\tbluez-dev \t\tbzip2-dev \t\tdpkg-dev dpkg \t\tfindutils \t\tg++ \t\tgcc \t\tgdbm-dev \t\tgnupg \t\tlibc-dev \t\tlibffi-dev \t\tlibnsl-dev \t\tlibtirpc-dev \t\tlinux-headers \t\tmake \t\tncurses-dev \t\topenssl-dev \t\tpax-utils \t\treadline-dev \t\tsqlite-dev \t\ttar \t\ttcl-dev \t\ttk \t\ttk-dev \t\tutil-linux-dev \t\txz \t\txz-dev \t\tzlib-dev \t; \t\twget -O python.tar.xz \"https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz\"; \techo \"$PYTHON_SHA256 *python.tar.xz\" | sha256sum -c -; \twget -O python.tar.xz.asc \"https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc\"; \tGNUPGHOME=\"$(mktemp -d)\"; export GNUPGHOME; \tgpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$GPG_KEY\"; \tgpg --batch --verify python.tar.xz.asc python.tar.xz; \tgpgconf --kill all; \trm -rf \"$GNUPGHOME\" python.tar.xz.asc; \tmkdir -p /usr/src/python; \ttar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; \trm python.tar.xz; \t\tcd /usr/src/python; \tgnuArch=\"$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)\"; \t./configure \t\t--build=\"$gnuArch\" \t\t--enable-loadable-sqlite-extensions \t\t--enable-option-checking=fatal \t\t--enable-shared \t\t$(test \"${gnuArch%%-*}\" != 'riscv64' \u0026\u0026 echo '--with-lto') \t\t--with-ensurepip \t; \tnproc=\"$(nproc)\"; \tEXTRA_CFLAGS=\"-DTHREAD_STACK_SIZE=0x100000\"; \tLDFLAGS=\"${LDFLAGS:-} -Wl,--strip-all\"; \tarch=\"$(apk --print-arch)\"; \tcase \"$arch\" in \t\tx86_64|aarch64) \t\t\tEXTRA_CFLAGS=\"${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer\"; \t\t\t;; \t\tx86) \t\t\t;; \t\t*) \t\t\tEXTRA_CFLAGS=\"${EXTRA_CFLAGS:-} -fno-omit-frame-pointer\"; \t\t\t;; \tesac; \tmake -j \"$nproc\" \t\t\"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}\" \t\t\"LDFLAGS=${LDFLAGS:-}\" \t; \trm python; \tmake -j \"$nproc\" \t\t\"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}\" \t\t\"LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\\$\\$ORIGIN/../lib'\" \t\tpython \t; \tmake install; \t\tcd /; \trm -rf /usr/src/python; \t\tfind /usr/local -depth \t\t\\( \t\t\t\\( -type d -a \\( -name test -o -name tests -o -name idle_test \\) \\) \t\t\t-o \\( -type f -a \\( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \\) \\) \t\t\\) -exec rm -rf '{}' + \t; \t\tfind /usr/local -type f -executable -not \\( -name '*tkinter*' \\) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \t\t| tr ',' '\\n' \t\t| sort -u \t\t| awk 'system(\"[ -e /usr/local/lib/\" $1 \" ]\") == 0 { next } { print \"so:\" $1 }' \t\t| xargs -rt apk add --no-network --virtual .python-rundeps \t; \tapk del --no-network .build-deps; \t\texport PYTHONDONTWRITEBYTECODE=1; \tpython3 --version; \tpip3 --version # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:10:30.782726003Z", + "created_by": "RUN /bin/sh -c set -eux; \tfor src in idle3 pip3 pydoc3 python3 python3-config; do \t\tdst=\"$(echo \"$src\" | tr -d 3)\"; \t\t[ -s \"/usr/local/bin/$src\" ]; \t\t[ ! -e \"/usr/local/bin/$dst\" ]; \t\tln -svT \"$src\" \"/usr/local/bin/$dst\"; \tdone # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:10:30.782726003Z", + "created_by": "CMD [\"python3\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-11T00:49:47.962156876+02:00", + "created_by": "ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-11T00:49:47.962156876+02:00", + "created_by": "RUN /bin/sh -c apk add --no-cache 'libuuid\u003e=2.42.3-r1' \u0026\u0026 addgroup -S -g 10001 informed \u0026\u0026 adduser -S -u 10001 -G informed -H informed # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:55.351944978+02:00", + "created_by": "COPY /opt/venv /opt/venv # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.462092072+02:00", + "created_by": "RUN /bin/sh -c rm -rf /usr/local/bin/pip* /usr/local/lib/python3.12/site-packages/pip* /usr/local/lib/python3.12/site-packages/setuptools* /usr/local/lib/python3.12/site-packages/pkg_resources /opt/venv/bin/pip* /opt/venv/lib/python3.12/site-packages/pip* /opt/venv/lib/python3.12/site-packages/setuptools* /opt/venv/lib/python3.12/site-packages/pkg_resources # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "WORKDIR /app", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "USER 10001:10001", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "EXPOSE [8080/tcp 8081/tcp]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "ENTRYPOINT [\"informed-decision-container\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-11T01:15:11.991443676Z", + "created_by": "/bin/sh -c #(nop) ARG SOURCE_REVISION", + "empty_layer": true + }, + { + "created": "2026-10-11T01:21:04.716126392Z", + "created_by": "/bin/sh -c #(nop) LABEL org.opencontainers.image.revision=3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168 org.opencontainers.image.base.digest=sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173 social.coulomb.source.policy.sha256=9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62 social.coulomb.release.scope=INFD-WP-0009-T04/purpose-overlay-v1", + "empty_layer": true + }, + { + "created": "2026-10-11T01:21:04.787527697Z", + "created_by": "/bin/sh -c #(nop) COPY file:2be9cb36e7253e15733673359cda8caa22986b6888822a008c1b360d909994e0 in /opt/venv/lib/python3.12/site-packages/informed_decision/policy.py " + } + ], + "os": "linux", + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3" + ] + }, + "config": { + "Entrypoint": [ + "informed-decision-container" + ], + "Env": [ + "PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "LANG=C.UTF-8", + "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "PYTHON_VERSION=3.12.14", + "PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "PYTHONDONTWRITEBYTECODE=1", + "PYTHONUNBUFFERED=1" + ], + "Image": "sha256:90f1574f9eda35fa6cb972961beb27a7cb904c36560e381930b0e14065c23883", + "Labels": { + "org.opencontainers.image.base.digest": "sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173", + "org.opencontainers.image.revision": "3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168", + "social.coulomb.release.scope": "INFD-WP-0009-T04/purpose-overlay-v1", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "User": "10001:10001", + "WorkingDir": "/app", + "ExposedPorts": { + "8080/tcp": {}, + "8081/tcp": {} + } + } + }, + "Layers": [ + { + "Size": 8697856, + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "Size": 1538048, + "DiffID": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + { + "Size": 47150592, + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "Size": 5120, + "DiffID": "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe" + }, + { + "Size": 131584, + "DiffID": "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1" + }, + { + "Size": 30705664, + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "Size": 12288, + "DiffID": "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59" + }, + { + "Size": 1536, + "DiffID": "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02" + }, + { + "Size": 15360, + "DiffID": "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3" + } + ] + }, + "Results": [ + { + "Target": "/artifact/base-image.tar (alpine 3.24.1)", + "Class": "os-pkgs", + "Type": "alpine", + "Packages": [ + { + "ID": ".python-rundeps@20260901.001029", + "Name": ".python-rundeps", + "Identifier": { + "PURL": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch\u0026distro=3.24.1", + "UID": "4e26c99fecac1e97" + }, + "Version": "20260901.001029", + "Arch": "noarch", + "DependsOn": [ + "gdbm@1.26-r0", + "libbz2@1.0.8-r6", + "libcrypto3@3.5.8-r0", + "libffi@3.5.2-r1", + "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", + "libuuid@2.42.3-r1", + "musl@1.2.6-r2", + "readline@8.3.3-r1", + "sqlite-libs@3.53.4-r0", + "xz-libs@5.8.3-r0", + "zlib@1.3.2-r0" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:51d0c1e7d88a414345799f0309185c625013ef32", + "AnalyzedBy": "apk" + }, + { + "ID": "alpine-baselayout@3.7.2-r1", + "Name": "alpine-baselayout", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "1b9c543300f8073e" + }, + "Version": "3.7.2-r1", + "Arch": "x86_64", + "SrcName": "alpine-baselayout", + "SrcVersion": "3.7.2-r1", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "alpine-baselayout-data@3.7.2-r1", + "busybox-binsh@1.37.0-r31" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:f0fcfdc2f4da058af6473bc45c4eab62916225b2", + "InstalledFiles": [ + "etc/motd", + "etc/crontabs/root", + "etc/modprobe.d/aliases.conf", + "etc/modprobe.d/blacklist.conf", + "etc/modprobe.d/i386.conf", + "etc/profile.d/20locale.sh", + "etc/profile.d/README", + "etc/profile.d/color_prompt.sh.disabled", + "usr/lib/sysctl.d/00-alpine.conf", + "var/lock", + "var/run", + "var/spool/mail", + "var/spool/cron/crontabs" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "alpine-baselayout-data@3.7.2-r1", + "Name": "alpine-baselayout-data", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "fcc3cd90122d8aa7" + }, + "Version": "3.7.2-r1", + "Arch": "x86_64", + "SrcName": "alpine-baselayout", + "SrcVersion": "3.7.2-r1", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:c6f9bded17d844b6f1b0bb5766d2c35c0d5c8508", + "InstalledFiles": [ + "etc/fstab", + "etc/group", + "etc/hostname", + "etc/hosts", + "etc/inittab", + "etc/modules", + "etc/mtab", + "etc/nsswitch.conf", + "etc/passwd", + "etc/profile", + "etc/protocols", + "etc/services", + "etc/shadow", + "etc/shells", + "etc/sysctl.conf" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "alpine-keys@2.6-r0", + "Name": "alpine-keys", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "cb1f6c8fa74713e0" + }, + "Version": "2.6-r0", + "Arch": "x86_64", + "SrcName": "alpine-keys", + "SrcVersion": "2.6-r0", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:d8d6b80e53c059a77e4915da78ba964f3ffea240", + "InstalledFiles": [ + "etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub", + "etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub", + "etc/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pub", + "usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub", + "usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub", + "usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub", + "usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub", + "usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub", + "usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub", + "usr/share/apk/keys/loongarch64/alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pub", + "usr/share/apk/keys/mips64/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub", + "usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub", + "usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub", + "usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub", + "usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub", + "usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub", + "usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub", + "usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub", + "usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub", + "usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub", + "usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub", + "usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub", + "usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "alpine-release@3.24.1-r0", + "Name": "alpine-release", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "6cfad6f36e1f31aa" + }, + "Version": "3.24.1-r0", + "Arch": "x86_64", + "SrcName": "alpine-base", + "SrcVersion": "3.24.1-r0", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "alpine-keys@2.6-r0" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:bc6912a25cdc7733e0035ed509eceaa4026946e3", + "InstalledFiles": [ + "etc/alpine-release", + "etc/issue", + "etc/os-release", + "etc/secfixes.d/alpine", + "usr/lib/os-release" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "apk-tools@3.0.6-r0", + "Name": "apk-tools", + "Identifier": { + "PURL": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "cb2633c883b17a04" + }, + "Version": "3.0.6-r0", + "Arch": "x86_64", + "SrcName": "apk-tools", + "SrcVersion": "3.0.6-r0", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "ca-certificates-bundle@20260611-r0", + "libapk@3.0.6-r0", + "libcrypto3@3.5.8-r0", + "musl@1.2.6-r2", + "zlib@1.3.2-r0" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:043333589798a1f52e09ae63f026c6c8fa676d34", + "InstalledFiles": [ + "sbin/apk" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "busybox@1.37.0-r31", + "Name": "busybox", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64\u0026distro=3.24.1", + "UID": "771020c43c8440bf" + }, + "Version": "1.37.0-r31", + "Arch": "x86_64", + "SrcName": "busybox", + "SrcVersion": "1.37.0-r31", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Sören Tempel \u003csoeren+alpine@soeren-tempel.net\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:b5405ebc02f7dd8be95b6265c54b243d5456ab8f", + "InstalledFiles": [ + "bin/busybox", + "etc/securetty", + "etc/busybox-paths.d/busybox", + "etc/logrotate.d/acpid", + "etc/network/if-up.d/dad", + "etc/udhcpc/udhcpc.conf", + "usr/share/udhcpc/default.script" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "busybox-binsh@1.37.0-r31", + "Name": "busybox-binsh", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64\u0026distro=3.24.1", + "UID": "1ec8a3d5d2b63297" + }, + "Version": "1.37.0-r31", + "Arch": "x86_64", + "SrcName": "busybox", + "SrcVersion": "1.37.0-r31", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Sören Tempel \u003csoeren+alpine@soeren-tempel.net\u003e", + "DependsOn": [ + "busybox@1.37.0-r31" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:5cbd14acc6f1804c5bac6c77dc2c492f010b0fc7", + "InstalledFiles": [ + "bin/sh" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "ca-certificates@20260611-r0", + "Name": "ca-certificates", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "2a3c316ee83c6198" + }, + "Version": "20260611-r0", + "Arch": "x86_64", + "SrcName": "ca-certificates", + "SrcVersion": "20260611-r0", + "Licenses": [ + "MPL-2.0", + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "busybox-binsh@1.37.0-r31", + "libcrypto3@3.5.8-r0", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + "Digest": "sha1:8f2a04abeb54b331e2970a0a0dffb7bd6bdde567", + "InstalledFiles": [ + "etc/ca-certificates.conf", + "etc/apk/protected_paths.d/ca-certificates.list", + "etc/ca-certificates/update.d/certhash", + "usr/bin/c_rehash", + "usr/sbin/update-ca-certificates", + "usr/share/ca-certificates/mozilla/ACCVRAIZ1.crt", + "usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM.crt", + "usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.crt", + "usr/share/ca-certificates/mozilla/ANF_Secure_Server_Root_CA.crt", + "usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt", + "usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt", + "usr/share/ca-certificates/mozilla/Amazon_Root_CA_2.crt", + "usr/share/ca-certificates/mozilla/Amazon_Root_CA_3.crt", + "usr/share/ca-certificates/mozilla/Amazon_Root_CA_4.crt", + "usr/share/ca-certificates/mozilla/Atos_TrustedRoot_2011.crt", + "usr/share/ca-certificates/mozilla/Atos_TrustedRoot_Root_CA_ECC_TLS_2021.crt", + "usr/share/ca-certificates/mozilla/Atos_TrustedRoot_Root_CA_RSA_TLS_2021.crt", + "usr/share/ca-certificates/mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt", + "usr/share/ca-certificates/mozilla/BJCA_Global_Root_CA1.crt", + "usr/share/ca-certificates/mozilla/BJCA_Global_Root_CA2.crt", + "usr/share/ca-certificates/mozilla/Buypass_Class_2_Root_CA.crt", + "usr/share/ca-certificates/mozilla/Buypass_Class_3_Root_CA.crt", + "usr/share/ca-certificates/mozilla/CA_Disig_Root_R2.crt", + "usr/share/ca-certificates/mozilla/CFCA_EV_ROOT.crt", + "usr/share/ca-certificates/mozilla/COMODO_ECC_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/Certainly_Root_E1.crt", + "usr/share/ca-certificates/mozilla/Certainly_Root_R1.crt", + "usr/share/ca-certificates/mozilla/Certigna_Root_CA.crt", + "usr/share/ca-certificates/mozilla/Certum_EC-384_CA.crt", + "usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA.crt", + "usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA_2.crt", + "usr/share/ca-certificates/mozilla/Certum_Trusted_Root_CA.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_BR_Root_CA_1_2020.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_BR_Root_CA_2_2023.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_EV_Root_CA_1_2020.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_EV_Root_CA_2_2023.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G2.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G3.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G2.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G3.crt", + "usr/share/ca-certificates/mozilla/DigiCert_TLS_ECC_P384_Root_G5.crt", + "usr/share/ca-certificates/mozilla/DigiCert_TLS_RSA4096_Root_G5.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Trusted_Root_G4.crt", + "usr/share/ca-certificates/mozilla/GDCA_TrustAUTH_R5_ROOT.crt", + "usr/share/ca-certificates/mozilla/GTS_Root_R1.crt", + "usr/share/ca-certificates/mozilla/GTS_Root_R3.crt", + "usr/share/ca-certificates/mozilla/GTS_Root_R4.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R4.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R5.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R3.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R6.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_Root_E46.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_Root_R46.crt", + "usr/share/ca-certificates/mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt", + "usr/share/ca-certificates/mozilla/HARICA_TLS_ECC_Root_CA_2021.crt", + "usr/share/ca-certificates/mozilla/HARICA_TLS_RSA_Root_CA_2021.crt", + "usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt", + "usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt", + "usr/share/ca-certificates/mozilla/HiPKI_Root_CA_-_G1.crt", + "usr/share/ca-certificates/mozilla/Hongkong_Post_Root_CA_3.crt", + "usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt", + "usr/share/ca-certificates/mozilla/ISRG_Root_X2.crt", + "usr/share/ca-certificates/mozilla/IdenTrust_Commercial_Root_CA_1.crt", + "usr/share/ca-certificates/mozilla/IdenTrust_Public_Sector_Root_CA_1.crt", + "usr/share/ca-certificates/mozilla/Izenpe.com.crt", + "usr/share/ca-certificates/mozilla/Microsec_e-Szigno_Root_CA_2009.crt", + "usr/share/ca-certificates/mozilla/Microsoft_ECC_Root_Certificate_Authority_2017.crt", + "usr/share/ca-certificates/mozilla/Microsoft_RSA_Root_Certificate_Authority_2017.crt", + "usr/share/ca-certificates/mozilla/NAVER_Global_Root_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt", + "usr/share/ca-certificates/mozilla/OISTE_Server_Root_ECC_G1.crt", + "usr/share/ca-certificates/mozilla/OISTE_Server_Root_RSA_G1.crt", + "usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt", + "usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt", + "usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_1_G3.crt", + "usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2_G3.crt", + "usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3_G3.crt", + "usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt", + "usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt", + "usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_ECC.crt", + "usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_RSA.crt", + "usr/share/ca-certificates/mozilla/SSL.com_TLS_ECC_Root_CA_2022.crt", + "usr/share/ca-certificates/mozilla/SSL.com_TLS_RSA_Root_CA_2022.crt", + "usr/share/ca-certificates/mozilla/SZAFIR_ROOT_CA2.crt", + "usr/share/ca-certificates/mozilla/Sectigo_Public_Server_Authentication_Root_E46.crt", + "usr/share/ca-certificates/mozilla/Sectigo_Public_Server_Authentication_Root_R46.crt", + "usr/share/ca-certificates/mozilla/SecureSign_Root_CA14.crt", + "usr/share/ca-certificates/mozilla/SecureSign_Root_CA15.crt", + "usr/share/ca-certificates/mozilla/Security_Communication_ECC_RootCA1.crt", + "usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt", + "usr/share/ca-certificates/mozilla/Starfield_Root_Certificate_Authority_-_G2.crt", + "usr/share/ca-certificates/mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt", + "usr/share/ca-certificates/mozilla/SwissSign_RSA_TLS_Root_CA_2022_-_1.crt", + "usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_2.crt", + "usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_3.crt", + "usr/share/ca-certificates/mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt", + "usr/share/ca-certificates/mozilla/TWCA_CYBER_Root_CA.crt", + "usr/share/ca-certificates/mozilla/TWCA_Global_Root_CA.crt", + "usr/share/ca-certificates/mozilla/TWCA_Root_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/Telekom_Security_TLS_ECC_Root_2020.crt", + "usr/share/ca-certificates/mozilla/Telekom_Security_TLS_RSA_Root_2023.crt", + "usr/share/ca-certificates/mozilla/Telia_Root_CA_v2.crt", + "usr/share/ca-certificates/mozilla/TrustAsia_Global_Root_CA_G3.crt", + "usr/share/ca-certificates/mozilla/TrustAsia_Global_Root_CA_G4.crt", + "usr/share/ca-certificates/mozilla/TrustAsia_TLS_ECC_Root_CA.crt", + "usr/share/ca-certificates/mozilla/TrustAsia_TLS_RSA_Root_CA.crt", + "usr/share/ca-certificates/mozilla/TunTrust_Root_CA.crt", + "usr/share/ca-certificates/mozilla/UCA_Extended_Validation_Root.crt", + "usr/share/ca-certificates/mozilla/UCA_Global_G2_Root.crt", + "usr/share/ca-certificates/mozilla/USERTrust_ECC_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/USERTrust_RSA_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/certSIGN_Root_CA_G2.crt", + "usr/share/ca-certificates/mozilla/e-Szigno_Root_CA_2017.crt", + "usr/share/ca-certificates/mozilla/e-Szigno_TLS_Root_CA_2023.crt", + "usr/share/ca-certificates/mozilla/ePKI_Root_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/emSign_ECC_Root_CA_-_C3.crt", + "usr/share/ca-certificates/mozilla/emSign_ECC_Root_CA_-_G3.crt", + "usr/share/ca-certificates/mozilla/emSign_Root_CA_-_C1.crt", + "usr/share/ca-certificates/mozilla/emSign_Root_CA_-_G1.crt", + "usr/share/ca-certificates/mozilla/vTrus_ECC_Root_CA.crt", + "usr/share/ca-certificates/mozilla/vTrus_Root_CA.crt" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "ca-certificates-bundle@20260611-r0", + "Name": "ca-certificates-bundle", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "20337c2ea28bef28" + }, + "Version": "20260611-r0", + "Arch": "x86_64", + "SrcName": "ca-certificates", + "SrcVersion": "20260611-r0", + "Licenses": [ + "MPL-2.0", + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:c9534a03750bdfae341f10969016090fc11febbd", + "InstalledFiles": [ + "etc/ssl/cert.pem", + "etc/ssl/certs/ca-certificates.crt", + "etc/ssl1.1/cert.pem", + "etc/ssl1.1/certs" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "gdbm@1.26-r0", + "Name": "gdbm", + "Identifier": { + "PURL": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "5eb1a3f86262ca77" + }, + "Version": "1.26-r0", + "Arch": "x86_64", + "SrcName": "gdbm", + "SrcVersion": "1.26-r0", + "Licenses": [ + "GPL-3.0-or-later" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:619493d8124fe49a8ee1d8f7a1372cf7e3977337", + "InstalledFiles": [ + "usr/lib/libgdbm.so.6", + "usr/lib/libgdbm.so.6.0.0", + "usr/lib/libgdbm_compat.so.4", + "usr/lib/libgdbm_compat.so.4.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "keyutils-libs@1.6.3-r4", + "Name": "keyutils-libs", + "Identifier": { + "PURL": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64\u0026distro=3.24.1", + "UID": "a1a29120eb342032" + }, + "Version": "1.6.3-r4", + "Arch": "x86_64", + "SrcName": "keyutils", + "SrcVersion": "1.6.3-r4", + "Licenses": [ + "GPL-2.0-or-later", + "LGPL-2.0-or-later" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:b7331c96f077fc3522ee4361a441d1097204cd90", + "InstalledFiles": [ + "usr/lib/libkeyutils.so.1", + "usr/lib/libkeyutils.so.1.10" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "krb5-conf@1.0-r2", + "Name": "krb5-conf", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "e7cf94ba8b6dbc33" + }, + "Version": "1.0-r2", + "Arch": "x86_64", + "SrcName": "krb5-conf", + "SrcVersion": "1.0-r2", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:40a11e0690a59e110367b62a80661024e9942a2d", + "InstalledFiles": [ + "etc/krb5.conf" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "krb5-libs@1.22.2-r1", + "Name": "krb5-libs", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "958f8b4a4f087dac" + }, + "Version": "1.22.2-r1", + "Arch": "x86_64", + "SrcName": "krb5", + "SrcVersion": "1.22.2-r1", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "keyutils-libs@1.6.3-r4", + "krb5-conf@1.0-r2", + "libcom_err@1.47.4-r0", + "libcrypto3@3.5.8-r0", + "libssl3@3.5.8-r0", + "libverto@0.3.2-r2", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:ef02346e21b817ff379e4601e5b1fc9760e5e31a", + "InstalledFiles": [ + "usr/lib/libgssapi_krb5.so.2", + "usr/lib/libgssapi_krb5.so.2.2", + "usr/lib/libgssrpc.so.4", + "usr/lib/libgssrpc.so.4.2", + "usr/lib/libk5crypto.so.3", + "usr/lib/libk5crypto.so.3.1", + "usr/lib/libkadm5clnt_mit.so.12", + "usr/lib/libkadm5clnt_mit.so.12.0", + "usr/lib/libkadm5srv_mit.so.12", + "usr/lib/libkadm5srv_mit.so.12.0", + "usr/lib/libkdb5.so.10", + "usr/lib/libkdb5.so.10.0", + "usr/lib/libkrad.so.0", + "usr/lib/libkrad.so.0.0", + "usr/lib/libkrb5.so.3", + "usr/lib/libkrb5.so.3.3", + "usr/lib/libkrb5support.so.0", + "usr/lib/libkrb5support.so.0.1", + "usr/lib/krb5/plugins/kdb/db2.so", + "usr/lib/krb5/plugins/preauth/otp.so", + "usr/lib/krb5/plugins/preauth/spake.so", + "usr/lib/krb5/plugins/preauth/test.so", + "usr/lib/krb5/plugins/tls/k5tls.so" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libapk@3.0.6-r0", + "Name": "libapk", + "Identifier": { + "PURL": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "a35b8b9b3219513a" + }, + "Version": "3.0.6-r0", + "Arch": "x86_64", + "SrcName": "apk-tools", + "SrcVersion": "3.0.6-r0", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "libcrypto3@3.5.8-r0", + "libssl3@3.5.8-r0", + "musl@1.2.6-r2", + "zlib@1.3.2-r0" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:523a8f58104589f74f743d501c81bf6517155378", + "InstalledFiles": [ + "usr/lib/libapk.so.3.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libbz2@1.0.8-r6", + "Name": "libbz2", + "Identifier": { + "PURL": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64\u0026distro=3.24.1", + "UID": "48e17539404e2d56" + }, + "Version": "1.0.8-r6", + "Arch": "x86_64", + "SrcName": "bzip2", + "SrcVersion": "1.0.8-r6", + "Licenses": [ + "bzip-2-1.0.6" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:08566ba5c7af97c25474be8b24e8b48f0116b67d", + "InstalledFiles": [ + "usr/lib/libbz2.so.1", + "usr/lib/libbz2.so.1.0.8" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libcom_err@1.47.4-r0", + "Name": "libcom_err", + "Identifier": { + "PURL": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "3fc35a3f66d192af" + }, + "Version": "1.47.4-r0", + "Arch": "x86_64", + "SrcName": "e2fsprogs", + "SrcVersion": "1.47.4-r0", + "Licenses": [ + "GPL-2.0-or-later", + "LGPL-2.0-or-later", + "BSD-3-Clause", + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:4b9fb5899ea0b1c0cfbb2a2c5952704437d4ecef", + "InstalledFiles": [ + "usr/lib/libcom_err.so.2", + "usr/lib/libcom_err.so.2.1" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libcrypto3@3.5.8-r0", + "Name": "libcrypto3", + "Identifier": { + "PURL": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "4299bba2ba9c96aa" + }, + "Version": "3.5.8-r0", + "Arch": "x86_64", + "SrcName": "openssl", + "SrcVersion": "3.5.8-r0", + "Licenses": [ + "Apache-2.0" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:1b3b9fc0c136f4936932bcb2ec21499f0ae5dfd3", + "InstalledFiles": [ + "etc/ssl/ct_log_list.cnf", + "etc/ssl/ct_log_list.cnf.dist", + "etc/ssl/openssl.cnf", + "etc/ssl/openssl.cnf.dist", + "usr/lib/libcrypto.so.3", + "usr/lib/engines-3/afalg.so", + "usr/lib/engines-3/capi.so", + "usr/lib/engines-3/loader_attic.so", + "usr/lib/engines-3/padlock.so", + "usr/lib/ossl-modules/legacy.so" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libffi@3.5.2-r1", + "Name": "libffi", + "Identifier": { + "PURL": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "d3eaa921287b1ccd" + }, + "Version": "3.5.2-r1", + "Arch": "x86_64", + "SrcName": "libffi", + "SrcVersion": "3.5.2-r1", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:2f7b261f7fcecc4eebd8b330e7f6fb80713bfe3a", + "InstalledFiles": [ + "usr/lib/libffi.so.8", + "usr/lib/libffi.so.8.2.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libintl@1.0-r0", + "Name": "libintl", + "Identifier": { + "PURL": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "25c18808d8fc87e0" + }, + "Version": "1.0-r0", + "Arch": "x86_64", + "SrcName": "gettext", + "SrcVersion": "1.0-r0", + "Licenses": [ + "LGPL-2.1-or-later" + ], + "Maintainer": "Carlo Landmeter \u003cclandmeter@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:282d6642ccac87237e43a864159d73cf5abe7550", + "InstalledFiles": [ + "usr/lib/libintl.so.8", + "usr/lib/libintl.so.8.4.6" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libncursesw@6.6_p20260516-r0", + "Name": "libncursesw", + "Identifier": { + "PURL": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "e8939f45e2191bcc" + }, + "Version": "6.6_p20260516-r0", + "Arch": "x86_64", + "SrcName": "ncurses", + "SrcVersion": "6.6_p20260516-r0", + "Licenses": [ + "X-11" + ], + "Maintainer": "Milan P. Stanić \u003cmps@arvanta.net\u003e", + "DependsOn": [ + "musl@1.2.6-r2", + "ncurses-terminfo-base@6.6_p20260516-r0" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:9f318e6e324d6827274829194cf6ac6afbaded12", + "InstalledFiles": [ + "usr/lib/libncursesw.so.6", + "usr/lib/libncursesw.so.6.6" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libnsl@2.0.1-r2", + "Name": "libnsl", + "Identifier": { + "PURL": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "3d893c60d41da67b" + }, + "Version": "2.0.1-r2", + "Arch": "x86_64", + "SrcName": "libnsl", + "SrcVersion": "2.0.1-r2", + "Licenses": [ + "LGPL-2.0-or-later" + ], + "DependsOn": [ + "libintl@1.0-r0", + "libtirpc@1.3.5-r1", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:5194adbf26560b52be318481a7af294ab05fd795", + "InstalledFiles": [ + "usr/lib/libnsl.so.3", + "usr/lib/libnsl.so.3.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libpanelw@6.6_p20260516-r0", + "Name": "libpanelw", + "Identifier": { + "PURL": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "ef1ad9bb256b373" + }, + "Version": "6.6_p20260516-r0", + "Arch": "x86_64", + "SrcName": "ncurses", + "SrcVersion": "6.6_p20260516-r0", + "Licenses": [ + "X-11" + ], + "Maintainer": "Milan P. Stanić \u003cmps@arvanta.net\u003e", + "DependsOn": [ + "libncursesw@6.6_p20260516-r0", + "musl@1.2.6-r2", + "ncurses-terminfo-base@6.6_p20260516-r0" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:149bdc434232ed11fc5bb975ba519a07154a6f56", + "InstalledFiles": [ + "usr/lib/libpanelw.so.6", + "usr/lib/libpanelw.so.6.6" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libssl3@3.5.8-r0", + "Name": "libssl3", + "Identifier": { + "PURL": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "f290ab59b88b1c4a" + }, + "Version": "3.5.8-r0", + "Arch": "x86_64", + "SrcName": "openssl", + "SrcVersion": "3.5.8-r0", + "Licenses": [ + "Apache-2.0" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "libcrypto3@3.5.8-r0", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:5f9b1e55d821953d2e2b1db322dad70a3b5041ea", + "InstalledFiles": [ + "usr/lib/libssl.so.3" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libtirpc@1.3.5-r1", + "Name": "libtirpc", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "471c8d955ca03be5" + }, + "Version": "1.3.5-r1", + "Arch": "x86_64", + "SrcName": "libtirpc", + "SrcVersion": "1.3.5-r1", + "Licenses": [ + "BSD-3-Clause" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "krb5-libs@1.22.2-r1", + "libtirpc-conf@1.3.5-r1", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:c32865bd86a8b8829d152279cabbc5ac6d430eb2", + "InstalledFiles": [ + "usr/lib/libtirpc.so.3", + "usr/lib/libtirpc.so.3.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libtirpc-conf@1.3.5-r1", + "Name": "libtirpc-conf", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "3437392c14aad33f" + }, + "Version": "1.3.5-r1", + "Arch": "x86_64", + "SrcName": "libtirpc", + "SrcVersion": "1.3.5-r1", + "Licenses": [ + "BSD-3-Clause" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:0c17d9988dc986c90e22f79778df047eca9973ff", + "InstalledFiles": [ + "etc/bindresvport.blacklist", + "etc/netconfig" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libuuid@2.42.3-r1", + "Name": "libuuid", + "Identifier": { + "PURL": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "c444e9cdd1bdda40" + }, + "Version": "2.42.3-r1", + "Arch": "x86_64", + "SrcName": "util-linux", + "SrcVersion": "2.42.3-r1", + "Licenses": [ + "BSD-3-Clause" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1" + }, + "Digest": "sha1:8f041ef637ad75f381cc0c034f2afbbb0303264e", + "InstalledFiles": [ + "usr/lib/libuuid.so.1", + "usr/lib/libuuid.so.1.3.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libverto@0.3.2-r2", + "Name": "libverto", + "Identifier": { + "PURL": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "9df4321a283a6cf6" + }, + "Version": "0.3.2-r2", + "Arch": "x86_64", + "SrcName": "libverto", + "SrcVersion": "0.3.2-r2", + "Licenses": [ + "MIT" + ], + "Maintainer": "Francesco Colista \u003cfcolista@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:73233059338142e4ac6d8fb8bb0074e93da75dc1", + "InstalledFiles": [ + "usr/lib/libverto.so.1", + "usr/lib/libverto.so.1.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "musl@1.2.6-r2", + "Name": "musl", + "Identifier": { + "PURL": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "1f8cb44befe503d4" + }, + "Version": "1.2.6-r2", + "Arch": "x86_64", + "SrcName": "musl", + "SrcVersion": "1.2.6-r2", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:0f7e5827e4e1a73631beda27b78431a8ba240e05", + "InstalledFiles": [ + "lib/ld-musl-x86_64.so.1", + "lib/libc.musl-x86_64.so.1" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "musl-utils@1.2.6-r2", + "Name": "musl-utils", + "Identifier": { + "PURL": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "4497482ec1d943e1" + }, + "Version": "1.2.6-r2", + "Arch": "x86_64", + "SrcName": "musl", + "SrcVersion": "1.2.6-r2", + "Licenses": [ + "MIT", + "BSD-2-Clause", + "GPL-2.0-or-later" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2", + "scanelf@1.3.9-r1" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:75ada3c48d63ec5d87c42fdf934a3fdd11298dc5", + "InstalledFiles": [ + "sbin/ldconfig", + "usr/bin/getconf", + "usr/bin/getent", + "usr/bin/iconv", + "usr/bin/ldd" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "ncurses-terminfo-base@6.6_p20260516-r0", + "Name": "ncurses-terminfo-base", + "Identifier": { + "PURL": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "e7fac5c6a6e9ae8" + }, + "Version": "6.6_p20260516-r0", + "Arch": "x86_64", + "SrcName": "ncurses", + "SrcVersion": "6.6_p20260516-r0", + "Licenses": [ + "X-11" + ], + "Maintainer": "Milan P. Stanić \u003cmps@arvanta.net\u003e", + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:9d551d828e9c8ee52c5801c1d6046828ebf15752", + "InstalledFiles": [ + "etc/terminfo/a/alacritty", + "etc/terminfo/a/ansi", + "etc/terminfo/d/dumb", + "etc/terminfo/g/gnome", + "etc/terminfo/g/gnome-256color", + "etc/terminfo/k/konsole", + "etc/terminfo/k/konsole-256color", + "etc/terminfo/k/konsole-linux", + "etc/terminfo/l/linux", + "etc/terminfo/p/putty", + "etc/terminfo/p/putty-256color", + "etc/terminfo/r/rxvt", + "etc/terminfo/r/rxvt-256color", + "etc/terminfo/s/screen", + "etc/terminfo/s/screen-256color", + "etc/terminfo/s/st-0.6", + "etc/terminfo/s/st-0.7", + "etc/terminfo/s/st-0.8", + "etc/terminfo/s/st-0.8.5", + "etc/terminfo/s/st-16color", + "etc/terminfo/s/st-256color", + "etc/terminfo/s/st-direct", + "etc/terminfo/s/sun", + "etc/terminfo/t/terminator", + "etc/terminfo/t/terminology", + "etc/terminfo/t/terminology-0.6.1", + "etc/terminfo/t/terminology-1.0.0", + "etc/terminfo/t/terminology-1.8.1", + "etc/terminfo/t/tmux", + "etc/terminfo/t/tmux-256color", + "etc/terminfo/v/vt100", + "etc/terminfo/v/vt102", + "etc/terminfo/v/vt200", + "etc/terminfo/v/vt220", + "etc/terminfo/v/vt52", + "etc/terminfo/v/vte", + "etc/terminfo/v/vte-256color", + "etc/terminfo/x/xterm", + "etc/terminfo/x/xterm-256color", + "etc/terminfo/x/xterm-color", + "etc/terminfo/x/xterm-xfree86" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "readline@8.3.3-r1", + "Name": "readline", + "Identifier": { + "PURL": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "f50058781c93e1f2" + }, + "Version": "8.3.3-r1", + "Arch": "x86_64", + "SrcName": "readline", + "SrcVersion": "8.3.3-r1", + "Licenses": [ + "GPL-3.0-or-later" + ], + "Maintainer": "qaqland \u003cqaq@qaq.land\u003e", + "DependsOn": [ + "libncursesw@6.6_p20260516-r0", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:945b16e378bc00e44d89d4de8124bba7647fdf4d", + "InstalledFiles": [ + "etc/inputrc", + "usr/lib/libreadline.so.8", + "usr/lib/libreadline.so.8.3" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "scanelf@1.3.9-r1", + "Name": "scanelf", + "Identifier": { + "PURL": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "936394657a1626fb" + }, + "Version": "1.3.9-r1", + "Arch": "x86_64", + "SrcName": "pax-utils", + "SrcVersion": "1.3.9-r1", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:013f903d0ba219673aebbdd04f74bb5ed82b01f0", + "InstalledFiles": [ + "usr/bin/scanelf" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "sqlite-libs@3.53.4-r0", + "Name": "sqlite-libs", + "Identifier": { + "PURL": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "8b10aee2ccc192de" + }, + "Version": "3.53.4-r0", + "Arch": "x86_64", + "SrcName": "sqlite", + "SrcVersion": "3.53.4-r0", + "Licenses": [ + "blessing" + ], + "Maintainer": "Jingyun Hua \u003chuajingyun@loongson.cn\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:f7630ceb37c232b6609861aeab6cdb9cd120e6fa", + "InstalledFiles": [ + "usr/lib/libsqlite3.so.0", + "usr/lib/libsqlite3.so.3.53.4" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "ssl_client@1.37.0-r31", + "Name": "ssl_client", + "Identifier": { + "PURL": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64\u0026distro=3.24.1", + "UID": "d42e31f15a4ce47a" + }, + "Version": "1.37.0-r31", + "Arch": "x86_64", + "SrcName": "busybox", + "SrcVersion": "1.37.0-r31", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Sören Tempel \u003csoeren+alpine@soeren-tempel.net\u003e", + "DependsOn": [ + "libcrypto3@3.5.8-r0", + "libssl3@3.5.8-r0", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:c220f4a5125a313af733e98def94132bb1e9d40d", + "InstalledFiles": [ + "usr/bin/ssl_client" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "tzdata@2026c-r0", + "Name": "tzdata", + "Identifier": { + "PURL": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "52c6b50eff629f9d" + }, + "Version": "2026c-r0", + "Arch": "x86_64", + "SrcName": "tzdata", + "SrcVersion": "2026c-r0", + "Licenses": [ + "Public-Domain" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + "Digest": "sha1:61f7544ecd8dd63eac23fe3e645702fda92ef02a", + "InstalledFiles": [ + "usr/share/zoneinfo/CET", + "usr/share/zoneinfo/CST6CDT", + "usr/share/zoneinfo/Cuba", + "usr/share/zoneinfo/EET", + "usr/share/zoneinfo/EST", + "usr/share/zoneinfo/EST5EDT", + "usr/share/zoneinfo/Egypt", + "usr/share/zoneinfo/Eire", + "usr/share/zoneinfo/Factory", + "usr/share/zoneinfo/GB", + "usr/share/zoneinfo/GB-Eire", + "usr/share/zoneinfo/GMT", + "usr/share/zoneinfo/GMT+0", + "usr/share/zoneinfo/GMT-0", + "usr/share/zoneinfo/GMT0", + "usr/share/zoneinfo/Greenwich", + "usr/share/zoneinfo/HST", + "usr/share/zoneinfo/Hongkong", + "usr/share/zoneinfo/Iceland", + "usr/share/zoneinfo/Iran", + "usr/share/zoneinfo/Israel", + "usr/share/zoneinfo/Jamaica", + "usr/share/zoneinfo/Japan", + "usr/share/zoneinfo/Kwajalein", + "usr/share/zoneinfo/Libya", + "usr/share/zoneinfo/MET", + "usr/share/zoneinfo/MST", + "usr/share/zoneinfo/MST7MDT", + "usr/share/zoneinfo/NZ", + "usr/share/zoneinfo/NZ-CHAT", + "usr/share/zoneinfo/Navajo", + "usr/share/zoneinfo/PRC", + "usr/share/zoneinfo/PST8PDT", + "usr/share/zoneinfo/Poland", + "usr/share/zoneinfo/Portugal", + "usr/share/zoneinfo/ROC", + "usr/share/zoneinfo/ROK", + "usr/share/zoneinfo/Singapore", + "usr/share/zoneinfo/Turkey", + "usr/share/zoneinfo/UCT", + "usr/share/zoneinfo/UTC", + "usr/share/zoneinfo/Universal", + "usr/share/zoneinfo/W-SU", + "usr/share/zoneinfo/WET", + "usr/share/zoneinfo/Zulu", + "usr/share/zoneinfo/iso3166.tab", + "usr/share/zoneinfo/leap-seconds.list", + "usr/share/zoneinfo/posixrules", + "usr/share/zoneinfo/zone.tab", + "usr/share/zoneinfo/zone1970.tab", + "usr/share/zoneinfo/Africa/Abidjan", + "usr/share/zoneinfo/Africa/Accra", + "usr/share/zoneinfo/Africa/Addis_Ababa", + "usr/share/zoneinfo/Africa/Algiers", + "usr/share/zoneinfo/Africa/Asmara", + "usr/share/zoneinfo/Africa/Asmera", + "usr/share/zoneinfo/Africa/Bamako", + "usr/share/zoneinfo/Africa/Bangui", + "usr/share/zoneinfo/Africa/Banjul", + "usr/share/zoneinfo/Africa/Bissau", + "usr/share/zoneinfo/Africa/Blantyre", + "usr/share/zoneinfo/Africa/Brazzaville", + "usr/share/zoneinfo/Africa/Bujumbura", + "usr/share/zoneinfo/Africa/Cairo", + "usr/share/zoneinfo/Africa/Casablanca", + "usr/share/zoneinfo/Africa/Ceuta", + "usr/share/zoneinfo/Africa/Conakry", + "usr/share/zoneinfo/Africa/Dakar", + "usr/share/zoneinfo/Africa/Dar_es_Salaam", + "usr/share/zoneinfo/Africa/Djibouti", + "usr/share/zoneinfo/Africa/Douala", + "usr/share/zoneinfo/Africa/El_Aaiun", + "usr/share/zoneinfo/Africa/Freetown", + "usr/share/zoneinfo/Africa/Gaborone", + "usr/share/zoneinfo/Africa/Harare", + "usr/share/zoneinfo/Africa/Johannesburg", + "usr/share/zoneinfo/Africa/Juba", + "usr/share/zoneinfo/Africa/Kampala", + "usr/share/zoneinfo/Africa/Khartoum", + "usr/share/zoneinfo/Africa/Kigali", + "usr/share/zoneinfo/Africa/Kinshasa", + "usr/share/zoneinfo/Africa/Lagos", + "usr/share/zoneinfo/Africa/Libreville", + "usr/share/zoneinfo/Africa/Lome", + "usr/share/zoneinfo/Africa/Luanda", + "usr/share/zoneinfo/Africa/Lubumbashi", + "usr/share/zoneinfo/Africa/Lusaka", + "usr/share/zoneinfo/Africa/Malabo", + "usr/share/zoneinfo/Africa/Maputo", + "usr/share/zoneinfo/Africa/Maseru", + "usr/share/zoneinfo/Africa/Mbabane", + "usr/share/zoneinfo/Africa/Mogadishu", + "usr/share/zoneinfo/Africa/Monrovia", + "usr/share/zoneinfo/Africa/Nairobi", + "usr/share/zoneinfo/Africa/Ndjamena", + "usr/share/zoneinfo/Africa/Niamey", + "usr/share/zoneinfo/Africa/Nouakchott", + "usr/share/zoneinfo/Africa/Ouagadougou", + "usr/share/zoneinfo/Africa/Porto-Novo", + "usr/share/zoneinfo/Africa/Sao_Tome", + "usr/share/zoneinfo/Africa/Timbuktu", + "usr/share/zoneinfo/Africa/Tripoli", + "usr/share/zoneinfo/Africa/Tunis", + "usr/share/zoneinfo/Africa/Windhoek", + "usr/share/zoneinfo/America/Adak", + "usr/share/zoneinfo/America/Anchorage", + "usr/share/zoneinfo/America/Anguilla", + "usr/share/zoneinfo/America/Antigua", + "usr/share/zoneinfo/America/Araguaina", + "usr/share/zoneinfo/America/Aruba", + "usr/share/zoneinfo/America/Asuncion", + "usr/share/zoneinfo/America/Atikokan", + "usr/share/zoneinfo/America/Atka", + "usr/share/zoneinfo/America/Bahia", + "usr/share/zoneinfo/America/Bahia_Banderas", + "usr/share/zoneinfo/America/Barbados", + "usr/share/zoneinfo/America/Belem", + "usr/share/zoneinfo/America/Belize", + "usr/share/zoneinfo/America/Blanc-Sablon", + "usr/share/zoneinfo/America/Boa_Vista", + "usr/share/zoneinfo/America/Bogota", + "usr/share/zoneinfo/America/Boise", + "usr/share/zoneinfo/America/Buenos_Aires", + "usr/share/zoneinfo/America/Cambridge_Bay", + "usr/share/zoneinfo/America/Campo_Grande", + "usr/share/zoneinfo/America/Cancun", + "usr/share/zoneinfo/America/Caracas", + "usr/share/zoneinfo/America/Catamarca", + "usr/share/zoneinfo/America/Cayenne", + "usr/share/zoneinfo/America/Cayman", + "usr/share/zoneinfo/America/Chicago", + "usr/share/zoneinfo/America/Chihuahua", + "usr/share/zoneinfo/America/Ciudad_Juarez", + "usr/share/zoneinfo/America/Coral_Harbour", + "usr/share/zoneinfo/America/Cordoba", + "usr/share/zoneinfo/America/Costa_Rica", + "usr/share/zoneinfo/America/Coyhaique", + "usr/share/zoneinfo/America/Creston", + "usr/share/zoneinfo/America/Cuiaba", + "usr/share/zoneinfo/America/Curacao", + "usr/share/zoneinfo/America/Danmarkshavn", + "usr/share/zoneinfo/America/Dawson", + "usr/share/zoneinfo/America/Dawson_Creek", + "usr/share/zoneinfo/America/Denver", + "usr/share/zoneinfo/America/Detroit", + "usr/share/zoneinfo/America/Dominica", + "usr/share/zoneinfo/America/Edmonton", + "usr/share/zoneinfo/America/Eirunepe", + "usr/share/zoneinfo/America/El_Salvador", + "usr/share/zoneinfo/America/Ensenada", + "usr/share/zoneinfo/America/Fort_Nelson", + "usr/share/zoneinfo/America/Fort_Wayne", + "usr/share/zoneinfo/America/Fortaleza", + "usr/share/zoneinfo/America/Glace_Bay", + "usr/share/zoneinfo/America/Godthab", + "usr/share/zoneinfo/America/Goose_Bay", + "usr/share/zoneinfo/America/Grand_Turk", + "usr/share/zoneinfo/America/Grenada", + "usr/share/zoneinfo/America/Guadeloupe", + "usr/share/zoneinfo/America/Guatemala", + "usr/share/zoneinfo/America/Guayaquil", + "usr/share/zoneinfo/America/Guyana", + "usr/share/zoneinfo/America/Halifax", + "usr/share/zoneinfo/America/Havana", + "usr/share/zoneinfo/America/Hermosillo", + "usr/share/zoneinfo/America/Indianapolis", + "usr/share/zoneinfo/America/Inuvik", + "usr/share/zoneinfo/America/Iqaluit", + "usr/share/zoneinfo/America/Jamaica", + "usr/share/zoneinfo/America/Jujuy", + "usr/share/zoneinfo/America/Juneau", + "usr/share/zoneinfo/America/Knox_IN", + "usr/share/zoneinfo/America/Kralendijk", + "usr/share/zoneinfo/America/La_Paz", + "usr/share/zoneinfo/America/Lima", + "usr/share/zoneinfo/America/Los_Angeles", + "usr/share/zoneinfo/America/Louisville", + "usr/share/zoneinfo/America/Lower_Princes", + "usr/share/zoneinfo/America/Maceio", + "usr/share/zoneinfo/America/Managua", + "usr/share/zoneinfo/America/Manaus", + "usr/share/zoneinfo/America/Marigot", + "usr/share/zoneinfo/America/Martinique", + "usr/share/zoneinfo/America/Matamoros", + "usr/share/zoneinfo/America/Mazatlan", + "usr/share/zoneinfo/America/Mendoza", + "usr/share/zoneinfo/America/Menominee", + "usr/share/zoneinfo/America/Merida", + "usr/share/zoneinfo/America/Metlakatla", + "usr/share/zoneinfo/America/Mexico_City", + "usr/share/zoneinfo/America/Miquelon", + "usr/share/zoneinfo/America/Moncton", + "usr/share/zoneinfo/America/Monterrey", + "usr/share/zoneinfo/America/Montevideo", + "usr/share/zoneinfo/America/Montreal", + "usr/share/zoneinfo/America/Montserrat", + "usr/share/zoneinfo/America/Nassau", + "usr/share/zoneinfo/America/New_York", + "usr/share/zoneinfo/America/Nipigon", + "usr/share/zoneinfo/America/Nome", + "usr/share/zoneinfo/America/Noronha", + "usr/share/zoneinfo/America/Nuuk", + "usr/share/zoneinfo/America/Ojinaga", + "usr/share/zoneinfo/America/Panama", + "usr/share/zoneinfo/America/Pangnirtung", + "usr/share/zoneinfo/America/Paramaribo", + "usr/share/zoneinfo/America/Phoenix", + "usr/share/zoneinfo/America/Port-au-Prince", + "usr/share/zoneinfo/America/Port_of_Spain", + "usr/share/zoneinfo/America/Porto_Acre", + "usr/share/zoneinfo/America/Porto_Velho", + "usr/share/zoneinfo/America/Puerto_Rico", + "usr/share/zoneinfo/America/Punta_Arenas", + "usr/share/zoneinfo/America/Rainy_River", + "usr/share/zoneinfo/America/Rankin_Inlet", + "usr/share/zoneinfo/America/Recife", + "usr/share/zoneinfo/America/Regina", + "usr/share/zoneinfo/America/Resolute", + "usr/share/zoneinfo/America/Rio_Branco", + "usr/share/zoneinfo/America/Rosario", + "usr/share/zoneinfo/America/Santa_Isabel", + "usr/share/zoneinfo/America/Santarem", + "usr/share/zoneinfo/America/Santiago", + "usr/share/zoneinfo/America/Santo_Domingo", + "usr/share/zoneinfo/America/Sao_Paulo", + "usr/share/zoneinfo/America/Scoresbysund", + "usr/share/zoneinfo/America/Shiprock", + "usr/share/zoneinfo/America/Sitka", + "usr/share/zoneinfo/America/St_Barthelemy", + "usr/share/zoneinfo/America/St_Johns", + "usr/share/zoneinfo/America/St_Kitts", + "usr/share/zoneinfo/America/St_Lucia", + "usr/share/zoneinfo/America/St_Thomas", + "usr/share/zoneinfo/America/St_Vincent", + "usr/share/zoneinfo/America/Swift_Current", + "usr/share/zoneinfo/America/Tegucigalpa", + "usr/share/zoneinfo/America/Thule", + "usr/share/zoneinfo/America/Thunder_Bay", + "usr/share/zoneinfo/America/Tijuana", + "usr/share/zoneinfo/America/Toronto", + "usr/share/zoneinfo/America/Tortola", + "usr/share/zoneinfo/America/Vancouver", + "usr/share/zoneinfo/America/Virgin", + "usr/share/zoneinfo/America/Whitehorse", + "usr/share/zoneinfo/America/Winnipeg", + "usr/share/zoneinfo/America/Yakutat", + "usr/share/zoneinfo/America/Yellowknife", + "usr/share/zoneinfo/America/Argentina/Buenos_Aires", + "usr/share/zoneinfo/America/Argentina/Catamarca", + "usr/share/zoneinfo/America/Argentina/ComodRivadavia", + "usr/share/zoneinfo/America/Argentina/Cordoba", + "usr/share/zoneinfo/America/Argentina/Jujuy", + "usr/share/zoneinfo/America/Argentina/La_Rioja", + "usr/share/zoneinfo/America/Argentina/Mendoza", + "usr/share/zoneinfo/America/Argentina/Rio_Gallegos", + "usr/share/zoneinfo/America/Argentina/Salta", + "usr/share/zoneinfo/America/Argentina/San_Juan", + "usr/share/zoneinfo/America/Argentina/San_Luis", + "usr/share/zoneinfo/America/Argentina/Tucuman", + "usr/share/zoneinfo/America/Argentina/Ushuaia", + "usr/share/zoneinfo/America/Indiana/Indianapolis", + "usr/share/zoneinfo/America/Indiana/Knox", + "usr/share/zoneinfo/America/Indiana/Marengo", + "usr/share/zoneinfo/America/Indiana/Petersburg", + "usr/share/zoneinfo/America/Indiana/Tell_City", + "usr/share/zoneinfo/America/Indiana/Vevay", + "usr/share/zoneinfo/America/Indiana/Vincennes", + "usr/share/zoneinfo/America/Indiana/Winamac", + "usr/share/zoneinfo/America/Kentucky/Louisville", + "usr/share/zoneinfo/America/Kentucky/Monticello", + "usr/share/zoneinfo/America/North_Dakota/Beulah", + "usr/share/zoneinfo/America/North_Dakota/Center", + "usr/share/zoneinfo/America/North_Dakota/New_Salem", + "usr/share/zoneinfo/Antarctica/Casey", + "usr/share/zoneinfo/Antarctica/Davis", + "usr/share/zoneinfo/Antarctica/DumontDUrville", + "usr/share/zoneinfo/Antarctica/Macquarie", + "usr/share/zoneinfo/Antarctica/Mawson", + "usr/share/zoneinfo/Antarctica/McMurdo", + "usr/share/zoneinfo/Antarctica/Palmer", + "usr/share/zoneinfo/Antarctica/Rothera", + "usr/share/zoneinfo/Antarctica/South_Pole", + "usr/share/zoneinfo/Antarctica/Syowa", + "usr/share/zoneinfo/Antarctica/Troll", + "usr/share/zoneinfo/Antarctica/Vostok", + "usr/share/zoneinfo/Arctic/Longyearbyen", + "usr/share/zoneinfo/Asia/Aden", + "usr/share/zoneinfo/Asia/Almaty", + "usr/share/zoneinfo/Asia/Amman", + "usr/share/zoneinfo/Asia/Anadyr", + "usr/share/zoneinfo/Asia/Aqtau", + "usr/share/zoneinfo/Asia/Aqtobe", + "usr/share/zoneinfo/Asia/Ashgabat", + "usr/share/zoneinfo/Asia/Ashkhabad", + "usr/share/zoneinfo/Asia/Atyrau", + "usr/share/zoneinfo/Asia/Baghdad", + "usr/share/zoneinfo/Asia/Bahrain", + "usr/share/zoneinfo/Asia/Baku", + "usr/share/zoneinfo/Asia/Bangkok", + "usr/share/zoneinfo/Asia/Barnaul", + "usr/share/zoneinfo/Asia/Beirut", + "usr/share/zoneinfo/Asia/Bishkek", + "usr/share/zoneinfo/Asia/Brunei", + "usr/share/zoneinfo/Asia/Calcutta", + "usr/share/zoneinfo/Asia/Chita", + "usr/share/zoneinfo/Asia/Choibalsan", + "usr/share/zoneinfo/Asia/Chongqing", + "usr/share/zoneinfo/Asia/Chungking", + "usr/share/zoneinfo/Asia/Colombo", + "usr/share/zoneinfo/Asia/Dacca", + "usr/share/zoneinfo/Asia/Damascus", + "usr/share/zoneinfo/Asia/Dhaka", + "usr/share/zoneinfo/Asia/Dili", + "usr/share/zoneinfo/Asia/Dubai", + "usr/share/zoneinfo/Asia/Dushanbe", + "usr/share/zoneinfo/Asia/Famagusta", + "usr/share/zoneinfo/Asia/Gaza", + "usr/share/zoneinfo/Asia/Harbin", + "usr/share/zoneinfo/Asia/Hebron", + "usr/share/zoneinfo/Asia/Ho_Chi_Minh", + "usr/share/zoneinfo/Asia/Hong_Kong", + "usr/share/zoneinfo/Asia/Hovd", + "usr/share/zoneinfo/Asia/Irkutsk", + "usr/share/zoneinfo/Asia/Istanbul", + "usr/share/zoneinfo/Asia/Jakarta", + "usr/share/zoneinfo/Asia/Jayapura", + "usr/share/zoneinfo/Asia/Jerusalem", + "usr/share/zoneinfo/Asia/Kabul", + "usr/share/zoneinfo/Asia/Kamchatka", + "usr/share/zoneinfo/Asia/Karachi", + "usr/share/zoneinfo/Asia/Kashgar", + "usr/share/zoneinfo/Asia/Kathmandu", + "usr/share/zoneinfo/Asia/Katmandu", + "usr/share/zoneinfo/Asia/Khandyga", + "usr/share/zoneinfo/Asia/Kolkata", + "usr/share/zoneinfo/Asia/Krasnoyarsk", + "usr/share/zoneinfo/Asia/Kuala_Lumpur", + "usr/share/zoneinfo/Asia/Kuching", + "usr/share/zoneinfo/Asia/Kuwait", + "usr/share/zoneinfo/Asia/Macao", + "usr/share/zoneinfo/Asia/Macau", + "usr/share/zoneinfo/Asia/Magadan", + "usr/share/zoneinfo/Asia/Makassar", + "usr/share/zoneinfo/Asia/Manila", + "usr/share/zoneinfo/Asia/Muscat", + "usr/share/zoneinfo/Asia/Nicosia", + "usr/share/zoneinfo/Asia/Novokuznetsk", + "usr/share/zoneinfo/Asia/Novosibirsk", + "usr/share/zoneinfo/Asia/Omsk", + "usr/share/zoneinfo/Asia/Oral", + "usr/share/zoneinfo/Asia/Phnom_Penh", + "usr/share/zoneinfo/Asia/Pontianak", + "usr/share/zoneinfo/Asia/Pyongyang", + "usr/share/zoneinfo/Asia/Qatar", + "usr/share/zoneinfo/Asia/Qostanay", + "usr/share/zoneinfo/Asia/Qyzylorda", + "usr/share/zoneinfo/Asia/Rangoon", + "usr/share/zoneinfo/Asia/Riyadh", + "usr/share/zoneinfo/Asia/Saigon", + "usr/share/zoneinfo/Asia/Sakhalin", + "usr/share/zoneinfo/Asia/Samarkand", + "usr/share/zoneinfo/Asia/Seoul", + "usr/share/zoneinfo/Asia/Shanghai", + "usr/share/zoneinfo/Asia/Singapore", + "usr/share/zoneinfo/Asia/Srednekolymsk", + "usr/share/zoneinfo/Asia/Taipei", + "usr/share/zoneinfo/Asia/Tashkent", + "usr/share/zoneinfo/Asia/Tbilisi", + "usr/share/zoneinfo/Asia/Tehran", + "usr/share/zoneinfo/Asia/Tel_Aviv", + "usr/share/zoneinfo/Asia/Thimbu", + "usr/share/zoneinfo/Asia/Thimphu", + "usr/share/zoneinfo/Asia/Tokyo", + "usr/share/zoneinfo/Asia/Tomsk", + "usr/share/zoneinfo/Asia/Ujung_Pandang", + "usr/share/zoneinfo/Asia/Ulaanbaatar", + "usr/share/zoneinfo/Asia/Ulan_Bator", + "usr/share/zoneinfo/Asia/Urumqi", + "usr/share/zoneinfo/Asia/Ust-Nera", + "usr/share/zoneinfo/Asia/Vientiane", + "usr/share/zoneinfo/Asia/Vladivostok", + "usr/share/zoneinfo/Asia/Yakutsk", + "usr/share/zoneinfo/Asia/Yangon", + "usr/share/zoneinfo/Asia/Yekaterinburg", + "usr/share/zoneinfo/Asia/Yerevan", + "usr/share/zoneinfo/Atlantic/Azores", + "usr/share/zoneinfo/Atlantic/Bermuda", + "usr/share/zoneinfo/Atlantic/Canary", + "usr/share/zoneinfo/Atlantic/Cape_Verde", + "usr/share/zoneinfo/Atlantic/Faeroe", + "usr/share/zoneinfo/Atlantic/Faroe", + "usr/share/zoneinfo/Atlantic/Jan_Mayen", + "usr/share/zoneinfo/Atlantic/Madeira", + "usr/share/zoneinfo/Atlantic/Reykjavik", + "usr/share/zoneinfo/Atlantic/South_Georgia", + "usr/share/zoneinfo/Atlantic/St_Helena", + "usr/share/zoneinfo/Atlantic/Stanley", + "usr/share/zoneinfo/Australia/ACT", + "usr/share/zoneinfo/Australia/Adelaide", + "usr/share/zoneinfo/Australia/Brisbane", + "usr/share/zoneinfo/Australia/Broken_Hill", + "usr/share/zoneinfo/Australia/Canberra", + "usr/share/zoneinfo/Australia/Currie", + "usr/share/zoneinfo/Australia/Darwin", + "usr/share/zoneinfo/Australia/Eucla", + "usr/share/zoneinfo/Australia/Hobart", + "usr/share/zoneinfo/Australia/LHI", + "usr/share/zoneinfo/Australia/Lindeman", + "usr/share/zoneinfo/Australia/Lord_Howe", + "usr/share/zoneinfo/Australia/Melbourne", + "usr/share/zoneinfo/Australia/NSW", + "usr/share/zoneinfo/Australia/North", + "usr/share/zoneinfo/Australia/Perth", + "usr/share/zoneinfo/Australia/Queensland", + "usr/share/zoneinfo/Australia/South", + "usr/share/zoneinfo/Australia/Sydney", + "usr/share/zoneinfo/Australia/Tasmania", + "usr/share/zoneinfo/Australia/Victoria", + "usr/share/zoneinfo/Australia/West", + "usr/share/zoneinfo/Australia/Yancowinna", + "usr/share/zoneinfo/Brazil/Acre", + "usr/share/zoneinfo/Brazil/DeNoronha", + "usr/share/zoneinfo/Brazil/East", + "usr/share/zoneinfo/Brazil/West", + "usr/share/zoneinfo/Canada/Atlantic", + "usr/share/zoneinfo/Canada/Central", + "usr/share/zoneinfo/Canada/Eastern", + "usr/share/zoneinfo/Canada/Mountain", + "usr/share/zoneinfo/Canada/Newfoundland", + "usr/share/zoneinfo/Canada/Pacific", + "usr/share/zoneinfo/Canada/Saskatchewan", + "usr/share/zoneinfo/Canada/Yukon", + "usr/share/zoneinfo/Chile/Continental", + "usr/share/zoneinfo/Chile/EasterIsland", + "usr/share/zoneinfo/Etc/GMT", + "usr/share/zoneinfo/Etc/GMT+0", + "usr/share/zoneinfo/Etc/GMT+1", + "usr/share/zoneinfo/Etc/GMT+10", + "usr/share/zoneinfo/Etc/GMT+11", + "usr/share/zoneinfo/Etc/GMT+12", + "usr/share/zoneinfo/Etc/GMT+2", + "usr/share/zoneinfo/Etc/GMT+3", + "usr/share/zoneinfo/Etc/GMT+4", + "usr/share/zoneinfo/Etc/GMT+5", + "usr/share/zoneinfo/Etc/GMT+6", + "usr/share/zoneinfo/Etc/GMT+7", + "usr/share/zoneinfo/Etc/GMT+8", + "usr/share/zoneinfo/Etc/GMT+9", + "usr/share/zoneinfo/Etc/GMT-0", + "usr/share/zoneinfo/Etc/GMT-1", + "usr/share/zoneinfo/Etc/GMT-10", + "usr/share/zoneinfo/Etc/GMT-11", + "usr/share/zoneinfo/Etc/GMT-12", + "usr/share/zoneinfo/Etc/GMT-13", + "usr/share/zoneinfo/Etc/GMT-14", + "usr/share/zoneinfo/Etc/GMT-2", + "usr/share/zoneinfo/Etc/GMT-3", + "usr/share/zoneinfo/Etc/GMT-4", + "usr/share/zoneinfo/Etc/GMT-5", + "usr/share/zoneinfo/Etc/GMT-6", + "usr/share/zoneinfo/Etc/GMT-7", + "usr/share/zoneinfo/Etc/GMT-8", + "usr/share/zoneinfo/Etc/GMT-9", + "usr/share/zoneinfo/Etc/GMT0", + "usr/share/zoneinfo/Etc/Greenwich", + "usr/share/zoneinfo/Etc/UCT", + "usr/share/zoneinfo/Etc/UTC", + "usr/share/zoneinfo/Etc/Universal", + "usr/share/zoneinfo/Etc/Zulu", + "usr/share/zoneinfo/Europe/Amsterdam", + "usr/share/zoneinfo/Europe/Andorra", + "usr/share/zoneinfo/Europe/Astrakhan", + "usr/share/zoneinfo/Europe/Athens", + "usr/share/zoneinfo/Europe/Belfast", + "usr/share/zoneinfo/Europe/Belgrade", + "usr/share/zoneinfo/Europe/Berlin", + "usr/share/zoneinfo/Europe/Bratislava", + "usr/share/zoneinfo/Europe/Brussels", + "usr/share/zoneinfo/Europe/Bucharest", + "usr/share/zoneinfo/Europe/Budapest", + "usr/share/zoneinfo/Europe/Busingen", + "usr/share/zoneinfo/Europe/Chisinau", + "usr/share/zoneinfo/Europe/Copenhagen", + "usr/share/zoneinfo/Europe/Dublin", + "usr/share/zoneinfo/Europe/Gibraltar", + "usr/share/zoneinfo/Europe/Guernsey", + "usr/share/zoneinfo/Europe/Helsinki", + "usr/share/zoneinfo/Europe/Isle_of_Man", + "usr/share/zoneinfo/Europe/Istanbul", + "usr/share/zoneinfo/Europe/Jersey", + "usr/share/zoneinfo/Europe/Kaliningrad", + "usr/share/zoneinfo/Europe/Kiev", + "usr/share/zoneinfo/Europe/Kirov", + "usr/share/zoneinfo/Europe/Kyiv", + "usr/share/zoneinfo/Europe/Lisbon", + "usr/share/zoneinfo/Europe/Ljubljana", + "usr/share/zoneinfo/Europe/London", + "usr/share/zoneinfo/Europe/Luxembourg", + "usr/share/zoneinfo/Europe/Madrid", + "usr/share/zoneinfo/Europe/Malta", + "usr/share/zoneinfo/Europe/Mariehamn", + "usr/share/zoneinfo/Europe/Minsk", + "usr/share/zoneinfo/Europe/Monaco", + "usr/share/zoneinfo/Europe/Moscow", + "usr/share/zoneinfo/Europe/Nicosia", + "usr/share/zoneinfo/Europe/Oslo", + "usr/share/zoneinfo/Europe/Paris", + "usr/share/zoneinfo/Europe/Podgorica", + "usr/share/zoneinfo/Europe/Prague", + "usr/share/zoneinfo/Europe/Riga", + "usr/share/zoneinfo/Europe/Rome", + "usr/share/zoneinfo/Europe/Samara", + "usr/share/zoneinfo/Europe/San_Marino", + "usr/share/zoneinfo/Europe/Sarajevo", + "usr/share/zoneinfo/Europe/Saratov", + "usr/share/zoneinfo/Europe/Simferopol", + "usr/share/zoneinfo/Europe/Skopje", + "usr/share/zoneinfo/Europe/Sofia", + "usr/share/zoneinfo/Europe/Stockholm", + "usr/share/zoneinfo/Europe/Tallinn", + "usr/share/zoneinfo/Europe/Tirane", + "usr/share/zoneinfo/Europe/Tiraspol", + "usr/share/zoneinfo/Europe/Ulyanovsk", + "usr/share/zoneinfo/Europe/Uzhgorod", + "usr/share/zoneinfo/Europe/Vaduz", + "usr/share/zoneinfo/Europe/Vatican", + "usr/share/zoneinfo/Europe/Vienna", + "usr/share/zoneinfo/Europe/Vilnius", + "usr/share/zoneinfo/Europe/Volgograd", + "usr/share/zoneinfo/Europe/Warsaw", + "usr/share/zoneinfo/Europe/Zagreb", + "usr/share/zoneinfo/Europe/Zaporozhye", + "usr/share/zoneinfo/Europe/Zurich", + "usr/share/zoneinfo/Indian/Antananarivo", + "usr/share/zoneinfo/Indian/Chagos", + "usr/share/zoneinfo/Indian/Christmas", + "usr/share/zoneinfo/Indian/Cocos", + "usr/share/zoneinfo/Indian/Comoro", + "usr/share/zoneinfo/Indian/Kerguelen", + "usr/share/zoneinfo/Indian/Mahe", + "usr/share/zoneinfo/Indian/Maldives", + "usr/share/zoneinfo/Indian/Mauritius", + "usr/share/zoneinfo/Indian/Mayotte", + "usr/share/zoneinfo/Indian/Reunion", + "usr/share/zoneinfo/Mexico/BajaNorte", + "usr/share/zoneinfo/Mexico/BajaSur", + "usr/share/zoneinfo/Mexico/General", + "usr/share/zoneinfo/Pacific/Apia", + "usr/share/zoneinfo/Pacific/Auckland", + "usr/share/zoneinfo/Pacific/Bougainville", + "usr/share/zoneinfo/Pacific/Chatham", + "usr/share/zoneinfo/Pacific/Chuuk", + "usr/share/zoneinfo/Pacific/Easter", + "usr/share/zoneinfo/Pacific/Efate", + "usr/share/zoneinfo/Pacific/Enderbury", + "usr/share/zoneinfo/Pacific/Fakaofo", + "usr/share/zoneinfo/Pacific/Fiji", + "usr/share/zoneinfo/Pacific/Funafuti", + "usr/share/zoneinfo/Pacific/Galapagos", + "usr/share/zoneinfo/Pacific/Gambier", + "usr/share/zoneinfo/Pacific/Guadalcanal", + "usr/share/zoneinfo/Pacific/Guam", + "usr/share/zoneinfo/Pacific/Honolulu", + "usr/share/zoneinfo/Pacific/Johnston", + "usr/share/zoneinfo/Pacific/Kanton", + "usr/share/zoneinfo/Pacific/Kiritimati", + "usr/share/zoneinfo/Pacific/Kosrae", + "usr/share/zoneinfo/Pacific/Kwajalein", + "usr/share/zoneinfo/Pacific/Majuro", + "usr/share/zoneinfo/Pacific/Marquesas", + "usr/share/zoneinfo/Pacific/Midway", + "usr/share/zoneinfo/Pacific/Nauru", + "usr/share/zoneinfo/Pacific/Niue", + "usr/share/zoneinfo/Pacific/Norfolk", + "usr/share/zoneinfo/Pacific/Noumea", + "usr/share/zoneinfo/Pacific/Pago_Pago", + "usr/share/zoneinfo/Pacific/Palau", + "usr/share/zoneinfo/Pacific/Pitcairn", + "usr/share/zoneinfo/Pacific/Pohnpei", + "usr/share/zoneinfo/Pacific/Ponape", + "usr/share/zoneinfo/Pacific/Port_Moresby", + "usr/share/zoneinfo/Pacific/Rarotonga", + "usr/share/zoneinfo/Pacific/Saipan", + "usr/share/zoneinfo/Pacific/Samoa", + "usr/share/zoneinfo/Pacific/Tahiti", + "usr/share/zoneinfo/Pacific/Tarawa", + "usr/share/zoneinfo/Pacific/Tongatapu", + "usr/share/zoneinfo/Pacific/Truk", + "usr/share/zoneinfo/Pacific/Wake", + "usr/share/zoneinfo/Pacific/Wallis", + "usr/share/zoneinfo/Pacific/Yap", + "usr/share/zoneinfo/US/Alaska", + "usr/share/zoneinfo/US/Aleutian", + "usr/share/zoneinfo/US/Arizona", + "usr/share/zoneinfo/US/Central", + "usr/share/zoneinfo/US/East-Indiana", + "usr/share/zoneinfo/US/Eastern", + "usr/share/zoneinfo/US/Hawaii", + "usr/share/zoneinfo/US/Indiana-Starke", + "usr/share/zoneinfo/US/Michigan", + "usr/share/zoneinfo/US/Mountain", + "usr/share/zoneinfo/US/Pacific", + "usr/share/zoneinfo/US/Samoa" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "xz-libs@5.8.3-r0", + "Name": "xz-libs", + "Identifier": { + "PURL": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "1ae658a5f132a091" + }, + "Version": "5.8.3-r0", + "Arch": "x86_64", + "SrcName": "xz", + "SrcVersion": "5.8.3-r0", + "Licenses": [ + "GPL-2.0-or-later", + "0BSD", + "Public-Domain", + "LGPL-2.1-or-later" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:4c92c5be0c5bef404e93c880eba9037a9b147347", + "InstalledFiles": [ + "usr/lib/liblzma.so.5", + "usr/lib/liblzma.so.5.8.3" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "zlib@1.3.2-r0", + "Name": "zlib", + "Identifier": { + "PURL": "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "e37054a2982d6c16" + }, + "Version": "1.3.2-r0", + "Arch": "x86_64", + "SrcName": "zlib", + "SrcVersion": "1.3.2-r0", + "Licenses": [ + "Zlib" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:dd4c3d102acaef2a71a1495951d55fabc8680613", + "InstalledFiles": [ + "usr/lib/libz.so.1", + "usr/lib/libz.so.1.3.2" + ], + "AnalyzedBy": "apk" + } + ], + "Vulnerabilities": [ + { + "VulnerabilityID": "CVE-2026-85091", + "PkgID": "zlib@1.3.2-r0", + "PkgName": "zlib", + "PkgIdentifier": { + "PURL": "pkg:apk/alpine/zlib@1.3.2-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "e37054a2982d6c16" + }, + "InstalledVersion": "1.3.2-r0", + "FixedVersion": "1.3.2-r1", + "Status": "fixed", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "PrimaryURL": "https://avd.aquasec.com/nvd/cve-2026-85091", + "DataSource": { + "ID": "alpine", + "Name": "Alpine Secdb", + "URL": "https://secdb.alpinelinux.org/" + }, + "Fingerprint": "sha256:ceeda859a20a0899c3ebfc8ed22f7f9935b25d2fac00d05c203ecc67a4118973", + "Title": "zlib versions 1.3.1.2 through 1.3.2 contain a heap buffer overflow vul ...", + "Description": "zlib versions 1.3.1.2 through 1.3.2 contain a heap buffer overflow vulnerability in the gz_vacate() function when processing non-blocking gzwrite() operations with stale external buffer pointers. Attackers can trigger the overflow by calling gzprintf() or gzvprintf() after a write stall, causing an unchecked memmove() to write beyond the internal input buffer boundary.", + "Severity": "MEDIUM", + "CweIDs": [ + "CWE-787" + ], + "VendorSeverity": { + "ubuntu": 2 + }, + "References": [ + "https://gist.github.com/thesmartshadow/e0b9481792afb7c31e86fee1ff084490", + "https://github.com/madler/zlib", + "https://github.com/madler/zlib/blob/v1.3.2/gzwrite.c#L393", + "https://www.cve.org/CVERecord?id=CVE-2026-85091", + "https://www.vulncheck.com/advisories/zlib-1.3.1.2-through-1.3.2-heap-buffer-overflow-via-gz-vacate" + ], + "PublishedDate": "2026-09-03T13:06:20.573Z", + "LastModifiedDate": "2026-09-09T20:41:07.123Z" + } + ] + }, + { + "Target": "Python", + "Class": "lang-pkgs", + "Type": "python-pkg", + "Packages": [ + { + "Name": "PyJWT", + "Identifier": { + "PURL": "pkg:pypi/pyjwt@2.15.1", + "UID": "d3f5f9a421b8abc9" + }, + "Version": "2.15.1", + "Licenses": [ + "MIT" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "cffi", + "Identifier": { + "PURL": "pkg:pypi/cffi@2.1.1", + "UID": "21042e2f37e33c05" + }, + "Version": "2.1.1", + "Licenses": [ + "MIT-0" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/cffi-2.1.1.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "cryptography", + "Identifier": { + "PURL": "pkg:pypi/cryptography@50.0.1", + "UID": "dcb3df6383fe2a60" + }, + "Version": "50.0.1", + "Licenses": [ + "Apache-2.0 OR BSD-3-Clause" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/cryptography-50.0.1.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "informed-decision", + "Identifier": { + "PURL": "pkg:pypi/informed-decision@0.2.0", + "UID": "7989f2afae8ff568" + }, + "Version": "0.2.0", + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/informed_decision-0.2.0.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "pycparser", + "Identifier": { + "PURL": "pkg:pypi/pycparser@3.0", + "UID": "e5a4d03f15a695ff" + }, + "Version": "3.0", + "Licenses": [ + "BSD-3-Clause" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/pycparser-3.0.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "waitress", + "Identifier": { + "PURL": "pkg:pypi/waitress@3.0.2", + "UID": "806e218e1c1e85f" + }, + "Version": "3.0.2", + "Licenses": [ + "ZPL-2.1" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/waitress-3.0.2.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + } + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json.log b/docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json.log new file mode 100644 index 0000000..35a0269 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/base-trivy-full.json.log @@ -0,0 +1,8 @@ +2026-10-11T09:38:36Z INFO [vuln] Vulnerability scanning is enabled +2026-10-11T09:38:37Z INFO [python] Licenses acquired from one or more METADATA files may be subject to additional terms. Use `--debug` flag to see all affected packages. +2026-10-11T09:38:37Z INFO Detected OS family="alpine" version="3.24.1" +2026-10-11T09:38:37Z WARN This OS version is not on the EOL list family="alpine" version="3.24" +2026-10-11T09:38:37Z INFO [alpine] Detecting vulnerabilities... os_version="3.24" repository="3.24" pkg_num=38 +2026-10-11T09:38:37Z INFO Number of language-specific files num=1 +2026-10-11T09:38:37Z INFO [python-pkg] Detecting vulnerabilities... +2026-10-11T09:38:37Z WARN Using severities from other vendors for some vulnerabilities. Read https://trivy.dev/docs/v0.74/guide/scanner/vulnerability#severity-selection for details. diff --git a/docs/evidence/2026-10-11-zlib-published-verification/candidate-runtime.json b/docs/evidence/2026-10-11-zlib-published-verification/candidate-runtime.json new file mode 100644 index 0000000..f194470 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/candidate-runtime.json @@ -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-zlib-published-verification/ci-publication-observation.json b/docs/evidence/2026-10-11-zlib-published-verification/ci-publication-observation.json new file mode 100644 index 0000000..67f75a0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/ci-publication-observation.json @@ -0,0 +1 @@ +{"workflow_runs":[{"id":11534,"name":"publish-candidate","head_branch":"main","head_sha":"9b4bb25d325698ae543e7e8a8a3c3592db1f58fc","run_number":4,"event":"push","display_title":"Prepare independently reviewed zlib-only image candidate","status":"success","workflow_id":"zlib-overlay-image.yaml","url":"https://forgejo.coulomb.social/coulomb/informed-decision/actions/runs/4","created_at":"2026-10-11T09:36:59Z","updated_at":"2026-10-11T09:37:12Z","run_started_at":"2026-10-11T09:36:59Z"},{"id":11484,"name":"publish-candidate","head_branch":"main","head_sha":"3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168","run_number":3,"event":"push","display_title":"Prepare readable overlay context with the admitted legacy builder","status":"success","workflow_id":"purpose-overlay-image.yaml","url":"https://forgejo.coulomb.social/coulomb/informed-decision/actions/runs/3","created_at":"2026-10-11T01:20:59Z","updated_at":"2026-10-11T01:21:08Z","run_started_at":"2026-10-11T01:20:59Z"},{"id":11483,"name":"publish-candidate","head_branch":"main","head_sha":"acecad887378120b62bd3513b4f04e9fb5cea924","run_number":2,"event":"push","display_title":"Keep overlay module readable by the inherited service user","status":"failure","workflow_id":"purpose-overlay-image.yaml","url":"https://forgejo.coulomb.social/coulomb/informed-decision/actions/runs/2","created_at":"2026-10-11T01:18:25Z","updated_at":"2026-10-11T01:18:31Z","run_started_at":"2026-10-11T01:18:25Z"},{"id":11482,"name":"publish-candidate","head_branch":"main","head_sha":"f66de505b301c03d2fddfa90fd18a53347c62858","run_number":1,"event":"push","display_title":"Publish source-bound advisory-purpose overlay candidates through owner CI","status":"failure","workflow_id":"purpose-overlay-image.yaml","url":"https://forgejo.coulomb.social/coulomb/informed-decision/actions/runs/1","created_at":"2026-10-11T01:15:05Z","updated_at":"2026-10-11T01:15:13Z","run_started_at":"2026-10-11T01:15:05Z"}],"total_count":4} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/image-config.json b/docs/evidence/2026-10-11-zlib-published-verification/image-config.json new file mode 100644 index 0000000..57c7134 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/image-config.json @@ -0,0 +1,261 @@ +{ + "architecture": "amd64", + "config": { + "Hostname": "", + "Domainname": "", + "User": "10001:10001", + "AttachStdin": false, + "AttachStdout": false, + "AttachStderr": false, + "ExposedPorts": { + "8080/tcp": {}, + "8081/tcp": {} + }, + "Tty": false, + "OpenStdin": false, + "StdinOnce": false, + "Env": [ + "PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "LANG=C.UTF-8", + "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "PYTHON_VERSION=3.12.14", + "PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "PYTHONDONTWRITEBYTECODE=1", + "PYTHONUNBUFFERED=1" + ], + "Cmd": null, + "Image": "sha256:b0f10723d8eb4962d7eb1a0cc1d1b24c3113d1f67576916d85080f2f2d46c2e7", + "Volumes": null, + "WorkingDir": "/app", + "Entrypoint": [ + "informed-decision-container" + ], + "OnBuild": null, + "Labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + } + }, + "container": "21ba693e742e213525b526f83be1ea03cfbd875a87b6bce473e01fb8c38a5b91", + "container_config": { + "Hostname": "21ba693e742e", + "Domainname": "", + "User": "10001:10001", + "AttachStdin": false, + "AttachStdout": false, + "AttachStderr": false, + "ExposedPorts": { + "8080/tcp": {}, + "8081/tcp": {} + }, + "Tty": false, + "OpenStdin": false, + "StdinOnce": false, + "Env": [ + "PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "LANG=C.UTF-8", + "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "PYTHON_VERSION=3.12.14", + "PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "PYTHONDONTWRITEBYTECODE=1", + "PYTHONUNBUFFERED=1" + ], + "Cmd": [ + "/bin/sh", + "-c", + "#(nop) ", + "LABEL org.opencontainers.image.revision=9b4bb25d325698ae543e7e8a8a3c3592db1f58fc org.opencontainers.image.base.digest=sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a social.coulomb.source.context.sha256=c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d social.coulomb.source.policy.sha256=9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62 social.coulomb.release.scope=INFD-WP-0009-T05/zlib-85091-r1" + ], + "Image": "sha256:b0f10723d8eb4962d7eb1a0cc1d1b24c3113d1f67576916d85080f2f2d46c2e7", + "Volumes": null, + "WorkingDir": "/app", + "Entrypoint": [ + "informed-decision-container" + ], + "OnBuild": null, + "Labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + } + }, + "created": "2026-10-11T09:37:06.27375084Z", + "docker_version": "27.5.1", + "history": [ + { + "created": "2026-06-16T00:01:29.967161902Z", + "created_by": "ADD alpine-minirootfs-3.24.1-x86_64.tar.gz / # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-06-16T00:01:29.967161902Z", + "created_by": "CMD [\"/bin/sh\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV LANG=C.UTF-8", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "RUN /bin/sh -c set -eux; \tapk add --no-cache \t\tca-certificates \t\ttzdata \t; # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PYTHON_VERSION=3.12.14", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:10:30.672225972Z", + "created_by": "RUN /bin/sh -c set -eux; \t\tapk add --no-cache --virtual .build-deps \t\tbluez-dev \t\tbzip2-dev \t\tdpkg-dev dpkg \t\tfindutils \t\tg++ \t\tgcc \t\tgdbm-dev \t\tgnupg \t\tlibc-dev \t\tlibffi-dev \t\tlibnsl-dev \t\tlibtirpc-dev \t\tlinux-headers \t\tmake \t\tncurses-dev \t\topenssl-dev \t\tpax-utils \t\treadline-dev \t\tsqlite-dev \t\ttar \t\ttcl-dev \t\ttk \t\ttk-dev \t\tutil-linux-dev \t\txz \t\txz-dev \t\tzlib-dev \t; \t\twget -O python.tar.xz \"https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz\"; \techo \"$PYTHON_SHA256 *python.tar.xz\" | sha256sum -c -; \twget -O python.tar.xz.asc \"https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc\"; \tGNUPGHOME=\"$(mktemp -d)\"; export GNUPGHOME; \tgpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$GPG_KEY\"; \tgpg --batch --verify python.tar.xz.asc python.tar.xz; \tgpgconf --kill all; \trm -rf \"$GNUPGHOME\" python.tar.xz.asc; \tmkdir -p /usr/src/python; \ttar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; \trm python.tar.xz; \t\tcd /usr/src/python; \tgnuArch=\"$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)\"; \t./configure \t\t--build=\"$gnuArch\" \t\t--enable-loadable-sqlite-extensions \t\t--enable-option-checking=fatal \t\t--enable-shared \t\t$(test \"${gnuArch%%-*}\" != 'riscv64' && echo '--with-lto') \t\t--with-ensurepip \t; \tnproc=\"$(nproc)\"; \tEXTRA_CFLAGS=\"-DTHREAD_STACK_SIZE=0x100000\"; \tLDFLAGS=\"${LDFLAGS:-} -Wl,--strip-all\"; \tarch=\"$(apk --print-arch)\"; \tcase \"$arch\" in \t\tx86_64|aarch64) \t\t\tEXTRA_CFLAGS=\"${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer\"; \t\t\t;; \t\tx86) \t\t\t;; \t\t*) \t\t\tEXTRA_CFLAGS=\"${EXTRA_CFLAGS:-} -fno-omit-frame-pointer\"; \t\t\t;; \tesac; \tmake -j \"$nproc\" \t\t\"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}\" \t\t\"LDFLAGS=${LDFLAGS:-}\" \t; \trm python; \tmake -j \"$nproc\" \t\t\"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}\" \t\t\"LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\\$\\$ORIGIN/../lib'\" \t\tpython \t; \tmake install; \t\tcd /; \trm -rf /usr/src/python; \t\tfind /usr/local -depth \t\t\\( \t\t\t\\( -type d -a \\( -name test -o -name tests -o -name idle_test \\) \\) \t\t\t-o \\( -type f -a \\( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \\) \\) \t\t\\) -exec rm -rf '{}' + \t; \t\tfind /usr/local -type f -executable -not \\( -name '*tkinter*' \\) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \t\t| tr ',' '\\n' \t\t| sort -u \t\t| awk 'system(\"[ -e /usr/local/lib/\" $1 \" ]\") == 0 { next } { print \"so:\" $1 }' \t\t| xargs -rt apk add --no-network --virtual .python-rundeps \t; \tapk del --no-network .build-deps; \t\texport PYTHONDONTWRITEBYTECODE=1; \tpython3 --version; \tpip3 --version # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:10:30.782726003Z", + "created_by": "RUN /bin/sh -c set -eux; \tfor src in idle3 pip3 pydoc3 python3 python3-config; do \t\tdst=\"$(echo \"$src\" | tr -d 3)\"; \t\t[ -s \"/usr/local/bin/$src\" ]; \t\t[ ! -e \"/usr/local/bin/$dst\" ]; \t\tln -svT \"$src\" \"/usr/local/bin/$dst\"; \tdone # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:10:30.782726003Z", + "created_by": "CMD [\"python3\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-11T00:49:47.962156876+02:00", + "created_by": "ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-11T00:49:47.962156876+02:00", + "created_by": "RUN /bin/sh -c apk add --no-cache 'libuuid>=2.42.3-r1' && addgroup -S -g 10001 informed && adduser -S -u 10001 -G informed -H informed # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:55.351944978+02:00", + "created_by": "COPY /opt/venv /opt/venv # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.462092072+02:00", + "created_by": "RUN /bin/sh -c rm -rf /usr/local/bin/pip* /usr/local/lib/python3.12/site-packages/pip* /usr/local/lib/python3.12/site-packages/setuptools* /usr/local/lib/python3.12/site-packages/pkg_resources /opt/venv/bin/pip* /opt/venv/lib/python3.12/site-packages/pip* /opt/venv/lib/python3.12/site-packages/setuptools* /opt/venv/lib/python3.12/site-packages/pkg_resources # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "WORKDIR /app", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "USER 10001:10001", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "EXPOSE [8080/tcp 8081/tcp]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "ENTRYPOINT [\"informed-decision-container\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-11T01:15:11.991443676Z", + "created_by": "/bin/sh -c #(nop) ARG SOURCE_REVISION", + "empty_layer": true + }, + { + "created": "2026-10-11T01:21:04.716126392Z", + "created_by": "/bin/sh -c #(nop) LABEL org.opencontainers.image.revision=3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168 org.opencontainers.image.base.digest=sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173 social.coulomb.source.policy.sha256=9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62 social.coulomb.release.scope=INFD-WP-0009-T04/purpose-overlay-v1", + "empty_layer": true + }, + { + "created": "2026-10-11T01:21:04.787527697Z", + "created_by": "/bin/sh -c #(nop) COPY file:2be9cb36e7253e15733673359cda8caa22986b6888822a008c1b360d909994e0 in /opt/venv/lib/python3.12/site-packages/informed_decision/policy.py " + }, + { + "created": "2026-10-11T09:37:05.094824861Z", + "created_by": "/bin/sh -c #(nop) ARG SOURCE_REVISION=uncommitted-T05-local-preparation", + "empty_layer": true + }, + { + "created": "2026-10-11T09:37:05.210154454Z", + "created_by": "/bin/sh -c #(nop) ARG SOURCE_CONTEXT_SHA256", + "empty_layer": true + }, + { + "created": "2026-10-11T09:37:05.349758525Z", + "created_by": "/bin/sh -c #(nop) USER 0:0", + "empty_layer": true + }, + { + "created": "2026-10-11T09:37:05.460271111Z", + "created_by": "/bin/sh -c #(nop) COPY multi:e4d183fdf93ea6320911bb7398e4860a1b9b96fe0768cfd3d0260955517dd272 in /tmp/infd-zlib/x86_64/ " + }, + { + "created": "2026-10-11T09:37:06.14850806Z", + "created_by": "|2 SOURCE_CONTEXT_SHA256=c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d SOURCE_REVISION=9b4bb25d325698ae543e7e8a8a3c3592db1f58fc /bin/sh -c echo '63aeea03c15a2f9018f81805cfc8aa926bdf5cd68921f22149c2fbb5d0ee9f47 /tmp/infd-zlib/x86_64/zlib-1.3.2-r1.apk' | sha256sum -c - && echo '24fc2ccb08f3125429a38b31bd6c76a7b394c6236df0975760dc8259e50dfbd5 /tmp/infd-zlib/x86_64/APKINDEX.tar.gz' | sha256sum -c - && apk verify /tmp/infd-zlib/x86_64/zlib-1.3.2-r1.apk /tmp/infd-zlib/x86_64/APKINDEX.tar.gz && apk upgrade --no-logfile --no-network --no-cache --no-preupgrade --repositories-file /dev/null --repository /tmp/infd-zlib zlib && apk info --exists 'zlib=1.3.2-r1' && rm -rf /tmp/infd-zlib" + }, + { + "created": "2026-10-11T09:37:06.218269088Z", + "created_by": "/bin/sh -c #(nop) USER 10001:10001", + "empty_layer": true + }, + { + "created": "2026-10-11T09:37:06.27375084Z", + "created_by": "/bin/sh -c #(nop) LABEL org.opencontainers.image.revision=9b4bb25d325698ae543e7e8a8a3c3592db1f58fc org.opencontainers.image.base.digest=sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a social.coulomb.source.context.sha256=c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d social.coulomb.source.policy.sha256=9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62 social.coulomb.release.scope=INFD-WP-0009-T05/zlib-85091-r1", + "empty_layer": true + } + ], + "os": "linux", + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + } +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/image-manifest.json b/docs/evidence/2026-10-11-zlib-published-verification/image-manifest.json new file mode 100644 index 0000000..e0c8a2e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/image-manifest.json @@ -0,0 +1,66 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.docker.distribution.manifest.v2+json", + "config": { + "mediaType": "application/vnd.docker.container.image.v1+json", + "size": 13225, + "digest": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b" + }, + "layers": [ + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 3846391, + "digest": "sha256:55afa1ecc21d2bb5e5045f32dafee56272ffd89860bac26f6c32123439af26a4" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 408093, + "digest": "sha256:47393b668ce535d06e8967917d424c177e2ecccae83856d48b2e99164f8cc6cb" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 16346740, + "digest": "sha256:2014fd3d47b2c2dd4dedc765822ac60ae269f3efa0e614f46ae29f540c7f1235" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 248, + "digest": "sha256:ed62c91ccd94e36a928e96d704cfcf20861302590245cc12aa89a15a5d6be29b" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 49243, + "digest": "sha256:f0fe3e08ab046c0c5e29d34ee73bc8c7e03398eb891e4498e0a67088a5ea3e86" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 10216362, + "digest": "sha256:82ff17b555d91096dd328eb1e829daaeba9a48d7757143d0b97c35a721f6fb87" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 459, + "digest": "sha256:16a3dba6b720d3059eab918cd3596f94145ac9cf4d456f925a21f0f72522863f" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 93, + "digest": "sha256:e73dd464fbff5607cc62a1b2b66b0eefe737dfad4db8e7b58a48cda7c12d94d3" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 3586, + "digest": "sha256:cfee29c2f8119d2a39714ecbe5095a2dc1c986054f2e1fe0a6565163242417e3" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 585105, + "digest": "sha256:e71670e97343953d925d1afa0a75a18dde4beb1c2ccabc070108ab959bafa1cc" + }, + { + "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", + "size": 87702, + "digest": "sha256:3b8949d9165eb95242cf9634404daf1d40191219330f2ab98e714ea30c9c7e0c" + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/installed-purpose.json b/docs/evidence/2026-10-11-zlib-published-verification/installed-purpose.json new file mode 100644 index 0000000..5319566 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/installed-purpose.json @@ -0,0 +1 @@ +{"installed_image_purpose_variants": 10, "binding_forms_allowed": 2, "advisory_or_malformed_refused": 8, "synthetic_only": true, "native_provider": false} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/loaded-daemon-image-proof.json b/docs/evidence/2026-10-11-zlib-published-verification/loaded-daemon-image-proof.json new file mode 100644 index 0000000..2345e88 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/loaded-daemon-image-proof.json @@ -0,0 +1,9 @@ +{ + "actual_loaded_daemon_image_id": "sha256:f2e07e3dd839b55afd5d517243a765a26965325e4e6750f508771ad556bd6d01", + "registry_config_digest": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "serialization_note": "Docker load reserialized image configuration: daemon ID differs from registry config digest. All installed rootfs diffIDs/platform/full effective config+labels exact; closed default normalization only.", + "rootfs_diffids_identical": true, + "effective_config_labels_identical": true, + "image_loaded_from_verified_public_archive": true, + "original_runtime_attempt": "Registry config digest was not a daemon image handle; Docker exit125 before candidate execution; retained as verification tooling refinement, not image/runtime failure" +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/publication-digest.json b/docs/evidence/2026-10-11-zlib-published-verification/publication-digest.json new file mode 100644 index 0000000..345c17c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/publication-digest.json @@ -0,0 +1,7 @@ +{ + "tag": "zlib-85091-9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "digest": "sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "source_revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "candidate_only": true, + "native_changed": false +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/published-verification.json b/docs/evidence/2026-10-11-zlib-published-verification/published-verification.json new file mode 100644 index 0000000..e2db332 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/published-verification.json @@ -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-zlib-published-verification/read_public_artifact.py b/docs/evidence/2026-10-11-zlib-published-verification/read_public_artifact.py new file mode 100644 index 0000000..83d1a4f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/read_public_artifact.py @@ -0,0 +1,120 @@ +"""Read a public policy image without executing it or retaining registry tokens.""" +import argparse +import sys +if sys.flags.optimize: + raise SystemExit("REFUSED: optimized interpreter") +import gzip +import hashlib +import io +import json +from pathlib import Path, PurePosixPath +import re +import tarfile +import urllib.error +import urllib.parse +import urllib.request + +ORIGIN = 'https://forgejo.coulomb.social' +BASE = ORIGIN + '/v2/coulomb/informed-decision/' +LIMIT = 300 * 1024 * 1024 +class NoRedirect(urllib.request.HTTPRedirectHandler): + def redirect_request(self, request, response, code, message, headers, new_url): + raise ValueError('registry redirects refused') +OPENER = urllib.request.build_opener(NoRedirect()) + + +def fetch(url, accept=None): + parsed_url = urllib.parse.urlparse(url) + if parsed_url.scheme != 'https' or parsed_url.netloc != 'forgejo.coulomb.social': + raise ValueError('unexpected registry origin') + headers = {'Accept': accept} if accept else {} + try: + response = OPENER.open(urllib.request.Request(url, headers=headers), timeout=30) + except urllib.error.HTTPError as error: + if error.code != 401: + raise + fields = dict(re.findall(r'(\w+)="([^"]*)"', error.headers.get('WWW-Authenticate', ''))) + realm = fields['realm'] + parsed = urllib.parse.urlparse(realm) + if parsed.scheme != 'https' or parsed.netloc != 'forgejo.coulomb.social': + raise ValueError('unexpected registry challenge origin') + query = urllib.parse.urlencode({k: fields[k] for k in ('service', 'scope') if k in fields}) + with OPENER.open(realm + '?' + query, timeout=30) as auth: + token = json.load(auth)['token'] + headers['Authorization'] = 'Bearer ' + token + response = OPENER.open(urllib.request.Request(url, headers=headers), timeout=60) + with response: + body = response.read(LIMIT + 1) + if len(body) > LIMIT: + raise ValueError('registry artifact exceeds local verification bound') + return body + + +def sha(data): + return hashlib.sha256(data).hexdigest() + + +def blob(descriptor): + digest = descriptor['digest'] + if not re.fullmatch(r'sha256:[a-f0-9]{64}', digest): + raise ValueError('unknown image digest') + data = fetch(BASE + 'blobs/' + digest) + if 'sha256:' + sha(data) != digest or len(data) != descriptor['size']: + raise ValueError('image blob hash or size mismatch') + return data + + +def manifest(digest): + raw = fetch(BASE + 'manifests/' + digest, 'application/vnd.oci.image.index.v1+json, application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.oci.image.manifest.v1+json, application/vnd.docker.distribution.manifest.v2+json') + if 'sha256:' + sha(raw) != digest: + raise ValueError('manifest digest mismatch') + value = json.loads(raw) + if 'manifests' in value: + selected = [d for d in value['manifests'] if d.get('platform',{}).get('os') == 'linux' and d.get('platform',{}).get('architecture') == 'amd64'] + if len(selected) != 1: + raise ValueError('one linux/amd64 platform required') + child, config, layerlist = manifest(selected[0]['digest']) + return child, config, layerlist + return value, json.loads(blob(value['config'])), value['layers'] + +def add(archive,name,data): + item=tarfile.TarInfo(name);item.size=len(data);item.mode=0o600;archive.addfile(item,io.BytesIO(data)) + +def export_image(m,c,path): + with tarfile.open(path,'w') as output: + config=blob(m['config']);add(output,'config.json',config);names=[] + for i,descriptor in enumerate(m['layers']): + if descriptor['mediaType'] not in {'application/vnd.docker.image.rootfs.diff.tar.gzip','application/vnd.oci.image.layer.v1.tar+gzip'}: + raise ValueError('unsupported compressed layer encoding') + with gzip.GzipFile(fileobj=io.BytesIO(blob(descriptor))) as stream:raw=stream.read(LIMIT+1) + if len(raw)>LIMIT or 'sha256:'+sha(raw)!=c['rootfs']['diff_ids'][i]:raise ValueError('uncompressed layer hash/size invalid') + name=f'{i}.tar';names.append(name);add(output,name,raw) + add(output,'manifest.json',json.dumps([{'Config':'config.json','Layers':names}]).encode()) + +def main(): + p=argparse.ArgumentParser();p.add_argument('--digest',required=True);p.add_argument('--revision',required=True);p.add_argument('--output',type=Path,required=True);a=p.parse_args() + if not re.fullmatch(r'sha256:[a-f0-9]{64}',a.digest) or not re.fullmatch(r'[a-f0-9]{40}',a.revision):raise ValueError('immutable registry digest/source revision required') + if a.output.exists():raise ValueError('fresh output directory required; no overwrite/retry') + base='sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' + m,c,l=manifest(a.digest);bm,bc,bl=manifest(base) + if len(l)!=len(bl)+2 or [(x['digest'],x['size']) for x in l[:-2]]!=[(x['digest'],x['size']) for x in bl]:raise ValueError('exact nine base compressed layers plus two overlay layers required') + if c['rootfs']['diff_ids'][:-2]!=bc['rootfs']['diff_ids'] or len(c['rootfs']['diff_ids'])!=len(bc['rootfs']['diff_ids'])+2:raise ValueError('base uncompressed layer prefix differs') + for field in ('architecture','os'): + if c[field]!=bc[field]:raise ValueError('image platform differs') + defaults={'Hostname':'','Domainname':'','AttachStdin':False,'AttachStdout':False,'AttachStderr':False,'Tty':False,'OpenStdin':False,'StdinOnce':False,'Cmd':None,'Volumes':None,'OnBuild':None} + ac=c['config'].copy();ab=bc['config'].copy();labels=ac.pop('Labels',{});baselabels=ab.pop('Labels',{}) + for config in (ac,ab): + if 'Image' in config and not re.fullmatch(r'sha256:[a-f0-9]{64}',config['Image']):raise ValueError('invalid legacy parent image metadata') + config.pop('Image',None) + for key,value in defaults.items():config.setdefault(key,value) + if ac!=ab:raise ValueError('effective runtime configuration differs') + expected={'org.opencontainers.image.revision':a.revision,'org.opencontainers.image.base.digest':base,'social.coulomb.source.policy.sha256':'9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62','social.coulomb.source.context.sha256':'c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d','social.coulomb.release.scope':'INFD-WP-0009-T05/zlib-85091-r1'} + if any(labels.get(k)!=v for k,v in expected.items()):raise ValueError('source/base/context/policy/scope label mismatch') + if {k:v for k,v in labels.items() if k not in expected}!={k:v for k,v in baselabels.items() if k not in expected}:raise ValueError('unrelated image labels differ') + a.output.mkdir(mode=0o700) + export_image(m,c,a.output/'image.tar');export_image(bm,bc,a.output/'base-image.tar') + for name,value in [('image-manifest.json',m),('image-config.json',c),('base-image-manifest.json',bm),('base-image-config.json',bc)]: + (a.output/name).write_text(json.dumps(value,indent=2)+'\n') + proof={'image_digest':a.digest,'source_revision':a.revision,'base_image_digest':base,'base_compressed_descriptors_unchanged':True,'base_uncompressed_layer_prefix_unchanged':True,'all_layers_verified_sha256_size':True,'effective_runtime_configuration_unchanged':True,'expected_labels':expected,'registry_route':'anonymous public scoped challenge; token neither printed nor retained','image_executed':False,'native_action':False,'scan_and_full_rootfs_audit':'Pending independent actual full scan/SBOM, directory-aware archive checker and runtime execution'} + (a.output/'registry-proof.json').write_text(json.dumps(proof,indent=2)+'\n');print(json.dumps(proof)) +if __name__=='__main__':main() diff --git a/docs/evidence/2026-10-11-zlib-published-verification/registry-proof.json b/docs/evidence/2026-10-11-zlib-published-verification/registry-proof.json new file mode 100644 index 0000000..fcb7928 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/registry-proof.json @@ -0,0 +1,20 @@ +{ + "image_digest": "sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "source_revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "base_image_digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "base_compressed_descriptors_unchanged": true, + "base_uncompressed_layer_prefix_unchanged": true, + "all_layers_verified_sha256_size": true, + "effective_runtime_configuration_unchanged": true, + "expected_labels": { + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1" + }, + "registry_route": "anonymous public scoped challenge; token neither printed nor retained", + "image_executed": false, + "native_action": false, + "scan_and_full_rootfs_audit": "Pending independent actual full scan/SBOM, directory-aware archive checker and runtime execution" +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/run_published_runtime.py b/docs/evidence/2026-10-11-zlib-published-verification/run_published_runtime.py new file mode 100644 index 0000000..3a29c6f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/run_published_runtime.py @@ -0,0 +1,13 @@ +from pathlib import Path +import subprocess,hashlib,json,datetime +root=Path('/tmp/infd-zlib-published-9b4bb25d');rev='9b4bb25d325698ae543e7e8a8a3c3592db1f58fc';repo='/home/worsch/informed-decision';config=json.loads((root/'image-manifest.json').read_text())['config']['digest'];docker=['docker','--config','/tmp/infd-purpose-published-verification/empty-docker-config','--host','unix:///var/run/docker.sock'];base='forgejo.coulomb.social/coulomb/informed-decision@sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a' +def source(path):return subprocess.check_output(['git','-C',repo,'show',rev+':'+path]) +def run(image,src,args=()): + cmd=docker+['run','--rm','-i','--network','none','--read-only','--cpus','1','--memory','128m','--entrypoint','python',image,'-']+list(args) + r=subprocess.run(cmd,input=src,capture_output=True);assert r.returncode==0,(r.returncode,r.stderr.decode());return r.stdout +for image,name in [(base,'base-runtime.json'),('sha256:f2e07e3dd839b55afd5d517243a765a26965325e4e6750f508771ad556bd6d01','candidate-runtime.json')]: + (root/name).write_bytes(run(image,source('tools/zlib_overlay/check_runtime.py'))) +(root/'runtime-comparison.json').write_bytes(run(base,source('tools/zlib_overlay/compare_runtime.py'),[(root/'base-runtime.json').read_text(),(root/'candidate-runtime.json').read_text()])) +(root/'installed-purpose.json').write_bytes(run('sha256:f2e07e3dd839b55afd5d517243a765a26965325e4e6750f508771ad556bd6d01',source('tools/purpose_overlay/check_installed.py'))) +(root/'runtime-receipt.json').write_text(json.dumps({'revision':rev,'published_digest':'sha256:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23','verified_registry_config_digest':config,'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':datetime.datetime.now(datetime.timezone.utc).isoformat()},indent=2)+'\n') +print((root/'runtime-comparison.json').read_text());print((root/'installed-purpose.json').read_text()) diff --git a/docs/evidence/2026-10-11-zlib-published-verification/run_published_scan.py b/docs/evidence/2026-10-11-zlib-published-verification/run_published_scan.py new file mode 100644 index 0000000..913913c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/run_published_scan.py @@ -0,0 +1,19 @@ +from pathlib import Path +import json,hashlib,subprocess,datetime,shutil +root=Path('/tmp/infd-zlib-published-9b4bb25d');cache=Path('/tmp/infd-zlib-published-scan-cache');(cache/'db').mkdir(parents=True,exist_ok=False) +for name in ['trivy.db','metadata.json']:shutil.copy2(Path('/tmp/infd-zlib-scan-cache/db')/name,cache/'db'/name) +meta=json.loads((cache/'db/metadata.json').read_text());nextupdate=datetime.datetime.fromisoformat(meta['NextUpdate'].replace('Z','+00:00')) +records=[] +for image,prefix in [('base-image.tar','base-'),('image.tar','')]: + for fmt,name in [('json','trivy-full.json'),('cyclonedx','sbom.cdx.json')]: + now=datetime.datetime.now(datetime.timezone.utc) + if now>=nextupdate:raise SystemExit('Fresh DB required; refusing stale scan') + cmd=['docker','--config','/tmp/infd-purpose-published-verification/empty-docker-config','--host','unix:///var/run/docker.sock','run','--rm','--network','none','--cpus','1','--memory','1g','-v',str(root)+':/artifact','-v',str(cache)+':/cache','aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969','image','--input','/artifact/'+image,'--cache-dir','/cache','--skip-db-update','--skip-java-db-update','--scanners','vuln','--format',fmt,'--output','/artifact/'+prefix+name] + r=subprocess.run(cmd,capture_output=True,text=True);(root/(prefix+name+'.log')).write_text(r.stdout+r.stderr) + records.append({'archive':image,'format':fmt,'started_utc':now.isoformat(),'exit_code':r.returncode,'command':cmd}) + if r.returncode:raise SystemExit('Actual scanner failed; retained log') +sha=hashlib.sha256() +with (cache/'db/trivy.db').open('rb') as f: + for b in iter(lambda:f.read(1024*1024),b''):sha.update(b) +(root/'scan-receipt.json').write_text(json.dumps({'scanner':'aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969','db_sha256':sha.hexdigest(),'db_metadata':meta,'same_fresh_db_both_images':True,'no_suppression':True,'records':records},indent=2)+'\n') +print(json.dumps({'scans':len(records),'same_fresh_db':True,'db_sha256':sha.hexdigest()})) diff --git a/docs/evidence/2026-10-11-zlib-published-verification/runtime-comparison.json b/docs/evidence/2026-10-11-zlib-published-verification/runtime-comparison.json new file mode 100644 index 0000000..4697c21 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/runtime-comparison.json @@ -0,0 +1 @@ +{"zlib_only_delta": true, "app_files_identical": 36, "no_database_or_provider": true} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/runtime-receipt.json b/docs/evidence/2026-10-11-zlib-published-verification/runtime-receipt.json new file mode 100644 index 0000000..e9c2dee --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/runtime-receipt.json @@ -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-zlib-published-verification/sbom.cdx.json b/docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json new file mode 100644 index 0000000..78da255 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json @@ -0,0 +1,2333 @@ +{ + "$schema": "http://cyclonedx.org/schema/bom-1.7.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.7", + "serialNumber": "urn:uuid:9a878445-61b1-4dcb-b63c-ae953a81eb6c", + "version": 1, + "metadata": { + "timestamp": "2026-10-11T09:38:41+00:00", + "tools": { + "components": [ + { + "type": "application", + "manufacturer": { + "name": "Aqua Security Software Ltd." + }, + "group": "aquasecurity", + "name": "trivy", + "version": "0.74.0" + } + ] + }, + "component": { + "bom-ref": "c173e9d2-e70b-41a0-b79f-99ca28ef78b4", + "type": "container", + "name": "/artifact/image.tar", + "properties": [ + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:DiffID", + "value": "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1" + }, + { + "name": "aquasecurity:trivy:ImageID", + "value": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b" + }, + { + "name": "aquasecurity:trivy:Labels:org.opencontainers.image.base.digest", + "value": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a" + }, + { + "name": "aquasecurity:trivy:Labels:org.opencontainers.image.revision", + "value": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc" + }, + { + "name": "aquasecurity:trivy:Labels:social.coulomb.release.scope", + "value": "INFD-WP-0009-T05/zlib-85091-r1" + }, + { + "name": "aquasecurity:trivy:Labels:social.coulomb.source.context.sha256", + "value": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d" + }, + { + "name": "aquasecurity:trivy:Labels:social.coulomb.source.policy.sha256", + "value": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + { + "name": "aquasecurity:trivy:SchemaVersion", + "value": "2" + }, + { + "name": "aquasecurity:trivy:Size", + "value": "89032704" + } + ] + } + }, + "components": [ + { + "bom-ref": "ab0cba04-6289-47f8-88c1-0ca2fde81236", + "type": "operating-system", + "name": "alpine", + "version": "3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:Class", + "value": "os-pkgs" + }, + { + "name": "aquasecurity:trivy:Type", + "value": "alpine" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1", + "type": "library", + "name": ".python-rundeps", + "version": "20260901.001029", + "hashes": [ + { + "alg": "SHA-1", + "content": "51d0c1e7d88a414345799f0309185c625013ef32" + } + ], + "purl": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": ".python-rundeps@20260901.001029" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "alpine-baselayout-data", + "version": "3.7.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "c6f9bded17d844b6f1b0bb5766d2c35c0d5c8508" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "alpine-baselayout-data@3.7.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "alpine-baselayout" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.7.2-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "alpine-baselayout", + "version": "3.7.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "f0fcfdc2f4da058af6473bc45c4eab62916225b2" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "alpine-baselayout@3.7.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "alpine-baselayout" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.7.2-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "alpine-keys", + "version": "2.6-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "d8d6b80e53c059a77e4915da78ba964f3ffea240" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "alpine-keys@2.6-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "alpine-keys" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2.6-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "alpine-release", + "version": "3.24.1-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "bc6912a25cdc7733e0035ed509eceaa4026946e3" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "alpine-release@3.24.1-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "alpine-base" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.24.1-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "apk-tools", + "version": "3.0.6-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "043333589798a1f52e09ae63f026c6c8fa676d34" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "apk-tools@3.0.6-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "apk-tools" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.0.6-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Sören Tempel " + }, + "name": "busybox-binsh", + "version": "1.37.0-r31", + "hashes": [ + { + "alg": "SHA-1", + "content": "5cbd14acc6f1804c5bac6c77dc2c492f010b0fc7" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "busybox-binsh@1.37.0-r31" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "busybox" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.37.0-r31" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Sören Tempel " + }, + "name": "busybox", + "version": "1.37.0-r31", + "hashes": [ + { + "alg": "SHA-1", + "content": "b5405ebc02f7dd8be95b6265c54b243d5456ab8f" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "busybox@1.37.0-r31" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "busybox" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.37.0-r31" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "ca-certificates-bundle", + "version": "20260611-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "c9534a03750bdfae341f10969016090fc11febbd" + } + ], + "licenses": [ + { + "license": { + "id": "MPL-2.0" + } + }, + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "ca-certificates-bundle@20260611-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ca-certificates" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "20260611-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "ca-certificates", + "version": "20260611-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "8f2a04abeb54b331e2970a0a0dffb7bd6bdde567" + } + ], + "licenses": [ + { + "license": { + "id": "MPL-2.0" + } + }, + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "ca-certificates@20260611-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ca-certificates" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "20260611-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "gdbm", + "version": "1.26-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "619493d8124fe49a8ee1d8f7a1372cf7e3977337" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-3.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "gdbm@1.26-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "gdbm" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.26-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "keyutils-libs", + "version": "1.6.3-r4", + "hashes": [ + { + "alg": "SHA-1", + "content": "b7331c96f077fc3522ee4361a441d1097204cd90" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-or-later" + } + }, + { + "license": { + "id": "LGPL-2.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "keyutils-libs@1.6.3-r4" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "keyutils" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.6.3-r4" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "krb5-conf", + "version": "1.0-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "40a11e0690a59e110367b62a80661024e9942a2d" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "krb5-conf@1.0-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "krb5-conf" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.0-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "krb5-libs", + "version": "1.22.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "ef02346e21b817ff379e4601e5b1fc9760e5e31a" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "krb5-libs@1.22.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "krb5" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.22.2-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libapk", + "version": "3.0.6-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "523a8f58104589f74f743d501c81bf6517155378" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libapk@3.0.6-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "apk-tools" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.0.6-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libbz2", + "version": "1.0.8-r6", + "hashes": [ + { + "alg": "SHA-1", + "content": "08566ba5c7af97c25474be8b24e8b48f0116b67d" + } + ], + "licenses": [ + { + "license": { + "name": "bzip-2-1.0.6" + } + } + ], + "purl": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libbz2@1.0.8-r6" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "bzip2" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.0.8-r6" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libcom_err", + "version": "1.47.4-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "4b9fb5899ea0b1c0cfbb2a2c5952704437d4ecef" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-or-later" + } + }, + { + "license": { + "id": "LGPL-2.0-or-later" + } + }, + { + "license": { + "id": "BSD-3-Clause" + } + }, + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libcom_err@1.47.4-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "e2fsprogs" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.47.4-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libcrypto3", + "version": "3.5.8-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "1b3b9fc0c136f4936932bcb2ec21499f0ae5dfd3" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "purl": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libcrypto3@3.5.8-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "openssl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.5.8-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libffi", + "version": "3.5.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "2f7b261f7fcecc4eebd8b330e7f6fb80713bfe3a" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libffi@3.5.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libffi" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.5.2-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Carlo Landmeter " + }, + "name": "libintl", + "version": "1.0-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "282d6642ccac87237e43a864159d73cf5abe7550" + } + ], + "licenses": [ + { + "license": { + "id": "LGPL-2.1-or-later" + } + } + ], + "purl": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libintl@1.0-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "gettext" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.0-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Milan P. Stanić " + }, + "name": "libncursesw", + "version": "6.6_p20260516-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "9f318e6e324d6827274829194cf6ac6afbaded12" + } + ], + "licenses": [ + { + "license": { + "name": "X-11" + } + } + ], + "purl": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libncursesw@6.6_p20260516-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ncurses" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "6.6_p20260516-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "name": "libnsl", + "version": "2.0.1-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "5194adbf26560b52be318481a7af294ab05fd795" + } + ], + "licenses": [ + { + "license": { + "id": "LGPL-2.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libnsl@2.0.1-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libnsl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2.0.1-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Milan P. Stanić " + }, + "name": "libpanelw", + "version": "6.6_p20260516-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "149bdc434232ed11fc5bb975ba519a07154a6f56" + } + ], + "licenses": [ + { + "license": { + "name": "X-11" + } + } + ], + "purl": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libpanelw@6.6_p20260516-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ncurses" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "6.6_p20260516-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libssl3", + "version": "3.5.8-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "5f9b1e55d821953d2e2b1db322dad70a3b5041ea" + } + ], + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "purl": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libssl3@3.5.8-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "openssl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.5.8-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libtirpc-conf", + "version": "1.3.5-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "0c17d9988dc986c90e22f79778df047eca9973ff" + } + ], + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "purl": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libtirpc-conf@1.3.5-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libtirpc" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.3.5-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libtirpc", + "version": "1.3.5-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "c32865bd86a8b8829d152279cabbc5ac6d430eb2" + } + ], + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "purl": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libtirpc@1.3.5-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libtirpc" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.3.5-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "libuuid", + "version": "2.42.3-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "8f041ef637ad75f381cc0c034f2afbbb0303264e" + } + ], + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "purl": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libuuid@2.42.3-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "util-linux" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2.42.3-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Francesco Colista " + }, + "name": "libverto", + "version": "0.3.2-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "73233059338142e4ac6d8fb8bb0074e93da75dc1" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "libverto@0.3.2-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "libverto" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "0.3.2-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "musl-utils", + "version": "1.2.6-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "75ada3c48d63ec5d87c42fdf934a3fdd11298dc5" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + }, + { + "license": { + "id": "BSD-2-Clause" + } + }, + { + "license": { + "id": "GPL-2.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "musl-utils@1.2.6-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "musl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.2.6-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "musl", + "version": "1.2.6-r2", + "hashes": [ + { + "alg": "SHA-1", + "content": "0f7e5827e4e1a73631beda27b78431a8ba240e05" + } + ], + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "musl@1.2.6-r2" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "musl" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.2.6-r2" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Milan P. Stanić " + }, + "name": "ncurses-terminfo-base", + "version": "6.6_p20260516-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "9d551d828e9c8ee52c5801c1d6046828ebf15752" + } + ], + "licenses": [ + { + "license": { + "name": "X-11" + } + } + ], + "purl": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "ncurses-terminfo-base@6.6_p20260516-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "ncurses" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "6.6_p20260516-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "qaqland " + }, + "name": "readline", + "version": "8.3.3-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "945b16e378bc00e44d89d4de8124bba7647fdf4d" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-3.0-or-later" + } + } + ], + "purl": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "readline@8.3.3-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "readline" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "8.3.3-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "scanelf", + "version": "1.3.9-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "013f903d0ba219673aebbdd04f74bb5ed82b01f0" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "scanelf@1.3.9-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "pax-utils" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.3.9-r1" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Jingyun Hua " + }, + "name": "sqlite-libs", + "version": "3.53.4-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "f7630ceb37c232b6609861aeab6cdb9cd120e6fa" + } + ], + "licenses": [ + { + "license": { + "id": "blessing" + } + } + ], + "purl": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "sqlite-libs@3.53.4-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "sqlite" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "3.53.4-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Sören Tempel " + }, + "name": "ssl_client", + "version": "1.37.0-r31", + "hashes": [ + { + "alg": "SHA-1", + "content": "c220f4a5125a313af733e98def94132bb1e9d40d" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-only" + } + } + ], + "purl": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "ssl_client@1.37.0-r31" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "busybox" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.37.0-r31" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "tzdata", + "version": "2026c-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "61f7544ecd8dd63eac23fe3e645702fda92ef02a" + } + ], + "licenses": [ + { + "license": { + "name": "Public-Domain" + } + } + ], + "purl": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "tzdata@2026c-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "tzdata" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "2026c-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "xz-libs", + "version": "5.8.3-r0", + "hashes": [ + { + "alg": "SHA-1", + "content": "4c92c5be0c5bef404e93c880eba9037a9b147347" + } + ], + "licenses": [ + { + "license": { + "id": "GPL-2.0-or-later" + } + }, + { + "license": { + "id": "0BSD" + } + }, + { + "license": { + "name": "Public-Domain" + } + }, + { + "license": { + "id": "LGPL-2.1-or-later" + } + } + ], + "purl": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "xz-libs@5.8.3-r0" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "xz" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "5.8.3-r0" + } + ] + }, + { + "bom-ref": "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1", + "type": "library", + "supplier": { + "name": "Natanael Copa " + }, + "name": "zlib", + "version": "1.3.2-r1", + "hashes": [ + { + "alg": "SHA-1", + "content": "4f525c8cc204f84b8b4ca40db3be389958f056c6" + } + ], + "licenses": [ + { + "license": { + "id": "Zlib" + } + } + ], + "purl": "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1", + "properties": [ + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + }, + { + "name": "aquasecurity:trivy:PkgID", + "value": "zlib@1.3.2-r1" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "alpine" + }, + { + "name": "aquasecurity:trivy:SrcName", + "value": "zlib" + }, + { + "name": "aquasecurity:trivy:SrcVersion", + "value": "1.3.2-r1" + } + ] + }, + { + "bom-ref": "pkg:pypi/cffi@2.1.1", + "type": "library", + "name": "cffi", + "version": "2.1.1", + "licenses": [ + { + "license": { + "id": "MIT-0" + } + } + ], + "purl": "pkg:pypi/cffi@2.1.1", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/cffi-2.1.1.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/cryptography@50.0.1", + "type": "library", + "name": "cryptography", + "version": "50.0.1", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:pypi/cryptography@50.0.1", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/cryptography-50.0.1.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/informed-decision@0.2.0", + "type": "library", + "name": "informed-decision", + "version": "0.2.0", + "purl": "pkg:pypi/informed-decision@0.2.0", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/informed_decision-0.2.0.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/pycparser@3.0", + "type": "library", + "name": "pycparser", + "version": "3.0", + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "purl": "pkg:pypi/pycparser@3.0", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/pycparser-3.0.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/pyjwt@2.15.1", + "type": "library", + "name": "PyJWT", + "version": "2.15.1", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "purl": "pkg:pypi/pyjwt@2.15.1", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + }, + { + "bom-ref": "pkg:pypi/waitress@3.0.2", + "type": "library", + "name": "waitress", + "version": "3.0.2", + "licenses": [ + { + "license": { + "id": "ZPL-2.1" + } + } + ], + "purl": "pkg:pypi/waitress@3.0.2", + "properties": [ + { + "name": "aquasecurity:trivy:FilePath", + "value": "opt/venv/lib/python3.12/site-packages/waitress-3.0.2.dist-info/METADATA" + }, + { + "name": "aquasecurity:trivy:LayerDiffID", + "value": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "name": "aquasecurity:trivy:PkgType", + "value": "python-pkg" + } + ] + } + ], + "dependencies": [ + { + "ref": "ab0cba04-6289-47f8-88c1-0ca2fde81236", + "dependsOn": [ + "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1", + "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "c173e9d2-e70b-41a0-b79f-99ca28ef78b4", + "dependsOn": [ + "ab0cba04-6289-47f8-88c1-0ca2fde81236", + "pkg:pypi/cffi@2.1.1", + "pkg:pypi/cryptography@50.0.1", + "pkg:pypi/informed-decision@0.2.0", + "pkg:pypi/pycparser@3.0", + "pkg:pypi/pyjwt@2.15.1", + "pkg:pypi/waitress@3.0.2" + ] + }, + { + "ref": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64&distro=3.24.1", + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [] + }, + { + "ref": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64&distro=3.24.1", + "dependsOn": [ + "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64&distro=3.24.1" + ] + }, + { + "ref": "pkg:pypi/cffi@2.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/cryptography@50.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/informed-decision@0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/pycparser@3.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/pyjwt@2.15.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/waitress@3.0.2", + "dependsOn": [] + } + ], + "vulnerabilities": [] +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json.log b/docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json.log new file mode 100644 index 0000000..a84aa34 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/sbom.cdx.json.log @@ -0,0 +1,6 @@ +2026-10-11T09:38:41Z INFO [vuln] Vulnerability scanning is enabled +2026-10-11T09:38:41Z INFO Detected OS family="alpine" version="3.24.1" +2026-10-11T09:38:41Z WARN This OS version is not on the EOL list family="alpine" version="3.24" +2026-10-11T09:38:41Z INFO [alpine] Detecting vulnerabilities... os_version="3.24" repository="3.24" pkg_num=38 +2026-10-11T09:38:41Z INFO Number of language-specific files num=1 +2026-10-11T09:38:41Z INFO [python-pkg] Detecting vulnerabilities... diff --git a/docs/evidence/2026-10-11-zlib-published-verification/scan-receipt.json b/docs/evidence/2026-10-11-zlib-published-verification/scan-receipt.json new file mode 100644 index 0000000..8fd7fa0 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/scan-receipt.json @@ -0,0 +1,170 @@ +{ + "scanner": "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "db_sha256": "03cacb40452ceb74afdfca072cb82f79ee884dfac006ef24a4dfdad133b0f917", + "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" + }, + "same_fresh_db_both_images": true, + "no_suppression": true, + "records": [ + { + "archive": "base-image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:34.774672+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/base-trivy-full.json" + ] + }, + { + "archive": "base-image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:38.856254+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/base-image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/base-sbom.cdx.json" + ] + }, + { + "archive": "image.tar", + "format": "json", + "started_utc": "2026-10-11T09:38:39.729798+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "json", + "--output", + "/artifact/trivy-full.json" + ] + }, + { + "archive": "image.tar", + "format": "cyclonedx", + "started_utc": "2026-10-11T09:38:40.675048+00:00", + "exit_code": 0, + "command": [ + "docker", + "--config", + "/tmp/infd-purpose-published-verification/empty-docker-config", + "--host", + "unix:///var/run/docker.sock", + "run", + "--rm", + "--network", + "none", + "--cpus", + "1", + "--memory", + "1g", + "-v", + "/tmp/infd-zlib-published-9b4bb25d:/artifact", + "-v", + "/tmp/infd-zlib-published-scan-cache:/cache", + "aquasec/trivy@sha256:62b1e65e8869bc4b4c6aa4fa2b21595256c7c2f6018a9d9ad61caf87187c1969", + "image", + "--input", + "/artifact/image.tar", + "--cache-dir", + "/cache", + "--skip-db-update", + "--skip-java-db-update", + "--scanners", + "vuln", + "--format", + "cyclonedx", + "--output", + "/artifact/sbom.cdx.json" + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/source-commit-proof.json b/docs/evidence/2026-10-11-zlib-published-verification/source-commit-proof.json new file mode 100644 index 0000000..5aa6d77 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/source-commit-proof.json @@ -0,0 +1,7 @@ +{ + "revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "reviewed_manifest_sha256": "724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec", + "reviewed_paths": 74, + "mismatches": [], + "owner_read_only_git_show": true +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json b/docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json new file mode 100644 index 0000000..4d87f1f --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json @@ -0,0 +1,2338 @@ +{ + "SchemaVersion": 2, + "Trivy": { + "Version": "0.74.0" + }, + "ReportID": "01a12a54-268d-737d-952e-73c15b638d2f", + "CreatedAt": "2026-10-11T09:38:40.397232285Z", + "ArtifactID": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "ArtifactName": "/artifact/image.tar", + "ArtifactType": "container_image", + "Metadata": { + "Size": 89032704, + "OS": { + "Family": "alpine", + "Name": "3.24.1" + }, + "ImageID": "sha256:622becc3ebd97cb66b6e7c36f35bf931a7decd9464b65851123c1cc8c998d75b", + "DiffIDs": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ], + "ImageConfig": { + "architecture": "amd64", + "container": "21ba693e742e213525b526f83be1ea03cfbd875a87b6bce473e01fb8c38a5b91", + "created": "2026-10-11T09:37:06.27375084Z", + "docker_version": "27.5.1", + "history": [ + { + "created": "2026-06-16T00:01:29.967161902Z", + "created_by": "ADD alpine-minirootfs-3.24.1-x86_64.tar.gz / # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-06-16T00:01:29.967161902Z", + "created_by": "CMD [\"/bin/sh\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV LANG=C.UTF-8", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "RUN /bin/sh -c set -eux; \tapk add --no-cache \t\tca-certificates \t\ttzdata \t; # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PYTHON_VERSION=3.12.14", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:05:24.224544843Z", + "created_by": "ENV PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-01T00:10:30.672225972Z", + "created_by": "RUN /bin/sh -c set -eux; \t\tapk add --no-cache --virtual .build-deps \t\tbluez-dev \t\tbzip2-dev \t\tdpkg-dev dpkg \t\tfindutils \t\tg++ \t\tgcc \t\tgdbm-dev \t\tgnupg \t\tlibc-dev \t\tlibffi-dev \t\tlibnsl-dev \t\tlibtirpc-dev \t\tlinux-headers \t\tmake \t\tncurses-dev \t\topenssl-dev \t\tpax-utils \t\treadline-dev \t\tsqlite-dev \t\ttar \t\ttcl-dev \t\ttk \t\ttk-dev \t\tutil-linux-dev \t\txz \t\txz-dev \t\tzlib-dev \t; \t\twget -O python.tar.xz \"https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz\"; \techo \"$PYTHON_SHA256 *python.tar.xz\" | sha256sum -c -; \twget -O python.tar.xz.asc \"https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc\"; \tGNUPGHOME=\"$(mktemp -d)\"; export GNUPGHOME; \tgpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$GPG_KEY\"; \tgpg --batch --verify python.tar.xz.asc python.tar.xz; \tgpgconf --kill all; \trm -rf \"$GNUPGHOME\" python.tar.xz.asc; \tmkdir -p /usr/src/python; \ttar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; \trm python.tar.xz; \t\tcd /usr/src/python; \tgnuArch=\"$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)\"; \t./configure \t\t--build=\"$gnuArch\" \t\t--enable-loadable-sqlite-extensions \t\t--enable-option-checking=fatal \t\t--enable-shared \t\t$(test \"${gnuArch%%-*}\" != 'riscv64' \u0026\u0026 echo '--with-lto') \t\t--with-ensurepip \t; \tnproc=\"$(nproc)\"; \tEXTRA_CFLAGS=\"-DTHREAD_STACK_SIZE=0x100000\"; \tLDFLAGS=\"${LDFLAGS:-} -Wl,--strip-all\"; \tarch=\"$(apk --print-arch)\"; \tcase \"$arch\" in \t\tx86_64|aarch64) \t\t\tEXTRA_CFLAGS=\"${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer\"; \t\t\t;; \t\tx86) \t\t\t;; \t\t*) \t\t\tEXTRA_CFLAGS=\"${EXTRA_CFLAGS:-} -fno-omit-frame-pointer\"; \t\t\t;; \tesac; \tmake -j \"$nproc\" \t\t\"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}\" \t\t\"LDFLAGS=${LDFLAGS:-}\" \t; \trm python; \tmake -j \"$nproc\" \t\t\"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}\" \t\t\"LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\\$\\$ORIGIN/../lib'\" \t\tpython \t; \tmake install; \t\tcd /; \trm -rf /usr/src/python; \t\tfind /usr/local -depth \t\t\\( \t\t\t\\( -type d -a \\( -name test -o -name tests -o -name idle_test \\) \\) \t\t\t-o \\( -type f -a \\( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \\) \\) \t\t\\) -exec rm -rf '{}' + \t; \t\tfind /usr/local -type f -executable -not \\( -name '*tkinter*' \\) -exec scanelf --needed --nobanner --format '%n#p' '{}' ';' \t\t| tr ',' '\\n' \t\t| sort -u \t\t| awk 'system(\"[ -e /usr/local/lib/\" $1 \" ]\") == 0 { next } { print \"so:\" $1 }' \t\t| xargs -rt apk add --no-network --virtual .python-rundeps \t; \tapk del --no-network .build-deps; \t\texport PYTHONDONTWRITEBYTECODE=1; \tpython3 --version; \tpip3 --version # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:10:30.782726003Z", + "created_by": "RUN /bin/sh -c set -eux; \tfor src in idle3 pip3 pydoc3 python3 python3-config; do \t\tdst=\"$(echo \"$src\" | tr -d 3)\"; \t\t[ -s \"/usr/local/bin/$src\" ]; \t\t[ ! -e \"/usr/local/bin/$dst\" ]; \t\tln -svT \"$src\" \"/usr/local/bin/$dst\"; \tdone # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-09-01T00:10:30.782726003Z", + "created_by": "CMD [\"python3\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-11T00:49:47.962156876+02:00", + "created_by": "ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-09-11T00:49:47.962156876+02:00", + "created_by": "RUN /bin/sh -c apk add --no-cache 'libuuid\u003e=2.42.3-r1' \u0026\u0026 addgroup -S -g 10001 informed \u0026\u0026 adduser -S -u 10001 -G informed -H informed # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:55.351944978+02:00", + "created_by": "COPY /opt/venv /opt/venv # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.462092072+02:00", + "created_by": "RUN /bin/sh -c rm -rf /usr/local/bin/pip* /usr/local/lib/python3.12/site-packages/pip* /usr/local/lib/python3.12/site-packages/setuptools* /usr/local/lib/python3.12/site-packages/pkg_resources /opt/venv/bin/pip* /opt/venv/lib/python3.12/site-packages/pip* /opt/venv/lib/python3.12/site-packages/setuptools* /opt/venv/lib/python3.12/site-packages/pkg_resources # buildkit", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "WORKDIR /app", + "comment": "buildkit.dockerfile.v0" + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "USER 10001:10001", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "EXPOSE [8080/tcp 8081/tcp]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-05T01:03:56.675216821+02:00", + "created_by": "ENTRYPOINT [\"informed-decision-container\"]", + "comment": "buildkit.dockerfile.v0", + "empty_layer": true + }, + { + "created": "2026-10-11T01:15:11.991443676Z", + "created_by": "/bin/sh -c #(nop) ARG SOURCE_REVISION", + "empty_layer": true + }, + { + "created": "2026-10-11T01:21:04.716126392Z", + "created_by": "/bin/sh -c #(nop) LABEL org.opencontainers.image.revision=3e4bcb26f8eeaa8c64345c565477b5ac8ccbb168 org.opencontainers.image.base.digest=sha256:7f5c6cb29c9f70a026bfe30e72934274ddc69261676cf6d476f81dd32812d173 social.coulomb.source.policy.sha256=9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62 social.coulomb.release.scope=INFD-WP-0009-T04/purpose-overlay-v1", + "empty_layer": true + }, + { + "created": "2026-10-11T01:21:04.787527697Z", + "created_by": "/bin/sh -c #(nop) COPY file:2be9cb36e7253e15733673359cda8caa22986b6888822a008c1b360d909994e0 in /opt/venv/lib/python3.12/site-packages/informed_decision/policy.py " + }, + { + "created": "2026-10-11T09:37:05.094824861Z", + "created_by": "/bin/sh -c #(nop) ARG SOURCE_REVISION=uncommitted-T05-local-preparation", + "empty_layer": true + }, + { + "created": "2026-10-11T09:37:05.210154454Z", + "created_by": "/bin/sh -c #(nop) ARG SOURCE_CONTEXT_SHA256", + "empty_layer": true + }, + { + "created": "2026-10-11T09:37:05.349758525Z", + "created_by": "/bin/sh -c #(nop) USER 0:0", + "empty_layer": true + }, + { + "created": "2026-10-11T09:37:05.460271111Z", + "created_by": "/bin/sh -c #(nop) COPY multi:e4d183fdf93ea6320911bb7398e4860a1b9b96fe0768cfd3d0260955517dd272 in /tmp/infd-zlib/x86_64/ " + }, + { + "created": "2026-10-11T09:37:06.14850806Z", + "created_by": "|2 SOURCE_CONTEXT_SHA256=c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d SOURCE_REVISION=9b4bb25d325698ae543e7e8a8a3c3592db1f58fc /bin/sh -c echo '63aeea03c15a2f9018f81805cfc8aa926bdf5cd68921f22149c2fbb5d0ee9f47 /tmp/infd-zlib/x86_64/zlib-1.3.2-r1.apk' | sha256sum -c - \u0026\u0026 echo '24fc2ccb08f3125429a38b31bd6c76a7b394c6236df0975760dc8259e50dfbd5 /tmp/infd-zlib/x86_64/APKINDEX.tar.gz' | sha256sum -c - \u0026\u0026 apk verify /tmp/infd-zlib/x86_64/zlib-1.3.2-r1.apk /tmp/infd-zlib/x86_64/APKINDEX.tar.gz \u0026\u0026 apk upgrade --no-logfile --no-network --no-cache --no-preupgrade --repositories-file /dev/null --repository /tmp/infd-zlib zlib \u0026\u0026 apk info --exists 'zlib=1.3.2-r1' \u0026\u0026 rm -rf /tmp/infd-zlib" + }, + { + "created": "2026-10-11T09:37:06.218269088Z", + "created_by": "/bin/sh -c #(nop) USER 10001:10001", + "empty_layer": true + }, + { + "created": "2026-10-11T09:37:06.27375084Z", + "created_by": "/bin/sh -c #(nop) LABEL org.opencontainers.image.revision=9b4bb25d325698ae543e7e8a8a3c3592db1f58fc org.opencontainers.image.base.digest=sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a social.coulomb.source.context.sha256=c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d social.coulomb.source.policy.sha256=9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62 social.coulomb.release.scope=INFD-WP-0009-T05/zlib-85091-r1", + "empty_layer": true + } + ], + "os": "linux", + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c", + "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd", + "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366", + "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe", + "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1", + "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c", + "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59", + "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02", + "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3", + "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6", + "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + ] + }, + "config": { + "Entrypoint": [ + "informed-decision-container" + ], + "Env": [ + "PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "LANG=C.UTF-8", + "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", + "PYTHON_VERSION=3.12.14", + "PYTHON_SHA256=5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a", + "PYTHONDONTWRITEBYTECODE=1", + "PYTHONUNBUFFERED=1" + ], + "Image": "sha256:b0f10723d8eb4962d7eb1a0cc1d1b24c3113d1f67576916d85080f2f2d46c2e7", + "Labels": { + "org.opencontainers.image.base.digest": "sha256:763c36402c8be7cc4c1bd1a61623d1aff9116d52241877425b45a7018cc0883a", + "org.opencontainers.image.revision": "9b4bb25d325698ae543e7e8a8a3c3592db1f58fc", + "social.coulomb.release.scope": "INFD-WP-0009-T05/zlib-85091-r1", + "social.coulomb.source.context.sha256": "c554e62a84af340cba15d469a4568f6d0c40923e580b08ed7565e22702b1207d", + "social.coulomb.source.policy.sha256": "9d7c1be4cb6199d14ef0aaead5f85951f45b0ccbd7c800a7fde922a253566b62" + }, + "User": "10001:10001", + "WorkingDir": "/app", + "ExposedPorts": { + "8080/tcp": {}, + "8081/tcp": {} + } + } + }, + "Layers": [ + { + "Size": 8697856, + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + { + "Size": 1538048, + "DiffID": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + { + "Size": 47150592, + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + { + "Size": 5120, + "DiffID": "sha256:4098ad033525263f92a8a9c51865596025d47018e078c0b1f7d9cd5663fc1ffe" + }, + { + "Size": 131584, + "DiffID": "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1" + }, + { + "Size": 30705664, + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + { + "Size": 12288, + "DiffID": "sha256:361430a1113969743b99e237b20f023d5497493bcf96fb91af99ac0a0dbc4a59" + }, + { + "Size": 1536, + "DiffID": "sha256:cfc5939674d67f60b4411c24dfcde5622b712eeb7376cd0941a2751da80a6b02" + }, + { + "Size": 15360, + "DiffID": "sha256:21ff9188cb29ca95fe9be11355f70ab5586e8499e33b52a253d953fb3b75aea3" + }, + { + "Size": 588288, + "DiffID": "sha256:115811e30e0bde3e5a482191a32028a4323bacde928f17e808760ad2899407d6" + }, + { + "Size": 186368, + "DiffID": "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + } + ] + }, + "Results": [ + { + "Target": "/artifact/image.tar (alpine 3.24.1)", + "Class": "os-pkgs", + "Type": "alpine", + "Packages": [ + { + "ID": ".python-rundeps@20260901.001029", + "Name": ".python-rundeps", + "Identifier": { + "PURL": "pkg:apk/alpine/.python-rundeps@20260901.001029?arch=noarch\u0026distro=3.24.1", + "UID": "62fa84f88695c077" + }, + "Version": "20260901.001029", + "Arch": "noarch", + "DependsOn": [ + "gdbm@1.26-r0", + "libbz2@1.0.8-r6", + "libcrypto3@3.5.8-r0", + "libffi@3.5.2-r1", + "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", + "libuuid@2.42.3-r1", + "musl@1.2.6-r2", + "readline@8.3.3-r1", + "sqlite-libs@3.53.4-r0", + "xz-libs@5.8.3-r0", + "zlib@1.3.2-r1" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:51d0c1e7d88a414345799f0309185c625013ef32", + "AnalyzedBy": "apk" + }, + { + "ID": "alpine-baselayout@3.7.2-r1", + "Name": "alpine-baselayout", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout@3.7.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "1b9c543300f8073e" + }, + "Version": "3.7.2-r1", + "Arch": "x86_64", + "SrcName": "alpine-baselayout", + "SrcVersion": "3.7.2-r1", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "alpine-baselayout-data@3.7.2-r1", + "busybox-binsh@1.37.0-r31" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:f0fcfdc2f4da058af6473bc45c4eab62916225b2", + "InstalledFiles": [ + "etc/motd", + "etc/crontabs/root", + "etc/modprobe.d/aliases.conf", + "etc/modprobe.d/blacklist.conf", + "etc/modprobe.d/i386.conf", + "etc/profile.d/20locale.sh", + "etc/profile.d/README", + "etc/profile.d/color_prompt.sh.disabled", + "usr/lib/sysctl.d/00-alpine.conf", + "var/lock", + "var/run", + "var/spool/mail", + "var/spool/cron/crontabs" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "alpine-baselayout-data@3.7.2-r1", + "Name": "alpine-baselayout-data", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-baselayout-data@3.7.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "fcc3cd90122d8aa7" + }, + "Version": "3.7.2-r1", + "Arch": "x86_64", + "SrcName": "alpine-baselayout", + "SrcVersion": "3.7.2-r1", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:c6f9bded17d844b6f1b0bb5766d2c35c0d5c8508", + "InstalledFiles": [ + "etc/fstab", + "etc/group", + "etc/hostname", + "etc/hosts", + "etc/inittab", + "etc/modules", + "etc/mtab", + "etc/nsswitch.conf", + "etc/passwd", + "etc/profile", + "etc/protocols", + "etc/services", + "etc/shadow", + "etc/shells", + "etc/sysctl.conf" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "alpine-keys@2.6-r0", + "Name": "alpine-keys", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-keys@2.6-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "cb1f6c8fa74713e0" + }, + "Version": "2.6-r0", + "Arch": "x86_64", + "SrcName": "alpine-keys", + "SrcVersion": "2.6-r0", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:d8d6b80e53c059a77e4915da78ba964f3ffea240", + "InstalledFiles": [ + "etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub", + "etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub", + "etc/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub", + "usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pub", + "usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub", + "usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub", + "usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub", + "usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub", + "usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub", + "usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub", + "usr/share/apk/keys/loongarch64/alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pub", + "usr/share/apk/keys/mips64/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub", + "usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub", + "usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub", + "usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub", + "usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub", + "usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub", + "usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub", + "usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub", + "usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub", + "usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub", + "usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub", + "usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub", + "usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "alpine-release@3.24.1-r0", + "Name": "alpine-release", + "Identifier": { + "PURL": "pkg:apk/alpine/alpine-release@3.24.1-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "6cfad6f36e1f31aa" + }, + "Version": "3.24.1-r0", + "Arch": "x86_64", + "SrcName": "alpine-base", + "SrcVersion": "3.24.1-r0", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "alpine-keys@2.6-r0" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:bc6912a25cdc7733e0035ed509eceaa4026946e3", + "InstalledFiles": [ + "etc/alpine-release", + "etc/issue", + "etc/os-release", + "etc/secfixes.d/alpine", + "usr/lib/os-release" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "apk-tools@3.0.6-r0", + "Name": "apk-tools", + "Identifier": { + "PURL": "pkg:apk/alpine/apk-tools@3.0.6-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "b37730591f24ae44" + }, + "Version": "3.0.6-r0", + "Arch": "x86_64", + "SrcName": "apk-tools", + "SrcVersion": "3.0.6-r0", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "ca-certificates-bundle@20260611-r0", + "libapk@3.0.6-r0", + "libcrypto3@3.5.8-r0", + "musl@1.2.6-r2", + "zlib@1.3.2-r1" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:043333589798a1f52e09ae63f026c6c8fa676d34", + "InstalledFiles": [ + "sbin/apk" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "busybox@1.37.0-r31", + "Name": "busybox", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox@1.37.0-r31?arch=x86_64\u0026distro=3.24.1", + "UID": "771020c43c8440bf" + }, + "Version": "1.37.0-r31", + "Arch": "x86_64", + "SrcName": "busybox", + "SrcVersion": "1.37.0-r31", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Sören Tempel \u003csoeren+alpine@soeren-tempel.net\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:b5405ebc02f7dd8be95b6265c54b243d5456ab8f", + "InstalledFiles": [ + "bin/busybox", + "etc/securetty", + "etc/busybox-paths.d/busybox", + "etc/logrotate.d/acpid", + "etc/network/if-up.d/dad", + "etc/udhcpc/udhcpc.conf", + "usr/share/udhcpc/default.script" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "busybox-binsh@1.37.0-r31", + "Name": "busybox-binsh", + "Identifier": { + "PURL": "pkg:apk/alpine/busybox-binsh@1.37.0-r31?arch=x86_64\u0026distro=3.24.1", + "UID": "1ec8a3d5d2b63297" + }, + "Version": "1.37.0-r31", + "Arch": "x86_64", + "SrcName": "busybox", + "SrcVersion": "1.37.0-r31", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Sören Tempel \u003csoeren+alpine@soeren-tempel.net\u003e", + "DependsOn": [ + "busybox@1.37.0-r31" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:5cbd14acc6f1804c5bac6c77dc2c492f010b0fc7", + "InstalledFiles": [ + "bin/sh" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "ca-certificates@20260611-r0", + "Name": "ca-certificates", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates@20260611-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "2a3c316ee83c6198" + }, + "Version": "20260611-r0", + "Arch": "x86_64", + "SrcName": "ca-certificates", + "SrcVersion": "20260611-r0", + "Licenses": [ + "MPL-2.0", + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "busybox-binsh@1.37.0-r31", + "libcrypto3@3.5.8-r0", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + "Digest": "sha1:8f2a04abeb54b331e2970a0a0dffb7bd6bdde567", + "InstalledFiles": [ + "etc/ca-certificates.conf", + "etc/apk/protected_paths.d/ca-certificates.list", + "etc/ca-certificates/update.d/certhash", + "usr/bin/c_rehash", + "usr/sbin/update-ca-certificates", + "usr/share/ca-certificates/mozilla/ACCVRAIZ1.crt", + "usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM.crt", + "usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.crt", + "usr/share/ca-certificates/mozilla/ANF_Secure_Server_Root_CA.crt", + "usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt", + "usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt", + "usr/share/ca-certificates/mozilla/Amazon_Root_CA_2.crt", + "usr/share/ca-certificates/mozilla/Amazon_Root_CA_3.crt", + "usr/share/ca-certificates/mozilla/Amazon_Root_CA_4.crt", + "usr/share/ca-certificates/mozilla/Atos_TrustedRoot_2011.crt", + "usr/share/ca-certificates/mozilla/Atos_TrustedRoot_Root_CA_ECC_TLS_2021.crt", + "usr/share/ca-certificates/mozilla/Atos_TrustedRoot_Root_CA_RSA_TLS_2021.crt", + "usr/share/ca-certificates/mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt", + "usr/share/ca-certificates/mozilla/BJCA_Global_Root_CA1.crt", + "usr/share/ca-certificates/mozilla/BJCA_Global_Root_CA2.crt", + "usr/share/ca-certificates/mozilla/Buypass_Class_2_Root_CA.crt", + "usr/share/ca-certificates/mozilla/Buypass_Class_3_Root_CA.crt", + "usr/share/ca-certificates/mozilla/CA_Disig_Root_R2.crt", + "usr/share/ca-certificates/mozilla/CFCA_EV_ROOT.crt", + "usr/share/ca-certificates/mozilla/COMODO_ECC_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/Certainly_Root_E1.crt", + "usr/share/ca-certificates/mozilla/Certainly_Root_R1.crt", + "usr/share/ca-certificates/mozilla/Certigna_Root_CA.crt", + "usr/share/ca-certificates/mozilla/Certum_EC-384_CA.crt", + "usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA.crt", + "usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA_2.crt", + "usr/share/ca-certificates/mozilla/Certum_Trusted_Root_CA.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_BR_Root_CA_1_2020.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_BR_Root_CA_2_2023.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_EV_Root_CA_1_2020.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_EV_Root_CA_2_2023.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt", + "usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G2.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G3.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G2.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G3.crt", + "usr/share/ca-certificates/mozilla/DigiCert_TLS_ECC_P384_Root_G5.crt", + "usr/share/ca-certificates/mozilla/DigiCert_TLS_RSA4096_Root_G5.crt", + "usr/share/ca-certificates/mozilla/DigiCert_Trusted_Root_G4.crt", + "usr/share/ca-certificates/mozilla/GDCA_TrustAUTH_R5_ROOT.crt", + "usr/share/ca-certificates/mozilla/GTS_Root_R1.crt", + "usr/share/ca-certificates/mozilla/GTS_Root_R3.crt", + "usr/share/ca-certificates/mozilla/GTS_Root_R4.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R4.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R5.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R3.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R6.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_Root_E46.crt", + "usr/share/ca-certificates/mozilla/GlobalSign_Root_R46.crt", + "usr/share/ca-certificates/mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt", + "usr/share/ca-certificates/mozilla/HARICA_TLS_ECC_Root_CA_2021.crt", + "usr/share/ca-certificates/mozilla/HARICA_TLS_RSA_Root_CA_2021.crt", + "usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt", + "usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt", + "usr/share/ca-certificates/mozilla/HiPKI_Root_CA_-_G1.crt", + "usr/share/ca-certificates/mozilla/Hongkong_Post_Root_CA_3.crt", + "usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt", + "usr/share/ca-certificates/mozilla/ISRG_Root_X2.crt", + "usr/share/ca-certificates/mozilla/IdenTrust_Commercial_Root_CA_1.crt", + "usr/share/ca-certificates/mozilla/IdenTrust_Public_Sector_Root_CA_1.crt", + "usr/share/ca-certificates/mozilla/Izenpe.com.crt", + "usr/share/ca-certificates/mozilla/Microsec_e-Szigno_Root_CA_2009.crt", + "usr/share/ca-certificates/mozilla/Microsoft_ECC_Root_Certificate_Authority_2017.crt", + "usr/share/ca-certificates/mozilla/Microsoft_RSA_Root_Certificate_Authority_2017.crt", + "usr/share/ca-certificates/mozilla/NAVER_Global_Root_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt", + "usr/share/ca-certificates/mozilla/OISTE_Server_Root_ECC_G1.crt", + "usr/share/ca-certificates/mozilla/OISTE_Server_Root_RSA_G1.crt", + "usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt", + "usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt", + "usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_1_G3.crt", + "usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2_G3.crt", + "usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3_G3.crt", + "usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt", + "usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt", + "usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_ECC.crt", + "usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_RSA.crt", + "usr/share/ca-certificates/mozilla/SSL.com_TLS_ECC_Root_CA_2022.crt", + "usr/share/ca-certificates/mozilla/SSL.com_TLS_RSA_Root_CA_2022.crt", + "usr/share/ca-certificates/mozilla/SZAFIR_ROOT_CA2.crt", + "usr/share/ca-certificates/mozilla/Sectigo_Public_Server_Authentication_Root_E46.crt", + "usr/share/ca-certificates/mozilla/Sectigo_Public_Server_Authentication_Root_R46.crt", + "usr/share/ca-certificates/mozilla/SecureSign_Root_CA14.crt", + "usr/share/ca-certificates/mozilla/SecureSign_Root_CA15.crt", + "usr/share/ca-certificates/mozilla/Security_Communication_ECC_RootCA1.crt", + "usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt", + "usr/share/ca-certificates/mozilla/Starfield_Root_Certificate_Authority_-_G2.crt", + "usr/share/ca-certificates/mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt", + "usr/share/ca-certificates/mozilla/SwissSign_RSA_TLS_Root_CA_2022_-_1.crt", + "usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_2.crt", + "usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_3.crt", + "usr/share/ca-certificates/mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt", + "usr/share/ca-certificates/mozilla/TWCA_CYBER_Root_CA.crt", + "usr/share/ca-certificates/mozilla/TWCA_Global_Root_CA.crt", + "usr/share/ca-certificates/mozilla/TWCA_Root_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/Telekom_Security_TLS_ECC_Root_2020.crt", + "usr/share/ca-certificates/mozilla/Telekom_Security_TLS_RSA_Root_2023.crt", + "usr/share/ca-certificates/mozilla/Telia_Root_CA_v2.crt", + "usr/share/ca-certificates/mozilla/TrustAsia_Global_Root_CA_G3.crt", + "usr/share/ca-certificates/mozilla/TrustAsia_Global_Root_CA_G4.crt", + "usr/share/ca-certificates/mozilla/TrustAsia_TLS_ECC_Root_CA.crt", + "usr/share/ca-certificates/mozilla/TrustAsia_TLS_RSA_Root_CA.crt", + "usr/share/ca-certificates/mozilla/TunTrust_Root_CA.crt", + "usr/share/ca-certificates/mozilla/UCA_Extended_Validation_Root.crt", + "usr/share/ca-certificates/mozilla/UCA_Global_G2_Root.crt", + "usr/share/ca-certificates/mozilla/USERTrust_ECC_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/USERTrust_RSA_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/certSIGN_Root_CA_G2.crt", + "usr/share/ca-certificates/mozilla/e-Szigno_Root_CA_2017.crt", + "usr/share/ca-certificates/mozilla/e-Szigno_TLS_Root_CA_2023.crt", + "usr/share/ca-certificates/mozilla/ePKI_Root_Certification_Authority.crt", + "usr/share/ca-certificates/mozilla/emSign_ECC_Root_CA_-_C3.crt", + "usr/share/ca-certificates/mozilla/emSign_ECC_Root_CA_-_G3.crt", + "usr/share/ca-certificates/mozilla/emSign_Root_CA_-_C1.crt", + "usr/share/ca-certificates/mozilla/emSign_Root_CA_-_G1.crt", + "usr/share/ca-certificates/mozilla/vTrus_ECC_Root_CA.crt", + "usr/share/ca-certificates/mozilla/vTrus_Root_CA.crt" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "ca-certificates-bundle@20260611-r0", + "Name": "ca-certificates-bundle", + "Identifier": { + "PURL": "pkg:apk/alpine/ca-certificates-bundle@20260611-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "20337c2ea28bef28" + }, + "Version": "20260611-r0", + "Arch": "x86_64", + "SrcName": "ca-certificates", + "SrcVersion": "20260611-r0", + "Licenses": [ + "MPL-2.0", + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:c9534a03750bdfae341f10969016090fc11febbd", + "InstalledFiles": [ + "etc/ssl/cert.pem", + "etc/ssl/certs/ca-certificates.crt", + "etc/ssl1.1/cert.pem", + "etc/ssl1.1/certs" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "gdbm@1.26-r0", + "Name": "gdbm", + "Identifier": { + "PURL": "pkg:apk/alpine/gdbm@1.26-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "5eb1a3f86262ca77" + }, + "Version": "1.26-r0", + "Arch": "x86_64", + "SrcName": "gdbm", + "SrcVersion": "1.26-r0", + "Licenses": [ + "GPL-3.0-or-later" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:619493d8124fe49a8ee1d8f7a1372cf7e3977337", + "InstalledFiles": [ + "usr/lib/libgdbm.so.6", + "usr/lib/libgdbm.so.6.0.0", + "usr/lib/libgdbm_compat.so.4", + "usr/lib/libgdbm_compat.so.4.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "keyutils-libs@1.6.3-r4", + "Name": "keyutils-libs", + "Identifier": { + "PURL": "pkg:apk/alpine/keyutils-libs@1.6.3-r4?arch=x86_64\u0026distro=3.24.1", + "UID": "a1a29120eb342032" + }, + "Version": "1.6.3-r4", + "Arch": "x86_64", + "SrcName": "keyutils", + "SrcVersion": "1.6.3-r4", + "Licenses": [ + "GPL-2.0-or-later", + "LGPL-2.0-or-later" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:b7331c96f077fc3522ee4361a441d1097204cd90", + "InstalledFiles": [ + "usr/lib/libkeyutils.so.1", + "usr/lib/libkeyutils.so.1.10" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "krb5-conf@1.0-r2", + "Name": "krb5-conf", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-conf@1.0-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "e7cf94ba8b6dbc33" + }, + "Version": "1.0-r2", + "Arch": "x86_64", + "SrcName": "krb5-conf", + "SrcVersion": "1.0-r2", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:40a11e0690a59e110367b62a80661024e9942a2d", + "InstalledFiles": [ + "etc/krb5.conf" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "krb5-libs@1.22.2-r1", + "Name": "krb5-libs", + "Identifier": { + "PURL": "pkg:apk/alpine/krb5-libs@1.22.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "958f8b4a4f087dac" + }, + "Version": "1.22.2-r1", + "Arch": "x86_64", + "SrcName": "krb5", + "SrcVersion": "1.22.2-r1", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "keyutils-libs@1.6.3-r4", + "krb5-conf@1.0-r2", + "libcom_err@1.47.4-r0", + "libcrypto3@3.5.8-r0", + "libssl3@3.5.8-r0", + "libverto@0.3.2-r2", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:ef02346e21b817ff379e4601e5b1fc9760e5e31a", + "InstalledFiles": [ + "usr/lib/libgssapi_krb5.so.2", + "usr/lib/libgssapi_krb5.so.2.2", + "usr/lib/libgssrpc.so.4", + "usr/lib/libgssrpc.so.4.2", + "usr/lib/libk5crypto.so.3", + "usr/lib/libk5crypto.so.3.1", + "usr/lib/libkadm5clnt_mit.so.12", + "usr/lib/libkadm5clnt_mit.so.12.0", + "usr/lib/libkadm5srv_mit.so.12", + "usr/lib/libkadm5srv_mit.so.12.0", + "usr/lib/libkdb5.so.10", + "usr/lib/libkdb5.so.10.0", + "usr/lib/libkrad.so.0", + "usr/lib/libkrad.so.0.0", + "usr/lib/libkrb5.so.3", + "usr/lib/libkrb5.so.3.3", + "usr/lib/libkrb5support.so.0", + "usr/lib/libkrb5support.so.0.1", + "usr/lib/krb5/plugins/kdb/db2.so", + "usr/lib/krb5/plugins/preauth/otp.so", + "usr/lib/krb5/plugins/preauth/spake.so", + "usr/lib/krb5/plugins/preauth/test.so", + "usr/lib/krb5/plugins/tls/k5tls.so" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libapk@3.0.6-r0", + "Name": "libapk", + "Identifier": { + "PURL": "pkg:apk/alpine/libapk@3.0.6-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "779641db16cf6477" + }, + "Version": "3.0.6-r0", + "Arch": "x86_64", + "SrcName": "apk-tools", + "SrcVersion": "3.0.6-r0", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "libcrypto3@3.5.8-r0", + "libssl3@3.5.8-r0", + "musl@1.2.6-r2", + "zlib@1.3.2-r1" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:523a8f58104589f74f743d501c81bf6517155378", + "InstalledFiles": [ + "usr/lib/libapk.so.3.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libbz2@1.0.8-r6", + "Name": "libbz2", + "Identifier": { + "PURL": "pkg:apk/alpine/libbz2@1.0.8-r6?arch=x86_64\u0026distro=3.24.1", + "UID": "48e17539404e2d56" + }, + "Version": "1.0.8-r6", + "Arch": "x86_64", + "SrcName": "bzip2", + "SrcVersion": "1.0.8-r6", + "Licenses": [ + "bzip-2-1.0.6" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:08566ba5c7af97c25474be8b24e8b48f0116b67d", + "InstalledFiles": [ + "usr/lib/libbz2.so.1", + "usr/lib/libbz2.so.1.0.8" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libcom_err@1.47.4-r0", + "Name": "libcom_err", + "Identifier": { + "PURL": "pkg:apk/alpine/libcom_err@1.47.4-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "3fc35a3f66d192af" + }, + "Version": "1.47.4-r0", + "Arch": "x86_64", + "SrcName": "e2fsprogs", + "SrcVersion": "1.47.4-r0", + "Licenses": [ + "GPL-2.0-or-later", + "LGPL-2.0-or-later", + "BSD-3-Clause", + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:4b9fb5899ea0b1c0cfbb2a2c5952704437d4ecef", + "InstalledFiles": [ + "usr/lib/libcom_err.so.2", + "usr/lib/libcom_err.so.2.1" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libcrypto3@3.5.8-r0", + "Name": "libcrypto3", + "Identifier": { + "PURL": "pkg:apk/alpine/libcrypto3@3.5.8-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "4299bba2ba9c96aa" + }, + "Version": "3.5.8-r0", + "Arch": "x86_64", + "SrcName": "openssl", + "SrcVersion": "3.5.8-r0", + "Licenses": [ + "Apache-2.0" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:1b3b9fc0c136f4936932bcb2ec21499f0ae5dfd3", + "InstalledFiles": [ + "etc/ssl/ct_log_list.cnf", + "etc/ssl/ct_log_list.cnf.dist", + "etc/ssl/openssl.cnf", + "etc/ssl/openssl.cnf.dist", + "usr/lib/libcrypto.so.3", + "usr/lib/engines-3/afalg.so", + "usr/lib/engines-3/capi.so", + "usr/lib/engines-3/loader_attic.so", + "usr/lib/engines-3/padlock.so", + "usr/lib/ossl-modules/legacy.so" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libffi@3.5.2-r1", + "Name": "libffi", + "Identifier": { + "PURL": "pkg:apk/alpine/libffi@3.5.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "d3eaa921287b1ccd" + }, + "Version": "3.5.2-r1", + "Arch": "x86_64", + "SrcName": "libffi", + "SrcVersion": "3.5.2-r1", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:2f7b261f7fcecc4eebd8b330e7f6fb80713bfe3a", + "InstalledFiles": [ + "usr/lib/libffi.so.8", + "usr/lib/libffi.so.8.2.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libintl@1.0-r0", + "Name": "libintl", + "Identifier": { + "PURL": "pkg:apk/alpine/libintl@1.0-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "25c18808d8fc87e0" + }, + "Version": "1.0-r0", + "Arch": "x86_64", + "SrcName": "gettext", + "SrcVersion": "1.0-r0", + "Licenses": [ + "LGPL-2.1-or-later" + ], + "Maintainer": "Carlo Landmeter \u003cclandmeter@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:282d6642ccac87237e43a864159d73cf5abe7550", + "InstalledFiles": [ + "usr/lib/libintl.so.8", + "usr/lib/libintl.so.8.4.6" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libncursesw@6.6_p20260516-r0", + "Name": "libncursesw", + "Identifier": { + "PURL": "pkg:apk/alpine/libncursesw@6.6_p20260516-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "e8939f45e2191bcc" + }, + "Version": "6.6_p20260516-r0", + "Arch": "x86_64", + "SrcName": "ncurses", + "SrcVersion": "6.6_p20260516-r0", + "Licenses": [ + "X-11" + ], + "Maintainer": "Milan P. Stanić \u003cmps@arvanta.net\u003e", + "DependsOn": [ + "musl@1.2.6-r2", + "ncurses-terminfo-base@6.6_p20260516-r0" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:9f318e6e324d6827274829194cf6ac6afbaded12", + "InstalledFiles": [ + "usr/lib/libncursesw.so.6", + "usr/lib/libncursesw.so.6.6" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libnsl@2.0.1-r2", + "Name": "libnsl", + "Identifier": { + "PURL": "pkg:apk/alpine/libnsl@2.0.1-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "3d893c60d41da67b" + }, + "Version": "2.0.1-r2", + "Arch": "x86_64", + "SrcName": "libnsl", + "SrcVersion": "2.0.1-r2", + "Licenses": [ + "LGPL-2.0-or-later" + ], + "DependsOn": [ + "libintl@1.0-r0", + "libtirpc@1.3.5-r1", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:5194adbf26560b52be318481a7af294ab05fd795", + "InstalledFiles": [ + "usr/lib/libnsl.so.3", + "usr/lib/libnsl.so.3.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libpanelw@6.6_p20260516-r0", + "Name": "libpanelw", + "Identifier": { + "PURL": "pkg:apk/alpine/libpanelw@6.6_p20260516-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "ef1ad9bb256b373" + }, + "Version": "6.6_p20260516-r0", + "Arch": "x86_64", + "SrcName": "ncurses", + "SrcVersion": "6.6_p20260516-r0", + "Licenses": [ + "X-11" + ], + "Maintainer": "Milan P. Stanić \u003cmps@arvanta.net\u003e", + "DependsOn": [ + "libncursesw@6.6_p20260516-r0", + "musl@1.2.6-r2", + "ncurses-terminfo-base@6.6_p20260516-r0" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:149bdc434232ed11fc5bb975ba519a07154a6f56", + "InstalledFiles": [ + "usr/lib/libpanelw.so.6", + "usr/lib/libpanelw.so.6.6" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libssl3@3.5.8-r0", + "Name": "libssl3", + "Identifier": { + "PURL": "pkg:apk/alpine/libssl3@3.5.8-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "f290ab59b88b1c4a" + }, + "Version": "3.5.8-r0", + "Arch": "x86_64", + "SrcName": "openssl", + "SrcVersion": "3.5.8-r0", + "Licenses": [ + "Apache-2.0" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "libcrypto3@3.5.8-r0", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:5f9b1e55d821953d2e2b1db322dad70a3b5041ea", + "InstalledFiles": [ + "usr/lib/libssl.so.3" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libtirpc@1.3.5-r1", + "Name": "libtirpc", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc@1.3.5-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "471c8d955ca03be5" + }, + "Version": "1.3.5-r1", + "Arch": "x86_64", + "SrcName": "libtirpc", + "SrcVersion": "1.3.5-r1", + "Licenses": [ + "BSD-3-Clause" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "krb5-libs@1.22.2-r1", + "libtirpc-conf@1.3.5-r1", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:c32865bd86a8b8829d152279cabbc5ac6d430eb2", + "InstalledFiles": [ + "usr/lib/libtirpc.so.3", + "usr/lib/libtirpc.so.3.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libtirpc-conf@1.3.5-r1", + "Name": "libtirpc-conf", + "Identifier": { + "PURL": "pkg:apk/alpine/libtirpc-conf@1.3.5-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "3437392c14aad33f" + }, + "Version": "1.3.5-r1", + "Arch": "x86_64", + "SrcName": "libtirpc", + "SrcVersion": "1.3.5-r1", + "Licenses": [ + "BSD-3-Clause" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:0c17d9988dc986c90e22f79778df047eca9973ff", + "InstalledFiles": [ + "etc/bindresvport.blacklist", + "etc/netconfig" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libuuid@2.42.3-r1", + "Name": "libuuid", + "Identifier": { + "PURL": "pkg:apk/alpine/libuuid@2.42.3-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "c444e9cdd1bdda40" + }, + "Version": "2.42.3-r1", + "Arch": "x86_64", + "SrcName": "util-linux", + "SrcVersion": "2.42.3-r1", + "Licenses": [ + "BSD-3-Clause" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:f9b4a8a412a0c07a489e46fb5db41f9d0dc84d4ec38a4e2c6ab9531f44e0d9f1" + }, + "Digest": "sha1:8f041ef637ad75f381cc0c034f2afbbb0303264e", + "InstalledFiles": [ + "usr/lib/libuuid.so.1", + "usr/lib/libuuid.so.1.3.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "libverto@0.3.2-r2", + "Name": "libverto", + "Identifier": { + "PURL": "pkg:apk/alpine/libverto@0.3.2-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "9df4321a283a6cf6" + }, + "Version": "0.3.2-r2", + "Arch": "x86_64", + "SrcName": "libverto", + "SrcVersion": "0.3.2-r2", + "Licenses": [ + "MIT" + ], + "Maintainer": "Francesco Colista \u003cfcolista@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:73233059338142e4ac6d8fb8bb0074e93da75dc1", + "InstalledFiles": [ + "usr/lib/libverto.so.1", + "usr/lib/libverto.so.1.0.0" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "musl@1.2.6-r2", + "Name": "musl", + "Identifier": { + "PURL": "pkg:apk/alpine/musl@1.2.6-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "1f8cb44befe503d4" + }, + "Version": "1.2.6-r2", + "Arch": "x86_64", + "SrcName": "musl", + "SrcVersion": "1.2.6-r2", + "Licenses": [ + "MIT" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:0f7e5827e4e1a73631beda27b78431a8ba240e05", + "InstalledFiles": [ + "lib/ld-musl-x86_64.so.1", + "lib/libc.musl-x86_64.so.1" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "musl-utils@1.2.6-r2", + "Name": "musl-utils", + "Identifier": { + "PURL": "pkg:apk/alpine/musl-utils@1.2.6-r2?arch=x86_64\u0026distro=3.24.1", + "UID": "4497482ec1d943e1" + }, + "Version": "1.2.6-r2", + "Arch": "x86_64", + "SrcName": "musl", + "SrcVersion": "1.2.6-r2", + "Licenses": [ + "MIT", + "BSD-2-Clause", + "GPL-2.0-or-later" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2", + "scanelf@1.3.9-r1" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:75ada3c48d63ec5d87c42fdf934a3fdd11298dc5", + "InstalledFiles": [ + "sbin/ldconfig", + "usr/bin/getconf", + "usr/bin/getent", + "usr/bin/iconv", + "usr/bin/ldd" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "ncurses-terminfo-base@6.6_p20260516-r0", + "Name": "ncurses-terminfo-base", + "Identifier": { + "PURL": "pkg:apk/alpine/ncurses-terminfo-base@6.6_p20260516-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "e7fac5c6a6e9ae8" + }, + "Version": "6.6_p20260516-r0", + "Arch": "x86_64", + "SrcName": "ncurses", + "SrcVersion": "6.6_p20260516-r0", + "Licenses": [ + "X-11" + ], + "Maintainer": "Milan P. Stanić \u003cmps@arvanta.net\u003e", + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:9d551d828e9c8ee52c5801c1d6046828ebf15752", + "InstalledFiles": [ + "etc/terminfo/a/alacritty", + "etc/terminfo/a/ansi", + "etc/terminfo/d/dumb", + "etc/terminfo/g/gnome", + "etc/terminfo/g/gnome-256color", + "etc/terminfo/k/konsole", + "etc/terminfo/k/konsole-256color", + "etc/terminfo/k/konsole-linux", + "etc/terminfo/l/linux", + "etc/terminfo/p/putty", + "etc/terminfo/p/putty-256color", + "etc/terminfo/r/rxvt", + "etc/terminfo/r/rxvt-256color", + "etc/terminfo/s/screen", + "etc/terminfo/s/screen-256color", + "etc/terminfo/s/st-0.6", + "etc/terminfo/s/st-0.7", + "etc/terminfo/s/st-0.8", + "etc/terminfo/s/st-0.8.5", + "etc/terminfo/s/st-16color", + "etc/terminfo/s/st-256color", + "etc/terminfo/s/st-direct", + "etc/terminfo/s/sun", + "etc/terminfo/t/terminator", + "etc/terminfo/t/terminology", + "etc/terminfo/t/terminology-0.6.1", + "etc/terminfo/t/terminology-1.0.0", + "etc/terminfo/t/terminology-1.8.1", + "etc/terminfo/t/tmux", + "etc/terminfo/t/tmux-256color", + "etc/terminfo/v/vt100", + "etc/terminfo/v/vt102", + "etc/terminfo/v/vt200", + "etc/terminfo/v/vt220", + "etc/terminfo/v/vt52", + "etc/terminfo/v/vte", + "etc/terminfo/v/vte-256color", + "etc/terminfo/x/xterm", + "etc/terminfo/x/xterm-256color", + "etc/terminfo/x/xterm-color", + "etc/terminfo/x/xterm-xfree86" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "readline@8.3.3-r1", + "Name": "readline", + "Identifier": { + "PURL": "pkg:apk/alpine/readline@8.3.3-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "f50058781c93e1f2" + }, + "Version": "8.3.3-r1", + "Arch": "x86_64", + "SrcName": "readline", + "SrcVersion": "8.3.3-r1", + "Licenses": [ + "GPL-3.0-or-later" + ], + "Maintainer": "qaqland \u003cqaq@qaq.land\u003e", + "DependsOn": [ + "libncursesw@6.6_p20260516-r0", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:945b16e378bc00e44d89d4de8124bba7647fdf4d", + "InstalledFiles": [ + "etc/inputrc", + "usr/lib/libreadline.so.8", + "usr/lib/libreadline.so.8.3" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "scanelf@1.3.9-r1", + "Name": "scanelf", + "Identifier": { + "PURL": "pkg:apk/alpine/scanelf@1.3.9-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "936394657a1626fb" + }, + "Version": "1.3.9-r1", + "Arch": "x86_64", + "SrcName": "pax-utils", + "SrcVersion": "1.3.9-r1", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:013f903d0ba219673aebbdd04f74bb5ed82b01f0", + "InstalledFiles": [ + "usr/bin/scanelf" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "sqlite-libs@3.53.4-r0", + "Name": "sqlite-libs", + "Identifier": { + "PURL": "pkg:apk/alpine/sqlite-libs@3.53.4-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "8b10aee2ccc192de" + }, + "Version": "3.53.4-r0", + "Arch": "x86_64", + "SrcName": "sqlite", + "SrcVersion": "3.53.4-r0", + "Licenses": [ + "blessing" + ], + "Maintainer": "Jingyun Hua \u003chuajingyun@loongson.cn\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:f7630ceb37c232b6609861aeab6cdb9cd120e6fa", + "InstalledFiles": [ + "usr/lib/libsqlite3.so.0", + "usr/lib/libsqlite3.so.3.53.4" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "ssl_client@1.37.0-r31", + "Name": "ssl_client", + "Identifier": { + "PURL": "pkg:apk/alpine/ssl_client@1.37.0-r31?arch=x86_64\u0026distro=3.24.1", + "UID": "d42e31f15a4ce47a" + }, + "Version": "1.37.0-r31", + "Arch": "x86_64", + "SrcName": "busybox", + "SrcVersion": "1.37.0-r31", + "Licenses": [ + "GPL-2.0-only" + ], + "Maintainer": "Sören Tempel \u003csoeren+alpine@soeren-tempel.net\u003e", + "DependsOn": [ + "libcrypto3@3.5.8-r0", + "libssl3@3.5.8-r0", + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c" + }, + "Digest": "sha1:c220f4a5125a313af733e98def94132bb1e9d40d", + "InstalledFiles": [ + "usr/bin/ssl_client" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "tzdata@2026c-r0", + "Name": "tzdata", + "Identifier": { + "PURL": "pkg:apk/alpine/tzdata@2026c-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "52c6b50eff629f9d" + }, + "Version": "2026c-r0", + "Arch": "x86_64", + "SrcName": "tzdata", + "SrcVersion": "2026c-r0", + "Licenses": [ + "Public-Domain" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "Layer": { + "DiffID": "sha256:3ca4be2c6e9ac0223715355253725381000486c2b45bfcb22cf571b6a85a12dd" + }, + "Digest": "sha1:61f7544ecd8dd63eac23fe3e645702fda92ef02a", + "InstalledFiles": [ + "usr/share/zoneinfo/CET", + "usr/share/zoneinfo/CST6CDT", + "usr/share/zoneinfo/Cuba", + "usr/share/zoneinfo/EET", + "usr/share/zoneinfo/EST", + "usr/share/zoneinfo/EST5EDT", + "usr/share/zoneinfo/Egypt", + "usr/share/zoneinfo/Eire", + "usr/share/zoneinfo/Factory", + "usr/share/zoneinfo/GB", + "usr/share/zoneinfo/GB-Eire", + "usr/share/zoneinfo/GMT", + "usr/share/zoneinfo/GMT+0", + "usr/share/zoneinfo/GMT-0", + "usr/share/zoneinfo/GMT0", + "usr/share/zoneinfo/Greenwich", + "usr/share/zoneinfo/HST", + "usr/share/zoneinfo/Hongkong", + "usr/share/zoneinfo/Iceland", + "usr/share/zoneinfo/Iran", + "usr/share/zoneinfo/Israel", + "usr/share/zoneinfo/Jamaica", + "usr/share/zoneinfo/Japan", + "usr/share/zoneinfo/Kwajalein", + "usr/share/zoneinfo/Libya", + "usr/share/zoneinfo/MET", + "usr/share/zoneinfo/MST", + "usr/share/zoneinfo/MST7MDT", + "usr/share/zoneinfo/NZ", + "usr/share/zoneinfo/NZ-CHAT", + "usr/share/zoneinfo/Navajo", + "usr/share/zoneinfo/PRC", + "usr/share/zoneinfo/PST8PDT", + "usr/share/zoneinfo/Poland", + "usr/share/zoneinfo/Portugal", + "usr/share/zoneinfo/ROC", + "usr/share/zoneinfo/ROK", + "usr/share/zoneinfo/Singapore", + "usr/share/zoneinfo/Turkey", + "usr/share/zoneinfo/UCT", + "usr/share/zoneinfo/UTC", + "usr/share/zoneinfo/Universal", + "usr/share/zoneinfo/W-SU", + "usr/share/zoneinfo/WET", + "usr/share/zoneinfo/Zulu", + "usr/share/zoneinfo/iso3166.tab", + "usr/share/zoneinfo/leap-seconds.list", + "usr/share/zoneinfo/posixrules", + "usr/share/zoneinfo/zone.tab", + "usr/share/zoneinfo/zone1970.tab", + "usr/share/zoneinfo/Africa/Abidjan", + "usr/share/zoneinfo/Africa/Accra", + "usr/share/zoneinfo/Africa/Addis_Ababa", + "usr/share/zoneinfo/Africa/Algiers", + "usr/share/zoneinfo/Africa/Asmara", + "usr/share/zoneinfo/Africa/Asmera", + "usr/share/zoneinfo/Africa/Bamako", + "usr/share/zoneinfo/Africa/Bangui", + "usr/share/zoneinfo/Africa/Banjul", + "usr/share/zoneinfo/Africa/Bissau", + "usr/share/zoneinfo/Africa/Blantyre", + "usr/share/zoneinfo/Africa/Brazzaville", + "usr/share/zoneinfo/Africa/Bujumbura", + "usr/share/zoneinfo/Africa/Cairo", + "usr/share/zoneinfo/Africa/Casablanca", + "usr/share/zoneinfo/Africa/Ceuta", + "usr/share/zoneinfo/Africa/Conakry", + "usr/share/zoneinfo/Africa/Dakar", + "usr/share/zoneinfo/Africa/Dar_es_Salaam", + "usr/share/zoneinfo/Africa/Djibouti", + "usr/share/zoneinfo/Africa/Douala", + "usr/share/zoneinfo/Africa/El_Aaiun", + "usr/share/zoneinfo/Africa/Freetown", + "usr/share/zoneinfo/Africa/Gaborone", + "usr/share/zoneinfo/Africa/Harare", + "usr/share/zoneinfo/Africa/Johannesburg", + "usr/share/zoneinfo/Africa/Juba", + "usr/share/zoneinfo/Africa/Kampala", + "usr/share/zoneinfo/Africa/Khartoum", + "usr/share/zoneinfo/Africa/Kigali", + "usr/share/zoneinfo/Africa/Kinshasa", + "usr/share/zoneinfo/Africa/Lagos", + "usr/share/zoneinfo/Africa/Libreville", + "usr/share/zoneinfo/Africa/Lome", + "usr/share/zoneinfo/Africa/Luanda", + "usr/share/zoneinfo/Africa/Lubumbashi", + "usr/share/zoneinfo/Africa/Lusaka", + "usr/share/zoneinfo/Africa/Malabo", + "usr/share/zoneinfo/Africa/Maputo", + "usr/share/zoneinfo/Africa/Maseru", + "usr/share/zoneinfo/Africa/Mbabane", + "usr/share/zoneinfo/Africa/Mogadishu", + "usr/share/zoneinfo/Africa/Monrovia", + "usr/share/zoneinfo/Africa/Nairobi", + "usr/share/zoneinfo/Africa/Ndjamena", + "usr/share/zoneinfo/Africa/Niamey", + "usr/share/zoneinfo/Africa/Nouakchott", + "usr/share/zoneinfo/Africa/Ouagadougou", + "usr/share/zoneinfo/Africa/Porto-Novo", + "usr/share/zoneinfo/Africa/Sao_Tome", + "usr/share/zoneinfo/Africa/Timbuktu", + "usr/share/zoneinfo/Africa/Tripoli", + "usr/share/zoneinfo/Africa/Tunis", + "usr/share/zoneinfo/Africa/Windhoek", + "usr/share/zoneinfo/America/Adak", + "usr/share/zoneinfo/America/Anchorage", + "usr/share/zoneinfo/America/Anguilla", + "usr/share/zoneinfo/America/Antigua", + "usr/share/zoneinfo/America/Araguaina", + "usr/share/zoneinfo/America/Aruba", + "usr/share/zoneinfo/America/Asuncion", + "usr/share/zoneinfo/America/Atikokan", + "usr/share/zoneinfo/America/Atka", + "usr/share/zoneinfo/America/Bahia", + "usr/share/zoneinfo/America/Bahia_Banderas", + "usr/share/zoneinfo/America/Barbados", + "usr/share/zoneinfo/America/Belem", + "usr/share/zoneinfo/America/Belize", + "usr/share/zoneinfo/America/Blanc-Sablon", + "usr/share/zoneinfo/America/Boa_Vista", + "usr/share/zoneinfo/America/Bogota", + "usr/share/zoneinfo/America/Boise", + "usr/share/zoneinfo/America/Buenos_Aires", + "usr/share/zoneinfo/America/Cambridge_Bay", + "usr/share/zoneinfo/America/Campo_Grande", + "usr/share/zoneinfo/America/Cancun", + "usr/share/zoneinfo/America/Caracas", + "usr/share/zoneinfo/America/Catamarca", + "usr/share/zoneinfo/America/Cayenne", + "usr/share/zoneinfo/America/Cayman", + "usr/share/zoneinfo/America/Chicago", + "usr/share/zoneinfo/America/Chihuahua", + "usr/share/zoneinfo/America/Ciudad_Juarez", + "usr/share/zoneinfo/America/Coral_Harbour", + "usr/share/zoneinfo/America/Cordoba", + "usr/share/zoneinfo/America/Costa_Rica", + "usr/share/zoneinfo/America/Coyhaique", + "usr/share/zoneinfo/America/Creston", + "usr/share/zoneinfo/America/Cuiaba", + "usr/share/zoneinfo/America/Curacao", + "usr/share/zoneinfo/America/Danmarkshavn", + "usr/share/zoneinfo/America/Dawson", + "usr/share/zoneinfo/America/Dawson_Creek", + "usr/share/zoneinfo/America/Denver", + "usr/share/zoneinfo/America/Detroit", + "usr/share/zoneinfo/America/Dominica", + "usr/share/zoneinfo/America/Edmonton", + "usr/share/zoneinfo/America/Eirunepe", + "usr/share/zoneinfo/America/El_Salvador", + "usr/share/zoneinfo/America/Ensenada", + "usr/share/zoneinfo/America/Fort_Nelson", + "usr/share/zoneinfo/America/Fort_Wayne", + "usr/share/zoneinfo/America/Fortaleza", + "usr/share/zoneinfo/America/Glace_Bay", + "usr/share/zoneinfo/America/Godthab", + "usr/share/zoneinfo/America/Goose_Bay", + "usr/share/zoneinfo/America/Grand_Turk", + "usr/share/zoneinfo/America/Grenada", + "usr/share/zoneinfo/America/Guadeloupe", + "usr/share/zoneinfo/America/Guatemala", + "usr/share/zoneinfo/America/Guayaquil", + "usr/share/zoneinfo/America/Guyana", + "usr/share/zoneinfo/America/Halifax", + "usr/share/zoneinfo/America/Havana", + "usr/share/zoneinfo/America/Hermosillo", + "usr/share/zoneinfo/America/Indianapolis", + "usr/share/zoneinfo/America/Inuvik", + "usr/share/zoneinfo/America/Iqaluit", + "usr/share/zoneinfo/America/Jamaica", + "usr/share/zoneinfo/America/Jujuy", + "usr/share/zoneinfo/America/Juneau", + "usr/share/zoneinfo/America/Knox_IN", + "usr/share/zoneinfo/America/Kralendijk", + "usr/share/zoneinfo/America/La_Paz", + "usr/share/zoneinfo/America/Lima", + "usr/share/zoneinfo/America/Los_Angeles", + "usr/share/zoneinfo/America/Louisville", + "usr/share/zoneinfo/America/Lower_Princes", + "usr/share/zoneinfo/America/Maceio", + "usr/share/zoneinfo/America/Managua", + "usr/share/zoneinfo/America/Manaus", + "usr/share/zoneinfo/America/Marigot", + "usr/share/zoneinfo/America/Martinique", + "usr/share/zoneinfo/America/Matamoros", + "usr/share/zoneinfo/America/Mazatlan", + "usr/share/zoneinfo/America/Mendoza", + "usr/share/zoneinfo/America/Menominee", + "usr/share/zoneinfo/America/Merida", + "usr/share/zoneinfo/America/Metlakatla", + "usr/share/zoneinfo/America/Mexico_City", + "usr/share/zoneinfo/America/Miquelon", + "usr/share/zoneinfo/America/Moncton", + "usr/share/zoneinfo/America/Monterrey", + "usr/share/zoneinfo/America/Montevideo", + "usr/share/zoneinfo/America/Montreal", + "usr/share/zoneinfo/America/Montserrat", + "usr/share/zoneinfo/America/Nassau", + "usr/share/zoneinfo/America/New_York", + "usr/share/zoneinfo/America/Nipigon", + "usr/share/zoneinfo/America/Nome", + "usr/share/zoneinfo/America/Noronha", + "usr/share/zoneinfo/America/Nuuk", + "usr/share/zoneinfo/America/Ojinaga", + "usr/share/zoneinfo/America/Panama", + "usr/share/zoneinfo/America/Pangnirtung", + "usr/share/zoneinfo/America/Paramaribo", + "usr/share/zoneinfo/America/Phoenix", + "usr/share/zoneinfo/America/Port-au-Prince", + "usr/share/zoneinfo/America/Port_of_Spain", + "usr/share/zoneinfo/America/Porto_Acre", + "usr/share/zoneinfo/America/Porto_Velho", + "usr/share/zoneinfo/America/Puerto_Rico", + "usr/share/zoneinfo/America/Punta_Arenas", + "usr/share/zoneinfo/America/Rainy_River", + "usr/share/zoneinfo/America/Rankin_Inlet", + "usr/share/zoneinfo/America/Recife", + "usr/share/zoneinfo/America/Regina", + "usr/share/zoneinfo/America/Resolute", + "usr/share/zoneinfo/America/Rio_Branco", + "usr/share/zoneinfo/America/Rosario", + "usr/share/zoneinfo/America/Santa_Isabel", + "usr/share/zoneinfo/America/Santarem", + "usr/share/zoneinfo/America/Santiago", + "usr/share/zoneinfo/America/Santo_Domingo", + "usr/share/zoneinfo/America/Sao_Paulo", + "usr/share/zoneinfo/America/Scoresbysund", + "usr/share/zoneinfo/America/Shiprock", + "usr/share/zoneinfo/America/Sitka", + "usr/share/zoneinfo/America/St_Barthelemy", + "usr/share/zoneinfo/America/St_Johns", + "usr/share/zoneinfo/America/St_Kitts", + "usr/share/zoneinfo/America/St_Lucia", + "usr/share/zoneinfo/America/St_Thomas", + "usr/share/zoneinfo/America/St_Vincent", + "usr/share/zoneinfo/America/Swift_Current", + "usr/share/zoneinfo/America/Tegucigalpa", + "usr/share/zoneinfo/America/Thule", + "usr/share/zoneinfo/America/Thunder_Bay", + "usr/share/zoneinfo/America/Tijuana", + "usr/share/zoneinfo/America/Toronto", + "usr/share/zoneinfo/America/Tortola", + "usr/share/zoneinfo/America/Vancouver", + "usr/share/zoneinfo/America/Virgin", + "usr/share/zoneinfo/America/Whitehorse", + "usr/share/zoneinfo/America/Winnipeg", + "usr/share/zoneinfo/America/Yakutat", + "usr/share/zoneinfo/America/Yellowknife", + "usr/share/zoneinfo/America/Argentina/Buenos_Aires", + "usr/share/zoneinfo/America/Argentina/Catamarca", + "usr/share/zoneinfo/America/Argentina/ComodRivadavia", + "usr/share/zoneinfo/America/Argentina/Cordoba", + "usr/share/zoneinfo/America/Argentina/Jujuy", + "usr/share/zoneinfo/America/Argentina/La_Rioja", + "usr/share/zoneinfo/America/Argentina/Mendoza", + "usr/share/zoneinfo/America/Argentina/Rio_Gallegos", + "usr/share/zoneinfo/America/Argentina/Salta", + "usr/share/zoneinfo/America/Argentina/San_Juan", + "usr/share/zoneinfo/America/Argentina/San_Luis", + "usr/share/zoneinfo/America/Argentina/Tucuman", + "usr/share/zoneinfo/America/Argentina/Ushuaia", + "usr/share/zoneinfo/America/Indiana/Indianapolis", + "usr/share/zoneinfo/America/Indiana/Knox", + "usr/share/zoneinfo/America/Indiana/Marengo", + "usr/share/zoneinfo/America/Indiana/Petersburg", + "usr/share/zoneinfo/America/Indiana/Tell_City", + "usr/share/zoneinfo/America/Indiana/Vevay", + "usr/share/zoneinfo/America/Indiana/Vincennes", + "usr/share/zoneinfo/America/Indiana/Winamac", + "usr/share/zoneinfo/America/Kentucky/Louisville", + "usr/share/zoneinfo/America/Kentucky/Monticello", + "usr/share/zoneinfo/America/North_Dakota/Beulah", + "usr/share/zoneinfo/America/North_Dakota/Center", + "usr/share/zoneinfo/America/North_Dakota/New_Salem", + "usr/share/zoneinfo/Antarctica/Casey", + "usr/share/zoneinfo/Antarctica/Davis", + "usr/share/zoneinfo/Antarctica/DumontDUrville", + "usr/share/zoneinfo/Antarctica/Macquarie", + "usr/share/zoneinfo/Antarctica/Mawson", + "usr/share/zoneinfo/Antarctica/McMurdo", + "usr/share/zoneinfo/Antarctica/Palmer", + "usr/share/zoneinfo/Antarctica/Rothera", + "usr/share/zoneinfo/Antarctica/South_Pole", + "usr/share/zoneinfo/Antarctica/Syowa", + "usr/share/zoneinfo/Antarctica/Troll", + "usr/share/zoneinfo/Antarctica/Vostok", + "usr/share/zoneinfo/Arctic/Longyearbyen", + "usr/share/zoneinfo/Asia/Aden", + "usr/share/zoneinfo/Asia/Almaty", + "usr/share/zoneinfo/Asia/Amman", + "usr/share/zoneinfo/Asia/Anadyr", + "usr/share/zoneinfo/Asia/Aqtau", + "usr/share/zoneinfo/Asia/Aqtobe", + "usr/share/zoneinfo/Asia/Ashgabat", + "usr/share/zoneinfo/Asia/Ashkhabad", + "usr/share/zoneinfo/Asia/Atyrau", + "usr/share/zoneinfo/Asia/Baghdad", + "usr/share/zoneinfo/Asia/Bahrain", + "usr/share/zoneinfo/Asia/Baku", + "usr/share/zoneinfo/Asia/Bangkok", + "usr/share/zoneinfo/Asia/Barnaul", + "usr/share/zoneinfo/Asia/Beirut", + "usr/share/zoneinfo/Asia/Bishkek", + "usr/share/zoneinfo/Asia/Brunei", + "usr/share/zoneinfo/Asia/Calcutta", + "usr/share/zoneinfo/Asia/Chita", + "usr/share/zoneinfo/Asia/Choibalsan", + "usr/share/zoneinfo/Asia/Chongqing", + "usr/share/zoneinfo/Asia/Chungking", + "usr/share/zoneinfo/Asia/Colombo", + "usr/share/zoneinfo/Asia/Dacca", + "usr/share/zoneinfo/Asia/Damascus", + "usr/share/zoneinfo/Asia/Dhaka", + "usr/share/zoneinfo/Asia/Dili", + "usr/share/zoneinfo/Asia/Dubai", + "usr/share/zoneinfo/Asia/Dushanbe", + "usr/share/zoneinfo/Asia/Famagusta", + "usr/share/zoneinfo/Asia/Gaza", + "usr/share/zoneinfo/Asia/Harbin", + "usr/share/zoneinfo/Asia/Hebron", + "usr/share/zoneinfo/Asia/Ho_Chi_Minh", + "usr/share/zoneinfo/Asia/Hong_Kong", + "usr/share/zoneinfo/Asia/Hovd", + "usr/share/zoneinfo/Asia/Irkutsk", + "usr/share/zoneinfo/Asia/Istanbul", + "usr/share/zoneinfo/Asia/Jakarta", + "usr/share/zoneinfo/Asia/Jayapura", + "usr/share/zoneinfo/Asia/Jerusalem", + "usr/share/zoneinfo/Asia/Kabul", + "usr/share/zoneinfo/Asia/Kamchatka", + "usr/share/zoneinfo/Asia/Karachi", + "usr/share/zoneinfo/Asia/Kashgar", + "usr/share/zoneinfo/Asia/Kathmandu", + "usr/share/zoneinfo/Asia/Katmandu", + "usr/share/zoneinfo/Asia/Khandyga", + "usr/share/zoneinfo/Asia/Kolkata", + "usr/share/zoneinfo/Asia/Krasnoyarsk", + "usr/share/zoneinfo/Asia/Kuala_Lumpur", + "usr/share/zoneinfo/Asia/Kuching", + "usr/share/zoneinfo/Asia/Kuwait", + "usr/share/zoneinfo/Asia/Macao", + "usr/share/zoneinfo/Asia/Macau", + "usr/share/zoneinfo/Asia/Magadan", + "usr/share/zoneinfo/Asia/Makassar", + "usr/share/zoneinfo/Asia/Manila", + "usr/share/zoneinfo/Asia/Muscat", + "usr/share/zoneinfo/Asia/Nicosia", + "usr/share/zoneinfo/Asia/Novokuznetsk", + "usr/share/zoneinfo/Asia/Novosibirsk", + "usr/share/zoneinfo/Asia/Omsk", + "usr/share/zoneinfo/Asia/Oral", + "usr/share/zoneinfo/Asia/Phnom_Penh", + "usr/share/zoneinfo/Asia/Pontianak", + "usr/share/zoneinfo/Asia/Pyongyang", + "usr/share/zoneinfo/Asia/Qatar", + "usr/share/zoneinfo/Asia/Qostanay", + "usr/share/zoneinfo/Asia/Qyzylorda", + "usr/share/zoneinfo/Asia/Rangoon", + "usr/share/zoneinfo/Asia/Riyadh", + "usr/share/zoneinfo/Asia/Saigon", + "usr/share/zoneinfo/Asia/Sakhalin", + "usr/share/zoneinfo/Asia/Samarkand", + "usr/share/zoneinfo/Asia/Seoul", + "usr/share/zoneinfo/Asia/Shanghai", + "usr/share/zoneinfo/Asia/Singapore", + "usr/share/zoneinfo/Asia/Srednekolymsk", + "usr/share/zoneinfo/Asia/Taipei", + "usr/share/zoneinfo/Asia/Tashkent", + "usr/share/zoneinfo/Asia/Tbilisi", + "usr/share/zoneinfo/Asia/Tehran", + "usr/share/zoneinfo/Asia/Tel_Aviv", + "usr/share/zoneinfo/Asia/Thimbu", + "usr/share/zoneinfo/Asia/Thimphu", + "usr/share/zoneinfo/Asia/Tokyo", + "usr/share/zoneinfo/Asia/Tomsk", + "usr/share/zoneinfo/Asia/Ujung_Pandang", + "usr/share/zoneinfo/Asia/Ulaanbaatar", + "usr/share/zoneinfo/Asia/Ulan_Bator", + "usr/share/zoneinfo/Asia/Urumqi", + "usr/share/zoneinfo/Asia/Ust-Nera", + "usr/share/zoneinfo/Asia/Vientiane", + "usr/share/zoneinfo/Asia/Vladivostok", + "usr/share/zoneinfo/Asia/Yakutsk", + "usr/share/zoneinfo/Asia/Yangon", + "usr/share/zoneinfo/Asia/Yekaterinburg", + "usr/share/zoneinfo/Asia/Yerevan", + "usr/share/zoneinfo/Atlantic/Azores", + "usr/share/zoneinfo/Atlantic/Bermuda", + "usr/share/zoneinfo/Atlantic/Canary", + "usr/share/zoneinfo/Atlantic/Cape_Verde", + "usr/share/zoneinfo/Atlantic/Faeroe", + "usr/share/zoneinfo/Atlantic/Faroe", + "usr/share/zoneinfo/Atlantic/Jan_Mayen", + "usr/share/zoneinfo/Atlantic/Madeira", + "usr/share/zoneinfo/Atlantic/Reykjavik", + "usr/share/zoneinfo/Atlantic/South_Georgia", + "usr/share/zoneinfo/Atlantic/St_Helena", + "usr/share/zoneinfo/Atlantic/Stanley", + "usr/share/zoneinfo/Australia/ACT", + "usr/share/zoneinfo/Australia/Adelaide", + "usr/share/zoneinfo/Australia/Brisbane", + "usr/share/zoneinfo/Australia/Broken_Hill", + "usr/share/zoneinfo/Australia/Canberra", + "usr/share/zoneinfo/Australia/Currie", + "usr/share/zoneinfo/Australia/Darwin", + "usr/share/zoneinfo/Australia/Eucla", + "usr/share/zoneinfo/Australia/Hobart", + "usr/share/zoneinfo/Australia/LHI", + "usr/share/zoneinfo/Australia/Lindeman", + "usr/share/zoneinfo/Australia/Lord_Howe", + "usr/share/zoneinfo/Australia/Melbourne", + "usr/share/zoneinfo/Australia/NSW", + "usr/share/zoneinfo/Australia/North", + "usr/share/zoneinfo/Australia/Perth", + "usr/share/zoneinfo/Australia/Queensland", + "usr/share/zoneinfo/Australia/South", + "usr/share/zoneinfo/Australia/Sydney", + "usr/share/zoneinfo/Australia/Tasmania", + "usr/share/zoneinfo/Australia/Victoria", + "usr/share/zoneinfo/Australia/West", + "usr/share/zoneinfo/Australia/Yancowinna", + "usr/share/zoneinfo/Brazil/Acre", + "usr/share/zoneinfo/Brazil/DeNoronha", + "usr/share/zoneinfo/Brazil/East", + "usr/share/zoneinfo/Brazil/West", + "usr/share/zoneinfo/Canada/Atlantic", + "usr/share/zoneinfo/Canada/Central", + "usr/share/zoneinfo/Canada/Eastern", + "usr/share/zoneinfo/Canada/Mountain", + "usr/share/zoneinfo/Canada/Newfoundland", + "usr/share/zoneinfo/Canada/Pacific", + "usr/share/zoneinfo/Canada/Saskatchewan", + "usr/share/zoneinfo/Canada/Yukon", + "usr/share/zoneinfo/Chile/Continental", + "usr/share/zoneinfo/Chile/EasterIsland", + "usr/share/zoneinfo/Etc/GMT", + "usr/share/zoneinfo/Etc/GMT+0", + "usr/share/zoneinfo/Etc/GMT+1", + "usr/share/zoneinfo/Etc/GMT+10", + "usr/share/zoneinfo/Etc/GMT+11", + "usr/share/zoneinfo/Etc/GMT+12", + "usr/share/zoneinfo/Etc/GMT+2", + "usr/share/zoneinfo/Etc/GMT+3", + "usr/share/zoneinfo/Etc/GMT+4", + "usr/share/zoneinfo/Etc/GMT+5", + "usr/share/zoneinfo/Etc/GMT+6", + "usr/share/zoneinfo/Etc/GMT+7", + "usr/share/zoneinfo/Etc/GMT+8", + "usr/share/zoneinfo/Etc/GMT+9", + "usr/share/zoneinfo/Etc/GMT-0", + "usr/share/zoneinfo/Etc/GMT-1", + "usr/share/zoneinfo/Etc/GMT-10", + "usr/share/zoneinfo/Etc/GMT-11", + "usr/share/zoneinfo/Etc/GMT-12", + "usr/share/zoneinfo/Etc/GMT-13", + "usr/share/zoneinfo/Etc/GMT-14", + "usr/share/zoneinfo/Etc/GMT-2", + "usr/share/zoneinfo/Etc/GMT-3", + "usr/share/zoneinfo/Etc/GMT-4", + "usr/share/zoneinfo/Etc/GMT-5", + "usr/share/zoneinfo/Etc/GMT-6", + "usr/share/zoneinfo/Etc/GMT-7", + "usr/share/zoneinfo/Etc/GMT-8", + "usr/share/zoneinfo/Etc/GMT-9", + "usr/share/zoneinfo/Etc/GMT0", + "usr/share/zoneinfo/Etc/Greenwich", + "usr/share/zoneinfo/Etc/UCT", + "usr/share/zoneinfo/Etc/UTC", + "usr/share/zoneinfo/Etc/Universal", + "usr/share/zoneinfo/Etc/Zulu", + "usr/share/zoneinfo/Europe/Amsterdam", + "usr/share/zoneinfo/Europe/Andorra", + "usr/share/zoneinfo/Europe/Astrakhan", + "usr/share/zoneinfo/Europe/Athens", + "usr/share/zoneinfo/Europe/Belfast", + "usr/share/zoneinfo/Europe/Belgrade", + "usr/share/zoneinfo/Europe/Berlin", + "usr/share/zoneinfo/Europe/Bratislava", + "usr/share/zoneinfo/Europe/Brussels", + "usr/share/zoneinfo/Europe/Bucharest", + "usr/share/zoneinfo/Europe/Budapest", + "usr/share/zoneinfo/Europe/Busingen", + "usr/share/zoneinfo/Europe/Chisinau", + "usr/share/zoneinfo/Europe/Copenhagen", + "usr/share/zoneinfo/Europe/Dublin", + "usr/share/zoneinfo/Europe/Gibraltar", + "usr/share/zoneinfo/Europe/Guernsey", + "usr/share/zoneinfo/Europe/Helsinki", + "usr/share/zoneinfo/Europe/Isle_of_Man", + "usr/share/zoneinfo/Europe/Istanbul", + "usr/share/zoneinfo/Europe/Jersey", + "usr/share/zoneinfo/Europe/Kaliningrad", + "usr/share/zoneinfo/Europe/Kiev", + "usr/share/zoneinfo/Europe/Kirov", + "usr/share/zoneinfo/Europe/Kyiv", + "usr/share/zoneinfo/Europe/Lisbon", + "usr/share/zoneinfo/Europe/Ljubljana", + "usr/share/zoneinfo/Europe/London", + "usr/share/zoneinfo/Europe/Luxembourg", + "usr/share/zoneinfo/Europe/Madrid", + "usr/share/zoneinfo/Europe/Malta", + "usr/share/zoneinfo/Europe/Mariehamn", + "usr/share/zoneinfo/Europe/Minsk", + "usr/share/zoneinfo/Europe/Monaco", + "usr/share/zoneinfo/Europe/Moscow", + "usr/share/zoneinfo/Europe/Nicosia", + "usr/share/zoneinfo/Europe/Oslo", + "usr/share/zoneinfo/Europe/Paris", + "usr/share/zoneinfo/Europe/Podgorica", + "usr/share/zoneinfo/Europe/Prague", + "usr/share/zoneinfo/Europe/Riga", + "usr/share/zoneinfo/Europe/Rome", + "usr/share/zoneinfo/Europe/Samara", + "usr/share/zoneinfo/Europe/San_Marino", + "usr/share/zoneinfo/Europe/Sarajevo", + "usr/share/zoneinfo/Europe/Saratov", + "usr/share/zoneinfo/Europe/Simferopol", + "usr/share/zoneinfo/Europe/Skopje", + "usr/share/zoneinfo/Europe/Sofia", + "usr/share/zoneinfo/Europe/Stockholm", + "usr/share/zoneinfo/Europe/Tallinn", + "usr/share/zoneinfo/Europe/Tirane", + "usr/share/zoneinfo/Europe/Tiraspol", + "usr/share/zoneinfo/Europe/Ulyanovsk", + "usr/share/zoneinfo/Europe/Uzhgorod", + "usr/share/zoneinfo/Europe/Vaduz", + "usr/share/zoneinfo/Europe/Vatican", + "usr/share/zoneinfo/Europe/Vienna", + "usr/share/zoneinfo/Europe/Vilnius", + "usr/share/zoneinfo/Europe/Volgograd", + "usr/share/zoneinfo/Europe/Warsaw", + "usr/share/zoneinfo/Europe/Zagreb", + "usr/share/zoneinfo/Europe/Zaporozhye", + "usr/share/zoneinfo/Europe/Zurich", + "usr/share/zoneinfo/Indian/Antananarivo", + "usr/share/zoneinfo/Indian/Chagos", + "usr/share/zoneinfo/Indian/Christmas", + "usr/share/zoneinfo/Indian/Cocos", + "usr/share/zoneinfo/Indian/Comoro", + "usr/share/zoneinfo/Indian/Kerguelen", + "usr/share/zoneinfo/Indian/Mahe", + "usr/share/zoneinfo/Indian/Maldives", + "usr/share/zoneinfo/Indian/Mauritius", + "usr/share/zoneinfo/Indian/Mayotte", + "usr/share/zoneinfo/Indian/Reunion", + "usr/share/zoneinfo/Mexico/BajaNorte", + "usr/share/zoneinfo/Mexico/BajaSur", + "usr/share/zoneinfo/Mexico/General", + "usr/share/zoneinfo/Pacific/Apia", + "usr/share/zoneinfo/Pacific/Auckland", + "usr/share/zoneinfo/Pacific/Bougainville", + "usr/share/zoneinfo/Pacific/Chatham", + "usr/share/zoneinfo/Pacific/Chuuk", + "usr/share/zoneinfo/Pacific/Easter", + "usr/share/zoneinfo/Pacific/Efate", + "usr/share/zoneinfo/Pacific/Enderbury", + "usr/share/zoneinfo/Pacific/Fakaofo", + "usr/share/zoneinfo/Pacific/Fiji", + "usr/share/zoneinfo/Pacific/Funafuti", + "usr/share/zoneinfo/Pacific/Galapagos", + "usr/share/zoneinfo/Pacific/Gambier", + "usr/share/zoneinfo/Pacific/Guadalcanal", + "usr/share/zoneinfo/Pacific/Guam", + "usr/share/zoneinfo/Pacific/Honolulu", + "usr/share/zoneinfo/Pacific/Johnston", + "usr/share/zoneinfo/Pacific/Kanton", + "usr/share/zoneinfo/Pacific/Kiritimati", + "usr/share/zoneinfo/Pacific/Kosrae", + "usr/share/zoneinfo/Pacific/Kwajalein", + "usr/share/zoneinfo/Pacific/Majuro", + "usr/share/zoneinfo/Pacific/Marquesas", + "usr/share/zoneinfo/Pacific/Midway", + "usr/share/zoneinfo/Pacific/Nauru", + "usr/share/zoneinfo/Pacific/Niue", + "usr/share/zoneinfo/Pacific/Norfolk", + "usr/share/zoneinfo/Pacific/Noumea", + "usr/share/zoneinfo/Pacific/Pago_Pago", + "usr/share/zoneinfo/Pacific/Palau", + "usr/share/zoneinfo/Pacific/Pitcairn", + "usr/share/zoneinfo/Pacific/Pohnpei", + "usr/share/zoneinfo/Pacific/Ponape", + "usr/share/zoneinfo/Pacific/Port_Moresby", + "usr/share/zoneinfo/Pacific/Rarotonga", + "usr/share/zoneinfo/Pacific/Saipan", + "usr/share/zoneinfo/Pacific/Samoa", + "usr/share/zoneinfo/Pacific/Tahiti", + "usr/share/zoneinfo/Pacific/Tarawa", + "usr/share/zoneinfo/Pacific/Tongatapu", + "usr/share/zoneinfo/Pacific/Truk", + "usr/share/zoneinfo/Pacific/Wake", + "usr/share/zoneinfo/Pacific/Wallis", + "usr/share/zoneinfo/Pacific/Yap", + "usr/share/zoneinfo/US/Alaska", + "usr/share/zoneinfo/US/Aleutian", + "usr/share/zoneinfo/US/Arizona", + "usr/share/zoneinfo/US/Central", + "usr/share/zoneinfo/US/East-Indiana", + "usr/share/zoneinfo/US/Eastern", + "usr/share/zoneinfo/US/Hawaii", + "usr/share/zoneinfo/US/Indiana-Starke", + "usr/share/zoneinfo/US/Michigan", + "usr/share/zoneinfo/US/Mountain", + "usr/share/zoneinfo/US/Pacific", + "usr/share/zoneinfo/US/Samoa" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "xz-libs@5.8.3-r0", + "Name": "xz-libs", + "Identifier": { + "PURL": "pkg:apk/alpine/xz-libs@5.8.3-r0?arch=x86_64\u0026distro=3.24.1", + "UID": "1ae658a5f132a091" + }, + "Version": "5.8.3-r0", + "Arch": "x86_64", + "SrcName": "xz", + "SrcVersion": "5.8.3-r0", + "Licenses": [ + "GPL-2.0-or-later", + "0BSD", + "Public-Domain", + "LGPL-2.1-or-later" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:e5ccda0fbf6b54d343e024156d876553ba57d3926d7196584b3a1ce4df016366" + }, + "Digest": "sha1:4c92c5be0c5bef404e93c880eba9037a9b147347", + "InstalledFiles": [ + "usr/lib/liblzma.so.5", + "usr/lib/liblzma.so.5.8.3" + ], + "AnalyzedBy": "apk" + }, + { + "ID": "zlib@1.3.2-r1", + "Name": "zlib", + "Identifier": { + "PURL": "pkg:apk/alpine/zlib@1.3.2-r1?arch=x86_64\u0026distro=3.24.1", + "UID": "1c01476a88d60a66" + }, + "Version": "1.3.2-r1", + "Arch": "x86_64", + "SrcName": "zlib", + "SrcVersion": "1.3.2-r1", + "Licenses": [ + "Zlib" + ], + "Maintainer": "Natanael Copa \u003cncopa@alpinelinux.org\u003e", + "DependsOn": [ + "musl@1.2.6-r2" + ], + "Layer": { + "DiffID": "sha256:08f4420173dc9f73d520ab9f1a08adeb802ab64d1e1a2f419af11ba2302b05ea" + }, + "Digest": "sha1:4f525c8cc204f84b8b4ca40db3be389958f056c6", + "InstalledFiles": [ + "usr/lib/libz.so.1", + "usr/lib/libz.so.1.3.2" + ], + "AnalyzedBy": "apk" + } + ] + }, + { + "Target": "Python", + "Class": "lang-pkgs", + "Type": "python-pkg", + "Packages": [ + { + "Name": "PyJWT", + "Identifier": { + "PURL": "pkg:pypi/pyjwt@2.15.1", + "UID": "d3f5f9a421b8abc9" + }, + "Version": "2.15.1", + "Licenses": [ + "MIT" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "cffi", + "Identifier": { + "PURL": "pkg:pypi/cffi@2.1.1", + "UID": "21042e2f37e33c05" + }, + "Version": "2.1.1", + "Licenses": [ + "MIT-0" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/cffi-2.1.1.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "cryptography", + "Identifier": { + "PURL": "pkg:pypi/cryptography@50.0.1", + "UID": "dcb3df6383fe2a60" + }, + "Version": "50.0.1", + "Licenses": [ + "Apache-2.0 OR BSD-3-Clause" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/cryptography-50.0.1.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "informed-decision", + "Identifier": { + "PURL": "pkg:pypi/informed-decision@0.2.0", + "UID": "7989f2afae8ff568" + }, + "Version": "0.2.0", + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/informed_decision-0.2.0.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "pycparser", + "Identifier": { + "PURL": "pkg:pypi/pycparser@3.0", + "UID": "e5a4d03f15a695ff" + }, + "Version": "3.0", + "Licenses": [ + "BSD-3-Clause" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/pycparser-3.0.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + }, + { + "Name": "waitress", + "Identifier": { + "PURL": "pkg:pypi/waitress@3.0.2", + "UID": "806e218e1c1e85f" + }, + "Version": "3.0.2", + "Licenses": [ + "ZPL-2.1" + ], + "Layer": { + "DiffID": "sha256:648451a0dda84ad04681e32b5ecc7cd5d3a4f0ad84f783e9598d72bc69620d5c" + }, + "FilePath": "opt/venv/lib/python3.12/site-packages/waitress-3.0.2.dist-info/METADATA", + "AnalyzedBy": "python-pkg" + } + ] + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json.log b/docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json.log new file mode 100644 index 0000000..960e391 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-published-verification/trivy-full.json.log @@ -0,0 +1,6 @@ +2026-10-11T09:38:40Z INFO [vuln] Vulnerability scanning is enabled +2026-10-11T09:38:40Z INFO Detected OS family="alpine" version="3.24.1" +2026-10-11T09:38:40Z WARN This OS version is not on the EOL list family="alpine" version="3.24" +2026-10-11T09:38:40Z INFO [alpine] Detecting vulnerabilities... os_version="3.24" repository="3.24" pkg_num=38 +2026-10-11T09:38:40Z INFO Number of language-specific files num=1 +2026-10-11T09:38:40Z INFO [python-pkg] Detecting vulnerabilities... diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/archive-map.json b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/archive-map.json new file mode 100644 index 0000000..00d6a27 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/archive-map.json @@ -0,0 +1,812 @@ +[ + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/original-manifest.json", + "original_sha256": "ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ad63580c313ded034d8bccfc4da570bce5eef82b64f1718764f5e2fca6ee95b4.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/original-manifest.json", + "original_sha256": "c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/c67baec61c257895868d2ef16dfa7e7149f4a5aa92c20d7e123d26dfaf1d1e73.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": "94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/94dd67a12e416b7f49cc6eb742f680b97ab37f349813e27090bec1f6ffc4be8d.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md", + "original_sha256": "90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/probe_wiring_and_coverage.py", + "original_sha256": "3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/3010907f0a72acb7252ff3f12cb601b2ec5b8ff14905ff9dbdd0cc8165600e2c.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/negative-probe-receipt.json", + "original_sha256": "2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2ad314a3e0aabd788d109d77615283e7d100ec4e7aca504af482148572d88b36.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/original-manifest.json", + "original_sha256": "81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/execution/execution-plan.json", + "original_sha256": "750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/frozen-release/docs/evidence/2026-10-11-zlib-image-release/native-backup-restore-protocol.md", + "original_sha256": "0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/initial-c67baec6/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-initial-review/validation.json", + "original_sha256": "1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/workplans/ADHOC-2026-10-11.md", + "original_sha256": "cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/cc9082cdf055c855f44784955bf76c970cc17beb1213060c06a1fc82640d050a.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md", + "original_sha256": "428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/428e9e1a82c142746051682be4b4d815862221f4d0f31d131611659c91f0fb5a.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_postready_receipt.py", + "original_sha256": "ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/negative-receipt-custody-probe.json", + "original_sha256": "c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/c35bbd825db2d544aa59f3dcac3686d3eaec04012717f2446ddd93b68dd55139.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/probe_corrected_wiring.py", + "original_sha256": "f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/corrected-wiring-probe.json", + "original_sha256": "f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/validation.json", + "original_sha256": "bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/bd4c85052b87cb8603f45d395479b9df3cb27306d70525b270da745ba144fd20.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/original-manifest.json", + "original_sha256": "f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/actuator.py", + "original_sha256": "eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/authority_journal.py", + "original_sha256": "9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9441650c58e156a485810290ec86028b1a21655960e8196cc60d710f51b51788.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/native_program.py", + "original_sha256": "fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/execution/receipt_safety.py", + "original_sha256": "5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-live-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sealed-native-dependencies.json", + "original_sha256": "042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/candidate-deployment.json", + "original_sha256": "487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/rollback-deployment.json", + "original_sha256": "f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/check_installed.py", + "original_sha256": "a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/a34a51be9c9f2b16a06a88173b5c6c492c9957fe021cf412a86a1737730640ad.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/installed-zlib-proof.json", + "original_sha256": "6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/sqlite_readonly.py", + "original_sha256": "9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/change_guard.py", + "original_sha256": "b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b3ee2b89de14e204efedd016d3900b6e31fcc9f0ea0f3125d3a4794d938ca201.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/fresh-scan-contract.json", + "original_sha256": "b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/b13806a7e1464454e3817e1e62b56b0fa07fe2fddbd94d7fdc530e2c3dd9e3d2.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py", + "original_sha256": "ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ce88aca5e2d6cd5ab7533898bc9b246bd159482c4acccb0afe4c451ee88f57fa.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/lifecycle-commands.json", + "original_sha256": "508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/changes-requested-ad63580c/owner-snapshot/docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-refined-review/frozen143/docs/evidence/2026-10-11-zlib-image-release/memo.json", + "original_sha256": "ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d.blob" + }, + { + "repo": "informed-decision", + "original_path": "workplans/ADHOC-2026-10-11.md", + "original_sha256": "896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/reviews/2026-10-11-zlib-release-product-owner-native-contract-review.md", + "original_sha256": "53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/frozen481-original-manifest.json", + "original_sha256": "3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/frozen481-post-ready-native-outcomes-command.py", + "original_sha256": "1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/probe_native_shape.py", + "original_sha256": "7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/native-contract-counterexamples.json", + "original_sha256": "5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4.blob" + }, + { + "repo": "informed-decision", + "original_path": "docs/evidence/2026-10-11-zlib-release-product-contract-review/validation.json", + "original_sha256": "dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660", + "retained_path": "docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660.blob" + } +] diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob new file mode 100644 index 0000000..8490089 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/042327a036ed254cf95dbeb0c056ac25b03a6a844b95a332c992df2943691369.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4.blob new file mode 100644 index 0000000..aca7f5c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/0614e2118927180d18f4a3fa833990a38e27340234a952abdb1d2ca93e7602a4.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599.blob new file mode 100644 index 0000000..28cfea6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1b6ddc55d43572635bcfd7e982b16132061f168f2712abb2d3d7ab72f4329599.blob @@ -0,0 +1,78 @@ +"""Fixed admitted StateHub-Pod source1 readback after verified candidate Ready. + +Root never reads the credential. Only bounded typed structural metadata leaves +this command; freeform notes/reasons/unknown outcome fields are always omitted. +This is supervised evidence, not an autonomous grant or a provider verdict. +""" +import datetime +import json +import re +import urllib.request +import urllib.error + +MEMO_ID = 'infd-20261011-zlib-remediation-r1' +IDENTIFIER = re.compile(r'[A-Za-z0-9=,._:@/\-]{1,256}') +UUID = r'[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}' +VERBS = {'comment','discuss','return','forward','escalate','acknowledge','accept','decline','withdraw','configure'} + + +def require(value): + if not value: + raise ValueError('invalid bounded structural metadata') + + +def identifier(value, prefix=''): + require(isinstance(value,str) and re.fullmatch(prefix+UUID,value) is not None) + return value + + +def safe_disposition(row): + require(isinstance(row,dict)) + result={} + if 'id' in row and row['id'] is not None: + result['id']=identifier(row['id']) + state=row.get('submission_state') + require(state in {'confirmed','unresolved','pending','failed'}) + result['submission_state']=state + value=row.get('disposition');require(isinstance(value,dict)) + actor=value.get('actor');require(isinstance(actor,dict) and actor.get('kind') in {'person','agent','service'}) + require(isinstance(actor.get('sub'),str) and IDENTIFIER.fullmatch(actor['sub']) is not None) + require(value.get('verb') in VERBS and type(value.get('memo_version')) is int and value['memo_version']==1) + stamp=value.get('at');require(isinstance(stamp,str) and len(stamp)<=40) + try:parsed=datetime.datetime.fromisoformat(stamp.replace('Z','+00:00')) + except ValueError:raise ValueError('invalid bounded structural metadata') from None + require(parsed.tzinfo is not None) + approved=value.get('approval_id');require(approved is None or isinstance(approved,str) and re.fullmatch(UUID,approved) is not None) + result['disposition']={'id':identifier(value.get('id'),'disp-'),'memo_id':identifier(value.get('memo_id'),'review-'),'memo_version':1,'verb':value['verb'],'actor':{'kind':actor['kind'],'sub':actor['sub']},'at':stamp,'approval_id':approved} + return result + + +def safe_outcome_metadata(value): + require(isinstance(value,dict) and value.get('memo_id')==MEMO_ID) + review=value.get('review');require(isinstance(review,dict)) + require(type(review.get('stale')) is bool and review.get('intake_state') in {'ready','pending','failed','unresolved'}) + rows=value.get('dispositions');require(isinstance(rows,list) and len(rows)<=32) + return {'memo_id':MEMO_ID,'source_memo_version':1,'review':{'memo_id':identifier(review.get('memo_id'),'review-'),'intake_state':review['intake_state'],'stale':review['stale']},'disposition_count':len(rows),'dispositions':[safe_disposition(row) for row in rows]} + + +def main(): + from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file + request=urllib.request.Request(ORIGIN+'/v1/decisions/'+MEMO_ID+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')}) + opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect()) + try: + with opener.open(request,timeout=15) as response: + require(response.status==200) + raw=response.read(1048577);require(len(raw)<=1048576) + result=safe_outcome_metadata(json.loads(raw)) + result.update(observed_at=datetime.datetime.now(datetime.timezone.utc).isoformat(),native_authenticated_canonical_lifecycle_outcomes=True,native_provider_path_returned=True,credential_material_output=False) + print(json.dumps(result)) + except Exception as error: + result={'memo_id':MEMO_ID,'status':'unverified','failure':'native_readback_unavailable_or_invalid'} + if isinstance(error,urllib.error.HTTPError) and type(error.code) is int and 100<=error.code<=599: + result['http_status']=error.code + print(json.dumps(result)) + raise SystemExit(1) from None + + +if __name__=='__main__': + main() diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829.blob new file mode 100644 index 0000000..5e5b541 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/1ef127f22f7f7f52304f28d1ddf53612f83f0484535772a3f37351b84f0d6829.blob @@ -0,0 +1,9 @@ +{ + "all68_observed_hashes_verified": true, + "current_helper_tests_pass": 19, + "mocked_wiring_and_coverage_findings": 4, + "missing_fresh_scan_historical_corrected_in81": true, + "formal_decision": "changes_requested", + "native_actions": false, + "work_record_before_review": true +} diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108.blob new file mode 100644 index 0000000..31cbd1c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/2aa9bae40752922264e53382d898e3083b8d229b185329266942bdd397013108.blob @@ -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- + Same completed T09 source refinement record prepared before this formal + review. Initialc67 changes-requested20files and manifest remain exact + historical bytes. Original requested67 full snapshot is unavailable; + initial observations are disclosed, never reconstructed as source history. + No actual native trial/action/failure or human approval occurred. +``` + +All143 staged hashes and unchanged29 published evidence hashes verify. The +original wiring defects are corrected: remote signature accepts intent/snapshot +keywords, wrapper forwards them, copy checks recorded original snapshot before +and after transfer, and real mocked CLI tests prove durable intent before dispatch. +Fresh-scan gate binds actual registry config622, eleven diffIDs/source labels and +exact38OS+6Python/44PURL inventory including fixedzlibr1. Empty Results:[{}] +now refuses in the original independent Product counterexample. All25 source +tests pass, covering source/authority/expiry/replay/private copy/pre-admin/post +integrity/created-volume/recovery/default-false completion and whole CLI paths. +Gzip bundle decompression/hash/source equality verifies; actual body-limit test +passes. These are source/synthetic facts, not native operations. + +The new distinct protocol preserves fresh founder source1/new review own1 +authority, new protected snapshot/copy/drill/journal custody, schema5-before-Store +and exact isolated pre/admin/post counts. Image-only rollback763/c96 works without +candidate Ready/DB and keeps latest native records. Original R2 helper/journals +remain immutable, INFD-IN-0010 remains unpromoted. DBNextUpdateOct11 precedes +Oct12 execution deadline; protocol permits fresh same-image read-only scan and +requires valid DB/<=4hour full scan before release/verify, with new findings +refusing release/closure. Actual post-Ready canonical PDP outcomes must remain +separate from synthetic installed2allow/8refuse. + +Two concrete Product source corrections remain: + +1. Actual `decode_memo(register.memo)` succeeds, but actual + `decode_documents(register.documents, memo)` raises `invalid document`. + Thirteen document entries contain the same SHA f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e + twice, for sealed-live and identical rollback Deployment. Native decoder + requires unique command-local digests; deduplicate content by digest while + retaining both memo item labels if desired. Recompute payload/submission + hashes/bytes and test the exact actual packet's typed decode before release. + HTTP body-limit proof alone cannot establish packet acceptance. +2. The post-ready-native-outcomes command prints whole review and nested + disposition bodies. Actual Disposition includes freeform note/reasons. + Synthetic execution with mocked fixed dispatcher/opener exports sentinel + note, reasons and unknown review text, contradicting protocol's no-body/ + private-content promise. Use validated bounded typed structural allowlists + for review and disposition/actor metadata, exclude freeform/unknown keys, + and test sentinels plus malformed/oversize types against the actual outcome + contract. Keep fixed existing dispatcher credentials inside Pod, fixed + sourceversion1/NoRedirect/proxy-disabled GET and actual PDP gate unchanged. + +The probes perform no real HTTP request or credential read; synthetic credentials +and outcomes are isolated fixtures. The receipt retains only boolean leak +findings, never actual private content. No native phase was invoked. +Full143 source was independently frozen before review; maker will correct in +a separate immutable stage. No approval issued until exact corrected freeze. +Published CI11534/run4/source9b4/imagef558 proof remains bounded publication; +T05progress/WP0009active and distinct founder acceptance/installed proof remain +pending. Root's later final review attachment/memo hash rebinding needs its +bounded exact reference check before first human post. + +Root/Platform also identified a recovery authority dependency: current143 requires +fresh service-dependent outcomes readback for rollback even if failed candidate +makes that service unavailable. Mechanical rollback independence does not resolve +that authorization dependency. A proposed narrowly preauthenticated recovery +choice is a new explicit human-packet term, not authority from this review or +current143: only same763/c96 image rollback preserving latest DB after actual +release/candidate failure and service unavailability, <=30minutes plus existing +deadline, no401/403/revoked/mismatched fallback, no backup/release fallback. +Later-revocation uncertainty must be disclosed and bounded manual supervision +retained. Its source/tests and exact revised packet need independent review. diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob new file mode 100644 index 0000000..36a689e --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/487f834cc86dcbc7a04c2392bde072ecaf87dc116b4baa16c35eb9c599ad5c95.blob @@ -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:f5588f496b1f267d07cdc9f5208e6f2f241f74b739c23924b03702dec13a5c23", + "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-zlib-release-product-final-review/changes-requested-5365327b/objects/508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55.blob new file mode 100644 index 0000000..8ee6bbf --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/508f9bf9f11a35b8fc494e1d66e8f11aa0338df4aa9d7115a80e2dabdae81b55.blob @@ -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: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 + }, + "documents": [ + { + "digest": "sha256:c570bade38479af93f08f717fcebb328a0db38e5b58bd0e7983681bc5ae41b7a", + "media_type": "text/markdown", + "content_base64": "IyBSZXF1ZXN0ZWQgZGVjaXNpb24KCkFwcHJvdmUgdGhlIGV4YWN0IG5ldyBUMDUgemxpYi1vbmx5IGltYWdlIHJlbGVhc2UgYW5kIHByb3RlY3RlZCBzYW1lLXNjaGVtYSBjb21wYXRpYmlsaXR5IGRyaWxsLCBhZnRlciBmaW5hbCBpbmRlcGVuZGVudCBQcm9kdWN0IGFuZCBQbGF0Zm9ybSBhY2tub3dsZWRnbWVudHMuIFRoaXMgcGFja2V0IGlzIHByZXBhcmVkIGFuZCB1bmFwcHJvdmVkOyBmcmVzaCByb2xsYmFjayBzZXJ2ZXIgZHJ5LXJ1biBwYXNzZWQgd2l0aCBleGFjdGx5IHRoZSBiYXNlbGluZSBpbWFnZSBhbmQgZW1wdHkgZGlmZi4gUm9vdCByZXRhaW5zIGV4YWN0IGZpbmFsIG93bmVyIHNvdXJjZSByZXZpc2lvbiBhbmQgaW5kZXBlbmRlbnQgYWNrbm93bGVkZ21lbnRzIGJlZm9yZSBhc2tpbmcgZm9yIG5hdGl2ZSBmb3VuZGVyIGRpc3Bvc2l0aW9uLiBUaGUgcHJpb3IgVDA0IGFwcHJvdmFsIGlzIGV4Y2x1ZGVkLgoKVGhlIGFkbWl0dGVkIG93bmVyIENJIHB1Ymxpc2hlZCBpbW11dGFibGUgaW1hZ2UgZjU1ODhmNDk2YjFmMjY3ZDA3Y2RjOWY1MjA4ZTZmMmYyNDFmNzRiNzM5YzIzOTI0YjAzNzAyZGVjMTNhNWMyMyBmcm9tIHNvdXJjZTliNGJiMjVkMzI1Njk4YWU1NDNlN2U4YThhM2MzNTkyZGIxZjU4ZmMuIEl0cyBhY3R1YWwgZnVsbCBzY2FuIHJlcG9ydHMgemVybyBmaW5kaW5ncyBhY3Jvc3M0NHBhY2thZ2VzLiBUaGUgc2FtZSBzY2FuIERCIGZpbmRzIG9uZU1FRElVTSBvbiBjdXJyZW50aW1hZ2U3NjNjLiBTaWduZWQgb2ZmaWNpYWwgQWxwaW5lIHpsaWIxLjMuMi1yMSBpcyB0aGUgc29sZSBwYWNrYWdlIGNoYW5nZTsgYWN0dWFsIHB1Ymxpc2hlZCBmaWxlc3lzdGVtIHByb29mIHNob3dzIG9ubHlsaWJ6IGFuZEFQS2luc3RhbGxlZGRhdGFiYXNlIGNoYW5nZXMsIHplcm8zMTNkaXJlY3RvcnltZXRhZGF0YSBjaGFuZ2VzLCByZXRhaW5lZG5pbmViYXNlbGF5ZXJzIGFuZCB1bmNoYW5nZWQzNmFwcGxpY2F0aW9uZmlsZXMvcHVycG9zZXBvbGljeS9jb25maWcvY3JlZGVudGlhbHMvYXVkaWVuY2UvcmVzb3VyY2VzLiBSZWdpc3RyeS10by1kYWVtb24gY29uZmlnIHNlcmlhbGl6YXRpb24gZGlmZmVycyB1bmRlciBjbG9zZWQgdmVyaWZpZWQgbm9ybWFsaXphdGlvbiwgd2l0aG91dCBydW50aW1lIGNoYW5nZS4KClRoZSBleGFjdCBvcmRlcmVkIHByb3RlY3RlZCBkcmlsbCBhbmQgcmVsZWFzZSBhcmUgc3BlY2lmaWVkIGluIG5hdGl2ZS1iYWNrdXAtcmVzdG9yZS1wcm90b2NvbC5tZCBhbmQgaGFzaC1ib3VuZCBleGVjdXRpb24gYnVuZGxlLiBOZXcgYmFja3VwIHBhdGhzLCBpc29sYXRlZCBjbG9uZSBhbmQgam91cm5hbCBhcmUgZGlzdGluY3QgZnJvbSBvbGQgZXZpZGVuY2UuIFJlYWwgcHJpdmF0ZSBkYXRhIHdpbGwgZW50ZXIgb25seSBhcHByb3ZlZCBwcml2YXRlIGN1c3RvZHkgYW5kIHRoZSBpc29sYXRlZCBuby1uZXR3b3JrIGNsb25lOyBjb250ZW50IG5ldmVyIGVudGVycyBwdWJsaWMgZXZpZGVuY2UuIEZhaWxlZC91bmNlcnRhaW4gcGhhc2Ugc3RhdGVzIHJlbWFpbiBkdXJhYmxlIGFuZCBjYW5ub3QgYmUgcmV0cmllZC4gUHJpb3IgVDA0IGZhaWxlZCBjb3B5L3ZlcmlmeSBhcmUgcHJlc2VydmVkLgoKQWZ0ZXIgc2NoZW1hNS9pbnRlZ3JpdHkvZXhhY3RjbG9uZWNvdW50cyBwYXNzIGFuZCBjbG9uZSBjbGVhbnVwIHN1Y2NlZWRzLCBmcmVzaCBjdXRvdmVyIGJhY2t1cC9jb3B5IHByZWNlZGVzIHRoZSBleGFjdCBtYW51YWwgaW1hZ2Utb25seSBEZXBsb3ltZW50IHN5bmMuIEN1cnJlbnQgYmFzZWxpbmUgaXMgaGVhbHRoeWdlbmVyYXRpb24yNS9pbWFnZTc2M2MvQXBwbGljYXRpb25jOTYuIEltbXV0YWJsZUNNNmMvUFZDL1BvZGNvbmZpZ3VyYXRpb24vUERQIG9yaWdpbnMgcmVtYWluIHNlYWxlZC4gRnJlc2hub2RlQ1BVMzQ2MG9mNDAwMG0gc3VwcG9ydHMgdW5jaGFuZ2VkUmVjcmVhdGUsIHdpdGggYW5vdGhlciBjaGVjayBiZWZvcmUgZWZmZWN0LiBCcmllZiBhdmFpbGFiaWxpdHkgaW50ZXJydXB0aW9uIGV4cGVjdGVkLgoKUm9sbGJhY2sgcmVzdG9yZXMgRGVwbG95bWVudGltYWdlNzYzYyBhbmRBcHBsaWNhdGlvbmM5NiB3aGlsZSByZXRhaW5pbmcgbGF0ZXN0c2NoZW1hNWRhdGFiYXNlOyBubyBvbGQgc25hcHNob3QgcmVzdG9yYXRpb24uIFNlcGFyYXRlIGluc3RhbGxlZC9uYXRpdmUgaGVhbHRoL2N1c3RvZHkvUERQLWdhdGVkIHJlYWRiYWNrIGFuZCBhY3R1YWwgbmF0aXZlIGltYWdlIHJlc2NhbiBwcmVjZWRlIFQwNSBjbG9zdXJlLiBBbGxwaGFzZSBzdGFydHMgZXhwaXJlT2N0MTIgMjM6NTk6NTlaOyByZWxlYXNlIHJlc2VydmVzMzBtaW51dGVzZm9ydmVyaWZpY2F0aW9uYW5kcmVjb3ZlcnkuIEFmdGVyZXhwaXJ5IGEgbmV3Zm91bmRlcmRlY2lzaW9uIGlzIHJlcXVpcmVkLiBFVVIwbmV3cmVjdXJyaW5naW5mcmFzdHJ1Y3R1cmUsIGJvdW5kZWRwcml2YXRlIHN0b3JhZ2UgYW5kdW5wcmljZWRhdHRlbmRlZHRpbWUuIE5vIG5ld2RvY3RyaW5lL2F1dG9waWxvdC9jcmVkZW50aWFsZ3JhbnQgaXMgYXV0aG9yaXplZC4K" + }, + { + "digest": "sha256:29de1dbddce09008a50516ec43b100bc2a1e08ace86a748a259fe5695e937453", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtcmVsZWFzZS1wcm9wb3NhbCIsCiAgInZlcnNpb24iOiAxLAogICJwcm9wb3NhbF9pZCI6ICJJTkZELVdQLTAwMDktVDA1L3psaWI4NTA5MS1yMSIsCiAgInRyaWFsX2lkIjogImluZmQtemxpYi0yMDI2MTAxMS1yMSIsCiAgInN0YXRlIjogInByZXBhcmVkLXVuYXBwcm92ZWQiLAogICJtZW1vX2lkIjogImluZmQtMjAyNjEwMTEtemxpYi1yZW1lZGlhdGlvbi1yMSIsCiAgIm1lbW9fdmVyc2lvbiI6IDEsCiAgInRhc2siOiAiSU5GRC1XUC0wMDA5LVQwNSIsCiAgImNhbmRpZGF0ZV9pbWFnZSI6ICJmb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb25Ac2hhMjU2OmY1NTg4ZjQ5NmIxZjI2N2QwN2NkYzlmNTIwOGU2ZjJmMjQxZjc0YjczOWMyMzkyNGIwMzcwMmRlYzEzYTVjMjMiLAogICJhcnRpZmFjdF9zb3VyY2VfcmV2aXNpb24iOiAiOWI0YmIyNWQzMjU2OThhZTU0M2U3ZThhOGEzYzM1OTJkYjFmNThmYyIsCiAgInByaW9yX2ltYWdlIjogImZvcmdlam8uY291bG9tYi5zb2NpYWwvY291bG9tYi9pbmZvcm1lZC1kZWNpc2lvbkBzaGEyNTY6NzYzYzM2NDAyYzhiZTdjYzRjMWJkMWE2MTYyM2QxYWZmOTExNmQ1MjI0MTg3NzQyNWI0NWE3MDE4Y2MwODgzYSIsCiAgInByaW9yX2FwcGxpY2F0aW9uX3JldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiLAogICJzb3VyY2VfcmV2aXNpb24iOiBudWxsLAogICJwdWJsaXNoZWRfYXJ0aWZhY3RfdmVyaWZpZWQiOiB0cnVlLAogICJuYXRpdmVfYWN0aW9uc19leGVjdXRlZCI6IGZhbHNlLAogICJhcHByb3ZhbF9pZCI6IG51bGwsCiAgImF1dGhvcml0eV9tb2RlIjogIkFETUlOSVNURVIiLAogICJ0YXJnZXQiOiAicmVhbG06a3ViZXJuZXRlcy9yYWlsaWFuY2UwMS9pbmZvcm1lZC1kZWNpc2lvbiIsCiAgImNvc3RfZXN0aW1hdGVfZXVyIjogMCwKICAicmlzayI6ICJQcml2YXRlIHNhbWUtc2NoZW1hIGJhY2t1cCBjb3BpZXMgYW5kIGJyaWVmIFJlY3JlYXRlIGF2YWlsYWJpbGl0eSBnYXAuIEZhaWxlZCBvciBhbWJpZ3VvdXMgcGhhc2VzIHJldGFpbmVkOyBubyByZXBsYXkuIFJvbGxiYWNrIGNoYW5nZXMgRGVwbG95bWVudCBpbWFnZS9zb3VyY2Ugb25seSwgcmV0YWlucyBsYXRlc3QgZGF0YWJhc2UuIiwKICAiZXhlY3V0ZV9ieSI6ICIyMDI2LTEwLTEyVDIzOjU5OjU5WiIsCiAgInJlbGVhc2VfbXVzdF9zdGFydF9ieSI6ICIyMDI2LTEwLTEyVDIzOjI5OjU5WiIsCiAgIm1heF9zbmFwc2hvdF9ieXRlcyI6IDUzNjg3MDkxMiwKICAibWF4aW11bV9uZXdfc25hcHNob3RfcGF5bG9hZF9ieXRlc19lYWNoX3NpdGUiOiAxMDczNzQxODI0LAogICJsb2NhbF9leHRyYV9kaXNwb3NhYmxlX2Nsb25lX21heF9ieXRlcyI6IDUzNjg3MDkxMiwKICAicHJpdmF0ZV9tZXRhZGF0YV9hbmRfc3FsaXRlX3NpZGVjYXJzX2FkZGl0aW9uYWxfaGVhZHJvb21fYnl0ZXMiOiAxNjc3NzIxNiwKICAidW5ib3VuZF9pbnB1dHMiOiBbCiAgICAiZXhhY3QgY29tbWl0dGVkIG93bmVyIHJlbmRlcmluZyByZXZpc2lvbiByZXRhaW5lZCBpbiByb290IHN1cGVydmlzZWQgcmVjZWlwdCIsCiAgICAiUHJvZHVjdCBhbmQgUGxhdGZvcm0gZmluYWwgYWNrbm93bGVkZ21lbnRzIiwKICAgICJjb25maXJtZWQgZm91bmRlciBleGFjdCBuZXcgZGlzcG9zaXRpb24iCiAgXSwKICAicHVibGlzaGVkX3ZlcmlmaWNhdGlvbl9zaGEyNTYiOiAiZGQ0ZWVjZjBjMTAzZGNhNzkyMjA5NGE4YmVlYjk5Yjc3YWU5NmZkMWQ1ZmU1MzJlMzdiZDgzM2RhYTAyNjE0ZSIsCiAgIm5hdGl2ZV9yZWFkb25seV9wcmVmbGlnaHRfc2hhMjU2IjogIjU2NjM3OTk0ZGZkYWU0NmE2ZjlhYjQ0MmMyZmY5YjI1OTIxMjY1MGIzNWViOThkODk2YzVlODM3ZjAxY2UyZjkiLAogICJleGVjdXRvcl9wbGFuX3NoYTI1NiI6ICJmZDM4Mzg1ZTM2ODdlYzZmOTg4NmQ1MDI1YjM5NDQ2M2MyNTJiODE5OGIwNDI2YzU2Zjk1NzQwMTM5ZWI3ZTliIiwKICAiZXhlY3V0aW9uX2J1bmRsZV9zaGEyNTYiOiAiMmJhMjVmN2QzZWZiYjEwOTVlMGEwZGQ3YmJiNTc3Zjc2YWYwNWM0MjVjYjkyOGY5YTFjN2JjNTJlYTlmNTMyYiIsCiAgInJvbGxiYWNrX3ByZWZsaWdodF9zaGEyNTYiOiAiMDE4ODc5OWQzNTJlNGQ0OWQ1Y2EyOWQ2ZTE5Nzc0MmQwMmU5NmE0YjBiMzk5ZGYxZjQ3OGU0MWIyNTI5MmViNSIsCiAgInBvc3RfcmVhZHlfbmF0aXZlX3Byb3ZpZGVyX3Byb2JlIjogImNhbm9uaWNhbCBsaWZlY3ljbGUub3V0Y29tZXMgU09VUkNFMSB0aHJvdWdoIGV4aXN0aW5nIGFkbWl0dGVkIFN0YXRlSHViIGRpc3BhdGNoZXI7IGNyZWRlbnRpYWxzIHN0YXkgaW5zaWRlIFBvZDsgYm91bmRlZCBtZXRhZGF0YSBjb3JyZWxhdGVkIHRvIHZlcmlmaWVkIGNhbmRpZGF0ZSBpbWFnZS9Qb2Qvc291cmNlIiwKICAiZnJlc2hfc2Nhbl9jb250cmFjdF9zaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgInByZXBhcmF0aW9uX2ZhaWx1cmVfaGlzdG9yeV9zaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIKfQo=" + }, + { + "digest": "sha256:3c903dd82c13273cb61f590b258b059c32e0fd515d7c176ce4fec3e68a77bc7b", + "media_type": "text/markdown", + "content_base64": "IyBUMDUgemxpYjg1MDkxIHJlbGVhc2Ug4oCUIHByZWxpbWluYXJ5LCB1bmFwcHJvdmVkCgpUaGlzIGlzIGEgZGlzdGluY3QgcHJvcG9zYWwvdHJpYWwgZm9yIGV4aXN0aW5nIElORkQtV1AtMDAwOS1UMDUuIFRoZSBhY3R1YWwgVDA0IHNvdXJjZTIgYWNjZXB0YW5jZSBkb2VzIG5vdCBhdXRob3JpemUgaXQuIFByZXZpb3VzIFIxIGNvcHkgYW5kIFIyIHZlcmlmeSBVTkNFUlRBSU4gam91cm5hbCBzdGF0ZXMgcmVtYWluIHVudG91Y2hlZC4gSU5GRC1JTi0wMDEwIHJlbWFpbnMgYW4gdW5wcm9tb3RlZCBnZW5lcmFsIHZlcmlmaWVyIHJlc2lkdWFsOyB0aGlzIG5ldyB0YXNrLXNwZWNpZmljIHZlcmlmaWVyIGlzIGEgcHJlcmVxdWlzaXRlIG9mIGFjdGl2ZSBUMDUsIG5vdCBhbiBhbWVuZG1lbnQgb2YgdGhlIG9sZCBhcHByb3ZlZCBoZWxwZXIuCgpFeGFjdCBpbnRlbmRlZCBpbWFnZSBmNTU4OGY0OTZiMWYyNjdkMDdjZGM5ZjUyMDhlNmYyZjI0MWY3NGI3MzljMjM5MjRiMDM3MDJkZWMxM2E1YzIzIHdhcyBidWlsdCBieSBhZG1pdHRlZCBvd25lciBDSTExNTM0L3J1bjQgZnJvbSA5YjRiYjI1ZDMyNTY5OGFlNTQzZTdlOGE4YTNjMzU5MmRiMWY1OGZjLiBQdWJsaWNhdGlvbiBpcyBub3QgaW5zdGFsbGVkIGFjY2VwdGFuY2UuIEZpbmFsIHBhY2tldCByZXF1aXJlcyBpbmRlcGVuZGVudCBwdWJsaXNoZWQtaW1hZ2Ugc2Nhbi9ydW50aW1lL2ZpbGVzeXN0ZW0vc291cmNlIHByb29mIGFuZCBmcmVzaCByZWFkLW9ubHkgbmF0aXZlIHByb2plY3Rpb24vb25lLW9iamVjdCBkcnktcnVuIGV2aWRlbmNlLiBVbnRpbCBhbGwgZmluYWwgaW5wdXRzIGFuZCBpbmRlcGVuZGVudCBvd25lciBhY2tub3dsZWRnbWVudHMgYXJlIGZyb3plbiwgZXhlY3V0aW9uLXBsYW4gc3RhdGUgcmVtYWlucyBwcmVsaW1pbmFyeSBhbmQgdGhlIGFjdHVhdG9yIHJlZnVzZXMgYmVmb3JlIGFueSBhdXRob3JpdHksIGpvdXJuYWwgb3IgbmF0aXZlIGFjdGlvbi4KCkFmdGVyIGEgTkVXIGV4YWN0IGNvbmZpcm1lZCBmb3VuZGVyIGFjY2VwdGFuY2UsIHJvb3QgZnJlc2hseSBhdXRoZW50aWNhdGVzIGZpeGVkLW9yaWdpbiBuYXRpdmUgc291cmNlLXZlcnNpb24xIG91dGNvbWVzIGJlZm9yZSBlYWNoIHBoYXNlLiBSZWNlaXB0IGZpbGVzIGFyZSBzdXBlcnZpc2VkIGJvb2trZWVwaW5nLCBub3Qgc2lnbmVkIGdyYW50cyBvciBhdXRvbm9teS4gV3JvbmcgdGFzaywgc291cmNlLCBtZW1vL3ZlcnNpb24sIHN0YWxlL3BlbmRpbmcvYWdlbnQgZGlzcG9zaXRpb24sIG9sZCBUMDQgYWNjZXB0YW5jZSBvciBjaGFuZ2VkIGlucHV0cyByZWZ1c2UuIFJvb3QgcmV0YWlucyBleGFjdCBhcHByb3ZlZCBzb3VyY2UgcmV2aXNpb24vZGlnZXN0cyBhbmQgYWN0aW9uIHJlc3VsdHMgaW4gc3VwZXJ2aXNpb24uIEFwcHJvdmFsIGRvZXMgbm90IHByb21vdGUgYW55IGFnZW50LgoKRml4ZWQgcGhhc2Ugb3JkZXI6IGRyaWxsLWJhY2t1cCDihpIgZHJpbGwtY29weSDihpIgb2ZmbGluZS12ZXJpZnkg4oaSIGNsZWFudXAtb2ZmbGluZSDihpIgY3V0b3Zlci1iYWNrdXAg4oaSIGN1dG92ZXItY29weSDihpIgcmVsZWFzZSDihpIgdmVyaWZ5LiBOZXcgcHJpdmF0ZSBuYXRpdmUgL2RhdGEvcHJpdmF0ZS96bGliODUwOTEtcjEsIHJvb3QgLnByaXZhdGUtYmFja3Vwcy8yMDI2MTAxMS1pbmZkLXpsaWItcjEgYW5kIGxvY2FsIHZvbHVtZSBpbmZkLXpsaWItcjEtcmVzdG9yZS0yMDI2MTAxMSBhcmUgZGlzdGluY3QgZnJvbSBhbGwgVDA0IGN1c3RvZHkuIE5ldyBwcml2YXRlIGpvdXJuYWwgaW50ZW50IGlzIGZzeW5jZWQgUlVOTklORyBiZWZvcmUgZGlzcGF0Y2g7IG5vIGF0dGVtcHRlZCBwaGFzZSByZXBsYXkuIEZpeGVkIG91dHB1dCBzY2hlbWEgY29udGFpbnMgb25seSBjb3VudHMsIGhhc2hlcywgb2JqZWN0IGlkZW50aXR5IGFuZCBib29sZWFuIHJlc3VsdHM7IHJhdyBlcnJvcnMgYW5kIHByaXZhdGUgY29udGVudCBhcmUgd2l0aGhlbGQuIEV4aXN0aW5nIG5hdGl2ZSBzbmFwc2hvdHMvZGF0YWJhc2Uvc2lkZWNhcnMgYXJlIG5ldmVyIHJlbW92ZWQgb3IgcmVzdG9yZWQgb3ZlciBjdXJyZW50IGRhdGEuCgpGcmVzaCBiYWNrdXAgaW5zcGVjdGlvbiB1c2VzIGNvcGllZCBleHBsaWNpdC1jbG9zZSBTUUxpdGUgaGVscGVyczogbGl2ZSBhbmQgb2ZmbGluZSBjbG9uZSByZWFkZXJzIGFyZSBtb2RlPXJvL3F1ZXJ5X29ubHkgYW5kIFdBTC1hd2FyZSwgYmVmb3JlIGFueSBTdG9yZS9hZG1pbiBvcGVuLiBJbW11dGFibGUgcmVhZGVyIGlzIHVzZWQgb25seSBmb3IgZnJlc2hseSBjbG9zZWQgaGFzaC1ib3VuZCBwcml2YXRlIHNuYXBzaG90IHdpdGggYWJzZW50L3plcm8gV0FMIGZyYW1lcyBhbmQgc3RhYmxlIGlkZW50aXR5L21ldGFkYXRhL2RpZ2VzdCBiZWZvcmUvYWZ0ZXIgcmVhZC9jb3B5LiBNYWluIGFuZCBzaWRlY2FycyByZW1haW4gcmV0YWluZWQuIFNjaGVtYSBtdXN0IGVxdWFsNSwgaW50ZWdyaXR5IG9rLCBhbmQgZXhhY3Qgc25hcHNob3QvaXNvbGF0ZWQgY2xvbmUgY291bnRzIG1hdGNoIGJlZm9yZS9hZG1pbi9hZnRlci4gVGhlIGRldGFjaGVkIGxvY2FsIGNsb25lIGhhcyBuZXR3b3JrIG5vbmUsIHJlYWRvbmx5IHJvb3QsIG5vIHNlcnZpY2UvcnVudGltZSBjb25maWcvY3JlZGVudGlhbCBtb3VudHM7IG9ubHkgbmFycm93bHkgc2NvcGVkIFVJRDAgQ0FQX0NIT1dOIGluaXRpYWxpemVyIHByZWNlZGVzIFVJRDEwMDAxIHJlYWRzL2FkbWluLiBPcmlnaW5hbCBwcml2YXRlIGNvcHkgaXMgaGFzaC1zdGFibGUuIENsZWFudXAgcmVtb3ZlcyBvbmx5IHRoZSBkaXNwb3NhYmxlIHZvbHVtZSB3aG9zZSBub25jZS9sYWJlbHMvY3JlYXRpb24gbWV0YWRhdGEgbWF0Y2ggdGhpcyB0cmlhbCwgYmVmb3JlIGN1dG92ZXIuCgpFYWNoIHNuYXBzaG90IGlzIGJvdW5kZWQ1MTJNaUIuIEF0IG1vc3QgdHdvIG5ldyBzbmFwc2hvdHMgb2NjdXB5IGVhY2ggbmF0aXZlL29mZmNsdXN0ZXIgY3VzdG9keSAoMUdpQiBwYXlsb2FkIGVhY2gpOyB0aGUgZGlzcG9zYWJsZSBvZmZjbHVzdGVyIGNsb25lIGFkZHM1MTJNaUIgd2hpbGUgcHJlc2VudCwgcGx1czE2TWlCIHNpZGVjYXIvbWV0YWRhdGEgcmVzZXJ2ZS4gTmV3IG5hdGl2ZSBkcmlsbCBwaGFzZSBjaGVja3MgZnJlZSBzcGFjZSBmb3IgYm90aDsgbG9jYWwgY3VzdG9keSBjaGVja3MgdHdvIHNuYXBzaG90IGJvdW5kcyBwbHVzIHJlc2VydmUuIEV4aXN0aW5nIFQwNCByZXRlbnRpb24gY29uc3VtZXMgYWRkaXRpb25hbCBwcmUtZXhpc3Rpbmcgc3BhY2UuIEVVUjAgcmVjdXJyaW5nIGluZnJhc3RydWN0dXJlIGVzdGltYXRlOyBodW1hbi9jb21wdXRlIHRpbWUgdW5wcmljZWQuCgpDdXRvdmVyIHRha2VzIGEgZnJlc2ggbmF0aXZlIGJhY2t1cCBhbmQgZXhhY3Qgb2ZmY2x1c3RlciBjb3B5LiBSZWxlYXNlIHRoZW4gcmVxdWlyZXMgbGF0ZXN0IHNjaGVtYTUgcmVhZG9ubHkgcHJvb2YsIHNlYWxlZCBQb2QvRGVwbG95bWVudC9jb25maWcvUFZDIGN1c3RvZHkgYW5kIHNhbWUgYmFzZWxpbmUgaW1hZ2U3NjNjL2N1cnJlbnQgQXBwbGljYXRpb24gc291cmNlYzk2LCBhIGhlYWx0aHkgc2luZ2xlIHRhcmdldDkyLjIwNS42Mi4yMzkgbm9kZSBhbmQgZnJlc2ggcmVxdWVzdGVkIENQVSDiiaQgYWxsb2NhdGFibGUgY2FwYWNpdHkuIFJlY3JlYXRlIGFuZCByZXNvdXJjZXMgcmVtYWluIHVuY2hhbmdlZC4gU2VydmVyIGRyeS1ydW4vY2xpZW50IGRpZmYgbXVzdCBzaG93IG9ubHkgdGhlIGltYWdlLiBBcHBsaWNhdGlvbiBVSUQvcmVzb3VyY2VWZXJzaW9uL3NvdXJjZSBDQVMgZGlzcGF0Y2hlcyBtYW51YWwgZXhhY3QgZmluYWwgcmV2aXNpb24sIGluaXRpYXRlZEJ5IGN1c3RvZGlhbi1jb2RleCwgZXhwbGljaXQgcHJ1bmU9ZmFsc2UgYW5kIG9ubHkgYXBwcy9EZXBsb3ltZW50IGluZm9ybWVkLWRlY2lzaW9uIGluIGl0cyBuYW1lc3BhY2UuIE5vIHdob2xlLUFwcGxpY2F0aW9uIHN5bmMsIG5hbWVzcGFjZS9jb25maWcvY3JlZGVudGlhbC9yZXNvdXJjZSBjaGFuZ2Ugb3IgcHJ1bmluZy4KClZlcmlmaWNhdGlvbiByZWFkcyBpbWFnZUlEL3JlYWRpbmVzcy9vd25lciBjaGFpbi9leGFjdCBjb25maWd1cmVkIFBvZCBmaWVsZHMsIHNjaGVtYTUvaW50ZWdyaXR5L21ldGFkYXRhIGNvdW50cywgaW5zdGFsbGVkIHBvbGljeSBoYXNoIGFuZCBzeW50aGV0aWMgcHVycG9zZSByZWZ1c2FscywgaGVhbHRoMjAwLCBpbnN0YWxsZWQgZml4ZWQgemxpYiBhbmQgZXhhY3QgaW1hZ2UgcHJvb2YuIEFmdGVyIGV4YWN0IGNhbmRpZGF0ZSBSZWFkeSBhbmQgdmVyaWZpZWQgcm9sbG91dCwgcm9vdCBleGVjdXRlcyBhdHRhY2hlZCBwb3N0LXJlYWR5LW5hdGl2ZS1vdXRjb21lcy1jb21tYW5kLnB5IGluc2lkZSB0aGUgZXhpc3RpbmcgYWRtaXR0ZWQgU3RhdGVIdWIgUG9kLiBJdCBjYWxscyBjYW5vbmljYWwgbGlmZWN5Y2xlLm91dGNvbWVzIGZvciBpbmZkLTIwMjYxMDExLXpsaWItcmVtZWRpYXRpb24tcjEgU09VUkNFdmVyc2lvbjEgYXQgZGlzcGF0Y2hlciBmaXhlZCBPUklHSU4gd2l0aCBOb1JlZGlyZWN0L3Byb3h5IGRpc2FibGVkOyBleGlzdGluZyBpbnRlcm5hbCB0b2tlbl9maWxlIHN0YXlzIGluc2lkZSB0aGF0IFBvZCBhbmQgbm8gdG9rZW4vYm9keS9wcml2YXRlIGNvbnRlbnQgaXMgZXhwb3J0ZWQuIFJvb3QgcmV0YWlucyBib3VuZGVkIEhUVFAtc3VjY2VzcyBtZXRhZGF0YS9vYnNlcnZhdGlvbnRpbWUgYW5kIGNvcnJlbGF0ZXMgdmVyaWZpZWQgY2FuZGlkYXRlIFBvZFVJRC9pbWFnZS9zb3VyY2UsIHRoZW4gcmVjaGVja3MgdGhvc2UgaWRlbnRpdGllcy4gVGhpcyBhY3R1YWwgcHJvdmlkZXIvUERQLWdhdGVkIHByZXNlcnZhdGlvbiBwcm9vZiBpcyBzZXBhcmF0ZSBmcm9tIGluc3RhbGxlZCBzeW50aGV0aWMyYWxsb3c4cmVmdXNlOyBib3RoIGFyZSByZXF1aXJlZCBiZWZvcmUgdGFzayBjbG9zdXJlLiBJdCBkb2VzIG5vdCBhc3NlcnQgcHJvdmlkZXIgYWR2aXNvcnkgZW1pc3Npb25zIG9yIG5ldyBkb2N0cmluZS4gQXJnbzMuNS4zIG9taXRzIGZhbHNlIHBydW5lIGluIG9wZXJhdGlvbiBzdGF0dXM6IG1pc3Npbmcgb3IgZXhhY3RmYWxzZSBpcyBhY2NlcHRlZCBvbmx5IHRvZ2V0aGVyIHdpdGggdGhpcyBqb3VybmFsJ3MgQ09NUExFVEUgZXhwbGljaXRmYWxzZSByZXF1ZXN0LCBleGFjdCBzb3VyY2UvcmVzb3VyY2VzL2luaXRpYXRpb24sIG9wZXJhdGlvbiBzdGFydCBhZnRlciBvdXIgZHVyYWJsZSBhdHRlbXB0LCBib3VuZGVkIGZpbmlzaCBhbmQgb25lIFN5bmNlZCBEZXBsb3ltZW50IHJlc3VsdC4gVHJ1ZS9udWxsL3N0cmluZy9wcmlvci9mb3JlaWduL2V4dHJhLXJlc291cmNlIHJlc3VsdHMgcmVmdXNlLgoKUm9sbGJhY2sg4oaSIHJvbGxiYWNrLXZlcmlmeSBpcyBzZXBhcmF0ZSBhbmQgcGVybWl0dGVkIG9ubHkgYWZ0ZXIgYSByZWNvcmRlZCByZWxlYXNlIGF0dGVtcHQuIEl0IHN3aXRjaGVzIG9ubHkgQXBwbGljYXRpb24gc291cmNlIGJhY2sgdG8gYzk2IGFuZCBEZXBsb3ltZW50IGltYWdlNzYzYzsgaXQgbmV2ZXIgcmVzdG9yZXMgYW4gb2xkIHNuYXBzaG90IG92ZXIgdGhlIGxhdGVzdCBkYXRhYmFzZS4gUmVjb3ZlcnkgZGlzcGF0Y2ggd29ya3MgZXZlbiBpZiBjYW5kaWRhdGUgUG9kIGlzIGFic2VudC91bnJlYWR5IGFuZCBuZXZlciBkZXBlbmRzIG9uIGNhbmRpZGF0ZSBEQiBpbnNwZWN0aW9uLiBSZWNvdmVyeSB2ZXJpZmljYXRpb24gc2VwYXJhdGVseSByZXF1aXJlcyBSZWFkeTEvb2xkIGltYWdlL2N1cnJlbnQgc2NoZW1hNS9kYXRhLWN1c3RvZHkgYW5kIGV4YWN0IHJlY29yZGVkIHNjb3BlZCBjb21wbGV0aW9uLiBBbGwgcGhhc2VzIG11c3QgYmVnaW4gYmVmb3JlMjAyNi0xMC0xMlQyMzo1OTo1OVo7IHJlbGVhc2UgbXVzdCBiZWdpbiBhdCBsZWFzdDMwbWludXRlcyBlYXJsaWVyLiBCZXlvbmQgZXhwaXJ5IHN0b3AgYW5kIG9idGFpbiBhIG5ldyBmb3VuZGVyIGRlY2lzaW9uOyBubyBhdXRvbWF0aWMgZXh0ZW5zaW9uIG9yIGVtZXJnZW5jeSBncmFudC4gQSBmYWlsZWQvdW5jZXJ0YWluIGF0dGVtcHQgcmVxdWlyZXMgaW5mb3JtZWQgcmVjb3ZlcnkgcmF0aGVyIHRoYW4gcmV0cnkuCgpUMDUgcmVtYWlucyBwcm9ncmVzcyB1bnRpbCBhY3R1YWwgaW5zdGFsbGVkIGFjY2VwdGFuY2UgYW5kIG5hdGl2ZSByZXNjYW4gcHJvdmUgdGhlIGZpbmRpbmcgYWJzZW50LiBObyBSaXNrIEVuZ2luZSBncmFkZSBpcyBhc3NpZ25lZC4gT25seSB0aGVuIG1heSBvd25lciBjbG9zZSBUMDUvcmlzayBhbmQgY29uc2lkZXIgZmluaXNoaW5nIFdQOSwgd2l0aCBleGlzdGluZyByZXNpZHVhbHMgbGl2ZSBmaXJzdC4KCkFjdHVhbCByZWxlYXNlIGFuZCBpbnN0YWxsZWQgdmVyaWZpY2F0aW9uIGFsc28gcmVxdWlyZSBmaXhlZCBwcml2YXRlIHJvb3Qgc2NhbiByZWNlaXB0IGFuZCByZXRhaW5lZCBmdWxscmVwb3J0IGF0IC90bXAvc2VjdXJpdHktaW5mZC16bGliLWZyZXNoLXNjYW4te3JlY2VpcHQsZnVsbH0uanNvbiwgc3VwZXJ2aXNlZCBtZXRhZGF0YSBiaW5kaW5nIHRvIGV4YWN0IGltbXV0YWJsZWY1NTgvYXJ0aWZhY3Rzb3VyY2U5YjQvc2Nhbm5lcmRpZ2VzdDYyYjEuIEJlZm9yZSBqb3VybmFsIHN0YXJ0LCBmdWxscmVwb3J0aGFzaCBtdXN0IG1hdGNoLCBubyBzdXBwcmVzc2lvbi9hbGxzZXZlcml0eSBmbGFncyB0cnVlLCBleGl0MCwgbm9uZW1wdHkgdmFsaWQgZnVsbHJlc3VsdHMgY29udGFpbiB6ZXJvIGZpbmRpbmdzLCBzY2FuIGNvbXBsZXRlZCB3aXRoaW40aG91cnMgYW5kIG5vdyBwcmVjZWRlcyBEQiBOZXh0VXBkYXRlLiBUaGUgcHVibGlzaGVkIERCIGV4cGlyZXMyMDI2LTEwLTExVDE4OjU5OjUwWjsgaXQgaXMgbm90IHZhbGlkIHVudGlsIHJlbGVhc2UgZGVhZGxpbmUuIFJvb3QgcmVmcmVzaGVzIERCIGFuZCByZXNjYW5zIHRoZSBzYW1lIGltbXV0YWJsZSBpbWFnZSBhcyByb3V0aW5lIHJlYWQtb25seSB2ZXJpZmljYXRpb24gd2hlbiBuZWVkZWQsIHJldGFpbmluZyBhbGwgcmF3IHB1YmxpY3NjYW4gYXJ0aWZhY3RzLiBBbnkgbmV3IGZpbmRpbmcgcmVmdXNlcyByZWxlYXNlL2Nsb3N1cmUgYW5kIGlzIHJldGFpbmVkIGZvciBpbmZvcm1lZCByZWFzc2Vzc21lbnQvbmV3IGRlY2lzaW9uIGFzIG5lZWRlZCwgbmV2ZXIgZmlsdGVyZWQgb3IgaWdub3JlZC4gRXhpc3RpbmcgcmlzayBzdGF5cyBvcGVuIHVudGlsIGFjdHVhbCBpbnN0YWxsZWQgcHJvb2YvbmF0aXZlIHJlc2Nhbi4KClJlZmluZW1lbnQgcHJlc2VydmVzIHJldmlld2VkODEvc291cmNlIGJ5dGVzIGFuZCBleGFjdGRyYWZ0MjkgY29tcGxldGUgYXJjaGl2ZXMuIEluaXRpYWw2NyBtYW5pZmVzdCBoYXNoIGlzIGtub3duIGJ1dCBleGFjdCBvcmlnaW5hbDY3bWFuaWZlc3Qvc291cmNlIHNuYXBzaG90IHdhcyBub3QgcmV0YWluZWQgYmVmb3JlODE7IHByZXBhcmF0aW9uLWZhaWx1cmUtaGlzdG9yeS5qc29uIGRpc2Nsb3NlcyB0aGlzLiBObyBwcmlvcm5hdGl2ZWVmZmVjdCBvY2N1cnJlZC4gTmV3IGZ1bGwgQ0xJIHN5bnRoZXRpYyB0ZXN0cyBleGVyY2lzZSBtYWluIHNvdXJjZWhhc2gvcmVjZWlwdC9qb3VybmFsL2Rpc3BhdGNoIHdpcmluZyBmb3IgZHJpbGwtY29weSxyZWxlYXNlLHZlcmlmeSBhbmQgcmVmdXNlIHNvdXJjZSBkcmlmdCBiZWZvcmUgbmV3am91cm5hbC9uYXRpdmUgYm91bmRhcnkuIFJlbW90ZSBwYXlsb2FkIGNhcnJpZXMgZXhhY3QgZnJvemVuIHNuYXBzaG90IGlkZW50aXR5IGFuZCBjb21wbGV0ZWQgcmVsZWFzZSBpbnRlbnQuIEZ1bGwgc2NhbiBjb250cmFjdCBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgU2NoZW1hVmVyc2lvbjIvY29udGFpbmVyX2ltYWdlLCBwdWJsaXNoZWQgY29uZmlnSW1hZ2VJRDYyMiAobm90IGRhZW1vbnNlcmlhbGl6YXRpb25mMiksIGV4YWN0MTFEaWZmSURzL3Jvb3Rmcy9zb3VyY2UvY29udGV4dGxhYmVscywgZXhhY3RseTM4T1MrNlB5dGhvbiBwYWNrYWdlcyB3aXRoIGNhbm9uaWNhbFBVUkwvdmVyc2lvbiBpbnZlbnRvcnksIGZpeGVkemxpYnIxIGFuZCBubyBvbWlzc2lvbnMvZHVwbGljYXRlcy90cnVuY2F0ZWQvZW1wdHljb3ZlcmFnZS4gQXJjaGl2ZSBzY2FuIFJlcG9EaWdlc3RzIGFic2VudCBpcyBsZWdpdGltYXRlOyBub3QgZmFicmljYXRlZC4K" + }, + { + "digest": "sha256:3b6b67a0b4d51ef791e775b528b64aa5a6f14eff629737e67baee7e2f6f60762", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQwOjE1LjU0MDg3NCswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMSwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImNjZmY3YzFlY2ZkOWViNTlmYzBjZTU2NmMxMDEzYTJhZjVkZjUxNGFmMDQ4YzY4NDc0YTI3Mjk5NzAyNGVmN2IiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICI1NjYzNzk5NGRmZGFlNDZhNmY5YWI0NDJjMmZmOWIyNTkyMTI2NTBiMzVlYjk4ZDg5NmM1ZTgzN2YwMWNlMmY5IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iLAogICJwcm9qZWN0aW9uX3JlZmVyZW5jZV9maWxlcyI6IHsKICAgICJzZWFsZWRfbGl2ZV9kZXBsb3ltZW50IjogInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiIsCiAgICAic2VhbGVkX2RlcGVuZGVuY2llcyI6ICJzZWFsZWQtbmF0aXZlLWRlcGVuZGVuY2llcy5qc29uIiwKICAgICJjYW5kaWRhdGVfZGVwbG95bWVudCI6ICJjYW5kaWRhdGUtZGVwbG95bWVudC5qc29uIgogIH0KfQo=" + }, + { + "digest": "sha256:4c3c3166205808e81326ccdae1b56afef757b0ceb4e6c96a17bf384317aeee4a", + "media_type": "application/json", + "content_base64": "ewogICJhbGxfY2hlY2tzX3Bhc3MiOiB0cnVlLAogICJvYnNlcnZlZF9hdCI6ICIyMDI2LTEwLTExVDA5OjQzOjQyLjg1MTA4NiswMDowMCIsCiAgIm5hdGl2ZV9jaGFuZ2VkIjogZmFsc2UsCiAgInByb3RlY3RlZF9kYXRhYmFzZV9yZWFkIjogZmFsc2UsCiAgInNlY3JldF9yZWFkIjogZmFsc2UsCiAgImRlcGxveW1lbnRfZ2VuZXJhdGlvbiI6IDI1LAogICJyZWFkeV9yZXBsaWNhcyI6IDEsCiAgImFyZ28iOiB7CiAgICAidWlkIjogIjQ5OTg2OGYyLWVhYmMtNGRmNC1hZTMxLWI4OWNlNThkNzUwZCIsCiAgICAic291cmNlIjogewogICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgInJlcG9VUkwiOiAiaHR0cHM6Ly9mb3JnZWpvLmNvdWxvbWIuc29jaWFsL2NvdWxvbWIvaW5mb3JtZWQtZGVjaXNpb24uZ2l0IiwKICAgICAgInRhcmdldFJldmlzaW9uIjogImM5NmIwYzZkODgxZTg1NWQxZDE1ODAwM2M2ZGU5MGVmMzkwMjYyZTIiCiAgICB9LAogICAgImRlc3RpbmF0aW9uIjogewogICAgICAibmFtZXNwYWNlIjogImluZm9ybWVkLWRlY2lzaW9uIiwKICAgICAgInNlcnZlciI6ICJodHRwczovL2t1YmVybmV0ZXMuZGVmYXVsdC5zdmMiCiAgICB9LAogICAgImF1dG9tYXRlZCI6IGZhbHNlLAogICAgImhlYWx0aCI6IHsKICAgICAgImxhc3RUcmFuc2l0aW9uVGltZSI6ICIyMDI2LTEwLTExVDA3OjAwOjQyWiIsCiAgICAgICJzdGF0dXMiOiAiSGVhbHRoeSIKICAgIH0sCiAgICAic3luYyI6IHsKICAgICAgImNvbXBhcmVkVG8iOiB7CiAgICAgICAgImRlc3RpbmF0aW9uIjogewogICAgICAgICAgIm5hbWVzcGFjZSI6ICJpbmZvcm1lZC1kZWNpc2lvbiIsCiAgICAgICAgICAic2VydmVyIjogImh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIKICAgICAgICB9LAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAicGF0aCI6ICJkZXBsb3kvbGlmZWN5Y2xlIiwKICAgICAgICAgICJyZXBvVVJMIjogImh0dHBzOi8vZm9yZ2Vqby5jb3Vsb21iLnNvY2lhbC9jb3Vsb21iL2luZm9ybWVkLWRlY2lzaW9uLmdpdCIsCiAgICAgICAgICAidGFyZ2V0UmV2aXNpb24iOiAiYzk2YjBjNmQ4ODFlODU1ZDFkMTU4MDAzYzZkZTkwZWYzOTAyNjJlMiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXZpc2lvbiI6ICJjOTZiMGM2ZDg4MWU4NTVkMWQxNTgwMDNjNmRlOTBlZjM5MDI2MmUyIiwKICAgICAgInN0YXR1cyI6ICJPdXRPZlN5bmMiCiAgICB9CiAgfSwKICAic2VydmVyX2RyeV9ydW5fcGFzc2VkIjogdHJ1ZSwKICAiYWRtaXNzaW9uX29ubHlfaW1hZ2VfZGVsdGEiOiB0cnVlLAogICJjbGllbnRfZGlmZl9leGl0IjogMCwKICAiY2xpZW50X2RpZmZfc2hhMjU2IjogImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLAogICJhbGxvY2F0YWJsZV9jcHVfbSI6IDQwMDAsCiAgInJlcXVlc3RlZF9jcHVfbSI6IDM0NjAsCiAgInN0cmF0ZWd5IjogIlJlY3JlYXRlIiwKICAiZnVsbF9yZWNlaXB0X3NoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAiZnVsbF9yZWNlaXB0X3BhdGgiOiAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiIsCiAgInByb2plY3Rpb25fcmVmZXJlbmNlX2ZpbGVzIjogewogICAgInNlYWxlZF9saXZlX2RlcGxveW1lbnQiOiAic2VhbGVkLWxpdmUtZGVwbG95bWVudC5qc29uIiwKICAgICJzZWFsZWRfZGVwZW5kZW5jaWVzIjogInNlYWxlZC1uYXRpdmUtZGVwZW5kZW5jaWVzLmpzb24iLAogICAgImNhbmRpZGF0ZV9kZXBsb3ltZW50IjogInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiIKICB9Cn0K" + }, + { + "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:2ba25f7d3efbb1095e0a0dd7bbb577f76af05c425cb928f9a1c7bc52ea9f532b", + "media_type": "application/json", + "content_base64": "ewogICJraW5kIjogImluZm9ybWVkLWRlY2lzaW9uLnN1cGVydmlzZWQtZXhlY3V0aW9uLXNvdXJjZS1idW5kbGUiLAogICJ2ZXJzaW9uIjogMSwKICAicHJvcG9zYWxfaWQiOiAiSU5GRC1XUC0wMDA5LVQwNS96bGliODUwOTEtcjEiLAogICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgImZpbGVzIjogewogICAgImV4ZWN1dGlvbi9hY3R1YXRvci5weSI6IHsKICAgICAgInNoYTI1NiI6ICJlYjU4ZGVlOTg5MzRmZWYwZmQ5MTZjNzgwN2VlYTFkNjAwZDcxZWUzNWNkYTliOWZiYmM1NTY0ZTQyNTYwNDYxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIyMDE1LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcwOGFYUGJ4cExmOVN2bUtSOUEyandWSHpFZFpsZXhsTVJ2SGNrbEgwbEtwVUtCd0pCRUJBSUlEa21NNC8rK2Zjd01CZ2NwT1p0OXFWZlBGRERUMDlQVGQvZmc4UER3UEpaaUdkN0pRT1JsS3JPYk1JZWY2ZHJMNVVzUnl4dVppYXlNUmJFT2N4R1VXUml2Uko2VW1TOUZtc25VeTd3aVRPTFI0ZUhoUWJoSms2d1FYcmFDeDduVWZ3T2tkUlF1OUorLzUwbXNmeWY1d1RKTE5pTDFDaHdpMU9PMzhLY2VraGs0dVl5a1h5UlpiaDRVWG1GK2w0czBTM3laVjIrMzVtY1JidVRCUWJqRVo2Tmw1SzN5VVpMQ3cvQlBPVHNROEYvbXdhYkZ1MjFleU0zcFhWajBIUDArRUdGY3lBeTJXaUFoNUxJRTZqajlnNE8zUHgyL08zMG41cUxuQkZrWVJjT0Y1MStYcVRNUTZtOC9TYmY0VjdKY1JtRXNoMERJY0VsUC9FaDZjWmtPMVJ0blFEandmNDVmRmdrTXRjRHBKeHBnQm5TQXc4R2ZGY3dzaVNLY1l2L1dTd0syQjRGY0F2Wi9sR0VtZXpkZVZNb0IvT25CVWZTWkFrQ2NPQ2tFdlpvWmZKZ3VIL0hoYVpZbFdVL05VUUR6dGRmRG8xTXdnbkFsOHdKSW9rNThCTytQbmo3cjllbnRiVmlzNldSNUNweUFqSHRPdG5ENndzdmhMQUgwcGxwNW1XUmlFU1grTmRCZmhFRDdYdVJ0Rm9FM1V5Tkg4SDlCYnpvNWV2TG8wVkYvSUJhTzA1OVpkTlRZak1vMDhBclpJMWlNQ0J4bG1jWDYvVnJlOGErZTNsV2FoVGM0QmRFY3dMQ011RzQ3LzhHTGNxbkpGUzhUMktpMW5RaTVzYWRYWUVMMzhObm9uZnY2M2Nucml4N09HZVdGdTBrQzJVZUNHOUJDQW1SaEJsK2MvbGdmM0s5dHpJc0RvVitYWVNEbWM1Q2owUXAyRlFhOVByM1dvSDQrUHpsdHJBdWplNVBrK1dUU2djRWtlVGFadEJmclZjUGdWRFM0R0hqM0dzRk5nZnlPSXBwSWJtT1FHYi9NaXlUWWFrS1F3RnljbjcvWEpIUGRaUmhKMSszRE1lWkpkQ043L1JIb0RCa1hCNjlBckdBWWp0YVB6bjg1TzczUVU1M3hPdG5JOFMzb0FYODlSbVN5alF5R2dmVERIQlFSclBUcXc3djM1eWV2ajgrNnB4UnJPV1Q4UXE4YS9oc01yaWFPaFROU08xS0NtSStQSmtmUHBwUHBkQWhyQnNNL2diK0gyZFE1ZUhmKzZuOU9jV05PR1lkM3MvRjRmT05sWTlDWTR3QTRUbWFqSFA1eERsNy9mUHdqN3NzQmZGZnk5MlRrSjJXVWJCYjRPdlNpc2ZxenZhSC9aaUdhTFo4Ky9lYWI1Wk1YenhiVDVkR3o1OEhrdVIvNEw1WlBqeWJmeUdmTG8rWFJrK255K1pQRjg2OWYrRWRmdnpoNnNwaDgvWHh5QkZDbVgzdFA0WkZ6OFBIOHpZZWZDUWQ3QjBNNEFUaGFPZFQ3Y3c1K1B2N1YvZjYzOTZUZG5rNlB4Q09oNUV6cmtUTHVnWksvQWFtRFE1NmZKVEZvRTlTeFNWbk1YMHlVaUNneHF4VHpxSm9YeGlrTXhka3dVZDRWOC9jWmFpVGZTMkdPZEFFT3Z1ZUhHckQ2VjBzcG1oRVhjQytqb3NmL3FIV0xiRnNwQXRKbnNBMGNQWW9TTDhqVllPRGdnS0RoS0hubnk3UVF2VXJSRGNUN2Jjby8rM3ZVb1pON1M4bTJFdmJyeXhDZ2xMRjM0NFdSdDRqQWZzSVNQdkFlUFBSbFZuZ2hNSndnaTRkRXEra0toUlpUelFkUlJkR2FzTERuWVF3U0RTQzA2ZzVDdjJCSnB3Y28vRDNIaXlMWFgwdi9PbmRUTDg5aEpiRFlSTU9hUkR1TWJnQ2FnelErMlFnQldLWVIyTGlYc01sYndRZEFLbnN0b3dEOGdBVFBNME5iZ2pEQVRkaUVSUUdTUGhlZkdDQWFuaVlHYUl1OFczV2Nyb2FHajJQd0dtNms2NlhBRzdBRmw3QUlaZUF1dG02V0pJVlR4NWtSMTVOS0VPRzRDSDJRenNCZFpWNWNJRWgyU2x5MEMwa2NiZDBGSU1YbUZkN0ZYcHF2azhLODdZUnZSckhJMVNZdXRvWE1hMDlRZzFsYllWM2xLcTJ4RDM5UTB6Z3ZUUUkzOWpaUy8xYVBJeHhpTmdFS1MyNDhGMzJRVlJZV1d4ZjBSRnprbmVCcEpyOTNOOTRXSnZsUkdlQ2oyQzh6d2c1T0djNk45Z0htbDEwM0Z6a1FkSUFNYWxTOFlYWGF0UkRxYkJ4RmNGS1FhcW05RGpocGM1UzBHU0FGbUFyQ0RNeXdoMmNDc0ZFUWNFQUhiRDhLRWRFZ1hDNnRZMUNVNjFwQ2I0MHA5ZlNCeTZoamN0R25xb0VqU1lzaVlLeTB6TklFNERCRDh5bEZvYjgxYUhXQjVSRm9hYTBKNm1RcjBLaDZpWDhJTFAyVmdwWHhWalJyTGIyb1dMdG93OEhaekcwZUEyRUpBNW5oandVVFhmcm9HK285K0hTaXp1ZWFac2xCT1pDYTZJdHY1NVhvRHRCaXlic1VMRHZJc1pKNElFTVU1RWJ3bGJpVHhsTDZ6VVdWVjJ5MXE4NzhkcUJkTm1SbzlOaDZYeXFPRDJWOFN4dWp5NnFXYTdpdCtCK1A1NDFmNHJpcmZoZVdiWkh2NE1BSEwxb3A4OUd5aktLTlYvanJYdVpjZXNQbFpQamk2dE96SjU5aENSc24xTkdvaHRtSUFvL0F5OUFjaC9Lb0c4Y0JPRFFWVXdjK0dwY0NESmtpUTNNV0x3ODBKbE15RWQrS0hlT1FjWXhYMEdiOEp0bzVCRTU3a1NiZHVRZm5KaG8wL29xUGpLS3JVZjVIRkJiU0NvLzBrMzZiaWppN2lZN3lUbWdoNVZHd3Y3YmJzNWtlTlZ3YjlHY3VIWjZHbUF3aFJJdVg0UXArUTVEUzA0NGxPSk55a3hiYklZL1VnL28wWTUza2FMM1lpN3dTandVdDM2UXdZYVBjcFc1M0tKT2JCR01XTk1VWTJySDZIZ2kyc0NqdGhwaWdRY0I2Rm5wN2xTRkFZWXNMZXF3MitwWDRnUklEb05CS29DSExQR29MRUZIaExURWszbmg0akt4QmM0SHBBZ2dtN2lTZVNxWVRCUmdQamlwTlVta3pNTjRiRS9SZm5QOTRjZnd6K3hmZUZwMDE4aTVhZUR1ejlsNXFCbzMzQWNPYWp3YksrWUZYaWxBdGV6ZXphT2RvOXdTZUdqb2V0THdHVU5kZ08yYTJqOW1qS0dhc1h3NVJ0NEZIbjBiSmRnTjRqSENvMDZjWTFrWC90OWZ2dHdIRGVCbkQvbndnN0g3d1ROQ2hQZUZoUy9nZzl5SEd4enZnbS9kZmpMekpSM1FETmltS0w0WmJzMElBdlVkeDViajVacFJ1NjdEYW9Cb0dIa0NaYmVNVDE5anJCOENxMi9ZZG16YURPUFlDaGtxV25idkd6U2pEYUdIRkNzNll5QlpXYlBWelA4TW9aSzdsQ1Vha2tRZWhnK082YjQ5L2UzTitmT0s2RHFxSU5Pc1Jsa0c1U2ZPZUVybCt2MjltbUYzQzFCOC9IRjlZRXkxU2VmRkt1cXZTeTlwMDZ0ZDBiUzFpSTlXWjUydU9FY0lveFBCbU1pV3ZhVnVzay9ock1YU3VCbW83bGRvN21rejZXdWVSODZaVndUN1Y5enNJZWV4RlNxbHhRTzl5R0RRWDlmUWQyaW4xWmw3TDVIR0dwSm1lWTIyVmhhRHI1bnFaRWJxZ2w2eHB3SFplMnV0ZFhUcE1BZWVLcG03QVNjWGhNUHZ2YUhCYXVmSnJydVYycDF2emdFaW03WmIxMjZaWlkzd0ppMTBoa1FnSCtvdWNwd1N6eDZEbS81U3hRVmd3bDJqYlN3N1UzT3k5WmVkcjNtdmxxOTFuK0kwVDB3SDRmai9HNFJUNEF0ekdBRlBoR25VcmhVVm5uUVExMUUwVWQzV3czd0g4RXgzQTN1VlEvWHFrSC9YL0MvWUNVSnFlSUtPRDZiU01GaVU2TkpDSkV0K0xUT0lLUFEwY3hleUFhQ1k1WjFscDNBRC9QSGQvdVRnL2UvT2IrSXYvZW5WeGV2eGUvM0g2NjZzMyt2ZlorUS9uYjk2Yy96S3drNEpmaWUvRDJBTURiNmpEV1JTeFNzRDJrMU5RSk1MVEdWUnl2QWFxaGxBa1NUUUdQaWpHVWJKU250bElRWDFud0pIWFB5YmZ2WktOV3k4WDVOQmh3QzhXRWxoZG9tMlBzUmJCZFFud2tzT1lLeEZWc2hrMnNneUlBRXVNZG01VnF0a2FYTEUzUnNiSVA1alB2eTRYRUJSRjVNYUlZU3hhT1RuaGdLT0doL0s0SFFNQ0o0bWgzekZuT0JRUW5va3hibW1zS0RSR1EvRE4wOG1MNlRDYmpoRXFIbUNWZ1MweUw4NlhFcFdMbFVkN1MzdmFvVDdWUmxCMTB0bk03WW12MzU0T3VsQnUvUWR6WlpiWmMwOU9QNTU5ZVBPbXdrMlhZeEEzWFprWm5jaWxCOXJ0blhyUWF3OEgrN0FLYzB6bzY4MnBWTnpBQW5QNjhmVHN2UXU4ZVZJQkNFQXBZUUFKNjZFeEdHMFNrSllrRHYxZUgrZzJmVHF4VkJWNEFqZVVuSnBZcE56V1k3WGJOWVlGbUIrYnRVZ0N1aGpjV21TdmViWHVzTFZ1eHp3dC9ucitkeXFIWjdiUFA2b1JkdkxjSERjdVJPR0wwMTZEcXlJazNGUURhWkJ4aEVJWEorQ2s2S3h0RzRRcTloQ2tXU2MvTEFEMGRjZjJGR0VmendVc1loZFZ1cW1naG44NzM2ZVRrVHoyMEQyQlpqTi9ReTRBcFc5bGtMZXNEb2FoSFFTMGxjVnRGdGFMUTAzSkc5MTZZZEhUM3NmR3UrdE5CL3RZd3FyVkxHR1JLR3B3bmVFRHNwUzlIWXVxbyt3YUEyZG5ocVhnUmZmSWNLRFJhSitrR1hnZDRzRGQ3Mm1UdHFoVkZGcEdaYjYyM3FGU3piZXgzNnNOVWp6WDEvNFFGZERJN05RclltYkZyanczalI5eEhRMHJUSlJHbU8vam5WYXBDaXVTdk95T2ljb2h1aG8wZUNpTWRRWjhiSEwxTHdYbkVBZk45UGRYNGtJT1VmaUU5c1RHR09LcWlOanNVYnhIMndUL3M1TnpBeEk5TUdySWVReVZUUlpQL2ovN2daclNCTzdTWkphdjZ2U29IaVBWMU5nV2tlNmpZZDJCVXNHK0lVblQrOVBkQTVvKzlVek1wMGVQOUZKY05IZDk0THlDa3AxZHVkb1psellzcjlWUEtNalBWYjBCUmxERjlyT0tGbFMxblNGc2UvV1k0R0VaVHJNajIrV3ErNlUxQWREanRWakFXU1psdmp0U3NPT05acVJnc3JuQTRRWXUrOThNZGhlVEF6TlJodGNnVDdMVGNNbjFvYUc5NHpUWUpWWUpFMDVyb1N2alVaSGwweWVNNHNUb0ROeVV6NStkcXpyUGFTaWQwbTFGeEdhY0tzSlJyTFdJaTJIa3BSUDBZdXFNeFc2dU9qOXhRdmdKR2Evd0w0TjRmVDhSdWhpQnZadWJKQ3E1MkJMbDdWM3QyQkNENmR5T3FxYWlNRU4wb2dZcXZaMm53QXVJYk43TUZUaEJtS2RKanNWQndSZ0piNUZMMERoVk1TNnNBcVVFWCt4bWwwWnJDVHp4aWdKempTNktOaFBDVzBEZ1NvbTBsa3M2OGprWFp0V0RUWkU3bTdZS0hCMEFTcDZ2OGRDbFpKM1NiMDlRK01FazJodW5MSHhRcFR0UGkxL3lpWUY0M0hDcWxWaUNIOUlPdTFmRC9jMGZ0am16eWIwQUZmcHo4dFJ4QTM4UERKQnR2b05tekZZTk5sUUU2dVJEL1U2elhwR0ZhWThraWtGaGx4QXpHbzNFU01ReWNBM0RGc2E1cWdkMW5vVjZ2UXROTTd1SktGYXc1SzFtZUNPeVZxVmNyYTlHMU9yMUZWUzdaRzhrRk54UW5rVjdubkpSbkI1Y1RrQWd6aWcycjhoUmY4K0Y4emNrSXc0QllIbHArUldOR1NmTWlLeTRtQmRwR01sd2ZlaDVpalRQbmY1OU1OK0IycGMxa0lwc1laNUVKQjlOK3UxVTRaK3U1WFptVVlGU05iVUUwWmtxUEt1dHc2OFRJMXVNQ1B4NHhheDFERkVJQzZyV1F6RTZLRjJOYlR6QjVaV3JoUDNBSUtmOXAzT1loNjZ6K1BENlpESitkZnpXZmZYVCtTOW5nRnhZaEJEcS84bWNTdTZUMm4yUlFLd3Z4ZG5wTHhRa2EzTG9ITUpaSXJDV01zWlV1M2o3OGRXWXl5empJcm1HbUdCREdRVjVCMm82ZjZsekJpQUNrWWdwZE1EeXF5ekkyNUszSXlVTENoWHl5ZzRQRCt2dGpJTWtINkNyT3FBK3c4N1dRbTRYdVlDVllhZXFZZVMrdnNKbEVrSGtQWGZHU2k4NEwzV0pkbjc2Njl2VFYrOVBUM0ExOE1MUjVBUmgxdU1aL1ZtN09RV1poeXBQSmlHak9NaEtJd0VnZjcxSkFnVm1RSzFoZ0VZdzE4a2pmdkVZTVNMaTZBUmNsVC82eTJTUC9xcmxqdjZ5RWs0RGxVYmlpdWE4MlNINEVuMzkrZVNnbmJjeGFadkN5MEJPd0YyckIrNFV1ODJSK2tpT2VMUW9seHhmV08yQkI0MlFWMGUzdU9qamVTMlN4Wk9FcDk4OW5SNDlVdE03S0t2cHFRNkpDNTQ2REtVVUlna2xvMXdMTWw5MnR5V3FrU3JZZW1tQ0xQM2N4RmZVdE5kc1hQelhYRFBKSGx4QnFrUGJEY1FDdDh4eXpRUEo3ZTZqbms3QUsrUC9KOXpzMGJXWEI3QllETHJzMDJHakZlaHdWcUMzZnRqcHkvUEx6NEFKU0ZsVnI5RDhybXNPZXh6ZHZ0VmlxbDgyRzB3cE9xbGlaS3l6Z2x6L28vWGJqc3A0VnNZTU90dlF2eUgvRmN2aU5zbW9XeGY4Q09YZUlNOGEzd21RU1V2U3pGUCtjd054WVVhdnBrZmZiRG9jR0JnRFNvUjJNcGxORkF3dkJhOHBvVDdpNHpkdnFvZGVRRDBwcEhXN1llWFNMN0h6WWdncWkvRUVyRytIZUlMQWpTdXB2R2pTclBnVCt3em1yR0FHZWVhVGo2UnM3bVBoREFLUWVxUFVPaGNFQzVGdDB5UmtjRndGZ2wvVU9ZbEwrV2hIS3FWOFplVnVpYlBuM2IyR3BCYm1mUHdQN3phY1BsVTViN3RxeFF2eDg0VHRPckhRZis2UXJUTW1pWnZSLys4NTZ3ZWNZc2NhZit0UWRaekt0YVBLZzlTVWVneVV1ditVbGFlL3dIODE2SVkrdXRybGRUKzRWTnB2Rkd2VXNMYmJxb1BPRkQzMEZKT0xYS0V3ZlVsaXhYYUE3TGUrTDBFajN4RlJlQ1hTaE1TaXFpMnAxbytxVmxmdWJjUDExek03QTMxVHFNTlF2NUgrSFBzUk1GMTFIcnl5VXZzS0x5L1lnRHY0b0pOcVJURkRtbXlPN3A2eWdoVTczSHU4alVRV0xyUG5hSGdQTEtGMm4yMjFRZFU3Vmc4ckdHeFhTRkdmbzcxcGRSQWR2clJxVllPRDU0NUpiR1ZiU24vcmMxVVY0QytTTzZxdmxvdE5tT2NjRG54dUpBYnEyOUVwczFZaEZiRmlxODF1N3pFTkoxNkRsekhZcmRJbjEzbFQ1Z1c1UERuNkRnWDI2MFRvYWpZWmVLeEJqbFI5azI1dy9FZEY5MitLTGFLNlQyVGg5VkF6aDVLQmJyRTFwZDI4Y1BkSktpM1lLYVgxcVhQeFlLbmR4d04wWGgwOFFIMGpUbjlQcHZGdjVncVRMRnhoelVKMEpBMGJPVnhLVkRZU3VLMzJiNU9pTmFsWHppVE1xdFNFZm1QMXV5amFkWlBHSlVxemhGcHpiUHBiR3pITklTN0dHeTRvQnhVeHo3cjY0bmRGcnpNVHZUWW0ySW9DVzhTc1B5bDBaK3MvcTZ4L3hxR2dTekZwN2lhWnk3NmtTL2FXOEtLVWRUT3hqcGZ5Zk9sVzhvZk53Wms5b1d2UHBnR2FkNnZ6NE9yMm1hc28ya2lFLy85bGdQaG1VRHYvYWFXREd1blBqc3NiM2NrZzA4WDhKYWxTblYyLzNIbndWKzFNRTdkUm0wU1RTclJRdDZySzQ4Q1R2bTBmTkc2ZmNaYitvNVVMTW5mdjJubWpLb0ZIelNENU9reEJxWnBrWGowSmhNV2ptMTJIUjk1cDU3bXBhWjBKUnYxdVY0S3h0WmNIc1kyOTFMK1FRUnF5eUV4cTdzOTRtMFc0S2tGenZRVHdSQzA3YmZrQURZUTk1Ulh2dVhXTjVLbzlWcHJwb1BQaVNSemdSRjJYYWtsY3ZrdmtzTlRmVXdKR1YyTXhvNlN2eVk2T3MxV0pEWkJ2NlEzV1Zhbm5EUTUzN3JwQVROZnRXek5IRUxtNW5wclNBM3VyYjk5QVVBNUtJcC96eGRTQlNmSlFZTE1YQWw2NEdlS3Rtb1FpQlZVR0E1RGsvYitsYTVCZkNFMTFwS3JqKzd1Z09HZ2JWcGRSdmhTTkpRajVlcGo3WHZ6Z1hRRU05QlFWVlBvSDRlYU5xNTM0YUlScnVJWndycjRCTmpmM0RvdE5PallSbUhYcnJrWncxUUxha3FOcUNjVi9XaGp1aFYrbi9wQnY0YWhsT3J2ZXJJdmZlaE40cXpWdk5wenRhbStiREY5NHcrWFZweWNUdk45QWlEY2FxNXZ0YmZMTzh3dmRIODdYa3BxTGZTVSs4dDAwa0dwMTF4encwNzNsWTdwRHFJcVpxaWNNUFFMMFRneHA4YjRxU2ozaUNTK1VpeHQ1Y2QycW1CNWlCbzdCRFE3cTZzMnR1MzA0aUxRMVpvSjE4bDZqT2l4alhiUG42a0ExUEMwWFVaaXZKYkpzRVM2QkZGVmh1N3EyaHhkMGxQTUhZRkIxUlFKWUdhbklpTXJHc2VCTkgxemswdEZVVXJlTXJnZ3owSTkrVVhyWWZjSTN5U3ZXMVdhVG45Y2I5RWY2Mm5tenYvcHpKeTgxbXY5MzhsQ0ZMTmsxVnpGTUhXRnVEeCtiZ0dxTVRsYXVpbnVxTjUyUDZXRjliZlgyK2pwbzVXYjk4NEN2OGJieFJ0VTBSbHR2RS8wRFFMbU5Mc05XL3diQzNjZkNuYVRoeGx2SlhTZURYa3NtSXpyOGdiNTdCQzVNTjB1TklGVGI1RDJyUlppVDFlcnlOb2lUaHRYcUlVWU9WcG50TUhmejdRYXZrdXVyNnhDejhEdGlBY1ppSUp6bW5aS3VMb2I5RzhCcThHN2tiZHhJdTJwQWZjVFJXK1RnS1VDZ3hVZzZvNUdqUy8rTndTRDY0UDYzODV1NHV2bHdCa3dSWU9hOTFLQmVvNStLaC85Uit0bnJmem50dWtSMER3UHdqZjEvZUFjV0IxTUMxVmlQMmo1ME02KytudHpJQ1Y4NnE1Q1RVSzlVbXA5d1JTOGJYTGpiSGRZTGs1MHp6SDNxRFYwOVNJQTdNc3o5RmlrTXNwM2VkNk5RVmcxVzhZOWRCcktvMWNGL2hpWk14d3l2Q2hscFVzVWc3b1BTVm91djZldGMwMXJTaGF4N2lBZ1VHNUxUaEs5L09qMCthYWJ6RUV6M1R2RkZPOGpvT2c3RERBcDdYTWVxWjVtR3JwWjkwejFkLytZL0I5V0lnU0JmMFVWZnNaWloyZVBvOVhjTXJMdHJldnZLTjZ6bElIZkQzcGV0NWdIa1NOU1hNdmRWa1hBb1JqdHhNa2JlUkZoZE9xRnpTV01IVURPMFZ0enJTVFVNRXlKbVdwNHF2NEg4cy9wcEdvNmNWeWVtc1JwMFU3Uys0Y2I5S3NSVUp4Mng1TktKWCsyL2JqYWtweFNBbVV1dTFTUE9EcmUvMXROaGRDcTBLeTU4ZURqUmpuTDBmclR4cHhFQ1I5VDgrNllEME0zT2JaU3NybjdyNmJ6ekhOcXoyNnpOcEVESmRCR3QrWU8zaTBHSTJ1dExqYmdGcUsxczhlRHRBZk41RFROaWNBVHFxa0dhdmFtOFl0R1F0RWlYeUxEdTBWdnUyZEFIdGFLUHdhSE9tczE3ZzJQSDJpNTJ1R2JndzNjRkppWVlodmkzNmsvVm45Q3hUNVlmMlY4MnFneFR1SXFUVE83VzgrWVRPVWdSeXJRTWVZcXFlQ1p3VG9HOGExZlFhMDJ5L1diYWtGZnRUdWFyZEl2NXBwQ0tJOVdjNm5ZNVB0Uzc1a2FmM2k1SmExN3dxNzYxdFF3emNIdU11dUdCVkVyaEpLRW80L0NQVXBxR0dvV1VVK3VQMzF4alg0N0NCUzlRUGRjWHFQUVJtSGRkWndCZWcrZHpJMWVTVXp2OHpUTFhVeHJWUVRWMHRIUVgxRXNuSGducjJUS2p4cFR2NWdJLzRsTjkxdWV4bUQ2cnZ1clQwTXA0Z0h5UHVMQUtBWnI2YUtWQnJqZVlLQzZYeTlESGp5V283ZVBXdldzSmU4cnZhNTRZNEpWeU9TZlNETGd2eTAydTdheE9uVks3NFhSUjBQWXlzVTJxZDI4dkIvcXlHWjRhM2I2bDhOelhuY2JVNk04RG1SWGdTTGJjV0tVMnJyMkx1WFlzcWdQKzVPalFIY3NVNUV2ckI5U2syM2tGdmRQWTNPZHdraUhUQ211MjA4VEI3aXk3UGJ2ZmFIL3V0eitycE5NRlZJYXdaS3E2cGRBWFh3bHFZUUxldWZod2R2YjY3RWVkcGZIaXJSSXNDVGJlVjdjQWQ1alArcmYwYXAvQzZ6ZS92VUVWNEhualduQU51VzRqM3JvbmJPREtxSTRTcW94R0pXRUhFanR1Ryt5RjNQd3U0Szc5N1NqZ1dMQnp1V091dWx6eUpVUnBmUitpdThUQ3R0TmMreGZ0N1RVL1M2aHVWR3NIcWQ5MS9PMFBISnFQR3ZKMCtsaEZpeStYWVJ6bTY5bzIxVGZDYkQ4bkx1d0w4R3BBbjdwVGRiOEUzZXNabXhLVnN1UzV2dFJhdjFNeHNqOG05ajJzZWtvL01YNzBjaUd4SGE4NkZ2cHkyTHl6WnFGTGV2cGJGZlkybkNWb2VZd3AvWWdIMCtkZENIWi81TkpWWk5mdENQL1VOS3hHc2t2SVJHNTluK3lsTUZWZ2lkOGF3Z3NJdXFwaHRZdDNkYnAxZk9sTGwwRXNBZC9EUGZZK1AzM3V0ek9yU3BFMEJHUFBvU09SOXh3NXZlNDNQdTltZlFWMDJ2eFlXK3RLbjE1YjM5U2pyNHpxWXlDY1hSZXJQNjdyZEh5ZGp1dENOdGNZanBudHhzcXhzdlZHWSt0ZUJxMWsxZmRiT3o3bVZ2c0MzZjhDU3dmb1lQOVZBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vYXV0aG9yaXR5X2pvdXJuYWwucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiOTQ0MTY1MGM1OGUxNTZhNDg1ODEwMjkwZWM4NjAyOGIxYTIxNjU1OTYwZTgxOTZjYzYwZDcxMGY1MWI1MTc4OCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMTUwMiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E2VWFhMVBqeVBFN3YySnE4MEh5bld4a0F3YWJWWkk5OEY1SVdLQU11M2VKNDNLTnBSSFdJVXM2alFSNENmODkzZlBReXcrNGhLSkFtdW51NmU3cDU0dytmUGh3bXljc2ZRdzQ4MGpLWEJZa0dabkg4Y01EWTBrUTNWc2tpak5DSTBMemJNR2lMSEJwQnBBMFNkTDRrWVlFL3dVZVN6c2ZQbnpZQzVaSm5HYkVBNUFzV0RMOTdydFJGdXFYQmVXTE1KanIxOTk0SE9ubm1PdW5sTzM1YWJ3a0NjMFFtS2poRzNqVklEeWptWDdPODhEYjIvdDgvZlhxZkRRbURua3hIb0xJTTRiRUFORmdBY01pQnMvbk9BQ1FUaExTekkvVFpUdU40OHlLY3lkaGNSSXl5M09kaUdXQWV1L0ZTM3dMWTVlR3h1dmVsOUdYNjluRk9WQTJnc2ozMmoyNzErL2EzVzc3T3pEWFR0bVNlUUhOZ2pocXAxMWo3Mlo4ZlhOOSsra1N3Uyt1UHArM2Y3bHAyN1k5YU4vWlIvdUljWEprRDdvUzlHK2Zia2UzQUdnYVhocUVZWHRPM1ljOFFYN2x1eHNuSzN5TGZUOE1JdForWkduZ2l4RTNaRFRLazdhYU1hdzlVdndZYnA3RkFGb2hwMGMwd1pRQlBtZjRXTkpNNHpCRWxPcXpYcksxdDdmbk1SKzI1dmM4U0prSm01OHpDMTRwS0xnMUZLc0h2ckFXTVRVcytFa3BHQmY1aG9Pak5JMVRVK0VvZ254QlRkeG5SY01MN2huUFFDWEtVRG93M3p2cW15MHgreFJrQzJFR0VxVVRKeXd5alhSdXRBamxZQk5BZWxtdURKdE01ckNKRHlTSVNKQ3gxQXpwY3U3Um9ZTHN3Qi9QN05xOXd4OSs2TFVzTWplTTFyQ2lSODFOSjAvUXBrMUJTektTc2l4UEl6Mi9ZTS95eWRSU0pXbndpQ2pJcGdWZzRGcFpuSzZjenpUa1RLc3I4bU1RdENKT2lGWnQ2aFdrb2swYzY5ek9MbTdQTDhZbTRuUjRObHZHSG11aHdndlNoQUZsVWdDUFJ6L1hnVnMxd1dqa0VUME5Qa0VjQjl5dmN3OVNCWjdaRXRPYTFKZnI4MUZqWFlBMjdmall0amR3WU1kOTIxNWZ6Q3pCWUZjMHVRaHM5d0hKZFVIOWhsSWFpWjhpaURGdXpyUFlXMmxGZUlVSllpaUsweUJibVNwZ1dTVE9NemRlZ2owdTJUS2VnY2xZaE1kNTZySlp5aUMyZ1d0YUpBR0xZaGpQbnB5ck9OS2JBSEZyREdHQUxHRTE0cWNNakc1RnBNMlRDSno2a1duaWhBSkE4QXljWFk4dmZyNjR3bkVPc1k5a2k0Q1RCUXNoMkhUMkJOR3hDcVIrRURLKzc0ZjBuaE9hTXVFZFBMaEg2ZTVUR21XOFErNFEyYzhqRitNSGNSZk1mZUJBa1JIMlROMU1VT1ByRVJyY1Z3U2NVd0FMZUFZaEMvd2xqUmlIMWVJOGdvQmNhZ21BbHpTSUJGVkJEK2ptR0xwWnVndzQ2Z1lDUHVEUWROVWhGeG1KMktOQzEvRWVtQ2NRQ1VNY0JrbnpKWTA2V25uaVArZ1VEQm4vd3Q3cThOOHBIbURDTEY3d3ozZlFmd2UwV3JkMHNVSG9xaklzZ2tGSWRjdnhpaGxVa1pSRzBIUk5NS0E0aVRrTlp3R0FvVmtWc1JoTnNBWXFERVdEcVFDL1pyVHJHS0FhMUpoRTYyNEJraUZMd3VpQjNiUWJ4aXBSRzRPN0tjQ21vdk1VeU1hbkd4RCsyK2pjZUFOUG00bHdiWTE3L3VYaTZ1TDJialIrQXp1aktmeFhXQkJOdytYd0laOHpzRVN3bW4ySS9HRkFJNWZaM1gzMCtCUVNaZHRqcnBSeE4yWGhnbWg5QURwYk1tRFMwOHVBdTdhRlpiU0I4ZnNnYWtzL2JXTTBGK2xyTitVMGo5QUdaN1dLWmliOEVWWUFieFF4ZWpjTkZSSm12K2NzWFNtKzlzUEFaKzRLRXZNK2JqcmZOOGlQMnJMZ3lkaFhTUHd2eW9pY2JpMXJROTRXUGc4dURha3FBbjlUZ1NnQUg5Z1lBMm9PVVlBNkd6d1FxNm1BeDdnRmtHQVVoWW1oY1dZME02YVFEYUV5Y3BscC9Bc0xnQjl0ZTJqYlJxdnViaHFqazMwWDZRdlVoVUVOQTZyUWtrMCtRbTdBU05BdU9HcDFzamdEcCtUTWpTT1BRM29CbUc3UGJnZ3ZnaS9CM2RXQlYyOW9JU3FaTXhBQllpT1FYc200b0tUM0FCVHJvSGRJYjJENTF1N2E3Vzd2cm5jd1BCckFyeGEySml0SzhiR2dEQ3FSVlMrd3daNFpGRlFZT1orZzBBUXc5cHhVdGdLU29veFowaXRrcFZVcGlIUm0xNlRic05LNmt2NE1TanF4YlZHc2NkaDhrV2hTaU9mTElNb3hLR041VTNVVGJhWlk2SzBhc2lqYjJ4NzdCSElOQ3VNT2V3SlRlSGx0cVNnRkRMSmRQcUx3SnhwM0t2R0NLS01QYklZRkJTdGpoU2Rxem1LckVVR2JrNWpkZC9NMFplaVVTaEtFbUdHdHNyN09wSkJwMnNnT0JaTFRpQUp5cGxERk9pc2VCZ2RRdDd1ZzBYMnh0OVIxV1pJSk41czhpeTE0eHBSVjA1d1hjRWhEQWU0SkJ4a24wM281cEV6a1dTazFuNnMwWEZNUVdJRWZZTUEwMW5CUjA4OXJLMVUzQ2d4Z3J1aElmcmNRbWRRSVRMZm11YnBTUTZpNXRScmtQSFlvNEhzRno2UW9RZ1FZcG9CbXVLcm9VVDlPN0dtRG9kcXlHcXpJZDNFcTJkT05INHBVQjZvWmVtRUxhMmJib0t4NjJ3cGlOVjlXWjkrZ3RKRkFSY0QzMEtEWkppWVVDTVp0dEZ5Wk43VFNLeXRBck9BUTg5ekZXdFhVOGZNd0ZGTm1ha3hvMjdmYmcvYjA1YUQvQ29aVTdFaE4zR21yR3U0M0pNZ2FUZVNpdlozd0g2WW50MitOWXJHck5XS04xS0k4dTZvWTZkNlFubEpabWk5cEtBdVVobjJDaXQrUlV5b0tlMjhtclN5d0xabFdlWUNVcWZPcHBiMWErQlZ5STlCRUVWK3BqMFdEK3ZMQVZrTnRQQk40bVlxWUJROFl0ZXJtaktjT2RlTXNWcEttcGc4TFZNWFFlbFVObWNqY00rN1NxT3pJUUFWeEN2OGhKbVFwV09mV3hxdFMyU0NGNnVIVHFXNVZjQ0lDeXdaZVl4OGIweFZIQWFHckFUZXBOQ0hPLzl1QzFMd3NXTko3Q01lT1k0REs3dGx2Y2NlTjh6QmV6anM4ZGdNYTdxdlg5ZHIycjdJREdQcEhSeWNuL3VHZ1ArLzZ2ZjZ4WngrN25qdndqM3IyQ2V2N1BiOTMyUFdQRCtmSEJ3TzNkekRvSGM3dGcyTzdCMVM2Qi9RSWh0NnEzVk93WUZEUmJLMTlBSjRIODhQNXZIZmtIUUFqZ3hQS2pnNFAyREU3b1NmMHdEMDRHdlE4NE9ub3hIZmZXRU9wWHBDa3YrZFF5Ymo3R2ZUcEt5MWp2emZ2c3Y0Uk96bnBEK2J1NGZ6UTdWTjY2TlBldk5jOUdod0JpSHZzOXZ5KzNUMmhBMjlBdlg3WHBmN0pjZmZrMk8wTytvTTMxbytnZThyQlNCbFgrUWljNUM3TjJUb2tCb3NaVk0wY3EwTnNhSkQxRW1IM010Qkdaek5YZEVDT1kxczZvZ0pKRWl5WGVVYm5JU3lwOUMwTnRaSFFwS0k4NTkzRk45UUxTY2l5VGRWM0kyUkErME9CR25VS1hHOCswNFBHOUZRZVQ3Mjl0RWFaR0Y4bHhxZnRDNTlHMEliTUpPVS9RUGdLc0NUeDNTSVZVVEFNelkzeEQ2TlVKbUtVVXF5bHBMUXFqRzA0MUZKUUh4MkY5aEZqd3NjS2pqeU5nc0cyZ2xpcnZEODYzY05EMjE0anJhV1VGdk5OVjBpTzA5dVVyMVNpbXI3MER5RlAxVXVBdVQ0aXNBeFFTQzF4Q1lmREdQYVloK0IzZEE0dE5CU2h1TzRjVzRwNnA2SFZDRzRmY1pFUFRCVjR2Y0RONURuZTJweGtZc3g0SG1ZYzZvY3c0QXBVemsrS3VhbGw2REFyZlVFWnZwamRmaUpUTG5Mckx0aVNibEJWQ2ZKSk9kWGRLcEhCRmpNR0xwbk9aQUMyaklZYkZnQ1NIUzdXYUhLak4yc20xM0txUzM3UnJtTkJ4WHdxcXRaN3A0RWdJUytRZ3pNQklJQnJnbTdIdURoSFNYVHFtOGhNTXBNTGlVcXFaazgxL1BQQTl5L09lUjNmZzBIQTQ2b2lyaHFsSktwNkdzaW5QdCt4dEFLWXJtRzZwWWh5NEpMT1diaVJsTW8xb1FTWWJ2V1NtbFRYdDNWU3NiQXRzWDJDcW1LR2hIU0ZCUm1ZdjF5R3lHVUlLZ0NUa0ZqTkRTbm5qRHNUVTNWQlp6Z0FocXhlcFNXMXl1WnN6YXpyalFXSFNlYVppaXp3T1RHTkVIcStkdkp3RC8yYmtheXlSUnpoRzZ4aEF1OTZnb1lKWHIyMHBqcGZYTjhLRmR3SUJHbWRvaHRIQ1J2MkdVU1BVSURpbGNCRWNvUGNTcy9heUhKNWZKQlE5d0VJY2tkQ1M1bHYxS0RST29VSXdWeE1LMUNlUkpsemNJTE5wb1NkS0ZWTndjMjBHUExVdnI5Mk9sRUpHM3JGU3FUQUhsQVBnOGJxYXlxUFZmT2xxRnVWb2VVdk1Rb3A2L2N4MjVuYkhQRFVwTlRSRlYzQ1psazhTM2ZERmVGS2dLNTF6c1gxeVJiMGk2S3pxUGpUemRmeHBTSUlCcVhGMUVjTWRNN0xnNDdpaUVDcnJRTkZPb3M4YzlMWVJFdS9DNE9mV29yc1JBcGFlZGNDVllZcVRFTFRMYmliVGh1VzJVSEhNRnVuMWI3L0pjdWhhREVUNlYySnVGalQ4SzlnQ0llSDZtcEpXM2MxZnVqQlJ0VFlwTnpHN1I5ZUUzZThmSmx3czZCaUlYc3o2R1M0Zy9XZHhWbENVd296M0RIQk9TMWpDRUdnd3lLczZreDRxbHpTYmVScUJ1NGFSNEdMcFlETXp1RFhaZFlwclZnR0kwN2tGWFUrQjY5WVFJSUVSMVArMzljUklDbThzbDcwUkNzem1kZzFMMFM4Wk5MRE1id2oxZ01IT05EdEhIUjZlR0c4UWVsZ1R2S1dCTEVLQnhJblN0RzlXdmZkb1dWak9ZRlEyOHFKTWdCOXE1UXJBVWhzVGFZUUxERmdXQm1ZcHlrNnYxWkxoWVpLSFlHaTBMQjJFbElld0daazF4cEFMV0pQeEE4aUQyL0FVdWJuRU1DSk9uR1ZTUzZNZVo2eVJsTXNld1dwQ0wzWnc2SzQzakFKbGxBV2JjTnFHVjRDMU9yNTRaWXlIemt1U2xGanVMbHd4c3hTdGpGS1BHNE1iV3k0UlpvaWY0ZjBHTkZRM1psRER6NmJCUkcwTURPVHM5QzN3QkR3Nk5RcVFremxYaHNCT25LK3ZIM0d0M0lEOU8xMUJiUjZpWTN1MW1yU3l4WkFyVXA3SDgrbDFEbDUremZKYndjZDJhaWppZ3Q2Y2Ywc2J2TzNrUkJ3aG9WdzE3T3o4ZWpUSGZtUGZMbTYvbng5ZVhuOWkzNGZuLzh5dHByMzBPSWpsSTZQUk14aVdVc05YMTZmL1dNMitoVUlWTjZ2ZnRxcGtBM01sZkNRY1F1MWRNUVZMZlFWOVZUV0lKa3Q2dEZmREtOcGdHcEU5QXRqQ3MxSlNSWFB5R2NaV0kzWjZJS0tza1pUd01NMmFRVlErVGxPWVJNV01kUzJFQmY4WlYrVlhGc092dkVIUzRYaFZqWmZ5bldHMVVYRVhRaVlMM2w1ZlYxSDV2U1I0V2NUMnBERk84NVU5SlV4L05DSFF1eDloNGxCU0NndHpQY3FwbFdRMldSRm8xL1BMcmRaMUMvajY2dkxmNjdaVkphdTZ0b1FuNmNBaHUrSjlYdzhxbnZhL0cySy9pa3lXN2xmbGdJRzc0MVFpMDV2dlFoUkg3QThRWVNBL3ZyZmtiRVZ4QTl6dmpEWHA1Rk52b3BjVThNRmtOL2pwakVCbE83aUs5cmJZclBsSng0YjNWbHAvZnhpUERxN3V4Ny9zL1JYMUc2ZDFKcHFheXdYQzlXUklGTGlyZWxHUkV3RWJCTWllOFlEVHZJVDJPaElQSUl0MVNuOGlZeEZFMHdZZnVvbTdqSkFkR2cvc3dXMjZoQ21jUnN3QThGckR2T3BnUGJ5VkJVT0dRamZxZnNvZmhOVnNmbU1RcVdsSXJmOFRFVWZ6TGJXczdPOFc4VGtDS3RVdkZ6NTJSUlBiVU54aFVab2hydVc2WThvVGdFTGsyQnhQU2dERWZNZ1dYRW9wemdlZFVPbU43OEhpU20vd3BoMGh5ZEFVYjBNajZldHpaaVR0Uy9HcHNTcGZGSldEWTNGaHg1VkFzTzNncGdXVDlRQ3RhWEZ6TFIrVVZsY3BKMWRmN201SE4yTkduZnR4ZDFBZ3BsYTFBK0tMWGtZVTF5bjYveGRqKzZWKzEwdDRXWUJpdnZmN1p1bEtXZ2MvTndHcjNGVFQ5ejJxMkpHN3FUUnlMdDFZa29USWhaTEhReUpNZjU2ZFhWeDliTlJYR0RURUliMW83V3pGSy9vU1RHQXh4ZmkremtUdjdyczRKOURDQnJ2SmlOTVhkVklmK2ljdmxNZU43WmU5M2FtRU5nL1Z2Y202QklzK1YzaUJuL2Fyc2lKMHFKSW0xVkZhZ3RHejI0VTI3dTNSbDdCT0pLWDNWSkFOSVBHb2k2SHJJWXJNc0Q2WlZiY3VPS2F1QUxsZjVWTUlVcytoSXZMeHlaQVFiM2lnT1U1aExxK2dESmJmdkEyUzhRQlRuRzJMNDRraks5WFo2UHgzYWVMSzJPM29tUm9iNVFNUmNndmlyM1czbjhCeklsUit1NHNBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vZXhlY3V0aW9uLXBsYW4uanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmZDM4Mzg1ZTM2ODdlYzZmOTg4NmQ1MDI1YjM5NDQ2M2MyNTJiODE5OGIwNDI2YzU2Zjk1NzQwMTM5ZWI3ZTliIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDQ3NzAsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZZMjQ3Y3hoRjk5MWNRK3h5dStuNnhYMkxFU1p3WEkwQU1CRWdRRExxcnEzZnA1WkFUa3FQVnh2Qy81L1RjVnRKS1QwRUUzWmJUck9xcU9uWHExUHo2VGRmZFBRMVR1ZnUydXh1bU9pOTdMbjFoR3RaaG51N1g0NEdYOThPS1ozdW14elFObE1aKzRaSFR5djFoVE5QZDc1cUY5N3kwOHpBaVR6OGZsdmt3cjJuY0RTZkRmL25wVHovMGYvOXJMNFNJL2MvQ3Z2dlBPT1JnUlpUOUlzOFd0bVc0SGNjOVN0K085RW9vSjRWOFBiWnVhZU4yNXJEd0lTMjQxM0ZLQjdoN3orVjhnajh3SGJkNTJkVmg1QlZIZjhWVFBFKzBIUk9lM3g5ZTJ2dWNiU2pNTVVSdEtsZFJTNVNPZkJDZU9jbmloQ2hlTW10TEpjVWNhODVrclROc2xIWEN1UE4xbXRuajlqZ3Z3L2F5KzJVK0xsTWFML2FqTWRKWlFUYXd0QzZaWUlNVUtncW00SVFLV1NhRnoyMTBnb09NanNnMWg2SmFtYTMwSVZ6dFQya2Izdk1PRVQ0c2FYOHhYcW1HU3RwR0hhWElpbU1zeGNvaWJVeGFKTnczV0UxRzFDcHdBZWVTVTZJb3dTa1ZDcWtxY1RXK01QRncySFpycXJ5OVhJeGJza1o3WFZVaGs0VXpRZ1NsTE1uZ3VHWlpiS3JJRzJrSGQ5cUtYSkpJVWhVdTBTT3dJdk1kYlA5MktnVUJKSitYQWJEWUFLQlVYdnB6YVAxODNHamU4OXJqNzMyYXl1VWF4Q0VrU3BaVmNRU3YyVnV0UXd5WllsYkc1UmF0Q1lwTUlxSXNFSUVoWTFHeUVLcjFOVjFqWENsTi9TWFErMS9XRTBqdkVuNGhkVTdtTExSalYxUXJDY2xjak5iYStsQUl4aW1ybkcyaWtKTnkwYWdvbFdTdmxYdzFqcG9UbjI0K2JEMktOTmVianl5Q2xDV3Bvbk5CcFlMWEd2WHdnVzBGQ0ZqRzVKQXppd2lVOXptSVhJRkc3Ymw0UlM3cGZQV0IrNWVoQVBab3k4TTR2K3g1ZWczRUJGK0ROZ1JVRmNya2t6Q2tkRlM1c1BDS0tkWGdDMG5wc3NrcEFlSGFjbzVrWTB6RlVyUlhKK2QyUWtIbXFhOXBHSThMOTQvRGluNTV1ZmtDTkNOdVdGUUt3aW5BeXpwZ0pFY3JvN1dWZ25ZQ0tKSElwZ2dwbElyUFVyVGFTWEtBWjNTM2xsbTJvYUlkVzlyZ2RJRDUxOEpJc2lXeU1yR1FFT2hDWTJKejZrUk4xWEVBMnBSdzJicEF2aUVRellnRU9tTnJ3aFhZM0pBOWoyTk85SVNhY0IySGg4ZXRyOGR4dlBrUk1nU1B0dEZXc1Nud1ppbXBXQnpLNHIxUlJhQ3AwTFZaWkkxVFZWYUR3aG1abFZWUmdUdmUrUGxDYldwSU1RbWZNclUzRkpYcU1oVmdxY1RxSXpoV2VDMk5KUzBMd2pRcHNxZ3NwZkVnR1NMRFZ4OTE0Zld4ditENE1DOElaZml3b1VJM1R4cVo4c0xvWkNpWnhsRkNtZXkwQXgrd0ZERnFrdWFFRGZiZ2cyQ1Z0VVN0WTRxdUdmLy9sR3krbGpNd2lVYk9EQ3FiMklCVmFrelo0SzZxVnZTa2pVb3FVRjQrUVN5VUFGYXpERVJYSVlsVmpiZW0rZmM0Ykx4ckpEQlA0NVYyb3NBMW5hazR6cnExZUFUeGdwbEx0U25WRS9HaTl6VWFNQ2xmU3dqQitFaXNWVXhLWUpUY2tIek00N0ErWWpKZ0tBMFZBNnVCK2haRUtRYnNWWUZVb1FzbEg1VVMwYVNRR1plTzJmdUV3dGNDbnF0c3RXTHRjd2xhbDVUYUtIb3R5c3BwaEk5THhsQjluZ3BQTlBENmlqR2p0RUxXUVRCRldVTTEycEk1Q3hJWUNLUXNxQ2U1Rkl4QkN5V3RGY1dvU2xYUmFCY2wvbnptYXJ3NCtuL0I3UFBpdjZJcnUrd1FSellZTWd5YnFJRzNjQld5TXlsWkFBR0pxZFdwNk1GZnp1ZkU3RkZ4VndGTHA3Nkk0eE1mOXh2dklTSzJWeVNEdVRJQ0NsR1NoeXV3aUFsR2l5aEF2YkdFQXBoN0RWN3hSa3FGWWVkQm9nRmtSMEFBMktGOHZmOWZLWk0wY3VFd0UyMFFBZE5YSzR4ZlFCcVQxNkVwcXJjZVJlSnMyQkZJUVBwY05TNGhBUTFtYytQK1lZSVlHVnRsVGxMbFUvS0hJYWRxY05XS0JGSUVQZVVJUWFCSllWNEZhVEdNaTR2Y3pwVFFvRkNJa1ZhTGJNSzd1NDMvNVRodHc1N2ZERENIdm5OZ1FJSnVNYktLSkN5YVAzc2dBYk00QlIwckZXQUt4ck9TQUorMFZGMkI1Y0kyaEJ1Mm1xWjc0TjNETVMzWHdaczFzOG9CeUVGVkZUaWpjaWxDdXFLakVObXhscFVvb2t1VHFGb3FXMEE3SHF5QUVRY09GZkxWTk5QVDdwYWxpL1drVGNJZzRRZ1RLa3VYQkZvZ1NLK3pKVWNtdGk3QStHYWhKRldER29kV0FlMjlibElrbGJkVDhaS2kxdzZINUhMUUpZU1JiUU5JVG1FSUtoTmdNbEdKWUVZQVdsZ0tDaVBBWXdBa1g2Q2JNS200d2N4OEFhNDBUOXVDaWZVNjI2WEdERXdlS1VJbHJHR05FRkJBcDRDaGpGa2xFSUtxcFdTVXA0Q3V5R3JCaW5UQmNNTUVmZFZJOC9QRXkrNnNJejdYU3VkbWZ6Y09FQXd2TlBLN1ZQYkRlaExtdC9CZkVZR0JTSzFTSUFLVGdBN2tqN0tMaENuZ25aU2tBSVVDcll0K2NXQlVNQjMwb1FHL1F0bGdxbDNEZnVOMGJSc0E4UmRjYWhBamFBdEdDM2d1NUtha0FJWUNGQmFJUjgyQW01TzIra2FFb1JnTG5WTkpaZVBBRHNxSHI3cDhPa0o1N0lmL25LbjdKZTNINWc1aURhSlFabkxlb2grTnRrWUNLdERUVUtKR0syamQwaVMyeFdRWEFSd09aZ0x4c29ZMjhCamdYM1czOEFPa3p0SzQrMjJRTWFOVFM3WVYvQXBoWHJUTUFyZ1U2SWhrWk5BQ2tzb3E3QWRRTFZEdTJjdUFhWmc1ZURTY2lmeXhITDdZM2czNzlIRGFZckJ2UGZBdjh6M054M0hlNS90MUpxeEI3eTQvdm51emtQMStmVXhZUUw2dEZrMWNUWFJaVnZBQWFKR2dXS3RWSURSWFZWWGdCRyt5MS9Ha0JxRmp0Ry9FUUZJbmkwZDNseTF0d0o3MFAxL0dnOVkwbWxOQktFTmdrR2s2V2lZbm5kTDRGK0lBK3JOWWhVdUZKcTVzTmpaNUtEQWlFWUpPbDgzdTNBSUx2eDh1cStUZEhqRG9NL2Y4b2FuRk9tQzc2ay85MHYvNHgrOS82SitIN2JHL0xuOTl4ZnY5bjZIQzh6am45UkxnSXphUTFsRC92RlIrR2NheGIzUGhlTGloNGZTTVp0RFQ1Y2xjTVRFbVB1dUgyMU1BSlUzSFEzLzU5UFlZdXlZT2ZtYjArdlJqczVldCtmcmpwOWF2OCtyTi9Mb2N3OU4vblVLNjdKdm4xamhWcmRGVXh4ODJidHZuK05LMUU5QUhUZmh3NlRDVnRnNTZFUm5DYXcvRDFKM25mTmZrVi9QUVpVWmR1ZU5FajkwcFlkOTFwNFIzWUwwNnRJcDNiVWEzNHZjbmEyVllzY1VON1FJZElOM1JjVm5nc0R2QUdtL2QzMzc4L3QyNW1OMTVML3F1dTB5dkxzL3oweFB6WVpnZXVtSHRKaGhMVTd2d1BNMzcrYmgyNi9Bd3dSOVczV243ZUozblhUNU5qL1o5UUM5Rkw5WFBTbjlySTM3LzQzeHVTYzg3YkpLSDQ3WnJ1SGprc1gyVnNDMUhQbjE4V2FQUmZXa0h6RC9QeTlNNHA3SkRuQWhqZC9IU1hxbHBYTS92WUk2V1Z1cmR5dGhMa2RDR3BMdnZ4L0djcHJVYkpocVBwUVh6c2RRRW5WQXIva3ZYOEl2MHRxUmZrM3lMNXI3N2FUNVZiV3BvNytibGxJWTlMRkRIZTBZblR2UnlUc1IzZVB0bFJxS3ZGK3JBam9kVDZ1ZThKVmhQM1JrRjZBR28wS1c3ZlgvVC9RRXIxc2diZDhBRTB0OCtocDBHK2RQN0RXYklHb3EvQURrOHpjZUh4MjZiT3dCcGZ1NXVnYlNNd2syejhUeE1aWDYrLzZSbjk3eWZkNTkvQlhUSmVPdG5mdjd5a1p0VTMxMVh3dDA1a1h5dDNUZS9mZk5mSGJsLzdLSVNBQUE9IgogICAgfSwKICAgICJleGVjdXRpb24vbmF0aXZlX3Byb2dyYW0ucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiZmNmOGZjMzU5MzkxMGIyZTk5ZGQ1MWQxNTlhMzBhYTliODUzYzQwZmYwMGM1NjZhNjIwZDIwZWFhZGM4YWYyMCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODg5OSwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E5VThhM1BiU0hMZjcxY2d1ZzhpWkpBRXFZY2x5cmlLMXRKNlZmSGFLa20rMUoyb1FvSEFrTVFLQkxBWVVETHQ2TCtudStlQkFRaFNXbWR6bGRUZDJ1QThlbnA2K2owOTN0blorVG4reWlMcjFqMjBDcmJJU21ieHNJano4dFRpMmJJSW1aVVhMQStLb0l5ejFFclpJeXVzS09aNVVJWnp4cTI0N08zczdQemw2dnJ6aCt1elh5M1AyaDJuOFNMUGl0SUtzM3psUkVISnluakJuSG5BNTBrOGNYN2pXZXBrM0NtWXc1ZVR2TWhDeHJuRFZ4em1UUzM0dXpkTmdobnZaVGxNaTcreFVSSEVuRm5YeXhUQlhCUkZWblRHdTZvM3N1SzBaQVdnQ0g4Qy90TWxaOUY0MXg2bmViQktzaUR5Y0wwZWZ2R083MStkL2VQajU3TnozNGNCN0NzTG9lbkRsN05yMFpBRGlzeVQ4KzdHdS9SN3ZIdFBpTkVQSzgxS1dOQUNCS0lpVHBMdUpBZ2Zsdmw0MXhudmhzc3lBOXFZVFdJTWtxRTJRamNVTEdHMEJIeERSenlWelZtU0lKVGFqNjRhWUV1Qy9EMUlscG9jVXpyQ0ZNN29rVWxVQy9iN01pNGtNU0lXUkVtY01rOGRSMDkvVEl0c0VmTnNtaFdMb0FSUVEzZDQxQjI0M2NId2RyZy9PanlCLzc5eDNaSHJTa0JUQmJuemlCakFPUVpBWVhzMFRpMGdFeEtJMnRleGxBUEhxWnEvamt1YVBWV3QrTWUzTEdXOVpSbmE3OVFPZ0NSNGNFdml4cWM0amJJbmkzM045VTVaK3VoOTM5dkxlQSsrNGdKNGJiejdIMTkrdW5qLytkUFBseC9HdTZQeGJwK1ZZYjhJVXVEZm92K3d6L0cvM2lwWUpPUGRaN25EWmRvSml0bWpNOG1pbGZjSmtIQVFtMnhaZWljdWJSWDRiVm1rVnNYQlBUMG5Ubk1ZaHpPZGtuMHR2ZHNDcUJRR09VeGdQb0RBWG1wVElPWGZEcUlPLzJrcUIxSG5BVGJvcEFHSUQvNEJRaGN5dVR4ZkpxV0hhd0tqUGl3bkxDd1Q0cGNaSytIdmF0NTR0NXRDZzU2T0RSbU5STUVBN3JZSm5EZ1JBYlluTmhkbUVmTTgxMUhjdFdCbEFJY1RFR1kxVVZQVU1FUk5RdUpsQkR1RElad0ZDWXNNNFJJTnNQNnBGYkdjd1piVE1HYmNHR0Uya3hRbXdOd2VrWVU2azJ5MVlHbEplNGxUNUY4V2RTTVd4anpHamJXM0FpcmhRZ0VKczNRYXp4WkIzajY2V3dpZDB6MEtoOFBCOGR2anlEMGNiQUdjUDRZS01ueHVnSWtVM0liY25JVVB2cm4xVHJod0FKeGp0c0hBSU0vVll2Q1p4Q0hwNXkzRUFON01RbkZlNnJoaEl0QlpuU3ZRR0g0dFl6d1V6eHZ2SHB5Y0hCOGRUNGRkRmt6QzdrRTBQZWdHYkgvUW5SeWZoT3p3T0hwNzZFWUUrYXhhMy9weWVXNkY4eUNkc2JhbGVNNUNzWXd3TGVJYnpFdjI1ZnFqWEhaZWxqa2Y5ZnV3aHhuN0xldUYyVExKRnBNZXo4STRTUHJ5WjM5dGs3MVpETHdBekJpa2tiVnRPYkJjYzdtVzRLSitFazladUFvVHRuRit4SGdacDVMRU1QWDdlRmRMRk9tVWRwcHpWb0RhcGdGcVd5aXJSUXJXaXZkQXlnTVNFbVNXNTdhVmV5RE5jTUI4bFlaWEdkQVk3Y1AzWjFzMkIyQlBRR2NUcGEyWVc2aW5KQlFPQXpiU3dDYjhOZFVkUlJMNEtJRkxXSG5OSHVVZW5na2FLdlZXdkFnaUNLZmQ0SUxzS1FYVnlzSFFzUm8zZ0tJR1JRVjZBRTBnN0ovbCtORVJ1c0N1N0N5ZWpiSjNJeldwdHBtU0xmSUU5aTYzcHR0QnBNc0F6RVNCS3VQT3hhWjRFY3h3blBmKzdOUDU1Zm5aN1VWOW9jcmNrZzNEMFI2cW12L3Blb1plcFNaeUhINDZ1N2x3TkNLMlllQXRPWWhib0RGNUhJRWJCaHpXNWFBUkZvR1ZCM0VoZE8yZlJnN3hJVFZPdUN3S1VLWWQzTGlqbGpCTzVOL1dDS1gyaGpNVVA1UkJ1ZVExSGtVVnRicG14QnJJS0o0M2dMbkVWWXJHY3BKaXFtV09Ia0QwaCtaa0U1SzA2QU9EclVvcGhXbHlkRjNCell3eDkxSkc0MUM0ZHRlSTdZRG9MQ1RCTkZqRTdINmhaZVBlYW1OWGl5WGc5Z0RsVDQ0bWJuZ1VIUjhQMlBIaFlUU0lCb2ZIcnJzUFRlekVaZFA5RS9DemhteUlLbWNETjc1R2R6WUY5cDY0VExRNjI1Q3ZzWjUwOUEzZTAveUcyL2t4VER4UG9nRm5xaVZmeHhSeEt1MERPVExmdGJjOW9yL1JYaVdKVDd6Si9UemdjTmlqbjRPRWVvcmdTZnBSL2xOY3p1Y3NBZTB5SXBjSytBUTFNN3JCUGlCYlpPQ0wrblEwTVl2OHljb3ZzcXpFUlRSbDFDakJER3Jxc3B5RE5LQTZnMmt6OEJWTHRUN282YkpZU1c5WGVOci9zb0RBaUFGUUlQSU1QR0sreFFzRW9tWVJwNC91TnRlZ0t5WUJLWHFHZVlxelB0bzRiOE9jTlNkU2F3U0oxNW9iQ2UyVkUvbjdraFdydWhlSkcrTGVYVzdCZWxhT1pEVWNTZ1ZVZXBTb3lFRHBjU21HS0x3TlgwYXFoZ2hJaXNKK0M0NGNxSTBGSElSOWIyS2JzQlNCYzFRekZGd0VZV254T0owbGpOU05NR2FJbXhsU25jSnZENmVCVW0zc3ZVVS9TZDYyVWNBaGtFMEJPbWdLVW1oaTljMUtXMmsvR3IxMVpFTzllMytXb2RDckc3ZzI5cWRuMzFBSHVnVE8zYjNkaHJ1YWVkYzZDNWVXTUpIM0pNbGFPUENId1pKQmtnNFRxb3dmQmtUa3VUd25LUUI0RUc1R0hOVVJkUDM3ZVBmTm4wWDlIZ2M3V0FxZ3pzQytHNURtTm5reWlHQW01MzNoUDVqdWx2V2lqdHFna0ZxMDJMcU9za2QxcHQ4VVI0UUg0V1J3ZU9oMnB5d0t1Z2Z1eWR2dVNjUU91dEh4eVNBNE9udzdPVG9hRXVTc2lHZmdaQ2VXV042Nmd1MkJMUUk5WEs0YSsxS0UvQU5NanRPUXpxaE13UU5GRDFtTnMvL3JPekpaWEw0M3pnRVFtbWU4L01US3A2eDQwTCt2NUpIajkrWFZlMEVTRVNlK1Q4Qk9mU0syUmI5aUhoVHNTaVFIUGxXeHdyT3BMY0RHMWFXZmVPdUJyWUR0RlhLNmlkUWlmT0JaVmh0QmJnQ050UVN5Q2FaQXFvbkFkaWx6ZG5ESTAxS1Rqa1p4YiszTWxDdUYzZGRzeXNBZERKVWduNXJLVWdCQTJTYTVFVDhGMDJMYVFaNjY5Tjl1S2tNazhZT0R4QTNVamhQd2tiRnNJZDArbW1hQ0Z1cmdmbVBnWEJFVlpteGlSaE9nYUJNeFY3cnFaTXI5eEdiWW5JaEpOa0RTU2tQTkVoc25aWFZ1WkNib3lESThzQ1pTMjZpTlIxcVJUeEo0SHVkTjJVNmgzU3QyZG5aMHhyV1pZMFZ0OXIrYlpaVkoxT3VMcy9QUG56Nyt3MHlzM3B6OWZIRXJXb0JCNFp3ODN6OTdmM3Y1K1pQdm4wWVRJRlVmaWRIUGkvZ1IrTHlQemlsNzZ2SGZRZC9CVVo5T3N5U0NEVGFIZllNTkhoKzZKNE51TVVBN1VNdElPa1V0RWRtU2hEUnlFaG5IVTRBVDdTQXp1NjRyR1pxYVowYXpkZ3dsQzMrNVBPOS91RHh2cGxoQjF3b2NPN2tUUVh0WVpzWEtJNitSc09JZWdFN3dURHA1SlZJZGJPamQrSmMzNTVmWEhRNE9qcjhBbDhuR1RXZ29JcXJRSTY4dlBoZ2piUlVkVVJQc3g5eU5tdlByNS9NTFk0N25kZHpzcmV1MnJPSm1SNjZyWVhhcVh1QmxBcEFtY2ZvQWF5Q2Z5aDJyMUhPNDVHVVdyZXFVVVZScG5DUXdPeHBnY0tWa2Z6U0J3Uk9RZmNwVWh4bndJdS9FS2FyRzBrZjlrS1hKQ2tmWjFsK3RYNy9jM09MTlJNZ2dXZ0VCdG00QVI5WVBvZ1ZJVzVhenRFZWNMamp2dFM2Nk9DWmdlRHdwT2loWURiZU1iWUt2b0FPekpUMzJGYnhSRHYxdndCZCt3dmpCSHVHb044YlVxc3VBOGFnR1BFNzVPa25zMDJuQm1QZlltL3FUNERHSWt6MzhuQlp5c21JYS9QazNWeHd3Zkw3ekRnZkR2WUU3UE5qYkcxSXJRdm1iaDMxN25hR2xDVUZKcnhvVnhKa1A3RGVESXdVQUNETUI0a2ZWalFKUGc1elBRYUxDQUt3WW11UGFBVytEUHpKVk13cWxJbUFpS1NqRTNLNWtETFcvd1pNTFlDbHJ3cXhsR2tQTW9Jd1k3eTBlWUl5YzdSQXYyNmZRSE02QnYrdk5NRUd4bUd3bnZvUG1hUXdHRFdNY2liVldQaTlUVEROUHBiQmtibCtzQVdmZkJ6ZFFyV0NjWFJzUnhGUWtnaWExYUdyZFBqRzUxN2g3dUd2TE50TklZbldENjd2ZGFBSWYwWVMreFRwb2Jlbmp2djJxUWw5a3FFdUx3ZEExYnc1b29YckVSM3hvUkhCaWlJemZLQVdwbk8yUlFBOUNiU1dYV2NxQkxtQkRmVVVQR2VFLzY2MkFrd01PRWhPM2txanNaWlIvYWtVWk5RQXl4VW9RVEIyL0pET2VQQ3F6NVhRYWY1VzZRUWlxWTIvazE5cEp2UkZ6YmRTSlN0N3JQVXJpUmVpclR4VXN0UFdmWng5QlB0RWxQTFhpeFdKWkJwT0V0ZHlxUlBFTVFsWlBHdlVlT0pURHc2TU85bUNjUVVwT0xvbys2QVNER29ET1M0QzBvRzNnSmlkSmhybEZrRkV3M1owa1dFeWlZQ1RHOU1qbmtrSnZPeE9LWTBaaTFaNUl3M1ZvT2hHc3lMNngxSmM0eVVGejlsVjhFVlpxazAzVkhTWVo3RW1mcE1LNUJwR01XRTN6eXJOU2ROVDIwbjIzcHZFYVlrTUpMS1hCTUc0aHdQOEhhUXBzbVpZZEVwRm91Y2g1NTN0YjJrc2t0cW9VbnJDRHZqS1VNRUo5R25UUTQ2QmJ0Wm5kWXVQUXVYNlM1ckRKcWtTdmxDeWIyWTVxRFpxVmRxc3laM21BYVdSZjJ6T0Z2ZXdtOTNsa09GN1BOdVVZbTViYVRINFpPYkgyUkJob3dXenFiYU1kNW5FcXlvbVV1bzh1N2F3QVkrWUxmcTBUa3FhSURuOFJyR0IwbUN3amJFcGxyaHcrRjR1NFZNczhOKzJndnNBZ1oxMDQ2TXNpUWJaRFhnWmFZd2RZcTJXQ0JxZ1B6bmIva2FXUGZSalJ6MWZsUEV2M2U0Tmhud09YZGNIc1BrQjR6L1c5bDY5MGZEK25tNkVlaHVlbjJGdDVtUUoyTFRpcXVaQTR1dkkzVVYyckZuSWkzWFVIc2pZRFJtUkhCd2NVa3NFb2pFWXRnVXlWNW92aTZaVENhY0tpa2pHQldrM0dpTDlIb3NOdmwxTXhSc2lZYlRmVWo5NWpIUVNROWlSNkd3NG03Q0NjSEExT1RxTEJBWnU2UVFCQURxZkhoeWVIZytuQjRjUU53d2tNTzNiZDRPMDBZaWZESWF5NGYzaDBOSkhaaVdxUE1vVXRsbW5zTUY4V09XaTdOZU9NRVplb1cwQmxqNFlYZzFsUkt1RDdWMSt1cno3ZlhQaitLeXNHOXQxNndsVXN1cFp3clZBVzR0Zk5reUJrR0pvcVBDMGhMdFlVUEUwanVjTHhqczVNdnNvRjlIVit0YlljN0gwM2x2TXBGZVhMV2Y1alVNU0JFTEFCb2pXQllEbE9aejR5TXZkaFJ2YUVhNDlRandmUlk4ekI3Zk96QXNRdWtieXV6ZUxvMktIcjBISU9oai8wcFlLcjZ4ak01NE1GS0hUR0hzTVV1VjF4M2RBNHN4RHpOdGFuN0pvSnI3TlRsOUxlTDdlM1Y2cnZGeENKaElrbzA3SkU3Q2w2ZkRtOEF5cGs2dXdGeFl3N2Uzc1BUL2pSV3JNelowRUM0cURtTjNMaEtDVVEvVFpRbVN6akpQSkZYOGZBMkxaUHVVeFNldCtmbFowcTRMQlU2cTh2bHZ0R3ZOeW5MT2czZFpGUXlTVzRzeVNlNHI1NjFPOFBobTk3THZ4dk1EcDJqMTF3YUFsbTVRVzZKTHRBMWh4Y05pYWdtZVVrMU53VHVIbmUwSFYxSmxsM2tqUWZEMDcyYmZ1ZEIzK2I4WWVrRVhHcFFTQzkyVHRDNXg0QjQ5S1lHL0QxSmJQdi8vUGo1VSsrcjEySFdqZjR5L1JiYWxhWnRocjA5bnREeWl6b3V3QlIvU0tIQ1dOVHV3bW8yQjdobWVSbkNYR2tnOW9RajZHNVBwcFB5cUxUVlVaSEhrWkZQVEZkSGlCYWhTQi82RWRZK3lCWEpDeVh2Q0NUQWY5OTYvR3NSMXNRZC9JQ2RWeFczN3NGeEhKbThHWlJveWZpRmJWb3c1TGdpQ3BsZ2Z1NWM0bGV3aEdvR1lvTnBtV2JIU0dBZy90MUUwUWR3M3JIVEhmczM5ZVVITzBURWRwa2ZnejdneHN5cmMrYzVIclViblpFNXlhem93OU1HUnpDN1dBVGJtS1VnVm1EZ2U3VUVkeExMNXZNQ25LZDhoL3I0OGtYNDE2OTBURlp1OGJXOWhad1NtRUxvK0FKMWU0SWt5NDlScTltWEZVZkhpT3M0b0kzQUN3cEcvRUFYVWRJc0srMWsvcHdHdG9hUHlaTVpzdmFmR1BDdWQxYjNIcXRLbDNFOWZqLzlBOUYvd0xZRDhYK3ArdmhwN3JXQUIxMTgrbnM2dWFYejdlR25nSy9EczhrRGVGVERuU2lPQ3lsanlhYlZORkYzU2NIYVRLOGNqQU9XWUdLVk4rdGlLaXJ5dWpvQzVhNlV2aURzWnlDY3RjU1l0eWpjWHBOWkNmQzVUWlFNZ3dSZXVDRkFCQTdkUlFvZDB2bVJKVXF5c1hVQmxzWHJLSW5GT01tellRTnFPbVcvOGR4NWVhWTdzVXc4SlZSWkVzc0t1TSt6bDZzWmhiWm5yNklwdHBxbStrQ3hMTCthdDJVUlp4YjRCcGE3ejllV2hPcThCMVo2SFZidURyMXFDd1JrRDRpbGJ4TVNkQWRXZGxPV2VTZWNIQUYwa1lKa01FVjhscDJCelNGN3lPNWZOL3lQTkFNUHJpdGNlcjdzTmNkdks4VjVRSGlyb2IrN09FVkY3amhIUnhiM1p1QTVvSU9xcEttTmNET21BUFZaWW9hWmlJVnNqaUhzd2ltckZ5UnVOVm1xaXNYTmJPaDBNemFvM1ZOUjEwTmdEcFlXY2VsYmtEV2NhbDBYV051VTVjcG1ZUURib0FRTHQzNjBuWDdSMHVUcFd1cmprR1dFSm5RK0tYaW1MYXI3ZW9xc2h0dXE2cnBpcHRQaXVSRmk0ajVnQW1jd1dFamhGc0wzbXJGL0tBNndteUJXZUFxelZrRVR5cEpyTXFnbkpiY3A1cGJpK2RVSktkMXJ4eWtLa3VieWtLWFN6UVJtK0hsVHoxeWthWGZVaWxKd0VoSWtoTnZHMFZ4RUxvTm13c0s3UFhDcTdZRWtZcHNVaUFucVo5dFJWSTRpTGNWTloxV2VXQUpadjJVNEt0eU41Y3AzZGxnaUMrSlFiQk4wbGVnMWl1WmF0ZnNORk1XSldVcHMwUXhIUUdzaFIvWTROSGdSaWtTM21vSDZrQ2pDSTZGeXl2cWsyRnY2QjcyanVDdi9STjVTMDBCQ29KcEZNSEltV1IrYlYwaExOQ1FmWTE3NlRDRDhCNTFLb1NpSVZaanJISTgzRkZvUXFZMXd3MXJWaERnZDYxZ291cVJHN3VXNVR5NExTcm5FYkVJRmxZMHhqN1FHUEl2NVpZZkpBUDl5aFpac2JyQ3JTd0x3VWZuTVgrb05WeGRubGUvNllhZUtMQk1oWDlMbDZPNUhLQUlBVWRDRDZuUWoyeGhQOUU5WVpvSDhabUdJRWFyZEJqOGFFQmU0MGhBS0FML1pHSEpCRklMVTFJT3lqT0JDRjdVdFVabkNiZ1NXUHVJd2l5S3ZFZXEvT2hVNWlJZ3dFWXZBNndsWjBFUnpqc0ZIRnkrSEkvNW04NTRITDJ4RnpDRFZySjdNd2pUODg0QUhFSE05b1JlRzUrSkpRV1d4QVFBQzBSQzNUalNZalRvYnRRZDNOUDFPUDAwQzY4V3FLbkljT25SOWg3ZWhkZnFReFQrN3p3Rm5Bb3VRcERLVXNnV2RWdnZyNzZBOXhBeUZuRjk4ZG1vTlpHVjhhcWFJNitxajFVeC8rYlNhRDBheTh0WXJVdlZDeHJ2elhUWklPQjZ5NG9GdlViQTN6WVp0QmpmSjh5c3MyS1dXUnF3dmp6a3JDd1RreS9WWTRiWDF6ZHJMZnNqQmM2V1JRK3A2bFgvMWRJaDBDcU9STUhXdGtVTnAwZnJlVkY2R2hXck5oSERsekVyZGVkWnJQQkJqNmZlWkdEalZKbmxOZDN2R040ejRtN1hqaDFnclQrU0FsR1p5d0lSc1FiZDAzSWtac05DWW52WlNMRWlTR1dVbjRKMHl5TUp5eEw5Zjk1N2lHMDB4d2NMTlVlbHlINWo1REozMURaQXNRcU1xS0NRcUt4TUFsWm1sSFBrekFsYmdUNjJSRXBOb2lDT0RzS29WdlVJN1kxVGFqbVZTaVhDY09OTVNHcGNoMnBVd2lUR2xEZU9hRkdHV2xvOFdRUVlvK0w3Q1lPVjc1aGNZNFhRdnlPTStyRzZKUTdTTGk3eGRiejdMTExSb1JoYmljN0lFREVxa2xuU1BaMHNZTWVjRVk3V3oyZEdkekNiZENRdEExd3IzQkZSVlRhcTE1UTV5aUJzZkhYMDRzdWs1L3Ruc3FyMGh0ZkR4VE94TW1aOGpBZEIrRlpTbWFJKytWOVlsNDZSR3ZSdGZqejJMTGI0T3JDS0RIOEhGbFViMkxiRTJ2aFhMWWNDMFJjVCs4MkhDbXNMdnZKOXc5cTZNa3o1c2FVTmpsa0RESDVXQTZoaGFRd1l1dldaSEVGOGplbzFwSXFPWE92R2wxOE5kdXVQQjBtVG9rUG5DVDFKdndsbUYvTUdYajlpajMxUVkzSHRrWUIwWURUTEtXMk5DTDY1YTFQT05VbW5PWWFvS3hocktyajJCRTBiUWFXUzZqcFlLQ2lOUnN0Nk5iK1RSbTlka0dicFFDMVlUT0xaTWx2eXRuS1VSb2pVaUxiRVZaL0czNi84TGVwbzJHbXZwbXBFT2xvcUZrL0R1Rk5xeXBRZ1RoRVhxaWFSZFhYUXFBTCsrcjJNWitncnRDMjg5T2xXSElVUmI4b0JCN0l0RWpHaFpuMVVzeXBaM0VpSGtZNldyaVlqTWpiUzZTM1IzY3ZQWUxMYys4TisxaW1TQStpejdyZ1pFd1hKc0VHa2NMQWV5YXNuTEtwVEV0MFlrTFZsY2FuVHpPRlNnNEd6ZXVydy92T3ZWeDh2YmkrcUowQ1lyRm9nYjZFVnJiaGFRR2hlNVVoZThXcndCYmZKalRlODRMVjlhRzR6Z241Q3VUNUJtalFhUW16U01tYk5vN1NOSjJFNk15M25DRitWZlVXQmlzdGtoZi9HQk5WRnFaVndlMENwQWdYaHBYL0ZRR3hmUkJnNHdROUtpdWVuWU4vNS9CVUFOR2VvR1dlbGZ1aFJaYVArU1czNlgwZXdUOVU3UkovV2ZmMHFFczFYTGRLbzVzQjV2ZkliYW04OEM5UTArQTVZVkRMWDBOazBTbTF4VTc5YzVKMVhCL2ZPVXhNZGczL01xandKQ1Bkc2dSUElyYUJFTjdWc3hGQ2FDdVlycVp0bGlJRVhzcUZBQW1SUnMvTWFQNGxLWmMyVkttekNTVlMxREgvZjZkNTd6Yk4yVmNlL1hSUFUzRUpSdS9pQ1k2Z2gxeEN2SGt4N1hsMVc2bjMvY245UVgzYkw1RjRqampRT3RjcEFLcG1FRFlKRVZid012Ni9iTkk0WStNSWhZdWFyTVZBVFJqMHBBMlMxUWhRUDliclpCSU1TY2VDeXhtTk5Nd280bm9EZXNJTVFHWjJhajNKVW44NGNQWXFNa2ZOSWp6bkUwYTNEVUJmNXR0U0dCcERLTkFuK0ppeU1Lb1BxU0xmdm9ucDAvU2UvZzlaUGlncXI2aUpKcW1jUDZyNkx2TVZkY3gyRVJ5QUw1VVRCM2VFbXh3Rk5BVXhjeWRtaHpFdzBYMFJYWmgrZm1JUXNMNjJmWU1nRmZTS3VBYmNZM2lCVi8wREtKZzlMT0RaWTlJUVZWbFQvNDZGWDI2SDVkazlkNlpEdkk0ZDU2bDZxbnBHWFhpV3FHY1BuYThuTm53SXREU2R3N1k1T1lJeDNwVlFxRnBjZGVwd2hOL0pTWGw2VjhZL1QzYi84Tjk1UUlqVFRTUUFBIgogICAgfSwKICAgICJleGVjdXRpb24vcmVjZWlwdF9zYWZldHkucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiNWM1NDM3M2YyZGM0YjA2NDAwODIyNWMxODZlZmIxZDVhZmRlZWMzNmQxNTM1MGJkYTBhMTJkZWQ5NzYwMmQxYiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMDM2LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTQyVFRXL2JNQXlHNy9rVm5DOXlpcTRmQTNiWjJ0NjI2eTdETGtWZ0tESWRDMVVrZ1pLOEdzUCsreWpaU2QwMEE2cVRLTkVQWDc2aXE2cjZZYzBJSVZKU01aRTBvRnl5OGJxWG9RZENoZHJIQUVwYU1DZ0hoTmdqZU5LRGpBajRqQ3BGN1N4NFRzZXJxcXBXTFhZVElkU0ROQW5YWDFiQVMzZFFCNHp6R1h5NGh6OGlxQjczc2htUUFqUEVKUWlqTzFTak1wZ0RsK0xXUGVkZFNOdTlEamtwNUZEYmlEdlNjUlNYaFgxbUNVTFpObzQ3YXp4aDR6d1dmb2lPSThXYzBpNjI0dThyZ2lNb0FoOVB0VzJ5NHMrTCt4Y041VXE0Si9FZjBoa2xHOUFCckl2d2t4SXVpNzZSZDh6OExrM0Ewd3BIUXg4WHptMW1kL250SExYRk1CeVEzeVB2dUhxcjdlNXQyN25HQWpkN3o2eTd6RHA4eG9RV2pXWlhXQnNIVytQVTB6a1hUM0RMQnp3eUNiMmNPZG8ybmRHN1B1YUErKzgwN2FlYlpBbURNME11TW85U1hpUjFRUGlWNmQrSUhOV2l6TnpIN1BOaGFpSDAwdU4xaUhsVUNic1VzUDA2V1IzZ3Q0NTlqNllWNjhMc1dQT09YUEtnTGRUdm1jT0ZHSjV0YWNjNmpoNXJtL1picFBYaDJYaE1paDNsRk83Z1poRTl3TzNOeGNYdHA5TVo3bDVTV016a1lORzJ1WnJFMSt0RjhYZTdNVGMrR3pIM1Rjai8vRnhrOVE4SDRSU2ZEQVFBQUE9PSIKICAgIH0sCiAgICAiZXhlY3V0aW9uL3Rlc3RfZXhlY3V0aW9uLnB5IjogewogICAgICAic2hhMjU2IjogImExZDI5ZWE2ODIyYmUxMjgxN2IyZDYwMTA5Y2VjNDRiMDYxZDE2N2YxNDdiMTBmOWFhMzUyNTI5ZTFhNGM0NzUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogMzg0NjUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzE5L1hQYlJ0UFk3L3dyVUhWYWtEWklrYklrUzFReHJXSXBpVnBiVWlVNWFWNCtMQVlFamhJaUVrQUFVQmFqNGYvZTNiMFBITDVJU25HZTU1M082MGxzQXJqYnU5dmIyNi9iMjl2WjJibGRodGtEeXdMUDhCWnBGdm5MM1N4eHd6U09rc3pJV0pxbFBlTXlNa0kzQzU2WTRidVpheGxua2ZmSUVpTktERzhHZGVDbjYyVkJGUFoyZG5aYXdaeXFlbEc4bEwraEZqUXdaL0k1aU9TdjM5TW9sTCtqdERWTm9ya1J1OW5ETEpnWTR2VTFQTW9pNldJU0o1SEgwbFM5V2FxZkdadkgwMkNtV2xtRVFZWUQ0RkRsVTI4T25aZXdvU252Z1gvM29qQmp6NW5XY01MOElHRmU1cVNaSHkyeWxvUUxZMTI0V1pUd2V1NGllNGlTSUZzNnYwZUxKSFJuc3ZyLzVJOVdYc0l5cGdsTEg1elVjME5lbVdQVmdUSGRKKzVjamZqbTZxZWIweSs4Q1BTQUJURjB3cDJ5YkdrbzdDN0NMRzIxUHAzZW5oczI0YWp0T0RoNngrbjBvSlZvOXNUYW5WN3NKaXpNeEQrdHk2dGZvYkNjalo3ODBkN3I3eDFheHFBUC93OHNZODh5NEZmMlp4Qk9JMXNWeHIvK2pFTFdXMlJlcDNWei9zdkY3Y1hWSllBem1XbThNL2I3clU5WFh5L3Y0TVdMbVhvUGJPNDZUeXhKZ1NyTW9YRmdHV1lBK0wxSE5NQ3pHVDJhOENwaHJ1OUU0V3dKR0dCT0ZETXNlNWNzR0h3RFVvUjNNQ3RwbGl5OGpQbnc2VWQzbGpLclpjZy81aXlZTW0vcHpSaDhmQUZ3WHBUNEtmeitBQURZRXd3Wkg0N2dBVUQ3UVhnUFQ0T1ZEZ0RtZFJJOVUrMjhDQ0RBOU5rTVppYWhaZ2Y5Rlhab01aa0hLUTRvcGZMUXRXbVF6SGtKK0w0SUJkcnB4V3JWYXJWOE5nVnE4VmdNM1c5M2h0U3VHOE5zUHdHWkFPWUc0aytYL3RySHY0N2tvL3hqVXEyRVBRWHNHOWJodjdwNzRnLzk2TzdqWDBmeVVmN2hWZjBBMW5JYTRQckUrdmpZL1NEKzBJL3VQdjUxSkIvbEg5a3drUjlOSzNRY0lMa3pKOEFobWhlWFA1NTFmNzN1OXZ2OTQrNWQvMkQzVDFnOFJ3Zjk0MEUzR1pnYWxnV3U1MndlaWFwQVduNFhxVzdRaCtGaXZXN0NBSldCaTkyazZxSjhUa09EQm9qcGc3dDNjSWhRWFNURXczMmNLMWg3SG5NUVY2SzJKRmo0aUx6cWlSckNTcWZYc054K09UK3I2WEMrdE9lUno2ancyWmVMeTR2YnUvTWI3R0RtSnZjc3cvZEF5TFA1OEhFeFlVbklnTXZzSm00d0M5elFZLzNCTHE0anBKT3V6enplbldwVE1NeGdHbmpVSzJmT29GM0NVeEpGV1hjYVBFTmw2TWg5RUhZNXgraml5cG00SGw5RndBcGdjVHJZWFNCNWhNSjhCeGhLbUtrMVE1VHVSVkRxandWTGFBbnVxc1d6aTNoTWR6ZE95cTZBa2Y1M01TdjJvSEVvMEFPWFVJTUF1NE0rMFBSZGYyL1k3OE4vLzJiU0xQQjFVVk5zTUR3NDVzVXF3RG4xT3prcDhSY0lUNndyL2xvK1daemdCZjN6YjlxTEZUVWdoa1UwcmtNbXloK3BWMk5MdGsvcnY2WVBhZVlTSzVJNEI1Ym5QaktRSHpBamdrejhwYm1xRGt2ckVqS1gwVXRwT0pmQWVBc3NLSWVaczZFSzJPb2Z2U0VhQkV6V2hKWU96VWJ0cWpPcUk5M2NVS1hoeHVrcFQ4bWJnSHNnTEdnOGowRklDeWVHQWVCQ0k1emhpMFhnMi9ITXpYQXBkbkZaV2RIQ2psa1V6NWpsZXphc1dxaDY3MGR6ZkpwRm5qdXJtYWR0dXBMcHBLTVQrWGkxR3E4RVQ4MUFOWkNsTEVsL0lEQzhtWnVteHFua082ZWgvNG5yWkcybHZ0ekJYNS9jbEFseGdpSUczenZzR2JEZ2hQQVRtcHVDZXVDenhKSEtReGhsVGhiRnpneUU0c3lSMkcrbmJEWVZjRFJlYjJrTElwZGVXcWwwTVVPQm9OaGp1MXpSMG5peHhuajlKSmpOdXFnWXdzU0FMcExEeEk3MFlPZ3N5YzcvV0VEUGVDT2pBdG5BK3NzUnE3L3Z0SXFvRUpMY29lWG9mRXNpK0Uwa0l1bmFjVVBmbVFTOFZNS21pNVNWY1RGZlpNVDJVaGpvYU9iT0o3NXJKREJBbU56ZUlrYXRxSjNMRWR1OFByODh1N2o4eWV3MDBFdzlCRTErMmFiMzRJYjNzSXhmQjZJazZkNEtob3N5MjR4QWhDU3ZyS3N4Zkx2RXh3Vzdmd3U4Z2l5RVlibXpHVXU2bkVaZVBidzFJdEpHZlhNcmFORklzdit4d2o1UzJGK0NvSXNJVyttZzIwSXJ5STN4cUo5M3JDUXBiRjA5ZlRQMHdxdDhETHJJc0Q5OGIraTBjdTJjdGJ2M01JTWFaeTl3ZFhQMXR1Wjd3RkFBOTIxa1RqMmZzUmgvdE90NjJlbU1WUVBRTEdjVXpBakNuR1VNQ3ozNEZtUVBuTUZCaDVGN3Qza1ZtLy9UR1ZiNmkzMnM1NzBGN2dSa0RRV3JIL01HK1dxNWNZT1VwZTFmM05tQ25TZEpsTlEwU1paSnpzOEJiZ01QVDlpTWdmU1JETHdzZzJLd21IM25HMHhWOUkyNDdDSjhES052b1JNL1FLMEdYdHM4M3RjT1phc2h1TWtreUJJM3FVaWhHVTdrQnZ2NHd5YkxXQTFxVk5DRXh3QVk0ZmVDTkVKcWRiTy9lNWhKTkpzSkV3RWJMcytWdjBqY0NZaEhOTXZEREExd2ova3NkWkRnMFN0Q3N4ZUN2b0JhUkpZRTBKL1N0Rkd2cGRNRjlCTDBUQUJXejhocEVpWExkc2R3VThPWGo4VWhjSStFZEYyb1FrVnFqdEtlOXdDMlY1dVh0b3grOUxIZkw1YVJYaGRiT2x4VVlURFJrVktCUllBRkJSb1hBK1pRVjdVSEhETEoya0k5UVpRdFloT3JGM1hXSmlnVjNRVjlXcjFaNVBwcFc3YUFMcTBlZVR2UXg5VHVkRVltTFFoa0tjVjI0Wm1yOW1odDNIeTl2Q1N0b3JiYjNpeUN0ZFF4alA5c3BNRjhnWlBzRzE3aXBnL0doQUdOTWFHcUZTcWpqNFQ4R205QjJGczRpMnF3Q2MzL2dqYnk4Z0tIWlFXU21GV1VvQXJObVpnSFBYR0QwQkhzendGdEpQcVdjdDhWckpnc0NFSDVGbUNYMzNXaHFEV2d2dGN2QTIwK3RaSi95NVQrTHRHY0M0TXlobEV5RWhaUk1FcUhhZS82NTlQYjg5dlI4SERjREpScVZRSHlJdE1nRE5JSFZjYUVhWEM4QitZOXBrNE0vUmZldy9JeTM5eGRCVmt2VXdPZERQdC9EZ2IvRWxpU1BNdmFnY3FHYyttd0JobGFvVzF4WGIraVV1YUJGSUVscFJRQzd5R1krUTRZalBFaWM0TFV3ZkUrc0psZlhqeElTUk93Z0pHUTJpWVlzdDNmaFdYL3NsUHEwczR3UTkveFRoWTlzbkJudUJNbmFKK3g3aFBpYkdmVjVDQnBCcFNHYnB3K1JMaXlYUi9YK3M3d1phZm8zTjRaSHF4V1ptZjRsK2RPTFJJY25zTTVkenZmNytoOWl1YnhqQUdMditZdjJxTXgrZWtSTjRBTXM2T3BFMmp4QWo4b0tyUGtuaThWR2trSCtGZzRlRG5Da3VnYlJ4cDVzdCtzcHZCTmlqYTFsRGNzM3ZMdW9QQ2F6SEE3eWQvTkxSUlJ4Z0M1Wk1DTUE3LytZNEdLcFpGRklOcU1QMWtTOVVvRUJ0WThzRlFIUjRyVU5DRUhpTytJRVduS0RQTWVJbGFoTXVqREJGQXdNVk8xR3lhcUdvSnhHcE1sTkdTcUduNXdEKzFDSGNmaGV6S08wemFCTCtIV2xkbnBjYXUralhBN3ZRZjJ6SXRyT2g4WXRpN3VwaEhpNjljVzJqaVNBbEYwSUJzbnlkWkwvNWdGR1RQMUFyeDdRMlBHUXQ1cVBiWG5GWlRmbkhkTmh5WEpIVDdTTkRXQWlpTkFxanZYeFVzWDNtRzM4Tk9pb0RaMThUR25wVnh0eTVZeGE1cy84bEpDaEFHSWRnZVpEbUtJNzg1d2RRbC9Gb1E3My9mQnhRSS9KVTVYOEtkVGNGbUJFaGZqL2hLMHA2MnBhM3hWNERTZ25TVXVzWnFKQ1oyWW1CR3Q4ei9SYXQ1azFsRmRtLzZHdm0rVTk5Tm9CdnBGbFJFb2djOEwxRXA3NGJVRzFna0RDcUxlTFNqbzRmM0ZsZVM3K2g5Y0lzUnMyKy9jNUQ2MWpIZnZIci9ocndZelVIa25KYzdhbzNTWjl0Z3o4OERxQkpNQnByZnI0U1RuVzdBbldJSnZrL1ltaSttVUpiMXZZSi9BdkJydkFWS2NFRW5DYjQ0ZCtHRjJRTVBkMHIvS0FkdjZ4RjFjbjF2NG5pV0ovdjdzL0pmTHI1OC8xMkNCcG9zTW0xNDArUjNtb1MwWkxnemswOWZidTZ1ejMyQk1aSTF3eEhkZ0Vwc3FKR3dlMGZyanlIS0lXZHFTL0tEaVB4cUhSaURiWnBrS0FWWWErTXhoZ0R3dnMybkNPbFo1RDdyTko3MWg1b0lweCsrd3NmRzN1Z1lxUW9yNHJPUVg3YUpuTjdkQlgxYVdYT2lkV3JnTTFLbm1Gbk5QODNkdXRtUzJJYTlWSHVkb09uVkVWSU9TSHRTc3RPYlIzN3dGVUc0THRuV0NNblpML0x2RGJVSmkzY2p2aUcrM05nTGxSTkM3WnhuUkhkWTB6UzNxYmVvTUdwNXQvSWYyTzQzL2lwem40MGRrUUlmSWdJb0NOMEdOanR5b2dMRlpFRExuS1pvdDVvQXNOOFR0aGdsemZFWUtTMW5XQXBtSFdaQXRTZkpkY3ZtaFp2aVhxODlmdjhEYU5qKzdFNkFPNHU5aEJQWVhSUTNNUUlUZ2V1VXRuMmJxNVhlUUt3WDhtV0pRWGFGSkY4UU1HRlZpNkdMSWNrVHdUZjVjbFdWUUVLWXh3emdHM0ZCNGVmZE9GaXdQUitIVlhJMWJXM0V2bjZKeHlzeG9DOVdSSEJYK1loNm5iZFU3VGtza29PYWtsbjFIemRZRFd5ZGN4SkpnMnJWcnRFSzF2QnM5ajNRazFBc3RZMUFtUmttQ2NRUVByajhIUzEyRm01RHV4M2ZQUWFLaGh1YUFYb24waXdvWHF6VTRBREJnUTVvY0llTXFUWnAxOHlBVzNGSVhRTHNJZExOK3dJSGEvSjl0TklRR2p3RHZKQzVpdStROE95bnJEZzJxZytTZ05pKzJXMlFFSi9JemwrR0NQVTJrZFdEa0tySXNhR290eTNlVzRCb1ZkWVMwVFZzUkJhaWhxazYxTkxSSnp2K0sxaXFVMWpxZGxWVFdWZFU0NXRSbTEvTUZZQXVTSytSTTRVV1hNTU9jQTFDdlZsYUZTWUFpbitHc1p1UXhGSHdMK0lDRmRpdHdNTEVIUVhyWUVQZjBDeHhDMDFiOTFCNk5LeDg0dDdFbDB5enpUTVV5WDh4S3lFbVB1NEY0NEEyRmRxaEFEd3kycWFtd29QSnloREJ5ak1mcUVvYnJpb3VCNTZPMnpMTUVJNmpnRGQ5T3Q4eGJ3Q1BUbmpXK3A5eFRsbmtWaXpBSVFsQ3RPc3M1WGh2UStNUU5ZSnNIU0d6UWJFRS93aXFqL3RpMmFRam1rQ3ByZk5DY2hGbDM1c2I5L3NCc1Vsa2ttT0Vld0JtWmZGYWc0NEQ2TVFkb21xK3N5bG0rckY2YTJGZkNFcXhjQXRNR04rSmx4bXNHVnAzWkxyRlRrL3g0MEZ5enRsWnU3ZVdSTGZsYUhNR3ZNZkZWK01HWmFpbEMwTklpK1N6cGs3QUtJWGVkVmJQYUJSMFh6TlV1TWVWaEF5OFR1K1FhTDVQMTFrMjcyZTJDMEU2V2NRUnlRS0hFQUFFRDRtR1pQVVRiNEltV3Q5eHZ4S0tkRXhEVTBkUmU2NjZwR1RKYStnU3NZOXQ3MUFtRmhKS3NHbElESXkwRWMyeWJYcFFrQzFpeFcwOG9BVm1qeHllb0N4aW5KTHBoeWtnZGFKdUxrRDBMeFVjd0U4T0w1blBvYmdPbWhmMjVUbitoaGQrM3lQVlZwL211VVpkeVcwL293VlpUdWRQYmM5UEN2eHVMU01WTE45ejRPMUdsWU9ZbEM2RHoxNmhvZmF2Wk0xbHJtZkNQS3hOeDBzd0NGWkdRWXJQSitzcVprVkx6U2RpMVgyTmdGV042YXBRMUpiekgxZ2E2YnpUYnBJS25GQUxTOUJhaGpJY1p2OFVDM1VMZGZUVitLbmpKMTdHMVYxWnNlY0Q0ZEFGVWdGSGpqai9obSt4TDRkSDg1a3g1R0ZQYXRMZk9JNlpBYVFqbTdyMnVOVng4T2YwSmxBWVhGdXNVUThjcU1iUG04V1IvTXRrNzhEK0F4blY4NUxLRC9RL3NJenR5ajl3UDNvZUQ0ejEvTXBnZUhFMDk1TlJvOVpHd2QyRk1LZk4yTTZEUTVmL2c2dHJ3Y0c4eVlJY0g3T2pvOEhqaTdVLzJ2VVBYM1orNmU1Tzl3Y0h4QVJUeFBucDcwOFArNE1nOTlvOWQvM0RndWRPamo0T2pqOTdnK1BEWVJBM0tTUmR4RFBqZ3ZTTUhxVW1ZZ1RXU29tOFhsWDNzaVB6SW5vTU1WZ2lHN3NKYTh1UVNvNGpUaG9CVEV4QXMzVGlvU0gybEdCU3VvcWdhL2J2QnNZcGtOUy9aYzhhTEZhSHFaWDZSOFpSN0sycENhckdtYTc0NzNCZkRTQmk1a2RXM0NYNWJhWDV6RUQwd1ViYTJ2OXhHL3JSckVwVjBjZWhkV1lxMkVhU0RRV3c2YTBTQkxhMEh4TXQwaFY2MkZseUZvdk5qRGlvMGtJT3paUGNzREx3WW1mck1TVUlHSHFDWkRTcW94czZqOE9LaEN1d3FVb1ZOKzNNZHE2NGtrYjl0NHI1NGNBOURxUzBreURpUGc2c3JwQk9TclZQRm5oYndwbGNjRmFoS0JUYmxoR1BYVTJNQlNqd3liNGpYRlFPOWZsbk1vTVB1SkFEVExXQ0FwUmZ6Vm1BVVNPanoxYS9tYWx5RUkyc0thR0JvYlBqK1VvYWc5YVFYUjNGN1hUOUg1clhyUFFMcVgxdFlINk1JTFNOWFQ3bitsd3BlTDNDbUw4NXFKN0ZRWVdTZUJkUHB4VmxUMS9TU0JQUVR4bHJmNDZPbmZnbWpTN1grN3QwTENLUDdIanAxa2RwZGtBbEoyaVB5NjJuTWxYZHVWWS83VzFLUDViZ0g5WVZPQmVlK0E0TVdDRHVZc1hTWmdoVm12alpDRGFDV2xFK3hhanRXK1RVdTRzNkpDaitMWDcxbnJiTUdLeTd5QXhVQS9TT2VlTGlra3c3WC9HalUydmhud2FQS29pOWw3b3pjYldVK2g2NVAvckdMaDN6QTFJbG4wWEtPQjZYV3NUa3NXOWxWNVhDS2hmRElRSmtvN3hrdVV3b1czdDhyRjBmSDZ5SVZtN0IwU09BR3VoU0F6UzdQRm5FeFZIb2JUUURKVDh6L1NjR0dEL3Q3dWNpQWdZR1JBWFFJbkdFOUhzU3hFcjNDV2x4NDh3b205THB5Z2N6ZFdGZTh2RG10TXhObVB3cGhJRE1Ia1NRbG5pNVFrcWZBWXcxZGh0cCtnUGpZZHVLRVpsTVBsVnhvNXU1RE5HZTczNklFRE5QcWdaMWQzcEIyWWtiQTZxbStpQTQwb212RW5VczR4U0YrZkthbCtZeXJzdGc5c05KZ0RTTXhnSzcrUE9KaHIxRE5Oa3pPZnI0QVRqc1NuR29oZnZJMnpBaVUwT2NDSGt1RVIxNHZkRUgvZ0p2bm1rOGRiRlZ4TmtZcVJ2QWdkbmYzajQrUERvK21lMTNtVHJ6dXZqL2Q3N3JzdzZBN09UcjIyTUdSLy9HZzcvT2pmbnlZU2hNeXpNSEh1cU13Nkx5Z0JuaDU0WG1QbzY4M243SFNRNWJGNlhCM0Y3QjN6MzZQZWw2MG1FWHpTUytOdk1DZDdZckg2aFQyN29QTTNHckQwY1JnUGRwcUwwMTZmdVRySmo5WFpuckhoNU8rZCtnZkhRM1kwY0dCUC9BSEIwZjkvZ2Q0eFk3N2JQcmhHRVQ3SHR0YmQ1d0Vtc0lRTWxjZHk4RmQ5VFIyK2E1SHpma3hYTGNKT2RkeWpPU256NEFDcGk0STFWNEtVNzVhNVJQSkxkaVVKak5mT3hnMEFJdmZNclJGT3dTU1JaLzNFODRGL00wUFdNMUVWRDQvd1pQRGpkMGxycVlpRmVXaFRSdU80NGtvU3h3NG5iTWtqZ1JQL0VjdDFreWR0REdFUVh1ME5BNUJVR2haMVlOUkFVN0RXazRqUDI5Z05BMnc4eUNLbk51U2gxMlp1NzE0V1FSbG1mRWlBYnVZQ1p2ZkhBckZuQjZkSU1RREI0Q1Vhc1hhTHFqeURycDhHd2FwQ25HL01IbDVha2RKZTFQYVdXUWNXT25nc1lqcTNTMFhyZlIzMVNxNWV3UnBXcEtXY2p1WUJ4NHdaK28rY2hGdlZRcGJCcWhId2YwaVdxUzJPSHNuSEl6Y0tQYUZZYUNGWktJM2tNNzI1Q3dVZDVqRXE1YnViYWFHdWE4NUNPTkZ0dDdaVEZBSzdyMVduUTk2dUVjOEhmZzdMRnN2dzUxSkV3K1Qxa1JHb2dUQVRYQ3N0bGZkRlFDSVZDSlFTS3ozWjFBUW5TM0xqTEJPRlJpNU9YbUROa1h4cE9aYWFDOUNXdEdaeFlKOGFBZ01FbUxEMi9jbWc0T0RmbmZLZkxlNzN6LysyRDMyMlg3WFB6b2V1SWNISHllSGgzdm1HODdmNGM3dE45Q0didGlVQVNsNlRIUk5IaDRSR3RRdG94TWs1VDRtcWRiRkpPVWhTK090endGSzJTVlJyUE5Zak92R3IvQXZicFRNeU4wdjMyM2ZBSmZYUTUzUDNpekNFTThNY2Y3TjdZMWJLaWNIejRkWkowZkVpVlFSYnNaZFJCZG41dkRWSXhqbGJVdFRqdnVieHF1eG9RNCtObE5hSWpSYlBFNjludDdxbEJBeFZWYnQ1RGZpTnFlS3MzeVVhdjRGYXhsSmVUVFd0Zm9SRllLeHJUWU5MSXg4OXQzV0VBS2pBSWljRHBwMUN0ZjMwUzBpaVVBOElyamp2ZDVlLzZCM0NQOThPQVlDUnlFOHcwMDVDdS9pQVE3eGdyUzd0Vm9MVExtdm4xbkduVlg0OWNpV2VoZE5wQzJUMkJSYkVrNXVpT2pJOVdxWXhKbk4xYlpMdmJDTHhBRkJZMS9ZUEVxVzF6aEEya1NFS1EzU1IvMzUrdUpNUFhiR0RSVFo1QXJldUxOQlIvVHprTTRrV21CQVRldXRXeHVsNEF5a2s1b1luM1dpQklWbW5TeUJPa1hKT1B4TGV6QmtobUo3TW5yNyt3MjZucktiSTJWUmhWV0tsU01HbVFlQjhJaGlHZEM2ZWlVNlVmZGQxdUVUdHk4eUh0UlR0TDBxN0tQVFdQZHRmQlZhYkJkOStUZ0MxU3dYRDdqUkxmVnd2dDVxMk5wYld2OXUweXlSOE1vSkFhYnFKY0dFMWMzSmEzcGlubkxHQnpNb0xkUjArSS9RQVA1bmZOZy83TStOOXRIaGYrbjhnMnl1MS9Rdm1FNy9VdDl3WVhVSjJVTmpBdFAzai9DOWVGTEd6YXM3Ulh1U0RWekI3SGI5Wk5sTkZxRXRURXVLdkYrN204MlZhS25yYXJZRnFjbWRUbU1RaGxUVzEyMCsvbXNZa0c3bDl1QnRCRlYrN3dWUjFhRlFpLzJOZ2lMZitpNTVwL0FrSkUvNzFFTmRDRXovdHVrNDE2ZS9mYjQ2UFhNY2l1NkxrN2ErSGM5WGNvZDhUcnhHTVlUUmNYNzZlbnFqVmM0OWFMUW42dHd2M0tScVNtcnoxaEJpWHQxbXIyNTBGNktaMFlMYU5wZzVxd3QzUTNGRyt5NWdaNHFVQnhhcFJibnJVZ1VRQ2VGSFlaNE9uVThBREF3UkhhSUlQSlppU2Rnem5qdzJORWUxWmR5U0wvMzhPYWlMdGtiUlU5NWlMZm9WS3pHNkhhVDh5bHZPbEp1UG1yVXFVZmtpMHdaZmV4WTNOOHZSa0NnQjJUTWRTN3gzTklyR0ZGdmNVVXpieDdseUx5SWkvMWhRK3BDeUk3MXNidU1oQ25UeVM3OTdwNXBCcE5BOVdiNWd5WmVCMW00bmlpMSttZlNqaEtSeGJSMUNYRjRKZlRpQTl0cnc3ZHF0ZU43MURrV1pLZ3hJdk1GUStIY1VodDBCQ0VSK1RtcmMzQk5WZDRTSGkwaXF4ckJFMk5xTzFGUlM4Z21QQmhldG1oZnpIbFRPbUxJanhERVpzZldtalRRb2FsMktHNXlPcTNIekZMbmhzbDBqUWZRQXFVMVNpVFI3S2cyMWlHelc3VERuazRCS0NYbHMwWXpabFNyNEx0cG5sVU9JM0EySlIzcVNBTSs2dTRzc211ZnJRZVEvZEh5Z0ZHUlNVZXp3ZzlRT1A4eXlSWW9Zbmx0Q2Q1V082M2FETUJ1UkZ1bTlJV2RGTFZDdW9hbU5heUNTNndpK0wrMFhVd3lMbktndnE5WGJvWStrRTE2MTg0Z29tZ2QvTWhsUVFxYWYyTXdjcjc3RFFEaU5pMTNuTGFCcEcwM2ZDOU8wVTFMdUdJK2R4TWhiMnhUeWRrdHdKUitLMkhKUnFXbjA3VDY3Ly9kbkY5bWVtNWV5allpS2RRcldkK0Q2bXpuNUd2YS9nVThBdjZ3bWlVb1lidEU3dWptTUo5NFNuamZTSWVyT0JlYS9SQ1pXM05pVWFhajFsMUMxSGtXbE16NWkvOFBCbzdsQXBvNnlQVlJtRU5CMUhEenNHU1cwbDR1bXl0dFJWYlplS2QrbDNLSXB3M3Zsd3JLTTBpYTZyVVVaZlVkL3AzNWNqY3p5YWlNYmVPMm92TXVJTU9XRzJUK1hyUDY5NkY4VjhLaHdiSEIrR1VLZkdBMC8xRysxV0dLRDQ4MnFoNjcvNlhxYW5EYnJGYnZEbmFhbEIwbzh4UWJpVEtWS1JZSGxGa1poN0FhSllGU2tzMnc2eXVUTlRiR3BTNmQza1Y1ZmVXcnBEZUxrWkx0VnZlWHFIcFhpWXhCYXY5VVk1a3orWmhoMnZxUFJvQzhJano3UHNDdTFoWHJmdmdhWjlzY1Y2SUxlSUU5azBGa2RBVmRvRGZXZTUrL0xnMlNnSS9jaG1mOStaUGJKSzJTMFRLampGRklDQnFtVHN0aE5YTEdURHF0aDVvdGxJQmdiYldLL1dnNnRwVlI1eUV2UGcwa00yMWJXbHpDK2hPMVZNTDNXN2NGcGRsZWQyYVVhbERrYXQrWXBWYm1hMi84ODdaYzV4ck4xUEpXcytlbnF5L1huODd0ekRPZkdKREgxa2RJcXBsa2VobnZSb0NvWGdnekJya1IrOEVGWXdnUWU4dDE2emJZZGp1VHZjVFZ3cFNvNkJWZXd0VTdjOHVHb0hWTHpkdUY1alBtWUlWY083TFIrWEFNY0YwOStVMTltSU1hdUd1T0g3WUlzUUg3eEF4MEJCRDZkaU5ubTNEcWdzR3lmUGVPaE9KSVNkSlN3akpFR0hQQXFOd3JaNnl1K3ZIc25IeTIxQldmZUFnUTZVS3dIQS8yemZUVW5qV1ZybC9uV091czZuNFIrUUU1SmY2a2ZySlA2ZjBrS3ZRR3o2eEM3V2JjdmNrM2xYbmQ0SWovZ2wzb2VQLzlmWk1ya0lUcC9oeFZUMWh4THgyZ1FzQlBOQXpxa3VnUjhNRjhrQ1FLVktzR2dKY203eUJQRWt5bUxRUDgxMXA4WW5MMUJqdGovSVVYK1E0cjgveWxGeWx4M000c2pSWFhOMHE2ZStJbXNlQmcxenRxb1BHbjZtOXd3azI0QklwazFLWnYvdmpZeGJQQzd0cWxsb2Via1dEeEgxTS9QRWYxZEE4MnpXQ3ZpdFF1MHEwNjVmTmNlYUxTc3VYdGtCdlQ4aU5mZjFtaGhOMFpQdTAzMWJmTWFKOXpmM0lPNGpwbU9KRk44QzgycTAwRmx1Sno4WHVsZGppb25nNlFUMktvTmQxRkhnNkx5MFNDcE9nak5nUlFIdTRaWmxPdDlGOU95YWxsR2NSYmdOZ2FLZW13K1NwU0xSV3o1Z1Byb1VCeEQ5VVF0bllzdWJuaFhjcVNaM1N2VFNyT2tQa0o2MTFRK1F0eCtoOUpkTG1lc1BHd2UzdEgxTHlyWmMxY01IVDd0VWxvRURQcVVwY1F1dUxpQW9WeUUwMnBYY1gxTHVoUEhNQk14YllyenJXa2lNZ3NEQVpxMXRNdW9jS0M3eDdlbVVUYnBCemUxQ2hkaDIxUUlONUFja3hncXNjUVFEa2c4RjArZ2VFWTM3U0RZWWpiN05Bdk9SRTdxdGFmQWd2QXBraEhpUEVHc3lIQWc5djBxTWVBaWZaM0kyV2lsRDRzc21KVy9WcTczS2lRVnhJMUhTc0p6UXZjVCtQWm9mQ0lRdVNaazRrMnBBZEd6YnVzSnZFNkVMOURHTDdzeU80OHBYL2ZtajM2UXRER1RsMTJUQm9qMFlGdmUrR2JTWTVjbkwraUt3NDBuOUhJREhBcTRGVjJnMytZSi9TT3FRUyt4My9ScWwrY2lwamZxTTE4eXlMYzlncUdlemZ5VExGekpNSXhDaG5zMjllVmttWlZKNDYrTHQ2M3hkelhuRktvK1RrNGFsSDBPNTYxaFRXTnZMTlZwZWl4MnVjMkhpTmNseUFNV1BDc0pCZDZZTHl0ejNSRFhuVmkwTnA3anM5WWNtN09hRDdwWWRTZFByTHB6TEZZbHFzaGFjN1RFV25ObWZUUCs2VXdNb1pzd1dzVTBHVU4ydTNLRWF4ZkREVk9SRUtsd2NzOHl0ejNqVjFOUzdvcnpzTEdsTzUvVmxVcllmWkJTSnYzS3NjSEdhYWVCVkJFaWpEaStyTERNQ1g4ajcvdmpDNFkvY0h2Ym9uZ2dKM3JrZkYyVzErbVBzMGtaUjFYc1V6eHpRODNJQS9hTndQM3VJdVRIdDhnc2loZVRHUms5amtvcW9YWjloQ1ZYdUVKdTB3MXlwcExOZExnWjdKWndXTWdicGkyMkRrZmI5K2NHSzR2WWx1cEMzRU44Ri9zUjg5Wmo3a2tDN2daSVRZaGxVVXh1TDBpcE9qTDMwRGM0aFA5a2E0d0FjNG5oWE1vUWxZYnhpdm5XeGtyMFVUcUVvS0VsWjZkZG5NRWFycU1IRkVLSlRyM1dKdFFLTzcraTQwUjhVb2tZT0RibExYUGlVaU1oVzJVMlpLMHhVYkRUWTZRNXREdUZMTW1XbW5uc2xJVFdNUGYxZ3l3T1pBNWtDckxZZmxsVmxocEZFVm9VdHc4SUhiWE4zV3dldytMM0ZxUjA1Um5UaXRxWVlBYnFwSHh6dmFKcTFzVk5uRlN5VjRtR05kVUxPVGs0em5uZEY1VTBiY2d6c1c4SEJIT05ORUVZTjdJYWt2QmMvVUI4ZFhvNjE2bW5KMHFGcXpnTnp3N0lrd0tlaU9rWUVheXh6WXNVOVg3b3FzeGRJMHUvR2tYakV3MU1ReTlmYXBPdkZFanROZTNuMkIxM1ZpVWlsQ2svN2Z3cVRYT0lKRHNxOE1WeGpjTkxuWmN0M25sWjZHWkZ1N0JNYmZXWXcxY3RuK0k2d2NTMGRsMEdTQnh1MTVzRmVTcklFN21uYXRkRXRRcDNYakdwZVNtbmVTV2xlWjdSdkpvR3NzUmdLdW5XbXhORVdscjY4dUloeFR4NXVmNittTDZjRWtyYThzSU5vVVpiY29KTHNoTUVKVU5ETVVwU0d3Umtua0pNWFloUmV0RUxRSGw3NXRkY2RNWTFOMnZrRUpGbjZRMnN1VmdqTDJYVjNhNGg3RnAxaUFrbFYxN0Z0b3Q1MXhzRGw0bVIxRzNJRjRGSk0zY29tbTBrbGpWdTRhTDNkODJhS2ZnMi8xNC9lODI1c3Z6YUVtMEcrTENiTHM4b29hNW95QTdidWQ2SGNTaEZLMExkLzljcVo4MUVOZ2FpbXdKV09rTVJVQzU0RzRha3Q5RmR3YjlhMHJnVnoxVmc2UE9nVXhONStzMDEyVGZWcVpSOTJvcWpYQXhtOXhQM2tOQm9PamhMVDEzUUtuSERaTGg5RWtBNXkrOU5QSkZSbHcxd2JlTW8xenJDeXVrRzkyR1V2SzU1azlmeE56VE50eURUOUFHVnpQeHU0THJET0xyekljMWE5VG5rRXd6YmdzODkrc2xQQ0o3ZzhWQzduRjJFbCszeEsxU21CcEFwR21YUWV2dlpRZ0NuWUE3ZGgxd3p4UzFUclVCR0JUQ0FoWC9PZW9HUHlTVzVyOCtrTmlpeTZMbkhKWGphVVh0ZmVuSXhoSUs4UFFINXh2RGVVZXhvanlnTHo5Z1FEWGVFQjBXZUptcU1OZGw0NWRiYXk3Ym9oM2JIVnNNVld6cmJ3aHFLKy9GTXdKWDI4MU4xVXRxb2xPQmpTMTBMc0trSm1VYTRHWHlkczFnTlJlMjhGUnloM0d1NkZrS2l2TnFWZ3dtYkJFUVZPV3NGZ3lXMzAraWYxVi9NLzZscGNZS2QxaTdDallleVBuMitNTExFRFZOY2REV01FemdHS0J6Uk45N3VHalpYbVRqSmQ2d21ub2RnMFhOTkNwUGc2MVJwZjl4TFkxZzBiUkF6MXFBekdveUxsd1djYkk4bWhHMU5La2ZWMVAwZWR1T05LQklCL0hJZGNYOUlQdjdOTjRYUVJTRmIzUlB5WHQwUzBubFBkNE0wWFBxeDVzNlB3dGxhR0xvOUtqa0NsSk9kdTRmWE90aGZZd00yKytEZllCRktZRldiWmczQVJodHhyZSsvdFczTzNKdXJxenN6ZDIxdXlKbnJrVWh0S0hMMTYrWDVEZGk5blA3WDV1aTlPTDAwcmNrNllDcVhyMURBR3d1aTRWck0wOHVWb2NZS2RJWlJMdzh2R3BQNjZ1VWtyNmdyTEM1NjBZdnpsVlh1UnRsaHBmbXdTaW1FcXo2QVRaRHlCSHpiZ1lJUndKckY5V1JhbE03RzJ2cE9tcXJtMnZxclNYYm5iaERXbkZDaEFOcDFoZmdseU51cUNhUU5jK3VyVlNPYXVLWmlFVXlyY3FTenROT0luWEhBUXVhcG12SFM4VFRQVVl5eFJnQVVpcVRxc2huTzRFdWJqclJmV21pUmI1NktUUzlkQU5kc2c2SUZ6U1BjckwyYXp3UjJveUp4R2RGR1hzVUhZSW9PTlE2Y3F6Vmk2SG55VkhtVkp0ZERYanRnb1N1dEgremdWWU50NnIvc3FMd1psNGw3UDkwcDNoRWs3OUVsY25udEtLUVYvTThZaHJDUEtTMTJhYTliTUFjOFZhRDBvTGNPcGJ6cnlyY2JLdjNuNEViRlRmdUxGQTFKUHJhYU9yeFowdkhrQmpIbWkyWFpEengxOEduby93QlM0SE13QjcxcDNWWXhJUVpNN1hRR2JObTUvek9JbmNraTlHZE1MVVllQUtpaHJMb2toVmFEdFVsS0hlNWJ3aHVWM3lwSVFHdnlMT2N1TjE1a2JmcEtOTFBJWjhFM04vamVnTmlWQUtHTzIzeVZjeHhZQjJhRTlBd0xveDZ4TG05clJMREdQVW82MUs1aDI2U0w0ckI2UHNQbGltbHoybnlFdmNuaFByNzBXUnVyOHhNSUdEekpQd01oQWhPa2pTMCs3MXRtUCtlWHBuR0lpMUMyeVlTeVd4dlpVWEw4RVlTQzQ0OURFMzdDYlk0S2twck01MGRpcnFoeWEzYzVBV3h1YUtOVjJ4WjRGVE16NXBZdFZnQ2psbnRqYkFUaEpvbTczQmFSZVYwOFp2Ui83Y0dtV3pqYlY3YzhjOEg1MVk5Y2FuYUc1VWtVRUNzQnd5ZzRaNHJhc3l4MkFHbVB3Y1NaNFZLU1hJTHZYK0ltVmE3QU5DeUtLTStPZ0hsYTRzemUyZGtSMzRLSUREY0wxSW9XcWhZK2pOekpiK2RBbkJEeDBFY1MwckFnWVp6dHZyVWhUU3Z3aFdrU0lhbnpENDVLL3FrMllXbDBzcGVmNWR2VDZ3dnJ5K24vY1g0QVpYSXpDSmxIVmtENWhOcEE4dXBxcW5HYXJLYnFJQnpkUjFWSExpNG52eGpGdXNXZndPbVNuNEJ6Wnh3T1lnMFdoNnlHMm04TGpRb2VQeUwxT2JRcFQwUkNrclRBcExEc2JuNGxTMWNXcW1OVEp5eDhZalBRYkdzZzhON1hNcmVhb2JRbEpDdVZZM0x3OURhSmcrN0RZbUphOXpoR3V6amt0bDRBaHY4bkEzTEoycGpoVk54Z2crY0xFaCtqRVBYUEljdTZqeUExL0dqTzc3aEpvUVQwakF1V1d6NWJRTms4VkszZm92WGlrTzZYOENnai9yc3o1TmxBeUNzcWxnai9YcmFYYWRFU3VQZjJRQnJ3YW8rQnpoMmJMVUVtdHVnQVdQcHVITmc2cWJabFNsTVI5a2ZYSFl2all6MkhMb1Z3MnB3cVlUamxXMXprWEZJWXJ1d3Y4QnUxRVh2QzJRcS9TQmFOcXYrMnQ5OS9OK2p2N2Jjb0J1bkZ2RG4vMzEvUGIrK2NMK2QzUDErZG1VUHordW9XN0VQeit2VHVaK2ZpOHNjcmVMWDdOTmlWRTREU0NtcmMvT2JjM3QyZ3MyMW80dTFQVjVkMzU1ZDN6dDF2MStmY0d5OGpNWGVGN2ZyejNkMjFjL29WR3JtNStMZlRPekJab2R3UHdFZFprcXVmZWVJWFh2N2k3UHpMOVJWQS92U2I4Ny9PZjlPdWxscTFlSGltSlc4MmlZT2UxT25hTCsvZVRjZ3BJTHYxK2Z6eXA3dWZ6U0Y2YXhRcU9wYjVMYjBQZWhRWWFBNkRxUGNEeW9hTEsvNTVwWkFuQWtIdHZYNmZYS2Q1TEFrU0UzQnplYStzUFRFTjh6M1dmbysvM3JVbEgzby82S3BtdTROT0MvUGl2SzdIc29rMXZWWkZWcDJXU0lKVDVFc1lqUWFXRlI4VTY4bGg3UTgrdE5iYytTUEJHakplQURpelJFd1pFV0JQaEtVTldUVzNEbzVlQ0tGeUpBbm5MWTdrSStxOWtsTDY3aUdmbkU0THBOQ3I0empCd09FeWpCeDNkQ0hRaHFoSkN4aVpEZE1UQWFUd0tVaUFTNXZYdndFWlg1N0JWUDE2YzNGMy9zTnZkK2VmcnM2UThBZDZOcUtHUzNNS01aYWxZTW5LdVNxTkQrY2xvYU9kMFFiTVVnSUFNTnBsMWlRNjR1cHdDOElST1N5VldpMk03UDhIR1pLSlhVR1dBQUE9IgogICAgfQogIH0sCiAgIm5hdGl2ZV9leGVjdXRpb24iOiBmYWxzZSwKICAiY2FzZV9ldmlkZW5jZSI6IHsKICAgICJhcnRpZmFjdC1jb21wYXJpc29uLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYTFjNWQ5ZTI0OWRjMDA2MDA0NDk5OTgzNjBmYWY2ZThkYTAyMDZiNTY4Yzc2ZDE1NTYwMmM0NjQ1ZmE1ZmNlNCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyNjk3LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWV1NhL2JSZ3krNTFjSVBzZjI3RXR5VFFzVUtJb2VDdlJRQkFKbmh1TUlieXk1R3RrdlRwRC9Yc3JiYzRJc1RYcW9BY01XaHlJLzh1TXk3NTgxelNKQXhiYmJ3Z2JiT1BTNTI3UmRXcnhvRnZVTkNHMWVaS2tTQ2k2dGp5cHJoc0NrNFJGNGNzS2I2TkNLN0oxWDNrTVN6akZ1Z3VPQzBiTUZWTmI2eGZQWlNZUStkUWttYk1zUW9YekZueEVpWUl3U1EvSTJCbU9DUVJ1bHlWS0g3Q1VIbXpBbXI0d0tSanZOdVpDUngraWk5eTVaSFQ3MU4rS21xOU40YkZPM3dUcVJwMzVmeXZOYjVBV09PTloyTjJMRjhZQXpGSDg2N2ZIeGNrZ2ljUkpoemhpbjdrQlc5LzNVYmU4aVFIcW13RWgxR3ZkNDBoN2g4WG9lamhQV2o3UXlsSHBXSTdjZGxPNGRUTjNRdC8wdzRaeU5YM0VEOGRqTUVCdDh1eXRkN0taeWJLN0ttQnJjN3FiaittUm5QWWZVSk15d0wxTjkyZHlpYjE0TjhRSEhaWVVETm1jc3piRHRwdHJnMy92dUFJVUFOUS85OE5qZjNsNDFQNzJGT0RXeERKVzhYTVJOUDR6Ykc4cG02TXZ4WlhOSlFwTTdMS2syK3o2K2dYNkRhWFhtb0VEQVV0dUFlUmpubU42VGtNVER1RmtOTyt3SnpnUmRUL2xkbmFwaE5jZTZ1ckYwclFlYmRUUXhDQjk5dGd5WU1DR2paRlIzWGlwaFZVclJlR0c0c1NabWs1UTEyZkdVcEtBeVROektFNWF2dVIzeDBGVUthdllwVVFYeVJTWVFBVncwU2lvZHRkRlV5VUVEVlZrTWdSdDNOVnFIU0hTczRyQXZ3emFRcVlKekVEV1NwOW5lTDcvOS9HcjU1KzlMeHBoZi9zSFVlcmNmZDVUWDVYREFrWXByZWVCZk1GV0gvUmh4dFJ1SStlUHFuSXZab2s4MjhvQ0tPb043bjdqQ3pBQVFrczVPZTgyejBvRVJTbEp6aklITkNiMFE5TGJVY3l1SkJYbjdjRThQNUFuSEgyZkhTT3BOeFVSMGdkbzBLZ0tYT0JBZFF0SnZ6cDV6azdRUWlqdHJsZEJCYWJDTVV5S1pjeEsraXgwZlZBaENFN2ZhZUFlb2xVU0xEaHdRQ08xRkNqeHJsK01Qc3FQWDcwb1hsazR6ejVmak40aVpnZUxiNlk2WnFMVkNJOEFwb0puSllnQ3VrekllbERhT0twTkZ4YnlRcUIwTHpDSE5LcU5SQ010RW9JRnAwLzlXQ0xucmFTSmZlcmZOWGNINlZBK1VrVFhzSHRZcHJMdStUbERLYVVTZVQrY1pldTN1dnk2U2s4R0NsMmptanhMczZlSHpmeGRHT29rZ0hUTkNFYVdKUmowR1JCY0R0WHB3R01GSWNBamFHMHF4cFQwZ2JESlVaOEU3R3Z0c2NUSDErbXB6Y2Ezci80WXJhOCtzRWR3Ynl4a0tIUm5TR0JJSm1GRWlRbktnRXpGTm1mZEVMTXlzZ3lHK1ZlS2t5L2dOMStuM3c0WGlmUjNYYzJMcCs0NElYdkdWWEludnphcVgzMFFQSEVWa01zV0VLUUMxRERQQUdNSE93VmhneUFLblZTcTlNODR3akN6cWlJYldyYU5kcjFEYkg4cnF2OEJGKzkwRm4zSlVHb1BOSUtpek9jc1ppR2FocmJQU2VaWlF5K0JZUms5VFhGdHBnL0xNMktpeitDU3J0MHBPM1VqN2VhQmx2OFVKYUFFQ0xlRHREc1pUemQ0Vzg1TWFOVmsvdGZOb28zUEo1V2VQYjl2MHN6bzNUd25MQkRPSlp5dzFETnQyQi9IaGZORzU4NlBVbHhUdVBkMXJ6ZXYyeWY2NWh1WlpkVWZFNGxSRHk1SGRxTGhLTGpYNCtxbmY2YkxRVnZKMUFsUm8ybExUaytOK00vYzkvMFRuNlNaRnZWK1I5bFkzSGU5ZllPZUVoTGIyc0t0dmhxbXRzTVg3ZlBkd3VqTTlEdU5ER1NCZFI4MzFGdlRzdzdOL0FGaGthdWVKQ2dBQSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICI0ODdmODM0Y2M4NmRjYmM3YTA0YzIzOTJiZGUwNzJlY2FmODdkYzExNmI0YmFhMTZjMzVlYjljNTk5YWQ1Yzk1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRU1lVEd2aXpEcmN4Q21nSGFuWjBkcHFQSXg0bEF0cnlTSEpwMitPK1Y1SVQ0SXRzcHZXd2Z5Z3RZT2pxWDcxd2xQdS9zN2pvb0llK0JDOEppNTBoL0phS3o2RHA3ZXV1UnhJRmVQSVdFc21VRXNjeldJNUFvUUJLcHZjL3FXek9KWXlhUlZFekV5NkplNWpPR2czMzlLK0hzWVord2p1UUlLNzR6bHhqV0pBNFpqeUJ3QThCRUszRmtOTmhJUEtwUWRDb3JSaXNqc0xLMWoxbEtXVFRkRnd3VFJEc29pSWpJR2N2WkFvSS9kaS9INTZmdTN4UFg4N3pCTGs2bFd1V09ZZnFjOFhaaUZJRlZZU2RISUJLRW02blN6R3pVR3c2aDZ5RjM1QVcrZXpnY0hyaWpRUS9jZmhBTXA4TVFNQnI1V3I2UjdvZ0U4QVpycGZPTWd4Q25nQUpLWXJnRnpPSkE0OTczdkpVWXJ2QWpHT25GN3N2U3dtanloZ2pKK1BLS1JFVHE3ZlVSQVJTdzJzbjdMMElTejYvUUZHamVyU1pva3YzSGRBbzhCZ2xDKzdVZW45V3A1d0tjUXNXQmhOa3lMMDB1RThQaUJqQUh0VnQwZ0lRb29YbzFyMTg1RUJ1QzhRZkZSMDVGSTRGVzBiTGloVm1Vc0ZpbjFGSG1HM2h5OXBxUHRFSzhCam1uVVRGMk1zWksvWWlsc2J3RnZpQVlqakhXWDNmc0ViVFZJYUlDY2dhcDRKSkloUm5YUnYyYjB6QnZvS0tEZUZFaXFCSVZNa2xqK3VHdnMzOU9qaWRuSHk1dmI5K2QzUlFRV0pFdkVFME4vVnpLUkJ4MU9vKzQ1RFNuZE9oNTd5dVZPSGs3dmp1K0hKL2Q2TC9PTHk4YTFWQ2VpME15UzdtSnNBNVgwSkVJOWg5RTNnOUZiMlEvOTBXdURvblF6SEJVM3B6QkF5dUg0dXF6V3U3K0ZIUGs5L3BIWVU5VmtmQncxSjkyUTc4L0NMd0JEdkFvN1BuZUVQcWhIL3FIM1hCd09CMGNqTEIvTVBJUHA5N0J3UE1WbCs0QjZxa2x4NmJRSktWMHdsVHhXQnA0d2pHVEUxVnQxclUvUjA3SkFtSlZoeWFjVGFFVThJWWdSSVNtSE83bTZ2eWNVVjM0RHNySUdxOWVnTFNjMTZVT3libkJmQTZJeXZrbm0yTVN4dVU2UEd6N0FzOGg4L1didTd0SmE2dzRDWERDZ2sxUlhSZklQTXNVWTJWNDNyQnVoVWhIQlV2bGhwRy8weUM0dGI4VTdCWGJaZHBMNms0eWpJYmUwTnVyejRVNkJGVVJsQXd6cW1udVRpYXZTVGVMSnQwR1RaNFlmNlFNQmEvUnBqSG5WRjhKeU8rZy9WNUJxMWl4bEN1Mk5pU3BuakNFSFNPY3BOcTRudWRGTnZNamlOU0lvaWxVbmJzbTdmWnorQzhGMFNhdFJWYi8wQ0txMFg0Qk9PVkVMazlVZU1OSFd6dzRpRkwyTk9Ga1FTak00RXhnUkUzanFIYmF0YklvUVZOQ2lTUlFZMDdBV1dJcEFHYnYrT3JLcWF6ZmI0RWZDdDdHZEhuRG1EeFhtb3FsVVBPV0VpSjVDczBRU01SbG1ueE5Qblg5M3dsVmc2WUVIcEhZQk1pMTRxMzc4ZHI0QUJhZDNMWkwyY3hwUC8zU3liVlh5L1FMUnRNSXJ2WDB0MlZITVhQalJpVTllamVVY2JQL2ltNVJsS0ltckU1YlZ5eUlYWTFrM3k1WlJrbVRITDM5elRJSzAyU1R0RmJDZFE3YnN2WTFtaTBRTjlnTGZSMlRvdXFEVHBKRlY1UFNxdnlwbTlJdm9TMUtBeUtibEswbCtQbTZiaTUrVFFwdnFGeVVrSitoK1hvd2N6bk1pTHJETnpwL0srS2ZqKzFxVnJDSDVWcDNRYVRVcjFTTnhDMjY3OVQxNE0xT2JqNTFnbGhzeXZVSlRiWFVjOEpGUGlUMXhLVWI3b2J3bUQ2aFpUNUtUS3NMVXBWMjQzVVpoaENsVkxvdkd3WHF4aEhHQ2NVRloybGlPcURuRmZyYmV1OWtqdUo4cDNrYjZ5bmltZ2p6ZWxSODFGQ2VPVzdnYUxiSHpEQllnVnJkZnllQVcwOHJVL1NyaWhwRlF0M3N5clBFNW4wcDZ3K25HU3lPMVRIUEJZank3eVRXOTVvU3pScjVLbDJ1UlY5d2hHRlNtak1PZXpuaXJEKzN2THNVbW0zNXJxZ2ZkbFVjeGZLOVlYVkNFWWxzVXhyV0crTzZLNmhiYmVUNTRDNGthZmxWS0VyazhwUndtMUFsZ3FSYUhlYzZtOEdySXhiNUJPdUhTcWRidVFuVTNhRXRBOEF2cDJOcGVHalNMK3Y4MXlpeEtiaEs3bXNXYUxiK3FEcGIxNzRzdUN1YzNENzIvZTV3TUF5OFhuYzc3WXZEeUpaMk5BNEYrbDcvQUZoQ3NJV1Z3MkhWRFM4WDBlcTk2TFB0cGlTc3I1ODIwdDFzTklBNGU5c1BLWHgwVVNybmxwYVF4ZFBIaEdUSWJQTDY0T1Z0dnZaNkk0MEtGcHJubmJhVisxZmxadFBjNDJUOTgzVytJT3J1K0JXZWVJVGx4bjRiU0cwUVZlQ29Sb2V4cHI3QVpSQjhFNHFOdzlpdkhkMjJnUDIrOGJxM25kWk5sYTQxdHVyNUZ1TU1vMzNNWlUzeUZpeGNVZFlRUGx2WDcydFF5NGVKeTlWODQ5WnovMUVKLzhNYVNYWFMzNnFMTkI3Ykp1ZmFwdlQvb1lwaHFocUZtclV6d1kzVnJFajZpcXJHRXAyemlOYStKYmFWdlNwKzlYRzFVNDY5MVQ5MDlYK3BkNTUzdmdDREI4Ym5UQ0FBQUE9PSIKICAgIH0sCiAgICAiY2FuZGlkYXRlLXJ1bnRpbWUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJkNThlNjBiZGM2OTQ1OGZlNDJhZjgyNDhlMDJhY2Q5MjRiM2I2MDVjODI4ODc3MzUyYTdkOWEzOTUzZTkwMTI0IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDUyOTEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNjFZeTQ3Y3lCRzgreXNFbmQyTmVqOThzcStHQVJ0WUF6NFNXVmxaRWozOVdySmIydEhDLys0b3N0blRzNnRkK0dCQkFrWkZNaW9ySHhGUjgvUEgyMWcvL3VtRFZrcnBQMzc0K09uZC95N253OGl2dy95WmpBOVkvNWhyWkYzRWNRazY1NnFkTkVVa1ZIMUxQbnZkbkMrS3VlQzFwQlRGVmlVYmc2K3RENkVFOC9FTjlIaXUwaUhWT1RqM3RMN0dvN0JBbDh2UXhvTzg3Zi96eDJFWVQrTjFHUGFYMStYajFxU0ljcW1RVDFZaXRyQXRLRW5OdVp5OXF1eGJkWmthaTdFNTJhUWJhV2RGSkZrbk92ZDloK0ZJNCtrQmFRdmVDTEdScVM0MmJxcFVaWTJra0YxV3pua1ZvNmZhWXJBVUpMUXNMcVhFYkZtczFHekt4elh5NmZ5RkRnTWZSamxkNzhnK3NGRzZWckkrY1hGRm10YWtmY1YrdXBTUWZEQmNrVEN4c1RoS1NaV21rVDRmU1pKQnh0OGhmNzVlTDNmYzJvZ1lCNU9hRkttUWlHS2l4Q21XcEdySnVTREFTS214alNHS0ZNNDFtS0FwSitCYnV5U2ZiblhjNGxRQklRWjhZSjNYaUtSd0pJYzFVMXNJMVdlYnZYR3Nvd28rbFJTUmwxd011VWk2YU1YVmRqeW0wL2swTWgzR2I3SWRYOGRTT0pTa21aUE53WWFTWXdwV1NwVldMY0syMFZldG1zdmFvNnk1TktNVEtwR3pRYnI5QW5zK1hWRXNtVGJNNWxRMTFtZ1IyN3dKMFJxYmxNYWZJTkZwTklSQmFxS1lwSFZ1YU90V21GSEhXb3hLK0xsajFuRytuT2Z4T3A1UEcycXRWV2MyenJtV0pIQXVSZUViNVpUejNMUXhrWkFhN3dSajBsUXNhTG1JblgxcFNhWGNVa2VWTDJPVkUyK0gxeUVMVWtmc3JUUnZIWVZha3ZVRlowWWhqSTZSMGNzRmdFVTVveXphekRnalJ2dU1naG5kSVh2SmgrdEVKOFE3YmNXU1Nsa3BsREloWGVKUmhwbzBVaGRJQUZWMVpXcVpVSCtxdGsrdFY3YXFvSXFFRUt6TnRBRGZ5dkIxR3E5U2lGL3V1RG1WekVSSlpYUXRvMGhKdUtGYnNCa3BZc25KNFNneElJMWV1VlpWb3VEd28vYkI2MHhMRTR3bzFzdVdBWXJXb3VueFFjbUNtSXZoWk5CTFNsTWZ5WlFJL2E0cThvRkNHYTBzRGxTNTl6VVRFcExlQUlkdENMWnlHUnplQm95MVk4K2grWUJNTk4xcTVoaVJEekk2Z0o5YVNpaWRaSXQ2Z1FHc01HRjJPVDZGT2xRNWpGOWtlcjBqdXhpMU55QTBkS3Z4RloreVJVY29jSnRuVzZOMjVIMk92bytuSmtUTHlIbkRTU3YxbitvVE1uSjhCOFdIVkN2b1FzZXN3U0VKM1YxVWRDcEljelY2ZENqWWpFeE1qUXI0Z29yRlBLdUFPUlQ4ZTA3RUxOT1g4ZEZqR1hrMXlWTTBuakdaMFVjdGhrSm1LZDVqMWdQR2o4a0oyNnlEaW9SekdUUzF6MVdRRTcwQUg4WW0vTXFIRFZNTU1vYzVOMGs4V01xa2xMbGlJcWlKWW9tQWMxaHUxbXZ2clhMTXNXSTFCWFlPTDh0N3pJSFB4eU9kNm53SGo2QnNCc2ZVR3FWWlcxbHhxOUd3Um1jS0lmR3BncjFCdEUwSTNSRlNOUkhONFFQbG9oRFNlL0JuUm5RbGUyZDA5UTVkM3BRRHo2cmltZ01iWkZiYXVteFJKb3BSR1dPcE9KOGlPTmZydm9ZanZBZWVNTXZ5OVE1ZFFnMFowOFBvTWl1bU9ZMlIwZ29uZ1NCcVNDQ0lvZ1ZHT1VscGxCWGx4VXlDYnhPRFZFMStELzIrZ0thenYwbktRRmNERWk2SXByaFVJOXEvNjA5a1lBV05xYTJVMERpdEdaTXNaUnpYbyt6cVBmWnQzTHJZSlVIRk0yck9Ma1ZCR05WVmNFTzBpdEFORUVZSVorM01CbTZzclRVVTBSTCtGRWlQV3ViaktNZnpIUzdrcUR6aXNXaWxVQVhsY3BhTTZ5V2o1a1g3SG5pbmN2Ym9MV29oYXdpREN4N2lrNHBma25zZUsyOXd4VGlNUy9ZV0FvS1RhNlJKb3l0aVJOVlJNU1JUWjVCYVRaaGtIYmdMRFJwandjVmYvMllkdGpINGYzaVVTV1lJTnoyTGdzT1ptQ3RZRzRQSlR1UG9SdldKcWtWRWdmWUxBS1hnUHdSQjdvcUdkbklldll3WjltcUZQWCtSRTczSlFoVmxJSW1ZVFlNcEs1UVJjbzBPWTRCbXI0cDhqUzNwTGtIaVRJVE10QVRLQW5VYVpLcWxwVFNUOEhsNnpCVFlCSlhXWHFjTUZrRGlROUxPa1ZVeFZlVmpRSzV0Rit5TTNLRWRVQlVEZ2tEL2hrWUovTDRpL25pVCtmcFFXYWkrYUlLNGtXK29sa1BKeFRrRitrTTlVMDhFZUQzcTRpSFRNQmVHUUNvSjV4ZHdtTFdVVnN5bklhb09KVVFWT2dzSFR6bEhlSUdDV0lTN1V3RW4reUpwVFVSWFh3OC9BRU9nZXNnaEpWa0FiNmZyZUh5WUMrdXpBMTVGQkI2K0Fid0N1NU5qRGcweUFocEpIdjVIWmNpZ3F1SnFjS2dRU0pVck9ORHkwa1h6OWFreXdTQkZKUVpvSWhqVFFOOUJkTkhBUXpSNFRDdUFocFBER0lHUmNqUTFRd25ZUVlCaEFnUGM0QXA0bmg3a2pER0JQU3JDY0dSbzVJd3FxQWdjQWtOck5pQjg1V3R6aEJtRTBKaG1JNEpzMmlJUDBNM0ZBRHdtdWpXRmZGZU9hUE91dkNWMTVVeGRpS1BxclFjNnFFZzhvYmlZZHNXUXFPQ1l3SndRYlY1STZLdHNnbFFXOFVZMVNJblRTUWl1RUFVT3NCWUZLWERvSEJ3M3drZUNLeHRFSGh6ZEtrZ1V6UnJSbHd2YWVYbzVuS2x1a0ZBQUthMHpXTkxKb0dsS2daRnJ0ZFRRbE1BSmVxQUdjR1hHVVVBVXNHb2FnbHB6NzFySXhuOFdyL3N5WE9CSTZKUE1pL2tIK1BYeitiUkQ2YXRjNW9VeWxRbndabnFQQzR0YTJaVU9GempFWGFGWkR2UjZ2bDBYVjcrUGU3T2I5SGRmMkZXNjBtKzg5U0t2NjBiN3NKdlUwNE5KRGdLRTlUUGo5bnA3ZkhuWlhjL253N3crVVkvdnltMStMZWVmRmplNHQzR3ZkcFBWVHc5MlpUek5uMy85bUduSE1sM0hCanQ5bGJkVEI3MXQrWXMzZGdYNU9jaDNYdnhVeTNIZHdHeFI0WHkzNjNpWWQ0ZXh6T3V6c0xlN2Fia1Z2RXpGNytDNTIvb0FJWm5IOHR2N3hqeVNoa1djLzVjbngycjVadTRZKzdTYnduMFZmbUNRYVZxZnVMaDNieC93OUhxNW51MEs1ZnRIMjVQV3htMzFhVnM0b3NNanl1M1ZFOSttV2VhdnkwRHZ3M0JaOHVIMVUyQ24rYkNXVi9VS212dnFoVTV5K0wzUDV2bnd2ZGl1NDNUaGV3bjMvaTI2WmYwcGsrOGUzdFlyTDJKd3BxZCtXNGNSdlo2WEN4bmVOL2ZnanJmNWZzNmxJeDlydTZXS3YzeHlUOEFPWEg0Y1QrMjhOUDF2SFd1Q1JoN1Eyb3VNWU1zdGxKbDdOaDZSNTIzNXh3T3VESTgrd0pIc280Qkl6LzN1Kyt0K3ZuN2J4cTN2ei9jdmZ2cjJRRUpHKzk3TDhqY3NiaHN2MWQ2SUFZUnpxRSsvbWNCOU5rQUNZRVZjRGlZV2lob0tpYXNGRmhKSTBRaGtLc0Rtd21lNzFEV3Z3ajQ0YllwRXBZemNSM2ZvOC83OEM0Zjd0RmY1SW9jL0g4YjVPdS9YSldUcTl0UCtQSDNhNFRJSE9YTnFQODIwdjl6S25lNlZnVG5BbFp1YWRqbkJpdVlDazFrTGRGWkRKbExvMFZWVG9kaTRXVXFBUHdmNU50eXlZYytlaU9iM3RzYVZWek1rNVhscmplc1FyZ0xkRVVKWkRBNkNLeDlrMEZyam9KRU5yb0JoS3pSRUxLTGlFVll1V0RZbENvQ1U0djl4YThUclJYeCszdHJBN3pyWUR5aXFnaGtBbk04Qk4xRUVBNitKdTVUR3RReloxaEU2QXRzSW40YnJLZTZGTVBxNEhyYWx1aXZKNHlwMmtWTy9RbzkzOXUvOU94MmxJaW9lWnhpemRUUXd1VDNpZjd6KzlWLy9YS2RJKy8xS25BdUZmSnJvOG5uMUNLb1ArZkxremlGNGQxMjR2UEtGTUNuVG5ib1dTYVB4Q2h2NDRIR3pSTmNiY3JoN2p3RVR1Z1d5Tk9qV3NmMmljK20vdWZyZUMzais3YWx4aFJrMzR0cGdlYVgwWHp0bHFMMXEvZG9iREZReTJnU1pGSThrcVFZZkQyOFUreStJTWl4QXR6cnJyMFdPM2JIMnJiQWx3M2JNVU00bGROZjVnUTVyNm9ZMWVtbTNtUmF5c0k4MERmLytlaDIySXcvejhmelNlZUE2M2FUYmRaUmlYbm5uNy9qeGh4Lys5bUVodmcvR2Yvakw3ZE9IUHNnTDNjaTFHNEdCbUlFaW5kVWFOdW9RZmVZNytRd2Q2OTJUYm9ySEt0TnduZ2Erd1RNZDhYTi9mYmc5UWZ6bkQvOEZlL0h6N3FzVUFBQT0iCiAgICB9LAogICAgImNoYW5nZV9ndWFyZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJiM2VlMmI4OWRlMTRlMjA0ZWZlZGQwMTZkMzkwMGI2ZTMxZmNjOWYwZWEwZjMxMjVkM2E0Nzk0ZDkzOGNhMjAxIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDMxNTMsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNlZYMzAvak9CQis3MS9oNHlWQktxVk5mOElKNlhaaFY5cUhSYXM3amhlRUtzZWV0QWJIdG13SFVhMzQzMitjT0cxcEM4ZmQ5aVdPTXg1L005L01aL2ZvNk9oUG9QeEVLN2tpOEV5WkoxZGdwRjZWb0R5aGloUEtTK0djMElya3VsS2NXZ0h1ZDZJMEtTdFBmWmlubFY5cUsveXFkM1IwMUJHbDBkWVRwczJxSFMrcFcwcVJ0NjhQVHF0TzUvT252NzZRQzVJVTJpN2dRZmVZcnFRdTg1N1RURkI1R2w5UGhVS0RFdmdKQnlZQ2pEL2NrbWJqeWZsME1tVER5YWlmc1ZrT1U4WkdiSkR6QVowTUp0a1FuMFZ4TmhoTStEakxSb1BaZERyS3h2bG9US2Y5d1l5eC9tdzJwRW5uOHRQMTFiZXJUemUvQktNWWoyZXpZblEyeVFkRk5wbnkvcFJ4ZGxhTXMvNE1Ka1ZXNFBiRmRKUlBoMmNzRzU1bG83dy9uUFl6OURJWTBqRk9KWjFPaDBOQk9CaFFIQlJielkzVkQ4QkNhbE9tVlNFV0pUVmRZcDdZOFhtSDRFOFVaUE9odHdDZkpvOUM4ZVNZL0lhQlhOWmZ2bE9URUczSmpwMG9BMnU1QkRRV0RsbjA1TVpXVUx0dGY5dXI3cElTUE9YVTArVCtMbEcwQkdjb2crUyszbW92S2NsL2NQU1dqeE5iS1M5S09KbXdMRVBxWnJ3L0h1dzVkaGpOVG15MTh5NzUrWEpjSitKbkVoMzFRcjBsTDI5Q2ExYm5RbEc3dWdvK2ptT2V3ODlTNFlEY1VsbkJGMnUxVFpOS3diTkJlb0NUZFRaSjNDbzZKUUtKOU5nUXlmR2FNS1J2ajZvZllKMXdIbTF2dGF4S3VKUlVsSHVoNHNwZnBlR2dpemNKcUkwT3VHandPK3o2eWpXSmJtWU05amZFa0Q0SGpkaGJIT3BzNHdDenQ3MzhxWTc5T2lENmNPWnJLU0kvYmk4SnE1elh2TTEwelA4Rk9kUkQyeVk5bzAwc21lM3B1NFJScFpWZ1ZNN0R4M25UNVppcWkxYkZlczFVR3FxcXg2dlN1SFNOZWF2Y20weDNpVVBGbXovQ3lsMkVSc04zTU5SU3I2MjdTSk11NWlFNXg3QjcyUGlhUTRxakpUeHpzUURuMHdhWUJWOVpoZVc4ZHA2Y3g0MXdNV1lWWDdlaURUTFJ6TThiWHM1YlVsNmkwckFsc01mNVdtOVF6bmRrSm9Da0V2aEdiajRrVG9IL1p1RjdKTzUwQ2haSFlMRnRtTk5JSjRLa2FnSFlLQkgwMXJaUHdWdkVWbytSbTNEYTlEaUFDWU5vc1RGb3lGNFg3clZXOFN0V1BrRnVpRkFFa1lIVGxXVndHN29TbXdpenVBQUZ0ajdrd2h1elVJOXZFRDg2SzAyWUxLbWlDUFNyQU1sZHNsVy85YzdiWFZlandOM2VCUEJZNVJpaTdJV25WZURCOVlRK2xkVDVFMnFNRk5palRkYXFEU2ErUHF4M2xsbDRhclRnWFVoMUExS0YvVmw3Yk52NkFOSllocldMVjRYRUttdHgrelErOTR0bnUySWFtdytXU21OQnBIZ0M4dmUzcTQxb3gvajNpcVFCRkM0c0hrVWliUWM3a05ZaXNsczIwYXFWQTA4RnN1L1FyRjF4MTJnWDZxZUgwa2pxSVl6YnVjMlM1TDZOWFVMZEpuRytqbnNRNDRoemQvMS9rZVBrZ0wwb3NlYWFCZUVhOVZIUlJEbVE2R1RqYmZlZ2VtT2JDN0srS2gwZ3RVMXpIVjI3Mlh1UU5qZktTT0FPclRtc05LcTdYd0txSng2dU5ReGloRm9UN1MxVkx0d2w1OWkwbGZRcFBBcy9Ed3JhSmJyeXB2SnQrVzNkT01PN3Q2dWRkc0RnYWlXWG1uS1h4c1d4VGhnWVQ5SU45QzY1V1psbXVIMVF0UUpOcFp6WEplam1oanFIeXZ1VlNvZVFVRnBvdUlPY0IzcHhWOEUzRVpBbWduZy93Y3l1UXducDdMZW5KNWFDUXMxUkRCcDE2eEl1R0RZU2ZtNGtydW5rSFFTdkxubi9FN0ZkL3owd0Znb3BGc3VBdWFnYzhBajZsVFQ4QTFNSkV3bFJEQUFBIgogICAgfSwKICAgICJjaGVja19pbnN0YWxsZWQucHkiOiB7CiAgICAgICJzaGEyNTYiOiAiYTM0YTUxYmU5YzlmMmIxNmEwNmE4ODE3M2I1YzZjNDkyYzk5NTdmZTAyMWNmNDEyYTg2YTE3Mzc3MzA2NDBhZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxOTEyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTRWVlMyL2pOaEMrKzFlb0owcGVXcHNOMnFEUWdvZHQwQjdUb3ZVdE1BUmFHc1ZjU3lSTFVrN2N3UDk5WjZpSHRVSGFYZ1EraHNPWjcwR3B6aG9Ya3NyWU0vL3FqZVpCZGJCcW5PbVNXZ2FnV2FLR21Ha2VRLzR4ZWd4VHVqR3VnN3Fzb1ZKZUdaMWIwNnJxUEIzN0k4N3VXd1U2OFB2Zkg3Wi9mcm5mY3Qvdk94VUNIVk5QNE1QS0tpMllQOGpibis0SzlvSHQyZnJ1eDVXRHY4VXJVelVybU9ya0UyeHM3Nnp4c0duVVMrZ2RNTTRDYUtrREJneUR3cll5VUVHNGhYZDhoUXIzeGhUK3JNTUJXNmpvMk5rQ0xZRTdxZW8vODF3NGMrQk43ekJzeXRSQlo0cEZEVU15V3FWcnp6NUFSeVdQeUd3bVpQN25HbGtGQ2lyd3ZpZUZPUnpHVjBZSGVLRWVMcGRWMVVydms2MlQyaE8weFNxcG9Va1FwQjRSVEQyMERWOUw5K1Q1ZW4xOHBrR0dJWWsyejRJb3krbVRacDhUSDJSblJTdTdmUzJUVUV5ODVrUW5EZUorR21hZTh6NVVXYTY4b1VKbFNETk11aGV2NnpXcEpxOEJMQTNTMTJPQnBUd2Vkd25HSlVjVVJwSk8vVjdKbU50Y3dIcHRNN3RrdEI0YkdwVkJMTTJ5QUpKRlREYXE1MjNzVzEybEdKQmRzR0RWSkFSUVBpcm9COEcrL1BMWHJ3OWJWdXdmMmJqSWRtSVpnNmRxOFZZN1N6S3Bhb2Z0bENkd2NhbVk5VDAzUWFjSkZrcXo0d3lhSmtxU3liWTF6NWdEQWEwT1dPNWdtbXNtZHZxMGxIQk1NYzEyUzBuR25YbUtXM3VsYTZXZnNESE9XdFZFYmttNVIxd240WVVXRTJzVHlqMGdVYmcxOEkweTJYeEM5T0hGS2t4WHlyRFkrWEIzazZGQ3JUTW5JblN3d2xpeWxkVVJ2WW1wcjQ1NHY1dnZEOHljb2ZYNXFIbDNMcjJXMWgvTXUvUlhBLzF3a20wdmczRjBad3N2RzltSHc4ZnI3Uk5GNWRENjNFVjJJU1U0d0RDZDNON2M4SHFGMkZkSEx4NTNLeEx0U1B3ZzNWRWZuRVdweW5xUFplTVF5TlVWZEJCbDNlc2pKa1l4UEtCUitHK3k5Y0J2K09PT3YxN0lmRUhNYmtYbmhVbFpZbFpZSlpidlk4b09JVmhmZkp5YXlaWEdYbEU2ZkxEclVvaEd0MmZHUnpERkZmd1JkQkV4L3g1clFWQ0hxU0lSME1sR1ZIa0VJVHBsUlQ3NUZ4U3lBbDhmd0JmZDVBWmZCTk9CRUtPTVA1dWM5STY2S2F2ZU9lcGs4ZUpnVmtCYzNqcyt0amYvTzFnaWRZMFJNNFAwVDBxVVR3aGVSQ3V5bFV0clFkY3B5aVVkYThVN3JGTjRMY1huZGQ5Wm42SnpOVkxmdHVpdStQY294K0R5SkozQ1Y4bXpvZ1dkRGttejJUZ2xQWE9vZitvTTBERzMrR1RWSjN6K1VKekdsWjFzeHgrZWc2YjNGUEV6djlKU1JscUtyZXNCWFNhRE91RzlhQnRWNDN0ZVJJRmNzTnB2dldpbSszZ0hBQUE9IgogICAgfSwKICAgICJmcmVzaC1zY2FuLWNvbnRyYWN0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjEzODA2YTdlMTQ2NDQ1NGUzODE3ZTFlNjJiNTZiMGZhMDdmZTJmZGRiZDk0ZDdmZGM1MzBlMmMzZGQ5ZTNkMiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA5NzMzLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTcxYVM0L2p4aEcrNzY4UTVwQ1R4ZW4zWXdNalJPQVlTQTZHRHdaOENBS2huelAwVXFSQ1VydXJOZnpmVXkyS0VzV1owWGgzeUFDenMyRHJxNnFQVmZWVk42bjUvZDFxZFZkc3pVTzRlNys2aTNYekVINnJNMWZ2eTNwcnM3WjJoU252VDVmM1JRV0FiZkJySDF6UkZuV1Z0NCtHY1BFK2NxNVVaRnBZSEltUUhrbm5uWTZjSUJWRUpKRXdIQ1d6a21wSHFDYk1JaW9SQVMrWUdnNUxkOStkYVd4Y1hjWGlZVlA0Uk9qa1h4QmlnM00wV0srbHMwSllFYVNqSWxKdW82YllTUERsTlJQTUNxNDR4b1E2N0p4eVdpc3Z1ZTM5K3lKRzhOdUM0My9EOWVyc25qS2xtTEUyYUtJRWpTNW9Tb09IQU5xaGdCZ1hFQ0dpNEpYdzNEbmtvL1ZSUis4TUk4SUY2bzd1Uis3Z0F4dUlFMEViaHdpaEVuUEtPZUZVd2orRkVVSk1DVWNzQS9iT0V1SWlsOWdLbzdqQnhQdUp1d0F4dlVIUlJtRTU4NVRSZ0NDaFhIZ2xCZWZVR2k0OVpGVjRpVFhjUHJQVVlCZVlqd2dMS3NURUhVTmFHWThvQlVJRTdsWVRvNHgySEN0d3BnVWkzRE9Kc0FwSUtvZWdvTkpyNTdsSWljRXhob203cUMwREJ3d1RneHlTaGlrZG1JaVdld3RGMXg1NXA1aG53VkVBcGFRWXF6bkZrYkdBdkk1NDRrNHd4VGcyeUhzREpmR0lDWVVESlpaRCthR3B1S2VHUldTOFlsRXFHalJQQlNiV0NTMElndXBNU3lFd284aGdqS2tXV2pKcXRRNVFFRXRRUklSNnptQlJVK3VpQnM0YXlxeFR6U0MrZGN4d1BYSG5vdU1hUEVubWhZd0NXY1l3ZGdSUzdYemdxVXNsSmlGQW8wdmhQTklNR3lJNWhudEJSbGhFSnU0STVGTmpwYUFIdERPYXg2QnRBS3FjUjRtTUJWR0pvQmd3cHRSeUFpYlVRKzZpcFZaeUV3eWR1TU9ZS3d6WmdwNjFQdERBb1JnRXcwMVJnZ2hrbnhMb0ZTQUtYUjZ4REFwQi8wQXFpZEthSWVtbmpZSkEwWXdnTEduU012d0dPVVB4SWxRSEdpaFloWWl4Z25rYzRDNGp3OXBFakswaEZCR0xlREIzNE8wL1Q0WGQxSFVYa3daLzc2TjFoOTF4OXBUbUVKcDI0UEJFcTdPcmRYYTl6cTdZMlRVN3UycG4xKzNzeXAxZHU3T3JkM2I5enF0ZzBERDgvbU9rNDdiZU55NXNTbU5ET2RJeEhCMnllaGNxa0hsbmlncTBuQjN4bVRWdHlIenhFTnB1dEtWTFFXRURaNGc0WldFdmQ4eGg2N0VSV0VCeG9acVFXZ3dDSnFBYkpTVWpITlJuVW8rRHBKV2laaGdVTDRadHdzZmpHU1hGaEc2M0ZrUkNJVElvS1hCUUpDUVFGQUFrdUNZZUpNTlZ2T3dleDNQUCtSalVoREtrbTJoZDNjK3FmLzcwNHcvclgzOWV3MlRRNjE4UXYvOVNGbmF0T05KNDNlQVh2UFI1eXhMUjhMbkwrandrYjQ1ekZnUkp3b21VSVdjTkJqMExiV0NXcVNnOGNxQi9BdjJna0lVREZSeG9CQStFd0FuS1lnS0Z2eDF2VjVlRk80ekNhWmlWMkFZRzV5aXN0Y2NzZ0RDaElUMlBpbXNPSXVjV09XY0JwaEF5TXFhT08vWXZUd2N2Y25mdWgzcFUvaC9OdGlnUHliOHBkMUNIZ2RSUFpudE1HYzBJeS9ERnRxZytocXFybThONXdwL25mR21xaC9YdXcwTjdhZWpkb1h1c3E3UjRXZnY1OEs5ZmY3bGNrZ3p6YkRTWUFQdCtkOWdWOTd2RGI1KzYvUFJ4MzlIZmZWTkFGMk54RmUvWmNBbVY5eCsrS1ZoejJIWDFRMk4yajRmTEtrY1plajdxQ0o2ZlVHOEovK1NvZi9rSVpTUkR6MUI0K25UUUk5OUNZM2R3TzlPMG9ia3MwV2VEbjRFNWZXUElUNmJvbXRDMlZ4RXo4a3pNQVpuM2dHZUQxdTBrNUpVNjREbzdjV2oybFErN0VSQm12a0FhNFF3aGpJaStqbTkySCs1N1QvY1RCL25FN20rbWNZL2ZWM1g2N3krK2FMdW0vdjZpeFc4ZzNGK3YwMVNISTF1OTc4YUpraG01RE1DblhKL1k1b05KVC9PekVodkJscUc1OXFZemIrRjZkTEE0NFEvaE1HNkNUS3diOUJySFpKUDMwS1ZvbmJiQWNmNlMwejlCN21TWm53M21wN2o3c083cXVweEk5bmJtQnB0OGdNNU95KzdiZzYwL1h4WndSbVdHMWcxOXVlbE9OdmtGdWhTdHRTMnE5dkZieVBXV1MxSjBadTFDMHhXeGNLWUwwNWtvOE0yMm14am5JNXVsaWE0dHpPQXl2SW52eWNlaXRCKzgzWTRyVDI1S0phSHpFMmgyS2pDNjlsMVJ0bXM0UUxkalRpS2o2NGE5U09yS0xoL2c4OU5yTEYrbkZ4ZGphdEQwNUdWaWcwWGVBNWVoTk0wV0liYzNzN05SZnNiT1RnemNROFN2bU1HOXdYSURHUHpiTCtTcWNwbGFOK0lXSVRESUI5d1NoRnk5M1lTbUdaTmlNbU92cE9sa2xaL0JpMUE3UGtMUWNRRjV5c050WnIxUlBtQ1hJSGIxMkpVQzNXejEzaUFmY0VzUUtxcXVuQXlFbTBsSytINGNMSktmeXUzaHlhZjlkRmtVbWRqc2pqc0l4NjlKY0xET3AwYUxVRzNMOGVFV3BRTWh1Y211TGZNQnR3U2huYWxDK1kyWjYyMy9MM2xyMi9Jcmhaa3NGbFZsVnpRN2QzVit6UGdydWp5YTVBTnlNVkpQTnV3L3lXell0cGVqdDk4WGZ0ei9qS1JqeTAxbXlTUS9JNWNnOVJGT24vWDQ5UTVOZy9PbUtvOG0rWUNjbmRSMjMxN04xK09qN2N1RUVqd2ZVSXVRV1IvUG1sOUpxVGRhanRocGNLKzcwR3pUdTdmanE0cHZtR1RQK2xsK3FqWEIrUEpxUlVFLzNaVERZSklQeU5sSnRTN045TW53MExjNG5TenlBVGcvcGYrV1JSY21KMzRZVWZUMnFYRmtscC9SODVOcnk0MHJpMUIxWC9VbTRXSzI1R3VFN3N2MUs3L1V6ZTVXem5xRGZNRE5UdWp6bDBrWllYZE9mZnd5bzVORlBnQm5wNVMrdUxydTlwdUg2d1RQQjlTclpDNS9BREI4MmJNQnRkUlY0VXk1dVh3aGhhUG5ObHJpcFVQTVNJcUZJWW9hYjROQmtiT0k0TWR4NDZ3bFdGbU1BMXdKS1cwTVNqb20rcGNFZDd1OUxZdjJNZmhOM0pkbEUzWjEwNDJDa0JpRkNsSndxNTNnUkJPQnNlZEdDdzNsTnJET0JKVVlJRDVFRjd4eDNCTW5CV1VJYWJnTW95RE9kRVZkYmJhbUttSm94MEdFTmNSUmhpM1R3bGdacFk3YThlZ3BOUnB1Q1RzU2xVOWZSQ0tzRExNc0NPa1ozSTlKTU92NmwveDM1NjhaLy9IWnVHNVZiTGY3enRneXJNNjN1RXFaTHo2R1ZlRWhyMFYzV0puS3I4NVovdXNxRnBVdnFvZDJCUnRSdDdKaDVSNkQrNUFNcS9CcFZWZXIySVQyY2ZYRDM3TzdkMys4K3gvTkpHK2NCU1lBQUE9PSIKICAgIH0sCiAgICAiZnJlc2gtc2Nhbi1yZWNlaXB0LXRlbXBsYXRlLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiOTJiYmY4YTg5MWM3ZWY3OGRmNDg0MzA5MDEyMTlkOGQwNzA3M2NiYTc0MTEyYTMwN2E2ZDhiZGVjNTA5ZThkZCIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA1NDksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMjJSd1k3Y0lBeUc3L01VS09kMkp4QWdzS2MrUk8rUk1XWkxSY0lza0ZGWFZkKzlKTE90VmxXUC9QN3g5OXYrZVdGc2lDdTgwUERNaHBETEMzM1BUNWozbEZmM1ZETkdTTmYzNXpWdTNiQ1MvK3dKWTQxNSsxSy9nVkQ2T1NobFRKQldPeDZFbnYwNG8wY2JsQmdONlNDQ2tEek0wczJUUlRGWklkMDR6YVBvWGZnRXFrdkRweU1HbEJZRFlGdHEzZ3ZTVXVoK1VvNWsxa25uaFBKVHgxa0RwT1JFTXhrd01PR2tyUENkckV6QVI2ZUtzRzFVam8vd3VrTWx2TFlTNzI5LzhtcmhPR2xGeG1qclVEcUpHa0FHRUU1d1pWVzM0SXdpNkpFYnNONkMxeHdobUptYkdiblY5a0VKZTBvTHBGVHBUaVcydCtYQWRtWXJPNTJHTFM5MXY5MEsxZmN4L2xib1Iyd0xabjlzZmV0dFRoSHpla3ZVeUMvUVB1cmVMU3MxOE5EZ0gva3h6a2Z4ekZUb2xrdjdUM1hMN2J6elYrb2thTVJpWlYxamZlazdKTmIzN1dsRFlya3c2TG56SGRKdytYWDVEVlVOYlhBbEFnQUEiCiAgICB9LAogICAgImZyZXNoLXNjYW4tcmVwb3J0LWZpeHR1cmUuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzMDYwNzA0M2E0Y2E0NGU0MjAyNGI2MzY1OWFlMTA5OTNjMTRjN2EwNGU3YzU2ODUyNTVjY2FmZTRkM2ZiNTVjIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDExOTQ0LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQThWYTIyN2pSaEo5OTFjTTlMQlBJYWZ2N0I0Z1dBWVpCUEFpbXgwa2srUmhzVEQ2YW5OTmlWcVN5b3dtbUgvZmFsNWtXVnB6c2hicFBQaEdTZWZVNmFvNlhVMzY5NnRYcjFZLzJUdS8xci80dWltcXplck5LL0pWdlBwTjNSWkIyL2I5ZnV2aDRzcFdtMVlYRzEvZkZHdDk2MWZkbS83dVcrMTBxK0VOdjhQZmNPVTZ2bmo5Tm42aXVkT0VpemVDRU9PdHBkNDRsVmtqaEJFK3MxUUV5azFRRk92TWVlc1VFOHdJTGpuR2hGcHNyYlJLU1pkeDB6RUI4dHNpaE91M0RTRC9zN3Z3NnNCQW1aUk1HK01Wa1lJRzZ4V2wzZ0dIc3NnanhnV1FCT1NkRkk1Ymkxd3dMcWpnckdaRVdFL3R3SEFFQ0M4WlQ2endTbHRFQ00wd3A1d1RUalA0a2hnaHhLU3d4RENRWUEwaE52QU1HNkVsMTVnNGR3Ym9nZGRwRkV3UWhqTkhHZldJTU15Rms1bmduQnJOTTBjVkVTN0RDbGFCR2FxeDljd0ZoQVVWNGd5UUlTVzFRNVJDVUFRMEs2S2xWcFpqQ1hCS0lNSWR5eENXSG1YU0lvTkQ1cFIxWE1UbHdTSDRNOENnREFNSWhvbEdGbVdhU2VXWkNJWTd3M0JRRGprcm1XUGVVbmhUWEJwdEZLYzRNT2FSVXdHZkFRb21HY2NhT2FjaE9RNHhJYkdueEhDb2hReENjVlN6Z0xTVExHU1Nlc1ZqdG9teFFnbUNJRS9uU1JHWVVhUXh4bFFKbFRGcWxQS1FHa05RUUlRNnp1Q2lvc1lHQlhFclNMbUsyWU1JakdXYXF6TkFHeXhYZ0pVeEo3SWdrR0VNWTB0ZzBhM3pQSlp0aG9uM0pxT1pzQTRwaGpYSk9BWTlTQXVEeUJrZ2daVlZXRXFvQ0dXMTRzRXI0eUZjemtPR3RPRmNDaThaUkUycDRRUStRaDJzWVREVVpGeDdUYzhBTWVZU3c2cEJGUnZucWVlUUZvSkJHaVdJUUI0b2djcUJZS0h1QTg2OFJGQk5zS1JFS3NWUTVzN0xCa2xJR0VFNG84NnFBTjg1Z2NBZ2ZScEJPWGtqRWRGR01JYzlhQTBNS3gwd05wcFFSQXppWHE4NnZIOE5IZm1Qbnc1OUQzOTlwOWRGdVkrTnI4c3RHTVVEK1E5NjNWa0lUUWxMY1kveCthc2p2L2kyMm9UaTloaXNycW8yTkVkWDRGbzdPRkdwOStCVkIzaDR4WUUxM0JUdTJCc1c4WWRGUEdJUm4xakVLeGJ4aTBVOFl4SGZXTVE3RnZHUFJUeGtmaC9wdkdUNDdmUEJMZXlwR2NDMTc3WHg1V003Z0t0VmZadFdXNzg1akNaTjJzMG1xZEdOVDExeDY1djJhQkRKQklXeGd5RmlwWUVKeERLTGpjTmFZQUZWQUdtSHRjZmdBQVFhVG1ZWkl4eGFWOGZHQUUrUWt1ckhLL0VrZWUxL0s0WkphZ1ZOWWd6MEZ3VithRUxQb2FGaGphRnhJQlN1aUlOdTR6S2NGbTVsQzEybXR0cVYxZG9BWU9tam9NWld2UUZlLy9EZDIrVFhkd2xZakVyZUkvNzZVMW1ZUkhLa2NGTGpTYXltMnRYV3B6Rm8vN0ZOKzVYcHhqdk9tUmNrOWwyZ0RGbWpNZGlDVUJyc1VRYmhrQVViSVZBK0Voa2t3VDI1NEo2UURCS0tDZFRKSDJIZFZtVmg5MGVrQ2t3WUc4OWdLc1JLT2N3OGREZFVzdU5CY3NYQkxiaEIxaHA0bTBSSVp5R1dhVmY0UEk2UjVLR01QbDhkLzR6ZnU0SmEvZWliWGRrK2JBeUhEZWJiVWpmeDhxcHFrdTM5N2NOMnNob0gzdE5kN0oyMjk1RGZ4NXZNbzNvYzk3bDB1Mi92cWsxUzd6Yk9iNXZIUy9Nd1o2K2dBUVZTQ0tjSVlVUk9qT2JhK1ExTTRJV3ZUOG8raHZMemo5OUhBQWo4amQ3ZXYrNURmWDNDbTUvZy8xWFg5dTdyVFJWLy9NVVZUVnRYWHg5dnlZOVg4cWdsbjVEWnN5YXgyV0JMcm5idGswSnBtcVhrckRTZm9mQ01NaCtoZTNFZnBiZ1JiQkZ4U1hmT2VYbUZIZS9TTXUvOWZxSk1VNUhVYUM1bGtTcnZJUmNTTS9qbFJLNGl4WXlTQnNMOEFEeTdzTzE5MGxaVjJVeG9Rak5sYWFUS1I4aTV4Wmhkc3pmVnh5ZWw0SlJtS1VwcWVua3pEVlQ1QStSQ1loSlRiSnE3RjVUVUV5NG96T3JFK25nTHFMQzY5Vi9Zd3dTZXBaMU9PUE1qN0lYbEpRYTJ6TkwvR1NvSDZpWEYzanF6bnFoTk1vdHhSSko4QUp0YkFPd1p1N1lvbXdUbTNHWkNpVWhwVXJPTHBUeWl5MGZZMlVYVmhpZnhzRE1oQ0ZxYlhDNW5KTXA3d0VXRWZDRXpoTXd6SGgyNDhnUG0zSElBSFFpWDMybDduc1cyV1lBM244aFViYVV5cWNVY01vQW5IL0VXa0dHcjlZMnY2d2twTEV2WlRDa1p5UElENkJLQzZ2MjJyZWhFaWZHNGx2UG82Ym55RVhNQk9TRVVrMUptYWZ5ZUp4L3hGcEJSYk5weTJvcG5TVWlrNlkxNGlWeHM3SzV1ZlBQaFNTRWlGVGZiYnRiZ2VDNGJHMG56VS9BbEJEYmx4RUVWeGVNWG1VVlRVK1lqM2dJeXRucmp5NWZOVWsvNUVqbHFtdkpsekMwU0xlbHNiVkZ2N2RTcEx1VXplVnZIbEkrSVMwbjUwcmc1czU1eDZGeE0xRzVYdUFrM1lDUU83clBvaVV6NUFYRUJLYi9Ca2JCNlVndUNOU1F6T1Z2SGxJK0ljMHRaNzVxcFhiUzc4WGU1ak1pU2oyaExTRWk2QStETENPbTVGcE16N001SjYrdDFzUWxWZDIvNTVYYWUvMG0vK0M1VWUrM0s0OGMzcHpvbDFQOHM1akF5NVNQaTNGSWFHemZ1YWR0V2N5Z1ppUElSY0hZaC95bUwxay9mS1lDdGdzNXpsanRpeXcrb3MwdHF5aHRiRmhEY1M5ejdmV0JiOE1adisybnlRVmZzV1R0SGZucWVmTVNiVzhiSFQ5T0ZCak5qN05iTGRReEUrUWc0dDVENGJIK3k5MmM1WGtlV2ZFVDd2eVZjSGY4dnh5RG8vRWw3cVRlM1R6eHJIeDVjdzR2UGVkNytidiszWDk5UHpJR1lwODljb2UxK1c3emU3di85b2MwSG1PYzliWmk2UlFMQUY0VVh3Zk1lNUhuQmRYZUlibXU5dmRzLzNTNG9ub1V2aWZLSUpSL1FuaFZ1bkNIcXRYZUo4N2IvUDV1bmgyWTR3RjhROGhsVDNpTStLK3p0M200MURFTDExSTNsaTRwMHdJODNsSjhYNGdkZHRMVnZwaDh5a3d0aUhBbnlIdWlQZU1sVi9PM3oxWDhCbXJ2TzRhZ3VBQUE9IgogICAgfSwKICAgICJpbnN0YWxsZWQtemxpYi1wcm9vZi5qc29uIjogewogICAgICAic2hhMjU2IjogIjZhZjYyZjg2ZjUwYWMxODVmYWI5NDE2M2MyNGFjODE1MGVhZDY5ZTYyZjhkODI1YjBkY2UxZTc1YTVhNTdiNjgiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDkyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTMyUVRXN0NNQkNGOTV3Q1pWMlM4ZmlmVmU5UlZkVjQ3R2xUQWtHa2JFRGN2VTZncTZxMVpHdG0zdlBUWjE5WDYzWFQ3K205Tk50MUkrUHB2WHlPTFkvbllkeW5kaHE1cDZGN3RGMS9xSVo5eVp0Y3VKLzY4ZkE4ZlJCYXR4VnJReEFUWFZLQ3ptZnduRG1LUlFqRkNRb2FKZDRrcnlPamptZ1NhQTlZVTVRbVcwZk4wNHh4R2ZyMGRpVGVQV2hVcTF2Y25OUmRsWDRvVXgxZmExUGI2dTNvdU92eWpEVjkwVENVWE5XWFJYM1lsNHZ6TWdnLzVlK2lFUnZCTzFUUmVRVUZMVU9KNGpFVE9JTk1PWkRObkFpSVlyR0JvTmJrckFzbXErb0YxU3hCci9lODVqeWR1aG11N2t2OXdIWjV4ZDlrVWY5RFZwaERpbG5ZMkpLOEVNWmtGSWdRazBQcmc5Y2hRaTVXcHdCU292TGFldTJUaWVBOFc4RUhXVDF2cTl2cUcxekxML3JzQVFBQSIKICAgIH0sCiAgICAibmF0aXZlLXByZWZsaWdodC1mdWxsLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTY2Mzc5OTRkZmRhZTQ2YTZmOWFiNDQyYzJmZjliMjU5MjEyNjUwYjM1ZWI5OGQ4OTZjNWU4MzdmMDFjZTJmOSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMTIwOCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0ErMWNXWFBiT0JKKzk2OXc4WFZER2FSNGVsL1c2eHlUMnZnb3g1bXAzYTJVQ2dSQkNURkZjRUJRaVNibC83NEFTRWs4SUluMjVwaXRaUjVpbTJnMkd0Mk5Qb0N2K1BYazlOU0FhVHBEQzR3ZWlsa09pOEk0UCtXc3hDL2tFSTBLekZZNG5rRXVIaHMyc0QzVEFxWmwzWVB3M0FIbmxqdHhIUkQ0emw4QU9BZkFVQzlsa0pNVkZpeGhOc2V4ZUMrQmFWSHh5eG5sR0hIQk1JWWNSckRBTTRaaG02YkFpR0hlZng3alBLWHJKYzc0Ykk0enpNUXNOQk1VdHF1R0pmMWF2SlduQkVHNUNLdm1CbE14WFNvbDJuRVF3MS9GcUZ4OFRuN0ZyS2hZaWIveTRteGxxWFdJd1FlU1NSbU1sN3NYNjVFbDVsQXVZY3RJc3NveXlwVlVSZU94SEdCeml1S0ovQ0VVOEdsQzZCbG5FQW51YzVPb0NVaVdVTGJFc1JsalJLUXc1MHFTM2J6blBZcXozcE5hTmpWbGIzQ0NhSm5TWlRRcEtDSXdQWVB4a2hTTlpUTXF6UHpYMDdmWHIxK2F2OTJhQUFEL0ZKVmNQR1ZHemZaeHcxOVllSW0xWWhzdGtpS0g2QmhkV1NrQXVrR0FMUURORU1TMjZRVEIxQXg5RjV0ZUhBZFJrR0FFUTd1U281YkNLSEtNbXRvWEs1Z3pYQlF2aFIra0pNUHZNYUpaTEMzaEFiQ2RydXNmOWNPVmt1b1hVbkRLMXUvSWtrZ1BzWGF2RlRnVmJrdFoyNjVMeU5IaUhZeHcyamE0Y3F0ODhsQkdtR1dZNDBKYWZML090dTg5OWhSZENEL2hlTDV1ejh2WHVXSjFKM2VLR084YmlPTmxuc3FSdHJ4OXB6M291Ti9OazFyQ3FsbFNuUmExZWtSMG1kT3Myc1BLY3ZpejhlTFlTd09VdjFOL1M3YXVuMVVUaU9Vc2Fabng5eUk2RW9RdkVKSi8zZE1IbkRWajF2WUY0WW9jQ3Fka2Nvbi9ia25iWHJDZ3hkbXFSNlFqYk8xRXFlM1pQMTc5OC9MaTl0WHM3ZnYzSDE3ZGRiUlN2N0NDYWFuZVdIQ2VGK2RuWncrb1kxQ2o5OXJqaTJjSWMzbHpmWC94OXZyVm5menQ5ZHMzUjhRUmRzMFNNaStyc0g3R2hEckpFazgrRlcwYmRTMVYvZnZZNVcyUUpad3J2c0xlYy95SmRwMjIvck1mUlA5V0xLRHRldWUrTjBWVHp3RTJDaUxzSStRZ0s0b3Q2Rm1lUFJVL2t5UzBMQzkyYmR1eEF0OTNiRGR5WE9nREswQUlpT2dGRGIxSXQyV2EzbElSZ3RaS1VjazE1YmNpYXUweVMzTlBpSnlWaVloMnkyaUVlMXREa1NTUXBDWEQ5d3ZCWTBGVEdVcW5mVDByVzcvQlhNdERoazdJRjhvR0M1RXMrZUlQdmFseXl2akdjZlFVaGFnaUtnLzQ1ZjcrZHBBZkdUbG1oTWE3WUwwTHVrM0dKVUpDRWMxbFdob3k2VEcwNUR0bTlza1JBUVprc3RiNmkrRTdjN3ZsYnl1OUJTQUFMdzd0bXYxNmxWVVRSVFNWVlBlWHQ4L2ZvQnFacklNeWZhYnNJYVdpRUh1bVhFZjNxYXpheU9qazM5ZkpCVU5hTXNGY3I5OVUxanZGUHIyaHZKU0xkUUZZNmhXeXhFdFJOS24yd1BXdXlEQ05NUHg3aVl2anN4NmQwM08wVXg3VmllZ3lTa2I0K2xKc0NmeEY3eld5TTZLZmJ4bFprUlRQOGFzQ3dYVFRkZlJ5L0Vad21NT0lwSVFUdkhkeE1hTzVOcENvMFl0Mzd3ek55TWVCZW9YeFRaYXU3eWpscjRYVXhib1F0V0RkMGgxWENvZU1sL25UOXFKbGo1dnhDWnVSWTdZa21YS2pLekdEckFrMnlvang2cXd4YktaMGJneDVmMXRQU0l2MzMxalJ0RnppSzFtaFBpRi9xZnAySjVwc0d3Nm1Da1h4N016VW5rMVVmMmZITTNKcitycGcvRllTOEdWK2VENUo4STNtYWxXK2gyY2RRTHFKQVBvOS8xd1pWNUFwcTFTSE0wWGZPbWQ1NVlXSHhSY0JWWFNCZnlxNVlSa1RmbGpzQXlRL1MrcGRlM3RZOUIyZENYUHlJOWV3S1IxTmh1ZWs0T3lJYXd3ay8xbjZydXVWZmM2N1dVVkJPSmVuZWtmSWo2N2k1RkR1YjQ2Mkttb2p6b3BkTXJoTVN5bkJhOEtLdHZQS2VsQW0raDNwUmZvWnJ0dWVwRkpyWElydGVyMEo4RGlCWmNyTjdVQ0gva2hCWlNURkcwYkxYR1ZjQURyWmRETjZxUTZOZDVMZFpMS1N1U0tGT212ckh2UUltMTBjNUtvSXJxbGkwampYN2xKOEtERGJ3MEVzUzU0NGlaSW9rY20xWDgvc1R1T3FEUFN5VXBPeDEyU1BIYlUxVDVEMm5HbDFxRFlXMFZFMnlvTTNEQ0o4MjZsMkhMZEZYdFVHQTA2bFdtbSszeHZMSTNUaGJSbi9WVEc4VENGWjZpdElKSWV1OTdYZHBxNk1hRytIemhidm41OHRjNzUrU1poK2VqRVpLYVZveGxYVlEraUtQL0lIM2h3Q0c1YW1wOWwvanFBdFEvN1VFdmNLbVdQU1ZqWElGY3oxNHRaaDRvckdrcjBkNnJxRHZhY3VacTAvMDBPMmJRVitFQVBYR3I2V2RubjBwRlVkS1ZIa1djY25kWE0xYU5WQm9EUFN0Z25YZFg1ZjlkMWdvVDFoMWhPZlZxVUt6cXBibHlURlgweFk4b1UyQ1ZXZTl5VW5sYloyRVdMYXVDL1oyN2h4SllpVzZ2Rmt5TE9QLzlVZVAxeVoxVmVJejdjVUVUM3pFKzMwZ05jN3ZlalZkMXg1R2pYcC9FaXRibjhJclpUeVRmUjdwSHo4WDlrVk9qZi9IbDcrWXZnS0RrZlJBWDU0aUh2Ykp4R2NJTWIzQm9IV2ltdmF2YVNQZTBZKzd0VmwwNVZNSnVvdzg5QWNQeUo0Zk5jRTF1OWpCbWV2STY4TzNiUEhlNUNmR0I5Ukt0S1Q2Q0VxQVk3RXlUYnhzK01semVYT2grbUJVOXRqSWJXdjA4TWVlS0x6MWUzMS9zbm1mMlZTc2VleW1JaTZkd1NvakFDVkVhQXlBbFJHZ01vSVVEa09VRWxjRVpFU0ovUWlLN0U5UHdZK2lsR1l1RFlJc0pmWWllMVlpZTlFL2pSRTlqUzBuUWhNZldBTEx0WVV1dUxSQ0ZBWkFTb2pRR1VFcUl3QWxSR2dNZ0pVeHMwNEFsUkdnTW9JVUJrQktpTkFaUVNvakFDVkVhQXlBbFJHZ01vSVVCa0JLaU5BWlFTb2pBQ1ZFYUF5QWxSR2dNb0lVUG0vQktqVTMxQ0pjWTZ6V0NUdjVzbHg3YXpMbHJOMlFDdGJ2SXE2WkZ5V0hFYXFVMmwyTzFzb3krWFcrYmREV2xqQUFWREFzL0FzWjl1SmgwQlo5SFZncTNQNVByaUU1czMvRTZ2VXpwc0R3Qzg3K0VzSUxHc2EyN0hwT25Gb09qaXd6Y2lLcDJZSUlpZkVFWTd0eU8yalBCRE1hRVpFeGFvKzl6T3JicTRsdXdBang3Tmp5NTQ2dnVzRWlRczhqSEdVV0hpSzVNY1dmTThKZ0JXaUFQckJOQUJPRE1JSUlUK01RR0xiTVBIYVNKdDhoWVk1MzhiSGJyWGQ0QS8yTjYwUWczeXYxK0orVzE5cmNjNVhIYVJLSkhSb3loT0hGRmRsbGJIdW5QRnAzaEZGVUd4R2ExUGU3ektxR2hqZGkxV3pQNG1FL2pzY0pPNEp6ckVwQlZjTHJEZ3dtS0VGWnBJaXBjTFBUQldaZFR3NzdCUmNTdWdycTdLSVlVL0RpV2RQYk9CT1FudXlvQVdmcVBNaXJMNS94U1paSnhuc1lmc1VLYlZiT2lFaUQ0aGV1WWZETWRvekNaYzM2NDlwdFRySmo0UENROGVCbmg0TzRnQkV0aHRacHVWWTBIUWNLeklqb1RzekRCSm9KM0VZUkQ3cWg0TWVVc21BNmhKTHB2TGVldTh3akg5aklwSGZ5RzVSdThCOTE4YjdMMitOMmtMcUZPSU5HUUN1cXVqRjNpeUtUZmJWZXRyMkVxdnlwOGJWWm85bXcwZmE4RW1LN0FhOVdiNkFoV0wxZDduQmpHM0Nsb0ZvbDZGcm16bGhHSGhCWXBzWVJzaDA0c1F4SVo1YVpoU0VDTHRCN0x0Z0E2T29lNTRXZXJFdWVTcUk2bGxLRW96V3FIR2JKNUdMOU1QZHV5WjA2Nm5ZcHNtODBTd2JYQ3dEODdzYSs2anFyZENMQVBMaUlMQnc0THF4RlZ0dUFNQlVQTUlod01rMEJMWm40dzRRVXpnWHIwOGNteXNhQ2dDdElrQUxrYmJiaW5VeE9pbFdxRDJwUXVCQjN2NytuYngzVnZmSlRUbUVhL0Y3RVNKRUNTZm12U2VWY3pRL3RlZWZBM0R1MlA5cXlDUVNVVm1vYTJYRmI5MkJucTZ6VmthVTRSb3lITi9UOXZiVGErWnBJZUhKR3VwdHNhNnZEZk8zNytKejM4VHY5RWhaOWh4K0dvUGZsUHdtZVM4TjNLdlNwUlZtTVZ2UFJQbW5QdVdvdkcvN01jZHREVENqV2JxZUtiaWZLT3BUVmVoc3FhcWVaaGFUSkpuaEx4WE91RGV3cStRUVNoSWZXUmlKWUlVak4wd1FFTkhFODVBRnJDa1V0Wm9iSjY3bHdBUTRBZklDeDNlZzdkdGg2QVBid1lrZlZaK01sRGdXQkZWZk1FTjVPWk9ueVE2b0RrQTIwVngwSUp1aHFlTlZRdzM0Y1FOcy9IanlINlZXVzZuWVVnQUEiCiAgICB9LAogICAgIm5hdGl2ZS1wcmVmbGlnaHQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIzYjZiNjdhMGI0ZDUxZWY3OTFlNzc1YjUyOGI2NGFhNWE2ZjE0ZWZmNjI5NzM3ZTY3YmFlZTdlMmY2ZjYwNzYyIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NzEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBN1ZWeTI3Yk9oRGQreXNDYjI5bFV6VDFvTC9nTGdvVVNOTk5OOEtJSE5wTXFVZEZLcWhSNU44N2xGOXlrZ0p0Y085T25NZVpNOFBSNGMvRjNkMFNuS3ZVSHRVM1gvWGcvWEo3RjRZUlAwUlhWM3NjbmxCWEVNaTg1SXpuU2NxU05IMWdjaXZZTnMxV21XQmxJZjVoYk12WWNrcHFJZGduSkVob2Q2Z3B6NER6Ujd4KzZBS3FRSUFhQXRUZ3NSb1FibU04cWdIRGE3dkczbldIQnR0UTdiREZnYXAwTFVYd2JITEgrQU5sOWM0cWlFMmtreG1HWFVlSG4vUk5wOUZHektXUXNzeEx3eE9FV2lWQ0c1RUFidEtrTHFYQ3JOUkZ4dlRVUzZUVGpZUENDMFJzQXNJK29od0pyWjAxcUE3SzRTbGo0dEozWCs0L3hxQjlDTDNmcnRlbUczYjQySzFVTjdxdXFWZStVeGJjK25SYzI1WUNHdFNKUm1VOU5iYmEyWEFGRE5RR2hudDhtbndSVjhtOFppclhaWmxpbVdVNjFXbFdNclloRTBxR1ppUHByamp5NVFUeGZHcEdvdysyUFUvdTBsRUxEZm9lcGphWHI2aGNhVXpMTU16YitqYldPTFFZMEs4MEdoaGRXUGtuZFZzVXh0QTFFRzVYZ2V4N0JEZE44c0xEZ1E4UEE3VGVSb1lQdHNHWFcxZlFsbTBGL3pyakZDQ004YjZYLzA1NGg5dmkvdENxZVFuVk5UME1xQis2bWZXM2svbWI2YnhqUWpPaWIrL2FuKzNiLzdKei84bmVUUTB1WGpSS1ZOK0I5OGFGZnhyREovTTVYdkRpWE9qNUpDSHhGaW85a0NDTTdhUnEwL1pkZEExMFkzMmtVSFd0TzFTMmdSMVdHbDJBZVpSeU5xcU50c1pVK01PR2k2ak1IWDRQUE11blZwUXhoVXBSR1MyeHpxUlJqTlFrejFYSzBnMXdNSmsyV1NyQU1GR3F2QlNGQUY1d0tRdkdCWnFpUHFvbnFYR25vamc2a3RCK3JCcUNGb3l4azhoOUgybFJTVC9Qcm8zSWp5NGZTQkZ4ZDRoTTdxT0UwdW1JYUVZUytBRVYyajdNNkJLelRTRWxxWjhHRkRua1JrSXRCRmZjR0ZuelRQS1U1eG1yTnhuV3N0U2x6RldHNWFZd0xGWElqWHdEL0x5cHh4Y2c2UWMwenU3MklZbFJxMGQvK2x2aU0vQkl6MENjUDRYZ2dLM0N5bGlIL2lyVm52NW02dFBGcCtRcS9SSDk2RW1pSjdsNnJ2RFhaUEppcXduZFRzam56Qk85dWZjbVcwR3JMVDFRTHd0ZjdLL0t4czFiUEM5K0FVR3htNUZQQndBQSIKICAgIH0sCiAgICAicG9zdC1yZWFkeS1uYXRpdmUtb3V0Y29tZXMtY29tbWFuZC5weSI6IHsKICAgICAgInNoYTI1NiI6ICJjZTg4YWNhNWUyZDZjZDVhYjc1MzM4OThiYzliMjQ2YmQxNTk0ODJjNGFjY2NiMGFmZTRjNDUxZWU4OGY1N2ZhIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE2NTUsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNFZVWFcvYk5oUjkxNjhnL0VJSmtlVzRXTnZCZ1RkMGFMcmtwUXRjYnk5RklkRGlkWHdYaWRSSXlvNFQ1TC92VUlxY3BzQ3dCNXNpNy9jOTU5N0paTExxakxDbVBnbzJualVKdW1jZjJOd0twUnNPZ2JUNEVsU2dxMjRqYnF3V0h6NnRMMWRpVDQ2M0RGbWxqR1lOdVZpUjBzY2lTZFk3RWx1K2gremtTYk52VmFoMjVFUnRsZmFDQTM0bWtET3FGcFVqVFNhd3FpK0VzellJUTNBdkhQejVoRU1ocnRickcrRzdxaUx2UmV2c25ueU1hdzFYTUs5NVM5V3hxcW13WGFoc0ErSE54eHR4RzNOeUZEcG5TT2ZDd0s4eWlkSjc5dFlkWXdHYXF5Q29ZZS9ab2dWT0tBVFpJT1BRd1hTTEIwK3RjdEVQN2RFWlU1R3dtNXJoR1FhK1NGWXhXVWVWZFNncDdOaUxqZTJNUnVVTkJZV21xQ2dsYm9NNGNOaTlOQTE5L1BQNjQ0d2JkVXN6Ynp0WFVZRytjYXh1Q05sbkZFRTVPQTZvYUZDNlFCbHcrVTlIUGdob053cDRvYXV3bmt3bUNUZXRkVUZFTkFJM2xQL3RyY2s3VjllOEtaNnR4aXM1WjEyeWRiWVJxdVhDazlzejJsczAxTmh5aEVzOE8veGpkZjM3OWVmOHMxMlJabFFVOG1EdnlKUmJyaWxodlpSc3RucjY1dnpOdS9uNWZENTlRSUNwb3diS2ZTRlRONWNKNGk5ZnAxS3Noak1kM0ovSjJYNCswMVJ4aE1QUDVCbHJ2STJZL29ybVJjRnlMdk1kbUlIYjhsRis2TUxPT243bzQ4aUYvSTJVQTNYazJVdUNLZndxTjNPZG1Ya0MxWUtmK2NqbjZhN2J6SkM0ZFVoME9zYWRuZGcwN1YzSTdDbExiRXVHM0kvcGJ6cXVkVG5JMGg5a044N2VINjh3R2pWa2owL1pkNzFMc3l3SjdyaElCazRNOWtVOFVsam5FVGpVdkp5L3pZVHlBTnUzNkFaQlhUaDFXSTczSWs1SE9qLy82ZWUzNzk5bkVQSlcxTkdGT21TL0RNL3ZGazZ4Si9HWHFqdTZqSGluMHZaZGZDQVpUZHd5RXFUb0o3STNURUEvVEdYYVArdXVhWDM2S0h0R3NKWUwxcmtjYUZqMmI4K0F5TVU4bDNZVEdVUzZWRUV1UnY0VnB3OWpEK25wRXY4ZXJLRUN5R1lGcGpGQ29OQ1hYQnJndUtkU0FkVzRFQ3FZNlBJMDZlVUptM0praFZ5c1hVY253N2diTUtpdUJIMTM1VGo4bzlMTG5pa1JEN09JRHpocU8rVDhTZFVlS2c2RFRnZTVjTVV0aFhTOElyTTRFdFp6cEZsWlljaGgwcmQ3MFB0TzZtWCs5VnYyMmdKcGZuMjhXK2hlK1M3clY4c2Q5cDlJSlJxYlM5WEd4SkZOZjhNT2V0NUpaVTlVK2NyWFNYMW9ObVJncmg0dTJWUHZXa2ZYLzVYWnR5ZndqKzRyd2xLNjdJKzRhc0EwV3Z3ditNaW1ReTJ5TStNbVEveCtrNVJWclR4RTRkaFNTbGxSbGtZMVZKWUlkakd3OE12UkIyb3U3em1rOHl6NUY5ekJyc3QzQmdBQSIKICAgIH0sCiAgICAicHJlcGFyYXRpb24tZmFpbHVyZS1oaXN0b3J5Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNTFiOTk4M2QyYTgwNjI0MGY1NjJkY2I5NTE5NTVmYzgzNjBjMTgxZTZkMDhhOGRmZGNiYTk1MzYxYzZkZDU5NiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxMDcwLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTVWU3dXN2JNQXk5OXl1SW5Jc3VWcTFJWHUrN3JRTjJIWWFBa3FoWXFDMFprcHdzRy9idm81cm1zS0xEdG9OaG1INGtIOTk3UDI0QU5oRnJPTktldkNkYk4rL0I0MVRvdHYwSk1kU0EwMDd0WjR6QlU2bjdNcUtRTzBadE91cU54UHV0RmtQdnBOWldHYThrU1NjVW1WNUo3TWlKVnJIYXlrSDczaG1ocGZYYlR2YktHN0g1MHdwenJsVDJtU3FHU080UGhHeWFsNGtxN1V0YXMrVlh4S1dNcWY2dEw2WktqZjFqcW5EdHFlVEFrRStaWUkwWVkxcWpKYWM3d0ptaTQ2Yyt3Rk5NcHpoaUdXSEpWQ2dmeWQwQ2ZVTmJJWk5Oc2RTODJocFNCRnhkYUJNTExaaXgwblNHNEdGSnBRUXowUjA4SmlabWNyRFlVSGJDTUVQeWNPVU5LWWREaURqQnN3NTN2OG1rdTdlYzBCMDZNMUNuK3NIdGpCdDhOeWdwVVJqamxKR3N0eDRJbFJaOUwrVzlNc1o0R29Ta2pwSGFZNjllci9nWGJmbmNpN1F1bzY5aWVJdVhRdHU1M2FBdEd1RzhjYlF6ZG91Nk54YWRFL1plaU1HSjN2ZllveHc2SVQwcDBUS3k4NmdGYlY5NFhSZjhIeXRxWVM1YytzS2ZYUGpJRUhDaExGZ3RlNGlsVUlHMEVEdkVwdTFEckd3ejFNUSt6QndST0lVNnByWEMzUEFoSHFDWk9mUDYvTXlLSjM2K0FCYzhUd2tkVEdpZm11dFhWc0h4d0ZEUDcxNHZ1ZlovNEJ5TlVDeEdPSEFVQUsybHBVV0M1b1hiK0pSNGlRamoxcW1DVFVjZWRHZ1pkWlFocDFRNWVSUVdKc2tLT0t4NEhmM3BGQnVDam9GT25Pd0R4cDE2YU5sZSthZ2N2amVldFkyeTQ1b2pKSE1KdE80MjNQLzFXY0RDeCs1cjVrQzh5SHJ6OCtZWHFsd2NpaTRFQUFBPSIKICAgIH0sCiAgICAicHVibGlzaGVkLXZlcmlmaWNhdGlvbi5qc29uIjogewogICAgICAic2hhMjU2IjogImRkNGVlY2YwYzEwM2RjYTc5MjIwOTRhOGJlZWI5OWI3N2FlOTZmZDFkNWZlNTMyZTM3YmQ4MzNkYWEwMjYxNGUiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNTkxMiwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0EzMVkyVzdjUmhaOXoxY1FlclZicW4xUm5wSW9HUWlURFpObEFBK0NSaTIzSkk1YnBFS3k1U2hCL24xT2tleHVTWmJIc0MxMVYvSHU5NXg3K2RkblRYTjJQL1QzL1JoMjJ6YWZYVFpuMTk5L2M3WDU5NDhieHBqZi9NejB4Wis3Tm02Y1pwNXZCbjcydGo0eWhmSDlKNjR2RjRZV0Z3WksvWEM2OUsvcm4vNjVFVXdZempqZnZQdjIrc3RGNnZMRU9JV0o2dDJRcG4zWWJmb1BIUTJicjY0MzkvdTRhOGRieXB1MnkzUlArSytiTmc4MHRLVk5ZV3I3Ym5NZnhoSG5IVDQ5MEdiZmhYdjQ5RUI1a2J4Y3BiemRUNmtxcUNac09OdHcvalB6bDRwZENuV3VqRGZLdkdIc2tySFZubjQvSklJUEQrMElIZlZCSDFXTVFtY3B0UEV1a0ZhU0xMbmdna3hTZTVFakw5cVZ0QWhJN2JhR0NROXlycVU2ZkRmc3E2emp4K3IyZnF6U3gzMUtOSTVyL0tDV1BzRG0xWXk3MExXRnhtazczZ1pvci9ldFVDRW9heTFGbnB5M0pqdmpTQmZObExLeXFHZ3lqT0V5VzgyeXM0RkswTWxsblFLenl0SnFaZGp0ckRwb3VRMkk4d2hsVTdyZExubllwdjd1cnAyZ2NCcjJORDl5VE1pMnZRczN0TTN0RFN5YlhaaU51eXhhTzFlVU40aUhNRFl6bTNMeVJRdm15QlJSaE9MRnFtaWxUMEo2b1NLVGxvbE1pVXVZS09SaVdRd2pmVXFETllpNFVVd2tGOG1tcEJLUG1RZkRqWkQ0V1lybkhPNExhSExXS3FHajBzRXk3bEppenNsd0NQSk5PMDdESTN6c1NudnpzUm9qUktTVUpNWHNiWXJHUkFOdDBoU3BZL0dTQnd1anMxY0d3ZFpPY3k1azRpbTU1TDFEMk9PaWh2Nmd0SjhRcmwyZkVOQWM2Szd2VnMrV0hqckVUUkN6SkhOMjBrZXRROGs2YTQ0OHkyQ05EZ0kxcWxGN3BNZ2dwMGcwZk9NaGEyMWlOcGtkR2dubEhuYnRuM05yYkZONG9ERDdkRFhyYlhaOXlNMUFoMXMwTm92M256Y29oU2EzcFZ4ZmpSZjN1ekNWZnJpN29GSW8xYlphcjczWmhVaTdzWG5TaTd2SGhuNUhxVFJUM3h4QytublRVVHZkMHJBKzFuVDkwQ3llTjlkWHpiaVA0OVJPaU1yWVFNM3hzV2FPU3JNbVlpblFwUXlQdWNvMHBxRzluL3BoM0lZT1FRMlBoRjhQVGY2MFVHc0YrZlY4MzZYYjBOMDh2d0NNR0hDK3lzQ0ptTDh1KzkxdVRLSGJWZ0c3dHF1dzlCY09jUFRkMTFmWHYzeFhlL3J0OHNXU3dLOSsvWHBHdGhYUWNQVDNjMG40bDlzTWhOc2l5aU5WYTZmSGJVRVUyKzZtYW1iUDczZjlkdHdEeFFBSXlPTDQxT2d4M05HMjRPUjJlL1hsTnZiVDdWSkx6eTlCQ1BCem0rTVR4R0F5aFJRVlUxb2tpbGFod0VwRkE1R2lFOFY2SXVkVUxpRXhaZ2hkR3ZBaGg4eWxqQXdkWmM5ZWlyNmpLY0NwY0lyUHI0ampncFppRGREMzlNZjB5MzFld2YwSjluSjNxZjJsWnVmT2VjYVp0dUxkMmZyTWNqOS9NVDE3aEwxOHhBdDVmT1FLZkZGTCs1V25oTHlVQW4vUHBXTk1TaTc1dTFPR0R0NmMrdVNMM1QxU0xzK0Zha0ljVWQvTjF6OTgyd0R4cHVaREdEcmtDNjB5RjZWMFAvejB4dno0T04yaXFqTk5hQlJVWlRPRTdyeDVSMFBmM0ZIb3htYTZiY2ZtVUovTjFaZk5DSUlhYi92cExicGlhdmJkK3c3R2I4cCsyZy9VZ01yMmtKQ29RVi9ReklwTlpkUG1ab0IzNTJzT1luOEgxTnAzMVdLbFR0LzEzYTYyeU81cFRpcC80OU4vNWsvNHpNL2gzR1pnYStoTzM4eUYyelMvbmNxMzdTb0RMSTJEYXQzTlJiWUlPb1BVaTNELy9pTEhpN2FEbmJ2ZFNyZzQyNC9EUlQzSHZ6L1B4LzU4VmxDbC96Ykx6ZTB3eCtyeDZBT3k4dUxrVUZzbmJ4YWJ3TzJMSmNCT0pBY2p3SzQrYitiRG95SGJYNjZ2YXBkaUt1RXZUdjd4NHVTKzM3WHA4VW1iK0d4Qko2UUErTno3ekJVVkZnSUJhSXZUWHZPaWRHUXBSVnhEUVFWYk1ua2g4TFRVbFNIRTJWT3hkMzJlQzUvMVJxbG5KNHVGUzkrZjRHR2hoUU5sZkVTNzZRU0VNMmpoWThneHBQZFBieTV6MExiT1FJalJzSjBXVmlzQnlQTWlHUGY3QWJNZmJSOEM2S0NieGpreXE3cmxwTExBV0ZHci8zQUV5T2RuQTVYOVdKMTBDNnNpbyswZHpaYk41ZGpSOUtFZlVPUXprTDYwc2g3Vnh0MzJnQlRrZTZaOS9INW9rdnA3R21qT05SekFXRktucERrMEo0ZFdXVU1QTS9mUGZTMm9zRHdIYWtkVjlESWJ6a1Z6dWpTUHE2VSsvV0c2SGZyOXpXM05HYVpaTU5OZFFMaHF4MFBENXcwR3NVcDF5M3pXNUQwZGdjYlZkcTUwTjFVendIeXY5bS96eFF3ZHpXSnhzMlppNXVxTEdkU2JNZlgzd0luVmJ1QkttZ2ZRQm9TNXE0cC8zNk5IY2hNSjBRY3I3M3JneFFFWG5rN0ZOUzhBc2p1YUcrenNtM1lBZ2lFNURaS1ZUNHk3OG5NWUQvU01iczg3NEZCWEw1WDU4a0hYb1VxYnBUNmhoQXQ5M256VkQ3VnI2OFhIRjRQQlhJUGRUYk5BODlNSkFIR3QzVHUrV1VjT3lFU00zd0l0cVdzTzlYL2VmQStFWE5CMm5RMUthSGNuaDZsV09NRHkxTDRyNklWaGFzRmswd2J6NnoyS2UreTc4LytPeXh3ZmVOTFprMUErVjZwakdKZzlKalpwV0FuRmtNdUJDV2FpTmk1aHF1YVlyekJvWXNqVG1LQkxJblZBdVZxcW05bXF6UkxGb3dZVk1zWTJuNnd1MlpmRU1PbGlTbmZHNGx2dWlhY1k2b25WUGxVNjFwRHRBU1pCWk9GMDV1d1ZEWWNONEtqRFc1ZTB4VGFTYkN3c2svUVpvRVZlRzR5b1BtV01xWlpGUzFySHhLM1VObVlNMmlYS2lNR2NsZmhNeDlxMFIrRUNpQmVqTDhvcEU2SXF3WkJ3bUU0Tnhtc3R1VU9NdU9aRVVnZ3ZwVEZCYzhqTXhWbUJxVUU4RDFGbHB2T1UvemhLejlsbW81TFhsa3ZQUThvcTgrSk1RcHhOZ0NDdkFBTlJFV2xET25pTUpwNlNLTlhWN0xrT241Wit2dXR2cWdhSHg3RUZJY3BZTkNSeUNyT1kxNFFvWjBNR3V4SUxsREMzWjQ3TVpJUDF4RmlwcW1zR0NYdXVZUnJhaDhkTm5jMk9Ia2lDM1JJVUF2Umx6Q1ZLRXFZRmt0Z3ZwQkpGWnlXeG13UnN1b2dTV1oyTURDWllqOUF4Ri96L2szL3d3WnVnWEVZdUM2SUZONVRYQ2h3VXNIcGFnNHJSeUVoaWhTeG1KOHh2eE1GVUVpc3ErTXNhdC9MUVUzTDVLTXRZRU1td21KUHhDcnNpS1JHS0V3cUpGa2hLM2N4a05BeGJvM0JZTmFRV29Ub3B2WWI3akoreW5OcGxTMS9YOFI1ajAvQXcvMzVVaFRVQ3F4OVdscGg4cEFpZFRnY0VoYkJHWTduUlJsQ0owWUZKUWExT1J4U1laSUVMSWs0cXJyTm5wYTdYMmczVUd5STJjSVlGa2lMU2FMUEFtc0tjRnVER2pBTDF0bmlMelVvS1VMdTJFbGxncE9HNHhLWXNud3YvdU5OU3FPS1N3UW9HLzMxeDJGWVJkNDJWMnNWU2NoSk9PVTBtcG9BdFZ5ZTR5TkNaQldzdDQvNFlwaVB0YmxZQ1BaVVROa2N1a2lsSWhyQ2FLOFlSK29UT3paSVJtVkFZSjh3YkVTTnNxZEZCSHpKTTVja1NCcFJ3bkxzV21OMHNNTHNDQnlDNEw2ZFFrVTRNQ3lWbkhCc3FoaHh0UEdvWXBvdkNmTVU5NnlNS0N3SEVHb3ErMEFybEp5enVKN0w4V0xoUDg3MnNhMGNWTlZvY3RDVmRqb0FvcEJVb1MwVVZZVU53UmxORytsV3dLUUIvQlkvSUVSUEFFTmpDYkpIdW9LSU9FTnQxNmpuQStmbjlZMVZCSVVnT0NFSWhpZHJXUVJPUHlRSVBtZVRZd0pWVkZwaG9pK1dPU1lVbHhrc2xOYzhjOVpWRE9hbFlXUEJGa0NRaGpXQUloU29wU0dZV2lMdXRieE55NHJxZ3lnQlV5SXZNaFFOYVVOa29aQ3NRUGd0TzhjZk9RNzl0VDI5TER0MjN1SkFoRnNWSENaSDJMa0VEUisrQ0FSSnhFWFdTcURSQVVZQnJValBoWWJrcXlUbGRORm53eXVzNjZqcXpLaERhb1N1OHdkT0tDK0IrRVN4aWN0V29FQ0NzUjZOZzRhdmxRQTZiVlBBSkpDY3krQW5VWWFSL29xQ2EvUnFSZWkralk5R0R0RWdndTZoZURNUEtDd3V2Q3RNbzRhU0Nkcms2eXlPYUxTUWJsSkVWMExoTUwxVmdpaUNzOWtmNUdKbUZBUVVuY0tYaW1NS1pEaGpMclEvMWRWRndnTWJhM1NJN0VRWFhDc2xKeGFDYVhTYU5IZkVnL3lNQ1VwamFoSkZNZzBRWklBZ1RnSlBDNFVmaWtPQWlEZ0NJVWdEUzBScmVjZkNPTWRoU2hjVjErYXJnQTI1cjdxeU1FdUVBZVFLL2d1R09BcmdlSGVjZHEwTUh5QTdadExnaVN5QWJpcSt4d2tZaEFPUkg0Y2psUnlFSitPTTVNenlDek1Ga1dRZ1hlWDM5cGFRRXlZTXd2SElKVFJXQnIyQWdBV3hIOVFoT1ZncCtKTGJsamQ5bWVidjNvdndqY3h6ZEpiS01XWHNKYjJSaHpOYVhpNVFjY1JSbW5WMXF1VmhiQzZBUXBpY0xnQUtFQlhtY0xGN2hUVkVRWFFMZ1I1K01GbDRZYUFMRkcvU2xxRys1YW5Gd1hNbUVTU3NIREdvQ1E1aFVqSGw4cEUrSVBvUWUyQS9yRUYyV0JZcEhnZFc1ZDZhQVhwVG5WVUFBbHFGSXBaRWdiWUM2QjYrQ09xMHRLcGJsemMxbmYzLzJQeWVmN3A4WUZ3QUEiCiAgICB9LAogICAgInJvbGxiYWNrLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRURya1k5bVVaYm1VVzBnelE3dXpzTUIxRlBra0VzdVdWNU5DMHczK3ZKQ2ZFRjlsTzZXWDdVRjVDcEtOeitjNVZ5dWVkM1YwSEplUTljRUZZN0J6cGI0bm9MSHhuVDI4OWtqalVpNmVRVUxhTUlKYlplZ1FTaFVnaXRmZFpmZGRNNHBoSkpCVVQ4YktvbC9tTTRYQmZmeVNjUGV3VDFwRWNZY1YzNWhMRG1zUlR4aU1JM1JBdzBVb2NHUTAyRW84cUZKM0tpdEhLQ0t4czdXT1dVaFpOOWdYREJORU9DaU1pY3NaeXRvRHdqOTNMMGZtcCsvZlk5VHh2dUl0VHFWYTVZNWcrWjd5ZEdFVmdWZGpKRVlnRTRXYXFORE1iOVlNQWZBKzVoMTdZZFh0QmNPQWVEdnZnRHNJd21BUlR3T2l3cStVYjZZNUlBRyt3VmpyUE9BaHhDaWlrSklaYndDd09OZTREejF1SjRRby9ncEZlOUYrV0ZrYVROMFJJeHBkWEpDSlNiNitQQ0tDQTFVN2VmeEdTZUg2RkprRHpialZCayt3L3BoUGdNVWdRMnEvMStLeE9QUmZnRkNvT0pNeVdlV2x5bVJnV040QTVxTjJpQXlSRUNkV3JlZjNLZ2RnUWpEOG9QbklxR2dtMGlwWVZMOHlpaE1VNnBZNHkzOENUczlkOHBCWGlOY2c1allxeGt6Rlc2a2NzamVVdDhBWEJjSXl4L25iSEhrRmJQVVZVUU00Z0ZWd1NxVERqMnFoL2N4cm1EVlIwRUM5S0JGV2lRaVpwVEQvOGRmYlB5Zkg0N01QbDdlMjdzNXNDQWl2eUJhS3BvWjlMbVlpalR1Y1JsNXptbEE0OTczMmxFaWR2UjNmSGw2T3pHLzNmK2VWRm94cktjL0dVekZKdUlxekRGWFFrZ3YwSGtmZEQwUnZaMzMyUnEwTWlORE1jbFRkbjhNREtvYmo2V2kxM2Y0bzU2dllIUjhQQkFUNFk5THd1RGlZd3hMaUgvVW5vbzRFLzZCNm96K24wMFBjSFliL2I3Zm5CY05qcjlpZTlQaHA2Zm9DeHB5b09jbXdLalZOS3gwd1ZqNldCWnpwaWNxeXF6YnIyNThncFdVQ3M2dENZc3dtVUF0NFFUQkdoS1llN3VUby9aMVFYdm9NeXNzYXJGeUF0NTNXcFEzSnVNSjhEb25MK3llYVloSEc1RGcvYnZzQnp5SHo5NXU1dTNCb3JUZ0tjc0hCVFZOY0ZNczh5eFZnWm5qZk1yeERwcUdDcDNERHE3alFJYnUwdkJYdkZkcG4ya3JyakRLUEFDN3k5K2x5b1ExQVZRY2t3bzVybTdtVDhtblN6YU9JM2FQTEUrQ05sS0h5Tk5vMDVwL3BLU0g0SDdmY0tXc1dLcFZ5eHRTRko5WVFoN0JqaEpOWEc5VDB2c3BrZlFhUkdGRTJoNnR3MWFiZWZ3MzhwaURacExiSUdQWXVvUnZzRjRKUVR1VHhSNFEwZmJmSGdJRXJaMDVpVEJhRXdnek9CRVRXTm85cHAxOHFpQkUwSUpaSkFqVGtoWjRtbEFKaTk0NnNycDdKK3Z3VitLSHdiMCtVTlkvSmNhU3FXUXMxYlNvamtLVFJESUJHWGFmSTErZVIzZnlkVURab1NlRVJpRXlEWGlyZnV4MnZqUTFoMGN0c3VaVE9uL2ZSTEo5ZGVMZE12R0UwanVOYlQzNVlkeGN5Tkc1WDA2TjFReHMzK0s3cEZVWXFhc0RwdFhiRWdkaldTZmJ0a0dTVk5jdlQyTjhzb1RKTk4wbG9KMXpsc3k5clhhTFpBM0dBdjlIVk1pcW9QT2trV1hVMUtxL0tuYmtxL2hMWW9EWWxzVXJhVzRPZnJ1cm40TlNtOG9YSlJRbjZHNXV2QnpPVXdJK29PMytqOHJZaC9QcmFyV2NFZWxtdmRCWkZTdjFJMUVyZm92bFBYZ3pjN3VmblVDV094S2Rjbk5OVlN6d2tYK1pEVUU1ZHV1QnZDWS9xRWx2a29NYTB1VEZYYWpkWmxHS1lvcGRKOTJTaFFONDR3emxSY2NKWW1wZ042WHFHL3JmZE81aWpPZDVxM3NaNGlyb2t3cjBmRlJ3M2xtZU1Ham1aN3hBeURGYWpWL1hjQ3VQVzBNa1cvcXFoUlpLcWJYWG1XMkx3dlpmM2hOSVBGc1RybXVRQlIvcDNFK2w1VG9sa2pYNlhMdGVnTGpqQ01TM05HcjU4anp2cHp5N3RMb2RtVzc0cjZZVmZGVVN6ZkcxWW5GSkhJTnFWaHZUR3F1NEs2MVVhZUQrNUNrcFpmaGFKRUxrOEp0d2xWSWtpcTFYR3VzeG04T21LUlQ3QitxSFQ4eWsyZzdnNXRHUUIrT1IxTHcwT1RmbG5udjBhSlRjRlZjbCt6VUxQdEhsWm42OXFYQlhlRmt6dkEzYTRmRElQUTYvdmJhVjhjUnJhMG8zRW8wUGY2QjhBU3dpMnNESUtxRzE0dW90VjcwV2ZiVFVsWVh6OXRwTHZaYUFCeDlyWS9wZkRSUmFtY1cxcENGazhmRTVJaHM4bnJnNWUzK2RycmpUUXFXR2llZDlwVzdsK1ZtMDF6ajVQMXo5ZjVncWk3NDFkNDRoR1dHL3R0SUxWQlZJR2pHaDNHbXZvQ2wwSHdUU2cyRG1PL2RuVGJBdmI3eHV2ZWRsbzNWYnJXMktyblc0d3pqUFl4bHpYSlc3QndSVmxEK0d4ZHY2OUJMUjhtTGxmempWdlAvVWNsL0E5ckpOVkpmNnN1MG5oc201eHJtOUwvaHlxR3FXb1VhdGJPQkRkV3N5THBLNm9hUzNUT0lscjdsdGhXOXFyNDFjZlZUam4yVmovbzZsK3BkNTUzdmdEblQrN0xUQ0FBQUE9PSIKICAgIH0sCiAgICAicm9sbGJhY2stcHJlZmxpZ2h0LWZ1bGwuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIwMTg4Nzk5ZDM1MmU0ZDQ5ZDVjYTI5ZDZlMTk3NzQyZDAyZTk2YTRiMGIzOTlkZjFmNDc4ZTQxYjI1MjkyZWI1IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDIxMjA4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxY1c1T2JPQlorNzEvUnhlc0dHekJnNkgyWjNzNWxVdHNYVjZjelU3TmJLWmNRd2xZYUVDdUVFMCtxLy90S0F0dGNaQnYzcHBQWkt1WmhrbGhIUjBmbkhKMkw5QlhmenM3UE5SREhjN2hFOERHZlp5RFB0WXR6Umd2MFNneVJJRWQwaGNJNVlQeG56VElzVnpjTjNUUWZEUC9Dbmx6WTFzaHpUTU56LzJZWUY0YWh5VWtwWUhpRk9FdVFMbERJNTBVZ3prdCtHU1VNUWNZWmhvQ0JBT1JvVGhGbzB1UUlVc1M2djRjb2k4azZRU21iTDFDS0tGK0ZwSnpDY3VTd29GL3pXVm1NSVJDYk1DdHVJT2JMeFVLaUhRYysvSTJQaXMxbitEZEU4NUlWLzFlV2oxZW0zQWNmZk1TcGtFRjd2WnRZalNTSUFiR0ZMU1BCS2swSmsxTGx0Wi9GQUYwUUdJN0VIMXdCbjBlWWpCa0ZrSE5mNkZndWdOT0kwQVNGZW9nZ0ZzSmNTRWwyNjE1MEtNYWRYeXJaNUpLZHdSRWtSVXlTWUpRVGlFRThCbUdDODlxMktlRm0vdnY1Kzl1M3IvWGZaN3BoR05OeldERCtLOVVxdGs4Yi90ekNDVktLclRWSThnekFZM1JGcVFEZ2VCNHlEYUQ3Um1qcHR1ZE5kSC9xSU4wTlF5L3dJZ1NCYjVWeVZGSm9lWVpnWGZ0OEJ3dUs4dncxOTRNWXArZ0RnaVFOaFNWY3c5Z3UxL2FQNnNlVmxPcFhuRE5DMTljNHdjSkR6TjIwSE1YY2JRbHQyalVCREM2dlFZRGlwc0dsVzJXanh5SkFORVVNNWNMaSszVzJuZmZVVVhUTy9ZU2h4YnE1TGx0bmt0VzlPQ2w4dkdzZ2hwSXNGaU5OZWJ0T2U5QnhYOHlUR3NMS1ZXS1ZGcFY2aENUSlNGcWVZV2s1OUVWN2RXeFNEK1h2MU4rUXJlMW41UUo4T3drcFV2YUJSMGNNMFNXRTRsOFA1QkdsOVppMW5jQmRrUUh1bEZSczhkOE5hWnNiNXJRb1hYV0lWSVNOa3lpMFBmL25teit1TG1kdjV1OC9mUGo0NXI2bGxXckNDc1NGbkxGa0xNc3Z4dU5IMkRLbzFwbjI5T29ad2x6ZDNUNWN2cjk5Y3kvKzl2Yjl1eVBpY0x1bUVWNFVaVmdmVTY1T25LRFI1N3hwbzdhbHl2OCt0WGxyT0FFTHlaZmJlNEUrazdiVFZ2L3NCdEZmOGlXd0hQZGk2azdneExVTkMzb0Jta0pvUXpNSVRlQ2FyalhoZjBhUmI1cHU2RmlXYlhyVHFXMDVnZTJBcVdGNkVCbzhlZ0ZOTGRLc2lPTVo0U0ZvTFJVVjNSSTI0MUZybDFucVo0TG5ySlJIdEJrbEFlb2NEVWtTQVJ3WEZEMHNPWThsaVVVb25YVDFMRzM5RGpFbER4RTZBVnRLR3l4NXNtVExQOVdteWdobEc4ZFJVK1M4aWlnOTROZUhoMWt2UDlJeVJERUpkOEY2RjNUcmpBc0l1U0xxMnpRVlpNSmpTTUYyekt5ekl3TDB5R1NOL2VmOVQrYjJ5TTlLdlhtR1o3dzZkR3IyNjFWVVRRU1NXRkE5WE0yZWYwQVZNcGtIWmZwQzZHTk1lQ0gyVExtT25sTlJ0ZUhCeVYvV3lUbERVbERPWEszZldOUTcrVDY5d2F3UW0zVU1JMUVySkVFSkw1cGtlK0M0TjdpZlJpajZUNEh5NDZzZVhkTzFsVXNlMVFudk1ncUsyZnFLSHduMFZlMDFvak1pWDJZVXIzQ01GdWhORGtHODZUbzZPWDRqT01oQWdHUE1NTnE3dVpDU1RCbEk1T2psOWJXbUdQblVVNjhndkV2ajlUMGg3QzJYT2wvbnZCYXNXcnJqU21HQXNpSTc3U3lhMW5BWVR6aU1ETkVFcDlLTmJ2Z0tvaWJZS0NORXEzRnRXSS9KUXVzemYxdFBDSXQzWjZ4SVhDVG9SbFNvSitRdldkL3VSQk50dzhGVUlTbWVuWm1hcS9IcWIzdzhJemVXcndyRzd5VUJTN0xENndtQzc3UldvL0k5dkdvUDBrMEVVSi81NThxNEFsUmFwYnljeWJ2V0dXZWxGeDRXbndkVTNnWCtwZVFHUllqWlliRVBrUHdzcVhmdDdXSFJkM1E2eVBDUDNNT21kTlFwV3VDYzBTT3UwWlA4WittN3FsZjJPZTltRnpsbVROenFIU0UvdW91elE3bS9QdHFvcUxVd3pYZko0Q291aEFSdk1jMmJ6aXZxUVpIb2Q2U1g4UmV3Ym5xU1RLMWh3WS9yN1NiQW93Z1VNZE8zQXkzNkl3V1ZGdVh2S0NreW1YRU5vNVZOTjZOWDh0SjRKOWxkS2lxWkc1ekx1N2IyUlErMzJlVkJycExnbGtnbXRYdnROc1hISE5FOUhQaTJ4STBUTDRraWtWeTc5Y3p1TnE3TVFLOUxOV2w3VGZiVVVsdjlCbW5QblZhTGFtTVJGV1d0UEhoSEFVU3pWclZqT3czeXNqYm9jU3ZWU1BQZDNsaGNvWE52Uzlsdmt1RlZESENpcmlDaEdMcmQxM2JycWpLaWVSeGFSN3g3ZjVaa2JQMGFVL1h5ZkRGY0NORzBtN0tIVUJWLytFKzB1UVRXVEVWUHMvOGVRVm1HL0tVbDdoUXl4NlF0YTVBYmtLbkZyY0xFRFFrRmU4dFhkUWQ3YjEzMFNuKzZDeTNMOUtaZWFEaG0vNzAweTZPVGRuV2tSQkYzSFovbHkxV3ZYWHVleWtqYkpselYrWDFUZDRPNThvWlpUWHhlbGlvb0xWOWRvaGg5MVVIQmxzb2tWSHJlMXd5WDJ0cEZpRW50dldSdjQ4YWtJRXFxcDdNK3YzMzZuODc0NGNxc2VrSjh2cVV3NzVsUHROTWpXdS8wb2xiZmNlVXAxS1R5STdtNy9TRzBWTXAzMGUrUjh2SC81VlNvM1B3bHZQeFYveDBjanFJOS9QQVE5NlpQUWpDQ2xPME5BbzBkVjdSN1NaLzJqSHphcTh1NksrbVUxMkg2b1RWK1JQQjQwUVRXN1dONlo2OGpVL3VlMmVNOXlFK01qekRtNlluM0VLVUFSK0pray9qWjhaSms0dVNEK01DdDdiR1EydFhwWVE4OFUvbnE5bm4vYlBOL2FWSis1dElRODdwM0FLZ01BSlVCb0RJQVZBYUF5Z0JRR1FBcXczUGhBRkFaQUNvRFFHVUFxQXdBbFFHZ01nQlVCb0RLQUZBWkFDb0RRR1VBcUF3QWxRR2dNZ0JVQm9ES0FGQVpBQ29EUUdVQXFBd0FsUUdnTWdCVUJvREtBRkFaQUNvdkFsQ3B2cUVTb2d5bElVL2U5WnZqeWxtVGhyTzJRQ3RidklwOFpFd0tCZ0xacWRTN25TMlU1V3JyL05zaEpTemdBQ2pnV1hpVzhYYmhQbEFXZFIzWTZGeGVCcGRRZi9rL3NVcHR6ZXdCZnRuQlgzekROQ2VoRmVxT0hmcTZqVHhMRDh4d292dEdZUHNvUUtFVk9GMlVCd1FwU1RHdldPWG5mdWJseTdWZzV5Rm91MVpvV2hONzZ0aGU1Qmd1UWlpSVREU0I0aTE3NnRxZVlmclFBMU52NGhsMmFQZ0JoRk0vTUNMTEFwSGJSTnBrSzlqUCtUWStObE4yZ3ovWTM1UkM5UEs5VG92N2ZYMnR3VGxidFpBcUFkZWhMbTRjWWxTV1ZkcTZkY2VubU1PTG9GQVAxcnA0MzZWRU5qQ3FpV1d6UHdxNC9sc2NCTzRKTEpBdUJKY2JMRGxRa01JbG9vSWlKdHpQZEJtWlZUeGI3Q1JjaXVzckxiT0laazM4a1d1TkxNTVorZFpvU1hJMmt2ZEZTSDcvaW83U1ZqTFl3L1lVS1pWSE9zSThEL0JldVlQRDBab3JjWmZYcTQ5cE5UckpUNzNDUTh1QlRnOEhvV2NFbGhPWXVtbWJRTGR0TTlBRHJqdmQ5eUpnUmFIdkJWUFlEUWNkcEpJRzVDT1dTT1dkL2Q0akVQNU9lU0svRTkyaWNvUDdubzMzUDk1cWxZWGtMY1E3M0FOY1ZkTHpzNW5ubSt5cjlMVHRJMWJwVDdXbnpRN05obyt3NFVtS2JBZTllYllFdVdUMUQzSEF0RzNDRm9Gb2w2RXJtOW0rNzdsZVpPa0lCRkMzdzhqV0FacVlldUQ1RURsZU9IV01EWXlpNm5rYTZNV3E1Q2tocXVNWVJ3aXVZZTAxVHlBWHljZjc2enAwNjFSczAyaFJhNVkxeHJlQjJIMkZmWlQxbHU4R0JuUkR6ek9SNXppaEdacU9aeGdUL2hQeURSUk5mTU55TGRRQ1luTG5ZdFdOWTMxSGZRR2daUVJvSU5KMlI3RXFSa2Y1Q2pZWGxRZzh3SnJmdnhQdnp2STl1UzRIZHkzMndFTUVMK0g0dWcrNGRJNzZwL2FtRjRaeFlWdi9xc25FRTFHUnkyZGx5Vy9kZ3A2dTAwWkdGT0VhVUJRK2tPYnhVMnZtdEpCd3NvWTZSNnp0YS8zODdVVjg3cnY0blJvcFM1L0RUMkh3dTRMZFJSK0VnVHRWdXJEQ1BLVHJPUy8vNUtjY3BmZHRQK2E0clFIbUpJM1hjd24zNDBWOUxBdWRMVlhaMDh4REhFVno5RlZlMkJxZGdWMGxoeVo4SjdadDhZQUZUV2phUG9pQ3lJYWU3N3RSNEZ1Mk5RWElOcEh0Mm43Z1Qyd0liTi94ZlRPWWVvNFY4TDJYbjR3VU9CWUlaRjh3aDFreEY3Zkp0bEZlZ0d5aU9lOUFOa01UMnkySGF2RGpHdGo0NmV5L2gvamlKdGhTQUFBPSIKICAgIH0sCiAgICAicm9sbGJhY2stcHJlZmxpZ2h0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNGMzYzMxNjYyMDU4MDhlODEzMjZjY2RhZTFiNTZhZmVmNzU3YjBjZWI0ZTZjOTZhMTdiZjM4NDMxN2FlZWU0YSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAxODcyLAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQTdWVlRXL2pOaEM5KzFjRXZtNWxVeFFsaS80RmV5aXdRSnBlZWhGRzVOQm1Rb21xU0FVMUZ2bnZIY3JmU1Jab0YrMU41TXk4ZVk4Y1BYNWZQRHdzd2JsRzdWRzloR2FBRUpiYmh6aE8rRXNLK1RiZytJcTZnVWpiUzg1NGxlVXN5L01uSnJlaTJBcStxc3VjMWRVWHhyYU1MZWVpSHFKOVJZS0Vmb2VhNmd5NGNNUWJSaDlSUlFMVUVLR0ZnTTJJY0o4VFVJMFlQKzVySEp3L2ROakhab2M5anRURjk1VEJ5em1jOGc5VU5UaXJJSW5JNTIwWWQ1NFczK21iVnBOTm1Fc2haVjNWaG1jSXJjcUVOaUlETFBLc3JhWENzdGFia3VsWlM2TGpwMUhoQlNLSmdMaFBLRWRDYTJjTnFvTnllS3FZdVF6Kzk4ZGZVOUkreGlGczEydmp4eDArKzVYeWsvTmR1d3BlV1hEcjAzSnRlMHJvVUdjYWxRMGtiTFd6OFFvWVNRYkdSM3lkWXdsWHlhcGxxdEoxbldOZGxqclhlVmt6VnRBV1NvYW1rSFJYSFBseWhuZzdpZEVZb3UzUEozZFIxRU9IWVlCWjV2SURsU3VOZVJqR1cxa3ZVNHRqanhIRFNxT0J5Y1ZWZUZYM1RXR0t2b040UHdxMHYwZHc4MGxlZURnSThXbUVQdGpFOE1sMitIN3FOalJsTkhWLzNIQ0tFS2QwMzh1dk05N2h2bms0OU9xMmhmTGRBQ1BxSjMreis4T1QrVGVuOHhNbmRFUDA4MW43Wi9QMnY4emNmekozczhERk82RkU5U2Z3UHJud2IxUDhabjVMRjd3NE4zbzdXVWk2aFVhUFpBaFRQN3ZhUEgwWFh3UGQyWkFvTkw1M2g4WjJzTU5HbzR0d202V2NUVzZqclRFTi9tV1RCYklQZ2JBSFhsYUpEaGFrUkFndWE2TnlsUXNKcGpWQzFWSldwcFZjOEEyZ3lGRlVRcmF5RUFxRUxLWE0yMDFkOHBhMEg5MlQzTmlyWkk2T0xIU1ltbzZnQldQc1pISi9UalNvNUovblVDR3FZeWhFY2tUY0hSS1R4MlNodERvaW1va01ma1NGZG9nM2RGbGUxeHNwZFZGeUZGcElYU3JnVWxlWXk4MUdjTTA0eWdwRXk5cUNza3h1eEtZbS9pMHZ1ZVRZbHArQW55ZDE5TTYxb0Y2eVlVVGo3RzRmczVTM2VnNm4veVU5Qk0vMEVLUWJvQlFjc1ZmWUdPc3dYTTA2MFA5TVNsMTZUSzdtbi9DUGtTeEZzbXZrQ244dHBpajJtdER0akh5dVBENVIyVzMwcmxwQnJ5MDlVZThiWDRTOTc1cEdiL0cyK0J2ZUJ2bWhVQWNBQUE9PSIKICAgIH0sCiAgICAicnVudGltZS1yZWNlaXB0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiNjQ0MjY3NmRjZmQ5NDFmMGEwNWE0Y2I3OWEwMmRlYTgzOWZjZDMzMmQ4MmIyMTU0YzE1Y2Y2ZGI2OGRlNTg4OSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA4MDgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMldTeTQ3YklCU0c5M2tLSzl0MldpNEdUSmJkZDllOWRlQWNFalEyUkJobkpxcjY3c1hqempSVkpVdTIwWDg1SC9EejBIWEhRcmU0eEp5T3ArNW9YZStjVUNpRjBuWUFVcjBrUXdNTUlMMVVWcURqUVEzQkh6OXZ6dXZxcHJoY0NFZU1aMXJxbHJCY29IbFBRYWxoQ0wzVnpTQzBRV1k4ZWh1VVlBUHBJSUxvZVRDOU05SjZJYTNvSFpPR0NTVFBKYWkydEJmY3FNUVFXMzZoYzF4cXVZOCtweERQLy9kcElSeDVMOG1oTmQ1cDdUUVpMM1dReWdVck9aaVdqYmJYdmROcVVKd0w2Ym4zZzdkMlFLUGMza2V2NU5mYStxWU11R0VCelRtTkVSL0pCREZERW5HUTFpa0ZBUlVxYmtRdndXZ0ZRbHV0MnZaUlQ5b29GaFFiak9HQVNtbUhHaG5mbStJTVp4cVh2QlpQV3pqNHVzTFVRY3JwUHVkMTZkN1JPNlRGbDNpdHVYeWQ0RTZsZytJdjhVYmRQbU43ZVppbSt4N3JJV0ZFcURUdUJlOUFyYUtXbGQ0MGllcExMczliYTJ1ajNWZ0ljTXhwdW84bDUvb29uOXNXbFB1bTVtTDRIci85S2JxdVMxdmorOCtGL0RPVkJ4eDZiVURkT2RibGtsKzZhMHlKME9kNWpuVzNKNmdOWWJ5V2ZJdlluSFUvelFEVFFvK0NiZENOYy9RWFNPYzNqcitheGdrT0ZocHpHUUhubUxhUGowaGZDQ25WMk9UL3VEN3UxRnI5TnFwZ1FqOXg5c1Q1RDJaUHNqM21pMkpDR1BXSnNSTmp4OE92dzIvTVFnSVdLQU1BQUE9PSIKICAgIH0sCiAgICAic2Nhbi1yZWNlaXB0Lmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYWFhYTkxMDYxYmIwMzZlNmQyMjhiMWMxYmQ0MzMzNTc4ZGM5NDhjYjJiYjVhYzhiYTI2OTQyOTEyMWU3MzIxYSIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiA0NTM4LAogICAgICAiY29udGVudF9iYXNlNjQiOiAiSDRzSUFBQUFBQUFDQSsxVnlXN2JNQkM5NXlzQ1h4dEtKTFZTcHhib3VhZTJoeFNGd1RWbVlva3FTVGxPaS94N0tjbHdMR2RCa3lib29RSU0wSHA4TTV3WjhzMzhPams5WFRoT20wYmFSWFc2b0Q4NjZpU1B2ZFdibS9kdVJYR1dWemxtU09hWkxNdWNNSjZ5bE9lVXBvcGlobEZHc2tEaEJjY3FoNmlrUkJBcWNzU3BLZ3RVRmh5Um5Dek8rbE1FVzQ3KytuTmd3aWxuS1V3enpDVXJVcXFFNGhRV21MTVNxNExJY0ZncUZPVVE1bExobElZUFFRVktFZ1lWUWNYZVpTMDlGZFRUNFBSWGdBTDRWVnFuVFJNQWZEWWluK1RXZjJrRFMvWkhZNGh6Z0NCQTZETXFxNHhVR1l6S2trQUVzd0tmTDNZMkkxOTg4Qk1UZUd4Q2NMSTMrV2l1bTdXaDRnRXJuRlFKRHI4b0tTRk1FcFNnODBVd3VoMnljTFNXUzJXbFd5MURRc3o0MVZMWDlFSzY0TVRiVGc2a3hpeGQxN2FCdFV0dXYyTWxOMWIwNUc5REhHTVp3Z2ExZktVM1E4NHNYQ29ZbkVhZTJsM0FnYUtNcmVrUTdLVUxYdmU0QzZ5US9iTHovS2hra0ZSSldTVnBWQlJwWHVCM0VGWVEzaG5LcmZaTGJrUi9LdHlqM05RMWJjUSt4QUVVaGwvSnUxZ0NBZ0EzamRJWGgxanM2emJXalJLZzdXeHJRaHB0eDliYXJhUUFHMm0xMHB6NlVKRlkxcTIvQWFQVEIvd0FzRExPSHlKZG83ZFZITWNiYW1QYk5mRm9Hcm13SE5MQzF0U1ByYWZmamZUWHhrNXNHdFBJbzhUYXpoMGlhTHBkeTlyWW13bGhHdjNtNFpyOFhHdDJVQkRDVXNad0pxbzRYSjhPNnZFdmNOSjNBeERVdVpKVlBDeUhWbS9YSDNZSERJOTBXaHpkdE4wa2tYMTI4U1B2ZWl4NUh6c1FlZ0xmendnQWQ2VmJJQmpveGhaeGYrK1NidWlqaExGM1RpNTMwNjJQM3N4T1p3ZllSRzhEeDNUKzZUeUhtZ1BWcmRmUllMMGpmaC9XMjdPL0VEKy80ZXZ3Wk1YMkdSMmdqTW9zeDFrNmQ0QzVBOHdkNEFVZDRMN28vcXdOT0dicWlJdnQ4NXJBYXc1L0VoV1lGS1NjcFQ5TC94OUsveitZK3k4ZCthODk3Vk1ZNVVVRzAxbnlzK1JueWIvOW9IOXF4cC8wLzI1UGZnTVUrSXZSdWhFQUFBPT0iCiAgICB9LAogICAgInNlYWxlZC1saXZlLWRlcGxveW1lbnQuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICJmOGE5YTA3YWJjMmViNTJjZGY2YmNkYmEyZDlmNzlkZWMwNzMxNDVjMzFkMDQ0NGE5ZTBmZTExNDdlNDJjYzRlIiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDgyNjgsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBKzFaVzFQYk9CUis1MWN3ZnNiRURya1k5bVVaYm1VVzBnelE3dXpzTUIxRlBra0VzdVdWNU5DMHczK3ZKQ2ZFRjlsTzZXWDdVRjVDcEtOeitjNVZ5dWVkM1YwSEplUTljRUZZN0J6cGI0bm9MSHhuVDI4OWtqalVpNmVRVUxhTUlKYlplZ1FTaFVnaXRmZFpmZGRNNHBoSkpCVVQ4YktvbC9tTTRYQmZmeVNjUGV3VDFwRWNZY1YzNWhMRG1zUlR4aU1JM1JBdzBVb2NHUTAyRW84cUZKM0tpdEhLQ0t4czdXT1dVaFpOOWdYREJORU9DaU1pY3NaeXRvRHdqOTNMMGZtcCsvZlk5VHh2dUl0VHFWYTVZNWcrWjd5ZEdFVmdWZGpKRVlnRTRXYXFORE1iOVlNQWZBKzVoMTdZZFh0QmNPQWVEdnZnRHNJd21BUlR3T2l3cStVYjZZNUlBRyt3VmpyUE9BaHhDaWlrSklaYndDd09OZTREejF1SjRRby9ncEZlOUYrV0ZrYVROMFJJeHBkWEpDSlNiNitQQ0tDQTFVN2VmeEdTZUg2RkprRHpialZCayt3L3BoUGdNVWdRMnEvMStLeE9QUmZnRkNvT0pNeVdlV2x5bVJnV040QTVxTjJpQXlSRUNkV3JlZjNLZ2RnUWpEOG9QbklxR2dtMGlwWVZMOHlpaE1VNnBZNHkzOENUczlkOHBCWGlOY2c1allxeGt6Rlc2a2NzamVVdDhBWEJjSXl4L25iSEhrRmJQVVZVUU00Z0ZWd1NxVERqMnFoL2N4cm1EVlIwRUM5S0JGV2lRaVpwVEQvOGRmYlB5Zkg0N01QbDdlMjdzNXNDQWl2eUJhS3BvWjlMbVlpalR1Y1JsNXptbEE0OTczMmxFaWR2UjNmSGw2T3pHLzNmK2VWRm94cktjL0dVekZKdUlxekRGWFFrZ3YwSGtmZEQwUnZaMzMyUnEwTWlORE1jbFRkbjhNREtvYmo2V2kxM2Y0bzU2dllIUjhQQkFUNFk5THd1RGlZd3hMaUgvVW5vbzRFLzZCNm96K24wMFBjSFliL2I3Zm5CY05qcjlpZTlQaHA2Zm9DeHB5b09jbXdLalZOS3gwd1ZqNldCWnpwaWNxeXF6YnIyNThncFdVQ3M2dENZc3dtVUF0NFFUQkdoS1llN3VUby9aMVFYdm9NeXNzYXJGeUF0NTNXcFEzSnVNSjhEb25MK3llYVloSEc1RGcvYnZzQnp5SHo5NXU1dTNCb3JUZ0tjc0hCVFZOY0ZNczh5eFZnWm5qZk1yeERwcUdDcDNERHE3alFJYnUwdkJYdkZkcG4ya3JyakRLUEFDN3k5K2x5b1ExQVZRY2t3bzVybTdtVDhtblN6YU9JM2FQTEUrQ05sS0h5Tk5vMDVwL3BLU0g0SDdmY0tXc1dLcFZ5eHRTRko5WVFoN0JqaEpOWEc5VDB2c3BrZlFhUkdGRTJoNnR3MWFiZWZ3MzhwaURacExiSUdQWXVvUnZzRjRKUVR1VHhSNFEwZmJmSGdJRXJaMDVpVEJhRXdnek9CRVRXTm85cHAxOHFpQkUwSUpaSkFqVGtoWjRtbEFKaTk0NnNycDdKK3Z3VitLSHdiMCtVTlkvSmNhU3FXUXMxYlNvamtLVFJESUJHWGFmSTErZVIzZnlkVURab1NlRVJpRXlEWGlyZnV4MnZqUTFoMGN0c3VaVE9uL2ZSTEo5ZGVMZE12R0UwanVOYlQzNVlkeGN5Tkc1WDA2TjFReHMzK0s3cEZVWXFhc0RwdFhiRWdkaldTZmJ0a0dTVk5jdlQyTjhzb1RKTk4wbG9KMXpsc3k5clhhTFpBM0dBdjlIVk1pcW9QT2trV1hVMUtxL0tuYmtxL2hMWW9EWWxzVXJhVzRPZnJ1cm40TlNtOG9YSlJRbjZHNXV2QnpPVXdJK29PMytqOHJZaC9QcmFyV2NFZWxtdmRCWkZTdjFJMUVyZm92bFBYZ3pjN3VmblVDV094S2Rjbk5OVlN6d2tYK1pEVUU1ZHV1QnZDWS9xRWx2a29NYTB1VEZYYWpkWmxHS1lvcGRKOTJTaFFONDR3emxSY2NKWW1wZ042WHFHL3JmZE81aWpPZDVxM3NaNGlyb2t3cjBmRlJ3M2xtZU1Ham1aN3hBeURGYWpWL1hjQ3VQVzBNa1cvcXFoUlpLcWJYWG1XMkx3dlpmM2hOSVBGc1RybXVRQlIvcDNFK2w1VG9sa2pYNlhMdGVnTGpqQ01TM05HcjU4anp2cHp5N3RMb2RtVzc0cjZZVmZGVVN6ZkcxWW5GSkhJTnFWaHZUR3F1NEs2MVVhZUQrNUNrcFpmaGFKRUxrOEp0d2xWSWtpcTFYR3VzeG04T21LUlQ3QitxSFQ4eWsyZzdnNXRHUUIrT1IxTHcwT1RmbG5udjBhSlRjRlZjbCt6VUxQdEhsWm42OXFYQlhlRmt6dkEzYTRmRElQUTYvdmJhVjhjUnJhMG8zRW8wUGY2QjhBU3dpMnNESUtxRzE0dW90VjcwV2ZiVFVsWVh6OXRwTHZaYUFCeDlyWS9wZkRSUmFtY1cxcENGazhmRTVJaHM4bnJnNWUzK2RycmpUUXFXR2llZDlwVzdsK1ZtMDF6ajVQMXo5ZjVncWk3NDFkNDRoR1dHL3R0SUxWQlZJR2pHaDNHbXZvQ2wwSHdUU2cyRG1PL2RuVGJBdmI3eHV2ZWRsbzNWYnJXMktyblc0d3pqUFl4bHpYSlc3QndSVmxEK0d4ZHY2OUJMUjhtTGxmempWdlAvVWNsL0E5ckpOVkpmNnN1MG5oc201eHJtOUwvaHlxR3FXb1VhdGJPQkRkV3N5THBLNm9hUzNUT0lscjdsdGhXOXFyNDFjZlZUam4yVmovbzZsK3BkNTUzdmdEblQrN0xUQ0FBQUE9PSIKICAgIH0sCiAgICAic2VhbGVkLW5hdGl2ZS1kZXBlbmRlbmNpZXMuanNvbiI6IHsKICAgICAgInNoYTI1NiI6ICIwNDIzMjdhMDM2ZWQyNTRjZjk1ZGJlYjBjMDU2YWMyNWIwM2E2YTg0NGI5NWEzMzJjOTkyZGYyOTQzNjkxMzY5IiwKICAgICAgImNvZGVjIjogImd6aXArYmFzZTY0IiwKICAgICAgInVuY29tcHJlc3NlZF9ieXRlcyI6IDE4NDEsCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBNzFVeTI3Yk1CQzg1eXNNblV0Wm9pVkxTbTlOa2FLSHBFRVB5YUVvQWo1V05odUpWRW5LUUJyazM3dVVaU2QrSUk5RGV4S3czSjJkblozVnc4bGtFZ21qYTdWb1dSZWRUaDR3Z0NIV3FXdXdUaG1Oc1dpVlJoL1djZFcydldlOEFReDcyOE1ZdmxOYWhzU3pBZWtDa2NhSEZqeVR6TE10Y3NEVzJuam1FZHM5QzRjSHV6QkN4dUhUV2ZNclZtYnFMUk1JdmlCcXdGZTZOcllGU1NRSUZkaWRUcmN0VHc4ZXB3Y1JZbnZ0VlF0a0xpaE55NktVU2I2WmJUM2Zma1VzVE4rWWxzZk9DTVdhS1pPdGNodGRXSWM4VnlBL1RyNWVubjhtTjFja1NaSmlJbnFQVVJ1TnNJOGIvRWl6Rm82TzhUS3ZvYzUxVEJ3dmZzcnIxeXBWU1pyT0pKVWt6MlJGTWlncDRhbWNrU3JoV1FVY0pPWDVtdHhJTFJKTUc2MEVhMjdEc203ZGt0RjhIcUJLRU5tY3lwVE9zaUxQeWpwUDVnREE2eFJtb2hBaUsrWlptYVNWS0ZsUnpzb2trMG5GaFNncW50U1Vzbm9lMmd4Tm9tNGxYcmZYeGtkWDRkRjUwUDdhTkgwTFp3MVQ3Zi96MU5IMmIvTFh3T3RmK2VrWmJyZUs3M29PVm9NSEY0YmlxQndScHUwYWpBeHozWU43dWNMMFdNTHZzVXA3YTVvR094eVdyUVlCWW82YTc5VTdieXhiQUFtVWg5SFc5Wlpwc1FRYk1ocURqaUlkODhzamlIdGcwSUJBNGtRYk9iaWN6cXA0VG1PYTVIRkY0NlZ4UG5ZZ2Vnc09MR29SWStYcm9POWhlSENzdGRLc1VYL1FDbGowNDZuVmJnKzBkY0QzeUQ0c2NVejcrWWFUMzdIS2UwOWNsZ21uT1U5Sm1xV01aRm5LQ1VldFNGWFdqTmF5S25raGRrL2NkU0IyTGtZSWNPNEM1ZDZiN3pzd2VXT1ZoMjhhMlJ3TWhCc3d2Uld3ZDJjV2Z2ZmcvRzQwdEYzdklIQk92NmhvKy9SNG9QZVlpYmZtM09XbzJoRUhqYXUrR0gxeXJocHc5M2lyN1g3R0JpTnM2QjF5UGY5aDNYWkw1Z2FRVCtGWW9wUEhrNzlxRkVnb01RY0FBQT09IgogICAgfSwKICAgICJzb3VyY2UtY29tbWl0LXByb29mLmpzb24iOiB7CiAgICAgICJzaGEyNTYiOiAiYjA4MTFkYTJkM2JkNTkzODczM2YwMDc4ZTVmZWM4ZTE5YTZkOTc1MmM0Mjc3YjgwYmZlOTgzN2VkNzJjNmEzYiIsCiAgICAgICJjb2RlYyI6ICJnemlwK2Jhc2U2NCIsCiAgICAgICJ1bmNvbXByZXNzZWRfYnl0ZXMiOiAyMzksCiAgICAgICJjb250ZW50X2Jhc2U2NCI6ICJINHNJQUFBQUFBQUNBMTJPd1c2RU1BeEU3M3dGNHJ3SElEWTIvWldxaXB6WUtaRUtyQWd0V2xYOTk4Skt2ZlQ2TlBObXZxdTZiamI3eWlXdlMvTlNOMk9BRUhwVTErTXdzaGlDTXpJV0ZoY2RqcjJHTGlHbjJOeittbmFZK2xtV25LenN2a3h5Tmk4VDlTQUNSR1NoaXp6U29EeXdZY0lXZ0Z5Q01PZ3A2cHdTdHNva2xnUWpLMFpwQ2NqK0w5eGxuOHJwSlhqeU9aZFo5ampaeFY3Zm5tdzlGdHY4WnFKK1hUNGUvajFmZjlialRPemJwMVUvMVMvZFczMjc3d0FBQUE9PSIKICAgIH0sCiAgICAic3FsaXRlX3JlYWRvbmx5LnB5IjogewogICAgICAic2hhMjU2IjogIjkwOTNjNjRmN2YwZTM5YjI0OWRhOWZlZmRmNWFhZjRlNDI1OGJjMzFlN2EyN2ZkODg4NDc5Y2UzMjlhMjA1MDkiLAogICAgICAiY29kZWMiOiAiZ3ppcCtiYXNlNjQiLAogICAgICAidW5jb21wcmVzc2VkX2J5dGVzIjogNDYxMCwKICAgICAgImNvbnRlbnRfYmFzZTY0IjogIkg0c0lBQUFBQUFBQ0E1VlliVy9iTmhEKzdsL0JaY0FrWmJMeXNxYkFraHBEbHFWWmdlWmxTYnRoQ0FLQkZrODJGMGwwU1NxTlcvUy83NDRTWmZtbGFlTXZOdC91am5mUFBYZjAxdGJXbFlhaG1rSEZURGFGa3UvSXlzSkVTenZmeVZSZFdUYlRTdVZIekZoUnlERlRWVEdQV1FVUG9GbW1LbU4xblZuRGJxelNrR3h0YlExa09WUGFNcTRuTTY0TkRIS3RTdHBwNGRHU2dIWTlLNVNSMWNSdm4zSXp4VlUvVk1iLzB1Qi9HY3V0Ly8yZlVWVWplY2J0dENmMkNvZmRnUStGdFBETFlEQVFrRE5abVJsa050WEFCVjBpcEpNeDI0NVpTcmFBU0UzRloyYXE3T2cxTHd4RWh3T0dIOXJGUms2dU94RzVXWm16U2xtM21FaVQ1cktBTUdKS2R6Tm1YaGF5dWc5YktmVFJYQnBnZi9PaWhsT3RsUTREZUpUR29oTlFWdFVlUUcvTEIyNkJDVzc1bU9NQkRSOXFxVUVFamVaYVN6VEhxZEZnVlBHQWloTnVVcHhIQzM1bXdXK2xFakRTS3NCQkdQd2t5N0pHU1FXTTlnSXllL1d5RFBDdUxHaWwvK2lkbHB5b3FrSjNTVlg1NExHU1Yzd0NKU0Ftb0JLR1djMHJ3OTBlYzhTa1pVS0JjWDV4T2hJbjhhTkUvN1hCRHIzd3JCRWVvdEV4M1dqMFR0Y1FNeXRMVUxVZEhVUVI0NGFKOGNKNVlwekFJMlMxaFRDNHVqNCtPejltSDJyUTg1UkNPYnE4YU8xZjNmcjc2ZG1iL2hxaTF0Q1ZScHNFMWdaMDJ1NElvaVFIbTAxVmhmNjkzYjNySktBTHZaQWZSdXhnWWVIbUVNOThjblh4bEkyTG1tUTdPTUw0NXFpWWxYS2l1WFdhKzdvMm1ObmxaNG9pc250dktTOEtCQURhZEJzRzZqNklvN3R2MlVhWk1DVC9MVVF5SjdLMVNmUk1LV1FPMlR3ckFGMzN1ZUlsSEM2WmRuUDY5dlRrSFR1NWZIL3hMdHlPMk92cnkzTkdDSFRRKzVvdmx6NDVaZzhKanBzemFCTUx5Y1pNYVdHQ21BV2RDYW1mak9MTm9qWjlNTnNlRUxrcmt0cTU1d25DY0FwRTg3SWtQeGxGWHhZWkQ2WXVMSGtzYU1MZG9ldlFnNmd2QTJlNzM1c01DakEzeHVvUnR3bUp5YlBCLzBTUkVDOUhvVG5FenE0djMxK3gzLzl0OXFDWkd6V1llbHhLUTRhWlo2cnBuZnhPWFIzb1VKTkRMSE9JZEJtZFl0NmtsRGU0MW5CRFlLakNwRjNKUVhRZU1rZlVYL3FacjFWUmpIbUd4RHRvSW1CclhiV0JXQ2tFSzBUWTFnTjRwRVdhbi9MOWc1Y3RmMk5odTZSRTRaNmY4VGZLNXJJQ0VUTXNSSjh3eFVzY0Rxa1VzSTVjSGZ0Vml2MXovQlozSWJwTk1uQUNUekJkc1lLV3RVRXlOWVI0YWFhb1BDdHFJeDk2RWpMMENkSENEaGNscGdTV0RMdURBaitpNDBESGpGZkN5VFAxYklZMjJTa1ZETW9PRUgyek1KUVRWSk93QzFlNGlYQW8zMmg3UWVvOE96V2MvY2JYREhiejExdlV3eWd1aHNsSmhTR2dvTkxLbitlazNIY0NaQ1hzSUF0VkU5d2hCV1JZL0J0cHA3N0srV2tVNTJ6SzhQSkt6Qms4NEVLVndSRVI0NVIySWtjS0tBRERzT01JYWFZSUxDTHhzWGk2TW1Namt0ZEZVWExrbkZBSHQ3dkRYL2t3di92ODhzV1hZRDNBcE93Q3FlbnBRbzFsenZ1ekMwM2owOVVDVFJBckVScmswdEJpR3dTMjF3VElLbGRvZERPZkZKUWc0UkxodTlxQXM4bE4rdWJtK3ZRc3BCT0pzU21WZGRkaStOWHp5ejlPVjFhUi9YZlZ5OTFkMnVaWEt0ZFc0TXJldDJ0VjAzcFFxUzVnNk00dGNOZ0dhK1cydlNRamhXN09CWGUwY01KYTI3VExYcmxOWko2Um40Qzl3a3E2dDgrMjJkN3Uvb3Z0N2YybllqSEdwclNIN3M3QURXSHdnT3QzWVFRMUs2M0VUZ1Y1ZWNFZGxBNm16blA1NkNwUE1QeklDNktrb1ptV1FiVHN1aVo2SG52SVI4MFZzZHcxRXFLbDNYaHBaUkxYc1JXdTR6UHJzRmlCeHlwKzF2ZmxYWHhyS1NpNjNwODA3RVYvc3J5S3c4T05wVzdkejUxald5OTJDR2lTdkErQW5sV3RDMGNqMW5qUWNZUTN4c1dhTVBwc0cvQjUwT05RYkRZN2hpSnEydEN2cklmN3RqSHREdDNiWlkyQWg3aXpUbFlxWGpKMU1TcXBNMDByczQ3NVRyeGJHVU5PUmFvanVsRVBnaDBxRzlyb1kvS0Jyb3liMjBkUTBqQlRqeGRjR1hFSW9wcUlYZEU0Y0IweVFnOTR1ZXhOQXZLNFVOakZJWTZwU0lRRkw4ZUNIN2E3RS9KWTJDWmFGTE54RUd3QW9qTXBxV2VJUWdpZHVMVzdOMXVtOE9ndjVGUGNqeW5VSzJ6N1ZHS3ZWZEdXWDF1OHRjNzE1WHZSS2J2M0tYcnZLdys4dGRjZDlSUE5TWjZqZTc3S1ZLRmI3bURTalJ4T3VoSG1XMjgwV1JvUmlKd1hRcDkvVHBJZk9FRzl2STM3YVJvdk1XVDBMTWUxcUZ4TjFhZEQ0MHBMaDFiYXNJTG03ekJoVVMzYW1BbDgzRkU5WDQxWkN5RVhPbXpMNkYyYVV2T2ZwbzQ2MHBRdWs2YUJmNE5yNHdMbC8xUklqdldrcG9mb2xWc0pCWmhNeXhrcEdLV3BVRm1hUnIyVENSY2k1ZTBScFBhaEdDTzEyL2tNUmxjT0k3NTI5TEdoSjhZOXRKMEE5MFVpZkNKYlBWLzRBd3NueXFYL0pCSlJsek1UcmtHUlRpWmlqT2xtbExicFBjeE5vNnVSaG4wZnpDeDJTdlNGbDFoMTljM2NXQ2l4a2JMOVYxdjdoRno3dzJiQ1hjdm1LSkY2cXViUG1iYUJkRTExeE54L0o5VDJEUDRIcFJPYm53SVNBQUE9IgogICAgfQogIH0KfQo=" + } + ] + }, + "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-zlib-release-product-final-review/changes-requested-5365327b/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240.blob new file mode 100644 index 0000000..be5834d --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/53b8a8ff185f8927c40fb6b748a9a4ba3dd49194c55a574ffe8536901ce1d240.blob @@ -0,0 +1,81 @@ +# Exact481 native outcomes contract Product finding + +```yaml +reviewer: informed-decision-owner (agent informed-decision, codex) +decision: changes_requested +work_item: INFD-WP-ADHOC-2026-10-11-T09 +scope: exact481 distinct T05 release source preparation +manifest_sha256: 3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec +comment: >- + Same completed T09, with source-refinement record prepared before formal + review. Full ad63564files/manifest and earlier findings preserved exact. + Original67 full snapshot remains unavailable/disclosed. No native outcome, + founder acceptance, scored new trial or current recovery grant claimed. +``` + +All481 hashes independently verify. All36 synthetic/source tests pass. Exact +typed native memo/document decoder accepts12unique content digests under13 +packet labels; defaultJSON register body204591bytes remains below262144byte +limit. Gzip bundle losslessly matches every source digest/size. Original wiring, +snapshot/operation intent forwarding, coverage, typed duplicate and freeform +receipt-body findings are corrected. + +The new proposed outage term is explicit in question/terms/highlight/protocol, +not inherited from T04 or source acknowledgment. It permits only manually +supervised same763/c96 image-only recovery preserving latest DB after actual +release/failed candidate/service outage, <=30minutes AND execution deadline, +using exact pre-release confirmed acceptance cache and fresh root outage witness. +No401/403/explicit revocation/current conflict/mismatch/healthy service or other +phase fallback. Current later revocation cannot be checked during outage and is +expressly disclosed; cached acceptance is historical, not fresh or autonomous +authority. Recovery verification requires this journal's COMPLETE rollback and +hash-linked original outage plus recovered763/c96/Ready1. Native code rechecks +window immediately before patch; controlled Pod/ephemeral drift refuses before +effect. Item19 remains proposed until a new exact human decision. No source +review approves this privileged exception. + +The remaining blocker is actual provider response compatibility, not privacy: +`safe_outcome_metadata` requires top-level memo_id. Actual lifecycle_http.py101 +returns LifecycleService.outcomes directly; lifecycle_review.py123 builds only +review/dispositions. There is no native body memo_id. The earlier root normalized +receipt's memo_id was locally injected. Current privacy fixtures reuse synthetic +authority accepted() body containing that extra field, so they do not prove real +post-Ready metadata acceptance. Fixed canonical request/context should correlate +source MEMO_ID, then inject it into bounded output; if native body optionally +includes memo_id, reject mismatch rather than requiring an invented field. + +Other real contract shapes are also rejected: lifecycle_review.py127–132 LEFT +JOIN yields null submission_state for non-accept comments, and store.py428/449/465 +uses prepared/in_flight/confirmed/unresolved. ActorKind includes system in +disposition.py42–46. The bounded serializer should support legitimate typed +metadata while preserving authority's separate ready/confirmed founder gate, +without turning comments/unconfirmed states into acceptance. Align review +intake states with actual native contract where needed. Test the actual native +body without memo_id, confirmed accept plus comment/null, prepared/in_flight +and system metadata, preserving freeform/unknown sentinel exclusion. + +Five isolated source counterexamples against frozen481 helper reject these +legitimate shapes. No HTTP request, real credential read, database open or +cluster command occurred. Frozen helper/manifest/source-probe/boolean receipt +are retained under docs/evidence/2026-10-11-zlib-release-product-contract-review/. + +Published/source/scan proof remains unchanged. Fresh same-image full scan gate +binds exact artifact/config/11diffIDs/38OS+6Python44PURLs, now before DBNextUpdate +and <=4hour age; Oct11 DB is not presumed valid through Oct12 execution window. +New findings refuse release/closure. Actual post-Ready canonical PDP operation +remains mandatory and distinct from installed synthetic2allow/8refuse. Because +current helper rejects that actual response shape, no final acknowledgment is +issued. T05progress/WP0009active and new human acceptance/installed proof remain +pending; old approved R2 helpers/journals and unpromotedIN10 are unchanged. +The corrected immutable packet and later final review/memo reference rebinding +need bounded exact source confirmation before first human post. + +Root selected the narrower correction: retain only fixed authenticated canonical +GET/source1 HTTP200 and captured timestamp, shape-check native review=None/dict +and dispositions=list of dicts, emit only has_review/disposition_count. Source +memo correlation derives from the fixed request, not a claimed body memo_id; +optional body ID must match. Omit all review/disposition states/actors/bodies, so +legitimate native comment/null/prepared/in_flight/system rows are not mistaken +for approval or rejected by invented enums. Founder consent remains exclusively +in the separate authority relation. New source and actual native-shape/sentinel +fixtures must independently verify this choice before exact final acknowledgment. diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4.blob new file mode 100644 index 0000000..fecd586 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5b3bc0592143bd22a8578dea0230e67f6c7c5ef2d04a244789aa14d9fd1ba2e4.blob @@ -0,0 +1,27 @@ +{ + "synthetic_source_only": true, + "native_request": false, + "real_credentials": false, + "current481_rejects_actual_native_shapes": [ + { + "native_contract_case": "actual_native_no_memo_id", + "metadata_accepted": false + }, + { + "native_contract_case": "comment_null", + "metadata_accepted": false + }, + { + "native_contract_case": "prepared", + "metadata_accepted": false + }, + { + "native_contract_case": "in_flight", + "metadata_accepted": false + }, + { + "native_contract_case": "system_actor", + "metadata_accepted": false + } + ] +} diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob new file mode 100644 index 0000000..0d5da91 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/5c54373f2dc4b064008225c186efb1d5afdeec36d15350bda0a12ded97602d1b.blob @@ -0,0 +1,15 @@ +"""Only structural count/hash receipts can leave the private execution phase.""" +def counts(value): + if (set(value) != {'schema_version', 'lifecycle', 'outbox', 'submissions', 'integrity', + 'read_only_pre_open', 'store_constructed'} + or value['schema_version'] != 5 or value['integrity'] != 'ok' + or value['read_only_pre_open'] is not True or value['store_constructed'] is not False + or set(value['lifecycle']) != {'records', 'events', 'pending'} + or not set(value['outbox']) <= {'pending', 'delivered', 'blocked'} + or not set(value['submissions']) <= {'prepared', 'in_flight', 'confirmed', 'unresolved'}): + raise ValueError('count-only receipt shape/state refused; values withheld') + for group in ('lifecycle', 'outbox', 'submissions'): + if any(type(number) is not int or number < 0 or number > 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-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob new file mode 100644 index 0000000..80f324a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/6af62f86f50ac185fab94163c24ac8150ead69e62f8d825b0dce1e75a5a57b68.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c.blob new file mode 100644 index 0000000..ea29c3b --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/750a4386277dc79c3213e6aed17ae5686332bfd587a55e5e87ebf3776a63ab0c.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3.blob new file mode 100644 index 0000000..5821a2c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/7642f3f2844f93bf9c76d8d9b5afa66d1627a878ad9559fe5ca0b06e9cb07ff3.blob @@ -0,0 +1,17 @@ +from pathlib import Path +import runpy,json +P=Path(__file__).parent/'frozen481-post-ready-native-outcomes-command.py';ns=runpy.run_path(str(P)) +u='11111111-1111-4111-8111-111111111111';base={'review':{'memo_id':'review-'+u,'intake_state':'ready','stale':False},'dispositions':[{'disposition':{'id':'disp-'+u,'memo_id':'review-'+u,'memo_version':1,'verb':'accept','actor':{'kind':'person','sub':'uid=platform-root,ou=people,dc=netkingdom,dc=local'},'at':'2026-10-11T10:00:00Z','approval_id':u,'note':'SYNTHETIC_PRIVATE_SENTINEL','reasons':['SYNTHETIC_PRIVATE_SENTINEL']},'submission_state':'confirmed','approved_at':'2026-10-11T10:00:01Z'}]} +results=[] +for kind in ['actual_native_no_memo_id','comment_null','prepared','in_flight','system_actor']: + d=json.loads(json.dumps(base)) + if kind!='actual_native_no_memo_id':d['memo_id']=ns['MEMO_ID'] + if kind=='comment_null':d['dispositions'][0]['submission_state']=None;d['dispositions'][0]['disposition'].update(verb='comment',approval_id=None) + if kind in ['prepared','in_flight']:d['dispositions'][0]['submission_state']=kind + if kind=='system_actor':d['dispositions'][0]['disposition']['actor']['kind']='system' + try:ns['safe_outcome_metadata'](d) + except ValueError:accepted=False + else:accepted=True + results.append({'native_contract_case':kind,'metadata_accepted':accepted}) +assert all(not x['metadata_accepted'] for x in results) +print(json.dumps({'synthetic_source_only':True,'native_request':False,'real_credentials':False,'current481_rejects_actual_native_shapes':results},indent=2)) diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47.blob new file mode 100644 index 0000000..269ae42 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03.blob new file mode 100644 index 0000000..f40bb56 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/896f5213563d07e6b0c32047f7e482e2ebd79e41b83e160936124cdbf79a0f03.blob @@ -0,0 +1,387 @@ +--- +id: INFD-WP-ADHOC-2026-10-11 +type: workplan +title: "Application-owner catalogue facts review" +domain: infotech +repo: informed-decision +status: finished +owner: codex +topic_slug: netkingdom +created: "2026-10-11" +updated: "2026-10-11" +flavor: planning +state_hub_workstream_id: "4594d714-a6ec-5ab6-ad44-4227a27fc7be" +--- + +## Review exact one-application catalogue facts + +```task +id: INFD-WP-ADHOC-2026-10-11-T01 +status: done +priority: medium +state_hub_task_id: "cfe1ec8c-c635-5f23-847c-bf8296965305" +``` + +Completed informed-decision application-owner source review under INTENT.md +Purpose, What informed-decision Owns/Does Not Own, Design Principles 9-10, +and Layer Placement. Read actual owner OIDC, requester and policy-request +code, governing Staff/PEP-shaped declaration, User Engine model, and existing +value-free native registration/Ingress/preflight receipts. Exact canonical +facts agree. Browser client is distinct from create-only requester. + +Review entry: docs/reviews/2026-10-11-one-app-catalogue-facts-review.md. +Canonical facts SHA-256: +`ae6fde5f2c879e75fabb53e132261899dae0f4d864e18dd425bc272be713426b`. +Reviewed refined nine-file executor manifest SHA-256: +`0ff545d26a0fd72f06040fe377de3efdcc3bd62cdcb6f653247c8ba72f3f34a7`. + +This task completes the application-facts source review only. It grants no +maintenance exception, native dry-run/apply/recovery, IAM permission, image +release or human disposition. Existing User Engine native acceptance work +remains with USER-WP-0026-T03 and USER-WP-0028-T02; no new residual work is +created by this bounded review. No tests were needed for this evidence-only +review; no native, credential or login action occurred. + +## Independently review purpose overlay release preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T02 +status: done +priority: medium +``` + +Completed same-role informed-decision-owner technical review of frozen36-path +purpose release manifest SHA-256 +`7c6738b39ea8e54e61c8ed625e94ad0b2755e672e1576efcdf84a1d665ac3300`. +All36 staged file hashes and exact source PolicyClient9d7 hash were verified. +Source candidates and captured candidate Deployment differ only in the image. +Actual raw base/candidate scans contain the same one fixable MEDIUM zlib finding; +T05 keeps its2026-10-18 follow-through. Actual published-image receipts and +sealed native read-only preflight support preparation, not native deployment. + +Independent owner negatives:50 passed in4.21s, covering10 advisory/malformed +binding forms across register, replay, publish, annotate and revise. Each +refusal preserves every domain table, records a truthful invalid-decision +observation and leaves the same idempotency key reusable after restoring a +canonical enforcement response. These are synthetic source tests only. +Test: tests/test_purpose_owner_mutation_negatives.py. +Receipt: docs/evidence/2026-10-11-purpose-image-release/product-owner-review-validation.json. +Review: docs/reviews/2026-10-11-purpose-release-product-owner-review.md. + +This bounded review grants no native backup/export/restore, image rollout, +credentials, login, human disposition or vulnerability acceptance. Existing +INFD-WP-0009-T04/T05 retain release/remediation obligations; no separate residual +is created or claimed completed. Catalogue ACK/T01 remains unchanged. + +## Confirm amended purpose release custody and preflight gates + +```task +id: INFD-WP-ADHOC-2026-10-11-T03 +status: done +priority: medium +``` + +Same informed-decision-owner reviewed amended78-path release manifest SHA-256 +`b1e3e66bc4023dc80c6ea59564c3557c7653fb3c307f46a049997b76198a9033`. +All78 file hashes verified, original36 archive retained, source PolicyClient9d7 +and both image-only source candidates unchanged. Prior50 source lifecycle +mutation/idempotency negatives remain applicable and were not repeated. + +Confirmed stdlib read-only schema5/integrity/count gate before ANY native or +restored Store/admin open, explicit local/remote optimized-interpreter refusal, +sealed actual ConfigMap/PVC identity/data/custody and frozen offline clone count +equality distinguished from legitimate concurrent live commits. Revised20-doc +184912-byte packet and01:39 read-only dry-run receipts remain preparation. +Native schema gate, backup/export/restore/release and founder disposition remain +unperformed; T04/T05 obligations and temporary vulnerability review persist. + +Confirmation: docs/reviews/2026-10-11-purpose-release-amended-product-owner-review.md. +Prior T01 catalogue ACK including hub identifiers and T02 initial36 review/test/ +receipt remain unchanged. No new residual or authority is created by this review. + +## Reconcile Staff evidence source declaration and current guarantees + +```task +id: INFD-WP-ADHOC-2026-10-11-T04 +status: done +priority: medium +``` + +Reviewed accepted bounded GH-DEC-2026-025 handoff against actual source +class definitions, transactional recording, heartbeat/reconciliation scheduling, +existing component-test assertions and native count/receipt evidence. Reconciled +stale outbox/AUDIT-WP-0009 blockers without promoting owed guarantees or reopening +finished INFD-WP-0005/0007. INFD-IN-0007 retains doctrine response and pending +NET-IN-0004 standard voice. INFD-IN-0009 is the one live, unpromoted residual +source intake for remaining class-specific declaration/verification gaps, +origin INFD-WP-0007. No residual implementation or native action occurred. + +Source evidence reconciliation: +docs/evidence/2026-10-11-staff-evidence-source-reconciliation.md. +Formal source review: +docs/reviews/2026-10-11-staff-evidence-source-owner-review.md. +Existing Staff/PEP-shaped classification, three load-bearing class classifications, +compromised-source and commitment/content availability limits remain unchanged. + +## Independently review supervised purpose actuator product boundaries + +```task +id: INFD-WP-ADHOC-2026-10-11-T05 +status: done +priority: medium +``` + +Same informed-decision-owner reviewed exact23-path helper manifest +`f2fad6c251fbb4420e07c1329802f521b513bbf66e51f64c5d673ef04f16284c`, +all staged hashes and embedded source bundle/plan. Product evidence/schema5, +private snapshot custody, confined offline UID0 initialization followed by +UID10001 pre/post-admin verification, independent failed-candidate rollback +and all-phase start deadline are technically agreed as source preparation. + +No purpose-policy or candidate image change. Retained helper16 synthetic tests +and platform5 independent recovery negatives are mechanism proof; prior50 +product policy negatives remain applicable. No new test run was needed for this +unchanged-source review. Native-provider acceptance remains distinct from the +installed10 synthetic purpose forms; T04 is not complete. Before first human +post, amend exact20-document packet to hash-bind helper/plan, four render inputs, +initializer/recovery/deadline refinements and preserved full scan provenance. +Exact combined packet acknowledgement remains a separate review gate. + +Review: docs/reviews/2026-10-11-purpose-actuator-product-owner-review.md. +No native reads/backups/export/restore/release, credentials, human disposition, +founder approval or phase authority was exercised by this review. + +## Prepare separately gated provider-derived denial mechanism probe + +```task +id: INFD-WP-ADHOC-2026-10-11-T06 +status: done +priority: medium +``` + +Prepared source-only readonly lifecycle.search provider-derived mechanism probe +with truthful informed-decision/review SERVICE and no human/StateHub attributes. +Actual lifecyclev2 permits only StateHub workload or admitted AAL2 humans, so a +canonical real DENY is required; no claims are invented to obtain ALLOW. +One actual provider response will remain in Pod memory; ten transformed +noncanonical purpose copies test installed consumer refusal without further +provider calls, DB/admin or act effects. This is a denial/binding mechanism +proof candidate, not actual authorized lifecycle or full T04 acceptance. + +Source: docs/evidence/2026-10-11-purpose-provider-probe/. +Ten synthetic source tests pass; no actual provider, credential, runtime config, +DB, native data or live action was accessed. Posted frozen112 packet/helper +remain unchanged. Exact separate founder go for this newly prepared probe and +its target must precede any execution; current memo has no acceptance and this +new helper is not hash-bound in that submitted packet. T04 remains progress. + +## Review exact existing-snapshot rescue version2 preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T07 +status: done +priority: medium +``` + +Reviewed exact66-path rescue manifest0867e27a6754dddff3eedbb333ab4ca4faa98ee31d383ebe940b8e054c6cabf7 +under the same informed-decision-owner role. Actual original backupCOMPLETE/copy +UNCERTAIN are retained; new rescue journal/phase and sourceversion2/newreviewown1 +require fresh founder acceptance. Immutable reads are bounded to proven frozen +closed snapshots; live/offline writable-clone reads remain WAL-aware/explicitclose. +Independent existing26 mocked tests plus41 subtests pass, and10 new product scope +guards pass (including eight refusal mutations and a frozen initial packet check). +No native command, DB open, credentials or rescue operation occurred. + +Initial review decision changes_requested: proposal.json misleadingly names old +f2fad helper manifest as execution_helper_manifest_sha256 after helper bytes changed; +label it original/historical and refreeze all dependent packet hashes. Correct +current bundle/plan digests already exist. The normalized test fixture is not an +owner edit or approval. Initial review/failure must remain after correction; +exact amended confirmation is still required before newhuman submission/execution. + +Review: docs/reviews/2026-10-11-purpose-rescue-product-owner-review.md. +Evidence/checks: docs/evidence/2026-10-11-purpose-rescue-product-review/. +T04 remains progress; original version1 approval is not newversion2 authority. + +**Amended source confirmation, same T07 trial:** exact134-path manifest +`d05d6e3b15df9acf1d7aef0ba2ec82a5a00d979ab1f324e981025cffe2cc753d` +corrects only the historical helper provenance label and dependent packet hashes; +original66 source and initial changes-requested review remain retained. Current +helper code/bundle49c9/plan9ce5 are unchanged. Strict typed sourceversion2/CAS1 +and20documents validate:173469packetbytes/240451revisionbytes. Eight scope +mutations and three packet mutations independently refuse. Final technical +source acknowledgement approved; no new human acceptance or native rescue. +Confirmation: docs/reviews/2026-10-11-purpose-rescue-product-owner-final-ack.md. + + +**Actual-outcome assessment preparation, same completed T07 trial:** independently +verified original receipt-byte hashes and source consumer path after approved +source c96b0c6 release. Offline schema5/admin/post counts match; fresh cutover +backup/private copy matches live post-release counts16/56/0, delivered336, +confirmed43. Independent image/module/config/PVC/controlled Pod and UID/GID10001 +checks pass. Actual post-rollout authenticated provider-backed outcomes readback +is separate from installed ten synthetic purpose forms (2allow/8refuse). +Completed source-only assessment supports T04 done, T05 todo and WP0009 active. +Original failed copy and verifier UNCERTAIN remain preserved, with no replay or +helper amendment. Created unpromoted INFD-IN-0010 for future verifier omission +handling correction; no implementation, native action or authority grant. +This work-record preparation precedes the formal actual-outcome review entry. +Review: docs/reviews/2026-10-11-purpose-native-outcome-product-owner-acceptance.md. +Evidence: docs/evidence/2026-10-11-purpose-native-acceptance/. + + +## Independently review bounded zlib-only T05 source candidate + +```task +id: INFD-WP-ADHOC-2026-10-11-T08 +status: done +priority: medium +``` + +Completed informed-decision Product source review of exact27-path candidate +manifest8d345bb2bde3efce4d0cc99dfc2f883a64f79c42d2cd4abb288229a995e9ad66. +All staged/evidence hashes verify. Independently reread local saved base/candidate +image archives, effective runtime config, nine base layer prefix, two final file +changes and both full scan/SBOM artifacts. Only zlib1.3.2-r0 to r1 differs; +44 packages/base1MED to candidate0 at retained same scanner database. +Signed APK/index named key matches unchanged base trust metadata; enforced +apk verify against existing keys retained, no allow-untrusted or truststore override. +Four existing source tests pass (eight refusal mutations), plus five independent +appfile/trustkeys/world/network/provider metadata mutations refuse. +Purpose/backend checks remain local and synthetic, not actual PDP or data proof. +Technical source preparation agreement only: local image78bfdcc is unpublished, +T05 remains progress/WP0009 active; CI exact published provenance/scan/SBOM and +new native founder approval/installed proof are still required. Current763/native +DB/config/PVC/identity/approved R2 helper and journal remain unchanged; INFD-IN-0010 +is unpromoted/unimplemented. No native actions, credentials or owner source writes. +This completed work record is prepared before the formal review entry. +Review: docs/reviews/2026-10-11-zlib-candidate-product-owner-review.md. +Evidence: docs/evidence/2026-10-11-zlib-candidate-product-review/. + + +**Exact amended confirmation, same completed T08 preparation trial:** verified +final58-path candidate manifest64509029b3de6d33e3675587663ccdae027d9ea18aba83750892480766dd03b8 +and immutable archived initial27 hashes. Only artifact-audit source/receipts/docs +change; recipe/workflow/four build inputs/image78bfdcc/config625d/runtime/scan/DB +remain identical. New3 artifact tests pass (optimized malformed input refused +before reads; matching directories pass; directory mode/UID/GID drift refuse). +Independent actual saved-image reread proves all directory metadata unchanged, +with the same two final file changes. Initial Product manifest5f334/ack/validation +are retained as historical source agreement, not new scored native success. +This work-record refinement precedes final formal acknowledgment. No publication, +native operation, credentials or owner edits. T05progress/WP0009active remains. +Confirmation: docs/reviews/2026-10-11-zlib-candidate-product-owner-final-ack.md. + + +**Exact66 whiteout follow-through, same completed T08 preparation:** independently +verified manifest3e41ab391cda26f09a556fecef8a17c2759ef2899e43eb136b25ef4b3fde23a0 +and all66 hashes. New source correction preserves leading whiteout dots/root +parent handling, but three Product synthetic probes find same-layer new files +incorrectly removed by subsequent nested/root opaque or explicit descendant +whiteouts. OCI requires whiteouts affect only lower layers and preserve same-layer +additions regardless archive order. Completed source assessment changes_requested +before formal entry: apply whiteouts only previous layers then merge current +layer additions, with both archive orders covered. No actual candidate failure +or image/sourcecontext/scan change is inferred. Initial5f334 and intermediate +8bc6 reviews/evidence remain historical, not rewritten; same T08/no new trial. +No owner edits, native operation, publication or credentials. +Review: docs/reviews/2026-10-11-zlib-candidate-product-whiteout-review.md. + + +**Exact74 final acknowledgment, same completed T08:** all74 candidate hashes +verify for manifest724aa4777eb1c8976d868e5f504473f4b6d58f13d750d87aefa5c8d5ca0747ec. +Checker now collects additions separately, applies whiteouts only lower-layer +state and merges additions afterward. Five audit tests pass, including12 whiteout +semantic cases/both marker orders. All three original Product counterexamples +now preserve same-layer files. Independent actual saved-image re-audit proves +313directories unchanged and same two changed files/nine base prefix/runtime/ +SBOM/scan. Image78/contextc554/recipe/workflow/package/trust/DB unchanged. +Initial5f334, intermediate8bc6 and changes-requested85ffd source reviews/evidence +remain exact historical bytes, not revised prior success or a new scored trial. +Completed refinement record precedes final formal exact74 technical agreement. +No owner edits, native operation, publication or credentials; T05progress and +WP0009active remain. Distinct published/installed proof and founder approval +remain pending. +Final review: docs/reviews/2026-10-11-zlib-candidate-product-owner-complete-ack.md. + + +## Review distinct T05 native release proposal source preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T09 +status: done +priority: medium +``` + +Completed source-only Product review preparation for NEW distinct zlib release +trial infd-zlib-20261011-r1. Initial requested67 manifest1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2 +changed during source reads to68-path manifest81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47. +Stopped approval and froze81ad source; all68 staged hashes independently verify. +Current19 synthetic helper tests pass, but independent mocked source probes +reproduce remote keyword signature failure, missing frozen snapshot/operation +intent forwarding and empty detector/package coverage accepted as full scan. +Initial missing fresh_scan observation was corrected by81ad; not a current +missing-function finding. Readbacks are source-only, no actual phase failure. +Scan NextUpdateOct11 precedes release deadlineOct12: fresh same-image rescan is +explicitly permitted/required but coverage gate still needs correction. +Completed T09 record precedes formal changes-requested entry. Maker will refreeze +a separate corrected source; exact review still required, no native approval. +T05progress/WP0009active; originalT04/R2 journals/helpers and unpromotedIN10 +remain unchanged. No publication/native command, owner edit, credentials or +private DB/customer data access. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md. +Evidence: docs/evidence/2026-10-11-zlib-release-product-initial-review/. + + +**Immutable143 refinement assessment, same completed T09:** all143 refined +hashes verify for manifestf170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29 +and unchanged published29/6ba2 proof. All25 source tests pass; independent original +remote keyword/intent and empty-coverage counterexamples are corrected. Gzip +bundle losslessly binds exact source. Two remaining Product findings prevent +acknowledgment: actual typed document decoder rejects duplicate SHA for sealed +live and identical rollback JSON; post-Ready command exports freeform note/reasons +and unknown review body in synthetic sentinel fixture. Require unique command +digests and exact typed packet check; require closed bounded structural receipt +allowlist/sentinel tests with actual canonical provider path unchanged. +Initialc67 exact20files/manifest and historical observations remain preserved; +original67 full source unavailable is explicitly disclosed, never invented. +No native phase failure/provider request/credentials/owner write. This completed +source-refinement record precedes formal143 changes-requested entry. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md. +T05progress/WP0009active; final corrected freeze and founder approval pending. + +**Recovery authority dependency retained for next proposal:** current143 demands +fresh service-dependent founder readback before rollback as well as release. +Candidate/service failure can prevent that readback even though mechanical +rollback itself is independent of candidate readiness/DB. Root/Platform identified +this further proposal gap. Any newly proposed preauthenticated limited recovery +authority must be explicit in a new human packet, bounded to same763/c96/image-only +latestDB retention/time/deadline, exclude401/403/revoked/mismatch fallbacks and +disclose later-revocation uncertainty; current143 grants none. + + +**Exact481 actual provider-contract follow-through, same completed T09:** +all481 manifest3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec +hashes verify; all36 source tests pass. Typed native decoder now accepts12unique +contents/13labels and defaultJSON register204591bytes; exactgzip bundle verifies. +Prior wiring/coverage/document/privacy findings are corrected. Proposed manual +outage recovery is explicit new-human consent only, bounded30min/deadline and +same763/c96/latestDB, with no401/403/revoked/conflict/other-phase reuse; separate +rollback completion and Ready recovered verification required. No currentgo. +Deep actual provider-source check finds final metadata validator still requires +root-added memo_id absent from real native outcomes body, and rejects native +null non-submission/prepared/in_flight/system metadata. Five isolated source +counterexamples reproduce rejection. Require exact native-contract fixtures +and fixed-request-context memo correlation without inventing provider fields. +Allad63564files/manifest and earlier findings remain exact historical bytes; +missing original67 fullsnapshot remains disclosed. Completed refinement record +precedes this formal changes-requested entry. No native/provider request, private +DB/customer data, real credentials, owner edit/push or taskclosure. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-native-contract-review.md. + +**Root-selected minimal correction:** fixed authenticated source1 GET/HTTP200/ +observation time with native response review=None/dict and dispositions=list of +dicts, output only has_review/disposition_count. Memo correlation derives from +fixed request, optional response ID must match. No review/disposition/state/actor +body output or consent claim; actual founder authority remains separate. Exact +corrected source/native-shape/sentinel fixtures still require review before ACK. diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob new file mode 100644 index 0000000..64274bd --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/9093c64f7f0e39b249da9fefdf5aaf4e4258bc31e7a27fd888479ce329a20509.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7.blob new file mode 100644 index 0000000..71f6794 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/90dcfb59833500c6a7084edf285567003a2f9f4b8b495dc7086271b38bff2ed7.blob @@ -0,0 +1,71 @@ +# Distinct T05 release initial Product source review + +```yaml +reviewer: informed-decision-owner (agent informed-decision, codex) +decision: changes_requested +work_item: INFD-WP-ADHOC-2026-10-11-T09 +scope: new zlib native release source preparation; no approval +requested_manifest_sha256: 1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2 +observed_frozen_manifest_sha256: 81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47 +published_proof_manifest_sha256: 6ba2c341b496ab7f79f9c5fd33a92831c2f8db25d018a4b4e67d41e0af9c5bc9 +comment: >- + Completed new T09 source assessment precedes formal review. Mutable staging + changed during initial reads; stop approval at observed frozen81ad and retain + source findings as historical preparation evidence, not native failures. + A separate exact refined freeze requires final technical review. +``` + +The proposal is distinct from T04/R2 authority: new source memo ownversion1, +new human acceptance, new private drill/cutover directories/journal and explicit +Deployment-only non-pruning f558 release; image-only rollback763 preserves latest +data. Product intent requires preserved evidence and human binding, so source +prose and execution wiring must agree before preparation can be accepted. +No current or earlier founder acceptance authorizes this new trial. + +Initial observations were from requested67 first source reads: authority_journal +contained no fresh_scan while actuator imported it; remote accepted only three +positional arguments although main supplied operation_intent; copy payload lacked +snapshot_identity and verify payload lacked operation_intent. During inspection, +stage changed to81ad/68paths. Fresh_scan now exists and19 current synthetic tests +pass; missing-function observation is historical only. Frozen81ad bytes and all68 +hashes independently verify. The remaining wiring and coverage findings below +are independently reproduced against that frozen source. + +1. Main passes operation_intent keyword to remote for every nonlocal phase, but + remote signature remains (phase, revision, approved). Python signature binding + refuses before body; main would already have durable RUNNING intent. Correct + dispatcher signature and payload construction together, and test the actual + CLI/dispatch path with mocked transport rather than only embedded native code. +2. Copy dispatch does not forward recorded previous COMPLETE backup result as + snapshot_identity, which the native closed-snapshot checker requires. Verify + and rollback-verify dispatch do not forward matching recorded operation_intent, + which current-attempt false-omission reconciliation requires. Test those exact + relations through real wrapper construction and refuse absent/wrong intent. +3. Valid scan receipt plus report {Results:[{}]} passes fresh_scan, although no + detector or package inventory exists. Require actual immutablef558 report/ + input identity and complete expected38OS+6Python/44package inventory, including + fixedzlib1.3.2-r1, with explicit empty/truncated/mismatched coverage refusals. + +These are synthetic source observations only: no helper main/native phase was +run, no SSH/Docker/cluster command was dispatched and no journal or private +backup was created. The mocked wrapper probe intercepts transport before any +external call. It does not establish actual native failure or alter any historical +R2 outcome. Frozen source/probe receipt is value-free and contains no secret, DB +content or customer rows. + +The published scan's DB NextUpdate2026-10-11T18:59:50 precedes execute-by +2026-10-12T23:59:59. Current81ad protocol correctly permits root to refresh DB +and rescan the same immutable image as read-only verification, and requires +matching report hash, fresh age<=4hours and now= 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-zlib-release-product-final-review/changes-requested-5365327b/objects/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80.blob new file mode 100644 index 0000000..b897ef9 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dabeda33ffe52989337e214dc6e6d3ef5f04797569145faf2ff69024b101ec80.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660.blob new file mode 100644 index 0000000..c8a565c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/dc7593b52f4929b3fe0f866ec37fdb6c44f3211201cc0efec291825957ba9660.blob @@ -0,0 +1,12 @@ +{ + "all481_hashes_verified": true, + "existing_tests_pass": 36, + "actual_typed_memo_and_documents_pass": true, + "unique_contents": 12, + "packet_labels": 13, + "register_bytes": 204591, + "bundle_source_equal": true, + "outage_consent_proposed_only": true, + "native_actions": false, + "remaining_provider_contract_findings": 5 +} diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63.blob new file mode 100644 index 0000000..bf894f7 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ddbee6cca0d9f1032b4849ef17e3f730aa32e5cc06dd59d3f8ae6b45ce816c63.blob @@ -0,0 +1,18 @@ +from pathlib import Path +import json,types,sys,io,contextlib +from unittest.mock import patch +source=Path(__file__).parent/'frozen143/docs/evidence/2026-10-11-zlib-image-release/post-ready-native-outcomes-command.py' +body={'review':{'memo_id':'review-fixture','stale':False,'intake_state':'ready','unexpected':'SENTINEL-REVIEW-BODY'},'dispositions':[{'submission_state':'confirmed','disposition':{'id':'disp-fixture','memo_id':'review-fixture','memo_version':1,'verb':'accept','actor':{'kind':'person','sub':'fixture-person'},'at':'2026-10-11T10:00:00Z','approval_id':'fixture','note':'SENTINEL-PRIVATE-NOTE','reasons':['SENTINEL-PRIVATE-REASON']}}]} +class Response: + status=200 + def __enter__(self):return self + def __exit__(self,*args):pass + def read(self,n):return json.dumps(body).encode() +class Opener: + def open(self,*args,**kwargs):return Response() +fake=types.ModuleType('api.services.memo_dispatch');fake.ORIGIN='http://fixture.invalid';fake.NoRedirect=__import__('urllib.request',fromlist=['HTTPRedirectHandler']).HTTPRedirectHandler;fake.token_file=lambda path:'synthetic-fixture-token' +out=io.StringIO() +with patch.dict(sys.modules,{'api.services.memo_dispatch':fake}),patch('urllib.request.build_opener',return_value=Opener()),contextlib.redirect_stdout(out):exec(compile(source.read_text(),'frozen143-postready-probe','exec'),{'__name__':'fixture'}) +text=out.getvalue();receipt={'synthetic_only':True,'native_request_executed':False,'real_credentials_read':False,'freeform_note_exported':'SENTINEL-PRIVATE-NOTE' in text,'freeform_reasons_exported':'SENTINEL-PRIVATE-REASON' in text,'unknown_review_body_exported':'SENTINEL-REVIEW-BODY' in text} +assert all(receipt[k] for k in ['freeform_note_exported','freeform_reasons_exported','unknown_review_body_exported']) +print(json.dumps(receipt,indent=2)) diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461.blob new file mode 100644 index 0000000..3c6572c --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/eb58dee98934fef0fd916c7807eea1d600d71ee35cda9b9fbbc5564e42560461.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d.blob new file mode 100644 index 0000000..7c38280 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/ec470183fd6a6a315ec0e35d5841eb1e26cf04d58c5b3fdc13b6f34b1621f62d.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df.blob new file mode 100644 index 0000000..bf9aa61 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f0259f264d00725ab8f0cf40db39f30c5073918dc51f578df09f41a8c0e955df.blob @@ -0,0 +1,14 @@ +from pathlib import Path +import sys,json,inspect,datetime,subprocess,ast +from unittest.mock import patch +E=Path(__file__).parent/'frozen143/docs/evidence/2026-10-11-zlib-image-release/execution';sys.path.insert(0,str(E));import actuator,authority_journal,native_program +inspect.signature(actuator.remote).bind('verify','e'*40,{},operation_intent={'state':'COMPLETE'},snapshot_identity={'snapshot_file':'drill.sqlite'}) +seen=[] +def fake(argv,body=None,timeout=90):seen.append(json.loads(ast.literal_eval(body)));return subprocess.CompletedProcess([],0,'{"all_checks_pass":true}','') +with patch.object(native_program,'PROGRAM','__PAYLOAD__'),patch.object(actuator,'run',fake):actuator.remote('verify','e'*40,{},snapshot_identity={'snapshot_file':'drill.sqlite'},operation_intent={'state':'COMPLETE'}) +assert seen[0]['snapshot_identity']=={'snapshot_file':'drill.sqlite'} and seen[0]['operation_intent']=={'state':'COMPLETE'} +now=datetime.datetime(2026,10,11,12,tzinfo=datetime.timezone.utc);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-11T11:59:00Z','db_metadata':{'Version':2,'UpdatedAt':'2026-10-11T10:00:00Z','NextUpdate':'2026-10-11T18:59:50Z'},'db_sha256':'a'*64,'full_report_sha256':'b'*64};contract=json.loads((E.parent/'fresh-scan-contract.json').read_text()) +try:authority_journal.fresh_scan(receipt,{'Results':[{}]},contract,now) +except ValueError:pass +else:raise AssertionError('empty detector coverage accepted') +print(json.dumps({'all_initial_wiring_and_emptycoverage_counterexamples_resolved':True,'snapshot_and_operation_intents_forwarded':True,'remote_keyword_signature_accepts':True,'empty_detector_scan_refuses':True,'native_commands':False,'real_credentials':False},indent=2)) diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29.blob new file mode 100644 index 0000000..ee40b50 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e.blob new file mode 100644 index 0000000..fe3bc0a --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f434ebda3f32a2c06efc2589325f777a4fed5028bc55df590c4933c3fb8b960e.blob @@ -0,0 +1,8 @@ +{ + "all_initial_wiring_and_emptycoverage_counterexamples_resolved": true, + "snapshot_and_operation_intents_forwarded": true, + "remote_keyword_signature_accepts": true, + "empty_detector_scan_refuses": true, + "native_commands": false, + "real_credentials": false +} diff --git a/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob new file mode 100644 index 0000000..b58daa6 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/f8a9a07abc2eb52cdf6bcdba2d9f79dec073145c31d0444a9e0fe1147e42cc4e.blob @@ -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-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob new file mode 100644 index 0000000..04cb285 --- /dev/null +++ b/docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/objects/fcf8fc3593910b2e99dd51d159a30aa9b853c40ff00c566a620d20eaadc8af20.blob @@ -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(0- + Same completed T09, with final source-refinement record prepared before + formal acknowledgment. This resolves retained source findings; it is not + human approval, privileged outage consent, a current native outcome, + new scored trial or task closure. Exact final ACK/row19 memo-reference + rebinding remains to be checked before first human post. +``` + +All509 staged hashes independently verify. Prior481 source map reconstructs +all481 exact bytes; Product135/5365327 and64/ad635 review-history maps reconstruct +all prior file hashes and original manifest digests. This review additionally +retains full previous135file review and exact5365327 manifest as deduplicated +content objects with a complete path/hash mapping under +docs/evidence/2026-10-11-zlib-release-product-final-review/changes-requested-5365327b/. +Initialc67 and all earlier source findings remain historical, not rewritten as +prior success. The unavailable original67 full snapshot remains disclosed. + +All38 source/synthetic tests pass, including full mocked main phase dispatch, +source-hash/pre-journal refusal, private copy/created-volume/pre-admin/post +integrity, actual Pod ephemeral drift before effect, deterministic bundle +corruption/body-limit/native typed decoder, coverage/expiry mutations, exact +non-pruning current-operation relation, outage403 refusal and separate recovered +rollback verification. No actual native phase, container, provider call or real +database/PDP was executed by this review. + +The original wiring/emptycoverage/duplicate-document/body-export/native-shape +findings are corrected. Actual native typed decode accepts12unique contents +under13 memo labels. Default JSON register207511bytes is below256KiB, with +54633bytes headroom before later review attachments. Gzip bundle decompresses +to exact source hashes/lengths. Original five Product native-shape cases now +accept without invented enums: native body without memo_id, comment/null, +prepared, in_flight and system rows are counted, never interpreted as approval. +Four independent optional-ID/version/shape mutations refuse. Review=None with +empty dispositions is a valid source shape, not proof of current consent. + +Minimal postReady proof uses fixed existing authenticated canonical GET for +sourceT05@1; request identity explicitly derives from that fixed route, not from +a claimed native body field. Optional response identity/version must match if +present. Native source contract returns only review/dispositions; shape is +bounded and body size capped. Only HTTP200, UTC observationtime, derived request +identity, has_review and disposition_count plus explicit non-inference flags +leave the helper. No review/disposition body, freeform notes/reasons, states or +actors are exported. Full-command private-sentinel/token-error/HTTP403 tests +prove suppression. Existing credential stays within the admitted StateHub Pod, +NoRedirect/proxy-disabled path unchanged. Actual LifecycleService native-body +fixture runs with synthetic callbacks, no DB/PDP. Later actual new-image Ready +correlation and real canonical `_authorize` path success remain required and +separate from installed synthetic2allow/8refuse and from actual founder authority. + +The new distinct image release keeps exact publishedf558/source9b4, native +image763/sourcec96 baseline, schema5/config/PVC/identity and source render pins. +Fresh private drill/copy, isolated offline initializer/UID10001 pre/admin/post +compatibility and exact created-clone cleanup precede fresh cutover backup/copy +and manual one-Deployment explicitfalse-prune release. Intent is durable before +effect; ambiguous/failed phases are retained and cannot replay. Rollback image +763/sourcec96 preserves latest DB and does not depend on failed candidate DB. +Current-attempt operation/revision/resource/initiator/time and explicitfalse +request are required before accepting Argo omitted false; true/null/string and +foreign operations refuse. Old approved R2 helpers/journals remain immutable, +INFD-IN-0010 unpromoted/unimplemented. + +Proposed outage recovery is explicit in the new memo question/terms/highlight +and protocol, requiring a NEW exact human acceptance. It is only manual same763/ +c96/latestDB-preserving recovery after this recorded release and failed candidate +service outage, <=30minutes AND execution deadline. Pre-release actual confirmed +consent is cached privately and hash-linked to this release intent; it is historic +and does not claim fresh later revocation knowledge. Root's fresh unavailable +witness/sealed UID/source/candidate Ready0 proof is required. No401/403/revoked/ +conflict/mismatch/healthy-service or backup/copy/release/normalverify/other-trial +fallback. Subsequent recovery verification needs same-journal COMPLETE rollback, +original outage link and exact763/c96 Ready1. Native window recheck immediately +before patch prevents stale preparation from extending the term. Later-revocation +uncertainty is disclosed; source acknowledgment neither grants that exception +nor promotes autonomy. Item19 remains proposed until founder disposition. + +Fresh full scan gate binds immutablef558 config622/eleven diffIDs/source labels +and exact38OS+6Python/44PURLs with fixedzlibr1, report bytes/hash and no findings. +Now must precede DBNextUpdate and scan age<=4hours; the retained Oct11 scan is +not valid through Oct12 execution expiry by assumption. Routine refresh/rescan +of same image is permitted/required, new findings retained and release/closure +refused. No zero-stale, future-safety or estate-grade claim. + +T05 remains progress, WP0009 active. Independent final Platform review, root +exact source/plan/memo binding, separate confirmed founder source1/newreviewown1 +acceptance, actual fresh native drill/release and installedpackage/runtime/full +scan/canonical-provider proof remain pending. Root will add only the two final +owner acknowledgments and proposed row19, then request narrow reference/hash +confirmation. No owner checkout write, native/privateDB/customer-data action, +credential access, publication or push occurred in this source review. diff --git a/docs/reviews/2026-10-11-zlib-release-product-owner-reference-confirmation.md b/docs/reviews/2026-10-11-zlib-release-product-owner-reference-confirmation.md new file mode 100644 index 0000000..f51760c --- /dev/null +++ b/docs/reviews/2026-10-11-zlib-release-product-owner-reference-confirmation.md @@ -0,0 +1,51 @@ +# Final zlib packet reference-binding Product confirmation + +```yaml +reviewer: informed-decision-owner (agent informed-decision, codex) +decision: approved +work_item: INFD-WP-ADHOC-2026-10-11-T09 +scope: narrow exact519 reference-only confirmation +manifest_sha256: acb1262b56f10d117c702e62908db008c323a0acb5df4ed108d7868aa371bce9 +memo_sha256: 5dea0d404e4d13683fbf71d56273c06db7a6a916ab68759a90d7394005eee206 +lifecycle_commands_sha256: 4cf81acb7d42f52d81f8ba624a6b2349a0b8948477a14c09bd069d2a4acab7cf +comment: >- + Existing completed T09 source-refinement record in the earlier48-path final + Product stage precedes this confirmation. Same preparation trial and source + scope; no additional work-record append or overlapping owner paths. This + verifies final packet references, not founder acceptance, current outage + authority, native success, new scored trial or T05 completion. +``` + +All519 staged hashes independently verify. Actual original509-to519 hash comparison +finds exactly four changed existing derived paths: memo, intake, lifecycle commands +and submission proof. All505 other original paths retain exact hashes, including +executor/bundle/plan/render/runtime/scan/recovery/custody source. The source diff +proof e12cd9be56d785a55f3516716fb9ab9cbc7c1fa5c75b501fd890f584d49c49c1 matches. +Memo changes only packet extension; its original thirteen labels remain an exact +prefix. No question, terms, highlights, target or proposed authority was changed. + +Three attachments match exact source bytes and packet digests: Product ACK6420B +SHAfe7b2153e525a23980aee63e62efcd7fd3dad18145633f8f57d8d2b4640c99d4, +Platform ACK5559B SHA30c200b98f8692a8456e786d0c7a3acb5ff3634973911b088f56aa178d393fee, +and full root checklist9710B SHA94d5757bfd612c489d419f421c0abbaf3d5a991cc1a49d04a33f957aed3ddd8a. +Root row19 explicitly says proposed only/no exception approved or used. It is +context, not an authority provider; exact executable proposal/trial remain bound +by unchanged memo/plan and separate founder disposition. Owner reviews themselves +are unmodified and technical only. + +Actual native decode_memo/decode_documents and intake submitter validation pass +for sourceversion1/unbound draft,15unique contents/16labels. DefaultJSON register +237367bytes is below262144 with24777bytes headroom; content digest uniqueness +and attached byte custody independently verify. No further attachment is covered +by this confirmation. Prior38 source tests remain applicable because executable +source is unchanged and were not needlessly repeated. + +This final packet agrees with the exact509 Product acknowledgment and its limits: +minimal actual post-Ready canonical HTTP200 preservation proof remains distinct +from synthetic refusal fixtures and actual founder authority; fresh full scan/ +DBNextUpdate and proposed bounded manual outage terms remain unchanged. No current +consent or native outcome is inferred. T05progress/WP0009active remains pending +new exact founder acceptance and actual installed/drill/release/scan/provider +verification. All original failures/source findings/history are retained. +No owner checkout writes, private DB/customer-data/credential access, native +action, publication or push occurred in this narrow review. diff --git a/workplans/ADHOC-2026-10-11.md b/workplans/ADHOC-2026-10-11.md index e61fb50..8cd5beb 100644 --- a/workplans/ADHOC-2026-10-11.md +++ b/workplans/ADHOC-2026-10-11.md @@ -303,3 +303,105 @@ No owner edits, native operation, publication or credentials; T05progress and WP0009active remain. Distinct published/installed proof and founder approval remain pending. Final review: docs/reviews/2026-10-11-zlib-candidate-product-owner-complete-ack.md. + + +## Review distinct T05 native release proposal source preparation + +```task +id: INFD-WP-ADHOC-2026-10-11-T09 +status: done +priority: medium +``` + +Completed source-only Product review preparation for NEW distinct zlib release +trial infd-zlib-20261011-r1. Initial requested67 manifest1e4b5a308294d588c7bf75e5d27eb475a1ed2f75ec8c598f4db285cf01547fb2 +changed during source reads to68-path manifest81adb9e1749d6bd9f19755a2bbd7b501589ea782445537bbbfe925e1d9f8fa47. +Stopped approval and froze81ad source; all68 staged hashes independently verify. +Current19 synthetic helper tests pass, but independent mocked source probes +reproduce remote keyword signature failure, missing frozen snapshot/operation +intent forwarding and empty detector/package coverage accepted as full scan. +Initial missing fresh_scan observation was corrected by81ad; not a current +missing-function finding. Readbacks are source-only, no actual phase failure. +Scan NextUpdateOct11 precedes release deadlineOct12: fresh same-image rescan is +explicitly permitted/required but coverage gate still needs correction. +Completed T09 record precedes formal changes-requested entry. Maker will refreeze +a separate corrected source; exact review still required, no native approval. +T05progress/WP0009active; originalT04/R2 journals/helpers and unpromotedIN10 +remain unchanged. No publication/native command, owner edit, credentials or +private DB/customer data access. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-initial-review.md. +Evidence: docs/evidence/2026-10-11-zlib-release-product-initial-review/. + + +**Immutable143 refinement assessment, same completed T09:** all143 refined +hashes verify for manifestf170b34d8846919b18520264e7ba96e2ac11a3bce7899bc5710fcb0d22f4af29 +and unchanged published29/6ba2 proof. All25 source tests pass; independent original +remote keyword/intent and empty-coverage counterexamples are corrected. Gzip +bundle losslessly binds exact source. Two remaining Product findings prevent +acknowledgment: actual typed document decoder rejects duplicate SHA for sealed +live and identical rollback JSON; post-Ready command exports freeform note/reasons +and unknown review body in synthetic sentinel fixture. Require unique command +digests and exact typed packet check; require closed bounded structural receipt +allowlist/sentinel tests with actual canonical provider path unchanged. +Initialc67 exact20files/manifest and historical observations remain preserved; +original67 full source unavailable is explicitly disclosed, never invented. +No native phase failure/provider request/credentials/owner write. This completed +source-refinement record precedes formal143 changes-requested entry. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-refined-findings.md. +T05progress/WP0009active; final corrected freeze and founder approval pending. + +**Recovery authority dependency retained for next proposal:** current143 demands +fresh service-dependent founder readback before rollback as well as release. +Candidate/service failure can prevent that readback even though mechanical +rollback itself is independent of candidate readiness/DB. Root/Platform identified +this further proposal gap. Any newly proposed preauthenticated limited recovery +authority must be explicit in a new human packet, bounded to same763/c96/image-only +latestDB retention/time/deadline, exclude401/403/revoked/mismatch fallbacks and +disclose later-revocation uncertainty; current143 grants none. + + +**Exact481 actual provider-contract follow-through, same completed T09:** +all481 manifest3f1ce7ed678a457f73ab6486c7e81ef3360daf4f7ec1196f3031c3ffaace57ec +hashes verify; all36 source tests pass. Typed native decoder now accepts12unique +contents/13labels and defaultJSON register204591bytes; exactgzip bundle verifies. +Prior wiring/coverage/document/privacy findings are corrected. Proposed manual +outage recovery is explicit new-human consent only, bounded30min/deadline and +same763/c96/latestDB, with no401/403/revoked/conflict/other-phase reuse; separate +rollback completion and Ready recovered verification required. No currentgo. +Deep actual provider-source check finds final metadata validator still requires +root-added memo_id absent from real native outcomes body, and rejects native +null non-submission/prepared/in_flight/system metadata. Five isolated source +counterexamples reproduce rejection. Require exact native-contract fixtures +and fixed-request-context memo correlation without inventing provider fields. +Allad63564files/manifest and earlier findings remain exact historical bytes; +missing original67 fullsnapshot remains disclosed. Completed refinement record +precedes this formal changes-requested entry. No native/provider request, private +DB/customer data, real credentials, owner edit/push or taskclosure. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-native-contract-review.md. + +**Root-selected minimal correction:** fixed authenticated source1 GET/HTTP200/ +observation time with native response review=None/dict and dispositions=list of +dicts, output only has_review/disposition_count. Memo correlation derives from +fixed request, optional response ID must match. No review/disposition/state/actor +body output or consent claim; actual founder authority remains separate. Exact +corrected source/native-shape/sentinel fixtures still require review before ACK. + + +**Exact509 final source acknowledgment, same completed T09:** independently +verified all509 hashes for manifest767c6e93adfa1a844b1e25947f33e782b087a747452575f056b3df25bc88873c. +All38 source/synthetic tests pass. Original5 native-contract counterexamples now +accept without body/state/actor output;4 additional correlation/shape mutations +refuse. Minimal postReady proof uses fixed-route derived requestidentity/source1, +HTTP200/UTC/has_review/dispositioncount only, with no approval/PDPverdict inference. +Actual sourceLifecycleService native-shape fixture is synthetic, no realDB/PDP. +Typed12unique contents/13labels/register207511B and losslessgzip source bundle +verify. Prior481 source paths/Product135+64 map entries reconstruct exact hashes; +complete5365327 prior135files+manifest preserved as deduplicated hashobjects/map. +Proposed30minute outage consent remains newhumanpacket-only, not currentgo; +ordinaryfreshrootconsent/scan and separate recoveredverify gates remain distinct. +All earlier findings remain historical, missing67fullsnapshot disclosed; no +backfilledsuccess/newtrial/nativeoperation/credentials/ownerwrites. Completed +refinement record precedes final technical acknowledgment. T05progress/WP9active, +newfounderacceptance/actualinstalled/scan/providerproof still required. Rootfinal +2ACK/row19 memo-reference rebinding needs bounded confirmation before humanpost. +Review: docs/reviews/2026-10-11-zlib-release-product-owner-final-ack.md. diff --git a/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md b/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md index e16ecce..681d757 100644 --- a/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md +++ b/workplans/INFD-WP-0009-lifecycle-consumer-pin-repair.md @@ -186,3 +186,6 @@ and10purpose checks pass. Source/evidence:docs/evidence/2026-10-11-zlib-remediat 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 proposed close-downitem19 manualoutagerecovery term (not approved): freshrootconfirmedpre-releaseacceptancecache, same763/c96 oneDeployment/latestDBpreservingrollback≤30minANDdeadline, forbid401/403/revoked/conflict/mismatch/healthyservice/otherphase/futurereuse; subsequentrevocationuncheckableduringoutage explicitlyrequiresNEWhumanconsent. Product/Platform changed-requested143 reviews and fullbytes retained; typedproviderallowlist omitsfreeform fields, ephemeralPod guard anddeduplicateddocumentdecode tests added. 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.