Keep original case provenance while revalidating a fresh caller session
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a14bfc-9643-7872-aa12-98326dcf25e7
This commit is contained in:
tegwick 2026-10-18 11:32:19 +02:00
parent b593c87983
commit 08c098e64a
4 changed files with 180 additions and 1 deletions

View file

@ -663,7 +663,20 @@ class Executor:
materialization_evidence: str,
descriptor_evidence: str,
session_evidence: str,
original_session_reference: str | None = None,
) -> tuple[Descriptor, Invocation, StepState]:
# Current authentication is distinct from an immutable original receipt
# reference. The latter can only resume an exact existing journal intent;
# it is never passed to the current-session verifier as authority.
receipt_session = session_evidence
if original_session_reference is not None:
if (
type(original_session_reference) is not str
or not IDENTIFIER.fullmatch(original_session_reference)
or original_session_reference == session_evidence
):
raise Refused("distinct original session reference required")
receipt_session = original_session_reference
for source in (case_source, type_source, descriptor_source, catalog_source):
bounded_source(source)
descriptor = Descriptor.decode(descriptor_source)
@ -781,7 +794,7 @@ class Executor:
acceptance_evidence,
materialization_evidence,
descriptor_evidence,
session_evidence,
receipt_session,
],
separators=(",", ":"),
).encode()
@ -803,6 +816,13 @@ class Executor:
descriptor.allowed_created,
descriptor.retry_safe,
)
if original_session_reference is not None:
with self.journal.locked():
binding = f"{invocation.step}:{invocation.target}"
existing = self.journal.load(binding, initial)
if not existing.last:
raise Refused("original dispatch journal required; no backfill")
self.journal.original_intent(binding, invocation, adapter.source)
# Keep the mode and exact authenticated catalog bytes with this admission;
# dispatch must not substitute a later ambient catalog or lose its mode.
self._admitted[invocation] = (