Record reviewed case source evidence (13/13)
This commit is contained in:
parent
e9dc1a0f90
commit
0c21cf1b69
16 changed files with 1954 additions and 0 deletions
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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:<hex>; 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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -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 <type.yaml>` (`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 <case.yaml>` 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 <case.yaml> [--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 `<param> == <value>` 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_ID>_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: <case_id>@sha256:<hex>` 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 <case.yaml>` 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 <id> --case-ref <case-ref> --case-file <case.yaml>` 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.
|
||||
|
|
@ -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."
|
||||
]
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
@ -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']
|
||||
|
|
@ -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']
|
||||
|
|
@ -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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue