diff --git a/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/netkingdom-progress.json b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/netkingdom-progress.json new file mode 100644 index 00000000..65b0ba18 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/netkingdom-progress.json @@ -0,0 +1,14 @@ +{ + "workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "id": "be95b020-5ce9-423b-a859-47b36c6d6247", + "topic_id": null, + "task_id": "200bf500-5084-5ae7-be26-3033fe1f296e", + "decision_id": null, + "event_type": "note", + "summary": "Published net-kingdom342a6f25 and befb0bc68cd25b625804fce559476eefd702521d; normal allocator source/primary readback verifies35NK48 tasks, all31 original UUID/status bindings unchanged. Added T32done independent agent-mint guard regression, T33done exact proposed issuer-template reference only, T34progress real Apps inverse backend missing, T35done byte-bound valid synthetic catalog fixtures. Canonical guarded current-kernel tests31passed/53subtests; unresolved Apps sessions correctly refuse. Parameters, seven descriptors, canonical1.1/default and1.2 unchanged;1.3 remains proposed, regenerated artifact byte-identical. Corrected inverse prototype requires fresh authenticated inverse session, but actual durable journal/all-release-writer exclusion/session backend absent under existing AppsT05; no owner assent or native acceptance. Existing T16/T06 and all16target native gates remain open. Evidence: dated nk48-current-source-publication-r3/verified-task-bindings.json and nk48-r5-f3-implementation-r2.", + "detail": null, + "author": "codex", + "session_id": null, + "created_at": "2026-10-17T20:02:37.226055Z", + "workstream_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/platform-progress.json b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/platform-progress.json new file mode 100644 index 00000000..79b0ddc0 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/platform-progress.json @@ -0,0 +1,14 @@ +{ + "workplan_id": null, + "id": "baafd842-a280-4bc1-8857-a1da0f4e9b62", + "topic_id": null, + "task_id": null, + "decision_id": null, + "event_type": "note", + "summary": "Platform source-only coordinator completion: published104ed90f42a9a86bf9fda343b49b65a85c9ee4b9 with proposed fixed issuer ClusterSecretStore openbao-keycape-{client_id}-issuer restricted to sso, exact ESO template, pure metadata helper and8passing tests. Independent source review accepts exact source fit, not formal owner assent, installed ESO compatibility, grant/custody or native authority. NK proposed1.3 now pins exact template digest; no parameters or descriptors changed. Actual RPF-1.3-T4 deliver/remove/authenticated provenance/session capabilities remain unimplemented; that label exists only in owner-review JSON, so no fabricated Platform task/workplan is used for this progress event. No live or credential action; source and unrelated staged brief/WORK edits preserved. Evidence: dated nk48-r5-f2-publication-r1 and nk48-issuer-reference-integration-r1.", + "detail": null, + "author": "codex", + "session_id": null, + "created_at": "2026-10-17T20:02:37.369532Z", + "workstream_id": null +} diff --git a/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/publication-commit.json b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/publication-commit.json new file mode 100644 index 00000000..832b54d2 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/publication-commit.json @@ -0,0 +1,937 @@ +{ + "exit_code": 1, + "commit": "d68d131e32c523fcf989fa0e7ad44b60b33c6067", + "base": "d68d131e32c523fcf989fa0e7ad44b60b33c6067", + "files": [ + { + "path": "docs/changes/netkingdom-target-2026-10-17/key39-infra-finalization-r1/finalization-recheck-progress.json", + "sha256": "a8a2142632f0bf5adc0148542c71b68a9a95e6b98730f5f3b825d6ca945f2d69" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/key39-infra-finalization-r1/finalization-recheck.json", + "sha256": "de18dc982213742c86d9b1e21af778a587275d84da128f76d8768204d3f6fee4" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/apply_prepare.py", + "sha256": "b294e6339e8c9af9ba911667646dd0ab52e75cf798de93238d84d1057c8a9e70" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/candidate.patch", + "sha256": "df69fb2ec9f1e1cf0dd94194e3c046c995ed8a7deabf65a8e9bec34662adb501" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/preparation.json", + "sha256": "c6fc0d7393fc40607ee8157ad2c1f92c73549fb8b52abedc517aac27c9137370" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/publication-inputs.json", + "sha256": "d9bf5555013aa9e399037672c80a72af23c6815db03088bee3db4c8583197146" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/run_validation.py", + "sha256": "16236aa55a774f8ea6d66da4ee17f7737c6d1b013d844ca9b9759e02b615af51" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/task-T35.md", + "sha256": "7d14d261ffbab2a930c4a3ff962cec786060cad6177280773cf1c0b0f006127f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/validation-child.py", + "sha256": "6bd4e3cda22e65f90bbb4006b403270405947293be2ae8bf8fdade0abed61f45" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/validation-guard.py", + "sha256": "13611f4de25dc7d01348905c4b365a0ffbb95fd93a61c75c8faf38d705c54f50" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/workplan.candidate.md", + "sha256": "3bce122c5b83d9044b142fc2cabc48de5558ab0d65dc0223a8ed0325f219e981" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r1/workplan.preimage.md", + "sha256": "f92962c5aa21aade0fc2f6b4f8d9a95932fe85b107413cdd2824b6ebe72c36d9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/apply_prepare.py", + "sha256": "b294e6339e8c9af9ba911667646dd0ab52e75cf798de93238d84d1057c8a9e70" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/candidate.patch", + "sha256": "df69fb2ec9f1e1cf0dd94194e3c046c995ed8a7deabf65a8e9bec34662adb501" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/canonical-validation.json", + "sha256": "12748c25e4177a7e8e38edce9e53ae683c6f4b4369314a5db0d7e2cc1659fc29" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/identifier-assignment.json", + "sha256": "1f78bf76592aea84c50dbb3b7181d703b41abdb60937833db30632395cf06673" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/identifier-preview.json", + "sha256": "5f28c6fa85de2e9bafbbd5f567c8c755aabfb3fdf4224cac05c1762910ccd512" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/preparation.json", + "sha256": "c6fc0d7393fc40607ee8157ad2c1f92c73549fb8b52abedc517aac27c9137370" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/publication-inputs.allocated.json", + "sha256": "33dac5218d7b54756b05fea6e1ea885dfc45634896fa3a45b543f9a46dc7afe9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/publication-inputs.json", + "sha256": "0820bbf9c40eda750e2fc374b43745a0ca82c076c9467f1f3e5c26350dd8db9f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/revision-refresh.json", + "sha256": "a5b341694aaeb84ef8cc7b76eeff3ba7a97f7cc24eb1e2158d3e85ed901c5667" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/run_validation.py", + "sha256": "16236aa55a774f8ea6d66da4ee17f7737c6d1b013d844ca9b9759e02b615af51" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/task-T35.md", + "sha256": "7d14d261ffbab2a930c4a3ff962cec786060cad6177280773cf1c0b0f006127f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/validation-child.py", + "sha256": "6bd4e3cda22e65f90bbb4006b403270405947293be2ae8bf8fdade0abed61f45" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/validation-guard.py", + "sha256": "13611f4de25dc7d01348905c4b365a0ffbb95fd93a61c75c8faf38d705c54f50" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/workplan.allocated.md", + "sha256": "53f9e5826bd7e34287d59f46089ee50c31598ba1a56bcf6d3249525f7e23bb9b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/workplan.candidate.md", + "sha256": "3bce122c5b83d9044b142fc2cabc48de5558ab0d65dc0223a8ed0325f219e981" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-publication-r2/workplan.preimage.md", + "sha256": "f92962c5aa21aade0fc2f6b4f8d9a95932fe85b107413cdd2824b6ebe72c36d9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-update-r1/candidate.patch", + "sha256": "df69fb2ec9f1e1cf0dd94194e3c046c995ed8a7deabf65a8e9bec34662adb501" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-update-r1/edit.py", + "sha256": "da1fef62073b92b59307e9f52115fa4fa784b260b5202db9d28fc62938982040" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-update-r1/implementation-r1.json", + "sha256": "be1e23dc29be795fb9cdd96172d288a83338c2c0f0cef45d6f29f974d83857df" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-update-r1/run.py", + "sha256": "8ad707bd9bb509e4b27503c284cee8aff3a7205882ca87febdace0a050c5f749" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-catalog-fixture-update-r1/test_runner.py", + "sha256": "d6f4e8f0f5c34557bf678543ae2c69202dc321f1226c2e1a2d462b2d81efc9c5" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/canonical-validation.json", + "sha256": "0e3cf1ad47f8aa486e8a6704563dfb548a59b7c19f1c7c639e0599a1cc026cb9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/consistency.json", + "sha256": "b76e4abfa87880dedb40f3bc87caed622237678c8745a26d34f4a70cb06ed242" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/consistency.stderr.txt", + "sha256": "f4a6aa1609a13600a0b97cbb08bbc03b3e247b619ff37912d37f7e109ce798ba" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/projection.json", + "sha256": "454680e758b154d8439cd9d458e9fb8b29dbff4fc501eaf2ea9b6b3c5147b057" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/projection.stderr.txt", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/publication-commit.json", + "sha256": "0e51461bb6934d3bf68d9c49023b0f2d7f10f451137cfe6e36a9c1000aa0972a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/publication-inputs.final.json", + "sha256": "8885f9a3561d5a48dc1cde11a86b374d65d5d81f32b8ef684e73a22bd0200c1c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/publication-inputs.json", + "sha256": "a0dcaecd1af428c4bfe6176d77d4595f260f351b4ddb61766141f6e8ba5db62c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/run_validation.py", + "sha256": "16236aa55a774f8ea6d66da4ee17f7737c6d1b013d844ca9b9759e02b615af51" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/validation-child.py", + "sha256": "6bd4e3cda22e65f90bbb4006b403270405947293be2ae8bf8fdade0abed61f45" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/validation-guard.py", + "sha256": "13611f4de25dc7d01348905c4b365a0ffbb95fd93a61c75c8faf38d705c54f50" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/validation-inputs-refresh.json", + "sha256": "7c359c9c05b1d5737166b59686eb765e4ba2e34497290a921704e0becdceb4a3" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-current-source-publication-r3/verified-task-bindings.json", + "sha256": "610ef9e256a8be8ada2af16d71675af53aecd9340436140936f93b1432fd1c43" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-issuer-reference-integration-r1/apply.py", + "sha256": "98285ff57389e37fa1f5d8d0f1b3fcbea9c7fad7927e6ee29fb890c4696e3877" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-issuer-reference-integration-r1/composition-regenerated.json", + "sha256": "773daa1df72cc7cf6a6d8aa082208181ca2438cdecc9179b1bc5b1c3a09099c2" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-issuer-reference-integration-r1/initial-syntax-failure.py.txt", + "sha256": "2f9d6e97df945195225573e976b4d809c784d51a59bc1611db8ad0b9fff92fd3" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-issuer-reference-integration-r1/type.preimage.yaml", + "sha256": "e75fe94110ef9fb7fb18072fe2856941b33507c99cb406d36576046481485d0a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-issuer-reference-integration-r1/verification.json", + "sha256": "9092dc8d772155b1a68fb23095b45233727d718eb8e255dd6894a518bd50f01c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-issuer-reference-integration-r1/workplan.preimage.md", + "sha256": "53f9e5826bd7e34287d59f46089ee50c31598ba1a56bcf6d3249525f7e23bb9b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/README.md", + "sha256": "78a4dbef0088f18db2b9c1dbe701b3e8a2c20516ae6d2039420a82b8d6b1fe66" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/canonical-application.json", + "sha256": "f3e08764dac6d407beb33b22afe9c154efd761c4f12f6b3d4941fc6b9076a233" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/canonical-net-kingdom-status-after.txt", + "sha256": "354b3dd65c711df0855c22ba053a4ca295d5491941c5a64c1157a0b7d43cf4cb" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/canonical-validation.json", + "sha256": "232416ea6fc095e868ec0f2af34a6b9c44885561b98cba2576ff72a49fc71bb4" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/implementation.json", + "sha256": "33d51784fe3ab7d9307292a265b0e684a8bc2fc77564ba58099833e41c849306" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/manifest.json", + "sha256": "9e137321abde7c2997f30a4ae7978883879c194a4c70c80ebf64d1972ecd66d5" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/preimage-frozen.txt", + "sha256": "63dd3d754896c0e8578d82f98ae6f8e460a6ac43f3937a95fa61f65f8aa4accf" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/preimage-mutant.txt", + "sha256": "6c823ed279c355a34169d7753817256890d56fe4a1996ea59aa01fb19e5a5e1f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/reproduce-scratch-checks.py", + "sha256": "8f0b01e606c03b3b27b178df60eab664a758df6fa3f9b1bc62ef8b58122c2cd8" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/scratch-kernel-mutation.patch", + "sha256": "dd12c63bd331b8f127149c402077e49fc66d62a452f48044486f58e79e0e29f7" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/scratch.json", + "sha256": "7e329154c5c60528d9f4387f0bbc9cfb4167c79decd49b14497e67d59e21e469" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/successor-frozen.txt", + "sha256": "275324dcf33eb852eb467832ff18fe9dd09f09d64d6ac37b43bf01766ea745d3" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/successor-mutant.txt", + "sha256": "9f03083de5863b3855e533b94671cfbab6fd0dd565e0a0b8c385d51d9510d97c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/test-admit-1-3-agent-mint-coverage.patch", + "sha256": "5bc1da176836eea65195cfe5fae965284c1f38809a502a0be58c231b60111a75" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/test-results.json", + "sha256": "2aab986ed96fb9fa683992051ffe6ec7b2a9327d816542b908dcc66f9dd8df23" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/test_admit_1_3_type.after.py", + "sha256": "c512ba00513d066fd1ca8af08fd6bf106fbd7a132981b1dcc5af80a745ab03f0" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f1-implementation-r1/test_admit_1_3_type.before.py", + "sha256": "f4f6a35cfbada462c939fe357e51fa5d03efc9d20c17a511f224c1359ca0faa5" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/OWNER-REVIEW.md", + "sha256": "7983fd841f09bc7584047426912c33d568c97b4c1126776f99aac42b34d2b742" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/canonical-source-readonly-state.json", + "sha256": "129d6926bb996e510ab4b41d30e738096b53b71de1fb2dd470fe0ac94848cbec" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/focused-tests.json", + "sha256": "8de5862a8d752dce0b3b96a9275e42952a99415a18d3f67c06bf9f5b6008d0e3" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/focused-tests.txt", + "sha256": "aab46c51d87198ad4be6dd3078f61286e2faf1ef4d76fa14298698388f78ab24" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/manifest.json", + "sha256": "754531fbef468bc0e432bd26d4dbed992294c34d57e23fe7c3b7f829f7a24ba4" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/netkingdom-entry-point.conditional.patch", + "sha256": "6784a21fbd10bd62712be2e0f4929034601c94629aa74ccaa2e93fc815eecd61" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/platform-candidate/docs/keycape-issuer-eso-contract.md", + "sha256": "7f59e59b17c58252982931ac61fe50dd7a07340add6c437fe48af36971eafe68" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/platform-candidate/manifests/templates/keycape-issuer-eso.yaml", + "sha256": "e17498bd8a4c820041a4105e4efe9c60c6a50953db8f621ff54887080065c743" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/platform-candidate/scripts/keycape_issuer_eso.py", + "sha256": "21c5797280c2a7825dbda8ac970d34a0cdef4c6458f68bce0b1c12407f122a87" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/platform-candidate/tests/test_keycape_issuer_eso.py", + "sha256": "223d4c5b349062b9f93e6af79e8d5feda44377ba41a11726f6f2b762691e8308" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/platform.candidate.patch", + "sha256": "a490df7dee41e15351da8d2906e1342edebb533984befe3d9ae74d952dbb091b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/review.json", + "sha256": "d99db9ab4f326308cde464129bbbb7573434e500fd03c130a37a590bac3643a4" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/source-pins.json", + "sha256": "6e896b6196a0aca01ddaf433b4d14cc041fc0296c5dd6404c3a698b941b61bd8" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/structural-and-patch-checks.json", + "sha256": "a3dc4cd405c412d4369986cc6736cd2d9eed02d4b86d95d62d5a9914106fdb14" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/type.before.yaml", + "sha256": "e75fe94110ef9fb7fb18072fe2856941b33507c99cb406d36576046481485d0a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/type.candidate.yaml", + "sha256": "ef02ddae3167bdd1558193a5f6db0379fb8cc84207531706d5ef35caabc3684f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/README.md", + "sha256": "522392bd35d2e0b22fd097509361d1476200a361c2ced22603d43e5758aa691d" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/canonical-validation.json", + "sha256": "2f81d70761b154b042d09321cb3b04e0d30d5f9ce79be05503870d245423bbf5" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/consistency.json", + "sha256": "1543d1dcd86706889463e3d0915d1a9aa02b72c3861400a010df44ed4c9b392a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/consistency.stderr.txt", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/integrate_platform.py", + "sha256": "ef8a1647e54013c0c6f2c11c8f74ef43fc97ceaca99e8f8caa89ee16ff80efba" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/integration-checks.json", + "sha256": "0ab8b058414dde1be9c7fd6ee2cb3f246e4deef2036d17472e846fae23bba4b9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/manifest.json", + "sha256": "c52692fb154cd46f1bfa62e7a0cda73241716b1024d992449e24e87e18750bbb" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/netkingdom-entry-point.conditional.patch", + "sha256": "6784a21fbd10bd62712be2e0f4929034601c94629aa74ccaa2e93fc815eecd61" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/packet-hashes.json", + "sha256": "4b5643c09d5e76bf1b034b16e3ddc204a5a83319d5317391b26d836d44529dc7" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/platform-source/docs/keycape-issuer-eso-contract.md", + "sha256": "7f59e59b17c58252982931ac61fe50dd7a07340add6c437fe48af36971eafe68" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/platform-source/manifests/templates/keycape-issuer-eso.yaml", + "sha256": "e17498bd8a4c820041a4105e4efe9c60c6a50953db8f621ff54887080065c743" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/platform-source/scripts/keycape_issuer_eso.py", + "sha256": "21c5797280c2a7825dbda8ac970d34a0cdef4c6458f68bce0b1c12407f122a87" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/platform-source/tests/test_keycape_issuer_eso.py", + "sha256": "223d4c5b349062b9f93e6af79e8d5feda44377ba41a11726f6f2b762691e8308" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/progress-paragraph.md", + "sha256": "151199597ba37225e5d46922ae90453f7338c5602ff81b3d870b579278bef2d4" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/projection.json", + "sha256": "b52dee68c6dd1d6c6fe6cb412a372f919af53fdab39c116d070ded6f2067af0b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/projection.stderr.txt", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/publication-commit.json", + "sha256": "4d7bfca9479f4fbf57a9ce3b9f737749f47d9e1ecae3afb07897cd16b43e4645" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/publication-inputs.json", + "sha256": "fb2893c6a95566849b30aa8ab61bf5f2d24a6ccf61e2242b6bff8a2e05b0004e" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-review-r1/REVIEW.md", + "sha256": "508afd5695eda998cf651874c00bcaa14725afd7a52b54a5c27854b0bfc44978" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-review-r1/evidence.json", + "sha256": "7fa36069248ba9c3bb6a57da0a940a35ac6d6a293a4edd653fa54e19a3f71d9e" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-review-r1/focused-tests.txt", + "sha256": "fd09c39d8434d0a9ed746dcddd0acd11657d67541c59ab632ef36be1f9cc7ec2" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-review-r1/reproduce.py", + "sha256": "61633872de8244db3bc94e32d406479605eceef1f2c6f415164e1b6c0680068b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-review-r1/review.json", + "sha256": "99b78098a6eb257b2e58c22b076d43c687cc2708560bba46b82f50129d72aecb" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/README.md", + "sha256": "bff0eb23ce4920da6058bf71a3dace209baca69a97c94bd9db4f765f71044eb2" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/candidate-validation.json", + "sha256": "17ed30550f7330beb49b5f866c634e78fbcbf98088fcc3e0ce92faa7b9042524" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/failure_inverse_omitted.txt", + "sha256": "543906e345b1b5daa28f0f3cfc620b3e06253cfb65c3a861586630dc63b57608" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/focused-tests-before-admission-binding.json", + "sha256": "c11b15e97b3da1c9b4819fec539b17823f98f4e6f39ece9bc5c8422325ddbc8e" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/focused-tests-before-admission-binding.txt", + "sha256": "9fb7e13b0e58942d2dc1921fd303ad372b1385841e3df88f5a23365a4a4b95bf" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/focused-tests.json", + "sha256": "8b1f7ecf75fedee9c03d1421efc6a6e9dd89eb99da70df5e8e4d47027b5fe331" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/focused-tests.txt", + "sha256": "99ddd55245e57dd9047793bd206158c66b723a7fe79cc8e7b785f8183f1e4654" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/implementation.json", + "sha256": "fce244e7a8bd1f1b9911c632de4831de291f358375183ff7959dc5615560f6d0" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/manifest.json", + "sha256": "5a6c08e13422cd2d21d5df5d9dce41685a6cf1cf1cdcd3a64f807806602f1dfd" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/negative-controls.json", + "sha256": "d13a0cf8b22abef1cba502b3fd3fd10c9f40955a3ffa8fee473d6189bfb25783" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/net-kingdom-unchanged-owner-status.txt", + "sha256": "354b3dd65c711df0855c22ba053a4ca295d5491941c5a64c1157a0b7d43cf4cb" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/owner-contract-candidate.md", + "sha256": "dfdc6573df76647790aabb26e4b228b04047dffd032fc33821024f8bbc9ba941" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/owner_configuration_contract.py", + "sha256": "62752f518b78fa7713bdb4d47e68decbf3aa89ecbc7950549ffdc3d08e01c554" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/post_revision_guard_removed.txt", + "sha256": "e9e4a134ece9095af5dbf790858b6e3ed44ae9388dde98cbb9a25b4183a16f50" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/railiance-apps-unchanged-owner-status.txt", + "sha256": "251b0eb219198e4ad334a76e0b39f23848242354105e97f3f61701168817cdd3" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/test_owner_configuration_contract.py", + "sha256": "51482fc5bad6af5c52d736ded7e7031291b18bc4949b9ff43d7dea78f3a8ad94" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/type-owner-configuration-inverse.candidate.patch", + "sha256": "6e23967d768759fc10203bcc25d81cb32c3d9222ed6fcb4a510a7cfe90e579bf" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/type.before.yaml", + "sha256": "e75fe94110ef9fb7fb18072fe2856941b33507c99cb406d36576046481485d0a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r1/type.candidate.yaml", + "sha256": "739c927ab494f4e0f6618e6e55394dd8dc4b720db428cd4973f7a81524e1ecd9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/README.md", + "sha256": "168b80f6cc0d50650a484d24696022cac8a4cf8279c2fb4da0c112cfbf10fd08" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/candidate-validation.json", + "sha256": "200132ab91899f6cfb2782b19ff59c72056f05197690cecdda708ccbdd343edc" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/focused-tests.json", + "sha256": "2f48369c3d00f9a43989486882519ee5c09d4eb1f5be599a92b06ca0d7cc8581" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/focused-tests.txt", + "sha256": "436459ced69db381f44a0f14d2ebcf00a4067f596a9881cfdcca7146c237d3a1" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/fresh-inverse-session.candidate.patch", + "sha256": "0b4a466c23cdeeb34789ab79c3d7cdc4a186495a910e23bc6491a29b5ff9cff8" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/fresh-session-guard-omitted.txt", + "sha256": "f47357c3303b026dcd9edcce564725a1c7d0d77969dd2857a6f1c008f169c1e1" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/implementation.json", + "sha256": "8517713a130f23cb38c597d333f65ec27700f347c16dca617e988f1cbc948abf" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/manifest.json", + "sha256": "14058734b40a0394a5d26b5063ba60ea343b1ad3ad47b789b9e640637c4e8c4b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/negative-controls.json", + "sha256": "8f96396f3d342f505d1dc6ac235a7f37a7c2481d51d100125f05b26619d3d314" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/owner-backend-next.md", + "sha256": "6243d7a70868224cb89fd30818c23ac379f37b6576e4947e444ef5057d06aea8" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/owner-contract-candidate.md", + "sha256": "4f9b91a2389acbc52558347a794da02faa6de4fb189373a11feeac10ae7e7c4f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/owner-source-inventory.json", + "sha256": "4510ce7b2f9eb9f4695ef4c57bba888c3839d3adcc397f4b4024be0fa71767bb" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/owner_configuration_contract.py", + "sha256": "2cd04432cf3681afc126736f7daacfab46630441aeb223b3e222d6951d24ce2e" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/test_owner_configuration_contract.py", + "sha256": "0f4246fea95bd3139c604da8712e6f6ac08976dd34d73e56ba83663ecba42761" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/type-owner-configuration-inverse.candidate.patch", + "sha256": "949ef6d3e0acc574e1d69c251d6d09e3da636bc73d043dec1c5677f30de29947" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/type.before.yaml", + "sha256": "e75fe94110ef9fb7fb18072fe2856941b33507c99cb406d36576046481485d0a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-implementation-r2/type.candidate.yaml", + "sha256": "6e744be190c4f047e609bef7670ff987fe1606b4d7dac3f740f164bebc205a13" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-review-r1/README.md", + "sha256": "659ce8da07ef4f16077b9b2fcf5e89c5c1ed177603f589acf344e57b12ace18f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-review-r1/fresh-inverse-session.candidate.patch", + "sha256": "0b4a466c23cdeeb34789ab79c3d7cdc4a186495a910e23bc6491a29b5ff9cff8" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-review-r1/original-authority-tests.txt", + "sha256": "6c5326d4a189509e823110e748a2e6baed9a8b809b15bc0aa61cc247f2a8df35" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-review-r1/patched-authority-tests.txt", + "sha256": "2d5029651d5d31355683da0f774a17eb418355714ae42af60b6a7b901b65676e" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-review-r1/review.json", + "sha256": "8199a9937c1091de5101c9a3c6bb0bcc3742677e0b5830e1b6a0b00c06fe85e1" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f3-review-r1/test_inverse_authority.py", + "sha256": "4c83407535dd37e571f293a9cc6b47d787b02b925402741d52c70a5532d76e1c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/apply_prepare.py", + "sha256": "e759865139078a6ea7509fa80c8521d81446a3f6fc236550628df3d1b14a9e50" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/consistency.json", + "sha256": "6eae09358f008c873345b417f33e606a70a862786a29cca1e870ed7f48a232b3" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/consistency.stderr.txt", + "sha256": "f4a6aa1609a13600a0b97cbb08bbc03b3e247b619ff37912d37f7e109ce798ba" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/identifier-assignment.json", + "sha256": "50c3ef9b95557fd01af751a84ee99e17b868fc128f4101c268cee8157f8b72b2" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/identifier-preview.json", + "sha256": "5f3bda9eeccf3dd639c2d0bd2315ff1c71e79de021200c53e136559ad658d67e" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/preimage.json", + "sha256": "93a300b5e744764221671b4a3534aad0bdf511b7b4b45643dd8c3b1e357b541f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/projection.json", + "sha256": "11cf3e0838f914a2aab970950dbe0d7f32846c11fc7b593791957d3f8381b497" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/projection.stderr.txt", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/publication-commit.json", + "sha256": "b692f5d2487bcf5f9a8d6db09bc6b0d4fe4a69ae39a6bf79184a26e32ef5f44a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/publication-inputs.json", + "sha256": "ebb1f954932140654291c0d9ddd6fcd8448e0edabb1dd194e82bd7633d2a71ea" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/workplan.allocated.md", + "sha256": "f92962c5aa21aade0fc2f6b4f8d9a95932fe85b107413cdd2824b6ebe72c36d9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/workplan.candidate.md", + "sha256": "f1e5245f565da2cc35b5e2d0adfcad42325c64205525d3f96171e604d8935708" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-source-followthrough-r1/workplan.preimage.md", + "sha256": "1502f1f474856172d969489cab8c0642d9456d93d326f6660df3772a4716d30b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/owner-source-state.json", + "sha256": "c9d3d3ae1372007b35526d592d3a7ea2d2bc6374d34840ef02fdda9535973785" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/prepare.py", + "sha256": "749703026767ccb196c01ac8b4c9fafbcdbd564d20ae73b468e297a114f073d6" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/candidate.patch", + "sha256": "1a3530a1e469fc03c2c29f1b66fa3ba1904e56bf2abcfb242c7a2ed015fb3e74" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/candidate/src/warden/case_run.py", + "sha256": "1bc73e30ac718fd75bbaff2a739495fc051aeaec73802ac71f0583cb2d53ab0a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/candidate/src/warden/case_type.py", + "sha256": "7b659b8d682863cd28df24025be4b10dd7ca3df724350a22d360c6af9615bca7" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/candidate/src/warden/routing/models.py", + "sha256": "b85372b2572a49af62e9534f26a33963b894633c7cd43dd2a28416b8959cba3e" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/candidate/tests/test_case_1_3_integration.py", + "sha256": "4862c5a004075eb18733d354bee7dda3f55e04a6ee8ecb44b76166347c121158" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/candidate/tests/test_case_admission_modes.py", + "sha256": "9110d6b6286cf0f85268d4970d1fd403250da3f04351d70b1fd2d9d7a93e2d89" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/candidate/tests/test_case_attended_boundary.py", + "sha256": "4615e653f06144305ea1a84e98bc6260e16ed41ef9e5db2d0f162ef9f723ef2d" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/evidence/run.py", + "sha256": "19746062528f63909a268e8d97e801c9d116d57e5a1c0e148b2a22ec0ecd0f8f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/evidence/sitecustomize.py", + "sha256": "ffaa62732340efd8d40bb54a3c4499cb62a89896e5ee825c8fe7b5d2bf93db22" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/implementation-r1.json", + "sha256": "b9ee843bba417c82ad77ac8a221cf64dd5088aa640528524b2e0ef0c129d3184" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-fixes-r1/test-isolation-proposal.patch", + "sha256": "0f6c46303ec24f337e4190ec84773ccefb4833241233b4b7d56bd1927eba838c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/integration_runner.py", + "sha256": "d77da107d67ec827f19e0c46045a2802081a62283c3bdb5bfec35feabb454234" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/kernel-review-r2.json", + "sha256": "9002efdac67f451ef4fc59c02056c8e3ed23de57677ee9974d7477614960e515" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/reviewer-probes.py", + "sha256": "e52025893ca0755b3a62e2585cf2f16002a5b705f7cfb0582b05435d3b9e336a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/run-baseline.py", + "sha256": "02e2a409cd23fb52f518c202c923877fdcc381f708b4e8d77bad04e034b46e73" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/run.py", + "sha256": "c6f931ba4ff9b0ef42627030a016dd7ebe3f353b3024f1c40b80df890aefe59f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/setup.py", + "sha256": "fcdeb50a196ce5afda6243b9fb51584af58ba5d55e75a4caed017f742d560500" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/sitecustomize.py", + "sha256": "6b7cec873fa1fca6767b77f514bec499adb5e1e7745dbc8eddf36771917ad4f4" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/commit.json", + "sha256": "16883619d6ae1433b30c61ea2fbb8ada44f4423d1102a9390867efa580d15de2" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency-preimage.json", + "sha256": "9c8d006e95c32bbd689c16a5ee575e3d54c46b327d5f2f47a697570480d8e9fb" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.json", + "sha256": "8032a9d073c6334bc7136ca88a2878b2525f552c4e25266884d45456f4152fb6" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.stderr.txt", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/focused-tests.txt", + "sha256": "a25e2b6355475168ff5a9dba6deec605584711d5c63de8ddc3da4644c93f6a5e" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integrate.py", + "sha256": "8eab2d72e67a9af5230d7978d9533d964b8162a85a7fc053a210da05b3a5219d" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integration.json", + "sha256": "0781a745e9bcb4e052c80818a71695a1c91672345c7cfd7628fb0a56a7075d82" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.json", + "sha256": "00a81cede4636a8adcbb2315a3a79c69d472accbab83f5d99cbb51a5ffa48653" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.stderr.txt", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/publish.py", + "sha256": "c632d670d3b53efbf7a1b5c2c29402e3e5d57cce3a40f119e672153e3fe21189" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/verification.json", + "sha256": "f6d9efb1f3118a80945465b08ba17e26b76ab14d017e7fba56ab3e911767b2ac" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/workplan.preimage.md", + "sha256": "721a90b2ed8c896257c34a1451eb642cb8824c8263e37c483fb61b36adc54088" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/commit.json", + "sha256": "7bf38dbd9c4b6c59f6b1b45e86abeba8bff2a7a0e847da85f7e7e6f422a99186" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.json", + "sha256": "b70a0b6356d42b173b9d11af7c0f4df6850e4c3bc186dee69a7348f2d66e62bc" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.stderr.txt", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/full-unit-result.json", + "sha256": "9f9460f8b0f06e5f5668e554a059300ed5b40fbb1ea0ffc3e1092fe0ac11a4f0" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integrate.py", + "sha256": "333d24d6f01d6d23b571e02846d71938ae8b78fee63aefbe90d7a7c1888cf7e1" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integration.json", + "sha256": "663628195799e298e47e01cf9067fddc0f21a1c06967d11266c2fdc8a9e68bf0" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/prepare_publication.py", + "sha256": "5a22d66b1986c5b17414ea5d70dbd42bda1f69c24941bc80a6aeca86c79d4795" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/projection.json", + "sha256": "1d63a42ddbe4055fb70035948f3e2dea2dd167498bad87282f095ecfcdb32a89" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/projection.stderr.txt", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/publication-commit.json", + "sha256": "ced6545c22193dd4d8dc272bf16603a9ed9cf0973e21c94a97ede68f289dc423" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/publication-inputs.json", + "sha256": "bc2f8fd65e7517849f52c888baf89f7f160b20027a946d3aacbf1e5c5aa5102f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/root-disposition.json", + "sha256": "190780394f6b062be7483c40da28ab1d28a6a29794fb88dc2e77264faa60b9f7" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/README.md", + "sha256": "7322316db3fdd7107efe82d42166a25dd494161f8062aaa833b4497392fd04bb" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate.patch", + "sha256": "1fe65076ce7e633be304fc779bf2c87b7ee1e4e460de55ca74355b5842d036f5" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/Makefile", + "sha256": "8cf08ec680ed6bd323a1ce8475ade731dbeebcd64ffd43ecd169308f8a727940" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/docs/development/safe-unit-tests.md", + "sha256": "b157c3e6956a41dcd9fc3912d0c7d09a664f11f08f0f8a8e4cae57fac9747cf7" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/scripts/run_unit_tests.py", + "sha256": "8157e44df298fa4c47c6c08b2dc68e3ac945c4beb3f47a251a7afbbc55eb1bd2" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/fixtures/workload-coverage/provenance.json", + "sha256": "a4a203c1bd7bc5b8039d1b2525bea65dbae288a3f552969e4218cd5abda96990" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/fixtures/workload-coverage/rapp-core-hub/declarations/rapp.yaml", + "sha256": "9ce902da0c77809f1094a634244652835b162f59682e9fa6923d8c8aa4ed4a3c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/fixtures/workload-coverage/rapp-issue-core/declarations/rapp.yaml", + "sha256": "a1956deecf2f0fbca44549e5ea5e8f1c4b74ebf91a9482c64c982491af0d923b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/fixtures/workload-coverage/rapp-qonto/declarations/rapp.yaml", + "sha256": "15aa9809e8d6a120c516be5ce9adfb72c00382140c171e791083ad117f503b3f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/test_case_plan.py", + "sha256": "944bc2a725ca1b7a10f4516c3ceed65f99627057dd15a859da4f8ffb3d97e71f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/test_case_type.py", + "sha256": "5a217a172e7e2ffbea66f1beee9a1c18bf5e97f9fb25b83cb96b6ba976cbb2a5" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/test_layer_conformance.py", + "sha256": "3edf0a0d49c3560278a564c477834335cfaf5243341cb9345f0d4bf8994db56c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/test_safe_unit_runner.py", + "sha256": "6b623d18879e7564dd11447c16d3ec9f80321a25a525fcd0306b6a903a68031a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/test_workload_join.py", + "sha256": "1828908a5cd1f0bc13ca367dbd1245221c52d1ac60789c9e3bd51dd36cb8beb9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/tests/unit_isolation_probe.py", + "sha256": "726d3e01ae21c1379588e1f08459449908cc8a75ffea1b337c33a1a888c66f59" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/workplans/WARDEN-WP-0044-security-case-follow-through.md", + "sha256": "074bfcf2f7841e78bcd404bf573982d244b00f2f500e198b7fe80fea660de991" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/implementation.json", + "sha256": "8033b323178e1d3b031a45466687fe05479627e99559d9de7b3baef52ab8671f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/packet-hashes.json", + "sha256": "1567ff1ad558fdb464818bb555dab79152477c85113f89874daa3049029733a8" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/review-r1.json", + "sha256": "6cb7e3d1af81ffbf9bd4908841ae5c4772a96c909965f077e5ffd8dc57f0b8b4" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/reviewer-correction.patch", + "sha256": "9407289f8da41ed6fff367baf566ad30f5510a2627c14e0ac0cf971bf9b465c9" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/reviewer-probes.py", + "sha256": "0b49fc2ad7aeeca0cabb0961b06d8cdc85ae5109f36bf81e4245e55127357574" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/run.py", + "sha256": "f7fc81b8acbcd0712ee5f79a16b27aa1cdd0af11db761f9e94fba8b91e51ec8a" + }, + { + "path": "docs/netkingdom-target-implementation.md", + "sha256": "8452750de483b79a2cbb09b192d18cf6dc421ad736dd06c738af0727c3d74854" + }, + { + "path": "docs/netkingdom-target-security-architecture.md", + "sha256": "ec2079be18c7cdb8a1e4fdbd22131c08c83721d7a1bf18b4802bc5e229520f35" + }, + { + "path": "workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md", + "sha256": "2f4adf4348346e31c4581754352f0d3329231af75333b988d2dc336d4f4b8a35" + } + ], + "stdout": "", + "stderr": "{\"blocked_blob_ids\": [\"187aa2fedbd42b96194059f30aedc99353ebf64b\", \"3e6e3ae1861a9dcce8916a85dbd30ec99d097a58\", \"b23adafc5a1f891f55dfcfd4aa8314074e10f392\"], \"scanned_blobs\": 199, \"scanner_sha256\": \"88f91962aa2f93ac6ab281d553b9e125f5197bbbce38f9f2437f7299c32e5509\", \"scanner_version\": \"8.30.1\", \"scope\": \"changed-staged-blobs\", \"status\": \"blocked\"}\n" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/scanner-blocked-paths.json b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/scanner-blocked-paths.json new file mode 100644 index 00000000..3b8a197a --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/scanner-blocked-paths.json @@ -0,0 +1,17 @@ +[ + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/manifest.json", + "oid": "187aa2fedbd42b96194059f30aedc99353ebf64b", + "stage": "0" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/packet-hashes.json", + "oid": "3e6e3ae1861a9dcce8916a85dbd30ec99d097a58", + "stage": "0" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-review-r1/evidence.json", + "oid": "b23adafc5a1f891f55dfcfd4aa8314074e10f392", + "stage": "0" + } +] diff --git a/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/warden-progress.json b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/warden-progress.json new file mode 100644 index 00000000..cb4c47fb --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r1/warden-progress.json @@ -0,0 +1,14 @@ +{ + "workplan_id": "f7e81013-6868-5d99-8528-ba75a442eca9", + "id": "df65784e-68c7-424a-a134-9acceb2fa084", + "topic_id": null, + "task_id": "bcbf6c91-2c04-5c16-ae8c-5d6c06fd6b89", + "decision_id": null, + "event_type": "note", + "summary": "Published reviewed mode-aware case kernel and corrected ordinary safe unit-test entry in ops-warden b593c879831378db7dc62adfabdfedf2d44ddd38 (kernel implementation ae7bc73, normal allocator-only historical UUID commit 922c26d retained). Cached attended run/rollback/reconcile recheck caller/session and the authenticated catalog snapshot before writes/callbacks. Original kernel review and unknown ambient lookup remain preserved. Original safe-runner candidate rejected for O_TRUNC and unchecked projection hashes; minimal reviewed corrections accepted by root and full ordinary make test passes785 with4 deselected under synthetic parent token/HOME/Python/pytest controls. Trusted-test accident guard only; directpytest/native/non-open/preopened-descriptor limits explicit. No production src/catalog/parameter pin changes from test runner, no draft promotion, credential or native action. All4WP44 task bindings/statuses unchanged; T03 progress, native first case remains open. Evidence: dated warden-kernel-source-integration-r1 and warden-safe-unit-integration-r1.", + "detail": null, + "author": "codex", + "session_id": null, + "created_at": "2026-10-17T20:02:37.087423Z", + "workstream_id": "f7e81013-6868-5d99-8528-ba75a442eca9" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r2/public-digest-derivation.json b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r2/public-digest-derivation.json new file mode 100644 index 00000000..1e36f1d7 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/source-corrections-publication-r2/public-digest-derivation.json @@ -0,0 +1,32 @@ +{ + "schema": "custodian.public-digest-publication-derivation.v1", + "scanner_rejection_retained": "../source-corrections-publication-r1/publication-commit.json", + "diagnosis": "All values in the three scanner-blocked metadata documents are public file/archive/commit hashes or non-secret metadata. Every SHA256 verified against its exact public source artifact before conversion.", + "verified_public_artifacts": 43, + "representation": "Bare 64-hex public digest values become explicit sha256:; no credential encoded, no scanner policy/config/ignore/allowlist change.", + "exact_original_reconstruction": "Load JSON, remove sha256: from each value matching that exact 64-hex scheme, serialize with json.dumps(indent=2)+newline. Verified byte-identical for all three originals. Historical input pins still refer to those exact reconstructable original bytes.", + "retained_local_original_directory": "/tmp/custodian-original-public-digest-metadata-awy5nzfr", + "rows": [ + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-implementation-r1/manifest.json", + "original_sha256": "sha256:754531fbef468bc0e432bd26d4dbed992294c34d57e23fe7c3b7f829f7a24ba4", + "published_sha256": "sha256:cfbc40890f94302764b7b6302a90ea07e975d1eadad91b9dd9642c45a5b13717", + "exact_original_reconstruction_verified": true, + "executable_and_template_input_bytes_changed": false + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-publication-r1/packet-hashes.json", + "original_sha256": "sha256:4b5643c09d5e76bf1b034b16e3ddc204a5a83319d5317391b26d836d44529dc7", + "published_sha256": "sha256:057f7cf2a6ea98ddd5963cf2608cd8d7a43847048e77aa2c2a571e7f3a3c53d2", + "exact_original_reconstruction_verified": true, + "executable_and_template_input_bytes_changed": false + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/nk48-r5-f2-review-r1/evidence.json", + "original_sha256": "sha256:7fa36069248ba9c3bb6a57da0a940a35ac6d6a293a4edd653fa54e19a3f71d9e", + "published_sha256": "sha256:cc8cf37c1d4f56dfb16233b31e293c158d68cd4c49a1ab1b730205cb325531b6", + "exact_original_reconstruction_verified": true, + "executable_and_template_input_bytes_changed": false + } + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/workplans/WARDEN-WP-0044-security-case-follow-through.md b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/workplans/WARDEN-WP-0044-security-case-follow-through.md new file mode 100644 index 00000000..b46c0d62 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/candidate/workplans/WARDEN-WP-0044-security-case-follow-through.md @@ -0,0 +1,378 @@ +--- +id: WARDEN-WP-0044 +type: workplan +title: "Follow through on KnownSecurityCases along their type's route" +domain: infotech +repo: ops-warden +status: active +flavor: implementation +owner: claude-code +topic_slug: netkingdom +created: "2026-10-08" +updated: "2026-10-11" +depends_on: [] +related_repos: + - net-kingdom + - ops-mason + - key-cape + - railiance-platform +state_hub_workstream_id: "f7e81013-6868-5d99-8528-ba75a442eca9" +--- + +# WARDEN-WP-0044 — Follow through on KnownSecurityCases along their type's route + +## Why + +NetKingdom is introducing SecurityCaseTypes (net-kingdom `NK-WP-0048`, canon +`security-case-types_v0.1`, proposed). Once a case of an implemented type is +accepted and ops-mason has materialized its structure (`MASON-WP-0010`), +ops-warden carries out the remaining steps. These are the owners' declared entry +points, run on the authentication path the type defines, followed by the type's +verification. + +Today ops-warden routes needs and, for `exec_capable` lanes, proxies fetches as +the caller. It does not yet know about cases, and each new integration ends with +a founder running a hand-written script (for example the proposed KEY-WP-0038-T02 +rollout). This plan gives ops-warden the follow-through role, without widening +what it may do: each step still runs under its owner's entry point and the +caller's identity. + +## Tasks + +```task +id: WARDEN-WP-0044-T01 +status: done +depends_on: [NK-WP-0048-T03] +priority: high +state_hub_task_id: "ef0920fc-418e-52cb-acff-9a5c0c728bf5" +``` + +### T01 — Define the type's follow-through section + +Propose the `follow_through` part of the SecurityCaseType schema together with +net-kingdom. For each step it names the owner entry point, `warden_executes`, +the auth method and lane, whether an attended human login is unavoidable (with +the type's justification), and the verification command. Write it for the first +type, `oidc-browser-relying-party`, covering key-cape client registration, +custody minting and LLDAP group membership. + +2026-10-08: NK-WP-0048-T03/T04 landed with a drafted section. Review is in +`history/2026-10-08-oidc-rp-follow-through-review.md`. It requires three +changes before T02: a per-step `lane`, a narrow `warden_executes`, and +`value_handling`. It also lists four refinements. This task is done when +net-kingdom acknowledges the review (NK-WP-0048-T05). + +2026-10-09: R4 was withdrawn in favour of ops-mason's per-case +`{consuming_service}-keycape-client`, with the entry body templated in the type +(R4′, see the addendum in the review). + +2026-10-09: the revised 1.0 type and canon now carry R1–R3, R4′, R5–R7. +`warden case check-type ` (`src/warden/case_type.py`, tests in +`tests/test_case_type.py`) checks a type's follow-through mechanically: the +live type is schema-conformant, with one attended session +(`key-cape-oidc-login`). It is not yet plannable, because two lanes are not +in the catalog: `identity-provisioner-groups` (net-kingdom) and +`keycape-client-secret-generate` (railiance-platform). These gate T02, not +T01. T01 still closes on net-kingdom's acknowledgement (NK-WP-0048-T05). + +2026-10-09: ops-warden cannot add `identity-provisioner-groups` as the type +declares it. The provisioner accepts only user-engine's runtime token and +admits only user-engine pods, so no caller-identity path exists. R8 (review +addendum) asks net-kingdom either to move `ensure-groups` into the existing +attended session (recommended) or to give the provisioner an operator +credential. `keycape-client-secret-generate` needs a generate-in-custody entry +point from railiance-platform, and the broker does not have one yet. Both were +sent to their owners. + +2026-10-09: done. net-kingdom took R8 option 1, so `ensure-groups` runs attended +in the `register-client` session and `identity-provisioner-groups` is dropped +(net-kingdom `0e86f95`). The founder acknowledged the type with memo r4 (hub +decision `e418263e`, NK-WP-0048-T05 done). + +```task +id: WARDEN-WP-0044-T02 +status: done +depends_on: [WARDEN-WP-0044-T01] +priority: high +state_hub_task_id: "5f68c991-f490-58f8-a121-92f74073d272" +``` + +### T02 — Plan a case run + +`warden case plan ` checks that the case is accepted and materialized, +resolves each step to its catalog entry and entry point, and prints the run: +which steps warden executes, which run as the attended caller, what the +verification is. No secret values; no execution. + +Tests: refuse an unaccepted or unmaterialized case; refuse a step whose catalog +entry is missing or not reviewed; show attended steps explicitly. + +2026-10-09: done. `warden case plan [--type] [--json]` +(`src/warden/case_plan.py`, 14 tests in `tests/test_case_plan.py`). It refuses: +- a case that is not `materialized`, or has no acceptance record +- a type that is mismatched or not acknowledged +- any `case check-type` finding, including a missing or unreviewed lane +- undeclared, type-fixed or secret-sensitivity parameters +- a placeholder the case does not set, or an unsupported `when` + +It fills type defaults (`issuer`), evaluates ` == ` conditions, +renders owner, entry point, auth and ready_check, groups attended steps per +lane, and lists the applicable verification. + +The live Forgejo case is correctly refused: it is `accepted`, not +materialized. A materialized copy, with a stand-in lane for +`keycape-client-secret-generate`, renders six steps: two attended steps plus +`register-client` in one `key-cape-oidc-login` session, one warden step +(`mint-secret`), and two owner steps. Seven checks follow. + +Observation for net-kingdom (not blocking): `bind-env` runs before +`register-client`, in type order. Its entry carries a literal +`KEYCAPE__CLIENT_SECRET`, which is not a `{param}` placeholder, so it +reaches the plan unrendered. + +2026-10-09 follow-up: +- **Format specs.** `_render` supports net-kingdom's `{param:env}` spec (upper + case, `-` as `_`, the same as `keycape-client.py env_name`) and refuses any + other spec or `!conversion`. +- **Case reference.** The plan prints `case-ref: @sha256:` over the + case file's exact bytes. This is the reference proposed to railiance-platform + for `credential.py generate --case-ref` (RPF-WP-0054-T01); the broker + re-derives it from the file. +- 18 tests now. + +```task +id: WARDEN-WP-0044-T03 +status: progress +depends_on: [WARDEN-WP-0044-T02, MASON-WP-0010-T03] +blocking_reason: "Local durable execution kernel and injected failure harness implemented. Native acceptance still requires authenticated owner machine descriptors/adapters, actual Forgejo materialization receipt, contained session integration, ordered verification and first native run." +priority: high +state_hub_task_id: "bcbf6c91-2c04-5c16-ae8c-5d6c06fd6b89" +``` + +### T03 — Run and verify a case + +`warden case run ` executes the plan. Owner entry points run through +the existing proxy as the caller; steps that need an attended login use the +existing contained login envelope (silent command, session revoked afterwards), +grouped into as few attended sessions as possible. Then it runs the type's +verification and writes a receipt without values. `warden case rollback` +reverses exactly this case's steps. + +Acceptance: the Forgejo reference case (NK-WP-0048-T06) reaches `live` through +this path, with no case-specific script. + +2026-10-17: original-intent lookup/context interface for NK-WP-0048-T15, source +and synthetic tests only. `src/warden/case_run.py`: `Executor.run` writes an +`OriginalIntent` (schema `warden.case.original-intent.v1`: the dispatched run +Invocation — attempt, step, owner, target, actor, principal, lane, all six pins, +tenant, realm — plus admitted adapter source) in the same SQLite transaction as +the pre-dispatch journal row. `Journal.original_intent(binding, current, source)` +returns it after restart and refuses on a missing record or any +pins/source/step/owner/target/actor/principal/lane/tenant/realm mismatch, before any +journal write, so the step stays uncertain. An adapter's +`reconcile_original(ReconcileContext(original, attempt))` receives the original +intent separately from the new reconcile attempt. This is Warden's record of what +it dispatched, not owner created-only provenance. Current Executor.admit leaves +tenant/realm empty; the reserved coordinates establish no admitted provenance. +Owner descriptors/adapters, contained session integration, Forgejo +materialization and the native run remain open. + +2026-10-17 source consistency follow-through: retained the additive intents table +and reconcile_original callback and fixed four reproduced local defects: original +actor mismatch, payload/SQL attempt-ID mismatch, orphan intent without its +matching original running receipt, and arbitrary nonmetadata values accepted by +the original-intent serializer. Exact bounded field validation, duplicate-free +bounded decode and save-time intent/invocation/running-state equality now preserve +the original receipt linkage before owner lookup. No new context store, native +verifier, trust root, adapter activation or authority migration was introduced. + +The actual canonical focused kernel and new consistency suite passes 54 checks; +owner-installed Ruff check/format passes. The existing generated-data/synthetic +owner fixture and a distinct interpreter prove source correspondence/refusal, +not independent native custody or creation. Earlier comparison probes and failed +preparation are retained. Current caller and fresh session/grant revocation checks +remain required; original owner payload/revocation, exact native readback and +created-only provenance still need independent authenticated owner admission. +No JSON/SQL context, unknown tenant/realm, changed run-sheet or legacy missing +intent supplies recovery, replay or undo authority. T03 remains progress and all +native acceptance gates/statuses/dependencies/UUIDs remain unchanged. Evidence: +Custodian original-context-compare-r2 and original-context-owner-followthrough-r3 +under docs/changes/netkingdom-target-2026-10-17/; publication/projection is separate. + +Agreed with railiance-platform (RPF-WP-0054-T01, 2026-10-09): +- `mint-secret` runs `credential.py generate --grant keycape/client-secret-generate + --client-id --case-ref --case-file ` as the caller's + child process. The broker re-derives the case-ref and checks status and + client_id. +- warden refuses that step when `WARDEN_AGENT_ID` is set. + +2026-10-10: railiance-platform implemented the command (RPF-WP-0054-T03). It is +catalogued as draft `keycape-client-secret-generate`, with `exec_owner` +railiance-platform and `exec_capable: false`. `warden case check-type` now +reports the lane as LANE-UNREVIEWED rather than LANE-MISSING. Before it can be +activated: +- the founder binds the issuer policy to the operator OIDC role +- key-cape confirms the secret format +- the RPF-WP-0054-T05 probe passes + +2026-10-10 (later): +- **Broker lane.** The issuer role is bound (CCR-2026-0043) and the T05 probe + passed (railiance-platform `21b8af3`). Only key-cape's format confirmation is + left. The playbook now includes the issuer-role login, a 15m token with + unlimited uses that `warden case run` must group with the attended session. +- **Env spec.** net-kingdom adopted `{client_id:env}` as a 1.0 patch + (`9a9b8e3`). The plan renders `KEYCAPE_FORGEJO_CLIENT_SECRET`. +- **Forgejo case.** Rendered and built by ops-mason. It is not yet + `materialized`: MASON-WP-0010-T03 waits on the railiance-platform CCRs and + their founder apply. + +2026-10-10: `keycape-client-secret-generate` activated on railiance-platform's +go-ahead (message 20973a9c) after key-cape confirmed the format (4e0213b3). +`warden case check-type` on the live type now reports `plannable=True`. The +only thing T03 still waits on is the Forgejo case reaching `materialized` +(MASON-WP-0010-T03). + +2026-10-10: net-kingdom moved the type to 1.1 (`e2174ce`) and re-pinned the +Forgejo case. 1.1 adds the verification `consumer-enforces-groups` and requires +the hand-over to enforce `access_groups`. `check-type` on 1.1 reports +`plannable=True`, and a materialized copy renders six steps and the new check. +The case-ref digest covers the whole case file, including `status`, so it +changes when the case becomes `materialized`. `warden case run` therefore takes +it from the file at run time, and the broker re-derives it from the same file. + +```task +id: WARDEN-WP-0044-T04 +status: wait +depends_on: [WARDEN-WP-0044-T03] +blocking_reason: "Catalog integration follows a proven run." +priority: medium +state_hub_task_id: "4a0fa4a7-5ca9-518a-ab92-a79a5e2cf93e" +``` + +### T04 — Catalog entries from types + +Let a type contribute reviewed catalog entries once, so that every case of that +type routes without a new catalog edit. Cases add parameter values, not routes. +`warden route find` should be able to answer "which SecurityCaseType covers this +need?" before anyone builds by hand. + + +2026-10-10 consolidation source prototype (not an accepted owner adapter API): +`src/warden/case_receipt_state.py` provides a pure immutable receipt reducer, +with exact case/type/adapter/catalog/acceptance/run-sheet pins, running intent +before dispatch, uncertain recovery after a lost result, no success replay, +explicit retry-safe failed-before-change retry and created-only reverse undo. +It executes nothing and accepts no command output. The caller must durably +persist running before any future side effect; storage/authenticated owner +receipts/live adapters are not implemented. Focused offline tests cover changed +pins, lost receipts, retry/refusal, uncertain rollback and shared-object +preservation. Source proposal: `docs/security-case-execution-proposal.md`. + +T03 remains open: typed owner execution/receipt contracts require review, the +Forgejo structural materialization needs owner receipts, and CLI dispatch, +contained sessions, native verification and provenance remain unimplemented. +There is a circularity to resolve with net-kingdom/ops-mason: materialization +cannot require mint-secret if mint-secret is itself a follow-through step whose +planning requires materialized. No case status is changed by this prototype. + + +2026-10-11: the exact execution-design memo version1 has confirmed native human +acceptance (approval e46b149b-ec3c-4b3b-98a7-dcb4934448ca). The approved proposal +bytes remain unchanged. `src/warden/case_run.py` now implements a closed v1 local +execution seam, independent admission/evidence callbacks, private transactional +SQLite receipt storage, process locking, running-before-dispatch, crash recovery +to uncertainty, explicit safe retry, separately required broker-grant and parent-session revocation +proofs, native owner reconciliation and created-only +reverse rollback. Thirty-seven kernel tests and fourteen reducer tests pass; +ruff checks pass. See `docs/security-case-execution-kernel-v1.md` for exact scope +and receipt provenance. No installed native adapter or live CLI execution is +claimed. Current prose types stay plan-only; acknowledged descriptor/type machine +seams and authenticated owner/caller receipts are still required. T03 progresses +for implementation but cannot finish before ordered native Forgejo acceptance. + +2026-10-16 source preparation (isolated checkout; no native acceptance): +T03's browser parameter mismatch now has a producer-validator-backed projection +in `case_inputs.py`, explicitly configured on the real Executor. Exact 1.1/1.2 +parameter definitions and all four reviewed producer modules are pinned; full case +validation admits reviewed security-sensitive metadata while unknown/fixed/secret +inputs and type/producer drift refuse. Only the reviewed descriptor target +reaches the owner callback; no parameter journal payload is added. Actual +Executor/producer tests cover positive versions and refusal/containment paths. +Acknowledged machine descriptors, authenticated owner evidence, real Forgejo +materialization and contained native sessions remain mandatory and unimplemented; +T03 stays progress, T04 stays wait. No type or case status changed. + +2026-10-16 producer source refresh: independently reviewed NetKingdom +`015694ee414c802dc2ef1fa0120dfed610086e69` optional descriptor-map repair. +Only the validator/evidence source pins change; exact parameter and transitive +source identity remain enforced. Actual canonical producer, Executor and reducer +suite passes 87 checks, including 14 new malformed-map integration cases; all +four missing/changed modules still refuse. Review: +`docs/reviews/2026-10-16-browser-producer-pin-refresh.md`. No adapter attestation, +native acceptance, credential use or privileged dispatch. T03 remains progress. + + +## T03 source correction and safe-test follow-through — 2026-10-17 + +The reviewed KERNEL-2/3 source now authenticates and parses the actual catalog +snapshot, checks lane owner/risk/delegation, and resolves each type step's Warden, +attended or owner dispatch mode. Four proposed attended-change lanes remain +DRAFT; no lane is promoted and PARAMETER_PINS still contains only 1.1/1.2. + +Independent review KR1-F1/F2 found cached attended run/rollback/reconcile could +lose the human/runtime boundary, and actual admission lacked the planner's +establishing-login checks. The exact successor retains the mode and authenticated +catalog bytes and repeats caller/session, agent marker and attended-lane checks +before any journal write or callback on all three operations. Planner and executor +share active/reviewed login/session-lane validation. Two unresolved Apps session +lanes correctly remain refused. Integration tests now explicitly disclose all +fixture authority substitutions; they establish no owner or native authority. + +The new 19-test regression matrix reproduces 13 failures on its predecessor and +passes on the candidate. A fresh independent reviewer adds changed-authority and +catalog-snapshot probes: 90 focused checks and six guarded integration checks +pass; the combined predecessor comparison has 22 expected failures. Author's +isolated full suite passes 765 with four integration-marked tests deselected. +Evidence: Custodian warden-1.3-kernel-fixes-r1 and warden-1.3-kernel-review-r2 +under docs/changes/netkingdom-target-2026-10-17. Original unsuccessful review, +invalid setup attempts and unknown ambient-lookup outcome are retained. + +A separate reviewed test-only fix stubs ambient OpenBao identity in access CLI +unit tests and adds a synthetic sentinel regression which fails before any +subprocess can launch on the predecessor; 26 access/helper checks pass. The real +production helper is unchanged. The first old review's unisolated launches may +have invoked ambient `bao token lookup`; remote reach/success remain unknown, +with no secret displayed. This patch does not erase that adverse outcome. + +Explicit remaining safe-test work is retained in this live T03 scope, owned by +ops-warden: replace or wrap the ordinary unit-test entry path with allowlisted +environment/empty synthetic HOME and guarded subprocess/network execution, +including nested validator children. Completion requires representative access +and case tests to refuse token-file/environment and live provider access under +synthetic negative controls while permitted local fixtures remain usable. Until +then use the preserved isolated review runner, not the ambient `make test` path. +No credential lookup, live investigation or rotation is authorized by this note. +T03 remains progress; contained sessions, authenticated owner provenance, +materialization, exact type acknowledgment/pin and first native case remain open. + + +2026-10-17 safe unit-runner source candidate: `make test` now selects an existing +interpreter and `scripts/run_unit_tests.py`, which constructs the environment and +empty temporary HOME before pytest collection, denies unexpected process/socket +use and ambient file opens, and guards the pinned BrowserInputs child too. +Closed fixture exceptions cover the synthetic desk endpoint, metadata checkers, +exact-byte contract doubles and fixed transport prints; they confer no provider +authority. Explicit public declaration fixtures replace ambient HOME source +lookups. See `docs/development/safe-unit-tests.md` and Custodian packet +`docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1`. +Synthetic token, ambient-path, forged-provider and nested-child regressions are +retained alongside the initial failed isolation runs and corrected results. This +is a source candidate for the existing safe-test handoff, not an OS sandbox or +native case acceptance. T03 remains progress; contained sessions, authenticated +owner provenance, materialization, exact type acknowledgment/pin and first native +case remain open. No credential lookup, live investigation or rotation occurred. + +Candidate validation: ordinary `make test` under synthetic ambient token/HOME +controls passes 783 tests with four integration-marked tests deselected. Affected +focused checks pass 117 tests; new runner code/regressions pass Ruff. Retained +initial failures exposed fixture dependencies and were corrected, not suppressed. diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/implementation.json b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/implementation.json new file mode 100644 index 00000000..e5d43abc --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/implementation.json @@ -0,0 +1,120 @@ +{ + "schema": "custodian.warden-safe-unit-runner-implementation.v1", + "date": "2026-10-17", + "role": "implementation author; not independent review", + "status": "source-candidate-not-canonically-applied", + "base": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "preserved_allocator_commit": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "previous_base": "ae7bc73b4f4bac22454144959b870d161498e0af", + "netkingdom_test_source_head": "befb0bc68cd25b625804fce559476eefd702521d", + "phase_memory_test_source_head": "755fd2c3e2a5414cd89ee59df1814196d872b768", + "files": [ + { + "path": "Makefile", + "before_sha256": "9186d6166f3192b814f901350724b9c8a14d7db5b6c8664e9b0f2b5d5565e9b8", + "after_sha256": "8cf08ec680ed6bd323a1ce8475ade731dbeebcd64ffd43ecd169308f8a727940" + }, + { + "path": "scripts/run_unit_tests.py", + "before_sha256": null, + "after_sha256": "8157e44df298fa4c47c6c08b2dc68e3ac945c4beb3f47a251a7afbbc55eb1bd2" + }, + { + "path": "tests/test_safe_unit_runner.py", + "before_sha256": null, + "after_sha256": "6b623d18879e7564dd11447c16d3ec9f80321a25a525fcd0306b6a903a68031a" + }, + { + "path": "tests/unit_isolation_probe.py", + "before_sha256": null, + "after_sha256": "726d3e01ae21c1379588e1f08459449908cc8a75ffea1b337c33a1a888c66f59" + }, + { + "path": "tests/test_layer_conformance.py", + "before_sha256": "93e3a8805460c4a6a4fd78734cf4dd85947a46e23d16a0d6898a43e8ec39275d", + "after_sha256": "3edf0a0d49c3560278a564c477834335cfaf5243341cb9345f0d4bf8994db56c" + }, + { + "path": "tests/test_workload_join.py", + "before_sha256": "b5f5be43192d78105dbe86ada736d8a10705cadd4ee64682d1fb78768cbcd191", + "after_sha256": "1828908a5cd1f0bc13ca367dbd1245221c52d1ac60789c9e3bd51dd36cb8beb9" + }, + { + "path": "tests/test_case_plan.py", + "before_sha256": "df8ccc89ab840efd1d5242c1b4e68a1c589168d89768ae44bdbb2b5f6d0e6b55", + "after_sha256": "944bc2a725ca1b7a10f4516c3ceed65f99627057dd15a859da4f8ffb3d97e71f" + }, + { + "path": "tests/test_case_type.py", + "before_sha256": "4e2ec3faa030d3036534b7f9564a41abf567d4a951c8458a589b68076b7debf9", + "after_sha256": "5a217a172e7e2ffbea66f1beee9a1c18bf5e97f9fb25b83cb96b6ba976cbb2a5" + }, + { + "path": "docs/development/safe-unit-tests.md", + "before_sha256": null, + "after_sha256": "b157c3e6956a41dcd9fc3912d0c7d09a664f11f08f0f8a8e4cae57fac9747cf7" + }, + { + "path": "workplans/WARDEN-WP-0044-security-case-follow-through.md", + "before_sha256": "10c6f02d578837dee12acd8b638d18c5b9f93b6a9c4aff3083ce60c3752d1664", + "after_sha256": "074bfcf2f7841e78bcd404bf573982d244b00f2f500e198b7fe80fea660de991" + }, + { + "path": "tests/fixtures/workload-coverage/provenance.json", + "before_sha256": null, + "after_sha256": "a4a203c1bd7bc5b8039d1b2525bea65dbae288a3f552969e4218cd5abda96990" + }, + { + "path": "tests/fixtures/workload-coverage/rapp-core-hub/declarations/rapp.yaml", + "before_sha256": null, + "after_sha256": "9ce902da0c77809f1094a634244652835b162f59682e9fa6923d8c8aa4ed4a3c" + }, + { + "path": "tests/fixtures/workload-coverage/rapp-issue-core/declarations/rapp.yaml", + "before_sha256": null, + "after_sha256": "a1956deecf2f0fbca44549e5ea5e8f1c4b74ebf91a9482c64c982491af0d923b" + }, + { + "path": "tests/fixtures/workload-coverage/rapp-qonto/declarations/rapp.yaml", + "before_sha256": null, + "after_sha256": "15aa9809e8d6a120c516be5ce9adfb72c00382140c171e791083ad117f503b3f" + } + ], + "patch_sha256": "1fe65076ce7e633be304fc779bf2c87b7ee1e4e460de55ca74355b5842d036f5", + "patch_applies_to_exact_archive": true, + "validation": { + "focused_initial": "136 passed, 2 failed (ambient source/metadata assumptions)", + "focused_metadata_corrected": "42 passed", + "guard_initial": "28 passed", + "full_initial": "13 failed, 768 passed, 2 skipped, 4 deselected; diagnostic intermediate state, retained", + "focused_corrected": "117 passed", + "full_final": "783 passed, 4 deselected in 62.70s", + "lint": "new runner and regression files: all checks passed" + }, + "full_initial_note": "Intermediate diagnostic run: a source correction removing WARDEN_MEMORY=0 was made while its parent had already loaded the earlier runner. No final-candidate claim is made from that mixed-version diagnostic run. Its actual refusal traces and failures are retained. Final full run used stable corrected code.", + "ambient_controls": { + "input_tokens": "synthetic BAO_TOKEN and VAULT_TOKEN only", + "input_home": "temporary synthetic HOME with synthetic .vault-token created by harness; never a real user home", + "input_other": "synthetic PYTHONPATH and invalid synthetic PYTEST_ADDOPTS prove they are not propagated", + "child_probe": "synthetic token/HOME monkeypatches discarded; child reports only presence booleans; socket/provider/home/nested operations refused", + "actual_credential_values_read": false + }, + "native_owner_actions": false, + "local_process_exceptions": "guarded Python fixtures; bounded local git log/status; exact-byte synthetic Bash doubles and five fixed printf fixtures", + "canonical_edits": false, + "commits": false, + "dependencies_downloaded": false, + "workplan": { + "path": "workplans/WARDEN-WP-0044-security-case-follow-through.md", + "task": "WARDEN-WP-0044-T03", + "status": "progress preserved", + "ids_statuses_dependencies_unchanged": true, + "new_workplan_or_task": false + }, + "limits": [ + "Trusted Python unit-test accident guard, not an OS isolation or hostile-code security boundary.", + "Direct pytest bypasses launcher. Native extensions, preopened descriptors and non-open filesystem syscalls are not fully controlled.", + "Reviewed system/interpreter/source roots remain readable. Exact Bash/Git fixtures have no Python audit hook inside their native binaries.", + "No production Warden code, authority, catalog/source/parameter pin or native acceptance changed." + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/packet-hashes.json b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/packet-hashes.json new file mode 100644 index 00000000..92123602 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-r1/packet-hashes.json @@ -0,0 +1,26 @@ +{ + "README.md": "7322316db3fdd7107efe82d42166a25dd494161f8062aaa833b4497392fd04bb", + "candidate/Makefile": "8cf08ec680ed6bd323a1ce8475ade731dbeebcd64ffd43ecd169308f8a727940", + "candidate/docs/development/safe-unit-tests.md": "b157c3e6956a41dcd9fc3912d0c7d09a664f11f08f0f8a8e4cae57fac9747cf7", + "candidate/scripts/run_unit_tests.py": "8157e44df298fa4c47c6c08b2dc68e3ac945c4beb3f47a251a7afbbc55eb1bd2", + "candidate/tests/fixtures/workload-coverage/provenance.json": "a4a203c1bd7bc5b8039d1b2525bea65dbae288a3f552969e4218cd5abda96990", + "candidate/tests/fixtures/workload-coverage/rapp-core-hub/declarations/rapp.yaml": "9ce902da0c77809f1094a634244652835b162f59682e9fa6923d8c8aa4ed4a3c", + "candidate/tests/fixtures/workload-coverage/rapp-issue-core/declarations/rapp.yaml": "a1956deecf2f0fbca44549e5ea5e8f1c4b74ebf91a9482c64c982491af0d923b", + "candidate/tests/fixtures/workload-coverage/rapp-qonto/declarations/rapp.yaml": "15aa9809e8d6a120c516be5ce9adfb72c00382140c171e791083ad117f503b3f", + "candidate/tests/test_case_plan.py": "944bc2a725ca1b7a10f4516c3ceed65f99627057dd15a859da4f8ffb3d97e71f", + "candidate/tests/test_case_type.py": "5a217a172e7e2ffbea66f1beee9a1c18bf5e97f9fb25b83cb96b6ba976cbb2a5", + "candidate/tests/test_layer_conformance.py": "3edf0a0d49c3560278a564c477834335cfaf5243341cb9345f0d4bf8994db56c", + "candidate/tests/test_safe_unit_runner.py": "6b623d18879e7564dd11447c16d3ec9f80321a25a525fcd0306b6a903a68031a", + "candidate/tests/test_workload_join.py": "1828908a5cd1f0bc13ca367dbd1245221c52d1ac60789c9e3bd51dd36cb8beb9", + "candidate/tests/unit_isolation_probe.py": "726d3e01ae21c1379588e1f08459449908cc8a75ffea1b337c33a1a888c66f59", + "candidate/workplans/WARDEN-WP-0044-security-case-follow-through.md": "074bfcf2f7841e78bcd404bf573982d244b00f2f500e198b7fe80fea660de991", + "candidate.patch": "1fe65076ce7e633be304fc779bf2c87b7ee1e4e460de55ca74355b5842d036f5", + "focused-corrected.log": "b882102d13be229872d931d97187b8893ad8edfd889b2571b3cfb558b73c6811", + "focused-initial.log": "c115cbd9ea50e9a55cd35f3b78b42cc10204d5780beba8c40501d55ee04760e3", + "focused-metadata-corrected.log": "e027958397e90c267e7d07e43ce4c78bbe8cfb980bdad575eff0bcadce023b3f", + "full-final.log": "544a4be60b5409ad7af5d1b399691c962ed0fffefd2732376b1a2a4ea2c992be", + "full-initial-failed.log": "be4aedc321eb7ae6e956f670b4d6ee89d12ef7057fec7dcbe35e9c98829b3d04", + "guard-regressions-initial.log": "399377e7ef48191e50c473a085fa44f25132a838a3597010bd416ea91dce5373", + "implementation.json": "8033b323178e1d3b031a45466687fe05479627e99559d9de7b3baef52ab8671f", + "lint.log": "82b3e6a6c090a57601d22943bd23fca9218d1031dbe5a7b754092f9a156b4f18" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/review-r1.json b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/review-r1.json new file mode 100644 index 00000000..fb646d57 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/review-r1.json @@ -0,0 +1,127 @@ +{ + "schema": "custodian.warden-safe-unit-runner-review.v1", + "date": "2026-10-17", + "role": "independent reviewer of platform_f2_review author candidate; reviewer-proposed correction kept separate", + "disposition": "reject original exact14-file candidate; minimal correction proposed and focused-tested separately", + "inputs": { + "base": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "candidate.patch": "sha256:1fe65076ce7e633be304fc779bf2c87b7ee1e4e460de55ca74355b5842d036f5", + "implementation.json": "sha256:8033b323178e1d3b031a45466687fe05479627e99559d9de7b3baef52ab8671f", + "README.md": "sha256:7322316db3fdd7107efe82d42166a25dd494161f8062aaa833b4497392fd04bb", + "packet-hashes.json": "sha256:1567ff1ad558fdb464818bb555dab79152477c85113f89874daa3049029733a8", + "all14_candidate_after_hashes": "independently verified against applied fresh archive before reviewer mutations", + "net_kingdom": "befb0bc68cd25b625804fce559476eefd702521d", + "phase_memory": "755fd2c3e2a5414cd89ee59df1814196d872b768" + }, + "findings": [ + { + "id": "SUR-R1-F1", + "severity": "medium", + "blocking": true, + "location": "scripts/run_unit_tests.py Guard.audit open write-mask", + "title": "O_TRUNC alone is classified as read access and truncates readable source", + "counterexample": "os.open(synthetic_readable_source, os.O_RDONLY | os.O_TRUNC) triggers the audited open event with no O_WRONLY/O_RDWR/O_CREAT bits. Candidate classifies it as a read and permits it under ROOT. On Linux it successfully truncates the source file. Independent probe used only a21-byte synthetic scratch fixture and observed truncation; no canonical file or ambient value was touched.", + "expected": "Refuse before opening/truncation whenever open flags request truncation, including read-only flag combinations.", + "scope": "An open-audit loophole within the advertised contract, not the documented limitation covering non-open mutation syscalls.", + "minimal_fix": "Include os.O_TRUNC and conservative os.O_APPEND in write mask. New regression uses only synthetic data in the temporary fixture tree with a separate guarded writable subtree." + }, + { + "id": "SUR-R1-F2", + "severity": "medium", + "blocking": true, + "location": "tests/fixtures/workload-coverage/provenance.json and snapshot consumers", + "title": "Public fixture projection hashes are recorded but never checked", + "counterexample": "Append one synthetic comment to rapp-core-hub projection. Existing workload-join and published-coverage tests still both pass, despite projection_sha256 being stale. Reviewer hash check fails with expected9ce902... versus observed2e9381....", + "expected": "Default unit tests fail closed when shipped projection bytes disagree with their recorded provenance, while preserving documented snapshot-only semantics.", + "minimal_fix": "Add one ordinary test validating the closed3-entry projection set and every projection_sha256. It does not query live repositories or claim live/source-owner freshness." + } + ], + "positive_review": { + "ordinary_make_entry": "Makefile now launches an already installed interpreter with-I and the committed runner, without uv/resolution. Worker creates guard before pytest import/collection. Parent environment is constructed and guarded children receive reconstructed HOME/env even after synthetic parent mutation.", + "closed_process_inventory": "No generic Python -c, generic Git status, provider token lookup, extra shell text or inherited-FD widening was permitted by independent probes. Native Bash exceptions are exact fixed printf commands/exact-byte doubles; child Git is restricted to2 metadata queries. Production adapter behavior and catalog/parameter pins are untouched.", + "python_children": "Existing child probes independently passed under ordinary make test. A corrupted pinned validator module was refused before even the synthetic Popen observer ran. Six real pinned BrowserInputs integration tests passed in first focused run.", + "loopback": "Single actual synthetic dry desk HTTP test passed. Unleased TCP sockets were refused. Code binds127.0.0.1:0 only, registers its resulting endpoint and restricts connect to it; lease clears per test. No real loopback service was contacted.", + "docs_and_maintainability": "14-file scope is justified by launcher/regressions,4 explicit source-fixture adaptations, documentation/workplan note and3 projections/provenance. Docs candidly call this a trusted-test accident guard, not an OS sandbox; direct pytest and native/non-open/preopened-descriptor limits remain. Frozen artifact tests now explicitly measure a snapshot, not the current estate." + }, + "validation": [ + { + "command": "python3 /tmp/warden-safe-unit-runner-review-r1/run.py focused.log <18 author guard tests,18 independent probes,6 BrowserInputs integration tests,desk HTTP,2 coverage tests>", + "result": "43 passed,1 failed in12.64s; only original O_TRUNC guard failure" + }, + { + "command": "python3 .../run.py provenance-drift-existing.log <2 existing coverage tests>", + "result": "2 passed despite deliberately stale fixture projection hash" + }, + { + "command": "python3 .../run.py provenance-drift-negative.log tests/test_review_safe_runner.py::test_public_projection_hashes_are_current", + "result": "1 failed; independently detects the deliberately stale projection hash" + }, + { + "command": "python3 .../run.py correction-regressions-before.log <2 newly proposed correction tests>", + "result": "2 failed before code fix and fixture restoration; exact counterexamples retained" + }, + { + "command": "python3 .../run.py corrected-focus.log tests/test_safe_unit_runner.py tests/test_review_safe_runner.py tests/test_workload_join.py tests/test_layer_conformance.py::test_published_coverage_equals_measured_coverage", + "result": "40 passed in0.97s after minimal write-mask fix and restoration of original public fixture bytes" + }, + { + "command": "python3 .../run.py collect-default.log --collect-only -q", + "result": "Collect-only receipt lists785 selected tests with correction2 tests; source has4 integration-marked tests excluded by unchanged default not-integration expression. Double-quiet collection omits the deselection summary; no native integration execution." + } + ], + "correction": { + "file": "reviewer-correction.patch", + "sha256": "sha256:9407289f8da41ed6fff367baf566ad30f5510a2627c14e0ac0cf971bf9b465c9", + "applies": "After exact original candidate on fresh922c26d archive; application and all3 afterhashes independently checked in second scratch tree", + "files": { + "scripts/run_unit_tests.py": { + "before_sha256": "sha256:8157e44df298fa4c47c6c08b2dc68e3ac945c4beb3f47a251a7afbbc55eb1bd2", + "after_sha256": "sha256:86880094b33114fdefb26691140b5c9a516cdba5fe6ddabd70fd5b7f18e9d2aa" + }, + "tests/test_safe_unit_runner.py": { + "before_sha256": "sha256:6b623d18879e7564dd11447c16d3ec9f80321a25a525fcd0306b6a903a68031a", + "after_sha256": "sha256:5408e7face98b01b92da077b0b2d115fcb370ec46e572ad5a69e3d0c10df8433" + }, + "tests/test_workload_join.py": { + "before_sha256": "sha256:1828908a5cd1f0bc13ca367dbd1245221c52d1ac60789c9e3bd51dd36cb8beb9", + "after_sha256": "sha256:8ef0891daf4b7ac520430a514690364917110628edc760911a850195cffbdd4a" + } + }, + "status": "Reviewer-proposed minimal correction, focused-tested; separate from original author patch and original rejection. Root may carry as corrected candidate pending its source disposition/revalidation.", + "original_public_fixture_bytes": "Restored unchanged; no projection/provenance hash was updated to hide the negative test." + }, + "protected_source_hashes": { + "src/warden/case_run.py": "sha256:1bc73e30ac718fd75bbaff2a739495fc051aeaec73802ac71f0583cb2d53ab0a", + "src/warden/case_inputs.py": "sha256:1334b0cd9897e763cfea2d306e997c659f3f284ecc3f9612140c2104835da7c7", + "src/warden/routing/models.py": "sha256:b85372b2572a49af62e9534f26a33963b894633c7cd43dd2a28416b8959cba3e", + "registry/routing/catalog.yaml": "sha256:ba9634a92e584dac8c42e8624ab52adce06e79a285209cb64c0daa4dac9cd7d8", + "registry/generated/high-risk-data-paths.yaml": "sha256:5cd9c03b86751f7197cb5661a53a86d59765137958b215ec14bb343156f216d0", + "pyproject.toml": "sha256:c8f7c53f0bd0f8ae4e7242342fe47b1f36d47fd221964782a3a6953e0f804e01" + }, + "boundaries": { + "canonical_edits": false, + "commits": false, + "ambient_credential_reads": false, + "native_owner_actions": false, + "dependencies_downloaded": false, + "synthetic_controls": "Allowlisted outer process environment with only synthetic BAO_TOKEN,VAULT_TOKEN,HOME/.vault-token,PYTHONPATH,PYTEST_ADDOPTS,BASH_ENV/ENV sentinels. Source archives are public frozen commits. Provider commands were refused before launch; only intended local fixture Python/Bash and synthetic HTTP were exercised." + }, + "limits": [ + "No full-suite recertification; author783-pass final run is attributed to author, not adopted as independent full-suite evidence.", + "Source roots/interpreters/libraries remain trusted and directory-readable by design. This is no OS isolation or grant.", + "Projection digest check proves shipped fixture consistency, not live estate freshness or source-owner authenticity.", + "No native acceptance,1.3 pin,draft promotion,credential investigation or external owner assent.", + "Original author initial failure logs remain intact." + ], + "packet_hashes": { + "provenance-drift-negative.log": "sha256:357556c55ac2a8befe88b688ced1808a50132f4fcb42b670ba3468085ea63098", + "reviewer-probes.py": "sha256:0b49fc2ad7aeeca0cabb0961b06d8cdc85ae5109f36bf81e4245e55127357574", + "provenance-drift-existing.log": "sha256:d633d56ea09739398410f73e61cc2f24fb25aa180d885a5a8ceea55f3d4e3fb4", + "run.py": "sha256:f7fc81b8acbcd0712ee5f79a16b27aa1cdd0af11db761f9e94fba8b91e51ec8a", + "reviewer-correction.patch": "sha256:9407289f8da41ed6fff367baf566ad30f5510a2627c14e0ac0cf971bf9b465c9", + "corrected-focus.log": "sha256:2c55ba79aefa81de60a93ef7aa385f95c91925cad6889aa963c381bbaa0b2589", + "focused.log": "sha256:592a914c2c0855d6177bc84d72e433bfa2683865336ff1dde891bb099bba22f0", + "collect-default.log": "sha256:d41e8c609c11b28dd5baf0fc3763f0c882284a20da6018e00110a4a15f607228", + "correction-regressions-before.log": "sha256:7927b0e20deca4da6450534bd1d0566733908ffcf5b944ede95b02c9f2492af6" + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/reviewer-correction.patch b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/reviewer-correction.patch new file mode 100644 index 00000000..c791c11e --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/reviewer-correction.patch @@ -0,0 +1,56 @@ +diff --git a/scripts/run_unit_tests.py b/scripts/run_unit_tests.py +--- a/scripts/run_unit_tests.py ++++ b/scripts/run_unit_tests.py +@@ -62,7 +62,7 @@ + path = Path(os.fsdecode(args[0])).resolve() + mode, flags = args[1:3] + write = ((isinstance(mode, str) and any(c in mode for c in 'wax+')) +- or (isinstance(flags, int) and flags & (os.O_WRONLY | os.O_RDWR | os.O_CREAT))) ++ or (isinstance(flags, int) and flags & (os.O_WRONLY | os.O_RDWR | os.O_CREAT | os.O_TRUNC | os.O_APPEND))) + roots = (self.temporary,) if write else self.read_roots + if path != Path('/dev/null') and not inside(path, roots): + raise IsolationDenied('unit isolation: file outside reviewed roots') +diff --git a/tests/test_safe_unit_runner.py b/tests/test_safe_unit_runner.py +--- a/tests/test_safe_unit_runner.py ++++ b/tests/test_safe_unit_runner.py +@@ -79,3 +79,14 @@ + provider.chmod(0o700) + with pytest.raises(PermissionError, match='double bytes differ'): + subprocess.run([str(provider), 'token', 'lookup'], check=True) ++ ++ ++def test_os_open_truncation_respects_read_only_source_root(guarded, tmp_path, monkeypatch): ++ # Synthetic readable source outside the guard's writable subtree. ++ source = tmp_path / 'synthetic-source' ++ source.write_bytes(b'synthetic public source') ++ monkeypatch.setattr(guarded, 'temporary', tmp_path / 'writable') ++ with pytest.raises(PermissionError, match='unit isolation'): ++ descriptor = os.open(source, os.O_RDONLY | os.O_TRUNC) ++ os.close(descriptor) ++ assert source.read_bytes() == b'synthetic public source' +diff --git a/tests/test_workload_join.py b/tests/test_workload_join.py +--- a/tests/test_workload_join.py ++++ b/tests/test_workload_join.py +@@ -1,5 +1,7 @@ + """Explicit lane-to-workload join tests (WARDEN-WP-0032 / RMGR-WP-0010-T06).""" + from pathlib import Path ++import hashlib ++import json + + import yaml + +@@ -68,3 +70,14 @@ + assert not report["resolved"] + assert report["unknown"][0]["lane"] == "x" + assert "deployable" in report["unknown"][0]["reason"] ++ ++ ++def test_public_workload_projection_matches_provenance(): ++ base = ROOT / 'tests/fixtures/workload-coverage' ++ provenance = json.loads((base / 'provenance.json').read_text()) ++ expected = {'rapp-core-hub', 'rapp-issue-core', 'rapp-qonto'} ++ assert len(provenance) == len(expected) ++ assert {row['repo'] for row in provenance} == expected ++ for row in provenance: ++ projection = base / row['repo'] / 'declarations/rapp.yaml' ++ assert hashlib.sha256(projection.read_bytes()).hexdigest() == row['projection_sha256'] diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/reviewer-probes.py b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/reviewer-probes.py new file mode 100644 index 00000000..6f42b2f0 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/reviewer-probes.py @@ -0,0 +1,82 @@ +"""Reviewer-owned synthetic accident-control probes, no credential/native actions.""" +import hashlib +import json +import os +from pathlib import Path +import socket +import subprocess +import sys +import pytest + +ROOT=Path(__file__).resolve().parents[1] + +@pytest.fixture +def guard(request): + value=getattr(request.config,'_unit_guard',None) + assert value is not None + return value + +@pytest.mark.parametrize('name',['BAO_TOKEN','VAULT_TOKEN','PYTHONPATH','PYTEST_ADDOPTS','BASH_ENV','ENV']) +def test_synthetic_ambient_environment_not_propagated(guard,name): + assert name not in os.environ + +@pytest.mark.parametrize('path',[ + '/tmp/warden-safe-unit-runner-review-r1/outer-home/.vault-token', + '/tmp/warden-review-nonexistent-ambient-home/.kube/config', +]) +def test_synthetic_outer_home_open_refused(guard,path): + with pytest.raises(PermissionError,match='unit isolation'): + Path(path).read_bytes() + +@pytest.mark.parametrize('command,options',[ + (['bao','token','lookup'],{}), + (['/usr/bin/git','status'],{}), + ([sys.executable,'-c','print(42)'],{}), + ("printf 'sekret'; printf extra",{'shell':True}), + (['printf','sekret'],{}), + ([sys.executable,'-c','print("SYNTHETIC-SECRET")'],{'close_fds':False}), +]) +def test_no_generic_or_widened_process_execution(guard,command,options): + with pytest.raises(PermissionError,match='unit isolation'): + subprocess.run(command,**options) + + +def test_changed_validator_module_refuses_before_launch(guard,tmp_path,monkeypatch): + from warden import case_inputs + directory=tmp_path/'warden-case-validator-review' + for relative in case_inputs.SOURCE_PINS: + target=directory/relative;target.parent.mkdir(parents=True,exist_ok=True) + target.write_bytes(b'not the pinned producer') + calls=[] + def forbidden(*args,**kwargs): + calls.append(args) + raise AssertionError('process must not launch') + monkeypatch.setattr(guard,'original_popen',forbidden) + with pytest.raises(PermissionError,match='validator source pin differs'): + subprocess.run([sys.executable,'-I','-c',case_inputs._VALIDATE,str(directory)]) + assert calls==[] + + +def test_unexpected_loopback_socket_refused(guard): + with pytest.raises(PermissionError,match='sockets disabled'): + socket.socket(socket.AF_INET,socket.SOCK_STREAM) + + +def test_source_truncate_via_os_open_is_refused(guard): + path=ROOT/'tests/reviewer-truncate.fixture' + before=path.stat().st_size + try: + descriptor=os.open(path,os.O_RDONLY|os.O_TRUNC) + except PermissionError: + pass + else: + os.close(descriptor) + pytest.fail('source O_TRUNC open escaped the write guard') + assert path.stat().st_size==before + + +def test_public_projection_hashes_are_current(): + base=ROOT/'tests/fixtures/workload-coverage' + for row in json.loads((base/'provenance.json').read_text()): + data=(base/row['repo']/'declarations/rapp.yaml').read_bytes() + assert hashlib.sha256(data).hexdigest()==row['projection_sha256'] diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/run.py b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/run.py new file mode 100644 index 00000000..10bcf17a --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-runner-review-r1/run.py @@ -0,0 +1,8 @@ +from pathlib import Path +import subprocess,sys +r=Path('/tmp/warden-safe-unit-runner-review-r1') +env={'HOME':str(r/'outer-home'),'TMPDIR':str(r/'outer-tmp'),'PATH':'/usr/bin:/bin','LANG':'C.UTF-8','BAO_TOKEN':'synthetic-review-token-only','VAULT_TOKEN':'synthetic-review-token-only','PYTEST_ADDOPTS':'invalid-synthetic-pytest-options','PYTHONPATH':'/tmp/never-import-synthetic','BASH_ENV':'/tmp/never-read-synthetic-bash-env','ENV':'/tmp/never-read-synthetic-env'} +command=['make','test','UNIT_PYTHON=/tmp/warden-kernel-review-r1/final/.venv/bin/python','PHASE_MEMORY_REPO='+str(r/'phase-memory'),'TEST_ARGS=--netkingdom-root '+str(r/'net-kingdom')+' -q '+ ' '.join(sys.argv[2:])] +with (r/sys.argv[1]).open('w') as output: + result=subprocess.run(command,cwd=r/'ops-warden',env=env,stdout=output,stderr=subprocess.STDOUT) +print(result.returncode);sys.exit(result.returncode) diff --git a/docs/netkingdom-target-implementation.md b/docs/netkingdom-target-implementation.md index 2de08a58..79dcde66 100644 --- a/docs/netkingdom-target-implementation.md +++ b/docs/netkingdom-target-implementation.md @@ -1061,3 +1061,88 @@ then the attended negative/revoke/cleanup proof. KEY39 stays active with T02 waiting. Infrastructure source-review approval supplies no missing native proof. Evidence: `key39-infra-finalization-r1/assessment.json` and its linked owner reviews in the dated 17 October packet. + + +## Case admission and issuer-reference source corrections, 2026-10-17 + +The source path behind TSA-03/TSA-04 and KEY39's Forgejo prerequisite now carries +reviewed Warden kernel corrections. Implementation commit `ae7bc73` is published +and projected at `922c26d`; the latter is the normal allocator's separate addition +of one previously missing UUID on an already projected completed task, with no +code, task status or authority change. The kernel retains the authenticated +catalog snapshot and dispatch mode and rechecks attended human/session/lane +conditions before run, rollback or reconcile can write the journal or call an +owner. Planner and executor share login/session-lane checks. Ninety focused +integration-worktree checks pass; independent review also passed six guarded +integration checks. The two unresolved Apps sessions remain refused. Four new +catalog entries stay draft and the production parameter pins still cover only +1.1 and 1.2. No catalog promotion or native acceptance follows. + +NetKingdom source commit `342a6f25` restores independent mint-guard regressions: +the old suite missed a guard-removed mutant, while the two new tests detect it. +The next commit `befb0bc6` uses valid byte-bound synthetic catalogs in downstream +admission tests. Canonical guarded validation passes 31 tests / 53 subtests on +the reviewed current Warden API, preserving the two unresolved Apps refusals. +T32 and T35 record distinct source-test outcomes; existing first-case/native +gates remain open. + +Platform commit `104ed90` publishes a proposed fixed issuer ESO template and +pure public-metadata checks. Independent source review and eight focused tests +pass. The proposed 1.3 deliver-secret entry now names the exact cluster-scoped +`openbao-keycape-{client_id}-issuer` store restricted to `sso`, and pins that +Platform template's digest. This resolves the vague source reference; all type +parameter bytes and seven descriptors remain unchanged, and composition +regeneration is byte-identical. T33 records this narrow source completion, +not owner assent, installed ESO support or actual delivery/removal/session +implementation. Those remain existing Platform and T16 admission obligations. + +The consumer inverse is not closed. A fresh Apps-scoped review reproduced an +inverse using configuration provenance after the hand-over session had been +revoked without obtaining fresh inverse authority. The corrected r2 prototype +requires a separately authenticated inverse session before the release-writer +lock, with revocation on every exit; 19 tests / 33 subtests pass and guard-removal +controls fail. Actual Apps source has no supported durable configuration journal, +all-release-writer exclusion or inverse-session backend to bind. Four concrete +owner facilities and the minimum existing RAPPS-WP-0016-T05 implementation are +recorded in the r2 packet; T34 progresses and T16 retains exact composition and +admission. The candidate is not installed and its type prose is not integrated +as an operational capability. Public clients, confidential NO_CHANGE delivery, +and failure before hand-over receipt creation must all have a reachable inverse. + +The old kernel review's possible ambient `bao token lookup` remains an adverse +unknown, not a compliant test success. A reviewed access-unit-test fixture and +synthetic forbidden-subprocess regression prevent that known lookup path; real +production helper behavior is unchanged. Broader isolated test-entry work remains +explicitly in live WARDEN-WP-0044-T03. No credential investigation or rotation +was run. All sixteen native target gates remain open. + +Evidence in the dated 17 October packet: `warden-1.3-kernel-review-r2/`, +`warden-kernel-source-integration-r1/verification.json`, +`nk48-r5-source-followthrough-r1/`, `nk48-current-source-publication-r3/`, +`nk48-r5-f2-publication-r1/`, `nk48-issuer-reference-integration-r1/`, and +`nk48-r5-f3-{review-r1,implementation-r2}/`. + + +### Corrected ordinary unit-test entry + +Warden source commit `b593c879` integrates the corrected safe unit runner after +root review of the two independently reproduced defects. Ordinary `make test` +now constructs its temporary HOME/environment and guards subprocess/file/network +use before pytest collection, including the fixed pinned-validator children. +Only the reviewed closed local fixture inventory and one test-owned loopback +endpoint are available. Dependencies must already be installed; no uv resolution +or download runs through this test entry. Two new regressions cover truncating +opens and recorded projection hashes. The stable corrected ordinary full run +passes **785 tests, four deselected** in 65.43 seconds under synthetic parent +token/HOME/Python/pytest sentinels. Production source, catalog, parameter pins +and original four WP44 task blocks are unchanged. + +The first candidate remains rejected in its frozen review. Its O_TRUNC failure, +stale-provenance counterexample and author intermediate failures are retained. +This completes the known trusted-unit-entry accident-prevention follow-through; +direct pytest bypass and native-extension, non-open-syscall and preopened-file- +descriptor limitations remain explicit. This is not an OS sandbox or evidence of +an isolated actual agent assignment. Native T03/TSA-06 and all sixteen target +gates remain open. Exact root disposition, full result and publication receipts: +`warden-safe-unit-integration-r1/`; source review and correction: +`warden-safe-unit-runner-review-r1/` in the dated packet. diff --git a/docs/netkingdom-target-security-architecture.md b/docs/netkingdom-target-security-architecture.md index cddb984f..c0905634 100644 --- a/docs/netkingdom-target-security-architecture.md +++ b/docs/netkingdom-target-security-architecture.md @@ -119,6 +119,20 @@ contained mint/delivery, successful sign-in, denied groups, revocation and rollback are verified independently. Acknowledged, implemented, materialized and live are distinct states. A case renderer always remains plan-only. +Admission binds the exact authenticated catalog snapshot and dispatch mode. +Attended run, rollback and reconcile revalidate the current caller and session +before journal writes or owner callbacks; a cached admission does not preserve +expired or changed authority. An attended change resolves its establishing login +in that same catalog. An unresolved owner login remains unavailable. + +The owner configuration inverse remains reachable for public clients, unchanged +secret delivery and failure before a hand-over receipt exists. Receipt deletion +and created-only secret cleanup cannot substitute for that inverse. Its durable +before/after provenance identifies the case's configuration change; it supplies +no execution authority. A fresh authorized inverse session and exclusion of all +release writers protect the current-state check and inverse. Where the target +offers no compare-and-swap operation, a local advisory lock alone is insufficient. + After this case passes, a second consumer proves reuse of its adapters and contracts. Rapp Playwright's human/agent identity and connectivity remain an explicit consumer acceptance obligation under CUST-WP-0080-T05 and NK-WP-0050; diff --git a/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md b/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md index 762e6ddc..7b5b6af6 100644 --- a/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md +++ b/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md @@ -1217,3 +1217,33 @@ unadmitted coding-client custody/owner readiness returns remain prerequisites. The parent stays active, T02 waits, and no native gate closes. No new helper protocol or repeated original-client registration approval is required. Evidence: `docs/changes/netkingdom-target-2026-10-17/key39-infra-finalization-r1/`. + + +2026-10-17 T03 implementation checkpoint: independent GPT-6.1-Sol medium +reviewers checked the actual Warden kernel, fixed issuer-reference and Apps +inverse candidates. Reviewed kernel corrections plus the narrow ambient-lookup +unit-test fix are integrated and published at Warden `922c26d`; the normal +allocator's existing completed-task UUID addition is retained separately from +implementation `ae7bc73`. All four WP44 task bindings/statuses remain unchanged. +Platform `104ed90` publishes the proposed exact issuer ESO source; NetKingdom +`342a6f25` and `befb0bc6` carry independent mint regressions, valid catalog +fixtures and exact proposed issuer-template text. Source tests and limitations +are recorded in docs/netkingdom-target-implementation.md. NK48 refinement adds +completed source tasks T32/T33/T35 and keeps T34 progress for the real Apps +inverse/backend; T16 and first native case remain open. The fresh inverse-session +prototype is corrected and tested, but no real owner backend or authority is +invented. Earlier rejected reviews, the possible ambient lookup and failed +preparations remain retained. All six coordinator task blocks/statuses/UUIDs +are unchanged; all sixteen target native gates remain open. + + +2026-10-17 T03 safe-unit follow-through: Warden `b593c879` integrates the +ordinary test-entry guard after independent rejection and root review of the +minimal O_TRUNC/provenance corrections. The corrected full ordinary make test +passes 785 tests, four deselected, under synthetic ambient-token/HOME/Python/ +pytest sentinels. Source, pins, catalog and four WP44 task blocks are unchanged. +The known ambient-lookup accident path has a supported isolated test entry; +this is not an OS sandbox or actual assignment isolation, and original adverse +unknown outcomes remain retained. Evidence: dated warden-safe-unit-integration-r1 +and warden-safe-unit-runner-review-r1 packets. Coordinator task statuses and all +sixteen native acceptance gates remain unchanged.