Skip to content

CAP-PFM-ELG-013Assign accountability for an area of work

Markdown

CAP-PFM-ELG-013

Assign accountability for an area of work

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
Responsibility areas identify primary holders and backups where needed.Staff can review their areas and the reason they hold them.Responsibility assignment adds no security authority.
Surfaces
consoleapi
Intent sources
services-platform:docs/milestones/plans/PLAT-M15-plan.md#2. Scopeservices-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-01services-platform:docs/proposals/responsibilities-and-attention/16-decisions.md#D-02

Controls

33 controls apply, from the corpus control catalogue.

TC-AVL-001 TC-AVL-002 TC-AVL-003 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-CHG-007 TC-CRY-001 TC-CRY-002 TC-CRY-003 TC-CRY-004 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-DAT-007 TC-LOG-002 TC-LOG-003 TC-LOG-005 TC-MON-001 TC-MON-003 TC-PI-001 TC-PI-002 TC-PI-003 TC-PI-005 TC-PRV-001 TC-PRV-002 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
platform.responsibilities.readapitenant
platform.responsibilities.manageapitenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Responsibility holdings confer no access rights and remain outside authorization reads.
invariantservicetest
services-platform:tests/unit/responsibilities-not-in-authorization.spec.ts#imports nothing of the responsibilities module into the authorizer or the grant slice, and names none of its tables
02must prove
Confirmed
The responsibility catalogue includes Platform areas and licensed applications’ areas, with readable scope-kind names.
policyservicetest
services-platform:modules/responsibilities/tests/e2e/responsibilities.e2e.spec.js#leaves out the definitions of an application the tenant may not use
03must prove
Confirmed
Reading responsibilities requires the baseline read permission, while assigning, ending and removing holdings requires sensitive management authority.
permissionapitest
04must prove
Confirmed
Assignments accept one active customer console user or role at an allowed resource or workspace scope, rejecting teams, multiple subjects, unsupported scopes and foreign-customer users.
validationapi, service, databasetest
05must prove
Confirmed
A holder has one assignment per area, scope and overlapping validity period regardless of primary or backup designation, including concurrent attempts; other scopes, holders and nonoverlapping or ended periods remain valid.
invariantservice, databasetest
06must prove
Confirmed
Repeating an assignment’s idempotency key with the same body returns the existing assignment; reusing it with another body is rejected without a write.
policyapi, service, databasetest
services-platform:modules/responsibilities/tests/integration/services/persistence/assignments.integration.spec.js#refuses the same key with another body, 422 idempotency_key_reused, and writes nothing
07must prove
Confirmed
An assignment can begin later and contributes no effective holding before that time, with its end required to follow its start.
validationservice, databasetest
08must prove
Confirmed
Ending a direct assignment at the read version also ends its delegations atomically; derived holdings reject manual ending and role defaults use removal instead.
lifecycleservicetest
09must prove
Confirmed
Removing a role default retains a removed history row that reconciliation does not recreate, while a resource-specific role assignment narrows the default there.
lifecycleservicetest
10must prove
Confirmed
A workspace with no assignments receives its role-default holdings on first use before nightly reconciliation.
no proof recorded yet
lifecycleservicedocumented
11must prove
Confirmed
My Responsibilities presents current holdings and their direct, role, derived or cover origin, with named roles and delegations in both directions.
calculationservicetest
services-platform:modules/responsibilities/tests/e2e/responsibilities.e2e.spec.js#answers the caller’s own effective rows with via, and the delegations to and from them
12must prove
Confirmed
Holder resolution selects the deepest primaries, eligible backups at that depth or below, permitted wider cover and delegates, falling back to another area only when no scope holds the requested area.
calculationdatabasetest
services-platform:modules/responsibilities/tests/integration/services/persistence/assignments.queries.integration.spec.js#answers the fallback’s holders, every one covering, when nobody holds the key at any sco
13must prove
Confirmed
Assignment and handover changes notify affected people, excluding self-actions and role defaults, and ending an assignment retracts its unread notice.
policyservicetest
services-platform:modules/responsibilities/tests/integration/services/notices/responsibility-notices.integration.spec.js#publishes nothing when the administrator assigns it to themself: they hear nothing for their own acts
14must prove
Confirmed
Responsibility writes are audited, and assignment lists return 50 entries by default with a maximum of 200.
policyapi, servicetest

Scenarios

IdGivenWhenThenProvenance
01Batch posting is an application-declared unit responsibility.The administrator assigns the Association unit to Pat.A refreshed personal view shows Pat’s direct holding.test
02One person reads responsibilities and another lacks administration rights.They open personal and shared responsibility views.The reader can inspect their own holdings without assignment actions, while unauthorized shared settings remain absent.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.