Type to search pages and rules.

Browse pages

Provisions

Use this generated page to resolve a provision ID to its heading, owning page, and verification mark.

Markdown

Intent#

Use this generated page to resolve a provision ID to its heading, owning page, and verification mark.

Run litespec provisions after any provision change. The repository validator fails when this page and the active standards disagree.

The active release states 1249 provisions across 6 areas.

backend#

IDProvisionKindMarkEvidence
litespec/backend/api#apply-only-coarse-policies-at-the-endpointApply only coarse policies at the endpointruleguidanceDoes any endpoint decide target authorization instead of enforcing coarse policies?
litespec/backend/api#apply-patch-to-a-partial-updateApply PATCH to a partial updateruleguidanceDoes each partial update use PATCH with merge-patch media?
litespec/backend/api#avoid-noise-words-in-field-namesAvoid noise words in field namesconventionguidanceDoes any field name carry a type prefix or noise word?
litespec/backend/api#bound-collection-queriesBound collection queriesruleguidanceDo collection endpoints order deterministically within default and maximum limits?
litespec/backend/api#commit-the-generated-contract-its-consumers-readCommit the generated contract its consumers readruleguidanceIs the generated artifact committed and current for each consumer?
litespec/backend/api#declare-a-smaller-collection-maximumDeclare a smaller collection maximumconventionguidanceDoes each lowered maximum name its value and reason?
litespec/backend/api#declare-stable-operation-metadata-in-the-contractDeclare stable operation metadata in the contractruleguidanceDoes each operation declare its operationId, metadata, and summary?
litespec/backend/api#defer-error-mapping-to-the-global-handlerDefer error mapping to the global handlerruleguidanceDoes any endpoint catch an Application or Domain exception?
litespec/backend/api#expose-development-tooling-in-development-onlyExpose development tooling in Development onlyruleguidanceDo Scalar and development tooling map in Development only?
litespec/backend/api#generate-the-contract-without-hosted-dependenciesGenerate the contract without hosted dependenciesconventionguidanceDoes generation avoid hosted dependencies with its answer recorded?
litespec/backend/api#keep-endpoint-dependencies-transport-focusedKeep endpoint dependencies transport-focusedruleguidanceDoes any endpoint take a Domain repository, session, context, provider, or service?
litespec/backend/api#keep-numeric-transport-types-preciseKeep numeric transport types preciseconventionguidanceDoes each numeric field publish a plain schema except large int64 unions?
litespec/backend/api#keep-routes-resource-orientedKeep routes resource-orientedruleguidanceDo routes use plural segments, kebab subresources, and body command data?
litespec/backend/api#map-one-operation-per-endpointMap one operation per endpointruleguidanceDoes each mapped route resolve to one endpoint type and one mediator dispatch?
litespec/backend/api#mark-polymorphic-models-with-discriminatorsMark polymorphic models with discriminatorsruleguidanceDoes each data-bearing set publish oneOf with a string discriminator?
litespec/backend/api#mirror-a-domain-closed-set-as-a-transport-model-of-the-same-shapeMirror a Domain closed set as a transport model of the same shaperuleguidanceDoes each transport model preserve its Domain set shape?
litespec/backend/api#model-a-monetary-value-as-one-objectModel a monetary value as one objectconventionguidanceDoes each monetary value travel as one Money object?
litespec/backend/api#name-boolean-fields-as-conditionsName boolean fields as conditionsconventionguidanceDoes each boolean field use the camel-case condition name?
litespec/backend/api#name-failure-pairs-code-and-reasonName failure pairs code and reasonconventionguidanceDoes each request failure name code for the class and reason?
litespec/backend/api#name-path-parameters-per-resourceName path parameters per resourceconventionguidanceDoes each path parameter name its own resource identity?
litespec/backend/api#name-routes-from-resourcesName routes from resourcesconventionguidanceDoes each route derive from its resource with action segments justified?
litespec/backend/api#name-time-fields-with-atName time fields with AtconventionguidanceDoes each time field end in At?
litespec/backend/api#name-transport-types-by-their-boundary-roleName transport types by their boundary roleconventionguidanceDoes each transport type carry the suffix its role assigns?
litespec/backend/api#publish-label-only-sets-as-string-enumsPublish label-only sets as string enumsruleguidanceDoes each label-only set publish a string enum?
litespec/backend/api#publish-precise-complete-schemasPublish precise, complete schemasruleguidanceDoes each schema declare its value set, bounds, format, and control headers?
litespec/backend/api#record-each-results-http-statusRecord each result's HTTP statusrulecheckablelitespec model check reports result-status.
litespec/backend/api#reflect-enforced-authentication-in-the-contractReflect enforced authentication in the contractruleguidanceDoes each authenticated operation declare its security scheme and requirement?
litespec/backend/api#reject-a-collapsed-or-borrowed-wire-contractReject a collapsed or borrowed wire contractruleguidanceDoes any transport model collapse a set or reuse an inner type?
litespec/backend/api#require-the-marker-header-on-cookie-authenticated-writesRequire the marker header on cookie-authenticated writesruleguidanceDoes a cookie-authenticated write without the marker header answer 401?
litespec/backend/api#return-stable-problem-detailsReturn stable Problem DetailsruleguidanceDoes each error response carry code, traceId, and field errors?
litespec/backend/api#state-an-unexpressible-transition-as-a-custom-methodState an unexpressible transition as a custom methodruleguidanceDoes each unexpressible transition use POST with a colon-suffixed verb?
litespec/backend/api#treat-openapi-as-a-generated-contractTreat OpenAPI as a generated contractruleguidanceDoes the release build regenerate the OpenAPI artifact, with the gate failing on a changed tree?
litespec/backend/api#use-consistent-status-codesUse consistent status codesruleguidanceDoes each operation return its outcome-table status code?
litespec/backend/api#use-offsets-for-proven-bounded-datasetsUse offsets for proven bounded datasetsconventionguidanceDoes each offset page cite the bound making it safe?
litespec/backend/api#use-opaque-cursors-for-collection-pagingUse opaque cursors for collection pagingruleguidanceDoes a malformed cursor answer 400 with code invalid_cursor?
litespec/backend/api#use-put-for-a-whole-replacementUse PUT for a whole replacementruleguidanceDoes each PUT replace the whole resource its path names?
litespec/backend/api#use-standard-field-vocabularyUse standard field vocabularyconventionguidanceDoes each field use the standard vocabulary over its rejected synonym?
litespec/backend/api#use-this-endpoint-layoutUse this endpoint layoutconventionguidanceDoes each endpoint folder match its module, aggregate, and use case?
litespec/backend/api#version-cursors-with-stable-sort-valuesVersion cursors with stable sort valuesruleguidanceDoes each cursor carry a version, stable sort values, and no readable secret?
litespec/backend/application#declare-a-port-where-its-consumers-meetDeclare a port where its consumers meetruleguidanceDoes each port sit at the lowest folder holding its consumers?
litespec/backend/application#declare-every-pipeline-position-beside-the-messageDeclare every pipeline position beside the messageruleguidanceDoes each message declare a value or exemption for every required position?
litespec/backend/application#define-narrow-external-portsDefine narrow external portsruleguidanceDoes each port name its business action with project-owned types?
litespec/backend/application#dispatch-commands-and-queries-through-separate-entry-pointsDispatch commands and queries through separate entry pointsruleguidanceDoes each dispatch site call its own command or query entry point?
litespec/backend/application#enforce-target-authorization-in-the-pipelineEnforce target authorization in the pipelineruleguidanceDoes the pipeline suite assert that every target has a guard and no handler authorizes itself?
litespec/backend/application#keep-command-handlers-narrowKeep command handlers narrowruleguidanceDoes the pipeline stage suite assert that no handler commits, audits, or authorizes?
litespec/backend/application#keep-event-reaction-implementations-explicitKeep event reaction implementations explicitruleguidanceDoes each reaction declare exactly one classification it honors?
litespec/backend/application#keep-mappings-at-the-owning-boundaryKeep mappings at the owning boundaryconventionguidanceDoes each conversion live in the layer owning its output shape?
litespec/backend/application#keep-messages-immutableKeep messages immutableconventionguidanceIs each message, result, and validation error a record?
litespec/backend/application#keep-one-state-changing-use-case-in-one-pipelineKeep one state-changing use case in one pipelineruleguidanceDoes any command handler dispatch another command through the command pipeline?
litespec/backend/application#mirror-a-domain-closed-set-in-the-resultMirror a Domain closed set in the resultruleguidanceDoes each result union carry one record per Domain case?
litespec/backend/application#model-expected-use-case-failures-explicitlyModel expected use-case failures explicitlyruleguidanceDoes each expected failure throw its typed exception with its Result code?
litespec/backend/application#organize-application-by-operationOrganize Application by operationruleguidanceDoes each operation folder hold its message, result, validator, handler, and definition?
litespec/backend/application#project-queries-directlyProject queries directlyruleguidanceDoes each query handler project to its result without loading an aggregate?
litespec/backend/application#record-a-decision-for-closed-set-narrowingRecord a decision for closed-set narrowingruleguidanceDoes each narrowed set name its decision and updated specification?
litespec/backend/application#report-input-problems-as-validity-findingsReport input problems as validity findingsruleguidanceDoes each validator report validity findings with member, code, and message failures?
litespec/backend/application#return-use-case-resultsReturn use-case resultsconventionguidanceDoes each result return only values the caller needs?
litespec/backend/application#separate-input-validation-from-invariantsSeparate input validation from invariantsruleguidanceDoes each validator check only structural input and defer state decisions?
litespec/backend/application#use-this-operation-layoutUse this operation layoutconventionguidanceDoes each operation path match its module, aggregate, and use case?
litespec/backend/architecture#compose-each-process-explicitlyCompose each process explicitlyruleguidanceDoes each host register its own services without building a second provider?
litespec/backend/architecture#create-a-worker-project-when-background-work-needs-its-own-processCreate a Worker project when background work needs its own processruleguidanceDoes background work needing its own process run in a Worker project?
litespec/backend/architecture#declare-the-execution-host-for-work-that-outlives-a-requestDeclare the execution host for work that outlives a requestruleguidanceWhich Decision names the execution host for dispatch, queue consumption, and scheduled work?
litespec/backend/architecture#keep-business-invariants-in-domainKeep business invariants in DomainruleguidanceDoes every state transition run inside its aggregate or value object?
litespec/backend/architecture#keep-implementation-types-hiddenKeep implementation types hiddenruleguidanceIs every handler, validator, definition, and endpoint implementation hidden and closed?
litespec/backend/architecture#keep-one-application-partKeep one Application partruleguidanceDoes one Application part hold every message, handler, and module-owned port?
litespec/backend/architecture#keep-service-registration-in-hostsKeep service registration in hostsconventionguidanceDoes all service registration live in hosts and host modules?
litespec/backend/architecture#organize-every-layer-by-module-and-use-caseOrganize every layer by module and use caseruleguidanceDoes each layer folder path resolve to a declared module and aggregate?
litespec/backend/architecture#own-each-layers-contract-typesOwn each layer's contract typesruleguidanceDoes each layer define its own contracts apart from kernel values and typed IDs?
litespec/backend/architecture#place-a-type-at-the-lowest-folder-that-holds-its-consumersPlace a type at the lowest folder that holds its consumersruleguidanceDoes each type sit at the lowest folder holding its consumers, with no banned folder name?
litespec/backend/architecture#point-dependencies-inwardPoint dependencies inwardruleguidanceDoes every project reference point toward Domain without an outward edge?
litespec/backend/architecture#separate-command-and-query-behaviorSeparate command and query behaviorruleguidanceDo commands mutate through repositories while queries project without aggregates?
litespec/backend/architecture#test-structural-boundariesTest structural boundariesruleguidanceDo the architecture tests prove references, packages, visibility, folders, and inheritance?
litespec/backend/architecture#use-five-application-partsUse five application partsruleguidanceDoes the solution hold exactly the five baseline parts?
litespec/backend/domain#align-id-representations-at-every-boundaryAlign ID representations at every boundaryconventionguidanceIs each identifier represented the same way at every boundary in the table?
litespec/backend/domain#create-valid-aggregates-through-named-factoriesCreate valid aggregates through named factoriesruleguidanceDoes each aggregate root create instances only through a named static factory that checks identity and records events?
litespec/backend/domain#define-collection-value-semantics-explicitlyDefine collection value semantics explicitlyruleguidanceDoes each collection value implement content equality and a matching hash under its ordering rule?
litespec/backend/domain#describe-every-public-domain-contract-in-documentationDescribe every public Domain contract in documentationruleguidanceDoes every public Domain type and member document its constraint, result, or failure?
litespec/backend/domain#expose-repositories-for-one-aggregate-onlyExpose repositories for one aggregate onlyruleguidanceDoes each repository serve one aggregate with Domain-only types and no queryable, session, or generic surface?
litespec/backend/domain#express-transitions-through-business-methodsExpress transitions through business methodsruleguidanceDoes each mutation check state, and does each lifecycle move also replace state and record its event?
litespec/backend/domain#identify-aggregates-with-strongly-typed-version-7-valuesIdentify aggregates with strongly typed version 7 valuesruleguidanceIs each identity a dedicated type over a version 7 UUID with no conversion, alias, or parameterless creation?
litespec/backend/domain#keep-binary-floating-point-out-of-exact-quantitiesKeep binary floating point out of exact quantitiesruleguidanceDoes no Domain member use double or float for money, a rate applied to money, or an exactly compared quantity?
litespec/backend/domain#keep-child-entities-inside-the-aggregate-boundaryKeep child entities inside the aggregate boundaryruleguidanceDo children expose no mutable state outside their root, with collections surfaced as read-only views?
litespec/backend/domain#keep-domain-independent-of-outer-layersKeep Domain independent of outer layersruleguidanceDoes Domain code reference only the standard library and project-owned Domain types?
litespec/backend/domain#model-every-aggregate-lifecycle-with-state-typesModel every aggregate lifecycle with state typesruleguidanceDoes each aggregate expose one state property over a closed hierarchy of state types?
litespec/backend/domain#model-every-closed-set-of-domain-values-as-a-closed-type-hierarchyModel every closed set of domain values as a closed type hierarchyruleguidanceIs each closed set a type hierarchy with stable codes and a named label lookup?
litespec/backend/domain#model-money-with-exact-decimal-valuesModel money with exact decimal valuesruleguidanceIs each monetary amount an exact decimal in the shared Money object with the stated JSON shape?
litespec/backend/domain#organize-a-module-by-aggregate-and-conceptOrganize a module by aggregate and conceptconventionguidanceDoes each Domain module give each aggregate its plural folder with its own states, events, and concepts?
litespec/backend/domain#pass-nondeterministic-values-into-domainPass nondeterministic values into DomainruleguidanceDoes Domain receive time, randomness, and identifiers as arguments and read no clock?
litespec/backend/domain#raise-immutable-facts-as-domain-eventsRaise immutable facts as domain eventsruleguidanceIs each domain event an immutable event named for its aggregate and fact, carrying business data only?
litespec/backend/domain#reference-other-aggregates-by-idReference other aggregates by IDruleguidanceDoes each aggregate store other aggregates as typed identifiers rather than object references?
litespec/backend/domain#reject-business-violations-with-dedicated-errorsReject business violations with dedicated errorsruleguidanceDoes each rejected rule fail with its own error type carrying a stable code and no transport status?
litespec/backend/domain#reuse-the-shared-domain-contracts-across-modulesReuse the shared Domain contracts across modulesconventionguidanceIs each shared Domain contract declared once and reused across modules?
litespec/backend/domain#take-identity-and-events-from-the-project-root-contractTake identity and events from the project root contractruleguidanceDoes each aggregate root inherit the one base type that supplies its identifier and its pending events?
litespec/backend/domain#treat-aggregates-as-consistency-boundariesTreat aggregates as consistency boundariesruleguidanceIs each aggregate root the only public mutation path for the invariants its transaction protects?
litespec/backend/domain#use-immutable-value-objects-for-domain-conceptsUse immutable value objects for domain conceptsruleguidanceIs each value object immutable, compared by complete value, and created through a static method?
litespec/backend/domain#use-one-ubiquitous-languageUse one ubiquitous languageruleguidanceDoes each Domain name match a Term record in the project language record?
litespec/backend/domain#use-stateless-domain-services-for-ownerless-rulesUse stateless domain services for ownerless rulesruleguidanceIs each domain service stateless, confined to Domain values, and free of the banned calls?
litespec/backend/domain#use-these-domain-namesUse these Domain namesconventionguidanceDoes each Domain name follow the cited workspace naming provisions and the chosen state-case form?
litespec/backend/dotnet/api#declare-operation-metadata-in-the-contractDeclare operation metadata in the contractruleguidanceDoes each operation declare its operationId, metadata, typed results, and summary?
litespec/backend/dotnet/api#exclude-mvc-controllers-from-the-stackExclude MVC controllers from the stackrulecheckabledotnet build of the WebApi project reports no LiteSpec.Analyzers LS2003 diagnostic.
litespec/backend/dotnet/api#keep-programcs-as-compositionKeep Program.cs as compositionconventionguidanceDoes Program.cs hold only composition in the recorded order?
litespec/backend/dotnet/api#mark-polymorphic-transport-models-with-discriminatorsMark polymorphic transport models with discriminatorsruleguidanceDoes each data-bearing set map to sealed records published as oneOf with a string discriminator?
litespec/backend/dotnet/api#use-one-endpoint-per-operationUse one endpoint per operationruleguidanceDoes each mapped route resolve to one IEndpoint type and one mediator dispatch?
litespec/backend/dotnet/application#keep-one-state-changing-use-case-in-one-command-pipelineKeep one state-changing Use case in one Command pipelinerulecheckabledotnet build of the Application project reports no LiteSpec.Analyzers LS2002 diagnostic.
litespec/backend/dotnet/application#report-input-problems-as-validityReport input problems as ValidityruleguidanceDoes each validator report Validity with member, code, and message failures?
litespec/backend/dotnet/application#use-the-pinned-mediator-entry-pointsUse the pinned mediator entry pointsconventionguidanceDoes each dispatch site call the pinned mediator entry points?
litespec/backend/dotnet/architecture#keep-composition-in-hostsKeep composition in hostsconventionguidanceDoes all service registration live in hosts and host modules?
litespec/backend/dotnet/architecture#keep-implementation-types-internalKeep implementation types internalruleguidanceIs every handler, validator, definition, and endpoint implementation internal and sealed?
litespec/backend/dotnet/architecture#keep-one-application-assemblyKeep one Application assemblyruleguidanceDoes one Application project hold every message, handler, and module-owned port?
litespec/backend/dotnet/architecture#use-five-application-projectsUse five application projectsruleguidanceDoes the solution hold exactly the five baseline projects?
litespec/backend/dotnet/architecture#use-one-public-assembly-marker-per-scanned-projectUse one public assembly marker per scanned projectconventionguidanceDoes each scanned project expose exactly one public assembly marker?
litespec/backend/dotnet/config#centralize-net-build-settingsCentralize .NET build settingsruleguidanceDoes Directory.Build.props set the manifest target framework, nullable types, implicit usings, and warnings as errors?
litespec/backend/dotnet/config#centralize-nuget-versionsCentralize NuGet versionsruleguidanceDoes Directory.Packages.props enable central management with the manifest pins, and do projects omit versions?
litespec/backend/dotnet/config#commit-the-tool-manifestCommit the tool manifestruleguidanceDoes .config/dotnet-tools.json pin each local tool a documented command invokes?
litespec/backend/dotnet/config#set-the-sdk-floor-at-the-workspace-rootSet the SDK floor at the workspace rootruleguidanceDoes the root global.json set the manifest major release's first feature band, such as 10.0.100, with latestMajor roll-forward?
litespec/backend/dotnet/config#validate-backend-options-at-startupValidate backend options at startupruleguidanceDoes each configuration section bind a validated options class that fails startup on bad values?
litespec/backend/dotnet/domain#define-the-shared-domain-contracts-onceDefine the shared Domain contracts onceconventionguidanceIs each shared Domain contract declared once, with DomainException declaring its abstract Code?
litespec/backend/dotnet/domain#document-every-public-domain-contractDocument every public Domain contractrulecheckabledotnet build of the Domain project reports no LiteSpec.Analyzers LS1011 diagnostic.
litespec/backend/dotnet/domain#keep-domain-free-of-outer-layer-concernsKeep Domain free of outer-layer concernsruleguidanceDoes the Domain assembly reference only the base class library and project-owned Domain types?
litespec/backend/dotnet/domain#keep-id-representations-aligned-at-every-boundaryKeep ID representations aligned at every boundaryconventionguidanceIs each identifier represented the same way at every boundary in the table?
litespec/backend/dotnet/domain#keep-repository-interfaces-in-domainKeep repository interfaces in DomainruleguidanceDoes each repository serve one aggregate with Domain-only types and no IQueryable, session, or generic surface?
litespec/backend/dotnet/domain#make-money-and-decimal-rules-explicitMake money and decimal rules explicitruleguidanceIs each monetary amount a decimal in the shared Money object with the stated JSON shape?
litespec/backend/dotnet/domain#model-every-aggregate-lifecycle-with-state-recordsModel every Aggregate lifecycle with state recordsruleguidanceDoes each aggregate expose one State property over an abstract base with sealed cases, read only through that property?
litespec/backend/dotnet/domain#model-every-closed-set-of-domain-values-without-enumsModel every closed set of domain values without enumsruleguidanceIs each closed set a record hierarchy with stable codes and FromCode for data-less sets, with no enum in Domain?
litespec/backend/dotnet/domain#raise-immutable-domain-factsRaise immutable domain factsruleguidanceIs each domain event an immutable record named for its aggregate and fact, carrying business data only?
litespec/backend/dotnet/domain#reject-business-violations-with-domain-exceptionsReject business violations with Domain exceptionsruleguidanceDoes each rejected rule throw its own DomainException type with a stable code and no transport status?
litespec/backend/dotnet/domain#use-strongly-typed-version-7-identifiersUse strongly typed version 7 identifiersruleguidanceIs each identity a readonly record struct over a version 7 Guid with no conversion, alias, or parameterless creation?
litespec/backend/dotnet/domain#use-the-project-aggregate-root-contractUse the project aggregate root contractruleguidanceDoes every aggregate root derive from the one project base and use its identity and event mechanics?
litespec/backend/dotnet/ext/bdd#assert-observable-outcomesAssert observable outcomesruleguidanceDoes each scenario assert a response, read, event, record, or other observable outcome?
litespec/backend/dotnet/ext/bdd#avoid-routine-scenario-duplicationAvoid routine scenario duplicationruleguidanceDoes the suite leave unit and validation cases to their narrower tests?
litespec/backend/dotnet/ext/bdd#drive-public-behaviorDrive public behaviorruleguidanceDo all steps call the HTTP API or another declared public boundary?
litespec/backend/dotnet/ext/bdd#exclude-production-internalsExclude production internalsruleguidanceIs the suite free of Domain repository, handler, session, and provider resolution?
litespec/backend/dotnet/ext/bdd#group-feature-files-by-moduleGroup feature files by moduleconventionguidanceDo feature files follow the module folders or a recorded Exception?
litespec/backend/dotnet/ext/bdd#isolate-scenario-executionIsolate scenario executionruleguidanceDoes the suite reset state between scenarios and avoid order dependence?
litespec/backend/dotnet/ext/bdd#keep-steps-vocabulary-scopedKeep steps vocabulary-scopedconventionguidanceDoes each reusable step set serve one business vocabulary or a recorded Exception?
litespec/backend/dotnet/ext/bdd#limit-database-assertionsLimit database assertionsruleguidanceDoes each direct database assertion name its documented durable boundary?
litespec/backend/dotnet/ext/bdd#limit-scenario-contextLimit scenario contextconventionguidanceDoes the scenario context hold state only, or is there a recorded Exception?
litespec/backend/dotnet/ext/bdd#mark-pull-request-scenariosMark pull-request scenariosconventionguidanceDoes the pull-request subset stay small, owned, and separate from Case proof?
litespec/backend/dotnet/ext/bdd#own-scenario-dataOwn scenario dataruleguidanceDoes each scenario own its identifiers, actor context, requests, responses, and expected state?
litespec/backend/dotnet/ext/bdd#preserve-scenario-failuresPreserve scenario failuresruleguidanceDo hooks await setup and cleanup without replacing the scenario failure?
litespec/backend/dotnet/ext/bdd#prove-a-case-from-every-scenarioProve a Case from every scenarioruleguidanceDoes every scenario carry one proves claim for a Case its steps prove?
litespec/backend/dotnet/ext/bdd#select-shared-critical-examplesSelect shared critical examplesruleguidanceDoes the scenario give shared discussions one executable cross-layer example?
litespec/backend/dotnet/ext/bdd#translate-business-phrasesTranslate business phrasesruleguidanceDo step definitions delegate business phrases to typed driver calls?
litespec/backend/dotnet/ext/efcore#apply-migrations-as-release-workApply migrations as release workrulecheckableEfCoreMigrationsTests place migration application before replica startup in the release record.
litespec/backend/dotnet/ext/efcore#avoid-per-aggregate-read-storesAvoid per-aggregate read storesrulecheckableEfCoreReadTests assert no per-aggregate read-store interface pattern exists.
litespec/backend/dotnet/ext/efcore#commit-ef-core-command-work-onceCommit EF Core Command work oncerulecheckableEfCoreCommitTests observe one post-handler SaveChangesAsync call per owned Command.
litespec/backend/dotnet/ext/efcore#configure-ef-core-mappings-in-infrastructureConfigure EF Core mappings in InfrastructurerulecheckableEfCoreMappingTests assert EF Core mappings use Infrastructure-owned configuration classes.
litespec/backend/dotnet/ext/efcore#configure-optimistic-tokensConfigure optimistic tokensrulecheckableEfCoreConcurrencyTests carry expected version and use the configured EF Core token.
litespec/backend/dotnet/ext/efcore#configure-relational-details-explicitlyConfigure relational details explicitlyruleguidanceDoes the mapping review record every declared relational configuration category?
litespec/backend/dotnet/ext/efcore#define-ef-core-query-rootsDefine EF Core query rootsrulecheckableEfCoreReadTests assert one owned IApplicationDbContext and no wider EF surface.
litespec/backend/dotnet/ext/efcore#exclude-direct-handler-commitsExclude direct handler commitsrulecheckableEfCoreWriteTests assert handlers inject no DbContext and call no SaveChangesAsync.
litespec/backend/dotnet/ext/efcore#generate-migrations-for-schema-changesGenerate migrations for schema changesrulecheckableEfCoreMigrationsTests assert EF Core schema diffs include a generated migration.
litespec/backend/dotnet/ext/efcore#implement-query-roots-in-infrastructureImplement query roots in InfrastructurerulecheckableEfCoreReadTests assert the Infrastructure DbContext implements the owned query interface.
litespec/backend/dotnet/ext/efcore#keep-migration-files-togetherKeep migration files togetherrulecheckableEfCoreMigrationsTests assert each migration commit holds migration, snapshot, and reviewed SQL.
litespec/backend/dotnet/ext/efcore#map-ef-core-concurrency-conflictMap EF Core concurrency conflictrulecheckableEfCoreConcurrencyTests map the provider exception to the Application contract.
litespec/backend/dotnet/ext/efcore#map-stable-relational-state-shapeMap stable relational state shaperulecheckableEfCoreStateTests assert no relational lifecycle flags or duplicate nullable state values.
litespec/backend/dotnet/ext/efcore#map-unsupported-state-shapes-in-infrastructureMap unsupported state shapes in InfrastructurerulecheckableEfCoreStateTests map valid discriminator values to Domain states.
litespec/backend/dotnet/ext/efcore#process-changed-aggregate-eventsProcess changed aggregate eventsrulecheckableEfCoreCommitTests classify and stage Domain events correctly.
litespec/backend/dotnet/ext/efcore#project-ef-core-queries-directlyProject EF Core queries directlyrulecheckableEfCoreReadTests assert no tracking, authorized filters, deterministic limits, projections, and no invariant from a projection.
litespec/backend/dotnet/ext/efcore#record-ef-core-replacement-scopeRecord EF Core replacement scoperuleguidanceDoes the decision name aggregates, evolution, transactions, queries, packages, and rollback?
litespec/backend/dotnet/ext/efcore#record-provider-selectionRecord provider selectionruleguidanceDoes the decision name each Command path's provider and its test evidence?
litespec/backend/dotnet/ext/efcore#register-one-command-post-handlerRegister one Command post-handlerrulecheckableEfCoreTransactionTests assert each command resolves only its selected provider post-handler.
litespec/backend/dotnet/ext/efcore#reject-automatic-command-retryReject automatic command retryrulecheckableEfCoreConcurrencyTests prove no complete Command automatic retry.
litespec/backend/dotnet/ext/efcore#reject-cross-provider-outbox-storageReject cross-provider outbox storagerulecheckableEfCoreOutboxTests assert EF Core Commands write no outbox record through Marten.
litespec/backend/dotnet/ext/efcore#reject-mixed-provider-writesReject mixed provider writesrulecheckableEfCoreTransactionTests assert no mixed Marten and EF Core aggregate repository writes.
litespec/backend/dotnet/ext/efcore#reject-startup-schema-mutationReject startup schema mutationrulecheckableEfCoreMigrationsTests assert startup calls none of the prohibited schema APIs.
litespec/backend/dotnet/ext/efcore#resolve-cross-provider-invariantsResolve cross-provider invariantsruleguidanceDoes each cross-provider invariant use one provider or a reviewed shared transaction?
litespec/backend/dotnet/ext/efcore#resolve-the-tenant-at-context-creationResolve the tenant at context creationrulecheckableEfCoreReadTests assert tenant resolution at creation and tenant filters on owned sets.
litespec/backend/dotnet/ext/efcore#retain-domain-state-valuesRetain Domain state valuesrulecheckableEfCoreStateTests retain the aggregate's one Domain state value.
litespec/backend/dotnet/ext/efcore#retain-marten-query-boundaryRetain Marten query boundaryrulecheckableEfCoreReadTests assert Marten query handlers retain IQuerySession.
litespec/backend/dotnet/ext/efcore#retain-unaffected-baseline-persistenceRetain unaffected baseline persistenceruleguidanceDoes every unaffected aggregate path retain its baseline persistence behavior?
litespec/backend/dotnet/ext/efcore#review-migration-effectsReview migration effectsruleguidanceDoes the migration review cover every declared storage and rollback effect?
litespec/backend/dotnet/ext/efcore#review-new-persisted-statesReview new persisted statesruleguidanceDoes the new state review cover migration, mixed versions, rollback, and a fixture?
litespec/backend/dotnet/ext/efcore#stage-aggregate-writes-in-repositoriesStage aggregate writes in repositoriesrulecheckableEfCoreWriteTests stage changes through the scoped DbContext.
litespec/backend/dotnet/ext/efcore#stage-ef-core-outbox-records-togetherStage EF Core outbox records togetherrulecheckableEfCoreOutboxTests stage message and business work through one DbContext.
litespec/backend/dotnet/ext/efcore#test-migration-starting-statesTest migration starting statesrulecheckableEfCoreMigrationsTests run from empty and previous-release databases.
litespec/backend/dotnet/ext/efcore#use-direct-state-mapping-only-when-supportedUse direct state mapping only when supportedrulecheckableEfCoreStateTests materialize, track, and round-trip every state case.
litespec/backend/dotnet/ext/efcore#use-durable-outbox-deliveryUse durable outbox deliveryrulecheckableEfCoreCommitTests assert EF Core durable Commands commit no Marten session.
litespec/backend/dotnet/ext/efcore#use-one-write-providerUse one write providerrulecheckableEfCoreTransactionTests stage aggregate work through one selected provider.
litespec/backend/dotnet/ext/efcore#use-snake-case-relational-namesUse snake-case relational namesconventioncheckableEfCoreTests assert generated migrations contain verified snake-case database names.
litespec/backend/dotnet/ext/efcore#use-the-ef-core-infrastructure-layoutUse the EF Core Infrastructure layoutconventionguidanceDoes each EF Core Infrastructure path use the default layout or record an Exception?
litespec/backend/dotnet/naming#keep-implementation-style-consistentKeep implementation style consistentruleguidanceDoes production C# use file-scoped namespaces, braces, explicit modifiers, and sealed classes?
litespec/backend/dotnet/naming#match-c-files-and-primary-typesMatch C# files and primary typesrulecheckabledotnet build reports no LiteSpec.Analyzers LS3003 diagnostic.
litespec/backend/dotnet/naming#name-asynchronous-methods-completelyName asynchronous methods completelyrulecheckabledotnet build reports no LiteSpec.Analyzers LS3001 or LS3002 diagnostic.
litespec/backend/dotnet/packages#keep-application-dependencies-narrowKeep Application dependencies narrowruleguidanceDoes Application reference only permitted abstractions and the one read boundary?
litespec/backend/dotnet/packages#keep-domain-package-freeKeep Domain package-freeruleguidanceDoes the Domain project reference no package beyond the base class library?
litespec/backend/dotnet/packages#pin-every-dependency-centrallyPin every dependency centrallyruleguidanceDoes every version resolve through central management or the lockfile at the manifest or consumer pin?
litespec/backend/dotnet/packages#reference-only-the-litebus-module-requiredReference only the LiteBus module requiredconventionguidanceDoes each project reference only the LiteBus modules its code dispatches?
litespec/backend/dotnet/packages#run-litespecanalyzers-in-every-application-projectRun LiteSpec.Analyzers in every application projectconventionguidanceDoes each of the five application projects reference LiteSpec.Analyzers at the manifest pin?
litespec/backend/dotnet/packages#use-the-project-reference-graphUse the project reference graphruleguidanceDoes each project reference follow the declared graph with no added edge?
litespec/backend/dotnet/packages#use-this-baseline-package-ownershipUse this baseline package ownershipconventionguidanceDoes each baseline package sit in the layer the ownership table assigns?
litespec/backend/dotnet/persistence#commit-once-in-the-command-pipelineCommit once in the command pipelineruleguidanceDoes exactly one command post-handler call SaveChangesAsync for each pipeline, with no other caller committing?
litespec/backend/dotnet/persistence#query-through-iquerysessionQuery through IQuerySessionruleguidanceDoes each query handler project through IQuerySession, with filter, scope, ordering, and limit applied first?
litespec/backend/dotnet/persistence#register-one-scoped-sessionRegister one scoped sessionconventionguidanceDo the Domain repositories and the commit handler in one command resolve one IDocumentSession?
litespec/backend/dotnet/persistence#stage-aggregate-writes-through-repositoriesStage aggregate writes through repositoriesruleguidanceDoes each command handler reach persistence only through a Domain repository, never through IDocumentSession?
litespec/backend/dotnet/persistence#use-this-infrastructure-layoutUse this Infrastructure layoutconventionguidanceDo Marten configuration, repositories, and commit behavior sit under the one persistence folder?
litespec/backend/dotnet/stack#declare-dotnet-as-the-backend-stackDeclare dotnet as the backend stackruleguidanceDoes litespec.project.json name dotnet when the backend runs on .NET?
litespec/backend/dotnet/stack#write-test-results-the-model-builder-readsWrite test results the model builder readsrulecheckablelitespec model check reports no case as verified when no result file exists.
litespec/backend/dotnet/testing#enforce-architecture-rulesEnforce architecture rulesruleguidanceDo architecture tests assert the named structural boundaries and run in the Release pass?
litespec/backend/dotnet/testing#keep-the-test-projects-the-size-requiresKeep the test projects the size requiresruleguidanceDoes the solution hold the test projects its size requires and no other baseline project?
litespec/backend/dotnet/testing#prove-each-case-with-a-test-that-calls-its-use-caseProve each Case with a test that calls its use caseruleguidanceIs each Case proved by a test carrying its XML doc proves tag and calling its use case?
litespec/backend/dotnet/testing#test-http-integration-through-the-real-hostTest HTTP integration through the real hostruleguidanceDoes each HTTP integration test run through WebApplicationFactory, covering Problem Details, authentication, and authorization?
litespec/backend/dotnet/testing#use-one-production-faithful-integration-harnessUse one production-faithful integration harnessruleguidanceDoes the integration project own one container fixture, ApiFactory, and isolation helper?
litespec/backend/dotnet/workspace#declare-size-and-stacks-in-project-configDeclare size and stacks in project configruleguidanceDoes litespec.project.json declare size and one stack per frontend beside the .NET backend?
litespec/backend/dotnet/workspace#keep-net-production-and-test-projects-separateKeep .NET production and test projects separateruleguidanceDo production projects sit under src/ and test projects under tests/?
litespec/backend/dotnet/workspace#keep-one-workspace-solution-beside-the-api-solutionKeep one workspace solution beside the API solutionruleguidanceDoes any root solution list more than one deployable while builds name the API solution?
litespec/backend/dotnet/workspace#place-a-workspace-apphost-beside-the-applications-it-runsPlace a workspace AppHost beside the applications it runsruleguidanceDoes an AppHost running a frontend sit at apps/apphost/ and an API-only one under apps/api/src/?
litespec/backend/identifiers#cite-shared-provisions-in-their-published-formCite shared provisions in their published formrulecheckablelitespec validate emits no ID_UNKNOWN_REFERENCE diagnostic.
litespec/backend/identifiers#follow-the-identifier-form-of-each-record-typeFollow the identifier form of each record typerulecheckablelitespec model check reports identifier-form.
litespec/backend/identifiers#keep-business-record-names-unique-across-the-projectKeep business record names unique across the projectrulecheckablelitespec model check reports business-record-name-clash.
litespec/backend/identifiers#keep-negation-in-rule-namesKeep negation in rule namesrulecheckablelitespec model check reports rule-name-negation.
litespec/backend/identifiers#keep-use-case-names-unique-across-the-projectKeep use case names unique across the projectrulecheckablelitespec model check reports use-case-name-clash.
litespec/backend/identifiers#keep-wire-codes-stableKeep wire codes stableruleguidanceDo clients read the same code values as before?
litespec/backend/identifiers#name-records-with-one-to-six-wordsName records with one to six wordsrulecheckablelitespec model check reports identifier-form.
litespec/backend/identifiers#resolve-every-identifier-citationResolve every identifier citationrulecheckablelitespec model check reports reference-unresolved.
litespec/backend/persistence#add-read-documents-for-query-shaped-dataAdd read documents for query-shaped dataconventionguidanceDoes each read document record its consistency and rebuild behavior beside its owning use case?
litespec/backend/persistence#bound-aggregate-document-growthBound aggregate document growthruleguidanceDoes each embedded collection in an aggregate document have an accepted business bound?
litespec/backend/persistence#collect-events-without-a-public-unit-of-workCollect events without a public unit of workruleguidanceDoes each repository register touched aggregates with the internal buffer the post-handler drains?
litespec/backend/persistence#commit-each-command-pipeline-onceCommit each command pipeline onceruleguidanceDoes exactly one command post-handler commit each pipeline, with no other caller committing?
litespec/backend/persistence#control-production-schema-changesControl production schema changesruleguidanceDoes each hosted schema change run as a reviewed step before traffic shifts?
litespec/backend/persistence#evolve-stored-document-contracts-explicitlyEvolve stored document contracts explicitlyruleguidanceDoes each stored-contract change carry a reviewed transformation or an expand-and-contract rollout?
litespec/backend/persistence#keep-mappings-and-aliases-explicitKeep mappings and aliases explicitruleguidanceDoes each stored aggregate declare a stable alias, identifier mapping, and the indexes its queries need?
litespec/backend/persistence#keep-serialization-behavior-out-of-domainKeep serialization behavior out of DomainruleguidanceDoes Infrastructure own the stored JSON contract with every persisted subtype registered?
litespec/backend/persistence#persist-one-explicit-state-objectPersist one explicit state objectconventionguidanceDoes each aggregate persist its state object with every state round-tripping through the serializer?
litespec/backend/persistence#query-through-the-read-sessionQuery through the read sessionruleguidanceDoes each query handler project through the read session, with filter, scope, ordering, and limit applied first?
litespec/backend/persistence#review-query-plans-for-new-indexesReview query plans for new indexesconventionguidanceDoes each new index record its accepted query and the plan that justified it?
litespec/backend/persistence#stage-aggregate-writes-through-domain-repositoriesStage aggregate writes through domain repositoriesruleguidanceDoes each command handler reach persistence only through a Domain repository?
litespec/backend/persistence#test-persistence-against-postgresqlTest persistence against PostgreSQLruleguidanceDoes each persistence behavior run against the pinned PostgreSQL through Testcontainers?
litespec/backend/persistence#use-database-naming-conventionsUse database naming conventionsruleguidanceIs each generated database identifier snake_case?
litespec/backend/persistence#use-one-persistence-folderUse one persistence folderconventionguidanceDo store configuration, repositories, and commit behavior sit under the one persistence folder?
litespec/backend/persistence#use-one-session-per-commandUse one session per commandconventionguidanceDo the repositories and the commit handler in one command resolve one session?
litespec/backend/testing#assert-architecture-boundaries-with-testsAssert architecture boundaries with testsruleguidanceDo architecture tests assert the named structural boundaries?
litespec/backend/testing#isolate-integration-stateIsolate integration stateruleguidanceDoes each integration test reset state through the documented strategy with no order dependence?
litespec/backend/testing#keep-assertions-focusedKeep assertions focusedconventionguidanceDoes each test assert only its named outcome rather than a whole-object snapshot?
litespec/backend/testing#keep-the-test-suites-the-size-requiresKeep the test suites the size requiresruleguidanceDoes the codebase hold the test suites its size requires and no other baseline suite?
litespec/backend/testing#mirror-production-module-namesMirror production module namesconventionguidanceDoes each test project tree list the same module folders as production, apart from the exempt harness files?
litespec/backend/testing#name-tests-by-observable-behaviorName tests by observable behaviorconventionguidanceDoes each test name state operation, condition, and expected result on its production type class?
litespec/backend/testing#prove-each-rule-at-its-enforcement-pointProve each Rule at its enforcement pointruleguidanceDoes a test at the enforcement point prove each Rule, with store refusals provoked through integration?
litespec/backend/testing#share-one-production-faithful-integration-harnessShare one production-faithful integration harnessruleguidanceDoes the integration suite own one container fixture, host factory, and isolation helper?
litespec/backend/testing#tag-the-test-that-proves-each-caseTag the test that proves each CaseruleguidanceDoes a test carrying its proves tag, calling the use case and asserting its result, prove each Case?
litespec/backend/testing#test-application-coordinationTest Application coordinationruleguidanceDoes each Application test substitute its ports and assert the handler coordination?
litespec/backend/testing#test-domain-in-isolationTest Domain in isolationruleguidanceDoes each Domain test use explicit inputs with no database, host, container, clock, or mock?
litespec/backend/testing#test-http-integration-through-the-real-application-hostTest HTTP integration through the real application hostruleguidanceDoes each HTTP integration test run through the real host covering Problem Details, authentication, and authorization?
litespec/backend/testing#use-builders-for-valid-defaultsUse builders for valid defaultsconventionguidanceDoes each test data builder produce valid state by default through its Domain factory?
litespec/backend/testing#use-evidence-rather-than-one-coverage-targetUse evidence rather than one coverage targetruleguidanceDo you collect coverage for review with no percentage treated as sufficient testing?

