Extensions
Extensions
Extensions add conditional standards to the baseline profile.
Intent
Extensions add conditional standards to the baseline profile. They remain inactive until a current product, risk, integration, or operating requirement meets the extension's activation criteria and the consumer lists its ID in standards.project.json.
An extension may add requirements, packages, projects, and verification. It may replace a baseline rule only when its document names that rule ID.
Selection
| Extension | Activate when |
|---|---|
| acceptance-bdd | Shared cross-layer examples need executable BDD scenarios. |
| api-compatibility | Public or independently deployed consumers need breaking-change detection and versioning. |
| caching | Measurements show repeated expensive reads with bounded staleness. |
| concurrency-idempotency | Conflicting writes or repeated requests can violate behavior. |
| data-lifecycle | A use case requires deletion, retention, archival, restore, or legal hold behavior. |
| deployment-containers | The hosted release uses container images. |
| external-integrations | A use case calls or receives data from an external system. |
| frontend-authjs | Next.js owns interactive login and session cookies. |
| localization | The product commits to more than one locale. |
| multitenancy | Independent customer organizations share one deployment. |
| outbox-worker | A committed change requires delivery that cannot be lost. |
| persistence-ef-core | Relational persistence requirements replace Marten for selected aggregates. |
| realtime | Polling cannot meet a measured update-latency requirement. |
| reporting | Complex reports or large exports exceed normal request reads. |
| scheduled-jobs | A use case requires recurring, delayed, or calendar-based Worker work. |
Activation process
- Name the current use case and the criterion that activates the extension.
- Add the extension ID to consumer
standards.project.json. - Add any required risk flag to the use-case specification.
- Read the extension before implementation.
- Apply named baseline replacements and retain unrelated baseline rules.
- Add required packages from the manifest and conditional projects when named.
- Run baseline and extension verification.
Do not enable an extension as a general preference or for possible future work.