fix(cases): admit reviewed descriptor pin validator revision
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a140c4-354a-7823-8f0d-8f717397f786
This commit is contained in:
parent
d79f065955
commit
d97652a3bb
4 changed files with 72 additions and 2 deletions
37
docs/reviews/2026-10-16-browser-producer-pin-refresh.md
Normal file
37
docs/reviews/2026-10-16-browser-producer-pin-refresh.md
Normal file
|
|
@ -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.
|
||||
|
|
@ -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",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue