Sheet ownership remains fixed has 1 specified check.
Copied criteria are independently editable has 2 specified checks.
Invalid criteria cannot be saved has 1 specified check.
Declared and default normalization differ has 2 specified checks.
Publishing a replacement leaves old criteria frozen has 5 specified checks.
Publication dependencies prevent archival has 1 specified check.
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.
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.
[
{
"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.
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.
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.
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.
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.
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.
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
09Published criteria remain the basis of a submitted assessmentinteractionapinegativeproposed
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.
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.
[
{
"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.
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.