Responsibility
Resume Review owns the durable lifecycle for deciding whether an application can continue to AI Interview. Its work runner loads the workflow’s configuration snapshot, evaluates the resume, persists the local result, and returns a typed handoff result to the workflow coordinator. It is not a private hop executor. See Module and stage-orchestrator contract. The module must not start AI Interview or apply cross-module gates. Those actions belong to the coordinator. V1continue_handoff still activates Interview today; TEN-1315 inverts that.
Work progress
Sit-able stages are on the compiled Resume Review module (AWAITING_RESUME_REVIEW,
RESUME_REJECTED, and the non-sit-able Pass leave door). The values below are lease
and work progress on the module run, not a second stage language.
The progress value and the decision payload are separate. In particular,
overridden records how the
decision was reached, while its typed outcome records pass or reject. bypassed records an explicit
non-rejecting outcome rather than treating a missing prerequisite as a successful score.
Fixed V1 flow
passed, a continuing overridden outcome, and bypassed are eligible for the coordinator’s
handoff to AI Interview. rejected and a closing overridden outcome close the workflow.
review-requested is a durable hold and produces no handoff until an authorized override is
recorded.
Before every continuing handoff, the coordinator re-evaluates global gates. A locally successful
Resume Review result therefore does not guarantee that AI Interview starts.
Evaluation input
The orchestrator evaluates only inputs referenced by the workflow’s immutable configuration snapshot. The snapshot fixes the applicable Resume Review policy, requirements, thresholds, and other versioned decision inputs for the life of this module execution. Evaluation output records enough provenance to identify the snapshot and source artifacts used for the decision. A retry uses the same snapshot. It does not silently adopt edits made after the workflow started.Lease and retry semantics
Claimingpending moves the module to evaluating with a bounded lease. The claim is atomic, so
only one worker owns the active attempt. The worker must still hold that lease when it commits the
evaluation result.
If the lease expires before publication, another worker may reclaim evaluating and retry from the
persisted snapshot. Reclaiming does not create a new logical module execution and does not erase
prior attempt diagnostics. A stale worker cannot publish after the lease has been replaced.
Retries are safe at every boundary:
- Evaluation is repeatable against the same snapshot and source-artifact identity.
- Result publication rejects stale stage or lease expectations.
- External effects use stable idempotency keys.
- A completed handoff is recognized from durable state rather than repeated.
evaluating; it is not converted into rejected.
Business outcomes and infrastructure failures stay distinct.
Atomic state and history
Every Resume Review transition updates the current module row and appends its history event in the same transaction. History includes the prior and next stage, actor or lease identity, reason, attempt, configuration-snapshot identity, and decision provenance appropriate to the transition. When a closing result is published, the same transaction projects ontoTenzoStage
(RESUME_REJECTED / RE_REVIEW_REQUESTED) and runs that stage’s existing action phases:
critical actions before commit, post-commit and best-effort after. A projection CAS miss
rolls the module transaction back; a worker that has lost the lease or revision must not
disqualify.
Continuing outcomes persist first (passed / bypassed / passing overridden). The
coordinator then activates the native AI Interview module, which writes OUTREACH or
parks at SKIP_OUTREACH when AI interviews are disabled. That handoff is eventually
consistent: there is no atomic next-module insert or separate global workflow row in V1.
A failed Interview activate leaves the durable Resume Review terminal in place so a
recovery scan can retry. Scoring terminals retry while CCI is still
AWAITING_RESUME_REVIEW. A passing override may still be on RESUME_REJECTED or
RE_REVIEW_REQUESTED. Repeating handoff is idempotent once CCI is already OUTREACH or
SKIP_OUTREACH; activate still ensures the Interview run exists.
TenzoStage projection
Resume Review contributes to the existing TenzoStage view so current application lists, filters,
ATS behavior, and automation continue to receive the stage vocabulary they expect. The projection
is derived from durable module and global workflow state and may collapse multiple local stages
into one compatibility value.
Resume Review transition validation never reads TenzoStage as its local source of truth.
TenzoStage is still used as a global concurrency fence: if a closing projection or continuing
publication loses its expected-stage comparison, the module transaction rolls back and the stale
worker cannot authorize a different transition.
Operational checks
When a Resume Review workflow appears stuck, inspect:- the current local stage and latest module-history sequence;
- the active lease owner and expiry when the stage is
evaluating; - the configuration-snapshot and source-artifact identities;
- the typed terminal or override outcome;
- the global gate and handoff history; and
- the derived
TenzoStageprojection last.