core#

IDProvisionKindMarkEvidence
litespec/core/agent#apply-guidance-precedenceApply guidance precedenceruleguidanceIn which order did the design apply the project exception, the extension, the deeper page, and the shallower page?
litespec/core/agent#follow-the-local-pattern-before-the-model-queryFollow the local pattern before the model queryruleguidanceWhich local pattern did the change follow, and which surface did it avoid adding?
litespec/core/agent#inspect-existing-work-before-editingInspect existing work before editingruleguidanceWhat did git status show, and which unrelated work stayed untouched?
litespec/core/agent#inspect-local-examples-after-standardsInspect local examples after standardsconventionguidanceWhich neighboring files shaped the change after the standards?
litespec/core/agent#keep-agent-working-files-under-agentsKeep agent working files under agentsconventionguidanceWhich working files sit outside .agents/ or the declared replacement?
litespec/core/agent#load-applicable-extensionsLoad applicable extensionsruleguidanceWhich extensions did the agent load before editing inside their boundaries?
litespec/core/agent#make-coherent-scoped-changesMake coherent scoped changesruleguidanceWhich changed artifact does the authorized request fail to explain?
litespec/core/agent#read-the-full-record-before-changing-a-boundaryRead the full record before changing a boundaryconventionguidanceWhich full record did the file generation or boundary change cite?
litespec/core/agent#replace-only-declared-conventionsReplace only declared conventionsruleguidanceWhich approved exception record declares each convention replacement?
litespec/core/agent#restrict-unapproved-side-effectsRestrict unapproved side effectsruleguidanceWhich approval covers each listed side effect the change makes?
litespec/core/agent#select-task-contextSelect task contextruleguidanceWhich model query selected the records the change cites?
litespec/core/agent#stop-on-unresolved-conflictStop on unresolved conflictruleguidanceWhich quoted conflict stopped the work, with both provision identifiers?
litespec/core/authoring#attach-examples-to-their-provisionsAttach examples to their provisionsrulecheckablelitespec validate emits no STANDARD_EXAMPLE_LABEL or PAGE_UNKNOWN_SECTION diagnostic.
litespec/core/authoring#check-the-vocabulary-on-every-surface-a-reader-meetsCheck the vocabulary on every surface a reader meetsrulecheckablelitespec consumer scans every languageScan pattern and fails a pattern that matches no file.
litespec/core/authoring#classify-every-specification-fileClassify every specification filerulecheckablelitespec consumer fails a Markdown file with no declared type outside a declared unstructured path.
litespec/core/authoring#declare-structured-specification-metadataDeclare structured specification metadatarulecheckablelitespec consumer validates each opening specification metadata block against the record schema.
litespec/core/authoring#derive-a-computed-fact-instead-of-restating-itDerive a computed fact instead of restating itruleguidanceDoes each count, census, and membership list name its source or its command?
litespec/core/authoring#exclude-a-sequence-number-from-the-identifierExclude a sequence number from the identifierruleguidanceDo changed identifiers name their obligation in words alone?
litespec/core/authoring#exclude-cross-release-compatibility-workExclude cross-release compatibility workruleguidanceWould a consumer find any promise of migration, mapping, or alias here?
litespec/core/authoring#exclude-declared-content-paths-from-the-ascii-checkExclude declared content paths from the ASCII checkruleguidanceDoes the project record name every path outside the ASCII check, with documents about that content still checked?
litespec/core/authoring#exclude-generated-regions-from-prose-checksExclude generated regions from prose checksruleguidanceDoes every authoring check skip the text between generated-region fences?
litespec/core/authoring#exclude-historical-transition-materialExclude historical transition materialruleguidanceDoes any active file carry history-specific material between releases?
litespec/core/authoring#exclude-the-compound-that-names-another-conceptExclude the compound that names another conceptrulecheckablelitespec consumer reports no LANGUAGE_REJECTED_SYNONYM diagnostic inside an exempt compound.
litespec/core/authoring#follow-the-google-developer-documentation-style-guideFollow the Google developer documentation style guideruleguidanceWould a reviewer who knows developers.google.com/style accept the changed prose, apart from the additions this page states?
litespec/core/authoring#identify-actionable-conventionsIdentify actionable conventionsrulecheckablelitespec validate emits no CONVENTION_MISSING_DEFAULT or CONVENTION_MISSING_REPLACEMENT diagnostic.
litespec/core/authoring#keep-a-pinned-release-for-as-long-as-it-servesKeep a pinned release for as long as it servesruleguidanceDoes any active provision oblige a consumer to adopt a later release?
litespec/core/authoring#keep-authored-prose-ascii-safeKeep authored prose ASCII-saferulecheckablelitespec validate emits no PROSE_NON_ASCII diagnostic.
litespec/core/authoring#keep-identifiers-out-of-provision-headingsKeep identifiers out of provision headingsrulecheckablelitespec validate emits no ID_IN_HEADING diagnostic.
litespec/core/authoring#map-provisions-to-evidenceMap provisions to evidencerulecheckablelitespec validate emits no VERIFY_MISSING_ID or VERIFY_UNKNOWN_ID diagnostic.
litespec/core/authoring#mark-every-provision-checkable-or-guidanceMark every provision checkable or guidancerulecheckablelitespec validate emits no VERIFY_MARK diagnostic.
litespec/core/authoring#name-the-escape-from-every-abstractionName the escape from every abstractionrulecheckablelitespec validate emits no PAGE_MISSING_SECTION diagnostic for a command page.
litespec/core/authoring#name-the-owning-page-in-the-identifierName the owning page in the identifierrulecheckablelitespec validate emits no ID_PAGE_FILENAME or ID_DUPLICATE diagnostic.
litespec/core/authoring#name-the-tool-rather-than-the-mechanismName the tool rather than the mechanismruleguidanceDoes each procedure step name the shipped command that performs it?
litespec/core/authoring#prefer-direct-action-headingsPrefer direct action headingsconventionguidanceDoes every changed Standard or Convention heading start with a concrete action verb?
litespec/core/authoring#publish-each-release-as-a-complete-contractPublish each release as a complete contractrulecheckablelitespec validate emits no ID_UNKNOWN_REFERENCE diagnostic.
litespec/core/authoring#record-a-setting-as-referenceRecord a setting as referenceruleguidanceDoes every setting named in a procedure resolve to a configuration page row?
litespec/core/authoring#record-the-project-vocabulary-as-dataRecord the project vocabulary as datarulecheckablelitespec consumer validates the language record against the language schema.
litespec/core/authoring#record-the-reviewed-litespec-releaseRecord the reviewed LiteSpec releaserulecheckablelitespec consumer fails when reviewedLiteSpecVersion differs from the pinned release.
litespec/core/authoring#regenerate-the-provision-indexRegenerate the provision indexrulecheckablelitespec provisions --check exits zero.
litespec/core/authoring#reject-a-recorded-synonym-inside-its-scopeReject a recorded synonym inside its scoperulecheckablelitespec consumer emits no LANGUAGE_REJECTED_SYNONYM diagnostic.
litespec/core/authoring#route-the-reader-before-listing-pagesRoute the reader before listing pagesrulecheckablelitespec validate emits no INDEX_MISSING_ROUTING diagnostic.
litespec/core/authoring#run-repeatable-authoring-checksRun repeatable authoring checksrulecheckablelitespec validate, dotnet test --solution LiteSpec.slnx and git diff --check exit zero.
litespec/core/authoring#state-one-layer-per-pageState one layer per pageruleguidanceDoes mechanism detail appear only under an Underneath section?
litespec/core/authoring#use-controlled-capitalizationUse controlled capitalizationrulecheckablelitespec validate emits no PAGE_TITLE_CASE diagnostic.
litespec/core/authoring#use-one-metadata-carrierUse one metadata carrierruleguidanceIs the opening specification metadata block the only metadata on each page?
litespec/core/authoring#use-one-normative-vocabularyUse one normative vocabularyrulecheckablelitespec validate emits no STANDARD_MODAL_COUNT or STANDARD_MODAL_VOCABULARY diagnostic.
litespec/core/authoring#use-one-term-for-one-conceptUse one term for one conceptruleguidanceWould a reader meet each concept under one name only?
litespec/core/authoring#use-the-declared-identifier-grammarUse the declared identifier grammarrulecheckablelitespec validate emits no ID_UNKNOWN_REFERENCE diagnostic.
litespec/core/authoring#use-the-declared-page-contractUse the declared page contractrulecheckablelitespec validate emits no PAGE_MISSING_SECTION, PAGE_SECTION_ORDER or PAGE_UNKNOWN_SECTION diagnostic.
litespec/core/authoring#validate-current-standards-materialValidate current standards materialruleguidanceDoes the validator read the working tree and no earlier release?
litespec/core/authoring#write-atomic-standards-provisionsWrite atomic Standards provisionsrulecheckablelitespec validate emits no STANDARD_REQUIREMENT_COUNT, STANDARD_SENTENCE_COUNT or STANDARD_LABEL_INVALID diagnostic.
litespec/core/maintaining#publish-a-litespec-release-from-a-tagPublish a LiteSpec release from a tagruleguidanceDoes one new tag carry the current version across the manifest, the changelog, and the template?
litespec/core/maintaining#replace-every-citation-on-a-renameReplace every citation on a renamerulecheckablelitespec validate emits no ID_UNKNOWN_REFERENCE diagnostic.
litespec/core/maintaining#state-the-provision-lifecycleState the provision lifecycleruleguidanceIs every provision in exactly one lifecycle state, with retired identifiers cited nowhere?
litespec/core/model#apply-guidance-precedenceApply guidance precedenceruleguidanceDoes intent override a standard anywhere without an exception?
litespec/core/model#authorize-access-through-the-permission-chainAuthorize access through the permission chainrulecheckablelitespec model check reports record-shape and reference-unresolved.
litespec/core/model#cover-every-public-use-case-from-a-journeyCover every public use case from a journeyrulecheckablelitespec model check reports journey-reach.
litespec/core/model#declare-size-stacks-and-optional-typesDeclare size stacks and optional typesrulecheckablelitespec model check reports size-type-missing and record-shape.
litespec/core/model#express-module-order-as-depends-onExpress module order as depends onruleguidanceDoes any record rank modules instead of linking them?
litespec/core/model#follow-the-authority-orderFollow the authority orderruleguidanceDoes each conflict resolve toward the higher authority?
litespec/core/model#give-every-use-case-its-resultsGive every use case its resultsrulecheckablelitespec model check reports use-case-without-success and case-result-unresolved.
litespec/core/model#hold-approval-behind-draft-decisionsHold approval behind draft decisionsrulecheckablelitespec model check reports draft-gate.
litespec/core/model#keep-one-owner-and-status-on-every-recordKeep one owner and status on every recordrulecheckablelitespec model check reports owner-unknown and draft-without-decider.
litespec/core/model#name-what-every-decision-decidesName what every decision decidesrulecheckablelitespec model check reports decision-decides-nothing.
litespec/core/model#read-truth-from-code-screens-and-test-runsRead truth from code screens and test runsrulecheckablelitespec model check reports use-case-unimplemented, proves-unconfirmed, and refusal-not-thrown.
litespec/core/model#record-accepted-gaps-as-known-gapsRecord accepted gaps as known gapsrulecheckablelitespec model check reports record-shape and known-gap-expired.
litespec/core/model#render-generated-regions-from-the-modelRender generated regions from the modelconventionguidanceAre generated regions current, or is a replacement recorded?
litespec/core/model#resolve-every-page-linkResolve every page linkrulecheckablelitespec model check reports link-unresolved.
litespec/core/model#resolve-ties-by-the-later-decisionResolve ties by the later decisionruleguidanceDoes the later approved decision settle each tie?
litespec/core/model#retire-records-with-replacesRetire records with replacesrulecheckablelitespec model check reports invalid-field for replaces outside a decision and reference-unresolved for an unknown target.
litespec/core/model#state-the-common-fields-on-every-recordState the common fields on every recordrulecheckablelitespec model check reports record-shape.
litespec/core/model#write-every-record-in-its-homeWrite every record in its homerulecheckablelitespec model check reports record-shape.
litespec/core/model#write-links-on-the-record-that-pointsWrite links on the record that pointsrulecheckablelitespec model check reports reference-unresolved.
litespec/core/principles#avoid-generic-boundary-namesAvoid generic boundary namesruleguidanceDoes every changed boundary name carry the narrowest accurate business name?
litespec/core/principles#classify-record-authorityClassify record authorityrulecheckablelitespec consumer fails a record with a missing or unknown status, or a draft without decider and decideBy date.
litespec/core/principles#keep-one-authored-sourceKeep one authored sourceruleguidanceDoes every fact on the changed pages trace to one authored record?
litespec/core/principles#locate-package-versions-in-the-manifestLocate package versions in the manifestrulecheckablelitespec consumer fails a project whose stack versions do not resolve from the manifest.
litespec/core/principles#locate-record-status-in-frontmatterLocate record status in frontmatterrulecheckablelitespec consumer fails a record whose frontmatter is missing a required common field.
litespec/core/principles#name-boundary-intentName boundary intentruleguidanceDoes every changed boundary name state its business action and owner?
litespec/core/principles#prefer-direct-owned-dependenciesPrefer direct owned dependenciesconventionguidanceIs each new abstraction justified by a boundary, or recorded as an exception?
litespec/core/principles#prefer-local-code-until-reuse-is-realPrefer local code until reuse is realconventionguidanceDoes each new shared unit serve two real consumers under one accurate name?
litespec/core/principles#prove-cases-with-testsProve cases with testsruleguidanceDoes every case have a passing test that calls its use case and asserts its result?
litespec/core/principles#prove-enforceable-boundaries-mechanicallyProve enforceable boundaries mechanicallyruleguidanceDoes a reference, test, or lint rule prove each changed enforceable boundary?
litespec/core/principles#refuse-approval-behind-a-draft-decisionRefuse approval behind a draft decisionruleguidanceIs every decision behind an approved record approved itself?
litespec/core/principles#require-current-complexity-activationRequire current complexity activationruleguidanceDoes a current use case, decision, or requirement name the added complexity?
litespec/core/principles#retire-public-behavior-deliberatelyRetire public behavior deliberatelyrulecheckablelitespec consumer fails a retired use case that still names an entry point.
litespec/core/principles#separate-authority-from-implementationSeparate authority from implementationrulecheckablelitespec consumer fails a record that writes its own implementation status.
litespec/core/product#answer-every-constraintAnswer every constraintrulecheckablelitespec consumer fails a constraint without source and applicability, or a project with unanswered constraints.
litespec/core/product#build-intent-before-specification-before-codeBuild intent before specification before coderuleguidanceDid intent, research, decision, requirement, records, code, and tests land in order?
litespec/core/product#build-on-a-draft-decision-before-approvalBuild on a draft decision before approvalruleguidanceDoes the release hold approval for every decision the code builds on?
litespec/core/product#cite-requirements-from-recordsCite requirements from recordsruleguidanceDoes every record that carries a requirement name it in fulfills?
litespec/core/product#cite-sources-for-chapter-claimsCite sources for chapter claimsruleguidanceDoes each claim in the chapter cite its source?
litespec/core/product#derive-history-from-decisionsDerive history from decisionsruleguidanceDoes History list exactly the decisions that decide the page, as generated?
litespec/core/product#derive-requirement-coverage-from-the-modelDerive requirement coverage from the modelruleguidanceDoes the coverage list come from the model rather than hand-kept notes?
litespec/core/product#group-product-topics-by-areaGroup product topics by areaconventionguidanceDoes docs/product/ follow the example layout, or does an Exception record the replacement?
litespec/core/product#identify-every-requirementIdentify every requirementrulecheckablelitespec consumer fails a Requirement entry without identifier, kind, or statement, or a promise without effective-dated values.
litespec/core/product#keep-behavior-out-of-product-pagesKeep behavior out of product pagesruleguidanceDoes any product page name a state, entry point, failure code, or handler?
litespec/core/product#keep-business-intent-under-productKeep business intent under productrulecheckablelitespec consumer fails a why-layer record outside its home folder.
litespec/core/product#load-product-intent-before-commercial-workLoad product intent before commercial workruleguidanceDoes the change report list the product pages read before the change?
litespec/core/product#name-product-decisions-in-one-numbered-sequenceName product decisions in one numbered sequenceconventioncheckablelitespec consumer fails a decision file whose name does not match its identifier.
litespec/core/product#name-the-person-who-approved-a-decisionName the person who approved a decisionruleguidanceDid the named decider approve the decision, and does the record carry the date?
litespec/core/product#place-the-story-before-the-commitmentsPlace the story before the commitmentsrulecheckablelitespec consumer fails a topic whose chapter follows its commitments.
litespec/core/product#record-each-product-choice-as-a-decisionRecord each product choice as a decisionrulecheckablelitespec consumer fails a decision missing a required section or decides target.
litespec/core/product#record-research-with-read-sourcesRecord research with read sourcesrulecheckablelitespec consumer fails a Research record without question or source read date.
litespec/core/product#reject-an-unfulfilled-requirementReject an unfulfilled requirementrulecheckablelitespec model check reports no requirement-unfulfilled finding outside an open Known gap.
litespec/core/product#replace-a-decision-with-a-new-recordReplace a decision with a new recordruleguidanceDoes the new decision name the old one in replaces, with the old one retired?
litespec/core/product#review-a-topic-by-its-dateReview a topic by its daterulecheckablelitespec consumer fails a topic page whose reviewBy date has passed.
litespec/core/product#state-each-problem-and-featureState each problem and featurerulecheckablelitespec consumer fails a problem or feature missing its required fields.
litespec/core/product#state-each-topic-in-one-page-shapeState each topic in one page shaperulecheckablelitespec consumer fails a topic page missing a required section or reviewBy.
litespec/core/product#state-one-productState one productrulecheckablelitespec consumer fails a brief without one product, boundary, and audience.
litespec/core/product#trace-every-choice-to-a-decisionTrace every choice to a decisionruleguidanceDoes every Position and Refusals entry link an unretired decision, approved when the page is approved?
litespec/core/product#treat-generated-research-as-source-materialTreat generated research as source materialruleguidanceDoes every new position trace to a Research record or an approved decision?
litespec/core/release#apply-release-access-controlsApply release access controlsruleguidanceDo authentication and authorization guard every restricted release path?
litespec/core/release#identify-immutable-release-artifactsIdentify immutable release artifactsruleguidanceDoes the release record name the source commit and artifact reference?
litespec/core/release#keep-a-first-release-readiness-recordKeep a first-release readiness recordruleguidanceDoes one record hold dated rehearsals, green gates, and a rehearsal owner?
litespec/core/release#keep-generated-contracts-stableKeep generated contracts stableruleguidanceIs the contract diff free of timestamps, machine paths, and unstable order?
litespec/core/release#keep-release-records-non-authoritativeKeep release records non-authoritativeruleguidanceDoes the record link outward instead of restating behavior?
litespec/core/release#keep-unfinished-behavior-in-draftKeep unfinished behavior in draftruleguidanceIs every use case with unfinished behavior still in draft?
litespec/core/release#list-included-release-behaviorList included release behaviorruleguidanceDoes the record list every included journey, use case, and extension?
litespec/core/release#meet-release-readiness-gatesMeet release readiness gatesruleguidanceIs every included use case verified, with passing journey evidence for each journey?
litespec/core/release#provide-release-data-recoveryProvide release data recoveryruleguidanceDo schema setup, backup instructions, and a tested restore all exist?
litespec/core/release#provide-release-delivery-controlsProvide release delivery controlsruleguidanceAre CI, deployment, rollback, limits, and runbooks all current?
litespec/core/release#provide-release-operating-visibilityProvide release operating visibilityruleguidanceDo health signals and trace diagnostics ship without secrets in source control?
litespec/core/release#record-accepted-debt-as-a-known-gapRecord accepted debt as a known gapruleguidanceDoes every accepted debt live as a Known gap with owner and end date?
litespec/core/release#record-operating-readinessRecord operating readinessruleguidanceDoes the record state limits, alerts, runbooks, conditions, and omissions?
litespec/core/release#record-release-evidenceRecord release evidenceruleguidanceDoes the record hold a result for every listed evidence kind?
litespec/core/release#record-the-release-artifactRecord the release artifactruleguidanceDoes one release record name the immutable artifact?
litespec/core/release#regenerate-application-contractsRegenerate application contractsruleguidanceDo committed contracts match a fresh generation from their source?
litespec/core/release#report-verification-exactlyReport verification exactlyruleguidanceWould a reviewer learn the commands, outcomes, scope, omissions, and limits from the report?
litespec/core/release#resolve-release-blockersResolve release blockersruleguidanceIs every open decision and external claim settled or excluded in every owning record?
litespec/core/release#run-backend-release-checksRun backend release checksruleguidanceDid the release build and every required backend suite pass?
litespec/core/release#run-boundary-selected-checksRun boundary-selected checksruleguidanceDid the change run every check its changed boundaries select?
litespec/core/release#run-consistency-checksRun consistency checksrulecheckablelitespec consumer exits zero.
litespec/core/release#run-extension-checksRun extension checksruleguidanceDid each affected extension report its stated verification evidence?
litespec/core/release#run-frontend-release-checksRun frontend release checksruleguidanceDid install, lint, type checks, tests, and the production build all pass?
litespec/core/release#run-journey-checksRun journey checksruleguidanceDid the journey tests pass against the deployed boundary?
litespec/core/release#state-each-release-as-a-complete-recordState each release as a complete recordruleguidanceWould a reader judge the release from this record alone?
litespec/core/release#store-release-records-togetherStore release records togetherconventionguidanceDoes the record path follow the default or a recorded Exception?
litespec/core/release#treat-check-warnings-as-failuresTreat check warnings as failuresconventionguidanceDoes the build fail on warnings except for recorded narrow suppressions?
litespec/core/release#verify-connected-journeysVerify connected journeysruleguidanceDoes each completed journey reach one observable outcome through a deployed public boundary?
litespec/core/scope#answer-the-constraints-questionAnswer the constraints questionruleguidanceWhere does the project state which outside constraints apply?
litespec/core/scope#declare-a-consumer-that-has-no-backendDeclare a consumer that has no backendrulecheckablelitespec consumer refuses a client-only project that names a backend stack.
litespec/core/scope#keep-one-bounded-contextKeep one bounded contextruleguidanceWhich second language or deployment boundary does the design introduce?
litespec/core/scope#measure-capacity-before-expansionMeasure capacity before expansionconventionguidanceWhich load, target, and observed constraint justify the added capacity?
litespec/core/scope#record-selected-extensionsRecord selected extensionsrulecheckablelitespec consumer rejects a selection without a criterion or review date.
litespec/core/scope#record-unsupported-scope-decisionsRecord unsupported scope decisionsruleguidanceWhich decision records each architecture outside the supported boundary?
litespec/core/scope#select-a-size-a-shape-and-stacksSelect a size, a shape and stacksrulecheckablelitespec consumer refuses a shape whose backend stack count is wrong and a platform that names no frontend stack.
litespec/core/scope#select-conditional-extensions-explicitlySelect conditional extensions explicitlyruleguidanceWhich criterion justifies each selection, and which applicable extension stays unselected?
litespec/core/scope#start-with-one-api-and-databaseStart with one API and databaseconventionguidanceWhich second deployable or database does the topology add, and why?
litespec/core/stacks#apply-the-complete-stackApply the complete stackruleguidanceDoes the consumer apply every page in its stack folders and the folders above them?
litespec/core/stacks#declare-replacementsDeclare replacementsruleguidanceDoes each replacement name every provision ID it replaces?
litespec/core/stacks#keep-the-stack-visibleKeep the stack visibleconventionguidanceDo litespec.project.json and the root AGENTS.md name the selection?
litespec/core/stacks#use-manifest-version-pinsUse manifest version pinsruleguidanceDoes each resolved version match its manifest pin?
litespec/core/system#bound-a-scenario-to-120-wordsBound a scenario to 120 wordsconventioncheckablelitespec consumer fails a Scenario section longer than scenarioWordLimit, defaulting to 120 words.
litespec/core/system#compute-use-case-status-from-evidenceCompute use-case status from evidenceruleguidanceWhich use-case status did a person write by hand instead of the evidence?
litespec/core/system#connect-one-product-outcome-through-a-journeyConnect one product outcome through a journeyruleguidanceWhich journey links the use case, or which background caller replaces it?
litespec/core/system#declare-each-link-on-its-sourceDeclare each link on its sourceruleguidanceWhich link sits off its source, and which citation resolves nowhere?
litespec/core/system#declare-event-reaction-deliveryDeclare event reaction deliveryruleguidanceWhich reaction lacks exactly one classification that the implementation honors?
litespec/core/system#deliver-one-complete-use-caseDeliver one complete use caseruleguidanceWhich layer or evidence does the incomplete use case still lack?
litespec/core/system#derive-every-scenario-from-one-reference-castDerive every scenario from one reference castruleguidanceDoes one scenario-cast page exist, and does each scenario draw from it?
litespec/core/system#drive-work-from-approved-recordsDrive work from approved recordsruleguidanceWhich approved records authorized each behavior change?
litespec/core/system#grant-access-through-roles-and-permissionsGrant access through roles and permissionsruleguidanceWhich access lacks its actor, role, permission, and use-case path?
litespec/core/system#group-language-and-use-cases-by-moduleGroup language and use cases by modulerulecheckablelitespec consumer resolves each module reference to one declared module directory.
litespec/core/system#group-module-use-case-files-by-business-recordGroup module use-case files by business recordconventionguidanceDoes each use case sit under its module or one business-record subdirectory?
litespec/core/system#keep-a-scenario-informativeKeep a scenario informativeruleguidanceDoes any Scenario section contain a record identifier?
litespec/core/system#keep-decision-authority-with-accountable-peopleKeep decision authority with accountable peopleruleguidanceWhich draft decision records each question that stopped the work?
litespec/core/system#keep-operational-and-security-references-under-operationsKeep operational and security references under operationsconventionguidanceWhich operating or security prose sits outside docs/operations/?
litespec/core/system#keep-records-readable-without-toolingKeep records readable without toolingconventionguidanceWhich JSON sits outside the frontmatter block?
litespec/core/system#keep-use-cases-and-handlers-in-one-to-one-correspondenceKeep use cases and handlers in one-to-one correspondenceruleguidanceWhich handler lacks its use case, or which use case lacks its handler?
litespec/core/system#make-business-record-ownership-explicitMake business-record ownership explicitruleguidanceWhich business record lacks its state, rules, or commands on the module page?
litespec/core/system#model-every-business-record-lifecycle-with-state-recordsModel every business-record lifecycle with state recordsruleguidanceWhich business state lacks its sealed state record in page and code?
litespec/core/system#name-what-calls-a-use-caseName what calls a use caseruleguidanceWhich entry points reach the use case, or which background caller does?
litespec/core/system#resolve-authority-by-ladderResolve authority by ladderruleguidanceWhich ladder settles the conflict, and which record lacks an owner?
litespec/core/system#state-each-rule-with-its-kindState each rule with its kindruleguidanceWhich rule lacks its kind, governor, enforcement, or kept negation?
litespec/core/system#state-one-occasion-for-every-behavior-recordState one occasion for every behavior recordruleguidanceWhich behavior page lacks a Scenario section stating its concrete occasion?
litespec/core/system#update-records-with-behaviorUpdate records with behaviorruleguidanceWhich affected record did the behavior change leave behind?
litespec/core/system#use-established-technical-termsUse established technical termsconventionguidanceWhich term replaces an established technical meaning with a softer synonym?
litespec/core/system#use-ordinary-capitalization-in-proseUse ordinary capitalization in proseconventionguidanceWhich ordinary noun carries capitalization outside names and identifiers?
litespec/core/system#use-this-consumer-documentation-layoutUse this consumer documentation layoutconventionguidanceWhich directory breaks the layout without a declared exception?
litespec/core/system#write-each-record-in-its-catalog-shapeWrite each record in its catalog shaperuleguidanceWhich record breaks its catalog type, home, owner, or status?

