Skip to content

LiteSpec 4.0.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 01:09
· 77 commits to main since this release

LiteSpec 4.0.0 is a standard for specification-driven development of one bounded-context business application by people and coding agents. It defines a strict specification model of linked records beside graded engineering provisions, with git as the decision record. A consumer pins this release in reviewedLiteSpecVersion. The release takes effect as the v4.0.0 tag.

Part A: The Nature of LiteSpec

  • The specification model is strict: a record follows its schema, links resolve, and code and tests mark the records they serve; a violation is a defect.
  • Each provision states its strength, rule, default or advice, and where it applies; a check exists where one is cheap and sure.
  • Git is the decision record: a record in the repository is decided, and the pull request that changes it is its review.
  • The specification is closed: an agent builds what the specification states and takes anything missing to the owner or the backlog board.
  • Every record is about the software: what the application does, holds, refuses at runtime or runs on.

Part B: Git Is the Decision Record

  • Records carry no history of their own; git carries who changed what and when.
  • Completion is computed from code, tests and passing scenarios, and the book shows it first.
  • An exception carries reason, exit and expiry; an expired exception is a blocking finding.
  • A date about the outside world sits with its source as readOn.

Part C: Eight Commands

  • The CLI has eight commands: init, new, rename, model check, model format, model query, book and rules.
  • model check is the one command CI runs: schema, folders, names, links, locality, reachability, marks and exceptions.
  • model render has three regions: alert-inventory, runbook-index and operations-log.
  • An additional command, finding code, analyzer rule or generated file needs an owner decision that records it.

Part D: Provisions by Situation

  • Each page declares its stack and layer; a provision adds Applies to only when narrower than its page.
  • Every provision states Strength: rule, default or advice.
  • The provision index carries scope and strength; the site groups Standard, Reference, Learn and LiteSpec's own records.

Part E: Rules for the File at Hand

  • litespec rules <path or record id> lists the applying provisions grouped by strength, with why each was retrieved; --full adds rationale and example.
  • Project conventions and departures merge into the result; a departure shows in place of the provision it replaces.
  • A retrieval evaluation with a precision target proves the command.

Part F: The Consumer Uses the Same Structure

  • Layer and artifact derive from the stack structure and the records a file marks.
  • Project conventions live in .litespec/governance/conventions/ in provision shape.
  • A departure names the provision it replaces and a scope.
  • Records use the same layer and artifact terms, so one query answers file, records and provisions together.

Part G: Surfaces That State the Nature

  • The README, AGENTS.md, the core pages, the command pages, the templates and this changelog state the nature above.
  • The docs index groups pages with generated counts; the site navigation follows the same groups.

Part H: Consumers Adopt the Whole Contract

  • A consumer pins one release and adopts a later release by accepting its whole contract.
  • A consumer declares the conformance level it claims in .litespec/project.json: records, traced or full. The levels nest, and model check, the book, rules and the analyzers report only the part of the contract the level claims.
  • At records a project keeps its own code layout and needs no stack; at traced its code and tests mark their records and its test runs prove scenarios, in its own layout; at full it takes the selected stacks, the code layout, the analyzers and the operations provisions.
  • Provision identifiers stay stable within a major version; the changelog of each release lists the provision changes since the previous tag, generated by litespec-maintain changelog.

Part I: Every Record Is About the Software

  • Intent reads module, then feature, then requirement; Behavior reads module, then aggregate, then use case.
  • Features sit under intent/modules/<module>/features/ with their requirements as entries; a requirement identifier has the form requirement/<feature>.<name>.
  • A folder under intent/modules/ that names no declared module is a blocking finding.
  • Reachability blocks: a goal reaches a journey or a quality requirement, a problem reaches a feature or requirement, a feature or requirement reaches Behavior, a constraint is answered, research is cited, and a decision decides a record that reaches Behavior.
  • Identifiers are short and unique in the product; the qualified identifier is computed from identifier segments plus placement, never written.

Part J: One Placement Model for Every Layer

  • Every record has one parent; the container is the parent; product, module, aggregate and entry point are the only folder nodes.
  • Behavior, Implementation and Governance place each type per the placement table in the model page; Proof holds no authored records.
  • Code and tests match the qualified identifier of the record they mark in folder and namespace, including frontend module folders.
  • Module dependsOn holds no cycle; an integration event has one publishing module.

Part K: Fields That State the Product

  • Every record carries type, id, title, terms and records plus its type fields; every record carries one summary, and a record that makes a testable claim carries one statement.
  • The project file carries project, size, shape, stacks, stackConfig, paths, marks, proof, dependencies, screenshots, refusals, selectedExtensions and reviewedLiteSpecVersion.
  • risk sits on permission only; setBy uses product, operator or tenant; a rule names where retained facts live in retainedIn; a use case states its field read and write lifecycle.

Part L: Complete Work Before Merging

  • A branch may be incomplete; what merges is complete. model check reports reachability locally and blocks in the pull-request check; an exception with expiresOn parks one record.
  • The folder wins: an identifier whose home segment disagrees with its folder is a blocking finding; each name segment is unique in the product.
  • Tiers: G reads records and always blocks, S reads code and blocks where qualified, A reports and never blocks.
  • An exception is live when present and unexpired.

Part M: The Module Layout as the Default Architecture

  • Layers are roles: Domain, Application, Infrastructure and WebApi with the reference table the architecture page states.
  • One application project holds every module; hosts hold composition and HTTP plumbing.
  • The folder tree uses closed folder sets per level; use case folders are flat; cross-module access runs only through Contracts/ along dependsOn.
  • The layer-projects extension holds the five-project layout for consumers that select it.

Part N: Gaps Closed in the Standard

  • A deviation is an exception of kind departure whose covers names the provision it replaces.
  • Product patterns live in implementation/patterns/; product copy rules live in implementation/writing/; document pages may sit at a layer root.
  • Module rules live in behavior/modules/<module>/rules/; adapter tests sit under the adapter's Infrastructure/ path.
  • Guidance precedence lives in one provision on the agent page.

Part O: Checks a Partial Adopter Can Read

  • Findings about Intent that no Behavior reaches yet report locally and block in the pull-request check, so Intent can run ahead of Behavior.
  • The .NET reader reads several web and worker hosts, reports a default project root that matches nothing as reader-missing, and at traced finds an aggregate root by its mark and its state record.
  • A JUnit test case proves a Behavior scenario through a litespec.proves property, so a runner whose steps carry no mark, or a stack with no code reader, still proves its scenarios.
  • model check lists level A findings as a summary by code unless --all is given, and its JSON output maps G, S and A to error, warning and note.
  • init writes a project file the schema accepts for every preset, including the records preset, and no size requires an exception record.

Part P: Analyzers as Proof and a Smaller Rules Output

  • A structural boundary needs an architecture test only where no analyzer or model check finding covers it; analyzer-lowering-unrecorded reports an analyzer rule lowered or switched off without an exception, so an analyzer can stand as the proof.
  • LS1013 reports a switch over a state or closed-set record hierarchy that leaves a sealed case to its discard arm; the tests, not the compiler, catch a new case.
  • LS2012 also reports a handler that takes the authorization guard.
  • litespec rules prints statements only for the provisions that need judgment, the checked provisions as one line with their codes, and the layer-wide provisions by identifier; every provision on a page that names kinds of file names its own.

