Repository navigation
PASS
Governs: Gatehouse §6.10 (specs/authn-authz/gatehouse-spec.md) on arch checkout 109541a4. The checkout has no arch-map.md, so I started from §6.10 lines 836, 842 and 849, as the BEP precedents (#2614, #2615) did. Line 842 gives the store-handle payload {…, exp, jti} and says that invalid store members are refused and audited (store_handle_invalid), with jti as the audit correlation id. Line 836 gives the audit record the same fields as the hosted role. Line 849 says the audit event never carries the value. No findings.json and no since.diff were staged, and the ledger has no earlier ruling on this PR. This is a first review.
Ruling: the change is spec text only. It adds jti to the BEP-039 field list and to the BEP-040 property, and explains when the jti is empty or unverified. Each statement follows from line 842. The text matches the code already on the branch: Decision::jti and Record::jti in crates/bep/src/audit.rs, where the serialized key is jti. every_decision_appends_one_audit_record already asserts the jti key in the record's key set. I found no other doc that lists the record fields (searched docs/ for previous_hash, module_unmapped and "identifier"). There is no placement, interim, residual or boundary question.
Notes, not conditions: the task's named test a_store_handle_audit_record_carries_its_jti (crates/bep/src/redeemer.rs line 964) cites BEP-067 in its comment, and BEP-039's verify: line names a different test. Only that test asserts the jti value on an admit and a refusal. The design does not govern test traceability, so this is for minimal-review or a later task. The author reports that just lint-prose did not run (no vale), and that agent-verify failed under an unpinned rustc 1.98.1 on lints in crates/boxes, which this diff does not touch.
Not checked: I did not build or run tests, per instructions. I could not open #2600 (no gh).
Ruled at 95cedea against gominimal/arch@109541a48c31 by claude-opus-5-5; arch_rulings 437, job 4d862310-0498-4f40-be22-94c00bc17ff6.