ext#

IDProvisionKindMarkEvidence
litespec/ext/audit#add-a-correcting-recordAdd a correcting recordruleguidanceIs each correction a new record referencing the earlier one?
litespec/ext/audit#anchor-the-audit-chain-outside-its-own-storeAnchor the audit chain outside its own storeruleguidanceDoes a checkpoint the operators cannot rewrite anchor the chain head?
litespec/ext/audit#audit-reads-of-the-trailAudit reads of the trailruleguidanceDoes a completed trail read produce one audit record?
litespec/ext/audit#commit-a-success-record-with-its-business-changeCommit a success record with its business changeruleguidanceDoes a succeeded record commit in the same transaction as its change?
litespec/ext/audit#cover-the-required-audit-categoriesCover the required audit categoriesruleguidanceDoes the declared selection contain one entry for each required category?
litespec/ext/audit#declare-audit-selection-beside-the-commandDeclare audit selection beside the CommandconventionguidanceDoes each Command carry the declaration attribute or a recorded Exception?
litespec/ext/audit#declare-audit-selection-on-every-commandDeclare audit selection on every CommandruleguidanceDoes every Command declare audited status or excluded status with a reason?
litespec/ext/audit#emit-audit-records-at-the-mediation-boundaryEmit audit records at the mediation boundaryruleguidanceDoes the producer run in the mediation pipeline rather than inside handlers?
litespec/ext/audit#enforce-append-only-through-storage-privilegeEnforce append-only through storage privilegeruleguidanceDoes the writing account lack update and delete privileges on the store?
litespec/ext/audit#exclude-derived-audit-trailsExclude derived audit trailsruleguidanceIs the trail produced directly rather than derived from events, triggers, or capture?
litespec/ext/audit#exclude-indiscriminate-auditingExclude indiscriminate auditingruleguidanceDoes the selection justify each audited category rather than auditing every Command?
litespec/ext/audit#exclude-personal-data-beyond-actor-identityExclude personal data beyond actor identityruleguidanceDoes each record hold only pseudonymous actor and target identifiers?
litespec/ext/audit#exclude-secrets-and-payment-dataExclude secrets and payment dataruleguidanceIs every record free of credentials, tokens, session identifiers, keys, and payment values?
litespec/ext/audit#exclude-state-snapshotsExclude state snapshotsruleguidanceIs every record free of before and after state copies?
litespec/ext/audit#give-the-trail-a-read-pathGive the trail a read pathruleguidanceDoes a permission-gated read filter the trail by every declared filter?
litespec/ext/audit#keep-audit-infrastructure-in-one-locationKeep audit infrastructure in one locationconventionguidanceDoes the audit code use the documented path or a recorded Exception?
litespec/ext/audit#provide-tamper-evidenceProvide tamper evidenceruleguidanceDoes each record chain to its predecessor with the stated hash?
litespec/ext/audit#publish-a-copy-to-the-security-platformPublish a copy to the security platformconventionguidanceDoes a published copy leave the local store authoritative, or is there a recorded Exception?
litespec/ext/audit#publish-unsuccessful-write-failuresPublish unsuccessful write failuresruleguidanceDoes the deployment publish the write failure count of the unsuccessful path?
litespec/ext/audit#record-a-bulk-read-inside-its-own-boundaryRecord a bulk read inside its own boundaryruleguidanceDoes a query above the threshold produce a record carrying the subject count?
litespec/ext/audit#record-bulk-exportRecord bulk exportruleguidanceDoes each export produce a record naming the requested scope?
litespec/ext/audit#record-delegated-administrative-accessRecord delegated administrative accessruleguidanceDoes an action under a support grant record that the grant was used?
litespec/ext/audit#record-every-attempt-outcomeRecord every attempt outcomeruleguidanceDoes every record carry one of the three declared outcomes?
litespec/ext/audit#record-failed-audited-attemptsRecord failed audited attemptsruleguidanceDoes a permitted attempt that throws produce a failed record?
litespec/ext/audit#record-personal-data-readsRecord personal-data readsruleguidanceDoes a cross-boundary personal-data query produce a record?
litespec/ext/audit#record-refused-authorizationRecord refused authorizationruleguidanceDoes a refused authorization produce a denied record?
litespec/ext/audit#record-the-audit-adoption-decisionRecord the audit adoption decisionruleguidanceDoes the adoption decision record the required fields? Is no record approved behind its draft?
litespec/ext/audit#record-the-failure-code-on-an-unsuccessful-attemptRecord the failure code on an unsuccessful attemptruleguidanceDoes each denied or failed record carry its stable failure code?
litespec/ext/audit#record-the-operation-trace-identityRecord the operation trace identityruleguidanceDoes each record carry the trace identifier of its operation?
litespec/ext/audit#record-the-request-originRecord the request originruleguidanceDoes each request-produced record carry origin, client, and request identifier?
litespec/ext/audit#record-the-required-audit-fieldsRecord the required audit fieldsruleguidanceDoes every record carry each required field, including the tenant value?
litespec/ext/audit#reject-an-undeclared-commandReject an undeclared CommandruleguidanceDoes the build or startup fail for a Command with no declaration?
litespec/ext/audit#remove-the-identity-mapping-on-erasureRemove the identity mapping on erasureruleguidanceDoes erasure remove the identity mapping while retaining the records?
litespec/ext/audit#restrict-handler-contribution-to-determined-valuesRestrict handler contribution to determined valuesruleguidanceDoes each handler contribute only the audit values it alone determines?
litespec/ext/audit#retain-each-category-for-its-declared-periodRetain each category for its declared periodruleguidanceAre records deleted after the declared retention of their category?
litespec/ext/audit#scope-every-record-to-its-tenantScope every record to its tenantruleguidanceDoes each record carry the tenant of the acted-on resource?
litespec/ext/audit#stage-the-audit-write-before-the-business-commitStage the audit write before the business commitruleguidanceDoes the audit stage run before the business commit stage?
litespec/ext/audit#state-the-action-as-use-case-identityState the action as use-case identityruleguidanceDoes each action value name the invoked use case?
litespec/ext/audit#store-the-trail-beside-the-business-dataStore the trail beside the business dataconventionguidanceIs the trail in the business database under separated privileges or a recorded Exception?
litespec/ext/audit#use-a-closed-actor-setUse a closed actor setruleguidanceIs every actor one of the five Actor kinds, with devices and processes mapped?
litespec/ext/audit#use-a-fixed-category-vocabularyUse a fixed category vocabularyconventionguidanceDoes each category value belong to the eight-value vocabulary?
litespec/ext/audit#verify-the-integrity-chain-on-a-scheduleVerify the integrity chain on a scheduleruleguidanceDoes a scheduled job verify the chain and alert on a break?
litespec/ext/audit#version-the-audit-record-shapeVersion the audit record shaperuleguidanceDoes every record carry an explicit schema version?
litespec/ext/audit#write-an-unsuccessful-record-outside-the-failed-transactionWrite an unsuccessful record outside the failed transactionruleguidanceDoes a denied or failed record survive the rollback of its transaction?
litespec/ext/cache#avoid-unbounded-key-locksAvoid unbounded key locksruleguidanceDoes lock state stay bounded under high-cardinality keys?
litespec/ext/cache#bound-cache-refresh-workBound cache refresh workruleguidanceDoes concurrent-miss refresh stay bounded and protect the source?
litespec/ext/cache#compose-cache-keys-from-result-inputsCompose cache keys from result inputsruleguidanceDoes each key separate version, result inputs, and tenant or actor partition?
litespec/ext/cache#define-cache-invalidationDefine cache invalidationruleguidanceDoes each cached value define expiry, events, an owner, and failure behavior?
litespec/ext/cache#define-cache-outage-behaviorDefine cache outage behaviorruleguidanceDoes an outage use the source or return the documented degraded response?
litespec/ext/cache#emit-a-signal-for-each-degraded-cache-pathEmit a signal for each degraded cache pathruleguidanceDo a miss, an error, and a degraded response each increment their own metric?
litespec/ext/cache#exclude-unsafe-cache-key-materialExclude unsafe cache key materialruleguidanceIs every key free of secrets, unbounded input, and unhashed personal data?
litespec/ext/cache#keep-source-data-authoritativeKeep source data authoritativeruleguidanceIs the required business data authoritative in its source of record?
litespec/ext/cache#place-cache-access-at-an-outer-boundaryPlace cache access at an outer boundaryconventionguidanceIs cache access outside Domain, or is there a recorded Exception?
litespec/ext/cache#prefer-bounded-stalenessPrefer bounded stalenessruleguidanceDoes the expiry stay short unless a measured decision permits longer?
litespec/ext/cache#record-a-manual-cache-invalidationRecord a manual cache invalidationruleguidanceDoes a manual clear write a record naming the actor, the scope, and the reason?
litespec/ext/cache#record-measured-cache-needRecord measured cache needruleguidanceDoes the proposal record the query, load, latency, cost, target, staleness, and ownership?
litespec/ext/cache#remove-unjustified-cachesRemove unjustified cachesruleguidanceDoes a cache leave when measurements do not justify its cost?
litespec/ext/compat#assign-operation-idsAssign operation IDsruleguidanceDoes each independent-consumer operation carry a deliberate operationId?
litespec/ext/compat#assign-versioned-operation-idsAssign versioned operation IDsruleguidanceDoes a new version assign a new operation ID for each changed contract?
litespec/ext/compat#classify-breaking-contract-changesClassify breaking contract changesruleguidanceDoes the reviewer mark each removed, renamed, narrowed, retyped, or authentication change as breaking?
litespec/ext/compat#classify-compatible-additionsClassify compatible additionsruleguidanceDoes the reviewer record why each optional addition preserves existing behavior?
litespec/ext/compat#classify-independent-consumer-changesClassify independent-consumer changesruleguidanceDoes the reviewer classify each independent-consumer contract change?
litespec/ext/compat#diff-release-contractsDiff release contractsruleguidanceDo the local run and continuous integration compare against the selected baseline?
litespec/ext/compat#exercise-generated-consumersExercise generated consumersruleguidanceDoes each first-party client compile and exercise the changed contract?
litespec/ext/compat#gate-new-error-outcomesGate new error outcomesruleguidanceDo existing consumers safely handle each added unknown code?
litespec/ext/compat#keep-baseline-references-immutableKeep baseline references immutableconventionguidanceAre baseline references immutable, or is there a recorded Exception?
litespec/ext/compat#keep-problem-details-codes-stableKeep Problem Details codes stableconventionguidanceDo Problem Details codes stay stable across compatible versions?
litespec/ext/compat#preserve-stable-error-codesPreserve stable error codesruleguidanceDoes the reviewer classify each removed or reassigned stable code as breaking?
litespec/ext/compat#publish-deprecation-contextPublish deprecation contextruleguidanceDoes the consumer CHANGELOG.md name each operation scheduled for removal?
litespec/ext/compat#record-deprecation-conditionsRecord deprecation conditionsruleguidanceDoes the deprecation decision record the sunset date, replacement, and ownership?
litespec/ext/compat#record-version-retirementRecord version retirementruleguidanceDoes the versioning decision name its consumer owners, deadline, removal condition, and ownership?
litespec/ext/compat#reject-unapproved-breaking-diffsReject unapproved breaking diffsruleguidanceDoes a breaking diff fail without a new version or an approved decision?
litespec/ext/compat#resolve-uncertain-classifications-safelyResolve uncertain classifications safelyruleguidanceDoes the reviewer treat each unclear change as breaking with consumer review?
litespec/ext/compat#retain-compatible-operation-idsRetain compatible operation IDsruleguidanceDoes each compatible change retain the existing operationId?
litespec/ext/compat#retain-release-baselinesRetain release baselinesruleguidanceDoes each release retain its OpenAPI document as an immutable baseline?
litespec/ext/compat#retain-supported-versionsRetain supported versionsruleguidanceDoes the previous version stay available through its support window?
litespec/ext/compat#review-exhaustive-consumer-changesReview exhaustive consumer changesruleguidanceDo added enum values and discriminator cases receive consumer review?
litespec/ext/compat#signal-planned-public-removalSignal planned public removalruleguidanceDoes each operation scheduled for removal expose its deprecation signal?
litespec/ext/compat#store-current-openapi-sourceStore current OpenAPI sourceconventionguidanceIs the generated OpenAPI at the documented path or a recorded Exception?
litespec/ext/compat#treat-errors-as-contractsTreat errors as contractsruleguidanceDoes the owner treat type, code, field codes, and statuses as versioned contract elements?
litespec/ext/compat#use-one-diff-toolUse one diff toolconventionguidanceDo the local run and continuous integration invoke the same diff tool?
litespec/ext/compat#version-breaking-contractsVersion breaking contractsruleguidanceDoes each breaking contract use a new route or media-type version?
litespec/ext/concurrency#apply-http-version-preconditionsApply HTTP version preconditionsrulecheckableConcurrencyVersionTests require and validate a strong persistence-derived ETag.
litespec/ext/concurrency#bound-expired-record-cleanupBound expired-record cleanuprulecheckableIdempotencyRetentionTests show bounded deletion of expired idempotency records.
litespec/ext/concurrency#canonicalize-request-fingerprintsCanonicalize request fingerprintsrulecheckableIdempotencyKeyTests assert equivalent mapped requests produce one fingerprint without credentials or client key.
litespec/ext/concurrency#compare-expected-aggregate-versionsCompare expected aggregate versionsrulecheckableConcurrencyVersionTests race conflicting aggregate writes with expected versions.
litespec/ext/concurrency#declare-applicable-headersDeclare applicable headersconventioncheckableConcurrencyTests asserts generated OpenAPI declares the header for every applicable operation.
litespec/ext/concurrency#declare-replayed-transport-outcomesDeclare replayed transport outcomesrulecheckableIdempotencyOutcomeTests match replayed statuses and headers against the declared list.
litespec/ext/concurrency#define-concurrent-retry-behaviorDefine concurrent retry behaviorrulecheckableIdempotencyReplayTests prove the documented wait, in-progress, or conflict behavior.
litespec/ext/concurrency#delay-irreversible-provider-callsDelay irreversible provider callsruleguidanceDoes every irreversible provider call run only after its business transaction commits?
litespec/ext/concurrency#discard-failed-replay-stateDiscard failed replay staterulecheckableIdempotencyReplayTests leave no business change or completed replay state.
litespec/ext/concurrency#document-write-conflict-behaviorDocument write conflict behaviorruleguidanceDoes the use case name conflicts, invalid state, winner behavior, and caller response?
litespec/ext/concurrency#enforce-key-uniquenessEnforce key uniquenessrulecheckableIdempotencyKeyTests assert concurrent inserts prove the tenant-actor-operation-key uniqueness constraint.
litespec/ext/concurrency#exclude-unsafe-replay-outcomesExclude unsafe replay outcomesrulecheckableIdempotencyOutcomeTests exclude authentication, transient failures, cookies, hop-by-hop headers, tokens, and secrets.
litespec/ext/concurrency#hide-provider-version-valuesHide provider version valuesrulecheckableConcurrencyVersionTests assert public transport models expose no provider-specific version field.
litespec/ext/concurrency#keep-idempotency-persistence-in-infrastructureKeep idempotency persistence in InfrastructureconventioncheckableConcurrencyTests assert idempotency persistence and transaction handling live in Infrastructure.
litespec/ext/concurrency#limit-version-checksLimit version checksrulecheckableConcurrencyVersionTests link every version check to a documented conflicting-write case.
litespec/ext/concurrency#map-failed-expected-versionsMap failed expected versionsrulecheckableConcurrencyVersionTests assert a failed expected version returns 409 Problem Details with its stable code.
litespec/ext/concurrency#map-replay-responses-at-the-api-boundaryMap replay responses at the API boundaryconventioncheckableConcurrencyTests assert replay response mapping lives at the API boundary.
litespec/ext/concurrency#protect-fingerprint-source-dataProtect fingerprint source dataruleguidanceIs sensitive fingerprint source data hashed wherever support needs no original content?
litespec/ext/concurrency#reject-conflicting-key-reuseReject conflicting key reuserulecheckableIdempotencyKeyTests assert reused keys with changed input return the documented rejection.
litespec/ext/concurrency#reject-silent-overwritesReject silent overwritesrulecheckableConcurrencyVersionTests assert conflicting accepted writes preserve the winner without silent replacement.
litespec/ext/concurrency#reload-concurrent-winnersReload concurrent winnersrulecheckableIdempotencyReplayTests reload and replay the matching winner record.
litespec/ext/concurrency#replay-completed-resultsReplay completed resultsrulecheckableIdempotencyReplayTests return the original accepted status and body.
litespec/ext/concurrency#restrict-replay-dataRestrict replay dataruleguidanceDoes each stored replay field serve the accepted result callers reproduce?
litespec/ext/concurrency#retain-safe-retry-keysRetain safe retry keysrulecheckableIdempotencyRetentionTests reject expiration before the documented safe retry time.
litespec/ext/concurrency#return-precondition-outcomesReturn precondition outcomesrulecheckableConcurrencyVersionTests return 428 for a missing If-Match and 409 for a stale version.
litespec/ext/concurrency#route-required-external-effects-durablyRoute required external effects durablyruleguidanceDoes each required effect use the outbox or a documented provider idempotency contract?
litespec/ext/concurrency#scope-client-keysScope client keysrulecheckableIdempotencyKeyTests assert keys from different tenants, actors, or operations do not replay each other.
litespec/ext/concurrency#set-key-retentionSet key retentionruleguidanceDoes the Limit record cover the caller retry window and the business risk?
litespec/ext/concurrency#store-idempotency-state-atomicallyStore idempotency state atomicallyrulecheckableIdempotencyKeyTests commit fingerprint, state, response, and expiry with the accepted business change.
litespec/ext/concurrency#use-the-standard-idempotency-headerUse the standard idempotency headerconventioncheckableConcurrencyTests assert applicable operations accept Idempotency-Key or record an Exception.
litespec/ext/containers#apply-oci-release-labelsApply OCI release labelsrulecheckableContainersMetadataTests assert the four required OCI labels on built images.
litespec/ext/containers#apply-schema-work-before-trafficApply schema work before trafficrulecheckableContainersSchemaTests place the reviewed schema job before the traffic shift.
litespec/ext/containers#build-from-the-workspace-rootBuild from the workspace rootconventioncheckableContainersTests assert image builds access declared shared inputs from repository-root context.
litespec/ext/containers#build-release-images-in-stagesBuild release images in stagesrulecheckableContainersImageTests assert multi-stage builds and digest-pinned release bases.
litespec/ext/containers#copy-only-runtime-filesCopy only runtime filesrulecheckableContainersImageTests match the image file listing against the declared runtime manifest.
litespec/ext/containers#declare-writable-paths-and-limitsDeclare writable paths and limitsrulecheckableContainersSecurityTests match the manifest against declared writable paths and Limit records.
litespec/ext/containers#exclude-build-material-from-runtime-imagesExclude build material from runtime imagesrulecheckableContainersImageTests find no build-only files or local configuration in runtime images.
litespec/ext/containers#exclude-build-timestamps-from-contractsExclude build timestamps from contractsrulecheckableContainersMetadataTests assert the generated-contract diff contains no build timestamp.
litespec/ext/containers#exclude-environment-configuration-from-imagesExclude environment configuration from imagesrulecheckableContainersConfigTests find no environment-specific configuration in release images.
litespec/ext/containers#exclude-insecure-frontend-secret-carriersExclude insecure frontend secret carriersrulecheckableContainersConfigTests reject ARG, copied environment files, and secret-bearing layers.
litespec/ext/containers#keep-mutable-data-externalKeep mutable data externalruleguidanceDoes the design keep every piece of mutable data outside the container filesystem?
litespec/ext/containers#keep-schema-work-out-of-startupKeep schema work out of startuprulecheckableContainersSchemaTests observe no production schema mutation from replica startup.
litespec/ext/containers#limit-container-privilegesLimit container privilegesrulecheckableContainersSecurityTests assert read-only filesystem and dropped capabilities in the deployment manifest.
litespec/ext/containers#place-dockerfiles-beside-deployablesPlace Dockerfiles beside deployablesconventioncheckableContainersTests assert a colocated Dockerfile per deployable or a recorded Exception.
litespec/ext/containers#record-image-digestsRecord image digestsrulecheckableContainersMetadataTests identify the deployed artifact by immutable digest in the release record.
litespec/ext/containers#retain-rollback-materialRetain rollback materialrulecheckableContainersRollbackTests resolve the Runbook record and its previous image digest.
litespec/ext/containers#run-images-as-non-rootRun images as non-rootrulecheckableContainersImageTests assert the declared non-root runtime user.
litespec/ext/containers#run-the-application-as-pid-1Run the application as PID 1rulecheckableContainersProcessTests confirm the application receives the container stop signal.
litespec/ext/containers#separate-frontend-configuration-classesSeparate frontend configuration classesruleguidanceDoes the frontend build keep public configuration apart from server-only secrets?
litespec/ext/containers#set-sufficient-shutdown-timeSet sufficient shutdown timerulecheckableContainersProcessTests assert in-flight work stops within the declared grace period.
litespec/ext/containers#supply-runtime-configuration-externallySupply runtime configuration externallyrulecheckableContainersConfigTests match deployment manifests against runtime values declared outside the image.
litespec/ext/containers#test-released-trafficTest released trafficrulecheckableContainersTrafficTests pass after new-version traffic shift.
litespec/ext/containers#use-protected-frontend-secret-deliveryUse protected frontend secret deliveryruleguidanceDoes the frontend build deliver every secret through mounts or runtime injection?
litespec/ext/containers#wait-for-replica-readinessWait for replica readinessrulecheckableContainersTrafficTests assert new replicas reach readiness before traffic shifts.
litespec/ext/containers#write-runtime-logs-to-streamsWrite runtime logs to streamsrulecheckableContainersProcessTests assert container logs appear on standard output or standard error.
litespec/ext/delegation#ask-only-unanswered-questionsAsk only unanswered questionsruleguidanceDoes the worker ask only questions its brief leaves unanswered?
litespec/ext/delegation#restrict-a-worker-to-its-pathsRestrict a worker to its pathsrulecheckablegit diff --name-only lists only the brief's named paths. The worker commits nothing.
litespec/ext/delegation#verify-before-accepting-worker-outputVerify before accepting worker outputruleguidanceWhich verification run does the delegating agent watch pass before accepting the output?
litespec/ext/delegation#write-a-brief-before-delegatingWrite a brief before delegatingruleguidanceDoes each brief state goal, context, sources, and output?
litespec/ext/integrations#bind-client-configurationBind client configurationrulecheckableExternalClientTests reject missing or invalid external client configuration.
litespec/ext/integrations#bound-transient-retriesBound transient retriesrulecheckableExternalRetryTests verify bounded jittered retry for transient failures.
litespec/ext/integrations#cover-provider-failure-modesCover provider failure modesrulecheckableExternalTestTests suite covers every declared failure mode.
litespec/ext/integrations#define-business-action-portsDefine business-action portsruleguidanceDoes each Application port name a business action without naming its provider?
litespec/ext/integrations#exclude-provider-internalsExclude provider internalsrulecheckableExternalFailureTests expose no provider body, credential, header, type, or account identifier.
litespec/ext/integrations#group-provider-codeGroup provider codeconventionguidanceDoes each provider folder hold its code or record an Exception?
litespec/ext/integrations#isolate-provider-implementationsIsolate provider implementationsrulecheckableExternalPortTests assert the Application assembly references no provider SDK or transport type.
litespec/ext/integrations#keep-ports-near-use-casesKeep ports near use casesconventionguidanceDoes each business-action port stay with its owning Application use case?
litespec/ext/integrations#keep-provider-components-togetherKeep provider components togetherconventionguidanceDoes each provider folder hold its options, client, models, mappings, and registration?
litespec/ext/integrations#process-duplicate-messages-safelyProcess duplicate messages safelyrulecheckableExternalInboundTests leave one accepted external effect.
litespec/ext/integrations#protect-non-idempotent-callsProtect non-idempotent callsrulecheckableExternalRetryTests show no retry without documented provider protection.
litespec/ext/integrations#reject-formula-leading-import-valuesReject formula-leading import valuesrulecheckableExternalInboundTests reject or neutralize formula-leading import values.
litespec/ext/integrations#reject-per-request-http-clientsReject per-request HTTP clientsrulecheckableExternalClientTests report no per-request HTTP client construction.
litespec/ext/integrations#simulate-integration-boundariesSimulate integration boundariesrulecheckableExternalTestTests run each provider contract against a controllable local endpoint.
litespec/ext/integrations#translate-provider-failure-outcomesTranslate provider failure outcomesrulecheckableExternalFailureTests assert provider failures map to project-owned outcomes and stable diagnostics.
litespec/ext/integrations#use-managed-http-clientsUse managed HTTP clientsrulecheckableExternalClientTests assert HTTP registration uses the owned factory and declared discovery path.
litespec/ext/integrations#verify-inbound-provider-messagesVerify inbound provider messagesrulecheckableExternalInboundTests reject invalid signatures, timestamps, content, size, schema, and identities.
litespec/ext/jobs#audit-manual-replayAudit manual replayruleguidanceDoes manual replay create a new audited attempt under the same identity?
litespec/ext/jobs#bound-job-executionBound job executionruleguidanceDoes each job honor cancellation and duration bounds and stop during shutdown?
litespec/ext/jobs#bound-job-retriesBound job retriesruleguidanceAre attempts bounded with cancellation-aware backoff and a poison state?
litespec/ext/jobs#define-business-local-clock-behaviorDefine business-local clock behaviorruleguidanceDoes each local schedule name its zone and transition behavior?
litespec/ext/jobs#define-misfire-recoveryDefine misfire recoveryruleguidanceDoes the specification define skip or replay behavior for missed occurrences?
litespec/ext/jobs#derive-stable-occurrence-identityDerive stable occurrence identityruleguidanceAre occurrence identities stable per schedule and instant, with declared retention?
litespec/ext/jobs#dispatch-application-behaviorDispatch Application behaviorruleguidanceDoes each job dispatch an Application Command or approved port?
litespec/ext/jobs#exclude-direct-storage-and-http-executionExclude direct storage and HTTP executionruleguidanceIs job source free of direct storage mutation and WebApi calls?
litespec/ext/jobs#exclude-machine-local-timeExclude machine-local timeruleguidanceIs production job code free of machine-local time reads?
litespec/ext/jobs#generate-monotonic-fencing-valuesGenerate monotonic fencing valuesruleguidanceAre fencing values monotonic per occurrence and checked on completion?
litespec/ext/jobs#persist-occurrence-recovery-pointsPersist occurrence recovery pointsruleguidanceDoes the store persist last scheduled, started, and completed times?
litespec/ext/jobs#persist-occurrence-statePersist occurrence stateruleguidanceDoes the store persist scheduled, processing, completed, and dead-letter state?
litespec/ext/jobs#place-handlers-with-owned-behaviorPlace handlers with owned behaviorconventionguidanceDoes each handler sit with its behavior's module or record an Exception?
litespec/ext/jobs#prefer-utc-schedulesPrefer UTC schedulesruleguidanceIs each schedule UTC or a documented business-local deviation?
litespec/ext/jobs#prevent-duplicate-completionPrevent duplicate completionruleguidanceDoes the lease prevent two replicas from completing one occurrence?
litespec/ext/jobs#provide-operational-recovery-proceduresProvide operational recovery proceduresruleguidanceDo Runbook records cover inspection, manual replay, and disable?
litespec/ext/jobs#record-schedule-behaviorRecord schedule behaviorruleguidanceDoes each schedule record name every required field, its owner, and its status?
litespec/ext/jobs#renew-only-owned-leasesRenew only owned leasesruleguidanceDoes a replica stop when its lease renewal fails?
litespec/ext/jobs#restrict-completion-by-fencing-valueRestrict completion by fencing valueruleguidanceIs completion refused once the fencing value is stale?
litespec/ext/jobs#run-jobs-in-workerRun jobs in WorkerruleguidanceDoes every scheduled job run in Worker, outside WebApi request handling?
litespec/ext/jobs#scope-command-idempotency-by-occurrenceScope command idempotency by occurrenceruleguidanceDo retries of one occurrence share its idempotency scope?
litespec/ext/jobs#scope-occurrences-and-leases-by-tenantScope occurrences and leases by tenantruleguidanceDo occurrences and leases carry tenant scope where tenants are isolated?
litespec/ext/jobs#separate-schedule-definitionsSeparate schedule definitionsconventionguidanceAre schedule definitions separate from Command behavior or is an Exception recorded?
litespec/ext/jobs#store-execution-leasesStore execution leasesruleguidanceDoes the store record lease owner, expiry, and fencing value per occurrence?
litespec/ext/jobs#test-time-transitionsTest time transitionsruleguidanceDo tests inject the clock and cover representative transitions?
litespec/ext/jobs#tolerate-duplicate-executionTolerate duplicate executionruleguidanceDo the job Command and side effect stay correct when a lease or process failure replays them?
litespec/ext/jobs#treat-unavailable-schedule-stores-as-outagesTreat unavailable schedule stores as outagesruleguidanceDoes an unavailable store get backed-off, rate-limited logging?
litespec/ext/jobs#use-execution-scopesUse execution scopesconventionguidanceDoes each occurrence resolve scoped dependencies in one disposed scope?
litespec/ext/lifecycle#align-backup-deletion-behaviorAlign backup deletion behaviorruleguidanceDo backups and replicas follow the documented deletion guarantee?
litespec/ext/lifecycle#authorize-and-audit-lifecycle-changesAuthorize and audit lifecycle changesruleguidanceDoes each operation apply its authorization and record its audit?
litespec/ext/lifecycle#authorize-lifecycle-access-pathsAuthorize lifecycle access pathsruleguidanceDo administrative and restore queries use named authorized paths?
litespec/ext/lifecycle#bound-purge-and-archive-workBound purge and archive workruleguidanceIs purge and archive work resumable, bounded, and observable?
litespec/ext/lifecycle#default-to-hard-deleteDefault to hard deleteruleguidanceIs deletion hard wherever no retention or restore requirement applies?
litespec/ext/lifecycle#define-post-deletion-referencesDefine post-deletion referencesruleguidanceDoes the specification state which post-deletion references, exports, and uniqueness rules remain?
litespec/ext/lifecycle#define-relational-lifecycle-behaviorDefine relational lifecycle behaviorruleguidanceDoes the relational implementation define columns, filters, indexes, and migrations?
litespec/ext/lifecycle#define-storage-lifecycle-behaviorDefine storage lifecycle behaviorruleguidanceDoes the document implementation define state, queries, indexes, and purge behavior?
litespec/ext/lifecycle#exclude-inactive-records-from-normal-readsExclude inactive records from normal readsruleguidanceDo normal queries exclude deleted and archived records?
litespec/ext/lifecycle#exclude-persistence-only-lifecycle-behaviorExclude persistence-only lifecycle behaviorruleguidanceDoes storage behavior alone implement any lifecycle rule?
litespec/ext/lifecycle#keep-archive-records-module-ownedKeep archive records module-ownedconventionguidanceDo archive records stay in the owning module or record an Exception?
litespec/ext/lifecycle#model-lifecycle-operations-in-domainModel lifecycle operations in DomainruleguidanceDoes the aggregate expose each applicable lifecycle operation?
litespec/ext/lifecycle#model-retained-lifecycle-statesModel retained lifecycle statesruleguidanceDoes each retained record have a business reason and explicit transition?
litespec/ext/lifecycle#name-soft-delete-timestampsName soft-delete timestampsconventionguidanceDo soft-delete timestamps use the default or record an Exception?
litespec/ext/lifecycle#preserve-legal-hold-dataPreserve legal-hold dataruleguidanceDoes retention work record progress and preserve held data?
litespec/ext/lifecycle#record-lifecycle-scopeRecord lifecycle scoperuleguidanceDoes each lifecycle record name every required field, its owner, and its status?
litespec/ext/lifecycle#record-the-release-of-a-legal-holdRecord the release of a legal holdruleguidanceDoes each legal-hold release record actor, data, reason, and resumed retention?
litespec/ext/lifecycle#reject-hidden-lifecycle-flagsReject hidden lifecycle flagsruleguidanceIs lifecycle behavior more than a hidden boolean?
litespec/ext/lifecycle#separate-query-shaped-historySeparate query-shaped historyconventionguidanceIs query-shaped history a read model or is an Exception recorded?
litespec/ext/lifecycle#test-provider-lifecycle-pathsTest provider lifecycle pathsruleguidanceDo tests cover normal and lifecycle query paths?
litespec/ext/locale#avoid-catalog-only-locale-claimsAvoid catalog-only locale claimsruleguidanceIs supported-locale evidence the decision rather than catalog files?
litespec/ext/locale#avoid-duplicate-localized-urlsAvoid duplicate localized URLsruleguidanceIs there one indexable URL per localized content item?
litespec/ext/locale#complete-or-fall-back-catalog-valuesComplete or fall back catalog valuesruleguidanceDoes each locale resolve required keys or use its declared fallback?
litespec/ext/locale#define-one-locale-route-shapeDefine one locale route shaperuleguidanceDoes the application define and use one locale route shape?
litespec/ext/locale#follow-the-validation-message-grammarFollow the validation message grammarruleguidanceDoes each validation message state label, fault, and accepted input?
litespec/ext/locale#format-values-with-active-localeFormat values with active localeruleguidanceAre dates, numbers, currency, plurals, lists, and relative time localized?
litespec/ext/locale#handle-unavailable-locale-segmentsHandle unavailable locale segmentsruleguidanceDo unsupported or missing locale segments follow product policy?
litespec/ext/locale#keep-locale-selection-explicitKeep locale selection explicitconventionguidanceIs selection in the URL or a documented session preference?
litespec/ext/locale#keep-stable-error-codes-locale-neutralKeep stable error codes locale-neutralruleguidanceIs each stable error code identical across locales?
litespec/ext/locale#localize-public-presentation-contentLocalize public presentation contentruleguidanceDo metadata, labels, validation, and safe errors follow the active locale?
litespec/ext/locale#name-messages-by-meaningName messages by meaningruleguidanceDo catalog keys cite Term records instead of source sentences?
litespec/ext/locale#preserve-locale-neutral-business-dataPreserve locale-neutral business dataruleguidanceDo Domain values and API contracts stay locale-neutral?
litespec/ext/locale#record-supported-locale-behaviorRecord supported locale behaviorruleguidanceDoes the decision list locales, default, fallback, selection, owner, and status?
litespec/ext/locale#resolve-every-shown-identifierResolve every shown identifierruleguidanceDoes each shown code render its Term label rather than the raw code?
litespec/ext/locale#split-catalogs-by-module-when-neededSplit catalogs by module when neededconventionguidanceIs each module split justified by size or is an Exception recorded?
litespec/ext/locale#store-user-facing-copy-in-catalogsStore user-facing copy in catalogsruleguidanceIs user-facing copy stored in locale catalogs?
litespec/ext/locale#use-bcp-47-identifiersUse BCP 47 identifiersconventionguidanceAre locale identifiers BCP 47 or is an Exception recorded?
litespec/ext/locale#use-one-catalog-rootUse one catalog rootconventionguidanceDo catalogs sit under one owned root or record an Exception?
litespec/ext/mcp#confirm-every-writing-toolConfirm every writing toolruleguidanceDoes every writing tool refuse until the person confirms?
litespec/ext/mcp#exclude-secrets-and-personal-dataExclude secrets and personal dataruleguidanceAre descriptions and logs free of secrets and personal data?
litespec/ext/mcp#pass-server-instructions-at-initializePass server instructions at initializeruleguidanceDoes the server pass a non-empty instructions value at initialize?
litespec/ext/mcp#scope-each-tool-to-named-use-casesScope each tool to named use casesruleguidanceDoes each tool name the use cases and permissions it reaches?
litespec/ext/mcp#state-the-distribution-and-update-pathState the distribution and update pathruleguidanceDoes the documentation state install and update steps?
litespec/ext/mcp#state-the-refusing-side-on-each-refusalState the refusing side on each refusalconventionguidanceDo refusals carry the three prefixes or record an Exception?
litespec/ext/mcp#write-one-tool-description-for-one-decisionWrite one tool description for one decisionruleguidanceDoes {path}, the declared tools directory, show imperative titles and stated side effects?
litespec/ext/outbox#accept-repeated-deliveryAccept repeated deliveryruleguidanceDoes each consumer handle the same message twice?
litespec/ext/outbox#audit-outbox-replayAudit outbox replayruleguidanceDoes each replay record actor, reason, time, and prior failure?
litespec/ext/outbox#avoid-automatic-durable-bus-adoptionAvoid automatic durable-bus adoptionconventionguidanceIs any durable package pinned with transaction evidence or avoided?
litespec/ext/outbox#await-target-acceptanceAwait target acceptanceruleguidanceDoes the Worker withhold completion until the target accepts?
litespec/ext/outbox#back-off-unavailable-store-pollingBack off unavailable-store pollingruleguidanceDoes polling back off with rate-limited logging during outages?
litespec/ext/outbox#bound-delivery-retriesBound delivery retriesruleguidanceAre retries bounded with exponential backoff and jitter?
litespec/ext/outbox#classify-message-kindsClassify message kindsruleguidanceDoes each record name its kind and cite its Event record?
litespec/ext/outbox#classify-permanent-delivery-failureClassify permanent delivery failureruleguidanceDo permanent failures dead-letter with safe replay evidence?
litespec/ext/outbox#define-claim-ownershipDefine claim ownershipruleguidanceDoes each claim use the jobs lease definition in a short transaction?
litespec/ext/outbox#deploy-readers-before-writersDeploy readers before writersruleguidanceDo releases deploy compatible readers before additive writers?
litespec/ext/outbox#dispatch-claimed-records-in-workerDispatch claimed records in WorkerruleguidanceDoes the Worker claim bounded batches and record outcomes?
litespec/ext/outbox#dispatch-journey-step-commands-in-a-new-scopeDispatch journey-step commands in a new scopeconventionguidanceAre journey-step commands dispatched in a fresh Worker scope?
litespec/ext/outbox#distinguish-dependency-outageDistinguish dependency outageruleguidanceIs store outage distinct from claimed-message failure?
litespec/ext/outbox#exclude-manually-repeatable-reactionsExclude manually repeatable reactionsruleguidanceIs the outbox free of manually repeatable best-effort reactions?
litespec/ext/outbox#exclude-request-transaction-dispatchExclude request-transaction dispatchruleguidanceAre request paths free of durable message dispatch?
litespec/ext/outbox#gate-dispatch-on-readinessGate dispatch on readinessruleguidanceDoes readiness gate dispatch and stop dead-store polling?
litespec/ext/outbox#group-outbox-infrastructureGroup outbox infrastructureconventionguidanceIs outbox infrastructure grouped or is an Exception recorded?
litespec/ext/outbox#identify-repeated-deliveryIdentify repeated deliveryruleguidanceDoes each consumer suppress repeats by message ID or business key?
litespec/ext/outbox#isolate-the-worker-hostIsolate the Worker hostconventionguidanceIs the Worker host separate or is an Exception recorded?
litespec/ext/outbox#keep-provider-mapping-with-integrationKeep provider mapping with integrationconventionguidanceDoes provider mapping stay with its integration or record an Exception?
litespec/ext/outbox#model-outbox-lifecycle-statesModel outbox lifecycle statesruleguidanceAre lifecycle states sealed records with documented transitions?
litespec/ext/outbox#plan-undispatched-rollback-recordsPlan undispatched rollback recordsruleguidanceDoes the rollback Runbook cover undispatched new-writer records?
litespec/ext/outbox#preserve-message-identity-during-retryPreserve message identity during retryruleguidanceIs message ID stable across retry and replay?
litespec/ext/outbox#protect-active-worker-compatibilityProtect active Worker compatibilityruleguidanceCan every active Worker read new message shapes?
litespec/ext/outbox#publish-backlog-indicatorsPublish backlog indicatorsruleguidanceDoes the deployment publish pending, failed, age, attempts, duration, and rate?
litespec/ext/outbox#publish-best-effort-reactions-after-commitPublish best-effort reactions after commitruleguidanceDo excluded reactions publish after commit without staging records?
litespec/ext/outbox#record-durable-delivery-behaviorRecord durable delivery behaviorruleguidanceDoes each delivery specification record guarantee, boundary, retry, owner, and status?
litespec/ext/outbox#reject-independent-outbox-commitsReject independent outbox commitsruleguidanceIs writer source free of independent connections and commits?
litespec/ext/outbox#release-claim-transactions-before-callsRelease claim transactions before callsruleguidanceAre claim transactions released before network calls?
litespec/ext/outbox#requeue-expired-claimsRequeue expired claimsruleguidanceDo expired claims return to eligible work?
litespec/ext/outbox#restrict-completion-to-current-lease-ownersRestrict completion to current lease ownersruleguidanceDoes only the current lease owner update records?
litespec/ext/outbox#restrict-message-retry-to-claimed-recordsRestrict message retry to claimed recordsruleguidanceDoes the Worker limit retries to claimed records?
litespec/ext/outbox#serialize-durable-messagesSerialize durable messagesruleguidanceIs each pending message serialized into an outbox record?
litespec/ext/outbox#set-delivery-alertsSet delivery alertsruleguidanceAre alert thresholds Limit records derived from the delivery target?
litespec/ext/outbox#stage-messages-with-business-workStage messages with business workruleguidanceAre messages staged in the same session as business changes?
litespec/ext/outbox#store-failure-and-completion-evidenceStore failure and completion evidenceruleguidanceDoes each record retain its error summary and completion time?
litespec/ext/outbox#store-required-message-fieldsStore required message fieldsruleguidanceDoes each record hold identity, kind, type, version, time, payload, and state?
litespec/ext/outbox#support-coexisting-message-producersSupport coexisting message producersruleguidanceDoes the dispatcher read every coexisting producer shape?
litespec/ext/outbox#version-message-typesVersion message typesruleguidanceDoes each message carry a stable type name and schema version?
litespec/ext/realtime#authenticate-and-authorize-subscriptionsAuthenticate and authorize subscriptionsruleguidanceDo anonymous, unrelated, owner, and tenant-scoped connections meet the authorization rule?
litespec/ext/realtime#bound-realtime-resourcesBound realtime resourcesruleguidanceDoes each of the four bounds live as a Limit record with its value?
litespec/ext/realtime#place-realtime-code-at-outer-boundariesPlace realtime code at outer boundariesconventionguidanceDoes realtime transport code sit at the documented boundaries or a recorded Exception?
litespec/ext/realtime#reconnect-and-refresh-authoritative-stateReconnect and refresh authoritative stateruleguidanceDoes the client reconnect with bounded backoff and refresh authoritative state?
litespec/ext/realtime#record-realtime-needRecord realtime needruleguidanceDoes the use-case page record polling, cost, target latency, connections, and recovery?
litespec/ext/realtime#record-transport-supportRecord transport supportruleguidanceDoes the use-case page record the transport and hosting support?
litespec/ext/realtime#reject-cosmetic-realtime-adoptionReject cosmetic realtime adoptionruleguidanceDoes the realtime decision cite a measurable update requirement?
litespec/ext/realtime#reject-unbounded-slow-client-bufferingReject unbounded slow-client bufferingruleguidanceIs slow-client buffering bounded with controlled backpressure?
litespec/ext/realtime#revalidate-long-lived-accessRevalidate long-lived accessruleguidanceDoes an expired session or token lose access?
litespec/ext/realtime#subscribe-through-narrow-functionsSubscribe through narrow functionsconventionguidanceDo features subscribe through operation-specific functions or a recorded Exception?
litespec/ext/realtime#tolerate-notification-ordering-differencesTolerate notification ordering differencesruleguidanceDo duplicate and reordered notifications leave client state correct?
litespec/ext/realtime#use-server-sent-events-for-notificationsUse server-sent events for notificationsruleguidanceDoes each one-way notification use the server-sent events boundary?
litespec/ext/realtime#use-signalr-for-interactive-messagingUse SignalR for interactive messagingruleguidanceDoes each bidirectional use case use SignalR capabilities?
litespec/ext/report#apply-item-read-authorizationApply item-read authorizationruleguidanceDoes each report and export enforce the item-read rules?
litespec/ext/report#avoid-speculative-reporting-systemsAvoid speculative reporting systemsruleguidanceDoes reporting serve an accepted current query or export?
litespec/ext/report#define-export-encoding-and-columnsDefine export encoding and columnsruleguidanceDoes each export state its encoding and stable columns?
litespec/ext/report#define-report-limitsDefine report limitsruleguidanceDoes each report bound live as a Limit record?
litespec/ext/report#escape-formula-leading-export-valuesEscape formula-leading export valuesruleguidanceAre formula-leading export values escaped except for reviewed formula fields?
litespec/ext/report#keep-raw-sql-in-infrastructureKeep raw SQL in InfrastructureruleguidanceDo raw report SQL and connection handling live in Infrastructure?
litespec/ext/report#keep-report-definitions-in-applicationKeep report definitions in ApplicationconventionguidanceDo report definitions live in their module or a recorded Exception?
litespec/ext/report#keep-report-providers-in-infrastructureKeep report providers in InfrastructureconventionguidanceDo SQL and storage code live in Infrastructure or a recorded Exception?
litespec/ext/report#parameterize-report-sqlParameterize report SQLruleguidanceDoes every report query bind actor, tenant, filter, range, sort, and pagination values?
litespec/ext/report#protect-export-outputProtect export outputruleguidanceDoes export output carry an owner and expiry with short-lived authorized download?
litespec/ext/report#record-reporting-needRecord reporting needruleguidanceDoes the use-case page record the report, volume, plan, target, maximum, and owner?
litespec/ext/report#review-report-plansReview report plansruleguidanceDid the owner review plans and indexes on representative data?
litespec/ext/report#run-budget-exceeding-exports-in-workerRun budget-exceeding exports in WorkerruleguidanceDoes each export past its request budget run through Worker?
litespec/ext/report#scope-export-output-to-the-tenantScope export output to the tenantruleguidanceDoes each export store its output under a tenant-scoped path?
litespec/ext/report#separate-worker-orchestrationSeparate Worker orchestrationconventionguidanceIs Worker orchestration separate from report business rules or a recorded Exception?
litespec/ext/report#support-report-cancellationSupport report cancellationruleguidanceDoes report work cancel, and does expired output clear?
litespec/ext/site#avoid-client-scripts-without-a-named-interactive-needAvoid client scripts without a named interactive needruleguidanceDoes each shipped script serve a recorded interactive need?
litespec/ext/site#declare-each-static-site-in-the-project-recordDeclare each static site in the project recordrulecheckablelitespec consumer refuses a selected site extension whose paths.sites entry is missing.
litespec/ext/site#default-to-a-light-scheme-with-a-reader-chosen-dark-schemeDefault to a light scheme with a reader-chosen dark schemeconventionguidanceIs light the initial scheme with a reader-chosen dark scheme or a recorded Exception?
litespec/ext/site#generate-a-sitemap-covering-every-pageGenerate a sitemap covering every pageruleguidanceDoes the sitemap list every page with its alternates?
litespec/ext/site#generate-the-site-with-astroGenerate the site with AstroconventionguidanceDoes Astro generate the site or does an Exception record a replacement?
litespec/ext/site#give-every-page-one-main-heading-and-landmark-elementsGive every page one main heading and landmark elementsruleguidanceDoes every page carry one top-level heading and landmarks?
litespec/ext/site#keep-each-repeated-fact-in-one-data-sourceKeep each repeated fact in one data sourceruleguidanceDoes each repeated fact live in one source, with each product word as a Term record?
litespec/ext/site#list-every-page-for-language-modelsList every page for language modelsruleguidanceDoes the page list match the built pages?
litespec/ext/site#load-every-script-from-the-site-originLoad every script from the site originruleguidanceDoes every client script load from the site origin?
litespec/ext/site#load-nothing-from-a-third-party-originLoad nothing from a third-party originruleguidanceDoes any page load from a third-party origin?
litespec/ext/site#mark-pages-with-json-ld-structured-dataMark pages with JSON-LD structured dataruleguidanceDoes every page carry its JSON-LD graph?
litespec/ext/site#mark-unfinished-facts-with-visible-placeholdersMark unfinished facts with visible placeholdersruleguidanceDoes each missing fact show a visible placeholder naming it?
litespec/ext/site#name-every-page-with-a-title-and-a-descriptionName every page with a title and a descriptionruleguidanceDoes every page state its title and description?
litespec/ext/site#point-crawler-rules-at-the-sitemapPoint crawler rules at the sitemapruleguidanceDo the crawler rules point at the sitemap?
litespec/ext/site#point-every-page-at-its-absolute-canonical-addressPoint every page at its absolute canonical addressruleguidanceDoes every page link its absolute canonical address?
litespec/ext/site#publish-a-markdown-copy-beside-every-pagePublish a Markdown copy beside every pageruleguidanceDoes every page link its Markdown copy?
litespec/ext/site#publish-full-page-text-for-language-modelsPublish full page text for language modelsruleguidanceDoes the full-text file match the default-language pages?
litespec/ext/site#read-prices-and-claims-from-product-and-pricing-recordsRead prices and claims from product and pricing recordsconventionguidanceDo prices and claims read the brief and pricing record or a recorded Exception?
litespec/ext/site#read-site-prices-and-claims-from-consumer-recordsRead site prices and claims from consumer recordsruleguidanceDoes each site price and claim trace to its named record?
litespec/ext/site#reference-language-alternates-from-every-translated-pageReference language alternates from every translated pageruleguidanceDoes each translated page link its alternates and fallback?
litespec/ext/site#reject-a-release-build-carrying-a-placeholderReject a release build carrying a placeholderruleguidanceDoes a release build fail while a placeholder remains?
litespec/ext/site#render-components-on-the-server-with-astro-or-svelteRender components on the server with Astro or SvelteconventionguidanceDo Astro or Svelte sources render server-side or does an Exception record a replacement?
litespec/ext/site#render-every-language-from-one-page-structureRender every language from one page structureruleguidanceDoes one structure render every language, with each language supplying only text?
litespec/ext/site#render-every-page-to-static-filesRender every page to static filesruleguidanceDoes the build write every page as a static file needing no server?
litespec/ext/site#state-allowed-sources-in-a-content-security-policyState allowed sources in a content security policyruleguidanceDoes the policy name every source the pages load?
litespec/ext/site#use-tailwind-for-site-stylesUse Tailwind for site stylesconventionguidanceDo Tailwind styles build the site or does an Exception record a replacement?
litespec/ext/stage#declare-the-release-stageDeclare the release stagerulecheckablelitespec consumer refuses a stage selection with a missing or unknown releaseStage.
litespec/ext/stage#defer-named-provisions-until-promotionDefer named provisions until promotionrulecheckablelitespec consumer refuses a deferral naming an unknown provision or past its until date, and any deferral in production.
litespec/ext/stage#promote-through-a-recorded-decisionPromote through a recorded decisionruleguidanceDoes an approved promotion Decision predate the first deployment holding customer data?
litespec/ext/tenancy#apply-cross-tenant-disclosure-policyApply cross-tenant disclosure policyruleguidanceDoes each cross-tenant response use the documented policy?
litespec/ext/tenancy#avoid-unplanned-isolation-modelsAvoid unplanned isolation modelsruleguidanceDoes each mixed model record its decision and evolution plan?
litespec/ext/tenancy#define-tenant-isolationDefine tenant isolationruleguidanceDoes the decision define the isolation model, guarantee, and trade-off?
litespec/ext/tenancy#isolate-administrative-cross-tenant-accessIsolate administrative cross-tenant accessruleguidanceDoes administrative access need its platform-scope Permission and write its audit record?
litespec/ext/tenancy#pass-tenant-scope-explicitlyPass tenant scope explicitlyconventionguidanceDoes domain code read no ambient tenant state, or does an Exception record it?
litespec/ext/tenancy#protect-tenant-diagnosticsProtect tenant diagnosticsruleguidanceDo diagnostics exclude foreign tenant identifiers and data?
litespec/ext/tenancy#record-an-all-tenant-operationRecord an all-tenant operationruleguidanceDoes each all-tenant run write its record with count and bounded list?
litespec/ext/tenancy#record-the-tenant-adoption-decisionRecord the tenant adoption decisionruleguidanceDoes an owned Decision record the tenant source, model, guarantee, access, path, and bound?
litespec/ext/tenancy#reject-unrestricted-tenant-inputReject unrestricted tenant inputruleguidanceCan request tampering with a tenant ID select another boundary?
litespec/ext/tenancy#resolve-tenant-identity-from-trusted-contextResolve tenant identity from trusted contextruleguidanceDoes each trusted source resolve the tenant?
litespec/ext/tenancy#scope-tenant-operationsScope tenant operationsruleguidanceDoes each procedure declare one-tenant or all-tenant scope?
litespec/ext/tenancy#scope-tenant-owned-recordsScope tenant-owned recordsruleguidanceDoes every listed boundary include tenant scope?
litespec/ext/tenancy#use-one-tenant-accessorUse one tenant accessorconventionguidanceDoes the host boundary hold one current-tenant accessor or a recorded Exception?
litespec/ext/tenancy#use-selected-tenant-storage-supportUse selected tenant storage supportruleguidanceDoes each provider resolve the tenant at session creation?
litespec/ext/tenancy#use-typed-tenant-identitiesUse typed tenant identitiesconventionguidanceDo tenant references use TenantId or a recorded Exception?
litespec/ext/tenancy#verify-actor-and-target-tenancyVerify actor and target tenancyruleguidanceDo mismatched actor and target tenants fail?

