the-custodian/docs/changes/netkingdom-target-2026-10-16/warden-browser-pin-refresh/implementation.patch

121 lines
6.4 KiB
Diff
Raw Normal View History

commit d97652a3bb5fa733b063d71a1b74068efcccf572
Author: tegwick <bernd.worsch@gmail.com>
AuthorDate: Fri Oct 16 21:35:04 2026 +0200
Commit: tegwick <bernd.worsch@gmail.com>
CommitDate: Fri Oct 16 21:35:04 2026 +0200
fix(cases): admit reviewed descriptor pin validator revision
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a140c4-354a-7823-8f0d-8f717397f786
diff --git a/docs/reviews/2026-10-16-browser-producer-pin-refresh.md b/docs/reviews/2026-10-16-browser-producer-pin-refresh.md
new file mode 100644
index 0000000..be35190
--- /dev/null
+++ b/docs/reviews/2026-10-16-browser-producer-pin-refresh.md
@@ -0,0 +1,37 @@
+# Browser producer pin refresh — 2026-10-16
+
+WARDEN-WP-0044-T03 source review, scoped to NetKingdom commit
+`015694ee414c802dc2ef1fa0120dfed610086e69`, against Warden `d79f065`.
+
+Reviewed the exact committed schema, validator, evidence changes and the 21
+producer contract tests. The optional bounded `execution_descriptors` map now
+requires lowercase exact SHA-256 byte pins keyed to declared steps. The direct
+evidence API refuses malformed maps. Absent and incomplete maps retain plan-only
+behavior; the repair supplies no descriptor, adapter or execution authority.
+This is compatible with Warden's independently authenticated admission gates.
+
+Refresh only the validator and evidence module pins. Composer/capability module
+hashes and both reviewed parameter-definition hashes remain exact and unchanged.
+All four copied module bytes match the named NetKingdom commit and canonical
+checkout. No fallback, wildcard or allowed-drift path is added.
+
+Before the refresh, explicit canonical producer integration failed both positive
+version tests (1.1/1.2), with 20 refusals passing. After refresh, 87 producer,
+Executor and reducer checks pass, including 14 new malformed descriptor cases
+and existing missing/changed-source checks across all four pinned modules.
+The 21 producer descriptor-contract checks and focused Ruff checks also pass.
+Use `WARDEN_TEST_NETKINGDOM_ROOT=/home/worsch/net-kingdom` explicitly: the
+isolated checkout's default sibling can resolve another checkout.
+
+Emergent knowledge 0.2.6 digest
+`8d1d6a9d4d07fec7b619618de7dfe2be2254c1790f85f4198c7fe19db9751c02`
+was withheld due to source drift; start/local-work cards and actual source were
+reviewed directly. It conveys no authority.
+
+No new browser or identity-restore adapter was admitted or attested. No credential
+or privileged execution occurred. Native structural receipts, authenticated owner
+provenance, descriptor assent, attended sessions, ordered verification and the
+first native case run remain open. T03 stays progress; T04 stays wait.
+
+Exact pin hashes, tests and publication identity are retained under the Custodian
+`docs/changes/netkingdom-target-2026-10-16/warden-browser-pin-refresh/` directory.
diff --git a/src/warden/case_inputs.py b/src/warden/case_inputs.py
index baa00b2..9c876d7 100644
--- a/src/warden/case_inputs.py
+++ b/src/warden/case_inputs.py
@@ -15,9 +15,11 @@ import tempfile
from .case_receipt_state import Refused
+# Reviewed producer: net-kingdom 015694ee414c802dc2ef1fa0120dfed610086e69.
+# Review: docs/reviews/2026-10-16-browser-producer-pin-refresh.md
SOURCE_PINS = {
- "tools/security-case-types/security_case_evidence.py": "3c5d021ca7f1fc41fba4b2ff42fcb036b916a2a09ffc5e147cc3db1874dd2401",
- "tools/security-case-types/security_case_validator.py": "cbb9ab532d328f78cf37aca57891400e2e65d63a8ab3c5fe7bd1a4ff21dee56f",
+ "tools/security-case-types/security_case_evidence.py": "da8efa59c52ad73283397ebe639ae259d0cb9c6348b5cb829135c24230dcdc75",
+ "tools/security-case-types/security_case_validator.py": "1bcc62e9bc374c711363295549f3cd5bb0b32952671ed4b08fddc7f74742959b",
"tools/security-scenario-composer/security_scenario_composer.py": "9f0cc69930aa8ee2cc3fb92236e6a99728df17b8c0fe36e1250241c38fc01c4f",
"tools/playbook-capability-contract/playbook_contract_validator.py": "2e1e0c809d4bc9d64c2d974cc23fecd1c5636785154c2554edd9191852fd926d",
}
diff --git a/tests/test_case_inputs.py b/tests/test_case_inputs.py
index 01e9407..50a132f 100644
--- a/tests/test_case_inputs.py
+++ b/tests/test_case_inputs.py
@@ -183,3 +183,25 @@ def test_required_browser_parameter_is_not_defaulted_away(rig):
with pytest.raises(Refused, match="exact-version"):
executor.admit(*sources, **kwargs)
assert not calls
+
+
+@pytest.mark.parametrize("version", ["1.1", "1.2"])
+@pytest.mark.parametrize(
+ "pins",
+ [
+ None,
+ [],
+ {"mint-secret": "sha256:" + "A" * 64},
+ {"mint-secret": "sha256:" + "a" * 64 + "\n"},
+ {"undeclared-step": "sha256:" + "a" * 64},
+ {"mint-secret": ["sha256:" + "a" * 64]},
+ {"step-" + str(n): "sha256:" + "a" * 64 for n in range(129)},
+ ],
+)
+def test_actual_producer_refuses_malformed_descriptor_pins(rig, version, pins):
+ executor, calls, sources, _ = browser(rig, version)
+ case, typ = (yaml.safe_load(source) for source in sources[:2])
+ typ["spec"]["execution_descriptors"] = pins
+ with pytest.raises(Refused, match="exact-version"):
+ executor.browser_inputs.target(case, typ, "client_id")
+ assert not calls
diff --git a/workplans/WARDEN-WP-0044-security-case-follow-through.md b/workplans/WARDEN-WP-0044-security-case-follow-through.md
index 7d6799d..00cfb99 100644
--- a/workplans/WARDEN-WP-0044-security-case-follow-through.md
+++ b/workplans/WARDEN-WP-0044-security-case-follow-through.md
@@ -263,3 +263,12 @@ 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.