Type to search pages and rules.

Browse pages

Extensions

Extensions add conditional standards to the baseline stacks.

Markdown

Intent#

Extensions add conditional standards to the baseline stacks. An extension stays inactive until a current requirement meets its activation criteria. The consumer lists its ID in selectedExtensions within litespec.project.json, with the criterion it met and a review date.

An extension may add requirements, packages, projects, and verification. It replaces a baseline rule only when its document names that provision ID. The manifest repeats that list where checks read it.

Selection#

ExtensionActivation scopeReplacesSwitches onActivate when
bddlocalNonecaseShared critical examples need executable BDD scenarios.
compatprojectNoneNonePublic or independently deployed consumers need breaking-change detection and versioning.
cachelocalNonelimitMeasurements show repeated expensive reads with bounded staleness.
concurrencylocalNonelimitConflicting writes or repeated delivery can violate behavior.
lifecyclelocalNonelimitDeletion, retention, archival, restore, or legal hold behavior applies.
containersprojectNonelimit, runbookA hosted environment deploys container images.
integrationslocalNoneNoneBehavior calls or receives data from an external system.
auditprojectlitespec/quality/security#record-security-audit-eventsNoneA reviewer must establish who acted inside data another party owns.
localeprojectNoneNoneThe product commits to more than one locale.
mcpprojectNoneNoneThe product ships a Model Context Protocol server an LLM client starts on a user's own machine.
tenancyprojectNoneNoneIndependent customer organizations share one deployment.
outboxlocallitespec/backend/persistence#collect-events-without-a-public-unit-of-workevent, limit, and runbookA committed change requires delivery that cannot be lost.
efcorelocalThe persistence and dependency provisions its Baseline relationship section namesNoneSelected aggregates require relational persistence instead of Marten.
realtimelocalNoneevent, limitPolling cannot meet a measured update-latency requirement.
reportlocalNonelimitComplex reports or large exports exceed normal request reads.
jobslocalNonelimit, runbookBehavior requires recurring, delayed, or calendar-based Worker work.
siteprojectNoneNoneThe product ships a public static website beside its application.
stageprojectNoneNoneThe first deployment holds no customer data yet, or a past promotion goes on record.
delegationprojectNoneNoneOne agent starts another agent on the same tree.

The manifest is the machine-readable source for activationScope, replaces, and switchesOn. This table explains the selection decision.

Switched-on types#

switchesOn names the record types a selection requires. Selecting the outbox requires Event and Limit records, so a project that selects it writes both. A type the project already requires stays required.

Activation#

litespec/core/scope#select-conditional-extensions-explicitly states when an extension activates. litespec/core/scope#record-selected-extensions states where it is listed. litespec/core/scope#record-selected-extensions requires the project record.

The agent protocol carries the ordered steps an agent follows.

Example#

The project selects both locale and outbox, each with the criterion it met and a review date:

JSON
{
  "selectedExtensions": [
    { "id": "locale", "criterion": "The product ships in English and Dutch.", "reviewBy": "2027-03-01" },
    { "id": "outbox", "criterion": "Shipment dispatch cannot lose a delivery.", "reviewBy": "2027-03-01" }
  ]
}

litespec/core/scope#select-conditional-extensions-explicitly requires that an extension is selected only when its criteria apply. The object form records which criterion that was. The consumer validator reports a selection whose reviewBy has passed. A selection that costs nothing to keep is a selection no one removes.