frontend#

IDProvisionKindMarkEvidence
litespec/frontend/blazor/browser#bound-what-is-storedBound what is storedruleguidanceDoes each persisting specification state its collection bound and eviction rule?
litespec/frontend/blazor/browser#keep-a-stable-serialization-contractKeep a stable serialization contractconventionguidanceDoes a record with an unknown property still read?
litespec/frontend/blazor/browser#own-storage-in-infrastructureOwn storage in InfrastructureruleguidanceDoes every storage call resolve the Application interface?
litespec/frontend/blazor/browser#provide-a-migration-for-every-changed-shapeProvide a migration for every changed shaperuleguidanceDoes each changed shape ship a migration reading every released version?
litespec/frontend/blazor/browser#provide-export-and-importProvide export and importruleguidanceDoes an export reimport to identical durable state, refusing a newer version?
litespec/frontend/blazor/browser#record-the-classificationRecord the classificationconventionguidanceDo durable and device-local keys use separate prefixes?
litespec/frontend/blazor/browser#select-the-storage-mechanism-per-shapeSelect the storage mechanism per shapeconventionguidanceDoes each persisted shape use its declared mechanism?
litespec/frontend/blazor/browser#treat-reads-as-fallibleTreat reads as fallibleruleguidanceDoes the adapter return unavailable, absent, corrupt, and present as typed outcomes?
litespec/frontend/blazor/browser#version-and-scope-every-storage-keyVersion and scope every storage keyruleguidanceIs each key a declared constant carrying product, area, and version?
litespec/frontend/blazor/components#apply-one-styling-systemApply one styling systemconventionguidanceIs each color, spacing, and font value a defined token?
litespec/frontend/blazor/components#declare-every-parameter-typeDeclare every parameter typeruleguidanceDoes each parameter declare a feature-owned concrete type?
litespec/frontend/blazor/components#keep-accessibility-in-the-componentKeep accessibility in the componentruleguidanceDo keyboard paths and announcements work in each interactive component?
litespec/frontend/blazor/components#keep-components-presentationalKeep components presentationalruleguidanceDoes any component resolve storage, interop, or a Domain service?
litespec/frontend/blazor/components#name-for-the-boundary-roleName for the boundary roleconventionguidanceDoes each feature component name match its rendered role?
litespec/frontend/blazor/components#own-the-layer-contractOwn the layer contractruleguidanceDoes any view model expose a Domain or Application type?
litespec/frontend/blazor/components#place-one-component-per-filePlace one component per fileruleguidanceDoes each component file declare one primary component?
litespec/frontend/blazor/components#raise-events-rather-than-mutatingRaise events rather than mutatingruleguidanceDoes each child report upward through a callback parameter?
litespec/frontend/blazor/components#resolve-browser-behavior-through-an-interfaceResolve browser behavior through an interfaceruleguidanceDoes any component inject the interop runtime directly?
litespec/frontend/blazor/data#classify-stateClassify stateruleguidanceDoes each specification introducing state name one classification?
litespec/frontend/blazor/data#keep-derived-values-single-sourcedKeep derived values single-sourcedruleguidanceDoes each derived value have one computation site?
litespec/frontend/blazor/data#keep-forms-typedKeep forms typedconventionguidanceDoes each form bind a feature-owned model and map to a command?
litespec/frontend/blazor/data#load-persisted-state-onceLoad persisted state onceruleguidanceDoes persisted state load before the first render?
litespec/frontend/blazor/data#make-failure-explicitMake failure explicitruleguidanceDoes each handler union cover success and every named failure?
litespec/frontend/blazor/data#prefer-explicit-refreshPrefer explicit refreshconventionguidanceDoes the store update from each result without a follow-up query?
litespec/frontend/blazor/data#route-use-cases-through-applicationRoute use cases through ApplicationruleguidanceDoes any component resolve a Domain service or storage adapter?
litespec/frontend/blazor/data#validate-at-the-boundaryValidate at the boundaryruleguidanceDoes each form failure originate from its Application validator?
litespec/frontend/blazor/rendering#declare-routes-on-pagesDeclare routes on pagesruleguidanceDoes each routable component declare one template with typed parameters?
litespec/frontend/blazor/rendering#give-every-route-explicit-statesGive every route explicit statesruleguidanceDoes each route render its six states, with not-found for bad parameters?
litespec/frontend/blazor/rendering#keep-navigation-state-in-the-urlKeep navigation state in the URLconventionguidanceDoes refresh-surviving state appear in the route or query string?
litespec/frontend/blazor/rendering#keep-the-acquisition-surface-staticKeep the acquisition surface staticruleguidanceDoes each landing page load without fetching the framework payload?
litespec/frontend/blazor/rendering#name-routes-for-the-readerName routes for the readerconventionguidanceDoes each template match its documented use-case name?
litespec/frontend/blazor/rendering#operate-offline-after-first-loadOperate offline after first loadruleguidanceDoes the application start offline after first load, with stated limits?
litespec/frontend/blazor/rendering#render-on-the-client-onlyRender on the client onlyruleguidanceDoes the published output declare no server render mode?
litespec/frontend/blazor/stack#keep-blazor-outside-the-ui-contractKeep Blazor outside the UI contractruleguidanceDoes the consumer apply any UI contract page or route check?
litespec/frontend/blazor/stack#publish-static-webassembly-outputPublish static WebAssembly outputruleguidanceDoes the published output hold no server assembly or server render mode?
litespec/frontend/blazor/stack#record-a-first-load-budgetRecord a first-load budgetconventionguidanceDoes Operating Limits record the budget the publish job enforces?
litespec/frontend/blazor/stack#verify-with-the-net-toolchainVerify with the .NET toolchainconventionguidanceDoes the CI client job run dotnet build and dotnet test?
litespec/frontend/blazor/structure#isolate-module-internalsIsolate module internalsruleguidanceDoes any cross-module reference resolve an internal feature type?
litespec/frontend/blazor/structure#keep-domain-free-of-browser-concernsKeep Domain free of browser concernsruleguidanceDo Domain and Application reference any browser or interop type?
litespec/frontend/blazor/structure#keep-imports-directionalKeep imports directionalruleguidanceDoes the reference graph match the declared direction?
litespec/frontend/blazor/structure#keep-static-content-out-of-the-assemblyKeep static content out of the assemblyconventionguidanceDoes published output serve runtime content from wwwroot/ rather than embedded resources?
litespec/frontend/blazor/structure#organize-features-by-module-and-use-caseOrganize features by module and use caseruleguidanceDoes each feature path resolve to a declared module and use case?
litespec/frontend/blazor/structure#place-interop-adapters-togetherPlace interop adapters togetherconventionguidanceDoes each adapter sit beside its matching script, or record a replacement?
litespec/frontend/blazor/structure#use-the-client-solution-treeUse the client solution treeruleguidanceDo four production projects exist, with no server project?
litespec/frontend/blazor/testing#enforce-the-first-load-budgetEnforce the first-load budgetruleguidanceDoes the CI publish job fail when transfer size exceeds the recorded budget?
litespec/frontend/blazor/testing#keep-browser-capability-tests-honestKeep browser-capability tests honestconventionguidanceDoes each capability-dependent feature test both its paths?
litespec/frontend/blazor/testing#keep-end-to-end-tests-fewKeep end-to-end tests fewconventionguidanceDoes each browser case map to a required flow or named interaction?
litespec/frontend/blazor/testing#prove-each-case-with-a-testProve each case with a testruleguidanceDoes each Case have a test whose steps call the use case and assert the Result?
litespec/frontend/blazor/testing#replace-interop-in-component-testsReplace interop in component testsruleguidanceDoes each render substitute every Application interface?
litespec/frontend/blazor/testing#test-the-core-without-a-browserTest the core without a browserruleguidanceDoes any core test project reference a browser or interop type?
litespec/frontend/blazor/testing#use-the-four-client-test-projectsUse the four client test projectsruleguidanceDo the four test projects exist and run in CI?
litespec/frontend/blazor/testing#verify-real-browser-behavior-end-to-endVerify real browser behavior end to endruleguidanceDoes the browser suite cover the primary flow, storage loss, offline startup, and portability?
litespec/frontend/components#add-a-missing-composite-to-the-shared-packageAdd a missing composite to the shared packageruleguidanceIs every layout, control, or surface a second page needs exported from the shared package?
litespec/frontend/components#compose-composites-in-page-codeCompose composites in page coderulecheckablelitespec ui refuses a primitive library import reached from an application.
litespec/frontend/components#expose-card-and-section-titles-as-headingsExpose card and section titles as headingsconventionguidanceDoes every visible card, panel, or section title render as a heading at its correct level?
litespec/frontend/components#keep-component-inputs-narrowKeep component inputs narrowruleguidanceDoes any composite input type name a client, a store, or a business record?
litespec/frontend/components#keep-domain-values-typed-until-displayKeep domain values typed until displayconventionguidanceDoes conversion to display strings happen only at the presentation boundary?
litespec/frontend/components#keep-error-boundaries-scopedKeep error boundaries scopedconventionguidanceDoes each error boundary have a recovery path that keeps its surroundings usable?
litespec/frontend/components#keep-shared-ui-in-one-packageKeep shared UI in one packageruleguidanceDoes one shared package hold the shared primitives and the composites, with no copy in an application?
litespec/frontend/components#name-components-for-their-roleName components for their roleconventionguidanceDoes every component name describe the role it plays?
litespec/frontend/components#place-a-drawing-no-composite-makes-in-an-exception-filePlace a drawing no composite makes in an exception fileruleguidanceDoes every exception file use semantic tokens only, with no custom styling elsewhere?
litespec/frontend/components#prefer-a-composite-over-a-primitivePrefer a composite over a primitiveruleguidanceDoes page code import a primitive where the shared package provides a composite?
litespec/frontend/components#render-complete-statesRender complete statesruleguidanceDoes every data component render each named state and every control render its own, with each name a recorded term?
litespec/frontend/components#sanitize-untrusted-rich-contentSanitize untrusted rich contentruleguidanceDoes any component render untrusted content without its recorded sanitization decision?
litespec/frontend/components#support-keyboard-focus-labels-and-announcementsSupport keyboard, focus, labels, and announcementsruleguidanceDoes interactive UI support keyboard operation, visible focus, semantic elements, programmatic labels, and status announcements?
litespec/frontend/components#use-a-composite-for-a-content-imageUse a composite for a content imageruleguidanceDoes every content image render through the shared image component with its owned text?
litespec/frontend/components#use-composites-for-layout-and-interaction-in-page-codeUse composites for layout and interaction in page coderuleguidanceDoes page code declare a refused element, and does each refusal name its composite?
litespec/frontend/components#use-declared-visual-variantsUse declared visual variantsruleguidanceDoes every repeated variant use theme tokens through the variant helper?
litespec/frontend/components#write-no-class-name-in-page-codeWrite no class name in page coderuleguidanceDoes any component under a route or module folder declare a class or style binding?
litespec/frontend/data#announce-the-outcome-of-an-optimistic-updateAnnounce the outcome of an optimistic updateruleguidanceDoes a differing server result announce through a live region?
litespec/frontend/data#assign-state-to-the-narrowest-ownerAssign state to the narrowest ownerruleguidanceDoes each value live with the narrowest owner the order allows?
litespec/frontend/data#build-a-form-on-the-shared-form-libraryBuild a form on the shared form libraryconventionguidanceIs each form built on the shared package's form entry point and field components?
litespec/frontend/data#generate-the-client-from-the-published-contractGenerate the client from the published contractruleguidanceIs every client, type, schema, and operation option generated from the published contract?
litespec/frontend/data#keep-schemas-operation-specificKeep schemas operation specificconventionguidanceDoes each shared schema serve two real readers?
litespec/frontend/data#keep-secrets-out-of-browser-storageKeep secrets out of browser storageruleguidanceIs any secret or privileged credential kept out of browser storage and public variables?
litespec/frontend/data#keep-the-client-boundary-in-the-frameKeep the client boundary in the frameconventionguidanceDo the client configuration, problem mapping, and download helpers sit only in the frame root?
litespec/frontend/data#keep-the-session-in-an-api-owned-cookieKeep the session in an API owned cookieruleguidanceDoes the API hold the session in an HTTP-only cookie with no token in frontend code?
litespec/frontend/data#localize-copy-through-locale-dictionariesLocalize copy through locale dictionariesruleguidanceDoes all copy resolve through locale dictionaries with fill, plurals, and a declared fallback?
litespec/frontend/data#make-optimistic-behavior-recoverableMake optimistic behavior recoverableruleguidanceDoes each optimistic update declare identity, conflict behavior, rollback, and reconciliation?
litespec/frontend/data#map-every-failure-to-one-problem-typeMap every failure to one problem typeruleguidanceDoes every failure become one problem, with the trace identifier shown in the error detail?
litespec/frontend/data#name-the-zone-for-every-timestampName the zone for every timestampruleguidanceDoes each timestamp formatter receive an explicit IANA zone from its caller?
litespec/frontend/data#place-a-field-refusal-on-its-fieldPlace a field refusal on its fieldruleguidanceDoes each field problem reach its field through the frame's helper, with the form left open?
litespec/frontend/data#place-a-refusal-beside-what-was-refusedPlace a refusal beside what was refusedruleguidanceDoes each refusal render beside what was refused, in the application's sentence for its code?
litespec/frontend/data#read-a-permission-from-the-sessionRead a permission from the sessionruleguidanceDoes each offered command follow the Actor's held Permissions, with the API deciding?
litespec/frontend/data#regenerate-the-client-rather-than-editing-itRegenerate the client rather than editing itconventionguidanceIs the committed client regenerated from the document with no hand edit under it?
litespec/frontend/data#route-a-personal-value-in-a-headerRoute a personal value in a headerruleguidanceDoes each person-naming value travel in its contract-declared header?
litespec/frontend/data#set-the-write-marker-on-every-requestSet the write marker on every requestruleguidanceDoes the client send the configured marker header on every write?
litespec/frontend/data#update-the-cache-a-command-changedUpdate the cache a command changedruleguidanceDoes each successful command invalidate the queries it changed and no others?
litespec/frontend/data#use-one-configured-client-per-applicationUse one configured client per applicationruleguidanceDoes every read and write pass through the one configured client?
litespec/frontend/data#validate-a-form-with-the-generated-schemaValidate a form with the generated schemaruleguidanceDoes a spec submit contract-invalid input and assert a client-side refusal?
litespec/frontend/patterns#declare-the-compact-behaviorDeclare the compact behaviorrulecheckablelitespec ui reports a compact option naming no recorded option.
litespec/frontend/patterns#implement-a-chosen-pattern-onceImplement a chosen pattern oncerulecheckablelitespec ui reports a named component path that does not exist.
litespec/frontend/patterns#keep-a-visual-registryKeep a visual registryconventionguidanceDoes the registry render every product-added option in each theme at compact and full widths?
litespec/frontend/patterns#keep-one-pattern-catalogKeep one pattern catalogrulecheckablelitespec ui reports a missing catalog or a schema failure.
litespec/frontend/patterns#keep-the-catalog-platform-neutralKeep the catalog platform neutralruleguidanceDoes any pattern name a component library outside implementations?
litespec/frontend/patterns#promote-pattern-improvementsPromote pattern improvementsconventionguidanceDid each accepted generic proposal reach the LiteSpec pattern page as a new or refined option?
litespec/frontend/patterns#record-every-option-consideredRecord every option consideredrulecheckablelitespec ui reports fewer than two options or a choice naming no option.
litespec/frontend/patterns#record-who-choseRecord who choseruleguidanceDoes each decision record owner or recommended, with no agent-marked owner choice?
litespec/frontend/patterns#report-pattern-feedback-after-the-workReport pattern feedback after the workconventionguidanceDoes each completion report carry proposals with pattern id, change, reason, and option?
litespec/frontend/patterns#start-from-a-litespec-patternStart from a LiteSpec patternconventionguidanceDoes each entry set library or record its own reason, keeping the pattern's option IDs?
litespec/frontend/patterns#state-the-implementation-statusState the implementation statusrulecheckablelitespec ui reports a partial or pending entry without a gap.
litespec/frontend/patterns#update-the-catalog-with-the-codeUpdate the catalog with the coderuleguidanceDid the catalog entry change with its implementation or name a record?
litespec/frontend/patterns/admin-screens#api-keys-and-webhooksAPI keys and webhookspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/admin-screens#bringing-data-from-spreadsheetsBringing data from spreadsheetspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/admin-screens#connecting-the-payment-accountConnecting the payment accountpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/admin-screens#discount-and-promotion-codesDiscount and promotion codespatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/admin-screens#show-a-new-secret-onceShow a new secret onceruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/admin-screens#show-what-a-role-allows-before-granting-itShow what a role allows before granting itruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/admin-screens#supplier-invoiceSupplier invoicepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/admin-screens#team-members-and-their-rolesTeam members and their rolespatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#changing-a-record-that-already-existsChanging a record that already existspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#changing-something-that-has-already-happenedChanging something that has already happenedpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#confirm-or-undo-every-removalConfirm or undo every removalruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/create-edit-remove#creating-a-record-and-then-filling-it-inCreating a record and then filling it inpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#creating-one-recordCreating one recordpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#duplicating-a-recordDuplicating a recordpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#inviting-a-team-memberInviting a team memberpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#publishing-and-unpublishing-a-listingPublishing and unpublishing a listingpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#putting-a-list-in-order-by-handPutting a list in order by handpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#removing-several-at-onceRemoving several at oncepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#removing-somethingRemoving somethingpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#restoring-an-archived-recordRestoring an archived recordpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#scheduling-a-change-for-laterScheduling a change for laterpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/create-edit-remove#show-the-created-recordShow the created recordruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/dialogs-and-overlays#bar-that-stays-while-the-reader-worksBar that stays while the reader workspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#bottom-sheet-on-a-phoneBottom sheet on a phonepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#confirming-a-command-that-cannot-be-taken-backConfirming a command that cannot be taken backpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#context-menu-where-the-pointer-isContext menu where the pointer ispatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#dialog-with-a-long-body-and-a-sticky-footerDialog with a long body and a sticky footerpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#drawer-beside-the-listDrawer beside the listpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#keyboard-shortcut-help-overlayKeyboard shortcut help overlaypatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#menu-of-a-rows-commandsMenu of a row's commandspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#name-the-command-on-a-confirm-actionName the command on a confirm actionruleguidanceDoes every built page of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/dialogs-and-overlays#return-focus-when-an-overlay-closesReturn focus when an overlay closesruleguidanceDoes every built page of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/dialogs-and-overlays#short-panel-that-opens-beside-a-controlShort panel that opens beside a controlpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#short-task-in-a-dialogShort task in a dialogpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/dialogs-and-overlays#toast-at-the-edge-of-the-screenToast at the edge of the screenpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#back-office-is-down-for-a-short-whileBack office is down for a short whilepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#command-that-workedCommand that workedpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#command-the-api-refusedCommand the API refusedpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#connection-is-goneConnection is gonepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#fact-somebody-has-to-read-before-actingFact somebody has to read before actingpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#keep-the-readers-input-through-a-failureKeep the reader's input through a failureruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/feedback-and-states#loadingLoadingpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#nothing-has-ever-existedNothing has ever existedpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#nothing-matches-what-was-asked-forNothing matches what was asked forpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#reader-may-not-do-thisReader may not do thispatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#sign-in-ran-outSign-in ran outpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#somebody-else-saved-firstSomebody else saved firstpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#something-went-wrong-on-our-sideSomething went wrong on our sidepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#state-what-failed-and-the-next-stepState what failed and the next stepruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/feedback-and-states#this-record-does-not-existThis record does not existpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#too-many-triesToo many triespatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/feedback-and-states#work-that-runs-without-youWork that runs without youpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#address-fieldAddress fieldpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#capacity-fieldCapacity fieldpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#choosing-a-recordChoosing a recordpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#choosing-one-of-a-few-optionsChoosing one of a few optionspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#color-field-for-the-storefront-accentColor field for the storefront accentpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#date-and-time-fieldDate and time fieldpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#email-body-editorEmail body editorpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#keep-entered-values-after-a-refused-submitKeep entered values after a refused submitruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/forms-and-fields#money-fieldMoney fieldpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#name-every-field-with-a-visible-labelName every field with a visible labelruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/forms-and-fields#picking-a-periodPicking a periodpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#repeatable-group-for-price-tiersRepeatable group for price tierspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#reporting-a-refused-submitReporting a refused submitpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#slug-or-url-field-with-a-previewSlug or URL field with a previewpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#switch-or-a-checkboxSwitch or a checkboxpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#tag-inputTag inputpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#text-field-and-its-statesText field and its statespatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#upload-fieldUpload fieldpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/forms-and-fields#work-that-is-not-savedWork that is not savedpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#align-money-to-the-right-with-its-currencyAlign money to the right with its currencyruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/lists-and-tables#bulk-action-barBulk action barpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#choosing-the-columnsChoosing the columnspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#deliveries-as-a-gridDeliveries as a gridpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#exporting-the-listExporting the listpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#filtersFilterspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#grouped-rowsGrouped rowspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#inline-row-expansionInline row expansionpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#keep-a-lists-view-in-its-addressKeep a list's view in its addressruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/lists-and-tables#list-on-a-phoneList on a phonepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#money-columnMoney columnpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#paginationPaginationpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#pinned-and-resizing-columnsPinned and resizing columnspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#row-actionsRow actionspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#row-densityRow densitypatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#searching-with-highlighted-matchesSearching with highlighted matchespatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#sortingSortingpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#status-in-a-columnStatus in a columnpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/lists-and-tables#tables-own-statesTable's own statespatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#choosing-a-periodChoosing a periodpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#counting-thingsCounting thingspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#figure-against-an-earlier-periodFigure against an earlier periodpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#how-much-fits-before-it-breaksHow much fits before it breakspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#numbers-at-phone-widthNumbers at phone widthpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#sales-by-product-variantSales by product variantpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#sales-over-timeSales over timepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#sell-through-against-capacitySell-through against capacitypatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#show-the-currency-of-every-amountShow the currency of every amountruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/money-time-density#showing-an-identifierShowing an identifierpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#state-the-time-zone-of-a-shared-momentState the time zone of a shared momentruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/money-time-density#statement-that-adds-upStatement that adds uppatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#two-vat-rates-on-one-pageTwo VAT rates on one pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#vendors-invoice-to-the-companyVendor's invoice to the companypatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#when-the-money-arrivesWhen the money arrivespatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#writing-a-momentWriting a momentpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/money-time-density#writing-an-amountWriting an amountpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#account-menuAccount menupatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#breadcrumbBreadcrumbpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#command-paletteCommand palettepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#give-every-page-its-own-addressGive every page its own addressruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/navigation#header-barHeader barpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#help-and-supportHelp and supportpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#icons-in-the-frameIcons in the framepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#language-and-themeLanguage and themepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#mark-the-current-sectionMark the current sectionruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/navigation#notification-inboxNotification inboxpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#phone-navigationPhone navigationpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#sidebarSidebarpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#tabs-within-a-pageTabs within a pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/navigation#workspace-switcherWorkspace switcherpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#calendar-or-schedule-pageCalendar or schedule pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#editor-pageEditor pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#error-or-not-found-pageError or not-found pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#form-pageForm pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#home-pageHome pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#list-pageList pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#live-operations-pageLive operations pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#name-the-page-in-one-headingName the page in one headingruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/page-frames#onboarding-or-setup-pageOnboarding or setup pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#outcome-pageOutcome pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#queueQueuepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#record-drawerRecord drawerpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#record-pageRecord pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#report-pageReport pagepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#settings-homeSettings homepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/page-frames#show-one-primary-action-in-a-page-frameShow one primary action in a page frameruleguidanceDoes every built screen of this kind keep this rule, including in its compact layout?
litespec/frontend/patterns/record-detail#keep-destructive-commands-out-of-the-primary-placeKeep destructive commands out of the primary placeruleguidanceDoes every destructive command on a record page sit outside the primary place, in its own tone?
litespec/frontend/patterns/record-detail#order-recordOrder recordpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#previous-and-next-recordPrevious and next recordpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#property-list-with-copyProperty list with copypatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-asideRecord asidepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-attachmentsRecord attachmentspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-change-historyRecord change historypatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-headerRecord headerpatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-header-on-a-phoneRecord header on a phonepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-notesRecord notespatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-summaryRecord summarypatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-tabsRecord tabspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-the-reader-may-not-changeRecord the reader may not changepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#record-timelineRecord timelinepatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#related-recordsRelated recordspatternguidanceDoes the built page follow the default option, or the option the project catalog records with its reason?
litespec/frontend/patterns/record-detail#show-one-primary-action-in-a-record-headerShow one primary action in a record headerrulecheckablelitespec patterns check refuses a wireframe header holding two primary actions; a reviewer confirms each built record header holds at most one.
litespec/frontend/rendering#build-the-server-data-cache-per-requestBuild the server data cache per requestruleguidanceDoes each server request construct its own data cache?
litespec/frontend/rendering#keep-address-parameters-validated-by-a-schemaKeep address parameters validated by a schemaruleguidanceDoes each route declare its address parameters in a schema, with no direct reads?
litespec/frontend/rendering#keep-authenticated-caching-explicitKeep authenticated caching explicitruleguidanceDoes each cached actor-specific read declare its key, boundary, owner, and review?
litespec/frontend/rendering#keep-layouts-stableKeep layouts stableconventionguidanceIs each provider required by every child route?
litespec/frontend/rendering#keep-proxy-behavior-at-the-edgeKeep proxy behavior at the edgeruleguidanceDoes any proxy rule decide the actor or what the actor may read?
litespec/frontend/rendering#keep-server-only-code-identifiableKeep server-only code identifiableconventionguidanceDoes each server-owned module sit in a file named for the server?
litespec/frontend/rendering#load-each-route-and-each-language-separatelyLoad each route and each language separatelyruleguidanceDoes each route and each language load as its own download?
litespec/frontend/rendering#load-route-data-before-renderingLoad route data before renderingruleguidanceDoes each route that reads load it through one shared cache before its view renders?
litespec/frontend/rendering#prefetch-a-route-on-intentPrefetch a route on intentruleguidanceDoes the router prefetch the route the reader signals intent toward, with no second cache?
litespec/frontend/rendering#read-route-data-from-the-route-cacheRead route data from the route cacheruleguidanceDoes each read name the entry its route filled?
litespec/frontend/rendering#represent-route-statesRepresent route statesruleguidanceDoes an absent address render the shared outcome page?
litespec/frontend/rendering#use-a-shared-layout-for-a-shellUse a shared layout for a shellconventionguidanceDoes each shell sit in a shared layout?
litespec/frontend/structure#cover-public-use-cases-in-journeysCover public use cases in journeysruleguidanceDoes every public use case appear in a journey or name its background caller?
litespec/frontend/structure#keep-a-route-entry-thinKeep a route entry thinruleguidanceDoes each route entry hold only its input, its load, and its component?
litespec/frontend/structure#keep-a-use-case-folder-flatKeep a use case folder flatruleguidanceDoes each use-case folder hold files and no subfolder?
litespec/frontend/structure#keep-applications-independentKeep applications independentruleguidanceDoes any frontend import source from another frontend?
litespec/frontend/structure#keep-shared-packages-non-application-specificKeep shared packages non application specificruleguidanceDoes any shared package name a use case or a screen?
litespec/frontend/structure#locate-cross-route-values-in-the-frameLocate cross-route values in the frameruleguidanceDoes the frame hold every cross-route value and browser use?
litespec/frontend/structure#mirror-the-backend-use-case-path-in-kebab-caseMirror the backend use case path in kebab caseruleguidanceDoes each use-case folder resolve to its backend folder?
litespec/frontend/structure#order-imports-from-routes-to-shared-packagesOrder imports from routes to shared packagesruleguidanceDoes every import follow the route to module to frame to package direction?
litespec/frontend/structure#organize-a-frontend-into-frame-routes-and-modulesOrganize a frontend into frame, routes, and modulesruleguidanceDoes each frontend use a frame, routes, and use-case modules?
litespec/frontend/structure#place-a-shared-file-in-the-folder-that-owns-itPlace a shared file in the folder that owns itruleguidanceDoes each shared file sit in the narrowest folder holding every reader?
litespec/frontend/structure#place-tests-at-their-ownership-boundaryPlace tests at their ownership boundaryconventionguidanceDo logic tests sit beside their module and browser suites share one root?
litespec/frontend/structure#reject-a-folder-name-that-owns-nothingReject a folder name that owns nothingruleguidanceDoes any folder carry a refused name?
litespec/frontend/structure#use-explicit-public-entry-points-for-shared-packagesUse explicit public entry points for shared packagesconventionguidanceDoes any application import a path its package does not export?
litespec/frontend/testing#assert-each-declared-refusal-by-its-codeAssert each declared refusal by its coderuleguidanceDoes the specification reach each declared refusal and assert it by its Result's code?
litespec/frontend/testing#isolate-browser-testsIsolate browser testsruleguidanceDoes each browser test create its own data, context, and expected state?
litespec/frontend/testing#keep-mocks-at-owned-boundariesKeep mocks at owned boundariesruleguidanceIs every mock at an owned boundary, replacing no library internal or private function?
litespec/frontend/testing#keep-test-support-narrowKeep test support narrowconventionguidanceDo the helpers stay limited to providers, one API helper, and locators?
litespec/frontend/testing#match-test-level-to-riskMatch test level to riskruleguidanceDoes each new test sit at the level its risk requires?
litespec/frontend/testing#prove-a-case-by-calling-its-use-caseProve a case by calling its use caseruleguidanceDo the test's steps call the use case and assert the Result, submitting where money moves?
litespec/frontend/testing#prove-the-module-mirror-in-a-structure-testProve the module mirror in a structure testruleguidanceDoes the structure test resolve every module folder to a backend use-case folder?
litespec/frontend/testing#query-by-accessible-behaviorQuery by accessible behaviorconventionguidanceDoes each identifier query lack a stable user-facing alternative?
litespec/frontend/testing#reach-every-public-use-case-from-a-journeyReach every public use case from a journeyruleguidanceDoes every public use case sit in a Journey or name its background caller?
litespec/frontend/testing#read-the-deployment-for-its-identifiersRead the deployment for its identifiersconventionguidanceIs each record identifier read from the deployment rather than written in a specification?
litespec/frontend/testing#run-browser-checks-through-the-command-lineRun browser checks through the command lineruleguidanceDoes each browser check run through the command line per route and per file?
litespec/frontend/testing#test-observable-statesTest observable statesruleguidanceDoes each test assert observable output in the states its situation reaches?
litespec/frontend/testing#use-network-mocks-for-component-testsUse network mocks for component testsruleguidanceDoes each component test needing HTTP run through contract-generated network mocks?
litespec/frontend/ui#check-every-routeCheck every routeruleguidanceDoes every route pass each route suite check?
litespec/frontend/ui#compose-each-route-from-one-floorplanCompose each route from one floorplanruleguidanceDoes every route render exactly one floorplan from the declared set or record its freestyle decision?
litespec/frontend/ui#declare-a-closed-floorplan-setDeclare a closed floorplan setruleguidanceDoes the Patterns section list every floorplan with a when-to-use rule?
litespec/frontend/ui#derive-each-page-type-from-a-named-referenceDerive each page type from a named referenceruleguidanceDoes every route name its page type reference, with each freestyle route naming its decision record?
litespec/frontend/ui#govern-behavior-packagesGovern behavior packagesruleguidanceDoes every behavior package name its approving decision and render through baseline components and tokens?
litespec/frontend/ui#hold-the-declared-base-colorHold the declared base colorruleguidanceDoes the token definition carry only declared baseline values, with each departure recorded?
litespec/frontend/ui#keep-a-blocked-command-visible-with-its-reasonKeep a blocked command visible with its reasonconventionguidanceDoes each disabled command stay visible with its reason?
litespec/frontend/ui#keep-layout-inside-floorplansKeep layout inside floorplansruleguidanceDoes any route file declare layout outside its floorplan and display composites?
litespec/frontend/ui#keep-separators-at-the-subtle-stepKeep separators at the subtle stepruleguidanceIs every structural separator and input border at the published border step or lighter?
litespec/frontend/ui#keep-tokens-in-one-definitionKeep tokens in one definitionruleguidanceDoes each application use the shared token definition with no declared value and no literal color?
litespec/frontend/ui#pin-the-baseline-in-the-shared-packagePin the baseline in the shared packagerulecheckablelitespec ui reports a workspace with no pinned baseline installed once in its shared package.
litespec/frontend/ui#prove-every-result-a-route-callsProve every result a route callsruleguidanceIs every result the route calls proved by a passing test or named by a known-gap record?
litespec/frontend/ui#prove-ui-behavior-and-appearanceProve UI behavior and appearanceruleguidanceDoes each change name the evidence the matrix assigns to its class?
litespec/frontend/ui#publish-a-design-contractPublish a design contractrulecheckablelitespec ui reports a missing contract, a schema failure, or a missing section.
litespec/frontend/ui#record-a-freestyle-routeRecord a freestyle routeruleguidanceDoes every freestyle route name the decision record that justifies its layout?
litespec/frontend/ui#record-a-frontend-outside-the-controlled-contractRecord a frontend outside the controlled contractruleguidanceDoes every frontend outside the controlled platforms declare its platform and name its replacement boundaries?
litespec/frontend/ui#restrict-styling-to-semantic-tokensRestrict styling to semantic tokensruleguidanceDoes every style use a semantic token rather than a raw value?
litespec/frontend/ui#select-a-command-surface-by-sizeSelect a command surface by sizeruleguidanceDoes each command use the surface the Concepts table assigns to its input?
litespec/frontend/ui#select-a-tone-from-the-closed-setSelect a tone from the closed setruleguidanceDoes each application declare its state-to-tone mapping once as an exhaustive table of terms?
litespec/frontend/ui#select-one-visual-authoritySelect one visual authorityrulecheckablelitespec consumer refuses a frontend with no declared platform and a workspace with a controlled frontend but no shared package.
litespec/frontend/ui#show-the-trace-id-in-error-detailShow the trace ID in error detailruleguidanceDoes every visible error show its trace identifier copyably in its detail rather than its headline?
litespec/frontend/ui#use-the-product-profilesUse the product profilesconventioncheckablelitespec ui refuses a controlled frontend with no density profile.
litespec/frontend/web/components#compose-class-names-in-the-shared-packageCompose class names in the shared packageconventionguidanceDoes every class merge go through the shared package helper?
litespec/frontend/web/components#give-card-and-section-titles-heading-semanticsGive card and section titles heading semanticsconventioncheckabletests/routes/every-route.spec.ts asserts each visible section title resolves as a heading.
litespec/frontend/web/components#keep-primitives-and-composites-in-one-shared-packageKeep primitives and composites in one shared packageruleguidanceDoes one shared package hold the registry source and the composites, with no copy in an application?
litespec/frontend/web/components#meet-accessibility-requirementsMeet accessibility requirementsrulecheckabletests/routes/every-route.spec.ts presses Tab and asserts every focused element shows an indicator.
litespec/frontend/web/components#place-a-drawing-no-composite-makes-in-a-visual-filePlace a drawing no composite makes in a visual fileruleguidanceDoes every visual file use semantic tokens only, and does any other file write class names?
litespec/frontend/web/components#protect-rich-content-boundariesProtect rich content boundariesruleguidanceDoes any component pass untrusted content to a raw HTML sink without its recorded decision?
litespec/frontend/web/components#use-no-raw-element-in-page-codeUse no raw element in page coderuleguidanceDoes page code declare a refused element, and does each refusal name its composite?
litespec/frontend/web/data#assign-state-to-the-narrowest-ownerAssign state to the narrowest ownerruleguidanceDoes each value live with the narrowest owner, using the stack's own component state?
litespec/frontend/web/data#build-a-form-on-the-shared-form-libraryBuild a form on the shared form libraryconventionguidanceIs each form built on the shared package's form entry point and field components?
litespec/frontend/web/data#generate-the-client-from-the-published-contractGenerate the client from the published contractrulecheckablepnpm api:types regenerates the client, and the contract check fails when the committed output differs.
litespec/frontend/web/data#keep-the-client-boundary-in-the-frameKeep the client boundary in the frameconventionguidanceDo the client configuration, problem mapping, and download helpers sit only in the frame root?
litespec/frontend/web/data#localize-copy-through-locale-dictionariesLocalize copy through locale dictionariesruleguidanceDoes all copy resolve through the stack's dictionary library with fill, plurals, and a declared fallback?
litespec/frontend/web/data#map-every-failure-to-one-problem-typeMap every failure to one problem typeruleguidanceDoes every failure become one problem, with the traceId shown in the error detail?
litespec/frontend/web/data#place-a-refusal-beside-what-was-refusedPlace a refusal beside what was refusedruleguidanceDoes each refusal render beside what was refused through the shared alert?
litespec/frontend/web/data#regenerate-the-client-rather-than-editing-itRegenerate the client rather than editing itconventioncheckablepnpm api:types regenerates the client; committed output that differs from generated output fails the contract check.
litespec/frontend/web/data#update-the-cache-a-command-changedUpdate the cache a command changedruleguidanceDoes each successful command invalidate the TanStack Query entries it changed and no others?
litespec/frontend/web/data#validate-a-form-with-the-generated-schemaValidate a form with the generated schemaruleguidanceDoes a spec submit contract-invalid input and assert a client-side refusal?
litespec/frontend/web/patterns#implement-a-chosen-pattern-onceImplement a chosen pattern oncerulecheckablelitespec ui reports a named React or Svelte component path that does not exist.
litespec/frontend/web/patterns#keep-a-visual-registryKeep a visual registryconventionguidanceDoes the registry render every product-added option at 390 and 1280 pixels?
litespec/frontend/web/react/components#keep-component-boundaries-typedKeep component boundaries typedrulecheckablepnpm type-check runs under strict mode and fails on an untyped prop or event.
litespec/frontend/web/react/components#write-components-as-functionsWrite components as functionsruleguidanceIs every component a function component using hooks?
litespec/frontend/web/react/stack#build-a-device-client-as-one-static-pageBuild a device client as one static pageruleguidanceIs each device client one static page with no router?
litespec/frontend/web/react/stack#select-a-rendering-mode-by-audienceSelect a rendering mode by audienceruleguidanceDoes each frontend render in the mode its audience requires?
litespec/frontend/web/rendering#build-the-server-query-cache-per-requestBuild the server query cache per requestrulecheckablegrep -c createQueryClient (React) or grep -c 'new QueryClient' (Svelte) counts one construction in the request factory.
litespec/frontend/web/rendering#define-route-metadata-deliberatelyDefine route metadata deliberatelyruleguidanceDoes each public route state four values, and each private route refuse indexing?
litespec/frontend/web/rendering#keep-authenticated-caching-explicitKeep authenticated caching explicitruleguidanceDoes each cached actor-specific read declare its key, boundary, owner, and review?
litespec/frontend/web/rendering#keep-proxy-behavior-at-the-edgeKeep proxy behavior at the edgeruleguidanceDoes any proxy rule decide the actor or what the actor may read?
litespec/frontend/web/rendering#keep-search-parameters-validated-by-a-schemaKeep search parameters validated by a schemaruleguidanceDoes each route declare its search in a schema, with no direct reads?
litespec/frontend/web/rendering#load-a-route-on-intentLoad a route on intentruleguidanceDoes the router preload the route a pointer is over, with no second cache?
litespec/frontend/web/rendering#load-route-data-in-the-loaderLoad route data in the loaderruleguidanceDoes each route that reads declare a loader that prefetches it?
litespec/frontend/web/rendering#read-route-data-with-a-suspense-queryRead route data with a suspense queryruleguidanceDoes each read name the key its loader filled?
litespec/frontend/web/rendering#split-one-chunk-per-route-and-per-languageSplit one chunk per route and per languagerulecheckablepnpm build reports one output chunk per route and one per language.
litespec/frontend/web/rendering#use-a-pathless-layout-route-for-a-shellUse a pathless layout route for a shellconventionguidanceDoes each shell sit in a shared layout?
litespec/frontend/web/structure#keep-a-route-file-thinKeep a route file thinruleguidanceDoes each route file hold only its input, its load, and its component?
litespec/frontend/web/structure#keep-imports-directionalKeep imports directionalruleguidanceDoes every import follow the route to module to frame to package direction?
litespec/frontend/web/structure#keep-tests-near-their-ownership-boundaryKeep tests near their ownership boundaryconventionguidanceDo logic tests sit beside their module and browser suites share one root?
litespec/frontend/web/structure#locate-the-frame-in-the-app-folderLocate the frame in the app folderruleguidanceDoes the frame hold every cross-route value and browser use?
litespec/frontend/web/structure#refuse-stack-specific-folder-namesRefuse stack-specific folder namesruleguidanceDoes any React folder take the name lib, or any Svelte folder under src/lib the name stores?
litespec/frontend/web/structure#use-explicit-public-entry-points-for-workspace-packagesUse explicit public entry points for workspace packagesconventionguidanceDoes any application import a path its package manifest does not export?
litespec/frontend/web/structure#use-the-frontend-application-treeUse the frontend application treeruleguidanceDoes each frontend tree match the layout its stack section states?
litespec/frontend/web/structure#use-the-generated-route-treeUse the generated route treeconventionguidanceDo the build and type-check scripts each run the router's generate command?
litespec/frontend/web/svelte/components#keep-component-boundaries-typedKeep component boundaries typedrulecheckablesvelte-check runs under strict mode and fails on an untyped prop, event, or snippet.
litespec/frontend/web/svelte/components#write-components-in-runes-modeWrite components in runes moderulecheckablesvelte-check fails on a legacy reactive statement or an untyped $props call.
litespec/frontend/web/svelte/stack#build-a-device-client-as-one-static-pageBuild a device client as one static pageruleguidanceIs each device client one static page with no router?
litespec/frontend/web/svelte/stack#select-a-rendering-mode-by-audienceSelect a rendering mode by audienceruleguidanceDoes each frontend render in the mode its audience requires?
litespec/frontend/web/testing#assert-each-declared-refusal-by-its-codeAssert each declared refusal by its coderuleguidanceDoes each web refusal assertion name its Result code in the page?
litespec/frontend/web/testing#keep-mocks-at-owned-boundariesKeep mocks at owned boundariesruleguidanceDoes each web mock avoid the libraries its stack section names?
litespec/frontend/web/testing#match-test-level-to-riskMatch test level to riskruleguidanceDoes each web test use Vitest for logic and Playwright for browser behavior?
litespec/frontend/web/testing#prove-the-module-mirror-in-a-structure-testProve the module mirror in a structure testruleguidanceDoes the Vitest structure test resolve modules and name no refused folder?
litespec/frontend/web/testing#query-by-accessible-behaviorQuery by accessible behaviorconventionguidanceDoes each web query scope by data-floorplan and accessible names?
litespec/frontend/web/testing#run-browser-checks-through-the-playwright-cliRun browser checks through the Playwright CLIruleguidanceDoes each browser check run through the Playwright CLI per route and per file?
litespec/frontend/web/testing#use-network-mocks-for-component-testsUse network mocks for component testsruleguidanceDoes each web HTTP test run through msw handlers from the contract?
litespec/frontend/web/ui#check-every-route-in-a-browserCheck every route in a browserrulecheckabletests/routes/every-route.spec.ts runs axe and the Concepts checks on each discovered route.
litespec/frontend/web/ui#compose-each-route-from-one-floorplanCompose each route from one floorplanrulecheckabletests/routes/every-route.spec.ts asserts page.locator("[data-floorplan]") has count 1.
litespec/frontend/web/ui#derive-each-page-type-from-a-named-referenceDerive each page type from a named referencerulecheckabletests/routes/every-route.spec.ts asserts data-registry-item resolves to a published registry item on every non-freestyle route.
litespec/frontend/web/ui#hold-the-declared-base-colorHold the declared base colorruleguidanceDoes the token stylesheet carry only values from the declared base color ramp, with each departure recorded?
litespec/frontend/web/ui#keep-layout-inside-floorplansKeep layout inside floorplansruleguidanceDoes any route file carry a layout utility outside its floorplan and display composites?
litespec/frontend/web/ui#keep-tokens-in-one-stylesheetKeep tokens in one stylesheetrulecheckablelitespec ui reports an application stylesheet declaring a rule and a shared stylesheet declaring a literal color.
litespec/frontend/web/ui#pin-the-baseline-in-the-shared-packagePin the baseline in the shared packagerulecheckablelitespec ui compares the committed configuration against the manifest baseline fields.
litespec/frontend/web/ui#prove-every-result-a-route-callsProve every result a route callsruleguidanceIs every result the route calls proved by a passing test or named by a known-gap record?
litespec/frontend/web/ui#prove-ui-behavior-and-appearanceProve UI behavior and appearancerulecheckabletests/routes/every-route.spec.ts runs on the changed route, and review confirms the change named the matrix evidence.
litespec/frontend/web/ui#publish-one-registry-item-per-floorplanPublish one registry item per floorplanrulecheckableshadcn build (React) or shadcn-svelte build (Svelte) exits zero, and review confirms registry.json lists one item per declared floorplan.
litespec/frontend/web/ui#restrict-css-decisionsRestrict CSS decisionsrulecheckablelitespec ui rejects an arbitrary value, a raw palette value, or an important modifier.
litespec/frontend/web/ui#select-a-tone-from-the-closed-setSelect a tone from the closed setrulecheckablepnpm type-check fails on a state with no tone; review confirms each tone is a term.
litespec/frontend/web/ui#track-source-changesTrack source changesrulecheckablelitespec ui recomputes each digest and reports changed primitive source.
litespec/frontend/web/ui#use-the-source-update-procedureUse the source update procedureconventionguidanceDoes the update branch record the pinned CLI, the dry-run output, and separate review of both file sets?

