Skip to content
Aabha AI Academy

All courses · Course overview · Lesson sequence

Skip to lesson text

Answers and explanations · Pause at a human decision

For a draft created at tick 5 with default TTL 3, deadline is 8. Decision tick 4 raises ReviewError because it precedes creation and leaves the draft in REVIEW. Tick 8 is an accepted decision at the inclusive boundary. Tick 9 produces STOPPED/approval_expired. Use separate runs: an already approved or stopped run cannot be used as though it remained an untouched review case.

After approval at tick 6, finalization at tick 5 raises ReviewError because it predates the decision. Tick 8 produces a SIMULATION_ONLY receipt with zero real writes. Tick 9 stops with approval_expired_before_simulation and receipt=None. These examples test different conditions: time order prevents backdating; expiry prevents a delayed new effect under an old decision.

An unknown reviewer or mismatched digest raises ReviewError. A stale expected revision raises StaleRevision. None of those is a valid human rejection: the decision itself was invalid. A valid approve=False is saved as REJECTED and cannot enter finalization.

Replacing the fixture source with CAT-v2 before review causes STOPPED/source_changed. The old draft was based on CAT-v1. A real reconsideration would need the new source, an updated comparison and a fresh content-bound decision; silently carrying approval over would hide the changed basis.

The fixture reviewer string is not authentication. A hash is not authorization or an authenticated signature. Ticks are supplied by the exercise caller, so they do not establish actual elapsed time. The lab demonstrates checkable semantics while leaving real identity and clock infrastructure explicitly unimplemented.

Replaying a SIMULATED receipt after its deadline returns evidence of an already completed simulation; it initiates no new work and creates no new event. A new finalization at that time would attempt to use the approval for new work and is blocked. Keep the result history and current invocation behavior separate, just as Module 1 separated original tool calls from replay calls.

Self-review: the decision table should distinguish invalid decision, valid rejection, expired decision, accepted approval, expired finalization and saved-receipt replay. If all unsuccessful cases say “denied,” refine the explanation so an operator knows what evidence or action is needed next.

Return to this lesson