Blind projection distinguishes reviewer and staff audiences has 2 specified checks.
Workflow facts obey blind identity projection has 1 specified check.
A remaining invariant obligation is named in the structured coverage finding.
Conflict declaration atomically removes live work has 2 specified checks.
Staff conflict handling checks actor and subject has 3 specified checks.
Clearance does not restore recused assignments has 1 specified check.
An active conflict applies across later staffing has 2 specified checks.
Contribution identity creates a detected conflict has 2 specified checks.
The structured rule map names the obligation behind each check. Category presence does not establish full transition, permission or invariant coverage; those matrices remain explicit review findings.
Identifying questions and files belong to a single-blind stage.
Steps
[
{
"do": "Read queue and assignment as reviewer and the application as staff.",
"provenance": "test",
"source": "services-submissions:modules/review/tests/integration/services/views/reviewer-views.integration.spec.js#the assignment withholds the applicant, the participants, the identifying fields, the staff field and the file’s name"
}
]
Expected
Reviewer output omits identity-marked material while staff output retains staff-visible content.
Data
Use the setup supplied by the referenced executable suite.
[
{
"do": "Open the stage and inspect reviewer-stage and staff facts.",
"provenance": "test",
"source": "services-submissions:modules/review/tests/integration/services/workflow/host-callbacks.integration.spec.js#withholds the identifying title and the applicant from a blind stage’s facts"
}
]
Expected
Blind facts suppress identifying title and applicant data; staff facts retain their authorized values.
Data
Use the setup supplied by the referenced executable suite.
[
{
"do": "Declare through the reviewer screen, repeat and attempt outsider declaration.",
"provenance": "test",
"source": "services-submissions:modules/review/tests/integration/services/views/reviewer-views.integration.spec.js#declared by an assignee recuses their assignment"
}
]
Expected
The first recuses and refills, the repeat fails and the outsider sees no application.
Data
Use the setup supplied by the referenced executable suite.
A live reviewer cannot self-recuse under stage policy.
Steps
[
{
"do": "Declare as coordinator, reader, without a reviewer and with an oversized reason.",
"provenance": "test",
"source": "services-submissions:modules/review/tests/integration/services/conflicts/staff-conflicts.integration.spec.js#recuses a reviewer’s live assignment even where the stage forbids self-recusal, replaces them from the pool, and logs both"
}
]
Expected
Coordinator declaration recuses and replaces; invalid callers or inputs fail.
Data
Use the setup supplied by the referenced executable suite.
An active conflict has already removed review work.
Steps
[
{
"do": "Clear as coordinator and administrator, then repeat resolution.",
"provenance": "test",
"source": "services-submissions:modules/review/tests/integration/services/conflicts/staff-conflicts.integration.spec.js#clears an active declaration with the reason: who and when kept, the log written, and the reviewer can be assigned by hand again"
}
]
Expected
Only the administrator clears it once; old review work stays recused.
Data
Use the setup supplied by the referenced executable suite.
[
{
"do": "Open another run and attempt manual assignment.",
"provenance": "test",
"source": "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"
}
]
Expected
Pool exclusion persists and manual assignment is rejected.
Data
Use the setup supplied by the referenced executable suite.
[
{
"do": "Name that contact as a referee.",
"provenance": "test",
"source": "services-submissions:modules/review/tests/integration/services/requirements/contributions.integration.spec.js#recuses her assignment on the open run, the conflict recorded as detected_contributor"
}
]
Expected
The request matches the contact, recuses the review and retains the detected-conflict record.
Data
Use the setup supplied by the referenced executable suite.
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
09A reviewer departure refills the panel without reviving workinteractionapiproposed
A fixed panel has a drafted response and an eligible replacement.
Steps
[
{
"do": "Decline or recuse one assignment, inspect its response, then inspect replacement staffing and completion.",
"provenance": "proposed",
"source": [
"rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-008-keep-a-panel-filled-when-reviewers-leave-or-conflicts-arise.md",
"services-submissions:modules/review/tests/integration/services/assignments/assignment-actions.integration.spec.js#declines with the configured reason and the note, and asks the next pool member in its place",
"services-submissions:modules/review/tests/integration/services/assignments/assignment-actions.integration.spec.js#moves the assignee’s assignment to accepted, with the instant",
"services-submissions:modules/review/tests/integration/services/views/reviewer-views.integration.spec.js#declared by an assignee recuses their assignment"
]
}
]
Expected
Departed draft work remains voided, replacement work is separate and completion uses the remaining live panel.
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-008-keep-a-panel-filled-when-reviewers-leave-or-conflicts-arise.md,services-submissions:modules/review/tests/integration/services/assignments/assignment-actions.integration.spec.js#declines with the configured reason and the note, and asks the next pool member in its place,services-submissions:modules/review/tests/integration/services/assignments/assignment-actions.integration.spec.js#moves the assignee’s assignment to accepted, with the instant,services-submissions:modules/review/tests/integration/services/views/reviewer-views.integration.spec.js#declared by an assignee recuses their assignment
10A contributor cannot retain a reviewer seatinteractionapiproposed
A named prospective contributor already has a live reviewer assignment on the application.
Steps
[
{
"do": "Create the contribution request, inspect reviewer exclusion and answer the contribution.",
"provenance": "proposed",
"source": [
"rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-019-name-contributors-and-collect-their-contributions.md",
"services-submissions:modules/intake/tests/integration/services/contributions/requests.integration.spec.js#leaves unmatched an address two contacts share: the engine never guesses",
"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/requirements/contributions.integration.spec.js#recuses her assignment on the open run, the conflict recorded as detected_contributor"
]
}
]
Expected
The reviewer departure is retained and the contribution participates only in its configured requirement 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-019-name-contributors-and-collect-their-contributions.md,services-submissions:modules/intake/tests/integration/services/contributions/requests.integration.spec.js#leaves unmatched an address two contacts share: the engine never guesses,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/requirements/contributions.integration.spec.js#recuses her assignment on the open run, the conflict recorded as detected_contributor
An application has one identifying and one non-identifying reviewer-visible file.
Steps
[
{
"do": "Record scan verdicts and request downloads as staff, the assigned blind reviewer and an outsider.",
"provenance": "proposed",
"source": [
"rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-021-attach-a-file-record-its-scan-and-hand-out-a-download.md",
"services-submissions:modules/intake/tests/integration/services/submissions/submission-views.integration.spec.js#mints a link to a file the applicant may see, under the name they gave it, and logs the download",
"services-submissions:modules/review/tests/integration/services/views/reviewer-views.integration.spec.js#the assignment withholds the applicant, the participants, the identifying fields, the staff field and the file’s name"
]
}
]
Expected
The permitted reviewer download uses its anonymous filename, while concealed or rejected material supplies no link.
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-021-attach-a-file-record-its-scan-and-hand-out-a-download.md,services-submissions:modules/intake/tests/integration/services/submissions/submission-views.integration.spec.js#mints a link to a file the applicant may see, under the name they gave it, and logs the download,services-submissions:modules/review/tests/integration/services/views/reviewer-views.integration.spec.js#the assignment withholds the applicant, the participants, the identifying fields, the staff field and the file’s name
12Conflict commands retain the oversight role boundaryinteractionapinegativeproposed
The stated comparison uses isolated applications and explicit actor grants.
Steps
[
{
"do": "Declare a conflict as coordinator, inspect it as reader and attempt its resolution without administrator authority.",
"provenance": "proposed",
"source": [
"services-submissions:modules/review/tests/integration/services/conflicts/staff-conflicts.integration.spec.js#recuses a reviewer’s live assignment even where the stage forbids self-recusal, replaces them from the pool, and logs both",
"services-submissions:modules/review/tests/e2e/staff-board.e2e.spec.js#refuses the board, the workload and the progress to a staff reviewer and to a person with only the application (403)"
]
}
]
Expected
The declaration is visible but the attempted resolution changes neither declaration nor assignment history.
Data
Create isolated records for the stated before-and-after comparison.
A coordinator can declare a conflict for a live reviewer.
Steps
[
{
"do": "Send a reason of five hundred and one characters and inspect the declaration and assignment.",
"provenance": "proposed",
"source": "services-submissions:modules/review/tests/e2e/staff-board.e2e.spec.js#refuses a body that names no reviewer, an unknown field and a reason past 500 characters (400)"
}
]
Expected
The request is refused without a declaration or recusal.
Data
Create isolated records for the stated before-and-after comparison.