quality#

IDProvisionKindMarkEvidence
litespec/quality/ci#apply-the-documented-defaultsApply the documented defaultsconventionguidanceDoes each workflow match one job, or does an Exception record the replacement?
litespec/quality/ci#check-documentation-on-every-pull-requestCheck documentation on every pull requestrulecheckablelitespec consumer fails on a page that breaks the page contract, configuration, language, or prose rules.
litespec/quality/ci#enforce-the-supply-chain-gateEnforce the supply-chain gateruleguidanceDoes the supply-chain job scan, pin, inventory, and block a release with a high-severity advisory and no Exception?
litespec/quality/ci#keep-a-canonical-job-graphKeep a canonical job graphruleguidanceDoes consumer CI use the job names and responsibilities the jobs table states?
litespec/quality/ci#keep-generated-contracts-freshKeep generated contracts freshruleguidanceDoes CI regenerate the contracts from source and fail on any difference?
litespec/quality/ci#promote-verified-artifactsPromote verified artifactsruleguidanceDoes the same immutable artifact move through staging and production?
litespec/quality/ci#protect-the-default-branchProtect the default branchruleguidanceDoes the default branch require its jobs, a review, and a clean merge?
litespec/quality/ci#record-every-branch-protection-bypassRecord every branch protection bypassruleguidanceDoes every bypass name its actor, reason, and admitted change?
litespec/quality/ci#review-schema-artifactsReview schema artifactsruleguidanceDoes every persistence change publish a reviewed schema artifact with its destructive operations listed?
litespec/quality/ci#run-applicable-gates-on-every-pull-requestRun applicable gates on every pull requestruleguidanceDoes every pull request run the jobs the jobs table selects for its changed areas?
litespec/quality/operations#apply-schema-changes-outside-request-startupApply schema changes outside request startupruleguidanceDoes the schema step run before traffic shifts, and never at replica startup?
litespec/quality/operations#bound-external-callsBound external callsruleguidanceDoes every network call declare a timeout, a cancellation path, and bounded idempotent retries?
litespec/quality/operations#cover-the-baseline-alert-setCover the baseline alert setruleguidanceDoes baseline coverage include sustained readiness failures, unexpected HTTP errors, release-flow latency, PostgreSQL outages, and failed deployments?
litespec/quality/operations#define-actionable-baseline-alertsDefine actionable baseline alertsruleguidanceDoes every baseline alert declare owner, threshold, window, severity, and runbook?
litespec/quality/operations#define-backup-and-restore-behaviorDefine backup and restore behaviorruleguidanceDoes the release document owner, schedule, retention, encryption, location, command, and objectives?
litespec/quality/operations#emit-correlated-diagnosticsEmit correlated diagnosticsruleguidanceDo logs and traces carry correlation identifiers, and metrics service labels?
litespec/quality/operations#exercise-a-restore-before-the-first-production-dataExercise a restore before the first production dataruleguidanceDid the project rehearse a restore on representative data before production data?
litespec/quality/operations#exercise-every-runbook-before-releaseExercise every runbook before releaseruleguidanceDoes every required runbook carry a dated rehearsal in the operations log?
litespec/quality/operations#keep-deployment-descriptors-togetherKeep deployment descriptors togetherconventionguidanceAre the deployment descriptors under one deploy/ tree, or is an Exception recorded?
litespec/quality/operations#keep-production-secrets-out-of-the-repositoryKeep production secrets out of the repositoryruleguidanceAre production values on the host, with only placeholders in the repository?
litespec/quality/operations#keep-rollback-executableKeep rollback executableruleguidanceDoes the rollback runbook state its reference, command, compatibility, and data condition?
litespec/quality/operations#keep-runbooks-near-project-documentationKeep runbooks near project documentationconventionguidanceIs every runbook under docs/runbooks/ with its sections, or is an Exception recorded?
litespec/quality/operations#list-every-sub-processorList every sub-processorruleguidanceDoes every provider the code calls appear as a provider Actor?
litespec/quality/operations#name-a-runbook-on-every-alertName a runbook on every alertruleguidanceDoes every alert name the runbook that answers it?
litespec/quality/operations#operate-background-work-independentlyOperate background work independentlyruleguidanceDoes the Worker publish its own health, rates, counts, age, and shutdown behavior?
litespec/quality/operations#pass-trace-context-in-the-w3c-formatPass trace context in the W3C formatruleguidanceDoes one propagator read and write W3C trace context on every host?
litespec/quality/operations#report-liveness-from-every-recurring-jobReport liveness from every recurring jobruleguidanceDoes every recurring job report liveness that pages a person on silence?
litespec/quality/operations#route-each-severity-to-a-declared-destinationRoute each severity to a declared destinationruleguidanceDoes every severity state its destination and expected response time?
litespec/quality/operations#separate-liveness-and-readinessSeparate liveness and readinessruleguidanceDoes liveness ignore dependencies while readiness checks the critical ones?
litespec/quality/operations#start-the-stack-with-one-local-commandStart the stack with one local commandruleguidanceDoes one command named in AGENTS.md start every local resource?
litespec/quality/operations#use-a-repeatable-deploymentUse a repeatable deploymentruleguidanceDoes every deployment use versioned artifacts, declared configuration, and a passing release job?
litespec/quality/operations#use-stable-service-namesUse stable service namesconventionguidanceAre service, resource, meter, and trace names identical across environments, or is an Exception recorded?
litespec/quality/security#apply-erasure-and-export-to-every-storeApply erasure and export to every storeruleguidanceDo erasure and export reach every store, with backups expiring inside their bound?
litespec/quality/security#authorize-each-target-resourceAuthorize each target resourceruleguidanceDoes the guard authorize every protected operation from its declared permissions?
litespec/quality/security#bound-abuse-at-exposed-endpointsBound abuse at exposed endpointsruleguidanceDoes every exposed endpoint declare its limit, and answer 429 above it?
litespec/quality/security#derive-the-actor-from-claimsDerive the actor from claimsruleguidanceDoes actor resolution follow the WebApi boundary rules this rule cites?
litespec/quality/security#keep-a-personal-data-inventory-per-storeKeep a personal-data inventory per storeruleguidanceDoes the inventory name the fields, purposes, and retention of each store?
litespec/quality/security#keep-backend-authentication-provider-neutralKeep backend authentication provider-neutralruleguidanceDoes the backend validate issuer, audience, signature, lifetime, and claims, and refuse identity headers?
litespec/quality/security#keep-one-limit-store-across-replicasKeep one limit store across replicasruleguidanceDo all replicas read rate and concurrency counters from one store?
litespec/quality/security#keep-personal-data-out-of-logsKeep personal data out of logsruleguidanceIs personal data absent in clear from every log, trace, and diagnostic record?
litespec/quality/security#keep-secrets-out-of-tracked-and-observable-dataKeep secrets out of tracked and observable dataruleguidanceIs every secret absent from source, logs, traces, messages, files, URLs, snapshots, layers, and browser storage?
litespec/quality/security#keep-secure-headers-in-host-configurationKeep secure headers in host configurationconventionguidanceAre the secure headers defined in one host location, or is an Exception recorded?
litespec/quality/security#limit-public-error-detailLimit public error detailruleguidanceDoes every public error use the HTTP API error contract?
litespec/quality/security#minimize-sensitive-dataMinimize sensitive dataruleguidanceDoes every use case handle only the fields its input and results declare?
litespec/quality/security#parameterize-database-inputParameterize database inputruleguidanceDoes every external value reach the database through a query API or parameter?
litespec/quality/security#protect-browser-boundariesProtect browser boundariesruleguidanceDoes every frontend apply escaping, policy, headers, redirect validation, and forgery protection?
litespec/quality/security#protect-live-data-at-restProtect live data at restruleguidanceIs every live store encrypted, or covered by an Exception naming this rule?
litespec/quality/security#record-security-audit-eventsRecord security audit eventsruleguidanceDoes every security audit event record actor, action, target, outcome, timestamp, trace, and reason?
litespec/quality/security#report-a-breach-within-its-deadlineReport a breach within its deadlineruleguidanceDoes the breach procedure name an owner, a backup person, and meet its deadline?
litespec/quality/security#restrict-a-protected-collection-in-the-databaseRestrict a protected collection in the databaseruleguidanceDoes every protected collection query apply its scope as a database predicate before paging?
litespec/quality/security#restrict-cross-origin-accessRestrict cross-origin accessruleguidanceDoes the cross-origin policy list origins, methods, headers, and credential mode without a wildcard origin?
litespec/quality/security#rotate-production-secretsRotate production secretsruleguidanceDoes every production secret have a secret-inventory entry and a revocation runbook?
litespec/quality/security#test-the-resource-authorization-matrixTest the resource authorization matrixconventionguidanceDoes every protected operation pass each caller case the convention lists, or is an Exception recorded?
litespec/quality/security#treat-an-unsalted-digest-as-personal-dataTreat an unsalted digest as personal dataruleguidanceDoes every unsalted digest of personal data receive personal-data handling?
litespec/quality/security#use-deny-by-default-policiesUse deny-by-default policiesconventionguidanceIs every new endpoint protected by default, or is an Exception recorded?
litespec/quality/security#use-one-current-actor-abstractionUse one current actor abstractionconventionguidanceDoes WebApi expose one current-actor accessor, or does an Exception record the replacement?
litespec/quality/security#validate-at-trust-boundariesValidate at trust boundariesruleguidanceDoes every trust boundary validate its shape and metadata before use?