Provision Changes Since v3.0.0

Added (238):

  • litespec/backend/architecture#organize-code-by-module-aggregate-and-use-case
  • litespec/backend/architecture#read-another-module-only-through-its-contracts
  • litespec/backend/architecture#restrict-commands-to-their-own-module-aggregates
  • litespec/backend/architecture#subscribe-across-modules-only-to-integration-events
  • litespec/backend/dotnet/api#place-endpoints-in-their-use-case-folders
  • litespec/backend/dotnet/application#use-the-use-case-folder-layout
  • litespec/backend/dotnet/architecture#follow-declared-module-dependencies
  • litespec/backend/dotnet/architecture#follow-layer-direction-in-every-file
  • litespec/backend/dotnet/architecture#keep-application-types-in-their-layer-folders
  • litespec/backend/dotnet/architecture#keep-closed-folder-sets-at-every-level
  • litespec/backend/dotnet/architecture#keep-host-endpoints-in-hosts
  • litespec/backend/dotnet/architecture#keep-use-case-folders-isolated
  • litespec/backend/dotnet/architecture#mirror-modules-aggregates-and-use-cases-in-one-namespace-tree
  • litespec/backend/dotnet/architecture#reach-another-module-only-through-contracts
  • litespec/backend/dotnet/architecture#separate-the-shared-kernel-from-the-modules
  • litespec/backend/dotnet/architecture#use-one-public-assembly-marker
  • litespec/backend/dotnet/domain#use-the-domain-layer-folder-layout
  • litespec/backend/dotnet/ext/layer-projects#keep-application-dependencies-narrow
  • litespec/backend/dotnet/ext/layer-projects#keep-domain-package-free
  • litespec/backend/dotnet/ext/layer-projects#keep-net-production-and-test-projects-separate
  • litespec/backend/dotnet/ext/layer-projects#keep-one-application-assembly
  • litespec/backend/dotnet/ext/layer-projects#keep-the-test-projects-the-size-requires
  • litespec/backend/dotnet/ext/layer-projects#mirror-modules-in-folders-and-namespaces
  • litespec/backend/dotnet/ext/layer-projects#run-litespecanalyzers-in-every-application-project
  • litespec/backend/dotnet/ext/layer-projects#use-five-application-projects
  • litespec/backend/dotnet/ext/layer-projects#use-the-domain-module-layout
  • litespec/backend/dotnet/ext/layer-projects#use-the-endpoint-folder-layout
  • litespec/backend/dotnet/ext/layer-projects#use-the-operation-folder-layout
  • litespec/backend/dotnet/ext/layer-projects#use-the-project-reference-graph
  • litespec/backend/dotnet/ext/layer-projects#use-this-baseline-package-ownership
  • litespec/backend/dotnet/ext/layer-projects#use-this-infrastructure-layout
  • litespec/backend/dotnet/packages#run-litespec-analyzers-in-the-business-projects-and-hosts
  • litespec/backend/dotnet/persistence#use-the-persistence-layer-folder-layout
  • litespec/backend/dotnet/stack#identify-an-aggregate-root-by-its-mark-and-state-record-at-traced
  • litespec/backend/dotnet/stack#read-every-declared-web-and-worker-host
  • litespec/backend/dotnet/stack#report-a-stack-root-that-matches-no-folder
  • litespec/core/access#keep-permission-lists-to-entries
  • litespec/core/agent#load-applicable-provisions-before-editing
  • litespec/core/agent#name-judged-provisions-in-the-completion-report
  • litespec/core/agent#raise-open-figures-to-the-owner
  • litespec/core/authoring#generate-the-provision-diff-for-each-release
  • litespec/core/domain-model#name-each-module-after-its-capability
  • litespec/core/intent#admit-only-outside-pains-as-problems
  • litespec/core/intent#define-each-recurring-capitalized-phrase
  • litespec/core/intent#describe-every-journey
  • litespec/core/intent#explain-every-problem-in-four-sections
  • litespec/core/intent#grade-problem-evidence-by-kind
  • litespec/core/intent#group-product-records-by-module
  • litespec/core/intent#keep-actors-to-people-and-organizations
  • litespec/core/intent#keep-company-operation-out-of-intent
  • litespec/core/intent#move-every-goal-with-a-journey-or-a-quality-requirement
  • litespec/core/intent#name-each-sibling-problem-or-merge-it
  • litespec/core/intent#name-every-actor-from-a-journey-a-problem-or-an-access-position
  • litespec/core/intent#name-no-solution-in-a-problem-statement
  • litespec/core/intent#perform-each-journey-step-with-an-actor-or-a-system
  • litespec/core/intent#reach-every-intent-record-with-behavior
  • litespec/core/intent#shape-each-module-page
  • litespec/core/intent#state-each-feature-with-its-offering
  • litespec/core/intent#state-the-cost-and-workaround-of-every-problem
  • litespec/core/layers#raise-open-needs-as-owner-questions-or-backlog-items
  • litespec/core/layers#send-commercial-and-observable-figures-to-the-owner
  • litespec/core/maintaining#keep-provision-identifiers-stable-within-a-major-version
  • litespec/core/model#compute-completion-in-the-builder
  • litespec/core/model#connect-across-modules-only-through-declared-dependencies
  • litespec/core/model#declare-size-and-stacks
  • litespec/core/model#hold-module-rules-in-rule-sets
  • litespec/core/model#keep-each-name-unique-in-the-product
  • litespec/core/model#keep-module-dependencies-free-of-cycles
  • litespec/core/model#move-each-identifier-with-its-module
  • litespec/core/model#publish-each-integration-event-from-one-module
  • litespec/core/model#reach-behavior-from-every-intent-record
  • litespec/core/model#record-each-screens-captures-from-the-gallery
  • litespec/core/model#take-decision-numbers-from-one-sequence
  • litespec/core/principles#build-only-what-the-specification-states
  • litespec/core/principles#complete-work-before-merging
  • litespec/core/principles#compute-completion-from-code-and-tests
  • litespec/core/principles#keep-git-as-the-decision-record
  • litespec/core/principles#keep-tools-small
  • litespec/core/principles#raise-what-a-lower-layer-needs-to-the-owner
  • litespec/core/principles#state-the-strength-of-every-provision
  • litespec/core/principles#treat-code-beyond-silent-intent-as-evidence-for-an-owner-question
  • litespec/core/principles#write-every-record-about-the-software
  • litespec/core/privacy#complete-the-subject-export-before-erasure
  • litespec/core/privacy#discard-rows-that-leave-no-trace
  • litespec/core/privacy#keep-a-tombstone-where-deletion-stays-visible
  • litespec/core/privacy#keep-tombstone-fields-minimal
  • litespec/core/privacy#move-data-to-its-next-controller-instead-of-erasing
  • litespec/core/privacy#purge-erased-data-from-restored-backups
  • litespec/core/privacy#record-which-duty-wins-each-conflict
  • litespec/core/privacy#remove-child-rows-through-their-parent-only
  • litespec/core/privacy#require-a-fresh-export-after-changes
  • litespec/core/privacy#run-one-sweep-job-per-data-class
  • litespec/core/privacy#scope-erasure-to-what-the-subject-requested
  • litespec/core/privacy#state-the-erasure-sentence-in-intent
  • litespec/core/scope#declare-the-conformance-level
  • litespec/core/scope#keep-every-litespec-file-under-one-folder
  • litespec/core/scope#keep-every-record-about-the-software
  • litespec/core/scopes#declare-the-page-scope
  • litespec/core/scopes#depart-from-a-rule-only-through-a-recorded-exception
  • litespec/core/scopes#give-every-provision-a-conformance-level
  • litespec/core/scopes#name-the-artifact-of-every-provision-on-a-page-that-names-one
  • litespec/core/scopes#record-each-replaced-default
  • litespec/core/scopes#state-applies-to-only-when-narrower
  • litespec/core/scopes#use-only-declared-scope-values
  • litespec/core/system#drive-work-from-records
  • litespec/core/use-cases#write-prose-on-every-use-case
  • litespec/core/writing#apply-plain-mechanics
  • litespec/core/writing#comment-on-why-not-what
  • litespec/core/writing#compare-real-options-in-each-decision-record
  • litespec/core/writing#give-each-explanation-file-its-fixed-sections
  • litespec/core/writing#give-each-paragraph-one-idea
  • litespec/core/writing#keep-company-facts-out-of-intent-prose
  • litespec/core/writing#keep-each-record-sentence-within-twenty-five-words
  • litespec/core/writing#name-each-title-in-its-record-type-form
  • litespec/core/writing#open-each-summary-with-who-and-what-is-at-stake
  • litespec/core/writing#put-the-actor-first
  • litespec/core/writing#state-each-statement-without-modal-words
  • litespec/core/writing#use-literal-words
  • litespec/core/writing#write-each-changelog-as-a-release-comparison
  • litespec/core/writing#write-each-documentation-page-as-one-kind
  • litespec/core/writing#write-every-record-title-in-title-case
  • litespec/core/writing#write-for-the-reader-who-arrives-cold
  • litespec/ext/automation#record-the-automation-catalog
  • litespec/ext/compat#record-breaking-behavior-changes-as-decisions
  • litespec/ext/compat#reject-breaking-diffs-without-authorization
  • litespec/ext/delivery#accept-every-shipped-package-license-explicitly
  • litespec/ext/delivery#apply-oci-release-labels
  • litespec/ext/delivery#apply-schema-work-before-traffic
  • litespec/ext/delivery#apply-the-documented-defaults
  • litespec/ext/delivery#attach-dashboard-links-to-production-objectives
  • litespec/ext/delivery#build-from-the-workspace-root
  • litespec/ext/delivery#build-release-images-in-stages
  • litespec/ext/delivery#copy-only-runtime-files
  • litespec/ext/delivery#cover-the-baseline-alert-set
  • litespec/ext/delivery#declare-writable-paths-and-limits
  • litespec/ext/delivery#define-actionable-baseline-alerts
  • litespec/ext/delivery#define-backup-and-restore-behavior
  • litespec/ext/delivery#enforce-the-supply-chain-gate
  • litespec/ext/delivery#exclude-build-material-from-runtime-images
  • litespec/ext/delivery#exclude-build-timestamps-from-contracts
  • litespec/ext/delivery#exclude-environment-configuration-from-images
  • litespec/ext/delivery#exclude-insecure-frontend-secret-carriers
  • litespec/ext/delivery#exercise-a-restore-before-the-first-production-data
  • litespec/ext/delivery#exercise-every-runbook-before-release
  • litespec/ext/delivery#keep-a-canonical-job-graph
  • litespec/ext/delivery#keep-a-first-release-readiness-record
  • litespec/ext/delivery#keep-deployment-descriptors-together
  • litespec/ext/delivery#keep-each-alert-threshold-to-its-requirements-measure
  • litespec/ext/delivery#keep-mutable-data-external
  • litespec/ext/delivery#keep-rollback-executable
  • litespec/ext/delivery#keep-schema-work-out-of-startup
  • litespec/ext/delivery#keep-scripts-at-the-root
  • litespec/ext/delivery#limit-container-privileges
  • litespec/ext/delivery#match-every-shipped-package-to-its-pin
  • litespec/ext/delivery#meet-release-readiness-gates
  • litespec/ext/delivery#place-dockerfiles-beside-deployables
  • litespec/ext/delivery#promote-verified-artifacts
  • litespec/ext/delivery#protect-the-default-branch
  • litespec/ext/delivery#provide-release-data-recovery
  • litespec/ext/delivery#provide-release-delivery-controls
  • litespec/ext/delivery#provide-release-operating-visibility
  • litespec/ext/delivery#publish-a-book-preview-for-every-change
  • litespec/ext/delivery#record-each-drill-run-as-a-check-result
  • litespec/ext/delivery#record-every-branch-protection-bypass
  • litespec/ext/delivery#record-image-digests
  • litespec/ext/delivery#record-operating-readiness
  • litespec/ext/delivery#record-release-evidence
  • litespec/ext/delivery#report-liveness-from-every-recurring-job
  • litespec/ext/delivery#review-schema-artifacts
  • litespec/ext/delivery#route-each-severity-to-a-declared-destination
  • litespec/ext/delivery#run-images-as-non-root
  • litespec/ext/delivery#run-the-application-as-pid-1
  • litespec/ext/delivery#separate-frontend-configuration-classes
  • litespec/ext/delivery#set-sufficient-shutdown-time
  • litespec/ext/delivery#state-availability-objectives-as-openslo-files
  • litespec/ext/delivery#supply-runtime-configuration-externally
  • litespec/ext/delivery#test-released-traffic
  • litespec/ext/delivery#treat-check-warnings-as-failures
  • litespec/ext/delivery#use-a-repeatable-deployment
  • litespec/ext/delivery#use-protected-frontend-secret-delivery
  • litespec/ext/delivery#use-stable-service-names
  • litespec/ext/delivery#wait-for-replica-readiness
  • litespec/ext/delivery#write-runtime-logs-to-streams
  • litespec/ext/jobs#apply-item-read-authorization
  • litespec/ext/jobs#audit-export-reads
  • litespec/ext/jobs#avoid-speculative-reporting-systems
  • litespec/ext/jobs#bound-the-ingest-buffer
  • litespec/ext/jobs#confirm-bulk-money-actions-out-of-band
  • litespec/ext/jobs#declare-export-paging
  • litespec/ext/jobs#declare-ingest-steps-in-order
  • litespec/ext/jobs#declare-the-engine-carrier
  • litespec/ext/jobs#define-export-encoding-and-columns
  • litespec/ext/jobs#define-report-limits
  • litespec/ext/jobs#define-the-closed-drop-reason-set
  • litespec/ext/jobs#discard-poison-records-after-three-attempts
  • litespec/ext/jobs#escape-formula-leading-export-values
  • litespec/ext/jobs#expose-drop-counts-per-reason
  • litespec/ext/jobs#keep-engine-retry-configuration-in-implementation
  • litespec/ext/jobs#keep-raw-sql-in-infrastructure
  • litespec/ext/jobs#keep-report-definitions-in-application
  • litespec/ext/jobs#keep-report-providers-in-infrastructure
  • litespec/ext/jobs#map-each-engine-step-to-one-use-case
  • litespec/ext/jobs#name-engine-steps-after-use-cases
  • litespec/ext/jobs#order-queue-items-by-score
  • litespec/ext/jobs#order-unscored-queues-by-age
  • litespec/ext/jobs#parameterize-report-sql
  • litespec/ext/jobs#protect-export-output
  • litespec/ext/jobs#read-enrichment-data-from-declared-sources
  • litespec/ext/jobs#record-one-drop-reason-per-dropped-record
  • litespec/ext/jobs#record-reporting-need
  • litespec/ext/jobs#reject-unmapped-engine-steps
  • litespec/ext/jobs#release-claims-past-their-lease
  • litespec/ext/jobs#review-report-plans
  • litespec/ext/jobs#run-budget-exceeding-exports-in-worker
  • litespec/ext/jobs#scope-export-output-to-the-tenant
  • litespec/ext/jobs#separate-worker-orchestration
  • litespec/ext/jobs#show-a-preview-before-bulk-money-actions
  • litespec/ext/jobs#show-the-score-beside-each-item
  • litespec/ext/jobs#state-each-step-compensation
  • litespec/ext/jobs#state-the-claim-mode
  • litespec/ext/jobs#state-the-freshness-consequence
  • litespec/ext/jobs#support-report-cancellation
  • litespec/ext/outbox#authenticate-and-authorize-subscriptions
  • litespec/ext/outbox#bound-realtime-resources
  • litespec/ext/outbox#declare-realtime-freshness
  • litespec/ext/outbox#place-realtime-code-at-outer-boundaries
  • litespec/ext/outbox#reconnect-and-refresh-authoritative-state
  • litespec/ext/outbox#record-realtime-need
  • litespec/ext/outbox#record-transport-support
  • litespec/ext/outbox#reject-cosmetic-realtime-adoption
  • litespec/ext/outbox#reject-unbounded-slow-client-buffering
  • litespec/ext/outbox#revalidate-long-lived-access
  • litespec/ext/outbox#subscribe-through-narrow-functions
  • litespec/ext/outbox#tolerate-notification-ordering-differences
  • litespec/ext/outbox#use-server-sent-events-for-notifications
  • litespec/ext/outbox#use-signalr-for-interactive-messaging
  • litespec/frontend/web/components#keep-component-boundaries-typed
  • litespec/quality/operations#name-every-runbook-from-an-alert-job-reaction-or-failure-policy

