Skip to content

ATS-SUB-SUB-011Complete a stage once on an accountable basis: Capability Test Specification

Markdown

ATS-SUB-SUB-011

Complete a stage once on an accountable basis: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaSubmissionsModuleSubmissions, Intake, Review and OutcomesRevision2

Read atservices-submissions 64236c19services-platform ad3f6a65react-console baf6dae3

Coverage

  • Rule covered
  • Transition gap: FND-SUB-SUB-075
  • Validation covered
  • Permission gap: FND-SUB-SUB-075
  • Edge covered
  • Failure gap: FND-SUB-SUB-075
  • Boundary covered
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

16 scenarios proving CAP-SUB-SUB-011; 11 bound to an existing test.

01 Concurrent required reviews establish one resultconcurrencyapitest
Proves
BR-CAP-SUB-SUB-011-01
Preconditions
The stage requires two remaining responses.
Steps
[ { "do": "Submit both concurrently and force their writes to interleave.", "provenance": "test", "source": "services-submissions:modules/review/tests/integration/services/stage-runs/completion-concurrency.integration.spec.js#records both responses, completes the run once, and records one decision" } ]
Expected
Both responses persist with one completion event and one decision.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/integration/services/stage-runs/completion-concurrency.integration.spec.js#records both responses, completes the run once, and records one decision
02 Database guards reject duplicate lifecycle recordsinvariantapinegativetest
Proves
BR-CAP-SUB-SUB-011-02
Preconditions
The application has a completed run.
Steps
[ { "do": "Repeat completion and attempt duplicate open-run and current-decision inserts.", "provenance": "test", "source": "services-submissions:modules/review/tests/integration/services/stage-runs/completion-concurrency.integration.spec.js#is refused as StaleObject and changes nothing" } ]
Expected
Each operation is rejected and existing lifecycle records remain intact.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/integration/services/stage-runs/completion-concurrency.integration.spec.js#is refused as StaleObject and changes nothing
03 All-assigned completion excludes departed live workedgeunittest
Proves
BR-CAP-SUB-SUB-011-03
Preconditions
Three people are assigned and one declines.
Steps
[ { "do": "Submit the remaining two and compare a panel with no remaining reviewers.", "provenance": "test", "source": "services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met when nobody is pending, with the counts as its basis" } ]
Expected
The two-person result completes while the empty panel remains short.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met when nobody is pending, with the counts as its basis
04 A minimum count handles both completion and shortfallboundaryunittest
Proves
BR-CAP-SUB-SUB-011-04
Preconditions
The stage needs two of three responses.
Steps
[ { "do": "Submit two, then compare a run made insufficient by revocation.", "provenance": "test", "source": "services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met at the minimum, whoever is still pending" } ]
Expected
Two responses complete the first run; insufficient capacity flags the second and retained departed work still counts.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met at the minimum, whoever is still pending
05 Any-one completion uses the first recommendationruleunittest
Proves
BR-CAP-SUB-SUB-011-05
Preconditions
Three people are assigned under any-one completion.
Steps
[ { "do": "Submit one rejecting response.", "provenance": "test", "source": "services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met by the first response, rejecting when it rejects" } ]
Expected
The stage completes with a non-approving basis.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met by the first response, rejecting when it rejects
06 Abstention prevents unanimous approvaledgeunittest
Proves
BR-CAP-SUB-SUB-011-06
Preconditions
Three deciders are assigned under unanimity.
Steps
[ { "do": "Submit an abstention before the other responses.", "provenance": "test", "source": "services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met, not approving, at the first rejection, others still pending" } ]
Expected
Non-approval completes the stage despite pending work.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met, not approving, at the first rejection, others still pending
07 A certain majority finishes without unnecessary waitingboundaryunittest
Proves
BR-CAP-SUB-SUB-011-07
Preconditions
One panel has three deciders and another a final even split.
Steps
[ { "do": "Submit two approvals in the first and finish the split panel.", "provenance": "test", "source": "services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met, approving, when approvals are more than half of those expected, others pending" } ]
Expected
The first approves immediately and the split does not approve.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/unit/services/completion/completion-rule.spec.ts#is met, approving, when approvals are more than half of those expected, others pending
08 Advancement shares the completion transactiontransitionapitest
Proves
BR-CAP-SUB-SUB-011-08
Preconditions
The process has two stages.
Steps
[ { "do": "Complete the first with an approving basis.", "provenance": "test", "source": "services-submissions:modules/review/tests/integration/services/stage-runs/approval-not-approved.integration.spec.js#advances to the next stage on an approving result, whichever choice was made" } ]
Expected
Outstanding first-stage work expires and the next run opens atomically.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/integration/services/stage-runs/approval-not-approved.integration.spec.js#advances to the next stage on an approving result, whichever choice was made
09 Administrator closure preserves override attributionpermissionapinegativetest
Proves
BR-CAP-SUB-SUB-011-09
Preconditions
A counting stage is still open with one of two responses supplied.
Steps
[ { "do": "Try early closure without a reason, close with an administrator explanation and repeat closure.", "provenance": "test", "source": "react-console:acceptance/submissions/playwright/journeys/review/SUB-ACC-0299.spec.ts#SUB-ACC-0299" } ]
Expected
The missing reason fails; closure retains the administrator and actual counts, and the repeat is refused.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
react-console:acceptance/submissions/playwright/journeys/review/SUB-ACC-0299.spec.ts#SUB-ACC-0299
10 Requirement waiver retains its missing evidencetransitionapitest
Proves
BR-CAP-SUB-SUB-011-10
Preconditions
A contribution requirement stage still lacks responses.
Steps
[ { "do": "Waive the requirement with administrator authority and an explanation.", "provenance": "test", "source": "services-submissions:modules/review/tests/integration/services/requirements/contributions.integration.spec.js#completes the wait with the counts as they stand, the key still short, who and why" } ]
Expected
Completion preserves actual counts, unmet requirements and waiver attribution.
Data
Use the setup supplied by the referenced executable suite.
Bound to
Source
services-submissions:modules/review/tests/integration/services/requirements/contributions.integration.spec.js#completes the wait with the counts as they stand, the key still short, who and why
11 Stage entry preserves exclusions and timed follow-upinteractionapiproposed
Proves
BR-CAP-SUB-SUB-009-01 BR-CAP-SUB-SUB-011-12 BR-CAP-SUB-SUB-012-07 BR-CAP-SUB-SUB-013-01 BR-CAP-SUB-SUB-016-07 BR-CAP-SUB-SUB-018-01
Preconditions
A published process has a fixed panel, an active conflict, a deadline and an entry action.
Steps
[ { "do": "Open its review, inspect seats, frozen policies, timers and action history; repeat with a waiting contribution stage.", "provenance": "proposed", "source": [ "rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-007-open-a-stage-run-and-seat-its-panel.md", "services-submissions:modules/review/tests/integration/services/stage-runs/open-stage-run.integration.spec.js#opens the run with the stage’s rule, policy and blind mode copied, and names it on the submission, now in review", "services-submissions:modules/review/tests/integration/services/stage-runs/open-stage-run.integration.spec.js#takes the next run_number of that stage for the submission", "services-submissions:modules/review/tests/integration/services/conflicts/staff-conflicts.integration.spec.js#declares for a pool member who holds no assignment: the declaration alone, no recusal, and a hand assignment is refused", "services-submissions:modules/review/tests/integration/services/workflow/raise-sites.integration.spec.js#schedules the reminder two business days on, the service target three, and the deadline at the run’s due_at", "services-submissions:modules/intake/tests/integration/services/contributions/submit-contribution.concurrency.integration.spec.js#completes the stage once, by exactly one of the three, and opens the approval once", "services-submissions:modules/review/tests/integration/services/workflow/raise-sites.integration.spec.js#performs the inline entry action and queues the durable one, in order, in one batch" ] } ]
Expected
Review entry excludes the conflicted person and retains its timing and action records; contribution entry waits or advances according to the recorded count.
Data
Use isolated process and application records, with only the stated policies and rights enabled.
Source
rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-007-open-a-stage-run-and-seat-its-panel.md,services-submissions:modules/review/tests/integration/services/stage-runs/open-stage-run.integration.spec.js#opens the run with the stage’s rule, policy and blind mode copied, and names it on the submission, now in review,services-submissions:modules/review/tests/integration/services/stage-runs/open-stage-run.integration.spec.js#takes the next run_number of that stage for the submission,services-submissions:modules/review/tests/integration/services/conflicts/staff-conflicts.integration.spec.js#declares for a pool member who holds no assignment: the declaration alone, no recusal, and a hand assignment is refused,services-submissions:modules/review/tests/integration/services/workflow/raise-sites.integration.spec.js#schedules the reminder two business days on, the service target three, and the deadline at the run’s due_at,services-submissions:modules/intake/tests/integration/services/contributions/submit-contribution.concurrency.integration.spec.js#completes the stage once, by exactly one of the three, and opens the approval once,services-submissions:modules/review/tests/integration/services/workflow/raise-sites.integration.spec.js#performs the inline entry action and queues the durable one, in order, in one batch
12 The final assessment commits with its stage resultinteractionapinegativeproposed
Proves
BR-CAP-SUB-SUB-010-08 BR-CAP-SUB-SUB-011-08
Preconditions
Two assessments are required and one is already submitted.
Steps
[ { "do": "Submit the remaining assessment, inspect response and run history, then repeat the submission.", "provenance": "proposed", "source": [ "rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-009-save-submit-or-amend-an-assessment.md", "services-submissions:modules/review/tests/integration/services/responses/response-actions.integration.spec.js#stores the response scored by the rubric, completes the assignment, and says whether it completed the stage", "services-submissions:modules/review/tests/integration/services/stage-runs/approval-not-approved.integration.spec.js#advances to the next stage on an approving result, whichever choice was made" ] } ]
Expected
The accepted response and stage result appear together; the repeat adds neither another assessment nor another completion.
Data
Use isolated process and application records, with only the stated policies and rights enabled.
Source
rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-009-save-submit-or-amend-an-assessment.md,services-submissions:modules/review/tests/integration/services/responses/response-actions.integration.spec.js#stores the response scored by the rubric, completes the assignment, and says whether it completed the stage,services-submissions:modules/review/tests/integration/services/stage-runs/approval-not-approved.integration.spec.js#advances to the next stage on an approving result, whichever choice was made
13 Stage completion creates one attributable handoffinteractionapiproposed
Proves
BR-CAP-SUB-SUB-011-08 BR-CAP-SUB-SUB-014-07 BR-CAP-SUB-SUB-015-01
Preconditions
A final review stage selects a registered owner outcome.
Steps
[ { "do": "Complete the required assessments and inspect the result and queued handoff in the committed state.", "provenance": "proposed", "source": [ "rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-010-complete-a-stage-exactly-once-and-advance-or-decide.md", "services-submissions:modules/review/tests/integration/services/stage-runs/approval-not-approved.integration.spec.js#advances to the next stage on an approving result, whichever choice was made", "services-submissions:modules/review/tests/e2e/staff-reads.e2e.spec.js#logs the reason and the note in the decision’s event", "services-submissions:modules/outcomes/tests/integration/services/decisions/decision-recording.integration.spec.js#queues the decision once for the subject’s owner, at its change-event handler" ] } ]
Expected
One current outcome and its delivery pointer accompany the completed run.
Data
Use isolated process and application records, with only the stated policies and rights enabled.
Source
rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-010-complete-a-stage-exactly-once-and-advance-or-decide.md,services-submissions:modules/review/tests/integration/services/stage-runs/approval-not-approved.integration.spec.js#advances to the next stage on an approving result, whichever choice was made,services-submissions:modules/review/tests/e2e/staff-reads.e2e.spec.js#logs the reason and the note in the decision’s event,services-submissions:modules/outcomes/tests/integration/services/decisions/decision-recording.integration.spec.js#queues the decision once for the subject’s owner, at its change-event handler
14 A deadline cannot manufacture missing review evidenceinteractionapinegativeproposed
Proves
BR-CAP-SUB-SUB-013-04 BR-CAP-SUB-SUB-011-08 BR-CAP-SUB-SUB-016-07
Preconditions
A counting stage is below its minimum and a contribution wait has a declared deadline outcome.
Steps
[ { "do": "Fire due timers for both applications, then inspect completion basis and outcome history.", "provenance": "proposed", "source": [ "rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-018-fire-stage-deadlines-escalations-and-service-targets.md", "services-submissions:modules/review/tests/integration/services/workflow/stage-timers.integration.spec.js#auto_complete (decision D1(a), SUBM-M2): a run short of the minimum number of answers is held, the timer blocked and the run flagged, nothing decided", "services-submissions:modules/review/tests/integration/services/stage-runs/approval-not-approved.integration.spec.js#advances to the next stage on an approving result, whichever choice was made", "services-submissions:modules/intake/tests/integration/services/contributions/submit-contribution.concurrency.integration.spec.js#completes the stage once, by exactly one of the three, and opens the approval once" ] } ]
Expected
The counting stage remains open with intervention evidence; only the configured contribution deadline path records its declared outcome.
Data
Use isolated process and application records, with only the stated policies and rights enabled.
Source
rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-018-fire-stage-deadlines-escalations-and-service-targets.md,services-submissions:modules/review/tests/integration/services/workflow/stage-timers.integration.spec.js#auto_complete (decision D1(a), SUBM-M2): a run short of the minimum number of answers is held, the timer blocked and the run flagged, nothing decided,services-submissions:modules/review/tests/integration/services/stage-runs/approval-not-approved.integration.spec.js#advances to the next stage on an approving result, whichever choice was made,services-submissions:modules/intake/tests/integration/services/contributions/submit-contribution.concurrency.integration.spec.js#completes the stage once, by exactly one of the three, and opens the approval once
15 Clarification restart prevents completion of cancelled reviewinteractionapinegativeproposed
Proves
BR-CAP-SUB-SUB-008-05 BR-CAP-SUB-SUB-011-12
Preconditions
The stated comparison uses isolated applications and explicit actor grants.
Steps
[ { "do": "Answer a clarification under restart policy, then try to complete the asking run.", "provenance": "proposed", "source": [ "services-submissions:modules/intake/tests/e2e/seam.e2e.spec.js#cancels the run that asked and opens the approval stage again as run 2", "services-submissions:modules/review/tests/integration/services/stage-runs/open-stage-run.integration.spec.js#takes the next run_number of that stage for the submission" ] } ]
Expected
The old run remains cancelled and only the fresh run can establish the next review result.
Data
Create isolated records for the stated before-and-after comparison.
Source
services-submissions:modules/intake/tests/e2e/seam.e2e.spec.js#cancels the run that asked and opens the approval stage again as run 2,services-submissions:modules/review/tests/integration/services/stage-runs/open-stage-run.integration.spec.js#takes the next run_number of that stage for the submission
16 An ended run cannot accept another final responsevalidationapinegativetest
Proves
BR-CAP-SUB-SUB-011-11
Preconditions
Another assessment has already completed the run.
Steps
[ { "do": "Submit the pending response and inspect retained responses.", "provenance": "test", "source": "services-submissions:modules/review/tests/integration/services/responses/response-actions.integration.spec.js#is refused as StaleObject after another response completed the stage, and records nothing" } ]
Expected
The refusal adds no late response when that run disallows late work.
Data
Create isolated records for the stated before-and-after comparison.
Bound to
Source
services-submissions:modules/review/tests/integration/services/responses/response-actions.integration.spec.js#is refused as StaleObject after another response completed the stage, and records nothing

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.