workspace#

IDProvisionKindMarkEvidence
litespec/workspace/config#keep-documentation-directories-out-of-build-artifact-ignore-rulesKeep documentation directories out of build-artifact ignore rulesconventionguidanceDoes git check-ignore report no match for each documentation directory?
litespec/workspace/config#keep-environment-examples-beside-applicationsKeep environment examples beside applicationsconventionguidanceDoes each frontend and host directory hold an environment example with safe values?
litespec/workspace/config#keep-local-overrides-untrackedKeep local overrides untrackedconventionguidanceAre local overrides ignored with no second tracked environment-specific source?
litespec/workspace/config#keep-logging-configuration-provider-neutralKeep logging configuration provider-neutralconventionguidanceDoes application source use only logging abstractions with exporters in hosts?
litespec/workspace/config#keep-secrets-outside-source-controlKeep secrets outside source controlruleguidanceDoes each tracked configuration file carry only safe defaults and placeholders?
litespec/workspace/config#pin-the-javascript-toolchainPin the JavaScript toolchainruleguidanceDoes root package.json declare the manifest pnpm release and a matching Node engine?
litespec/workspace/config#pin-the-react-version-in-the-eslint-flat-configPin the React version in the ESLint flat configruleguidanceDoes each React flat config set a concrete settings.react.version?
litespec/workspace/config#use-one-frontend-dependency-graphUse one frontend dependency graphruleguidanceDoes the workspace use one root manifest and lockfile with no nested lockfile tracked?
litespec/workspace/config#validate-backend-configuration-at-startupValidate backend configuration at startupruleguidanceDoes each backend section bind a validated settings type that fails startup on bad values?
litespec/workspace/config#validate-frontend-environment-accessValidate frontend environment accessruleguidanceDoes each frontend read environment values only through its validated module with server values separated?
litespec/workspace/dependencies#approve-new-packages-explicitlyApprove new packages explicitlyruleguidanceDoes each package outside the manifest carry a decision with use case, alternatives, layer, cost, and removal condition?
litespec/workspace/dependencies#assign-each-baseline-package-to-its-owning-layerAssign each baseline package to its owning layerconventionguidanceDoes each baseline package sit in the layer the ownership table assigns?
litespec/workspace/dependencies#follow-the-declared-dependency-graphFollow the declared dependency graphruleguidanceDoes each layer or module dependency follow the declared graph with no added edge?
litespec/workspace/dependencies#keep-application-free-of-provider-packagesKeep Application free of provider packagesruleguidanceDoes Application depend only on abstractions and the declared read boundary?
litespec/workspace/dependencies#keep-domain-dependency-freeKeep Domain dependency-freeruleguidanceDoes Domain depend on no external package or framework?
litespec/workspace/dependencies#keep-frontend-applications-isolatedKeep frontend applications isolatedruleguidanceIs each frontend free of imports from another application's source or internal feature files?
litespec/workspace/dependencies#keep-generated-packages-dependency-lightKeep generated packages dependency-lightconventionguidanceDoes the generated types package stay dependency-free with a thin client?
litespec/workspace/dependencies#keep-providers-in-infrastructureKeep providers in InfrastructureruleguidanceDoes each provider adapter live in Infrastructure apart from the read boundary?
litespec/workspace/dependencies#keep-test-dependencies-in-test-projectsKeep test dependencies in test projectsconventionguidanceDo production projects reference no test package?
litespec/workspace/dependencies#keep-the-approved-web-ui-dependency-boundaryKeep the approved web UI dependency boundaryruleguidanceDoes each React frontend take UI packages from uiBaseline and each Svelte one from uiBaselineSvelte?
litespec/workspace/dependencies#pin-every-dependency-version-centrallyPin every dependency version centrallyruleguidanceDoes every version resolve through central management or the lockfile at the manifest or consumer pin?
litespec/workspace/naming#align-business-names-across-layersAlign business names across layersconventionguidanceDoes one business name span each module across layers and documentation?
litespec/workspace/naming#anchor-aggregate-owned-types-on-the-aggregate-rootAnchor aggregate-owned types on the aggregate rootruleguidanceDoes each aggregate-owned type name begin with its aggregate root name?
litespec/workspace/naming#avoid-generic-type-namesAvoid generic type namesconventionguidanceDoes each type name avoid the generic names this rule lists when a narrower name exists?
litespec/workspace/naming#derive-boundary-names-from-the-ubiquitous-termDerive boundary names from the ubiquitous termconventionguidanceDoes each route segment and field name derive from its current ubiquitous term?
litespec/workspace/naming#keep-namespaces-aligned-with-foldersKeep namespaces aligned with foldersconventionguidanceDoes each namespace match its folder path beneath the project root?
litespec/workspace/naming#name-asynchronous-operations-completelyName asynchronous operations completelyruleguidanceDoes each asynchronous operation reveal its asynchrony in its name and accept cancellation explicitly when cancelable?
litespec/workspace/naming#name-exceptions-by-failed-ruleName exceptions by failed ruleruleguidanceDoes each Domain exception name lead with its root and name its reason?
litespec/workspace/naming#use-architectural-suffixesUse architectural suffixesruleguidanceDoes each architectural type carry the suffix its role requires?
litespec/workspace/naming#use-current-language-featuresUse current language featuresruleguidanceDoes production code target the pinned language version with current constructs?
litespec/workspace/naming#use-intent-revealing-boolean-namesUse intent-revealing boolean namesruleguidanceDoes each boolean member use an intent-revealing prefix or verb?
litespec/workspace/naming#use-predictable-frontend-namesUse predictable frontend namesruleguidanceDoes each frontend follow the folder, component, and hook naming form?
litespec/workspace/structure#declare-size-and-application-stacks-in-project-configDeclare size and application stacks in project configruleguidanceDoes litespec.project.json declare size and one stack for the backend and each frontend?
litespec/workspace/structure#keep-consumer-documentation-at-the-rootKeep consumer documentation at the rootruleguidanceDo all project records live under the root docs/ directory?
litespec/workspace/structure#keep-generated-api-contracts-in-packagesKeep generated API contracts in packagesconventionguidanceDo generated types and the typed client sit under packages/ with two frontends?
litespec/workspace/structure#keep-orientation-documents-separate-from-canonical-recordsKeep orientation documents separate from canonical recordsruleguidanceDoes each README under docs/ link to its record rather than restate it?
litespec/workspace/structure#keep-production-and-test-code-separateKeep production and test code separateruleguidanceDoes production code sit under src/ and test code under tests/?
litespec/workspace/structure#keep-runnable-applications-under-appsKeep runnable applications under appsruleguidanceDoes each runnable application sit under apps/ and each library under packages/?
litespec/workspace/structure#keep-scripts-at-the-rootKeep scripts at the rootconventionguidanceDo bootstrap, release, and CI helper scripts sit under root scripts/?
litespec/workspace/structure#keep-the-generated-model-out-of-source-controlKeep the generated model out of source controlruleguidanceIs the generated .model/ folder untracked?
litespec/workspace/structure#limit-shared-typescript-packagesLimit shared TypeScript packagesruleguidanceDoes each shared package have two consumers or carry generated output?
litespec/workspace/structure#name-frontends-by-audienceName frontends by audienceconventionguidanceDoes each directory under apps/ carry an audience name?
litespec/workspace/structure#use-the-canonical-root-treeUse the canonical root treeruleguidanceDoes the workspace match the canonical tree with records at their homes?