Skip to content

ATS-PFM-ELG-004Release, schedule and restore rule versions: Capability Test Specification

Markdown

ATS-PFM-ELG-004

Release, schedule and restore rule versions: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleEligibility, Responsibilities and AttentionRevision3

Read atservices-platform ad3f6a65react-console baf6dae3

Coverage

  • Rule covered
  • Transition gap: FND-PFM-ELG-056
  • Validation covered
  • Permission gap: FND-PFM-ELG-056
  • Edge gap: FND-PFM-ELG-056
  • Failure gap: FND-PFM-ELG-056
  • Boundary covered
  • Concurrency covered
  • Invariant gap: FND-PFM-ELG-056
  • Interaction covered

Test Scenarios

17 scenarios proving CAP-PFM-ELG-004; 12 bound to an existing test.

01 Enforce publication authoritypermissionapinegativetest
Proves
BR-CAP-PFM-ELG-004-01
Preconditions
Workspace personas, a roleless caller and an outside-customer user are available.
Steps
Attempt publication and rollback as each.
Expected
Only publish-authorized callers succeed; others leave the rule unchanged.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#refuses the publish to a writer without the publish permission, 403
Source
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#refuses the publish to a writer without the publish permission, 403
02 Distinguish errors from warningsvalidationapinegativetest
Proves
BR-CAP-PFM-ELG-004-02
Preconditions
Drafts contain three errors, a warning alone and an unlicensed condition.
Steps
Attempt to publish each.
Expected
Errors and unlicensed use block publication with explanations; the warning-only release succeeds.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#refuses a draft with a problem, naming its code, and leaves it a draft
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#refuses a condition type of an application the tenant is not licensed for
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#refuses a draft with a problem, naming its code, and leaves it a draft
03 Record the next immutable releasetransitionapitest
Proves
BR-CAP-PFM-ELG-004-03
Preconditions
Version one and a later draft exist.
Steps
Publish and inspect history.
Expected
Version two becomes the rule’s publication and version one becomes superseded.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#answers the first publish as version 1, published, superseding nothing and with no diff
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#answers the first publish as version 1, published, superseding nothing and with no diff
04 Validate effective periodsboundaryapinegativetest
Proves
BR-CAP-PFM-ELG-004-04 INV-DOM-PFM-ELG-001-04
Preconditions
An open-ended first version is available.
Steps
Schedule the next version after ending the first, then request overlap.
Expected
Disjoint versions retain their periods and the overlap fails with the conflicting release named.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/persistence/versions.integration.spec.js#keeps the earlier version published for its own range when the new range does not overlap it
services-platform:modules/eligibility/tests/integration/services/persistence/versions.integration.spec.js#refuses a publish whose range overlaps a published version other than the last one, naming it, and leaves the draft
Source
services-platform:modules/eligibility/tests/integration/services/persistence/versions.integration.spec.js#keeps the earlier version published for its own range when the new range does not overlap it
05 Check real datesvalidationapinegativetest
Proves
BR-CAP-PFM-ELG-004-05
Preconditions
A draft is available.
Steps
Use an impossible February start, an impossible April end and a valid leap day.
Expected
Impossible dates fail with their field named; the leap day succeeds.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#refuses a draft with effective_from 2027-02-31, 400, naming the field
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#refuses a publish with effective_until 2027-04-31, 400, naming the field
Source
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#refuses a draft with effective_from 2027-02-31, 400, naming the field
06 Protect incompatible followersruleapinegativetest
Proves
BR-CAP-PFM-ELG-004-06
Preconditions
A reader-only purpose follows a rule whose draft adds an organization subject.
Steps
Publish normally and then force publication.
Expected
The first attempt names the incompatible use; forcing suspends and audits it while a pin remains active.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#refuses the publish as unfit_followers, naming the binding and what its kind does not supply
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#publishes with allow_unfit_followers, answering the binding it suspended and why
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#suspends the following binding and records the suspension in its audit trail
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#refuses the publish as unfit_followers, naming the binding and what its kind does not supply
07 Invalidate following reference plansinvariantapitest
Proves
BR-CAP-PFM-ELG-004-07
Preconditions
An outer rule includes a middle rule that follows another; a separate rule pins the changed rule.
Steps
Publish the innermost rule and evaluate both consumers.
Expected
The follower uses the new expression and plan, while the direct pin retains its plan.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#finds every rule that inlines C at any depth, and none that pins a version of C
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#keeps the stored plan of a rule pinning a version of C itself, whose rule did not change
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#answers A’s binding a new plan hash, so the old plan’s If-None-Match no longer matches
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#finds every rule that inlines C at any depth, and none that pins a version of C
08 Restore through a fresh versiontransitionapitest
Proves
BR-CAP-PFM-ELG-004-08
Preconditions
Two publications and unrelated draft work exist.
Steps
Restore the first expression.
Expected
The third release copies its expression, summary and dependencies with a rollback note, preserving the draft.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#publishes version 1’s rule as version 3 with the rollback note, superseding version 2
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#publishes version 1’s rule as version 3 with the rollback note, superseding version 2
09 Resolve competing releasesconcurrencyapinegativetest
Proves
BR-CAP-PFM-ELG-004-09
Preconditions
Two publishers target one draft.
Steps
Issue both publication requests together.
Expected
One release results and the loser receives its version and time.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#refuses the loser with StaleObject naming the winner’s version and when it was published, not IllegalOperation
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#publishes it once
10 Validate the expression actually releasedconcurrencyapinegativetest
Proves
BR-CAP-PFM-ELG-004-10 INV-DOM-PFM-ELG-001-05
Preconditions
A publication request races a colleague’s draft save.
Steps
Submit both operations and inspect released and draft expressions.
Expected
The release corresponds to its validated expression; supported conflict outcomes never publish an unvalidated expression.
Data
No fixtures beyond the described setup.
Bound to
Source
react-console:acceptance/eligibility/playwright/journeys/governance/ELIG-ACC-0149.spec.ts#ELIG-ACC-0149
11 Compare versions in both directionsruleapitest
Proves
BR-CAP-PFM-ELG-004-11
Preconditions
Two numbered versions and a draft exist.
Steps
List history, compare both directions and request an absent version.
Expected
History is newest first; comparisons carry readable changes and counts, reversing consistently; the absent version returns not found.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/governance/diff.integration.spec.js#answers every change from version 1 to the draft, version 2, with its sentence and the counts
Source
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#lists the versions newest first
12 Audit writes and omit refusalsinvariantapitest
Proves
BR-CAP-PFM-ELG-004-12 INV-DOM-PFM-ELG-001-09
Preconditions
A rule and binding are available.
Steps
Create, draft, publish and update a binding, then attempt a refused release.
Expected
Each successful write has one attributable event with relevant versions; the refusal has none.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#records every write to the definition in order: the create, the publish, the draft and the second publish
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#records the publish with its versions and the size of its diff
13 Keep repairable drafts out of releaseinteractionapiproposed
Proves
BR-CAP-PFM-ELG-001-04 BR-CAP-PFM-ELG-004-02
Preconditions
A writer has a draft with validation errors.
Steps
Save the draft, attempt publication, repair its errors and publish with authority.
Expected
Only the repaired expression appears as a released version; the earlier refusal leaves the draft available.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#answers the draft’s problem, saved rather than refused; services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#refuses a condition type of an application the tenant is not licensed for
14 Move a following reference through replacementinteractionapiproposed
Proves
BR-CAP-PFM-ELG-004-03 BR-CAP-PFM-ELG-005-05
Preconditions
An obsolete rule is referenced by another released rule and a replacement is ready.
Steps
Transfer its following references, inspect the referencing rule history and attempt archive of the old rule.
Expected
The referencing rule gains a release using the replacement; any retained pins still prevent archive.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#publishes the next draft as version 2 and supersedes version 1; services-platform:modules/eligibility/tests/integration/services/governance/lifecycle.integration.spec.js#lists the pinned binding for a person to move, and leaves it on the deprecated definition
15 Suspend an incompatible follower during releaseinteractionapinegativeproposed
Proves
BR-CAP-PFM-ELG-004-06 BR-CAP-PFM-ELG-007-08
Preconditions
A following use is compatible with the current release but not with the proposed draft; a pin remains compatible.
Steps
Attempt normal publication, force it, inspect both uses and evaluate each.
Expected
The refusal precedes any release; the forced release suspends the follower and leaves the pin usable.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#refuses the publish as unfit_followers, naming the binding and what its kind does not supply; react-console:acceptance/eligibility/playwright/journeys/bindings/ELIG-ACC-0217.spec.ts#ELIG-ACC-0217
16 Refresh an answer after publicationinteractionapiproposed
Proves
BR-CAP-PFM-ELG-004-07 BR-CAP-PFM-ELG-010-02
Preconditions
A following use has a cached eligible display answer.
Steps
Publish a draft that changes the subject to ineligible and evaluate the same use again.
Expected
The next answer names the new expression and reports ineligible instead of the earlier cached answer.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#finds every rule that inlines C at any depth, and none that pins a version of C; services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#answers from the data again once the publish has flushed the definition’s decisions
17 Bind publication to the examined draftinteractionapiproposed
Proves
BR-CAP-PFM-ELG-004-12 BR-CAP-PFM-ELG-011-07
Preconditions
A completed simulation exists for a draft.
Steps
Change the draft, attempt publication citing that simulation, then simulate the new draft and publish citing its result.
Expected
The obsolete result is refused; the matching completed result is recorded with the accepted release.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish.integration.spec.js#records the publish with its versions and the size of its diff; services-platform:modules/eligibility/tests/integration/services/population/population-run.integration.spec.js#refuses a publish naming a simulation of another version of the draft

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.