Skip to content

ATS-SUB-SUB-003Provide consistent scoring sheets for each process: Capability Test Specification

Markdown

ATS-SUB-SUB-003

Provide consistent scoring sheets for each process: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaSubmissionsModuleSubmissions, Intake, Review and OutcomesRevision2

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

Coverage

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

Test Scenarios

12 scenarios proving CAP-SUB-SUB-003; 8 bound to an existing test.

01 Sheet ownership remains fixedinvariantapinegativetest
Proves
BR-CAP-SUB-SUB-003-01
Preconditions
Active, archived and foreign-process fixtures exist.
Steps
[ { "do": "Create sheets under each and attempt to change ownership of the accepted sheet.", "provenance": "test", "source": "services-submissions:modules/definitions/tests/integration/services/configuration/process-ownership.integration.spec.js#records the process on the rows it creates, and leaves it unchanged by an update" } ]
Expected
Only the active local owner accepts creation, and ownership remains fixed after update.
Data
Prepare the records and actors described by the scenario setup: Active, archived and foreign-process fixtures exist.
Bound to
Source
services-submissions:modules/definitions/tests/integration/services/configuration/process-ownership.integration.spec.js#records the process on the rows it creates, and leaves it unchanged by an update
02 Copied criteria are independently editableinteractionapitest
Proves
BR-CAP-SUB-SUB-003-02
Preconditions
A source sheet is published.
Steps
[ { "do": "Copy its current content to a different process.", "provenance": "test", "source": "services-submissions:modules/definitions/tests/integration/services/configuration/process-ownership.integration.spec.js#is a new active rubric of the target process with one draft of the source’s current version, the source untouched" } ]
Expected
The target owns an active sheet with one draft; the source retains its original content.
Data
Prepare the records and actors described by the scenario setup: A source sheet is published.
Bound to
Source
services-submissions:modules/definitions/tests/integration/services/configuration/process-ownership.integration.spec.js#is a new active rubric of the target process with one draft of the source’s current version, the source untouched
03 Invalid criteria cannot be savedvalidationunitnegativetest
Proves
BR-CAP-SUB-SUB-003-03
Preconditions
Sheet fixtures contain missing scales, duplicates or other contract errors.
Steps
[ { "do": "Attempt to save each invalid sheet.", "provenance": "test", "source": "services-submissions:modules/definitions/tests/unit/contracts/rubrics.spec.ts#refuses a score without a scale, naming the scale" } ]
Expected
The response names the invalid criterion or list property.
Data
Prepare the records and actors described by the scenario setup: Sheet fixtures contain missing scales, duplicates or other contract errors.
Bound to
Source
services-submissions:modules/definitions/tests/unit/contracts/rubrics.spec.ts#refuses a score without a scale, naming the scale
04 Declared and default normalization differboundarybrowsertest
Proves
BR-CAP-SUB-SUB-003-04
Preconditions
Two 1-to-5 sheets differ only in normalized-range configuration.
Steps
[ { "do": "Read their supported threshold ranges.", "provenance": "test", "source": "services-submissions:modules/definitions/tests/unit/services/publishing/threshold-ranges.spec.ts#is 0..normalise_to for the normalised score when the rubric states it" } ]
Expected
The declared case returns 0-to-5 and the default case 0-to-100.
Data
Prepare the records and actors described by the scenario setup: Two 1-to-5 sheets differ only in normalized-range configuration.
Bound to
Source
services-submissions:modules/definitions/tests/unit/services/publishing/threshold-ranges.spec.ts#is 0..normalise_to for the normalised score when the rubric states it
05 Publishing a replacement leaves old criteria frozentransitionapinegativetest
Proves
BR-CAP-SUB-SUB-003-05
Preconditions
Sheet version 1 is published and version 2 is a draft.
Steps
[ { "do": "Edit version 1 and publish version 2.", "provenance": "test", "source": "services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#supersedes the version published before, answering its id" } ]
Expected
The edit fails and publication supersedes version 1.
Data
Prepare the records and actors described by the scenario setup: Sheet version 1 is published and version 2 is a draft.
Bound to
Source
services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#supersedes the version published before, answering its id
06 Publication dependencies prevent archivalinteractionapinegativetest
Proves
BR-CAP-SUB-SUB-003-06
Preconditions
Separate sheets serve a published stage, a published default and drafts alone.
Steps
[ { "do": "Archive all three sheets.", "provenance": "test", "source": "services-submissions:modules/definitions/tests/integration/services/configuration/reviewer-configuration.integration.spec.js#refuses a rubric whose version a published stage uses" } ]
Expected
Published uses block archival; draft-only use permits it.
Data
Prepare the records and actors described by the scenario setup: Separate sheets serve a published stage, a published default and drafts alone.
Bound to
Source
services-submissions:modules/definitions/tests/integration/services/configuration/reviewer-configuration.integration.spec.js#refuses a rubric whose version a published stage uses
07 A scoring-sheet publication unlocks process readinessinteractionapinegativeproposed
Proves
BR-CAP-SUB-SUB-002-08 BR-CAP-SUB-SUB-003-05
Preconditions
A draft process points at an unpublished scoring-sheet draft.
Steps
[ { "do": "Try process publication, publish the scoring sheet, select its published version and publish the process again.", "provenance": "proposed", "source": [ "rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-002-publish-a-process-version-or-scoring-sheet-version.md", "services-submissions:modules/definitions/tests/unit/services/publishing/version-publication.spec.ts#refuses a stage whose own rubric version is not published", "services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#supersedes the version published before, answering its id" ] } ]
Expected
The first attempt leaves the draft unchanged; the second selects the prepared versions together.
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-002-publish-a-process-version-or-scoring-sheet-version.md,services-submissions:modules/definitions/tests/unit/services/publishing/version-publication.spec.ts#refuses a stage whose own rubric version is not published,services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#supersedes the version published before, answering its id
08 Copied review configuration stays independentinteractionapiproposed
Proves
BR-CAP-SUB-SUB-001-06 BR-CAP-SUB-SUB-003-02 BR-CAP-SUB-SUB-004-06
Preconditions
A source process has a current scoring sheet and a dated team.
Steps
[ { "do": "Clone the process, inspect copied stage references, then change only the copies and publish the clone.", "provenance": "proposed", "source": [ "rhythm-v2-docs:specs/submissions/submissions/design/workflows/WF-SUB-SUB-003-clone-a-process-or-copy-its-scoring-sheets-and-teams.md", "services-submissions:modules/definitions/tests/integration/services/configuration/submission-definitions.integration.spec.js#points the stages and the default rubric at copies the clone owns, and leaves the source’s alone", "services-submissions:modules/definitions/tests/integration/services/configuration/process-ownership.integration.spec.js#is a new active rubric of the target process with one draft of the source’s current version, the source untouched", "services-submissions:modules/definitions/tests/integration/services/configuration/process-ownership.integration.spec.js#is a new active team of the target process with the same members, roles and windows, the source untouched" ] } ]
Expected
The clone uses its own configuration and the source still supplies its original content.
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-003-clone-a-process-or-copy-its-scoring-sheets-and-teams.md,services-submissions:modules/definitions/tests/integration/services/configuration/submission-definitions.integration.spec.js#points the stages and the default rubric at copies the clone owns, and leaves the source’s alone,services-submissions:modules/definitions/tests/integration/services/configuration/process-ownership.integration.spec.js#is a new active rubric of the target process with one draft of the source’s current version, the source untouched,services-submissions:modules/definitions/tests/integration/services/configuration/process-ownership.integration.spec.js#is a new active team of the target process with the same members, roles and windows, the source untouched
09 Published criteria remain the basis of a submitted assessmentinteractionapinegativeproposed
Proves
BR-CAP-SUB-SUB-003-05 BR-CAP-SUB-SUB-010-08
Preconditions
Isolated applications and configuration support the stated comparison, with caller rights granted explicitly.
Steps
[ { "do": "Assign work using a published scoring sheet, prepare another sheet version and submit against the assigned criteria.", "provenance": "proposed", "source": [ "services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#supersedes the version published before, answering its id", "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" ] } ]
Expected
The submitted assessment uses the criteria captured by its assignment.
Data
Create the two comparison states under the same workspace and use a separate outsider identity.
Source
services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#supersedes the version published before, answering its id,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
10 Scoring configuration selects the aggregate scaleinteractionapinegativeproposed
Proves
BR-CAP-SUB-SUB-003-04 BR-CAP-SUB-SUB-014-01
Preconditions
Isolated applications and configuration support the stated comparison, with caller rights granted explicitly.
Steps
[ { "do": "Run equivalent scored panels with default and explicit normalization and compare the selected threshold outcomes.", "provenance": "proposed", "source": [ "services-submissions:modules/definitions/tests/unit/services/publishing/threshold-ranges.spec.ts#is 0..normalise_to for the normalised score when the rubric states it", "services-submissions:modules/review/tests/unit/services/completion/aggregate.spec.ts#mean: the mean of the normalised scores, matched to the first band it falls in" ] } ]
Expected
Each aggregate uses the range declared for the captured scoring sheet.
Data
Create the two comparison states under the same workspace and use a separate outsider identity.
Source
services-submissions:modules/definitions/tests/unit/services/publishing/threshold-ranges.spec.ts#is 0..normalise_to for the normalised score when the rubric states it,services-submissions:modules/review/tests/unit/services/completion/aggregate.spec.ts#mean: the mean of the normalised scores, matched to the first band it falls in
11 The first excess scoring-sheet version is refusedboundaryapinegativetest
Proves
BR-CAP-SUB-SUB-003-05
Preconditions
A sheet already retains five hundred versions.
Steps
[ { "do": "Attempt to create one more draft and inspect the version count.", "provenance": "test", "source": "services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#refuses a version past the 500 a rubric may have, and writes nothing" } ]
Expected
The count remains five hundred and the attempted draft does not exist.
Data
Create isolated records for the stated before-and-after comparison.
Bound to
Source
services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#refuses a version past the 500 a rubric may have, and writes nothing
12 A stale sheet save retains newer draft contentconcurrencyapinegativetest
Proves
BR-CAP-SUB-SUB-003-05
Preconditions
Another caller has saved the draft since it was read.
Steps
[ { "do": "Save using the earlier version and read the draft again.", "provenance": "test", "source": "services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#refuses a stale version, leaving the draft as it was" } ]
Expected
The refusal retains the newer criteria.
Data
Create isolated records for the stated before-and-after comparison.
Bound to
Source
services-submissions:modules/definitions/tests/integration/services/persistence/rubric-versions.integration.spec.js#refuses a stale version, leaving the draft as it was

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.