From df5765e0e18a2daa66cc1c684b6b88af6202e9fe Mon Sep 17 00:00:00 2001 From: codex Date: Sat, 17 Oct 2026 22:35:41 +0200 Subject: [PATCH] Record reviewed case source evidence (11/13) --- .../sitecustomize.py | 17 + .../commit.json | 5 + .../consistency-preimage.json | 267 +++++++++++++++ .../consistency.json | 151 +++++++++ .../consistency.stderr.txt | 0 .../focused-tests.txt | 3 + .../integrate.py | 93 ++++++ .../integration.json | 22 ++ .../normal-sync.json | 296 +++++++++++++++++ .../normal-sync.stderr.txt | 0 .../publish.py | 64 ++++ .../verification.json | 53 +++ .../workplan.preimage.md | 312 ++++++++++++++++++ .../commit.json | 5 + .../consistency.json | 140 ++++++++ .../consistency.stderr.txt | 0 .../full-unit-result.json | 14 + .../integrate.py | 65 ++++ .../integration.json | 26 ++ .../prepare_publication.py | 19 ++ 20 files changed, 1552 insertions(+) create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/sitecustomize.py create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/commit.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency-preimage.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.stderr.txt create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/focused-tests.txt create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integrate.py create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integration.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.stderr.txt create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/publish.py create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/verification.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/workplan.preimage.md create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/commit.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.stderr.txt create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/full-unit-result.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integrate.py create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integration.json create mode 100644 docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/prepare_publication.py diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/sitecustomize.py b/docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/sitecustomize.py new file mode 100644 index 00000000..f99fd0c2 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-1.3-kernel-review-r2/sitecustomize.py @@ -0,0 +1,17 @@ +import sys + +def guard(event,args): + if event.startswith('socket.'): + raise RuntimeError('review isolation: sockets disabled') + if event == 'subprocess.Popen': + cmd=args[1] + if (type(cmd) is list and len(cmd)==5 and cmd[:3]==[sys.executable,'-I','-c'] + and cmd[3].startswith('import sys as _review_sys\ndef _review_guard(') + and str(cmd[4]).startswith('/tmp/warden-case-validator-') and args[3]=={}): + return + raise RuntimeError('review isolation: subprocess disabled') + if event in {'os.system','os.exec','os.posix_spawn'}: + raise RuntimeError('review isolation: subprocess disabled') + if event=='open' and isinstance(args[0],str) and (args[0].startswith('/home/') or args[0].startswith('/root/')): + raise RuntimeError('review isolation: ambient home denied') +sys.addaudithook(guard) diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/commit.json b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/commit.json new file mode 100644 index 00000000..b71e0011 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/commit.json @@ -0,0 +1,5 @@ +{ + "exit_code": 0, + "stdout": "[detached HEAD ae7bc73] fix(case): preserve attended authority at dispatch and validate session lanes\n 8 files changed, 252 insertions(+), 27 deletions(-)\n create mode 100644 tests/test_case_attended_boundary.py\n", + "stderr": "" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency-preimage.json b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency-preimage.json new file mode 100644 index 00000000..437a4f9a --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency-preimage.json @@ -0,0 +1,267 @@ +[ + { + "path": ".custodian-brief.md", + "sha256": "4ff4bb94315149e07d36b8f4ecbbfc63b61d72e9d81f0f43a9c2f02bc13ada85", + "index": "100644 34573d262327057c11628ce8a7ca78292968545b 0\t.custodian-brief.md" + }, + { + "path": "WORK-RECORDS.md", + "sha256": "b6af9b1cb21e3a64b2ef8a5e732bc35c39cdeaef6af7a18f24824e8ec9fb5a76", + "index": "100644 34cf268862326a5832a7d0be9e84eb296e5601bb 0\tWORK-RECORDS.md" + }, + { + "path": "workplans/ADHOC-2026-06-27.md", + "sha256": "f0a89c1809e23b436767a73b70636c283e79216fb19678f08bef2b9e62e42ddb", + "index": "100644 d75908fb225c1f964b5b697032a6f98c4a13c1db 0\tworkplans/ADHOC-2026-06-27.md" + }, + { + "path": "workplans/ADHOC-2026-06-29.md", + "sha256": "9869f07cdfe79d37314d36db74a434a55b50c0b965ae53f29d76ca9a9a73151f", + "index": "100644 b46be0fd6ee2eeea9ffeff695b887b61aab8a7a2 0\tworkplans/ADHOC-2026-06-29.md" + }, + { + "path": "workplans/ADHOC-2026-08-11.md", + "sha256": "6bba4f5dab9fc64f7b65df7c2ab7e4b9d4dbb69ba1c4a41c8440dbd23555aea4", + "index": "100644 3d858fe808bd7a9d8318cdcd38ee012a8d907ca4 0\tworkplans/ADHOC-2026-08-11.md" + }, + { + "path": "workplans/ADHOC-2026-08-17.md", + "sha256": "39ec882551bf5643fabb3ebc9f47300b4e6f6caf6d67a0a26bc100b68d4e313e", + "index": "100644 65d75959a0fd23dd861e24321b1b46057d6fea5f 0\tworkplans/ADHOC-2026-08-17.md" + }, + { + "path": "workplans/ADHOC-2026-09-08.md", + "sha256": "27c64084fdd16b926b138584d96688061a18a58d4d8152d9688b4486b9687c05", + "index": "100644 c1ae7c3ea0d8e722d7073ae920780a5e56611294 0\tworkplans/ADHOC-2026-09-08.md" + }, + { + "path": "workplans/ADHOC-2026-10-03.md", + "sha256": "8de5e5ba28ce2cd94c5864e316d54fe32e6cdfdb0e75551fe92ed25b81eeafa6", + "index": "100644 e76cd016eab0dfd9eceac7d8033b40f92c9ada32 0\tworkplans/ADHOC-2026-10-03.md" + }, + { + "path": "workplans/WARDEN-WP-0016-ops-bridge-tunnel-cert-pilot.md", + "sha256": "ad904837aa2d83d888d46c482fe381eba328c96a4617209ea8a9ae2d7d64c467", + "index": "100644 a787f1da8347fdd2219ef67a569d21a192563343 0\tworkplans/WARDEN-WP-0016-ops-bridge-tunnel-cert-pilot.md" + }, + { + "path": "workplans/WARDEN-WP-0017-access-front-door-discoverability.md", + "sha256": "a35f65a40c98d35e86f352c1430837b8bc9f269bddaddfe4a71c6414f678d85c", + "index": "100644 fe9c5b15a464aa3ae104576bfc0a04510d944f89 0\tworkplans/WARDEN-WP-0017-access-front-door-discoverability.md" + }, + { + "path": "workplans/WARDEN-WP-0018-whynot-design-npm-lane-activation.md", + "sha256": "6d9145534f7fa80cec9f185751d3796fdaab4a2d88b289a5451ba04e24822855", + "index": "100644 f923be5351582a2bab38afc1aca3b4e5da0fe008 0\tworkplans/WARDEN-WP-0018-whynot-design-npm-lane-activation.md" + }, + { + "path": "workplans/WARDEN-WP-0019-route-to-secrets-engine.md", + "sha256": "8fa2d79c85a821f7bc51044f37001bad613afb75d143181e2e0a01b213e06df8", + "index": "100644 602fad1b4e56fc69de85aa2e0843676f50186340 0\tworkplans/WARDEN-WP-0019-route-to-secrets-engine.md" + }, + { + "path": "workplans/WARDEN-WP-0020-ops-warden-worker.md", + "sha256": "d565f65413a2698160caf33ab30d7513a03d06ddcee7d624b198bb8841abdcc3", + "index": "100644 1230ed3175d3f5f175fc0146e8006ebd8be5a369 0\tworkplans/WARDEN-WP-0020-ops-warden-worker.md" + }, + { + "path": "workplans/WARDEN-WP-0021-enable-scheduled-worker-tick.md", + "sha256": "4f7afe5bdd147705e68d31d02f39251543c6c120ce22d893b98af063e303c361", + "index": "100644 2500d4b346dffbe6d5f9848c5440bfa8d85d5d14 0\tworkplans/WARDEN-WP-0021-enable-scheduled-worker-tick.md" + }, + { + "path": "workplans/WARDEN-WP-0022-audit-trail-and-activity.md", + "sha256": "f733fb0d7cfcc7b44aba49a730e7f51381d6478a87c394161e77c90577c26505", + "index": "100644 63171f58096efb8d4bc07c69db250fff7038f4e1 0\tworkplans/WARDEN-WP-0022-audit-trail-and-activity.md" + }, + { + "path": "workplans/WARDEN-WP-0023-intent-scope-alignment-closeout.md", + "sha256": "97d25825ba626a3979e8d6217aebd27f58d27fe9f92e8b94eb2f63e2bb843cb9", + "index": "100644 99278d609aa5324c625364b2e0ac636ad9219ddf 0\tworkplans/WARDEN-WP-0023-intent-scope-alignment-closeout.md" + }, + { + "path": "workplans/WARDEN-WP-0024-experiential-memory-and-agent-sessions.md", + "sha256": "22bde2d1398a4260e337768c6cf71cf80cd61d466371b6cfd0c0f0c18fc72378", + "index": "100644 3ebac662f6c96f69a5fa6cbb5917999a4e24455a 0\tworkplans/WARDEN-WP-0024-experiential-memory-and-agent-sessions.md" + }, + { + "path": "workplans/WARDEN-WP-0025-forgejo-admin-api-token-lane.md", + "sha256": "ded5bdfdbe897f3376c71c7a169caca51a9d75453ba66cf216ec8dfcab91c708", + "index": "100644 5c4e77249b01fd8cb9300a237c917d95363cf2d7 0\tworkplans/WARDEN-WP-0025-forgejo-admin-api-token-lane.md" + }, + { + "path": "workplans/WARDEN-WP-0026-credential-disclosure-hygiene.md", + "sha256": "f65ccdf9c920e9138353018e2ed5a7fbbd590246eb730fc6f57c75b6d2e09eea", + "index": "100644 309f77187b31c1287b085affefc9d271ea40858c 0\tworkplans/WARDEN-WP-0026-credential-disclosure-hygiene.md" + }, + { + "path": "workplans/WARDEN-WP-0027-credential-governance-lockdown.md", + "sha256": "0d0c08458718ec88883c4b257ea80011123a6d5aa2eea36fe28db331ff6d438f", + "index": "100644 c14e9c303a1f1a096fdf710ee48112f68205435e 0\tworkplans/WARDEN-WP-0027-credential-governance-lockdown.md" + }, + { + "path": "workplans/WARDEN-WP-0028-tenant-secret-custody.md", + "sha256": "92cc0ad8d42209d5d7e45122e8ddd67e1970de1d200df373885ba5fb75e0d22a", + "index": "100644 fe81983444e5127bb8a0fdf94f42c3817758c67e 0\tworkplans/WARDEN-WP-0028-tenant-secret-custody.md" + }, + { + "path": "workplans/WARDEN-WP-0029-policy-front-door-and-founder-surface.md", + "sha256": "2b21f06c062edd96943a1d26fd86c6a27b341b1db4532e528edbaebd4ced7e66", + "index": "100644 4008d825b4c39d3f0e4a80f6d290af9b551fd812 0\tworkplans/WARDEN-WP-0029-policy-front-door-and-founder-surface.md" + }, + { + "path": "workplans/WARDEN-WP-0030-delegation-register.md", + "sha256": "59bf962b355cd9734315108f9868508739ddcb4855591bff53aea3634aed47f7", + "index": "100644 49612d072663af831f7b7314c4b77e4b9596097b 0\tworkplans/WARDEN-WP-0030-delegation-register.md" + }, + { + "path": "workplans/WARDEN-WP-0031-policy-caller-identity.md", + "sha256": "0fa890ba81833180feb727ba35dcf01ead7d7dedf55a285a49a2585049b4bffb", + "index": "100644 c4c600c47a6e4a65951b1adf324cc33f13cb1be6 0\tworkplans/WARDEN-WP-0031-policy-caller-identity.md" + }, + { + "path": "workplans/WARDEN-WP-0032-security-zones.md", + "sha256": "4497947e57fb86e883090d07c8bef031fd5fe4a7f3eb065d530ebe327d97b1cc", + "index": "100644 6c8000ade056b82e019826d01a7e9e8cf0f4de98 0\tworkplans/WARDEN-WP-0032-security-zones.md" + }, + { + "path": "workplans/WARDEN-WP-0033-native-lane-handoff.md", + "sha256": "74747ebf7c628b1a5336c63aa3924212068a6015f370e647cf9127949c181998", + "index": "100644 55cd015061bb610fe43c8f2ee821bb71b092d77c 0\tworkplans/WARDEN-WP-0033-native-lane-handoff.md" + }, + { + "path": "workplans/WARDEN-WP-0034-layer-model-v07-conformance.md", + "sha256": "57e10b9efff02d7437231424ebc4d48864a2019939c2cda2fa10629a4ede2a3b", + "index": "100644 d6ebfdce0e2901b42c98e38e9eaaac0f1d817e79 0\tworkplans/WARDEN-WP-0034-layer-model-v07-conformance.md" + }, + { + "path": "workplans/WARDEN-WP-0035-policy-nexus-forgejo-source-read-route.md", + "sha256": "d40987b48a8416de386972d214ce01dba138a9f294cc948de36085c794c76418", + "index": "100644 1210b158a3836d2b4df934f50fb538c5241b09d5 0\tworkplans/WARDEN-WP-0035-policy-nexus-forgejo-source-read-route.md" + }, + { + "path": "workplans/WARDEN-WP-0036-attended-login-openbao-output.md", + "sha256": "e0584491b5a6a7d4db0cf61a689f733b4a6597778ca79a3f8f2207fe7ecfb8cc", + "index": "100644 452eb41267ea99cc83104fcb2a782c0b244b87d1 0\tworkplans/WARDEN-WP-0036-attended-login-openbao-output.md" + }, + { + "path": "workplans/WARDEN-WP-0037-whynot-design-forgejo-npm-lane.md", + "sha256": "7c64a631eb70d9ff42826ea5966cac571786ff86bac5393f88c328aeb14aa9ba", + "index": "100644 a3eba2dff6517a64b2c5d3d9b9a9c14ca4570ec6 0\tworkplans/WARDEN-WP-0037-whynot-design-forgejo-npm-lane.md" + }, + { + "path": "workplans/WARDEN-WP-0038-plan-mutation-intent.md", + "sha256": "09b0ed8c6315255796a2da0d64dfd001b1f6de2e903ac2ea79bc5667b499fb83", + "index": "100644 8c9c5b6df7d1f48b48f8c2056c2a8186935184ee 0\tworkplans/WARDEN-WP-0038-plan-mutation-intent.md" + }, + { + "path": "workplans/WARDEN-WP-0039-explicit-policy-refusal.md", + "sha256": "e8773a7b4196cf77a48ab4ed0804a5f826a0a0b5e7972f968681746ebbc6e3e9", + "index": "100644 ca0828d2679eda031fb86d66eb886ccb38ee1843 0\tworkplans/WARDEN-WP-0039-explicit-policy-refusal.md" + }, + { + "path": "workplans/WARDEN-WP-0040-unknown-zone-fail-closed-adoption.md", + "sha256": "a4b8e768eaacd5ab5a90f69a1abcb3bd48ce821fcdea208b0ee75d9326f0d512", + "index": "100644 f07fb535d5ad00f5330f16a5a6e927da6960fe52 0\tworkplans/WARDEN-WP-0040-unknown-zone-fail-closed-adoption.md" + }, + { + "path": "workplans/WARDEN-WP-0041-catalog-lane-scaffolding.md", + "sha256": "c16993301f29e7f5ea005cccdbe360ac9c4c3949e6988e2b7a1f1e5df6235bc1", + "index": "100644 8a1ca341e9fcc041dcf99be8706f0db2a39408a6 0\tworkplans/WARDEN-WP-0041-catalog-lane-scaffolding.md" + }, + { + "path": "workplans/WARDEN-WP-0042-openbao-structure-survey-route.md", + "sha256": "1e48399d6ef8a509898e8ea0b334a378c51ec467aaa704b6dbf8485aed29fa8b", + "index": "100644 097d64791e79e782640514c7324e2ff8a5dc435c 0\tworkplans/WARDEN-WP-0042-openbao-structure-survey-route.md" + }, + { + "path": "workplans/WARDEN-WP-0043-platform-supplier-credentials.md", + "sha256": "c059b7f80ad4c0e5faa8ad15532ab6c2577d0c383ba91cde7293534b6e4683e2", + "index": "100644 d359328239b0b897ccffbf037a12b06d1f0d126a 0\tworkplans/WARDEN-WP-0043-platform-supplier-credentials.md" + }, + { + "path": "workplans/WARDEN-WP-0044-security-case-follow-through.md", + "sha256": "10c6f02d578837dee12acd8b638d18c5b9f93b6a9c4aff3083ce60c3752d1664", + "index": "100644 aa9f798b39bcfe1f42b9a6777b1f83e7973e3c42 0\tworkplans/WARDEN-WP-0044-security-case-follow-through.md" + }, + { + "path": "workplans/archived/260515-WARDEN-WP-0001-initial-implementation.md", + "sha256": "359456ecd25525d95748ca611e7c6c118eee2b914dae447c84c59442a6520458", + "index": "100644 5425cbd886ff77afc9be7c8b62b97d03278e0a8e 0\tworkplans/archived/260515-WARDEN-WP-0001-initial-implementation.md" + }, + { + "path": "workplans/archived/260515-WARDEN-WP-0002-correctness-and-completeness.md", + "sha256": "43ba78e9c6e9914360edc88a6f8f5af0f981b3078ef41808a784ce7388559fb7", + "index": "100644 0b6044f99391e81a439f2782ee697434319df05b 0\tworkplans/archived/260515-WARDEN-WP-0002-correctness-and-completeness.md" + }, + { + "path": "workplans/archived/260515-WARDEN-WP-0003-test-coverage-and-quality.md", + "sha256": "4fb4ac0cb72cf14dd72c6e5f313a068d90ead203460ad3ac68f0d5dd12b6a755", + "index": "100644 d544f950037cb705d5f7195ee559f91ca9f6a4f4 0\tworkplans/archived/260515-WARDEN-WP-0003-test-coverage-and-quality.md" + }, + { + "path": "workplans/archived/260617-WARDEN-WP-0004-repo-hygiene-and-hub-sync.md", + "sha256": "fbb36a3d9c4ab0ac829bba713160d919b3c12c19f5f5826fb4e8483edeec3ac1", + "index": "100644 31330938708c5ae9b6412c5715549f2d69192589 0\tworkplans/archived/260617-WARDEN-WP-0004-repo-hygiene-and-hub-sync.md" + }, + { + "path": "workplans/archived/260617-WARDEN-WP-0005-openbao-doc-alignment.md", + "sha256": "3c930a395d518f9b287855632c21fe99a3d5c78a758ece06498fb9e35f5ea8b9", + "index": "100644 9969260deee2960143102edecadb9fd7c9736832 0\tworkplans/archived/260617-WARDEN-WP-0005-openbao-doc-alignment.md" + }, + { + "path": "workplans/archived/260617-WARDEN-WP-0006-netkingdom-alignment-and-access-stewardship.md", + "sha256": "fbc90ca4c18f8180a7fbcd2b43f21d7f99a44c914eb17c78f823228f8e3cc64f", + "index": "100644 8a7cc2f69821ac8cbf0de744073b7a938fa6b51d 0\tworkplans/archived/260617-WARDEN-WP-0006-netkingdom-alignment-and-access-stewardship.md" + }, + { + "path": "workplans/archived/260617-WARDEN-WP-0007-policy-gate-and-production-verify.md", + "sha256": "613b73c79bad0929f621feb136b3141f9c60e23bf6e23650881a47c762101214", + "index": "100644 f49eea27ea7c15f4f3d608669ddd60e3a13803b5 0\tworkplans/archived/260617-WARDEN-WP-0007-policy-gate-and-production-verify.md" + }, + { + "path": "workplans/archived/260618-WARDEN-WP-0008-production-ssh-path-and-stewardship-closeout.md", + "sha256": "8362d4cdb933b52c9be968d5410c8548c7554cc4cd44ab0389b913674795a10a", + "index": "100644 f3827285c4e279f36ac63c14ad166ff90544659a 0\tworkplans/archived/260618-WARDEN-WP-0008-production-ssh-path-and-stewardship-closeout.md" + }, + { + "path": "workplans/archived/260623-WARDEN-WP-0009-flex-auth-policy-gate-production.md", + "sha256": "fa611c1a2e5c5a214e38f0673ebcda17e3f30e10556b268fb126ded9af2bdbbb", + "index": "100644 7f87d0ed26b7f19438f164a10a10a46808824776 0\tworkplans/archived/260623-WARDEN-WP-0009-flex-auth-policy-gate-production.md" + }, + { + "path": "workplans/archived/260624-WARDEN-WP-0010-access-routing-charter.md", + "sha256": "62bc994e3efbb124004f98992ded6842ff2748568b2e405c61b335385a35b9d7", + "index": "100644 12357da7a3d1d5f994e70d0f06dcc80ea1faf848 0\tworkplans/archived/260624-WARDEN-WP-0010-access-routing-charter.md" + }, + { + "path": "workplans/archived/260624-WARDEN-WP-0011-routing-guide-cli.md", + "sha256": "767cd3c53cfe64beab93f19475be823d0637a40140877db6dfcc60e2693652ce", + "index": "100644 3fe363e93d7e7d38db58deeec0ef3023bb35f8fa 0\tworkplans/archived/260624-WARDEN-WP-0011-routing-guide-cli.md" + }, + { + "path": "workplans/archived/260624-WARDEN-WP-0013-production-integration-and-stewardship-closeout.md", + "sha256": "ecc38b4998796e20d734105df81ef6e2eb05c8e830b6d0dbe344d6336b9f668b", + "index": "100644 9812e11e5e3499a22d0d4dde01fccd26b7d0ee03 0\tworkplans/archived/260624-WARDEN-WP-0013-production-integration-and-stewardship-closeout.md" + }, + { + "path": "workplans/archived/260627-WARDEN-WP-0012-routing-scenario-playbooks.md", + "sha256": "7a7a1d25cd1d015c0a28f0d443de0512fc48cb1fda4317760051251988aa96f0", + "index": "100644 acf9cce9f55395827479d4963e2d257be182f507 0\tworkplans/archived/260627-WARDEN-WP-0012-routing-scenario-playbooks.md" + }, + { + "path": "workplans/archived/260627-WARDEN-WP-0014-operator-access-assist.md", + "sha256": "c1b84e750b2580fa1deae7dd56fd29abe5d9924a3ccd47ce9fc5f99c26aa4924", + "index": "100644 01240484d955b0af77443d6dd49948c96f9fb032 0\tworkplans/archived/260627-WARDEN-WP-0014-operator-access-assist.md" + }, + { + "path": "workplans/archived/260627-WARDEN-WP-0015-secret-lifecycle-tiering.md", + "sha256": "300b8b6cfdd7306fbb81ab30d4f59551976eed1de0012fd655e4b6fc096ccf10", + "index": "100644 c59207892dcf723ce7b4ca0908635fb32407176e 0\tworkplans/archived/260627-WARDEN-WP-0015-secret-lifecycle-tiering.md" + }, + { + "path": "workplans/archived/260707-ADHOC-2026-07-07.md", + "sha256": "e169418f6d83f954de1907ae8fa26a5f5cf4fe011be01dba9363e69befa05cfa", + "index": "100644 31e9d27f2aa37f8eac17cb5500873a60b9ee8833 0\tworkplans/archived/260707-ADHOC-2026-07-07.md" + } +] diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.json b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.json new file mode 100644 index 00000000..f990cc58 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.json @@ -0,0 +1,151 @@ +{ + "repo_slug": "ops-warden", + "repo_path": "/home/worsch/ops-warden", + "source_revision": "ae7bc73b4f4bac22454144959b870d161498e0af", + "source_revision_reason": null, + "issues": [ + { + "severity": "WARN", + "check_id": "C-24", + "message": "Repo classification advisory: capability_tag 'security' is not a recommended family tag (allowed, check for synonym)", + "file_path": "", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-42", + "message": "Blocked workplan 'warden-wp-0027' has no task in status wait \u2014 nothing states what it waits for; qualify a wait task or re-status the workplan", + "file_path": "workplans/WARDEN-WP-0027-credential-governance-lockdown.md", + "db_id": "21528e8d-a049-523d-9ae1-da7a27cb8bbf", + "file_value": "blocked", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-37", + "message": "Residual workplan 'warden-wp-0034' has no origin/origin_ref provenance (not invented)", + "file_path": "workplans/WARDEN-WP-0034-layer-model-v07-conformance.md", + "db_id": "ae3ff76f-883d-5e2f-b6aa-144d61e8fdef", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-40", + "message": "blocker satisfied, task still wait: 'WARDEN-WP-0037-T03' in workplan 'WARDEN-WP-0037' \u2014 decision 1591daa1-6e85-4dfd-aadd-5a9fe1ef47fa is resolved", + "file_path": "workplans/WARDEN-WP-0037-whynot-design-forgejo-npm-lane.md#WARDEN-WP-0037-T03", + "db_id": "", + "file_value": "1591daa1-6e85-4dfd-aadd-5a9fe1ef47fa", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-11", + "message": "Task 'WARDEN-WP-0038-T01' has no state_hub_task_id", + "file_path": "workplans/WARDEN-WP-0038-plan-mutation-intent.md#WARDEN-WP-0038-T01", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": true + }, + { + "severity": "WARN", + "check_id": "C-37", + "message": "Residual workplan 'warden-wp-0040' has no origin/origin_ref provenance (not invented)", + "file_path": "workplans/WARDEN-WP-0040-unknown-zone-fail-closed-adoption.md", + "db_id": "c8ee441e-1be1-5219-910c-e79ff23cc9ec", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-06-29@retired-20260828' (id=1c0460b7\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "1c0460b7-bc8a-48db-96d4-681bce18ac91", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-08-17@retired-20260827' (id=8376eb89\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "8376eb89-36f2-52b0-a59a-2954b2e49349", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-08-11@retired-20260827' (id=bc6dd3e3\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "bc6dd3e3-ab2b-567a-9574-30d2650f20a2", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'ops-warden-adhoc-2026-06-27@retired-20260827' (id=142b171b\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "142b171b-c34b-4a45-91a5-c77e6d07ec6f", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-07-07@retired-20260827' (id=2e8bc783\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "2e8bc783-2e37-4b86-a691-177b18329783", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-28", + "message": "2 unread inbox message(s) older than 3 day(s): the-custodian:23172cb2, the-custodian:51e9eace", + "file_path": "", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-28", + "message": "3 unread message(s) lack thread_id for supersession tracking: the-custodian:d422aecb, the-custodian:23172cb2, the-custodian:51e9eace", + "file_path": "", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": false + } + ], + "fixes_applied": [ + "bindings: synced 51/51", + "C-17 cleared: pushed 6 backlogged commit(s)", + "C-11 skipped: task 'WARDEN-WP-0038-T01' in finished workstream \u2014 not created", + "push: pushed" + ], + "summary": { + "fail": 0, + "automation_error": 0, + "warn": 8, + "info": 5 + }, + "result": "warn" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.stderr.txt b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/consistency.stderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/focused-tests.txt b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/focused-tests.txt new file mode 100644 index 00000000..df15d6cd --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/focused-tests.txt @@ -0,0 +1,3 @@ +........................................................................ [ 80%] +.................. [100%] +90 passed in 4.74s diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integrate.py b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integrate.py new file mode 100644 index 00000000..8c0d8f2b --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integrate.py @@ -0,0 +1,93 @@ +from pathlib import Path +import hashlib,json,re,subprocess,sys +p=Path(__file__).resolve().parent;r=Path('/home/worsch/ops-warden') +f=p.parent/'warden-1.3-kernel-fixes-r1'; review=json.loads((p.parent/'warden-1.3-kernel-review-r2/kernel-review-r2.json').read_text()) +w=Path('/tmp/warden-kernel-source-integration-r1') +base='117fec9241e7b985dfb187b992e173d0a5dc3700'; branch='5abde817775d6304e3cf5a46948717a1606981bf' +def git(root,*a):return subprocess.check_output(['git','-C',str(root),*a],stderr=subprocess.PIPE,text=True,timeout=60).strip() +assert git(r,'rev-parse','HEAD')==base +assert git(r,'rev-parse','warden-1.3-kernel')==branch +assert git(r,'ls-remote','origin','refs/heads/main').split()[0]==base +assert not w.exists() +assert hashlib.sha256((f/'candidate.patch').read_bytes()).hexdigest()=='1a3530a1e469fc03c2c29f1b66fa3ba1904e56bf2abcfb242c7a2ed015fb3e74' +assert hashlib.sha256((f/'test-isolation-proposal.patch').read_bytes()).hexdigest()=='0f6c46303ec24f337e4190ec84773ccefb4833241233b4b7d56bd1927eba838c' +original_work=(r/'WORK-RECORDS.md').read_bytes(); original_index=git(r,'ls-files','--stage','--','WORK-RECORDS.md') +(p/'WORK-RECORDS.md.backup').write_bytes(original_work) +git(r,'worktree','add','--detach',str(w),branch) +for file in ['candidate.patch','test-isolation-proposal.patch']: + git(w,'apply','--check',str(f/file));git(w,'apply',str(f/file)) +for file,want in review['inputs']['candidate_files_verified'].items(): + assert hashlib.sha256((w/file).read_bytes()).hexdigest()==want.split(':')[-1] +for file,want in review['inputs']['unchanged_pins_verified'].items(): + assert hashlib.sha256((w/file).read_bytes()).hexdigest()==want.split(':')[-1] +name='workplans/WARDEN-WP-0044-security-case-follow-through.md' +old=(w/name).read_text();(p/'workplan.preimage.md').write_text(old) +new=old+""" + +## 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. +""" +assert re.findall(r'```task\n.*?```',old,re.S)==re.findall(r'```task\n.*?```',new,re.S) +(w/name).write_text(new) +# Repeat the independently reviewed focused cases with an empty allowlisted HOME. +probe=p.parent/'warden-1.3-kernel-review-r2/reviewer-probes.py' +(w/'tests/test_review_r2_independent.py').write_bytes(probe.read_bytes()) +home=p/'test-home';home.mkdir() +env={'HOME':str(home),'PATH':'/usr/bin:/bin','PYTHONDONTWRITEBYTECODE':'1','PYTHONPATH':'/tmp/warden-kernel-review-r2/guard:'+str(w/'src'),'LANG':'C.UTF-8'} +with (p/'focused-tests.txt').open('w') as log: + result=subprocess.run(['/tmp/warden-kernel-review-r1/final/.venv/bin/python','-B','-m','pytest','-q','-p','no:cacheprovider','tests/test_review_r2_independent.py','tests/test_case_attended_boundary.py','tests/test_case_admission_modes.py','tests/test_access.py','tests/test_openbao_caller.py'],cwd=w,env=env,stdout=log,stderr=subprocess.STDOUT,timeout=120) +assert result.returncode==0,'guarded focused tests failed; preserve worktree' +paths=[*review['inputs']['candidate_files_verified'],'tests/test_access.py',name] +git(w,'diff','--check') +run=subprocess.run(['git','-C',str(w),'add','--',*paths],capture_output=True,text=True);assert run.returncode==0 +run=subprocess.run(['git','-C',str(w),'commit','--only','-m','fix(case): preserve attended authority at dispatch and validate session lanes','--',*paths],capture_output=True,text=True,timeout=240) +(p/'commit.json').write_text(json.dumps({'exit_code':run.returncode,'stdout':run.stdout,'stderr':run.stderr},indent=2)+'\n') +assert run.returncode==0,'normal commit refused' +head=git(w,'rev-parse','HEAD') +assert set(git(w,'diff-tree','--no-commit-id','--name-only','-r',head).splitlines())==set(paths) +assert git(r,'rev-parse','HEAD')==base and git(r,'ls-remote','origin','refs/heads/main').split()[0]==base +assert (r/'WORK-RECORDS.md').read_bytes()==original_work and git(r,'ls-files','--stage','--','WORK-RECORDS.md')==original_index +git(r,'merge','--ff-only',head) +assert (r/'WORK-RECORDS.md').read_bytes()==original_work and git(r,'ls-files','--stage','--','WORK-RECORDS.md')==original_index +(p/'integration.json').write_text(json.dumps({'status':'integrated-source-not-published','base':base,'draft_branch':branch,'head':head,'paths':paths,'unchanged_original_workplan_tasks':4,'ambient_owner_dirt_preserved':True,'catalog_promotion':False,'PARAMETER_PINS_changed':False,'native_action':False,'test_result':(p/'focused-tests.txt').read_text()},indent=2)+'\n') +print(json.dumps({'status':'integrated','head':head,'paths':len(paths),'focused_tests':'passed','native_action':False})) diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integration.json b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integration.json new file mode 100644 index 00000000..b8a57ba7 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/integration.json @@ -0,0 +1,22 @@ +{ + "status": "integrated-source-not-published", + "base": "117fec9241e7b985dfb187b992e173d0a5dc3700", + "draft_branch": "5abde817775d6304e3cf5a46948717a1606981bf", + "head": "ae7bc73b4f4bac22454144959b870d161498e0af", + "paths": [ + "src/warden/case_run.py", + "src/warden/case_type.py", + "src/warden/routing/models.py", + "tests/test_case_1_3_integration.py", + "tests/test_case_admission_modes.py", + "tests/test_case_attended_boundary.py", + "tests/test_access.py", + "workplans/WARDEN-WP-0044-security-case-follow-through.md" + ], + "unchanged_original_workplan_tasks": 4, + "ambient_owner_dirt_preserved": true, + "catalog_promotion": false, + "PARAMETER_PINS_changed": false, + "native_action": false, + "test_result": "........................................................................ [ 80%]\n.................. [100%]\n90 passed in 4.74s\n" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.json b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.json new file mode 100644 index 00000000..33a183b5 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.json @@ -0,0 +1,296 @@ +{ + "ok": true, + "status": "applied", + "repo_slug": "ops-warden", + "commit": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "requests": 2, + "elapsed_ms": 12875.5, + "git": { + "upstream": "origin/main", + "behind": 0, + "ahead": 0 + }, + "identifiers": { + "schema": "repo-manager.identifier-assignment.v1", + "ok": true, + "executed": true, + "repo": "ops-warden", + "namespace": "helixforge", + "assignments": [ + { + "kind": "task", + "record_id": "WARDEN-WP-0038-T01", + "uuid": "ef28df7c-2c72-56be-ad90-4e079f37639f", + "path": "workplans/WARDEN-WP-0038-plan-mutation-intent.md" + } + ], + "historical_invalid_identifiers": [], + "historical_identity_collisions": [], + "files_changed": [ + "workplans/WARDEN-WP-0038-plan-mutation-intent.md" + ] + }, + "receipt": { + "schema": "state-hub.repository-projection-reconcile.v1", + "instance_role": "primary", + "instance_label": "railiance01", + "expected_commit": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "derived_commit": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "outcome": { + "schema": "state-hub.projection-reset.v1", + "repo_slug": "ops-warden", + "commit": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "status": "applied", + "counts": { + "created": 0, + "updated": 51, + "retired": 0, + "refused": 0, + "released": 0, + "created_tasks": 0, + "updated_tasks": 0, + "cancelled_tasks": 0, + "created_edges": 0, + "removed_edges": 0, + "unresolved_edges": 0, + "external_edges": 17 + }, + "created": [], + "updated": [ + "WARDEN-WP-0001", + "WARDEN-WP-0002", + "WARDEN-WP-0003", + "WARDEN-WP-0004", + "WARDEN-WP-0005", + "WARDEN-WP-0006", + "WARDEN-WP-0007", + "WARDEN-WP-0008", + "WARDEN-WP-0009", + "WARDEN-WP-0010", + "WARDEN-WP-0011", + "WARDEN-WP-0012", + "WARDEN-WP-0013", + "WARDEN-WP-0014", + "WARDEN-WP-0015", + "WARDEN-WP-0016", + "WARDEN-WP-0017", + "WARDEN-WP-0018", + "WARDEN-WP-0019", + "WARDEN-WP-0020", + "WARDEN-WP-0021", + "WARDEN-WP-0022", + "WARDEN-WP-0023", + "WARDEN-WP-0024", + "WARDEN-WP-0025", + "WARDEN-WP-0026", + "WARDEN-WP-0027", + "WARDEN-WP-0028", + "WARDEN-WP-0029", + "WARDEN-WP-0030", + "WARDEN-WP-0031", + "WARDEN-WP-0032", + "WARDEN-WP-0033", + "WARDEN-WP-0034", + "WARDEN-WP-0035", + "WARDEN-WP-0036", + "WARDEN-WP-0037", + "WARDEN-WP-0038", + "WARDEN-WP-0039", + "WARDEN-WP-0040", + "WARDEN-WP-0041", + "WARDEN-WP-0042", + "WARDEN-WP-0043", + "WARDEN-WP-0044", + "WARDEN-WP-ADHOC-2026-06-27", + "WARDEN-WP-ADHOC-2026-06-29", + "WARDEN-WP-ADHOC-2026-07-07", + "WARDEN-WP-ADHOC-2026-08-11", + "WARDEN-WP-ADHOC-2026-08-17", + "WARDEN-WP-ADHOC-2026-09-08", + "WARDEN-WP-ADHOC-2026-10-03" + ], + "retired": [], + "released": [], + "created_tasks": [], + "updated_tasks": [], + "cancelled_tasks": [], + "created_edges": [], + "removed_edges": [], + "unresolved_edges": [], + "external_edges": [ + { + "workplan": "WARDEN-WP-0032", + "from": "WARDEN-WP-0032", + "target": "WARDEN-WP-0031", + "relationship_type": "blocks", + "from_workplan_id": "38c6a5f3-fb0d-5230-be85-f9e3ffc850f6", + "from_task_id": null, + "to_workplan_id": "739bad25-2345-5f4f-aaa3-cc4cd8c71f6c", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0037", + "from": "WARDEN-WP-0037-T03", + "target": "SECRETS-WP-0006-T06", + "relationship_type": "starts_after", + "from_workplan_id": "42a097db-1c24-558e-a724-030bb2b4443e", + "from_task_id": "a8b1b855-ab34-5835-b9fd-5f48bc0b6817", + "to_workplan_id": null, + "to_task_id": "1431edae-5791-5892-8c4b-829419b537d2" + }, + { + "workplan": "WARDEN-WP-0033", + "from": "WARDEN-WP-0033", + "target": "WARDEN-WP-0030", + "relationship_type": "blocks", + "from_workplan_id": "4627d89b-4b00-562a-81e9-76e96f90fa7e", + "from_task_id": null, + "to_workplan_id": "da3367d5-890c-52c6-aa54-1bdd0f277342", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0013", + "from": "WARDEN-WP-0013", + "target": "WARDEN-WP-0011", + "relationship_type": "blocks", + "from_workplan_id": "4678c41a-c1d0-48cd-9988-4ea0380e8258", + "from_task_id": null, + "to_workplan_id": "0a520f8e-01b4-48f1-9af3-2f3f69fd0672", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0013", + "from": "WARDEN-WP-0013", + "target": "WARDEN-WP-0009", + "relationship_type": "blocks", + "from_workplan_id": "4678c41a-c1d0-48cd-9988-4ea0380e8258", + "from_task_id": null, + "to_workplan_id": "9213b262-e2f5-480e-a5bc-56635d5eb4c9", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0013", + "from": "WARDEN-WP-0013", + "target": "WARDEN-WP-0008", + "relationship_type": "blocks", + "from_workplan_id": "4678c41a-c1d0-48cd-9988-4ea0380e8258", + "from_task_id": null, + "to_workplan_id": "a174963a-4ff1-4565-b19f-896cd4ff14a0", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0013", + "from": "WARDEN-WP-0013", + "target": "WARDEN-WP-0010", + "relationship_type": "blocks", + "from_workplan_id": "4678c41a-c1d0-48cd-9988-4ea0380e8258", + "from_task_id": null, + "to_workplan_id": "e93de9fd-0192-4d02-bb7c-5e859fb76b9b", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0031", + "from": "WARDEN-WP-0031", + "target": "WARDEN-WP-0007", + "relationship_type": "blocks", + "from_workplan_id": "739bad25-2345-5f4f-aaa3-cc4cd8c71f6c", + "from_task_id": null, + "to_workplan_id": "3718ac07-2fa2-47d0-a02a-c9a7b83a5ba9", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0038", + "from": "WARDEN-WP-0038", + "target": "WARDEN-WP-0029", + "relationship_type": "blocks", + "from_workplan_id": "751ad530-e44b-52c4-b70e-cb47568a0179", + "from_task_id": null, + "to_workplan_id": "bbb3d9ec-d88d-5088-b4c0-55bfba0a10cf", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0023", + "from": "WARDEN-WP-0023", + "target": "WARDEN-WP-0022", + "relationship_type": "blocks", + "from_workplan_id": "7bad1ec4-a7c2-4980-b8f9-49a7f5408574", + "from_task_id": null, + "to_workplan_id": "fc8afa28-68a7-4250-a19e-9754829f0cd5", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0034", + "from": "WARDEN-WP-0034", + "target": "WARDEN-WP-0030", + "relationship_type": "blocks", + "from_workplan_id": "ae3ff76f-883d-5e2f-b6aa-144d61e8fdef", + "from_task_id": null, + "to_workplan_id": "da3367d5-890c-52c6-aa54-1bdd0f277342", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0040", + "from": "WARDEN-WP-0040", + "target": "WARDEN-WP-0032", + "relationship_type": "blocks", + "from_workplan_id": "c8ee441e-1be1-5219-910c-e79ff23cc9ec", + "from_task_id": null, + "to_workplan_id": "38c6a5f3-fb0d-5230-be85-f9e3ffc850f6", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0040", + "from": "WARDEN-WP-0040", + "target": "WARDEN-WP-0034", + "relationship_type": "blocks", + "from_workplan_id": "c8ee441e-1be1-5219-910c-e79ff23cc9ec", + "from_task_id": null, + "to_workplan_id": "ae3ff76f-883d-5e2f-b6aa-144d61e8fdef", + "to_task_id": null + }, + { + "workplan": "WARDEN-WP-0040", + "from": "WARDEN-WP-0040-T03", + "target": "WARDEN-WP-0040-T01", + "relationship_type": "starts_after", + "from_workplan_id": "c8ee441e-1be1-5219-910c-e79ff23cc9ec", + "from_task_id": "93eaf1f2-daaa-5e22-8804-85ca9433571c", + "to_workplan_id": null, + "to_task_id": "611f0901-9fb5-5954-8dd0-a860c5f0cbec" + }, + { + "workplan": "WARDEN-WP-0044", + "from": "WARDEN-WP-0044-T04", + "target": "WARDEN-WP-0044-T03", + "relationship_type": "starts_after", + "from_workplan_id": "f7e81013-6868-5d99-8528-ba75a442eca9", + "from_task_id": "4a0fa4a7-5ca9-518a-ab92-a79a5e2cf93e", + "to_workplan_id": null, + "to_task_id": "bcbf6c91-2c04-5c16-ae8c-5d6c06fd6b89" + }, + { + "workplan": "WARDEN-WP-0044", + "from": "WARDEN-WP-0044-T03", + "target": "MASON-WP-0010-T03", + "relationship_type": "starts_after", + "from_workplan_id": "f7e81013-6868-5d99-8528-ba75a442eca9", + "from_task_id": "bcbf6c91-2c04-5c16-ae8c-5d6c06fd6b89", + "to_workplan_id": null, + "to_task_id": "56cea6be-c613-586c-80cd-125340b374da" + }, + { + "workplan": "WARDEN-WP-0044", + "from": "WARDEN-WP-0044-T03", + "target": "WARDEN-WP-0044-T02", + "relationship_type": "starts_after", + "from_workplan_id": "f7e81013-6868-5d99-8528-ba75a442eca9", + "from_task_id": "bcbf6c91-2c04-5c16-ae8c-5d6c06fd6b89", + "to_workplan_id": null, + "to_task_id": "5f68c991-f490-58f8-a121-92f74073d272" + } + ], + "refused": [], + "notes": [] + } + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.stderr.txt b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/normal-sync.stderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/publish.py b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/publish.py new file mode 100644 index 00000000..b1fb0c2e --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/publish.py @@ -0,0 +1,64 @@ +from pathlib import Path +import hashlib,json,subprocess,urllib.request,re +p=Path(__file__).resolve().parent;r=Path('/home/worsch/ops-warden') +cfg=json.loads((p/'integration.json').read_text());head=cfg['head'] +def git(*a):return subprocess.check_output(['git','-C',str(r),*a],stderr=subprocess.PIPE,text=True,timeout=90).strip() +assert git('rev-parse','HEAD')==head +assert git('ls-remote','origin','refs/heads/main').split()[0] in {cfg['base'],head} +backup=p/'consistency-backup';assert not backup.exists();backup.mkdir() +files=[r/'.custodian-brief.md',r/'WORK-RECORDS.md',*sorted((r/'workplans').rglob('*.md'))] +rows=[] +for f in files: + if not f.exists():continue + n=str(f.relative_to(r));dst=backup/n;dst.parent.mkdir(parents=True,exist_ok=True);dst.write_bytes(f.read_bytes()) + rows.append({'path':n,'sha256':hashlib.sha256(f.read_bytes()).hexdigest(),'index':git('ls-files','--stage','--',n)}) +(p/'consistency-preimage.json').write_text(json.dumps(rows,indent=2)+'\n') +try: + result=subprocess.run(['statehub','fix-consistency','--repo','ops-warden','--no-writeback','--json'],cwd=r,capture_output=True,text=True,timeout=300) + (p/'consistency.json').write_text(result.stdout);(p/'consistency.stderr.txt').write_text(result.stderr) + assert result.returncode==0,'required consistency failed' + data=json.loads(result.stdout);assert data.get('fail',data.get('summary',{}).get('fail',0))==0 +finally: + for row in rows: + n=row['path'];f=r/n;old=(backup/n).read_bytes() + if f.read_bytes()!=old: + (p/('changed-'+n.replace('/','-'))).write_bytes(f.read_bytes());f.write_bytes(old) + if git('ls-files','--stage','--',n)!=row['index']: + mode,oid,stage,name=row['index'].split();assert stage=='0';git('update-index','--cacheinfo',mode,oid,name) + assert hashlib.sha256(f.read_bytes()).hexdigest()==row['sha256'] +assert git('rev-parse','HEAD')==head +result=subprocess.run(['/home/worsch/repo-manager/.venv/bin/rmgr','sync','--path',str(r),'--push'],capture_output=True,text=True,timeout=180) +(p/'normal-sync.json').write_text(result.stdout);(p/'normal-sync.stderr.txt').write_text(result.stderr) +if result.returncode: + text=result.stdout+result.stderr + assert 'WARDEN-WP-0038-T01' in text and ('UUID' in text or 'uuid' in text),'unexpected sync refusal; stop' + assert git('ls-remote','origin','refs/heads/main').split()[0] in {cfg['base'],head} + push=subprocess.run(['git','-C',str(r),'push','origin','main'],capture_output=True,text=True,timeout=120) + (p/'source-push.json').write_text(json.dumps({'exit_code':push.returncode,'stdout':push.stdout,'stderr':push.stderr},indent=2)+'\n') + assert push.returncode==0,'normal source push refused' +else: + data=json.loads(result.stdout);assert data.get('status') in {'applied','noop'} +assert git('ls-remote','origin','refs/heads/main').split()[0]==head +body={'expected_commit':head,'acknowledge_retirements':False} +request=urllib.request.Request('http://127.0.0.1:8000/repos/ops-warden/work-record-projection/reconcile',data=json.dumps(body).encode(),headers={'Content-Type':'application/json','X-StateHub-Component':'ops-warden'},method='POST') +with urllib.request.urlopen(request,timeout=120) as response: receipt=json.load(response) +(p/'receiver-receipt.json').write_text(json.dumps(receipt,indent=2)+'\n') +assert receipt['ok'] and receipt['status'] in {'applied','noop'} +rp=receipt['receipt'];assert rp['expected_commit']==rp['derived_commit']==head +assert (rp['instance_role'],rp['instance_label'])==('primary','railiance01') +assert rp['outcome']['counts']['retired']==0 +name='workplans/WARDEN-WP-0044-security-case-follow-through.md';text=(r/name).read_text() +blocks=re.findall(r'```task\n.*?```',text,re.S) +assert len(blocks)==4 +bindings=[] +for b in blocks: + tid=re.search(r'state_hub_task_id: "(.*?)"',b).group(1);status=re.search(r'^status: (.+)$',b,re.M).group(1) + with urllib.request.urlopen('http://127.0.0.1:8000/tasks/'+tid,timeout=15) as response:task=json.load(response) + assert task['status']==status + bindings.append({'record_id':task.get('record_id'),'id':tid,'status':status}) +for row in rows: + assert hashlib.sha256((r/row['path']).read_bytes()).hexdigest()==row['sha256'] + assert git('ls-files','--stage','--',row['path'])==row['index'] +verification={'status':'published-and-projected','head':head,'primary_task_bindings':bindings,'preserved_files_and_index':len(rows),'normal_allocator_refusal_preserved':result.returncode!=0,'catalog_promotion':False,'PARAMETER_PINS_changed':False,'native_actions':False} +(p/'verification.json').write_text(json.dumps(verification,indent=2)+'\n') +print(json.dumps(verification)) diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/verification.json b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/verification.json new file mode 100644 index 00000000..d3674f8f --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/verification.json @@ -0,0 +1,53 @@ +{ + "status": "published-and-projected", + "implementation_commit": "ae7bc73b4f4bac22454144959b870d161498e0af", + "final_published_commit": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "normal_allocator_assignment": [ + { + "kind": "task", + "record_id": "WARDEN-WP-0038-T01", + "uuid": "ef28df7c-2c72-56be-ad90-4e079f37639f", + "path": "workplans/WARDEN-WP-0038-plan-mutation-intent.md" + } + ], + "allocator_commit_only_adds_missing_uuid": true, + "preserved_other_files_and_index": 52, + "primary_task_bindings": [ + { + "id": "ef0920fc-418e-52cb-acff-9a5c0c728bf5", + "record_id": "WARDEN-WP-0044-T01", + "status": "done", + "needs_human": false + }, + { + "id": "5f68c991-f490-58f8-a121-92f74073d272", + "record_id": "WARDEN-WP-0044-T02", + "status": "done", + "needs_human": false + }, + { + "id": "bcbf6c91-2c04-5c16-ae8c-5d6c06fd6b89", + "record_id": "WARDEN-WP-0044-T03", + "status": "progress", + "needs_human": false + }, + { + "id": "4a0fa4a7-5ca9-518a-ab92-a79a5e2cf93e", + "record_id": "WARDEN-WP-0044-T04", + "status": "wait", + "needs_human": false + }, + { + "id": "ef28df7c-2c72-56be-ad90-4e079f37639f", + "record_id": "WARDEN-WP-0038-T01", + "status": "done", + "needs_human": false + } + ], + "retired": 0, + "cancelled": 0, + "native_actions": false, + "catalog_promotion": false, + "PARAMETER_PINS_changed": false, + "prior_attempt": "publish.py stopped at stale expected-head assertion after normal rmgr sync succeeded and assigned missing historical UUID; no retry, rewrite or duplicate sync needed." +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/workplan.preimage.md b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/workplan.preimage.md new file mode 100644 index 00000000..f6413241 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-kernel-source-integration-r1/workplan.preimage.md @@ -0,0 +1,312 @@ +--- +id: WARDEN-WP-0044 +type: workplan +title: "Follow through on KnownSecurityCases along their type's route" +domain: infotech +repo: ops-warden +status: active +flavor: implementation +owner: claude-code +topic_slug: netkingdom +created: "2026-10-08" +updated: "2026-10-11" +depends_on: [] +related_repos: + - net-kingdom + - ops-mason + - key-cape + - railiance-platform +state_hub_workstream_id: "f7e81013-6868-5d99-8528-ba75a442eca9" +--- + +# WARDEN-WP-0044 — Follow through on KnownSecurityCases along their type's route + +## Why + +NetKingdom is introducing SecurityCaseTypes (net-kingdom `NK-WP-0048`, canon +`security-case-types_v0.1`, proposed). Once a case of an implemented type is +accepted and ops-mason has materialized its structure (`MASON-WP-0010`), +ops-warden carries out the remaining steps. These are the owners' declared entry +points, run on the authentication path the type defines, followed by the type's +verification. + +Today ops-warden routes needs and, for `exec_capable` lanes, proxies fetches as +the caller. It does not yet know about cases, and each new integration ends with +a founder running a hand-written script (for example the proposed KEY-WP-0038-T02 +rollout). This plan gives ops-warden the follow-through role, without widening +what it may do: each step still runs under its owner's entry point and the +caller's identity. + +## Tasks + +```task +id: WARDEN-WP-0044-T01 +status: done +depends_on: [NK-WP-0048-T03] +priority: high +state_hub_task_id: "ef0920fc-418e-52cb-acff-9a5c0c728bf5" +``` + +### T01 — Define the type's follow-through section + +Propose the `follow_through` part of the SecurityCaseType schema together with +net-kingdom. For each step it names the owner entry point, `warden_executes`, +the auth method and lane, whether an attended human login is unavoidable (with +the type's justification), and the verification command. Write it for the first +type, `oidc-browser-relying-party`, covering key-cape client registration, +custody minting and LLDAP group membership. + +2026-10-08: NK-WP-0048-T03/T04 landed with a drafted section. Review is in +`history/2026-10-08-oidc-rp-follow-through-review.md`. It requires three +changes before T02: a per-step `lane`, a narrow `warden_executes`, and +`value_handling`. It also lists four refinements. This task is done when +net-kingdom acknowledges the review (NK-WP-0048-T05). + +2026-10-09: R4 was withdrawn in favour of ops-mason's per-case +`{consuming_service}-keycape-client`, with the entry body templated in the type +(R4′, see the addendum in the review). + +2026-10-09: the revised 1.0 type and canon now carry R1–R3, R4′, R5–R7. +`warden case check-type ` (`src/warden/case_type.py`, tests in +`tests/test_case_type.py`) checks a type's follow-through mechanically: the +live type is schema-conformant, with one attended session +(`key-cape-oidc-login`). It is not yet plannable, because two lanes are not +in the catalog: `identity-provisioner-groups` (net-kingdom) and +`keycape-client-secret-generate` (railiance-platform). These gate T02, not +T01. T01 still closes on net-kingdom's acknowledgement (NK-WP-0048-T05). + +2026-10-09: ops-warden cannot add `identity-provisioner-groups` as the type +declares it. The provisioner accepts only user-engine's runtime token and +admits only user-engine pods, so no caller-identity path exists. R8 (review +addendum) asks net-kingdom either to move `ensure-groups` into the existing +attended session (recommended) or to give the provisioner an operator +credential. `keycape-client-secret-generate` needs a generate-in-custody entry +point from railiance-platform, and the broker does not have one yet. Both were +sent to their owners. + +2026-10-09: done. net-kingdom took R8 option 1, so `ensure-groups` runs attended +in the `register-client` session and `identity-provisioner-groups` is dropped +(net-kingdom `0e86f95`). The founder acknowledged the type with memo r4 (hub +decision `e418263e`, NK-WP-0048-T05 done). + +```task +id: WARDEN-WP-0044-T02 +status: done +depends_on: [WARDEN-WP-0044-T01] +priority: high +state_hub_task_id: "5f68c991-f490-58f8-a121-92f74073d272" +``` + +### T02 — Plan a case run + +`warden case plan ` checks that the case is accepted and materialized, +resolves each step to its catalog entry and entry point, and prints the run: +which steps warden executes, which run as the attended caller, what the +verification is. No secret values; no execution. + +Tests: refuse an unaccepted or unmaterialized case; refuse a step whose catalog +entry is missing or not reviewed; show attended steps explicitly. + +2026-10-09: done. `warden case plan [--type] [--json]` +(`src/warden/case_plan.py`, 14 tests in `tests/test_case_plan.py`). It refuses: +- a case that is not `materialized`, or has no acceptance record +- a type that is mismatched or not acknowledged +- any `case check-type` finding, including a missing or unreviewed lane +- undeclared, type-fixed or secret-sensitivity parameters +- a placeholder the case does not set, or an unsupported `when` + +It fills type defaults (`issuer`), evaluates ` == ` conditions, +renders owner, entry point, auth and ready_check, groups attended steps per +lane, and lists the applicable verification. + +The live Forgejo case is correctly refused: it is `accepted`, not +materialized. A materialized copy, with a stand-in lane for +`keycape-client-secret-generate`, renders six steps: two attended steps plus +`register-client` in one `key-cape-oidc-login` session, one warden step +(`mint-secret`), and two owner steps. Seven checks follow. + +Observation for net-kingdom (not blocking): `bind-env` runs before +`register-client`, in type order. Its entry carries a literal +`KEYCAPE__CLIENT_SECRET`, which is not a `{param}` placeholder, so it +reaches the plan unrendered. + +2026-10-09 follow-up: +- **Format specs.** `_render` supports net-kingdom's `{param:env}` spec (upper + case, `-` as `_`, the same as `keycape-client.py env_name`) and refuses any + other spec or `!conversion`. +- **Case reference.** The plan prints `case-ref: @sha256:` over the + case file's exact bytes. This is the reference proposed to railiance-platform + for `credential.py generate --case-ref` (RPF-WP-0054-T01); the broker + re-derives it from the file. +- 18 tests now. + +```task +id: WARDEN-WP-0044-T03 +status: progress +depends_on: [WARDEN-WP-0044-T02, MASON-WP-0010-T03] +blocking_reason: "Local durable execution kernel and injected failure harness implemented. Native acceptance still requires authenticated owner machine descriptors/adapters, actual Forgejo materialization receipt, contained session integration, ordered verification and first native run." +priority: high +state_hub_task_id: "bcbf6c91-2c04-5c16-ae8c-5d6c06fd6b89" +``` + +### T03 — Run and verify a case + +`warden case run ` executes the plan. Owner entry points run through +the existing proxy as the caller; steps that need an attended login use the +existing contained login envelope (silent command, session revoked afterwards), +grouped into as few attended sessions as possible. Then it runs the type's +verification and writes a receipt without values. `warden case rollback` +reverses exactly this case's steps. + +Acceptance: the Forgejo reference case (NK-WP-0048-T06) reaches `live` through +this path, with no case-specific script. + +2026-10-17: original-intent lookup/context interface for NK-WP-0048-T15, source +and synthetic tests only. `src/warden/case_run.py`: `Executor.run` writes an +`OriginalIntent` (schema `warden.case.original-intent.v1`: the dispatched run +Invocation — attempt, step, owner, target, actor, principal, lane, all six pins, +tenant, realm — plus admitted adapter source) in the same SQLite transaction as +the pre-dispatch journal row. `Journal.original_intent(binding, current, source)` +returns it after restart and refuses on a missing record or any +pins/source/step/owner/target/actor/principal/lane/tenant/realm mismatch, before any +journal write, so the step stays uncertain. An adapter's +`reconcile_original(ReconcileContext(original, attempt))` receives the original +intent separately from the new reconcile attempt. This is Warden's record of what +it dispatched, not owner created-only provenance. Current Executor.admit leaves +tenant/realm empty; the reserved coordinates establish no admitted provenance. +Owner descriptors/adapters, contained session integration, Forgejo +materialization and the native run remain open. + +2026-10-17 source consistency follow-through: retained the additive intents table +and reconcile_original callback and fixed four reproduced local defects: original +actor mismatch, payload/SQL attempt-ID mismatch, orphan intent without its +matching original running receipt, and arbitrary nonmetadata values accepted by +the original-intent serializer. Exact bounded field validation, duplicate-free +bounded decode and save-time intent/invocation/running-state equality now preserve +the original receipt linkage before owner lookup. No new context store, native +verifier, trust root, adapter activation or authority migration was introduced. + +The actual canonical focused kernel and new consistency suite passes 54 checks; +owner-installed Ruff check/format passes. The existing generated-data/synthetic +owner fixture and a distinct interpreter prove source correspondence/refusal, +not independent native custody or creation. Earlier comparison probes and failed +preparation are retained. Current caller and fresh session/grant revocation checks +remain required; original owner payload/revocation, exact native readback and +created-only provenance still need independent authenticated owner admission. +No JSON/SQL context, unknown tenant/realm, changed run-sheet or legacy missing +intent supplies recovery, replay or undo authority. T03 remains progress and all +native acceptance gates/statuses/dependencies/UUIDs remain unchanged. Evidence: +Custodian original-context-compare-r2 and original-context-owner-followthrough-r3 +under docs/changes/netkingdom-target-2026-10-17/; publication/projection is separate. + +Agreed with railiance-platform (RPF-WP-0054-T01, 2026-10-09): +- `mint-secret` runs `credential.py generate --grant keycape/client-secret-generate + --client-id --case-ref --case-file ` as the caller's + child process. The broker re-derives the case-ref and checks status and + client_id. +- warden refuses that step when `WARDEN_AGENT_ID` is set. + +2026-10-10: railiance-platform implemented the command (RPF-WP-0054-T03). It is +catalogued as draft `keycape-client-secret-generate`, with `exec_owner` +railiance-platform and `exec_capable: false`. `warden case check-type` now +reports the lane as LANE-UNREVIEWED rather than LANE-MISSING. Before it can be +activated: +- the founder binds the issuer policy to the operator OIDC role +- key-cape confirms the secret format +- the RPF-WP-0054-T05 probe passes + +2026-10-10 (later): +- **Broker lane.** The issuer role is bound (CCR-2026-0043) and the T05 probe + passed (railiance-platform `21b8af3`). Only key-cape's format confirmation is + left. The playbook now includes the issuer-role login, a 15m token with + unlimited uses that `warden case run` must group with the attended session. +- **Env spec.** net-kingdom adopted `{client_id:env}` as a 1.0 patch + (`9a9b8e3`). The plan renders `KEYCAPE_FORGEJO_CLIENT_SECRET`. +- **Forgejo case.** Rendered and built by ops-mason. It is not yet + `materialized`: MASON-WP-0010-T03 waits on the railiance-platform CCRs and + their founder apply. + +2026-10-10: `keycape-client-secret-generate` activated on railiance-platform's +go-ahead (message 20973a9c) after key-cape confirmed the format (4e0213b3). +`warden case check-type` on the live type now reports `plannable=True`. The +only thing T03 still waits on is the Forgejo case reaching `materialized` +(MASON-WP-0010-T03). + +2026-10-10: net-kingdom moved the type to 1.1 (`e2174ce`) and re-pinned the +Forgejo case. 1.1 adds the verification `consumer-enforces-groups` and requires +the hand-over to enforce `access_groups`. `check-type` on 1.1 reports +`plannable=True`, and a materialized copy renders six steps and the new check. +The case-ref digest covers the whole case file, including `status`, so it +changes when the case becomes `materialized`. `warden case run` therefore takes +it from the file at run time, and the broker re-derives it from the same file. + +```task +id: WARDEN-WP-0044-T04 +status: wait +depends_on: [WARDEN-WP-0044-T03] +blocking_reason: "Catalog integration follows a proven run." +priority: medium +state_hub_task_id: "4a0fa4a7-5ca9-518a-ab92-a79a5e2cf93e" +``` + +### T04 — Catalog entries from types + +Let a type contribute reviewed catalog entries once, so that every case of that +type routes without a new catalog edit. Cases add parameter values, not routes. +`warden route find` should be able to answer "which SecurityCaseType covers this +need?" before anyone builds by hand. + + +2026-10-10 consolidation source prototype (not an accepted owner adapter API): +`src/warden/case_receipt_state.py` provides a pure immutable receipt reducer, +with exact case/type/adapter/catalog/acceptance/run-sheet pins, running intent +before dispatch, uncertain recovery after a lost result, no success replay, +explicit retry-safe failed-before-change retry and created-only reverse undo. +It executes nothing and accepts no command output. The caller must durably +persist running before any future side effect; storage/authenticated owner +receipts/live adapters are not implemented. Focused offline tests cover changed +pins, lost receipts, retry/refusal, uncertain rollback and shared-object +preservation. Source proposal: `docs/security-case-execution-proposal.md`. + +T03 remains open: typed owner execution/receipt contracts require review, the +Forgejo structural materialization needs owner receipts, and CLI dispatch, +contained sessions, native verification and provenance remain unimplemented. +There is a circularity to resolve with net-kingdom/ops-mason: materialization +cannot require mint-secret if mint-secret is itself a follow-through step whose +planning requires materialized. No case status is changed by this prototype. + + +2026-10-11: the exact execution-design memo version1 has confirmed native human +acceptance (approval e46b149b-ec3c-4b3b-98a7-dcb4934448ca). The approved proposal +bytes remain unchanged. `src/warden/case_run.py` now implements a closed v1 local +execution seam, independent admission/evidence callbacks, private transactional +SQLite receipt storage, process locking, running-before-dispatch, crash recovery +to uncertainty, explicit safe retry, separately required broker-grant and parent-session revocation +proofs, native owner reconciliation and created-only +reverse rollback. Thirty-seven kernel tests and fourteen reducer tests pass; +ruff checks pass. See `docs/security-case-execution-kernel-v1.md` for exact scope +and receipt provenance. No installed native adapter or live CLI execution is +claimed. Current prose types stay plan-only; acknowledged descriptor/type machine +seams and authenticated owner/caller receipts are still required. T03 progresses +for implementation but cannot finish before ordered native Forgejo acceptance. + +2026-10-16 source preparation (isolated checkout; no native acceptance): +T03's browser parameter mismatch now has a producer-validator-backed projection +in `case_inputs.py`, explicitly configured on the real Executor. Exact 1.1/1.2 +parameter definitions and all four reviewed producer modules are pinned; full case +validation admits reviewed security-sensitive metadata while unknown/fixed/secret +inputs and type/producer drift refuse. Only the reviewed descriptor target +reaches the owner callback; no parameter journal payload is added. Actual +Executor/producer tests cover positive versions and refusal/containment paths. +Acknowledged machine descriptors, authenticated owner evidence, real Forgejo +materialization and contained native sessions remain mandatory and unimplemented; +T03 stays progress, T04 stays wait. No type or case status changed. + +2026-10-16 producer source refresh: independently reviewed NetKingdom +`015694ee414c802dc2ef1fa0120dfed610086e69` optional descriptor-map repair. +Only the validator/evidence source pins change; exact parameter and transitive +source identity remain enforced. Actual canonical producer, Executor and reducer +suite passes 87 checks, including 14 new malformed-map integration cases; all +four missing/changed modules still refuse. Review: +`docs/reviews/2026-10-16-browser-producer-pin-refresh.md`. No adapter attestation, +native acceptance, credential use or privileged dispatch. T03 remains progress. diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/commit.json b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/commit.json new file mode 100644 index 00000000..8bc656cc --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/commit.json @@ -0,0 +1,5 @@ +{ + "exit_code": 0, + "stdout": "[detached HEAD b593c87] test: isolate ordinary unit runs from ambient credentials and provider I/O\n 14 files changed, 592 insertions(+), 6 deletions(-)\n create mode 100644 docs/development/safe-unit-tests.md\n create mode 100644 scripts/run_unit_tests.py\n create mode 100644 tests/fixtures/workload-coverage/provenance.json\n create mode 100644 tests/fixtures/workload-coverage/rapp-core-hub/declarations/rapp.yaml\n create mode 100644 tests/fixtures/workload-coverage/rapp-issue-core/declarations/rapp.yaml\n create mode 100644 tests/fixtures/workload-coverage/rapp-qonto/declarations/rapp.yaml\n create mode 100644 tests/test_safe_unit_runner.py\n create mode 100644 tests/unit_isolation_probe.py\n", + "stderr": "" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.json b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.json new file mode 100644 index 00000000..36751441 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.json @@ -0,0 +1,140 @@ +{ + "repo_slug": "ops-warden", + "repo_path": "/home/worsch/ops-warden", + "source_revision": "b593c879831378db7dc62adfabdfedf2d44ddd38", + "source_revision_reason": null, + "issues": [ + { + "severity": "WARN", + "check_id": "C-24", + "message": "Repo classification advisory: capability_tag 'security' is not a recommended family tag (allowed, check for synonym)", + "file_path": "", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-42", + "message": "Blocked workplan 'warden-wp-0027' has no task in status wait \u2014 nothing states what it waits for; qualify a wait task or re-status the workplan", + "file_path": "workplans/WARDEN-WP-0027-credential-governance-lockdown.md", + "db_id": "21528e8d-a049-523d-9ae1-da7a27cb8bbf", + "file_value": "blocked", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-37", + "message": "Residual workplan 'warden-wp-0034' has no origin/origin_ref provenance (not invented)", + "file_path": "workplans/WARDEN-WP-0034-layer-model-v07-conformance.md", + "db_id": "ae3ff76f-883d-5e2f-b6aa-144d61e8fdef", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-40", + "message": "blocker satisfied, task still wait: 'WARDEN-WP-0037-T03' in workplan 'WARDEN-WP-0037' \u2014 decision 1591daa1-6e85-4dfd-aadd-5a9fe1ef47fa is resolved", + "file_path": "workplans/WARDEN-WP-0037-whynot-design-forgejo-npm-lane.md#WARDEN-WP-0037-T03", + "db_id": "", + "file_value": "1591daa1-6e85-4dfd-aadd-5a9fe1ef47fa", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-37", + "message": "Residual workplan 'warden-wp-0040' has no origin/origin_ref provenance (not invented)", + "file_path": "workplans/WARDEN-WP-0040-unknown-zone-fail-closed-adoption.md", + "db_id": "c8ee441e-1be1-5219-910c-e79ff23cc9ec", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-06-29@retired-20260828' (id=1c0460b7\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "1c0460b7-bc8a-48db-96d4-681bce18ac91", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-08-17@retired-20260827' (id=8376eb89\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "8376eb89-36f2-52b0-a59a-2954b2e49349", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-08-11@retired-20260827' (id=bc6dd3e3\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "bc6dd3e3-ab2b-567a-9574-30d2650f20a2", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'ops-warden-adhoc-2026-06-27@retired-20260827' (id=142b171b\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "142b171b-c34b-4a45-91a5-c77e6d07ec6f", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-07-07@retired-20260827' (id=2e8bc783\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "2e8bc783-2e37-4b86-a691-177b18329783", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-28", + "message": "2 unread inbox message(s) older than 3 day(s): the-custodian:23172cb2, the-custodian:51e9eace", + "file_path": "", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-28", + "message": "3 unread message(s) lack thread_id for supersession tracking: the-custodian:d422aecb, the-custodian:23172cb2, the-custodian:51e9eace", + "file_path": "", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": false + } + ], + "fixes_applied": [ + "bindings: synced 51/51", + "C-17 cleared: pushed 1 backlogged commit(s)", + "push: pushed" + ], + "summary": { + "fail": 0, + "automation_error": 0, + "warn": 7, + "info": 5 + }, + "result": "warn" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.stderr.txt b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/consistency.stderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/full-unit-result.json b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/full-unit-result.json new file mode 100644 index 00000000..32b4c76d --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/full-unit-result.json @@ -0,0 +1,14 @@ +{ + "exit_code": 0, + "command": [ + "make", + "test", + "UNIT_PYTHON=/home/worsch/ops-warden/.venv/bin/python", + "PHASE_MEMORY_REPO=/home/worsch/phase-memory", + "TEST_ARGS=--netkingdom-root /home/worsch/net-kingdom -q" + ], + "expected": "785 passed,4 deselected", + "log_sha256": "75563bad2656a7566a7913cbacab6178c3943b9ed8f28ff6796dffe5e53da4a7", + "synthetic_parent_environment": true, + "real_credentials_or_provider_calls": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integrate.py b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integrate.py new file mode 100644 index 00000000..ba1e6475 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integrate.py @@ -0,0 +1,65 @@ +from pathlib import Path +import hashlib,json,re,subprocess +p=Path(__file__).resolve().parent;r=Path('/home/worsch/ops-warden');w=Path('/tmp/warden-safe-unit-integration-r1') +a=p.parent/'warden-safe-unit-runner-r1';v=p.parent/'warden-safe-unit-runner-review-r1' +author=json.loads((a/'implementation.json').read_text());review=json.loads((v/'review-r1.json').read_text());base=author['base'] +def git(root,*args):return subprocess.check_output(['git','-C',str(root),*args],stderr=subprocess.PIPE,text=True,timeout=60).strip() +def sha(f):return hashlib.sha256(f.read_bytes()).hexdigest() +assert git(r,'rev-parse','HEAD')==base and git(r,'ls-remote','origin','refs/heads/main').split()[0]==base +assert sha(a/'candidate.patch')=='1fe65076ce7e633be304fc779bf2c87b7ee1e4e460de55ca74355b5842d036f5' +assert sha(v/'reviewer-correction.patch')=='9407289f8da41ed6fff367baf566ad30f5510a2627c14e0ac0cf971bf9b465c9' +assert not w.exists() +protected={} +for name in ['WORK-RECORDS.md','.custodian-brief.md']: + protected[name]={'sha256':sha(r/name),'index':git(r,'ls-files','--stage','--',name)} + (p/(name+'.backup')).write_bytes((r/name).read_bytes()) +git(r,'worktree','add','--detach',str(w),base) +for packet,file in [(a,'candidate.patch'),(v,'reviewer-correction.patch')]: + git(w,'apply','--check',str(packet/file));git(w,'apply',str(packet/file)) +expected={row['path']:row['after_sha256'] for row in author['files']} +for name,row in review['correction']['files'].items():expected[name]=row['after_sha256'].split(':')[-1] +for name,want in expected.items():assert sha(w/name)==want,name +for name,want in review['protected_source_hashes'].items():assert sha(w/name)==want.split(':')[-1],name +# Root source disposition: accept the minimal reviewed corrections; original +# rejection and both negative controls stay preserved. This is test hygiene only. +(p/'root-disposition.json').write_text(json.dumps({'original_candidate':'rejected as reviewed','corrected_candidate':'accepted for source revalidation','fixes':['Classify O_TRUNC and O_APPEND opens as writes before the OS open.','Check closed fixture projection set and every recorded byte digest in default unit selection.'],'candidate_sha256':sha(a/'candidate.patch'),'correction_sha256':sha(v/'reviewer-correction.patch'),'remaining_limits':review['limits'],'native_acceptance':False},indent=2)+'\n') +sentinel=p/'synthetic-parent-home';sentinel.mkdir();(sentinel/'.vault-token').write_text('synthetic-never-a-real-token') +env={'HOME':str(sentinel),'PATH':'/usr/bin:/bin','BAO_TOKEN':'synthetic-never-a-real-token','VAULT_TOKEN':'synthetic-never-a-real-token','PYTHONPATH':'/synthetic-untrusted-pythonpath','PYTEST_ADDOPTS':'--synthetic-invalid-if-inherited','LANG':'C.UTF-8'} +cmd=['make','test','UNIT_PYTHON=/home/worsch/ops-warden/.venv/bin/python','PHASE_MEMORY_REPO=/home/worsch/phase-memory','TEST_ARGS=--netkingdom-root /home/worsch/net-kingdom -q'] +with (p/'full-unit-tests.log').open('w') as log: + result=subprocess.run(cmd,cwd=w,env=env,stdout=log,stderr=subprocess.STDOUT,timeout=180) +text=(p/'full-unit-tests.log').read_text() +(p/'full-unit-result.json').write_text(json.dumps({'exit_code':result.returncode,'command':cmd,'expected':'785 passed,4 deselected','log_sha256':sha(p/'full-unit-tests.log'),'synthetic_parent_environment':True,'real_credentials_or_provider_calls':False},indent=2)+'\n') +assert result.returncode==0 and re.search(r'785 passed, 4 deselected',text),'corrected ordinary suite failed; preserve scratch and logs' +name='workplans/WARDEN-WP-0044-security-case-follow-through.md';old=(w/name).read_text() +new=old+""" + +2026-10-17 root follow-through: the original safe-runner source candidate was +independently rejected for O_TRUNC open-write misclassification and unchecked +public fixture projection hashes. Both counterexamples are retained. The minimal +correction treats truncating/appending opens as writes and adds the closed +projection-byte provenance regression. Root inspected the two exact corrections +and ran ordinary make test on stable corrected source with only synthetic parent +HOME/token/Python/pytest sentinels: 785 passed, four deselected. No real credential +or native provider action occurred. Initial author failures and rejected review +are preserved in the Custodian warden-safe-unit-runner-r1 and +warden-safe-unit-runner-review-r1 packets, with root disposition/full result in +warden-safe-unit-integration-r1. This completes the known trusted-unit-entry +accident-prevention follow-through; direct pytest bypass, native/non-open/preopened +file-descriptor limits remain explicit. No OS sandbox, isolated agent assignment, +production grant or native T03 acceptance follows. T03 stays progress. +""" +assert re.findall(r'```task\n.*?```',old,re.S)==re.findall(r'```task\n.*?```',new,re.S) +(w/name).write_text(new) +paths=list(expected) +git(w,'diff','--check');git(w,'add','--',*paths) +result=subprocess.run(['git','-C',str(w),'commit','--only','-m','test: isolate ordinary unit runs from ambient credentials and provider I/O','--',*paths],capture_output=True,text=True,timeout=240) +(p/'commit.json').write_text(json.dumps({'exit_code':result.returncode,'stdout':result.stdout,'stderr':result.stderr},indent=2)+'\n');assert result.returncode==0,'normal commit refused' +head=git(w,'rev-parse','HEAD');assert set(git(w,'diff-tree','--no-commit-id','--name-only','-r',head).splitlines())==set(paths) +assert git(r,'rev-parse','HEAD')==base and git(r,'ls-remote','origin','refs/heads/main').split()[0]==base +for name,row in protected.items():assert sha(r/name)==row['sha256'] and git(r,'ls-files','--stage','--',name)==row['index'] +git(r,'merge','--ff-only',head) +for name,row in protected.items():assert sha(r/name)==row['sha256'] and git(r,'ls-files','--stage','--',name)==row['index'] +for name,want in review['protected_source_hashes'].items():assert sha(r/name)==want.split(':')[-1] +(p/'integration.json').write_text(json.dumps({'status':'integrated-corrected-source-not-published','base':base,'head':head,'paths':paths,'source_and_catalog_pins_unchanged':True,'owner_dirt_preserved':True,'original_four_task_blocks_preserved':True,'full_unit_tests':'785 passed,4 deselected','native_actions':False},indent=2)+'\n') +print(json.dumps({'status':'integrated','head':head,'files':len(paths),'tests':'785 passed,4 deselected','production_src_catalog_pin_changes':False})) diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integration.json b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integration.json new file mode 100644 index 00000000..4922fde5 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/integration.json @@ -0,0 +1,26 @@ +{ + "status": "integrated-corrected-source-not-published", + "base": "922c26da0f3fcb0182352ea83e6ae06f29878580", + "head": "b593c879831378db7dc62adfabdfedf2d44ddd38", + "paths": [ + "Makefile", + "scripts/run_unit_tests.py", + "tests/test_safe_unit_runner.py", + "tests/unit_isolation_probe.py", + "tests/test_layer_conformance.py", + "tests/test_workload_join.py", + "tests/test_case_plan.py", + "tests/test_case_type.py", + "docs/development/safe-unit-tests.md", + "workplans/WARDEN-WP-0044-security-case-follow-through.md", + "tests/fixtures/workload-coverage/provenance.json", + "tests/fixtures/workload-coverage/rapp-core-hub/declarations/rapp.yaml", + "tests/fixtures/workload-coverage/rapp-issue-core/declarations/rapp.yaml", + "tests/fixtures/workload-coverage/rapp-qonto/declarations/rapp.yaml" + ], + "source_and_catalog_pins_unchanged": true, + "owner_dirt_preserved": true, + "original_four_task_blocks_preserved": true, + "full_unit_tests": "785 passed,4 deselected", + "native_actions": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/prepare_publication.py b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/prepare_publication.py new file mode 100644 index 00000000..0c38d284 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/warden-safe-unit-integration-r1/prepare_publication.py @@ -0,0 +1,19 @@ +from pathlib import Path +import hashlib,json,subprocess +p=Path(__file__).resolve().parent;r=Path('/home/worsch/ops-warden') +i=json.loads((p/'integration.json').read_text());head=i['head'] +def git(*a):return subprocess.check_output(['git','-C',str(r),*a],text=True).strip() +assert git('rev-parse','HEAD')==head +assert git('ls-remote','origin','refs/heads/main').split()[0]==i['base'] +assert json.loads((p/'full-unit-result.json').read_text())['exit_code']==0 +cfg={'owner':'ops-warden','base_revision':i['base'],'message':'test: isolate ordinary unit runs from ambient credentials and provider I/O','files':[{'path':name,'sha256':hashlib.sha256((r/name).read_bytes()).hexdigest()} for name in i['paths']]} +(p/'publication-inputs.json').write_text(json.dumps(cfg,indent=2)+'\n') +commit=json.loads((p/'commit.json').read_text());assert commit['exit_code']==0 +commit.update(commit=head,base=i['base'],files=cfg['files']) +(p/'publication-commit.json').write_text(json.dumps(commit,indent=2)+'\n') +b=p/'publication-backup';assert not b.exists();b.mkdir() +rows=[] +for name in ['.custodian-brief.md','WORK-RECORDS.md']: + (b/(name+'.worktree')).write_bytes((r/name).read_bytes());rows.append({'path':name,'index':git('ls-files','--stage','--',name)}) +(b/'originals.json').write_text(json.dumps(rows,indent=2)+'\n') +print(json.dumps({'prepared_normal_publication_for':head,'files':len(i['paths'])}))