Keep original case provenance while revalidating a fresh caller session
Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a14bfc-9643-7872-aa12-98326dcf25e7
This commit is contained in:
parent
b593c87983
commit
08c098e64a
4 changed files with 180 additions and 1 deletions
|
|
@ -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] = (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue