120 lines
6.4 KiB
Diff
120 lines
6.4 KiB
Diff
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.
|