Skip to content

CAP-PFM-ELG-004Release, schedule and restore rule versions

Markdown

CAP-PFM-ELG-004

Release, schedule and restore rule versions

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleEligibility, Responsibilities and AttentionRevision1

Read atservices-platform ad3f6a65react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Following consumers select the effective published expression.Restoration releases an earlier expression as a new version.Release history attributes changes to their authors.
Surfaces
consoleapi
Intent sources
services-platform:docs/milestones/plans/PLAT-M11-plan.md#1. Objectiveservices-platform:docs/milestones/plans/PLAT-M11-plan.md#D4services-platform:docs/milestones/plans/PLAT-M11-plan.md#A3services-platform:docs/proposals/eligibility/17-decision-register.md#D-14

Controls

28 controls apply, from the corpus control catalogue.

TC-AVL-004 TC-AVL-005 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-IAM-006 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-MON-001 TC-PI-001 TC-PI-002 TC-PI-003 TC-PI-004 TC-PI-005 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
platform.eligibility.publishapitenant
platform.eligibility.readapitenant

Business Rules

13 rules, 12 to be proved before approval. A rule's product intent is derived from its origin: 13 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Publishing and restoring earlier expressions require the sensitive publish permission; lacking it rejects the request without a change.
permissionapitest
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#refuses the publish to a writer without the publish permission, 403
02must prove
Confirmed
Publication rejects validation errors and unlicensed application conditions, including those reached through references, while warnings remain nonblocking.
validationservicetest
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
03must prove
Confirmed
Publication assigns the draft its next permanent version number and supersedes the previous publication when their effective periods overlap.
lifecycleservice, databasetest
04must prove
Confirmed
Effective periods include their starting day and exclude their ending day; overlap with an older publication is rejected, while a disjoint latest publication remains effective for its own period.
validationservicetest
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
05must prove
Confirmed
Effective dates must exist in the calendar, and an impossible date is rejected with its field identified.
validationapi, servicetest
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
06must prove
Confirmed
Publication rejects a version that no longer fits an active following use unless explicitly forced, in which case incompatible followers are suspended.
policyservicetest
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
07must prove
Confirmed
Publication removes plans for the changed rule and every expression that follows it through references; a direct pin to the unchanged earlier version retains its plan.
invariantservicetest
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
08must prove
Confirmed
Rollback revalidates an earlier expression and copies its dependencies into the next publication with a rollback note, preserving any current draft.
lifecycleservicetest
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
09must prove
Confirmed
Only one concurrent attempt publishes a draft; the losing attempt receives the winning version and publication time in a stale-change refusal without the publisher’s identity.
invariantservice, databasetest
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
10must prove
Confirmed
The published expression is the expression validated for that request; a racing save can land beforehand, remain as a later draft or produce a stale-change or retryable-conflict refusal.
invariantservicetest
11must prove
Confirmed
History presents versions newest first, includes the draft and compares any pair through readable additions, removals and changes.
calculationservicetest
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
12must prove
Confirmed
Rule and binding writes create attributable change events, with publication versions, change counts and the simulation choice; refused writes create none.
invariantservicetest
13
Confirmed
Publication has no second-approver requirement because the console’s conditional approval stage has no setting that activates it.
policyconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01A member price follows the first release while an audit use pins it.A publisher releases a second expression admitting inactive members.The price follows the new effective release and the auditor retains the pin.test
02Two releases have disjoint periods before and after the year boundary.Evaluation is requested on either side of that boundary.The expression effective for the selected day answers.test

Edge Cases

IdGivenWhenThenProvenance
03A future release follows an open-ended current expression.The publisher attempts a correction for the earlier period.Overlapping earlier periods fail, and a rollback with an appropriate end restores the present expression.test

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.