Skip to content

CAP-PFM-INT-016Keep a shared catalogue of customization points and events

Markdown

CAP-PFM-INT-016

Keep a shared catalogue of customization points and events

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleIntegration access, customer extensions and shared workflow configurationRevision1

Read atservices-platform ad3f6a65macroservice-libraries 54536a44

The Formal Contract

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

Outcomes
The registry reflects the customization points and events applications currently declare.Point retirement exposes orphaned configuration rather than silently hiding it.
Surfaces
apijobconsole
Intent sources
services-platform:docs/proposals/extensibility/decision-log.md#A7services-platform:docs/proposals/extensibility/decision-log.md#A2

Controls

30 controls apply, from the corpus control catalogue.

TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-CHG-001 TC-CHG-002 TC-CHG-003 TC-CHG-004 TC-CHG-005 TC-CHG-006 TC-DAT-004 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-IAM-006 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-MON-001 TC-PI-001 TC-PI-003 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.extension-points.readapitenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Proposed
Registration validates the complete declaration before writes, including declaration version, service and point naming, workspace-ending scope order, known kinds and policies, a thirty-second timeout ceiling, one current version, object schemas and no unexpected properties.
validationservicetest
02must prove
Proposed
Declarations cannot claim keys owned by another service or subscribe to unregistered event types; refusal names the conflict and preserves the existing owner’s records.
validationservicetest
03must prove
Proposed
An omitted contract version becomes deprecated with a timestamp if an enabled binding references it, otherwise retired.
lifecycleservicetest
04must prove
Proposed
Omitting a point retires it and its versions, orphans all customer bindings and logs the count; re-declaration revives the point without repairing orphaned bindings.
lifecycleservicetest
05must prove
Proposed
Neutral outputs are restricted to resolver and transformer versions, reject JSON null and permit other values including empty objects, arrays and strings.
validationserviceobserved
06must prove
Proposed
Event and native-subscriber declarations are replaced with the same registration, retiring subscribers the service omits.
no proof recorded yet
lifecycleservicetest
services-platform:modules/extensions/tests/integration/services/registration/register-service-extensions.integration.spec.js#replaces the service’s subscribers: the kept one updated, the dropped one retired
07must prove
Proposed
The global registry is written through registration and browsed with extension-point read, returning contracts, event types and the current workspace’s binding counts.
permissionapi, databasetest
services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#admits the catalogue with platform.extension-points.read alone
08must prove
Proposed
Registration keeps deployment logs and record stamps as its trace rather than writes a separate audit event.
no proof recorded yet
policyservicedocumented
services-platform:docs/extensions.md#3. The registration intake
09must prove
Proposed
Invocation policy admits extension registration callers, while the submitted service name chooses whose entries are replaced without comparison to an authenticated application principal.
permissionserviceobserved

Scenarios

IdGivenWhenThenProvenance
01Commerce’s deployment declares a pricing customization point.The declaration is registered.The catalogue exposes its contract alongside this workspace’s binding counts.test
services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#reads one point with its contract and examples

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.