Removed (439):

  • litespec/backend/api#state-an-unexpressible-transition-as-a-custom-method
  • litespec/backend/api#use-put-for-a-whole-replacement
  • litespec/backend/architecture#keep-one-application-part
  • litespec/backend/architecture#organize-every-layer-by-module-and-use-case
  • litespec/backend/architecture#use-five-application-parts
  • litespec/backend/dotnet/api#use-the-endpoint-folder-layout
  • litespec/backend/dotnet/application#use-the-operation-folder-layout
  • litespec/backend/dotnet/architecture#keep-one-application-assembly
  • litespec/backend/dotnet/architecture#mirror-modules-in-folders-and-namespaces
  • litespec/backend/dotnet/architecture#use-five-application-projects
  • litespec/backend/dotnet/architecture#use-one-public-assembly-marker-per-scanned-project
  • litespec/backend/dotnet/config#bind-setting-records-to-options
  • litespec/backend/dotnet/config#validate-backend-options-at-startup
  • litespec/backend/dotnet/domain#use-the-domain-module-layout
  • litespec/backend/dotnet/ext/efcore#apply-migrations-as-release-work
  • litespec/backend/dotnet/ext/efcore#avoid-per-aggregate-read-stores
  • litespec/backend/dotnet/ext/efcore#commit-ef-core-command-work-once
  • litespec/backend/dotnet/ext/efcore#configure-ef-core-mappings-in-infrastructure
  • litespec/backend/dotnet/ext/efcore#configure-optimistic-tokens
  • litespec/backend/dotnet/ext/efcore#configure-relational-details-explicitly
  • litespec/backend/dotnet/ext/efcore#define-ef-core-query-roots
  • litespec/backend/dotnet/ext/efcore#exclude-direct-handler-commits
  • litespec/backend/dotnet/ext/efcore#generate-migrations-for-schema-changes
  • litespec/backend/dotnet/ext/efcore#implement-query-roots-in-infrastructure
  • litespec/backend/dotnet/ext/efcore#keep-migration-files-together
  • litespec/backend/dotnet/ext/efcore#map-ef-core-concurrency-conflict
  • litespec/backend/dotnet/ext/efcore#map-stable-relational-state-shape
  • litespec/backend/dotnet/ext/efcore#map-unique-constraint-violations-to-their-refusals
  • litespec/backend/dotnet/ext/efcore#map-unsupported-state-shapes-in-infrastructure
  • litespec/backend/dotnet/ext/efcore#process-changed-aggregate-events
  • litespec/backend/dotnet/ext/efcore#project-ef-core-queries-directly
  • litespec/backend/dotnet/ext/efcore#record-ef-core-replacement-scope
  • litespec/backend/dotnet/ext/efcore#record-provider-selection
  • litespec/backend/dotnet/ext/efcore#register-one-command-post-handler
  • litespec/backend/dotnet/ext/efcore#reject-automatic-command-retry
  • litespec/backend/dotnet/ext/efcore#reject-cross-provider-outbox-storage
  • litespec/backend/dotnet/ext/efcore#reject-mixed-provider-writes
  • litespec/backend/dotnet/ext/efcore#reject-startup-schema-mutation
  • litespec/backend/dotnet/ext/efcore#resolve-cross-provider-invariants
  • litespec/backend/dotnet/ext/efcore#resolve-the-tenant-at-context-creation
  • litespec/backend/dotnet/ext/efcore#retain-domain-state-values
  • litespec/backend/dotnet/ext/efcore#retain-marten-query-boundary
  • litespec/backend/dotnet/ext/efcore#retain-unaffected-baseline-persistence
  • litespec/backend/dotnet/ext/efcore#review-migration-effects
  • litespec/backend/dotnet/ext/efcore#review-new-persisted-states
  • litespec/backend/dotnet/ext/efcore#stage-aggregate-writes-in-repositories
  • litespec/backend/dotnet/ext/efcore#stage-ef-core-outbox-records-together
  • litespec/backend/dotnet/ext/efcore#test-migration-starting-states
  • litespec/backend/dotnet/ext/efcore#use-direct-state-mapping-only-when-supported
  • litespec/backend/dotnet/ext/efcore#use-durable-outbox-delivery
  • litespec/backend/dotnet/ext/efcore#use-one-write-provider
  • litespec/backend/dotnet/ext/efcore#use-snake-case-relational-names
  • litespec/backend/dotnet/ext/efcore#use-the-ef-core-infrastructure-layout
  • litespec/backend/dotnet/naming#group-event-handlers-by-the-fact-they-handle
  • litespec/backend/dotnet/naming#name-asynchronous-methods-completely
  • litespec/backend/dotnet/naming#name-repository-variables-after-their-interface
  • litespec/backend/dotnet/naming#name-result-parts-after-their-result
  • litespec/backend/dotnet/packages#keep-application-dependencies-narrow
  • litespec/backend/dotnet/packages#keep-domain-package-free
  • litespec/backend/dotnet/packages#pin-every-dependency-centrally
  • litespec/backend/dotnet/packages#run-litespecanalyzers-in-every-application-project
  • litespec/backend/dotnet/packages#use-the-project-reference-graph
  • litespec/backend/dotnet/packages#use-this-baseline-package-ownership
  • litespec/backend/dotnet/persistence#use-this-infrastructure-layout
  • litespec/backend/dotnet/testing#enforce-architecture-rules
  • litespec/backend/dotnet/testing#gate-changed-lines-with-mutation-testing
  • litespec/backend/dotnet/testing#generate-model-tests-from-declared-transitions
  • litespec/backend/dotnet/testing#keep-the-test-projects-the-size-requires
  • litespec/backend/dotnet/testing#prove-each-scenario-with-a-test-that-calls-its-use-case
  • litespec/backend/dotnet/testing#seed-property-tests-from-example-tables
  • litespec/backend/dotnet/testing#test-http-integration-through-the-real-host
  • litespec/backend/dotnet/testing#use-one-production-faithful-integration-harness
  • litespec/backend/dotnet/workspace#declare-size-and-stacks-in-project-config
  • litespec/backend/dotnet/workspace#keep-net-production-and-test-projects-separate
  • litespec/backend/identifiers#keep-aggregate-names-unique-across-the-project
  • litespec/backend/identifiers#keep-use-case-names-unique-across-the-project
  • litespec/backend/testing#assert-architecture-boundaries-with-tests
  • litespec/core/access#keep-permission-and-entry-point-lists-to-entries
  • litespec/core/access#name-the-actor-for-every-external-system
  • litespec/core/access#route-cross-tenant-access-through-the-security-queue
  • litespec/core/agent#mark-transcribed-records-during-adoption
  • litespec/core/agent#raise-questions-in-ballots-with-recommendations
  • litespec/core/authoring#check-the-vocabulary-on-every-surface-a-reader-meets
  • litespec/core/domain-model#close-every-saga-with-named-exits-and-a-driver
  • litespec/core/domain-model#prove-every-saga-guard-and-exit-with-a-scenario
  • litespec/core/domain-model#state-each-saga-step-with-its-compensation
  • litespec/core/intent#group-product-records-by-area
  • litespec/core/intent#group-questions-into-ballots
  • litespec/core/intent#leave-business-choices-to-the-decider
  • litespec/core/intent#name-the-person-who-approved-a-decision
  • litespec/core/intent#replace-a-decision-with-a-new-record
  • litespec/core/intent#shape-each-topic-page
  • litespec/core/intent#state-each-feature-with-its-lifecycle
  • litespec/core/language#name-each-change-code-with-a-past-participle
  • litespec/core/layers#flag-records-when-a-parent-record-changes
  • litespec/core/layers#raise-commercial-and-observable-figures-as-questions
  • litespec/core/layers#raise-open-needs-as-draft-questions
  • litespec/core/model#answer-each-question-on-its-record
  • litespec/core/model#apply-guidance-precedence
  • litespec/core/model#approve-tier-1-records-by-a-person
  • litespec/core/model#declare-size-stacks-and-optional-types
  • litespec/core/model#derive-generic-refusals
  • litespec/core/model#end-transcription-at-the-named-decision
  • litespec/core/model#flag-every-record-whose-parent-changed
  • litespec/core/model#hold-approval-behind-draft-decisions
  • litespec/core/model#hold-approval-behind-open-questions
  • litespec/core/model#hold-each-finding-to-its-own-status
  • litespec/core/model#hold-transcribed-records-in-draft
  • litespec/core/model#keep-one-owner-and-status-on-every-record
  • litespec/core/model#record-approval-as-data
  • litespec/core/model#resolve-ties-by-the-later-decision
  • litespec/core/model#retire-records-with-replaces
  • litespec/core/model#use-the-layer-status-vocabulary
  • litespec/core/principles#classify-record-authority
  • litespec/core/principles#locate-record-status-in-frontmatter
  • litespec/core/principles#raise-what-a-lower-layer-needs-as-a-question
  • litespec/core/principles#refuse-approval-behind-a-draft-decision
  • litespec/core/principles#render-consequences-as-context-outside-approval
  • litespec/core/principles#retire-public-behavior-deliberately
  • litespec/core/principles#separate-authority-from-implementation
  • litespec/core/principles#treat-code-beyond-silent-intent-as-evidence-for-a-question
  • litespec/core/privacy#review-every-erasure-exemption-before-its-date
  • litespec/core/release#advise-without-gating-as-an-agent
  • litespec/core/release#approve-drafts-in-bounded-batches
  • litespec/core/release#compute-the-review-queue-from-the-model
  • litespec/core/release#draw-each-tier-3-sample-from-the-semantic-hash
  • litespec/core/release#hold-only-the-blocked-records-of-a-type-batch
  • litespec/core/release#keep-a-first-release-readiness-record
  • litespec/core/release#keep-unfinished-behavior-in-draft
  • litespec/core/release#meet-release-readiness-gates
  • litespec/core/release#name-the-security-reviewer-in-the-project-file
  • litespec/core/release#provide-release-data-recovery
  • litespec/core/release#provide-release-delivery-controls
  • litespec/core/release#provide-release-operating-visibility
  • litespec/core/release#record-operating-readiness
  • litespec/core/release#record-release-evidence
  • litespec/core/release#refuse-a-batch-holding-an-open-question
  • litespec/core/release#refuse-a-batch-without-a-named-approver
  • litespec/core/release#refuse-a-record-whose-effective-status-stays-draft
  • litespec/core/release#refuse-self-review-alone-for-tier-1-behavior
  • litespec/core/release#require-passing-scenarios-and-advisory-review-for-tier-1-behavior
  • litespec/core/release#review-behavior-changes-through-the-behavior-diff
  • litespec/core/release#review-intent-changes-through-the-intent-diff-and-ballots
  • litespec/core/release#review-the-security-queue-separately-from-reviewed
  • litespec/core/release#sample-tier-3-behavior-reviews
  • litespec/core/release#treat-check-warnings-as-failures
  • litespec/core/release#write-a-manifest-for-every-batch-approval
  • litespec/core/scope#record-the-review-configuration
  • litespec/core/scope#record-the-transcription-endpoint
  • litespec/core/system#drive-work-from-approved-records
  • litespec/core/use-cases#write-prose-on-significant-use-cases
  • litespec/ext/automation#review-the-automation-catalog
  • litespec/ext/compat#raise-breaking-behavior-changes-as-intent-questions
  • litespec/ext/compat#reject-unapproved-breaking-diffs
  • litespec/ext/containers#apply-oci-release-labels
  • litespec/ext/containers#apply-schema-work-before-traffic
  • litespec/ext/containers#build-from-the-workspace-root
  • litespec/ext/containers#build-release-images-in-stages
  • litespec/ext/containers#copy-only-runtime-files
  • litespec/ext/containers#declare-writable-paths-and-limits
  • litespec/ext/containers#exclude-build-material-from-runtime-images
  • litespec/ext/containers#exclude-build-timestamps-from-contracts
  • litespec/ext/containers#exclude-environment-configuration-from-images
  • litespec/ext/containers#exclude-insecure-frontend-secret-carriers
  • litespec/ext/containers#keep-mutable-data-external
  • litespec/ext/containers#keep-schema-work-out-of-startup
  • litespec/ext/containers#limit-container-privileges
  • litespec/ext/containers#place-dockerfiles-beside-deployables
  • litespec/ext/containers#record-image-digests
  • litespec/ext/containers#retain-rollback-material
  • litespec/ext/containers#run-images-as-non-root
  • litespec/ext/containers#run-the-application-as-pid-1
  • litespec/ext/containers#separate-frontend-configuration-classes
  • litespec/ext/containers#set-sufficient-shutdown-time
  • litespec/ext/containers#supply-runtime-configuration-externally
  • litespec/ext/containers#test-released-traffic
  • litespec/ext/containers#use-protected-frontend-secret-delivery
  • litespec/ext/containers#wait-for-replica-readiness
  • litespec/ext/containers#write-runtime-logs-to-streams
  • litespec/ext/pipeline#bound-the-ingest-buffer
  • litespec/ext/pipeline#declare-ingest-steps-in-order
  • litespec/ext/pipeline#define-the-closed-drop-reason-set
  • litespec/ext/pipeline#discard-poison-records-after-three-attempts
  • litespec/ext/pipeline#expose-drop-counts-per-reason
  • litespec/ext/pipeline#read-enrichment-data-from-declared-sources
  • litespec/ext/pipeline#record-one-drop-reason-per-dropped-record
  • litespec/ext/pipeline#state-the-freshness-consequence
  • litespec/ext/plans#record-plan-prices-as-business-requirement-values
  • litespec/ext/privacy#approve-the-erasure-sentence-in-intent
  • litespec/ext/privacy#complete-the-subject-export-before-erasure
  • litespec/ext/privacy#discard-rows-that-leave-no-trace
  • litespec/ext/privacy#keep-a-tombstone-where-deletion-stays-visible
  • litespec/ext/privacy#keep-tombstone-fields-minimal
  • litespec/ext/privacy#move-data-to-its-next-controller-instead-of-erasing
  • litespec/ext/privacy#purge-erased-data-from-restored-backups
  • litespec/ext/privacy#record-which-duty-wins-each-conflict
  • litespec/ext/privacy#remove-child-rows-through-their-parent-only
  • litespec/ext/privacy#require-a-fresh-export-after-changes
  • litespec/ext/privacy#run-one-sweep-job-per-data-class
  • litespec/ext/privacy#scope-erasure-to-what-the-subject-requested
  • litespec/ext/queues#confirm-bulk-money-actions-out-of-band
  • litespec/ext/queues#order-queue-items-by-score
  • litespec/ext/queues#order-unscored-queues-by-age
  • litespec/ext/queues#release-claims-past-their-lease
  • litespec/ext/queues#show-a-preview-before-bulk-money-actions
  • litespec/ext/queues#show-the-score-beside-each-item
  • litespec/ext/queues#state-the-claim-mode
  • litespec/ext/realtime#authenticate-and-authorize-subscriptions
  • litespec/ext/realtime#bound-realtime-resources
  • litespec/ext/realtime#declare-realtime-freshness
  • litespec/ext/realtime#place-realtime-code-at-outer-boundaries
  • litespec/ext/realtime#reconnect-and-refresh-authoritative-state
  • litespec/ext/realtime#record-realtime-need
  • litespec/ext/realtime#record-transport-support
  • litespec/ext/realtime#reject-cosmetic-realtime-adoption
  • litespec/ext/realtime#reject-unbounded-slow-client-buffering
  • litespec/ext/realtime#revalidate-long-lived-access
  • litespec/ext/realtime#subscribe-through-narrow-functions
  • litespec/ext/realtime#tolerate-notification-ordering-differences
  • litespec/ext/realtime#use-server-sent-events-for-notifications
  • litespec/ext/realtime#use-signalr-for-interactive-messaging
  • litespec/ext/report#apply-item-read-authorization
  • litespec/ext/report#audit-export-reads
  • litespec/ext/report#avoid-speculative-reporting-systems
  • litespec/ext/report#declare-export-paging
  • litespec/ext/report#define-export-encoding-and-columns
  • litespec/ext/report#define-report-limits
  • litespec/ext/report#escape-formula-leading-export-values
  • litespec/ext/report#keep-raw-sql-in-infrastructure
  • litespec/ext/report#keep-report-definitions-in-application
  • litespec/ext/report#keep-report-providers-in-infrastructure
  • litespec/ext/report#parameterize-report-sql
  • litespec/ext/report#protect-export-output
  • litespec/ext/report#record-reporting-need
  • litespec/ext/report#review-report-plans
  • litespec/ext/report#run-budget-exceeding-exports-in-worker
  • litespec/ext/report#scope-export-output-to-the-tenant
  • litespec/ext/report#separate-worker-orchestration
  • litespec/ext/report#support-report-cancellation
  • litespec/ext/site#avoid-client-scripts-without-a-named-interactive-need
  • litespec/ext/site#declare-each-static-site-in-the-project-record
  • litespec/ext/site#default-to-a-light-scheme-with-a-reader-chosen-dark-scheme
  • litespec/ext/site#generate-a-sitemap-covering-every-page
  • litespec/ext/site#generate-the-site-with-astro
  • litespec/ext/site#give-every-page-one-main-heading-and-landmark-elements
  • litespec/ext/site#keep-each-repeated-fact-in-one-data-source
  • litespec/ext/site#list-every-page-for-language-models
  • litespec/ext/site#load-every-script-from-the-site-origin
  • litespec/ext/site#load-nothing-from-a-third-party-origin
  • litespec/ext/site#mark-pages-with-json-ld-structured-data
  • litespec/ext/site#mark-unfinished-facts-with-visible-placeholders
  • litespec/ext/site#name-every-page-with-a-title-and-a-description
  • litespec/ext/site#point-crawler-rules-at-the-sitemap
  • litespec/ext/site#point-every-page-at-its-absolute-canonical-address
  • litespec/ext/site#publish-a-markdown-copy-beside-every-page
  • litespec/ext/site#publish-full-page-text-for-language-models
  • litespec/ext/site#read-prices-and-claims-from-brief-and-business-requirements
  • litespec/ext/site#read-site-prices-and-claims-from-consumer-records
  • litespec/ext/site#reference-language-alternates-from-every-translated-page
  • litespec/ext/site#reject-a-release-build-carrying-a-placeholder
  • litespec/ext/site#render-components-on-the-server-with-astro-or-svelte
  • litespec/ext/site#render-every-language-from-one-page-structure
  • litespec/ext/site#render-every-page-to-static-files
  • litespec/ext/site#state-allowed-sources-in-a-content-security-policy
  • litespec/ext/site#use-tailwind-for-site-styles
  • litespec/ext/stage#end-transcription-at-the-named-decision
  • litespec/ext/stage#hold-transcribed-records-in-draft
  • litespec/ext/stage#record-rested-on-draft-intent
  • litespec/ext/stage#resolve-rested-on-draft-intent-at-promotion
  • litespec/ext/tenancy#review-delegated-cross-tenant-grants-through-the-security-queue
  • litespec/ext/workflow-engine#declare-the-engine-carrier
  • litespec/ext/workflow-engine#keep-engine-retry-configuration-in-implementation
  • litespec/ext/workflow-engine#map-each-engine-step-to-one-use-case
  • litespec/ext/workflow-engine#name-engine-steps-after-use-cases
  • litespec/ext/workflow-engine#reject-unmapped-engine-steps
  • litespec/ext/workflow-engine#state-each-step-compensation
  • litespec/frontend/blazor/browser#bound-what-is-stored
  • litespec/frontend/blazor/browser#keep-a-stable-serialization-contract
  • litespec/frontend/blazor/browser#own-storage-in-infrastructure
  • litespec/frontend/blazor/browser#provide-a-migration-for-every-changed-shape
  • litespec/frontend/blazor/browser#provide-export-and-import
  • litespec/frontend/blazor/browser#record-the-classification
  • litespec/frontend/blazor/browser#select-the-storage-mechanism-per-shape
  • litespec/frontend/blazor/browser#treat-reads-as-fallible
  • litespec/frontend/blazor/browser#version-and-scope-every-storage-key
  • litespec/frontend/blazor/components#apply-one-styling-system
  • litespec/frontend/blazor/components#declare-every-parameter-type
  • litespec/frontend/blazor/components#keep-accessibility-in-the-component
  • litespec/frontend/blazor/components#keep-components-presentational
  • litespec/frontend/blazor/components#name-for-the-boundary-role
  • litespec/frontend/blazor/components#own-the-layer-contract
  • litespec/frontend/blazor/components#place-one-component-per-file
  • litespec/frontend/blazor/components#raise-events-rather-than-mutating
  • litespec/frontend/blazor/components#resolve-browser-behavior-through-an-interface
  • litespec/frontend/blazor/data#classify-state
  • litespec/frontend/blazor/data#keep-derived-values-single-sourced
  • litespec/frontend/blazor/data#keep-forms-typed
  • litespec/frontend/blazor/data#load-persisted-state-once
  • litespec/frontend/blazor/data#make-refusals-explicit
  • litespec/frontend/blazor/data#prefer-explicit-refresh
  • litespec/frontend/blazor/data#route-use-cases-through-application
  • litespec/frontend/blazor/data#validate-at-the-boundary
  • litespec/frontend/blazor/rendering#declare-routes-on-pages
  • litespec/frontend/blazor/rendering#give-every-route-explicit-states
  • litespec/frontend/blazor/rendering#keep-navigation-state-in-the-url
  • litespec/frontend/blazor/rendering#keep-the-acquisition-surface-static
  • litespec/frontend/blazor/rendering#name-routes-for-the-reader
  • litespec/frontend/blazor/rendering#operate-offline-after-first-load
  • litespec/frontend/blazor/rendering#render-on-the-client-only
  • litespec/frontend/blazor/stack#keep-blazor-outside-the-ui-contract
  • litespec/frontend/blazor/stack#publish-static-webassembly-output
  • litespec/frontend/blazor/stack#record-a-first-load-budget
  • litespec/frontend/blazor/stack#verify-with-the-net-toolchain
  • litespec/frontend/blazor/structure#isolate-module-internals
  • litespec/frontend/blazor/structure#keep-domain-free-of-browser-concerns
  • litespec/frontend/blazor/structure#keep-imports-directional
  • litespec/frontend/blazor/structure#keep-static-content-out-of-the-assembly
  • litespec/frontend/blazor/structure#organize-features-by-module-and-use-case
  • litespec/frontend/blazor/structure#place-interop-adapters-together
  • litespec/frontend/blazor/structure#use-the-client-solution-tree
  • litespec/frontend/blazor/testing#enforce-the-first-load-budget
  • litespec/frontend/blazor/testing#keep-browser-capability-tests-honest
  • litespec/frontend/blazor/testing#keep-end-to-end-tests-few
  • litespec/frontend/blazor/testing#prove-each-scenario-with-a-test
  • litespec/frontend/blazor/testing#replace-interop-in-component-tests
  • litespec/frontend/blazor/testing#test-the-core-without-a-browser
  • litespec/frontend/blazor/testing#use-the-four-client-test-projects
  • litespec/frontend/blazor/testing#verify-real-browser-behavior-end-to-end
  • litespec/frontend/mobile/android/stack#build-with-net-for-android
  • litespec/frontend/mobile/android/stack#keep-android-outside-the-ui-contract
  • litespec/frontend/mobile/android/stack#pin-every-android-binding-package
  • litespec/frontend/mobile/android/stack#record-a-package-size-budget
  • litespec/frontend/mobile/android/stack#record-the-minimum-android-version
  • litespec/frontend/mobile/android/stack#store-streamed-media-uncompressed
  • litespec/frontend/mobile/android/stack#verify-with-the-net-toolchain
  • litespec/frontend/mobile/android/views#apply-insets-from-windowinsets
  • litespec/frontend/mobile/android/views#avoid-platform-names-that-collide-with-the-app-namespace
  • litespec/frontend/mobile/android/views#build-views-in-code-or-layout-resources-not-both
  • litespec/frontend/mobile/android/views#deliver-app-links-to-the-controller
  • litespec/frontend/mobile/android/views#host-screens-in-one-activity
  • litespec/frontend/mobile/android/views#keep-text-colors-and-icons-in-resources
  • litespec/frontend/mobile/android/views#persist-navigation-state-in-the-activity-bundle
  • litespec/frontend/mobile/android/views#use-the-android-back-dispatcher
  • litespec/frontend/mobile/data#classify-state
  • litespec/frontend/mobile/data#route-use-cases-through-application
  • litespec/frontend/mobile/data#update-the-store-from-command-results
  • litespec/frontend/mobile/structure#keep-imports-directional
  • litespec/frontend/testing#query-by-accessible-behavior
  • litespec/frontend/web/components#compose-class-names-in-the-shared-package
  • litespec/frontend/web/components#give-card-and-section-titles-heading-semantics
  • litespec/frontend/web/components#keep-primitives-and-composites-in-one-shared-package
  • litespec/frontend/web/components#meet-accessibility-requirements
  • litespec/frontend/web/components#place-a-drawing-no-composite-makes-in-a-visual-file
  • litespec/frontend/web/components#protect-rich-content-boundaries
  • litespec/frontend/web/components#use-no-raw-element-in-page-code
  • litespec/frontend/web/data#assign-state-to-the-narrowest-owner
  • litespec/frontend/web/data#build-a-form-on-the-shared-form-library
  • litespec/frontend/web/data#generate-the-client-from-the-published-contract
  • litespec/frontend/web/data#keep-the-client-boundary-in-the-frame
  • litespec/frontend/web/data#localize-copy-through-locale-dictionaries
  • litespec/frontend/web/data#map-every-failure-to-one-problem-type
  • litespec/frontend/web/data#place-a-refusal-beside-what-was-refused
  • litespec/frontend/web/data#regenerate-the-client-rather-than-editing-it
  • litespec/frontend/web/data#update-the-cache-a-command-changed
  • litespec/frontend/web/data#validate-a-form-with-the-generated-schema
  • litespec/frontend/web/patterns#implement-a-chosen-pattern-once
  • litespec/frontend/web/patterns#keep-a-visual-registry
  • litespec/frontend/web/react/components#keep-component-boundaries-typed
  • litespec/frontend/web/react/components#write-components-as-functions
  • litespec/frontend/web/react/stack#build-a-device-client-as-one-static-page
  • litespec/frontend/web/react/stack#select-a-rendering-mode-by-audience
  • litespec/frontend/web/rendering#build-the-server-query-cache-per-request
  • litespec/frontend/web/rendering#keep-authenticated-caching-explicit
  • litespec/frontend/web/rendering#keep-proxy-behavior-at-the-edge
  • litespec/frontend/web/rendering#keep-search-parameters-validated-by-a-schema
  • litespec/frontend/web/rendering#load-a-route-on-intent
  • litespec/frontend/web/rendering#load-route-data-in-the-loader
  • litespec/frontend/web/rendering#read-route-data-with-a-suspense-query
  • litespec/frontend/web/rendering#split-one-chunk-per-route-and-per-language
  • litespec/frontend/web/rendering#use-a-pathless-layout-route-for-a-shell
  • litespec/frontend/web/structure#keep-a-route-file-thin
  • litespec/frontend/web/structure#keep-imports-directional
  • litespec/frontend/web/structure#keep-tests-near-their-ownership-boundary
  • litespec/frontend/web/structure#use-explicit-public-entry-points-for-workspace-packages
  • litespec/frontend/web/svelte/components#keep-component-boundaries-typed
  • litespec/frontend/web/svelte/stack#build-a-device-client-as-one-static-page
  • litespec/frontend/web/svelte/stack#select-a-rendering-mode-by-audience
  • litespec/frontend/web/testing#assert-each-declared-refusal-by-its-code
  • litespec/frontend/web/testing#gate-changed-lines-with-mutation-testing
  • litespec/frontend/web/testing#keep-mocks-at-owned-boundaries
  • litespec/frontend/web/testing#match-test-level-to-risk
  • litespec/frontend/web/testing#prove-the-module-mirror-in-a-structure-test
  • litespec/frontend/web/testing#query-by-accessible-behavior
  • litespec/frontend/web/testing#run-browser-checks-through-the-playwright-cli
  • litespec/frontend/web/testing#seed-property-tests-from-example-tables
  • litespec/frontend/web/testing#use-network-mocks-for-component-tests
  • litespec/frontend/web/ui#check-every-route-in-a-browser
  • litespec/frontend/web/ui#compose-each-route-from-one-floorplan
  • litespec/frontend/web/ui#derive-each-page-type-from-a-named-reference
  • litespec/frontend/web/ui#hold-the-declared-base-color
  • litespec/frontend/web/ui#keep-layout-inside-floorplans
  • litespec/frontend/web/ui#keep-tokens-in-one-stylesheet
  • litespec/frontend/web/ui#pin-the-baseline-in-the-shared-package
  • litespec/frontend/web/ui#prove-every-result-a-route-calls
  • litespec/frontend/web/ui#prove-ui-behavior-and-appearance
  • litespec/frontend/web/ui#refuse-token-violations-with-stylelint
  • litespec/frontend/web/ui#select-a-tone-from-the-closed-set
  • litespec/quality/ci#apply-the-documented-defaults
  • litespec/quality/ci#approve-breaking-changes-by-the-highest-record-owner
  • litespec/quality/ci#enforce-the-supply-chain-gate
  • litespec/quality/ci#keep-a-canonical-job-graph
  • litespec/quality/ci#map-record-areas-to-owners
  • litespec/quality/ci#promote-verified-artifacts
  • litespec/quality/ci#protect-the-default-branch
  • litespec/quality/ci#publish-a-book-preview-for-every-change
  • litespec/quality/ci#publish-the-intent-diff-on-every-pull-request
  • litespec/quality/ci#record-every-branch-protection-bypass
  • litespec/quality/ci#require-zero-surviving-mutants-on-changed-lines
  • litespec/quality/ci#review-schema-artifacts
  • litespec/quality/ci#show-intent-counts-in-the-job-summary
  • litespec/quality/operations#attach-dashboard-links-to-production-objectives
  • litespec/quality/operations#cover-the-baseline-alert-set
  • litespec/quality/operations#define-actionable-baseline-alerts
  • litespec/quality/operations#define-backup-and-restore-behavior
  • litespec/quality/operations#exercise-a-restore-before-the-first-production-data
  • litespec/quality/operations#exercise-every-runbook-before-release
  • litespec/quality/operations#keep-deployment-descriptors-together
  • litespec/quality/operations#keep-each-alert-threshold-to-its-requirements-measure
  • litespec/quality/operations#keep-rollback-executable
  • litespec/quality/operations#record-each-drill-run-as-a-check-result
  • litespec/quality/operations#report-liveness-from-every-recurring-job
  • litespec/quality/operations#route-each-severity-to-a-declared-destination
  • litespec/quality/operations#state-availability-objectives-as-openslo-files
  • litespec/quality/operations#use-a-repeatable-deployment
  • litespec/quality/operations#use-stable-service-names
  • litespec/quality/security#route-tier-1-access-and-data-changes-through-the-security-reviewer
  • litespec/workspace/dependencies#accept-every-shipped-package-license-explicitly
  • litespec/workspace/dependencies#match-every-shipped-package-to-its-pin
  • litespec/workspace/structure#keep-scripts-at-the-root

Renamed (2):

  • litespec/core/model#connect-every-use-case-to-intent to litespec/core/model#connect-every-behavior-record-to-intent
  • litespec/core/system#use-this-consumer-documentation-layout to litespec/core/system#use-the-docs-layout-on-the-model-page

Extensions added (2):

  • delivery
  • layer-projects

Extensions removed (8):

  • containers
  • pipeline
  • privacy
  • queues
  • realtime
  • report
  • site
  • workflow-engine