| 0001 | Monorepo layout, catalogs and tooling | Accepted |
| 0002 | Documentation on Mintlify in apps/docs | Accepted |
| 0003 | Tier dependency direction | Accepted |
| 0004 | Package archetypes and layers | Superseded by 0126 |
| 0005 | DI container and legacy decorators | Accepted, amended by 0143, 0145, 0263 |
| 0006 | Naming, exports and imports | Accepted, amended by 0128, 0233 |
| 0007 | Source documentation standard | Accepted, amended by 0128, 2026-10-21 |
| 0008 | Test placement | Superseded by 0022 |
| 0009 | Secrets: two mechanisms | Superseded by 0173 |
| 0010 | Services are independent workspace members | Accepted |
| 0011 | Rejected and deferred technologies | Superseded by 0227 |
| 0012 | Code host and CI | Accepted |
| 0013 | Versioning and release | Superseded by 0025 |
| 0014 | Data ownership and ORM | Accepted, amended by 0160 |
| 0015 | Contract packages | Superseded by 0117 |
| 0016 | .agents/ is the source of truth | Accepted |
| 0017 | Agent roster and models | Superseded by 0193 |
| 0018 | Framework design record | Superseded by 0228 |
| 0019 | Supply chain hardening | Superseded by 0174 |
| 0020 | Observability and crash reporting | Superseded by 0184 |
| 0021 | AI engine and agent write safety | Proposed |
| 0022 | Tests live in __tests__ folders | Accepted |
| 0023 | Stackra is a framework; products consume it | Accepted |
| 0024 | MIT license, with stated exclusions | Accepted |
| 0025 | Packages publish to npm.figentra.com; every package builds to ESM dist | Superseded by 0177 |
| 0026 | Turborepo remote cache self-hosted on Cloudflare R2 | Accepted |
| 0027 | Every CLI the repo needs is pinned in mise | Accepted |
| 0028 | Package categories appear with their first package | Accepted, amended by 0127 |
| 0029 | Encore.ts as one application under services/ | Superseded by 0075 |
| 0030 | Encore Cloud into the owner’s AWS; four environments | Superseded by 0170 |
| 0031 | Coarse services, split on evidence | Superseded by 0200 |
| 0032 | REST api(), generated client, prefixed UUIDv7 ids | Superseded by 0142 |
| 0033 | Pub/Sub and cron with a transactional outbox | Superseded by 0078 |
| 0034 | Object storage, GuardDuty malware scan, upload limits | Superseded by 0222 |
| 0035 | Resend email with SPF, DKIM and DMARC | Superseded by 0191 |
| 0036 | Idempotency in Encore cache for 24h; Postgres for money | Superseded by 0136 |
| 0037 | API versioning by the Stackra-Version date header | Superseded by 0118 |
| 0038 | Rate limits: app token buckets and Cloudflare WAF | Superseded by 0217 |
| 0039 | OpenAPI to Mintlify API reference; OAuth developer guide | Proposed |
| 0040 | Services are organised as DDD feature modules | Superseded by 0130 |
| 0041 | Decorated controllers, handlers and crons via a build-time generator | Superseded by 0091 |
| 0042 | DI-first with one container per service | Accepted, amended by 0143, 0147, 0263 |
| 0043 | @stackra/workflow is Medusa-style steps and workflows | Superseded by 0102 |
| 0044 | Laravel-style package configuration | Superseded by 0146 |
| 0045 | @stackra/tenancy: pool by default, silo on demand | Superseded by 0088 |
| 0046 | Global data invariants and per-model opt-ins | Superseded by 0134 |
| 0047 | Audit service fed by events | Superseded by 0212 |
| 0048 | Point-in-time recovery and a quarterly restore drill | Superseded by 0186 |
| 0049 | @stackra/search: a driver interface, Postgres first | Superseded by 0089 |
| 0050 | @stackra/ai on AI SDK core, Bedrock by default | Superseded by 0100 |
| 0051 | Better Auth identity service | Superseded by 0087 |
| 0052 | The console is a Vite + React single-page app | Superseded by 0164 |
| 0053 | Routes are decorator classes compiled to router adapters; no file-based routing | Proposed |
| 0054 | TanStack Query for server state, Zustand for client state | Superseded by 0079 |
| 0055 | Forms use react-hook-form and Zod with thin HeroUI field adapters | Proposed |
| 0056 | HeroUI v3 and Pro on web; share logic and tokens, not components | Superseded by 0165 |
| 0057 | The landing site is React Router 7 framework mode on Cloudflare Workers | Superseded by 0176 |
| 0058 | The desktop app is Electron | Superseded by 0181 |
| 0059 | Mobile offline: encrypted persisted Query cache and a persisted mutation queue | Accepted, amended by 0268 |
| 0060 | i18n keys and logical CSS from day one; English launch; light and dark | Superseded by 0080 |
| 0061 | Mobile keeps React Navigation 7 and native tabs; one app | Proposed |
| 0062 | Mobile: EAS Update, Expo push and Sentry from day one | Superseded by 0180 |
| 0063 | Cloudflare hosts the web surfaces | Superseded by 0175 |
| 0064 | Unused: the number was never assigned | — |
| 0065 | The Linear gate is checked offline | Accepted, amended by 0268 |
| 0066 | Claude leads; OpenCode executes routed tasks in worktrees | Accepted |
| 0067 | spec-kit is the SDLC, with a mandatory clarify gate | Accepted |
| 0068 | runway: CI/CD built inside Stackra | Superseded by 0168 |
| 0069 | Testing strategy and coverage floors | Superseded by 0182 |
| 0070 | Quality budgets: accessibility, Web Vitals, bundle, mobile startup | Superseded by 0183 |
| 0071 | Privacy: export, erasure, platform declarations and templates | Superseded by 0189 |
| 0072 | SOC 2 groundwork | Superseded by 0187 |
| 0073 | Observability: Better Stack, Sentry and Encore tracing | Superseded by 0184 |
| 0074 | Open core: @stackra-pro on the private registry | Superseded by 0077 |
| 0075 | Stackra ships packages; Figentra OS ships the product services | Accepted |
| 0076 | Every package runs in SaaS, on-prem and air-gapped deployments | Proposed |
| 0077 | Open core: the free and Pro package lists | Superseded by 0202 |
| 0078 | The messaging layer: eight packages, one question each | Accepted, amended by 0141, 0148, 0260 |
| 0079 | Client state is @stackra/state (ported Figentra signals); Query owns optimism and the offline queue | Accepted |
| 0080 | i18n is the ported Figentra i18n package; i18next is dropped | Accepted, amended by 0268 |
| 0081 | The gate chain is fully configurable per app, with a warning when tenancy or iam is omitted | Superseded by 0138 |
| 0082 | Public ids are a prefix plus base32 of one UUIDv7; four API areas | Accepted, amended by 0135 |
| 0083 | npm scopes: @stackra for packages, @figentra for this repository’s apps and services; @stackra/console is the CLI framework | Accepted |
| 0084 | Figentra OS package port plan | Accepted |
| 0085 | Logger reporters: CloudWatch kept; Encore log, Sentry and Better Stack added | Superseded by 0147 |
| 0086 | @stackra/notifications is a full engine, with every channel free | Proposed |
| 0087 | Identity and IAM are driver packages; enterprise features plug in as Pro | Superseded by 0206 |
| 0088 | @stackra/tenancy: pool and RLS are free; DB-per-tenant and the scope tree are Pro | Superseded by 0210 |
| 0089 | @stackra/search is written fresh; Meilisearch and OpenSearch are Pro drivers | Superseded by 0221 |
| 0090 | Codegen discovers decorators through each member’s root module | Accepted, amended by 0144, 0268 |
| 0091 | The Encore app is generated into .stackra/encore; services hold no Encore files | Accepted, amended by 0158, 0268 |
| 0092 | The IR is ported with decorator-derived kinds; the definition package is dropped | Accepted |
| 0093 | Better Auth integration: container hooks, iam-only authorization, an owned MikroORM adapter, global auth tables | Superseded by 0206 |
| 0094 | Decorators are the only authoring style; workflows are declarative @Step graphs | Accepted, amended by 0145, 0152 |
| 0095 | @stackra/validation: Laravel-style decorators compiled to one Zod schema, plus an output serializer | Accepted, amended by 0133, 0162 |
| 0096 | Trait naming grammar and the trait list | Accepted, amended by 0133, 0162 |
| 0097 | @stackra/model and @stackra/database; gen emits MikroORM EntitySchema | Accepted, amended by 0133, 0159, 0161, 0162 |
| 0098 | Actions are the unit of behaviour, in @stackra/actions, with one pipeline and a typed actor | Accepted, amended by 0136, 0137, 0139, 0155, 0264 |
| 0099 | One action risk scale, L0 to L4, with derived MCP hints and effect tags; change risk is R0 to R3 | Accepted, amended by 0268 |
| 0100 | One free @stackra/ai: agents, tools, skills, MCP and A2A on AI SDK, every tool call an action | Accepted, amended by 0155, 0156, 0267 |
| 0101 | Every operation is an action; a workflow sits behind it only when the criteria hit | Accepted, amended by 0265 |
| 0102 | The workflow engine: in-process steps with a Postgres journal, outbox staging and hooks, ported from Medusa’s MIT code | Accepted, amended by 0151, 0152 |
| 0103 | @stackra/locking: server-side named locks behind a driver | Accepted, amended by 0149 |
| 0104 | Cross-module relations are @Link declarations, read through query.graph | Accepted, amended by 0268 |
| 0105 | @Crud generates a model’s service methods and opt-in actions | Accepted |
| 0106 | Infisical Agent Vault, split by environment; the model never sees a secret | Superseded by 0267 |
| 0107 | Three homes for keys; tenant credentials live in @stackra/connections | Accepted |
| 0108 | Scoped settings: each service owns its values; the registry owns the schema | Accepted |
| 0109 | The registry: build manifests published by CI to a Postgres-backed registry service | Accepted |
| 0110 | The experience service is server-driven UI at level L2: trees of registered coded components, no code over the wire | Accepted, amended by 0139, 0154, 0164 |
| 0111 | The module is the unit of contribution; services and apps only host modules | Accepted, amended by 0214, 0259 |
| 0112 | Experience packages, @stackra/ui parity and the renderer kit | Accepted, amended by 0164 |
| 0113 | HeroUI Pro reaches Stackra Pro customers as a private mirror bundle, with a bring-your-own-key option | Superseded by 0197 |
| 0114 | The page builder builds every page, including our own marketing site; MDX and Sanity are dropped | Accepted |
| 0115 | Built forms are documents of kind form; they submit to an action; the editors are Pro | Accepted |
| 0116 | @stackra/content: content types are models with a trait bundle; custom fields are a free, bounded trait | Accepted |
| 0117 | Shared primitives live in @stackra/contracts, each package has a types-only ./contracts entry, and each package owns its decorators | Accepted, amended by 0140, 0141, 0144, 0260 |
| 0118 | @stackra/versioning is built now and stays dormant: date versions pinned per API key or OAuth app | Accepted, amended by 0136, 0268 |
| 0119 | Merge policy: Quality Gate is the only required check; Claude merges only through pnpm pr:merge | Accepted |
| 0120 | The SDLC: specs in .agents/specs, four lanes, and change risk R0 to R3 | Accepted |
| 0121 | SDLC tooling: sdlc retired, spec-kit pinned, a local Linear extension, the ported roles and who runs what | Accepted, amended by 0258 |
| 0122 | The workflow studio: coded workflows, configurable knobs, and tenant automations as data that references code | Accepted, amended by 0153, 0154 |
| 0123 | Delivery order follows the dependency graph: package-disjoint waves, spikes first, assumed defaults pending the owner | Accepted |
| 0124 | Encore is the generated runtime target; service source stays plain TypeScript | Accepted, amended by 0158, 0159 |
| 0125 | The constitution is amended to match Accepted ADRs and locked owner decisions | Accepted |
| 0126 | Member shapes and scaffold templates: service skeleton, entries-first packages, kind folders, four app kinds | Accepted, amended by 0234, 0249, 0259, 0264 |
| 0127 | Package categories, including infrastructure | Accepted |
| 0128 | Code conventions: enums, classes, components and kind folders | Accepted, amended by 0268 |
| 0129 | Code standards enforced by a house lint plugin, shipped as @stackra/coding-standard | Accepted |
| 0130 | Module layout by semantic kind; no controllers | Accepted, amended by 0259, 0264 |
| 0131 | Module key, version and deprecation | Accepted, amended by 0264 |
| 0132 | Permissions are a module catalogue; policies are providers | Accepted, amended by 0263 |
| 0133 | Field semantics, model keys, rename-safe fields and lifecycle events | Accepted, amended by 0264 |
| 0134 | Data invariants, field classification and the delete lifecycle | Accepted |
| 0135 | Public id format: prefix plus Crockford base32 of one UUIDv7 | Accepted |
| 0136 | The action runtime contract: handler context, transaction, idempotency and versions | Accepted, amended by 0268 |
| 0137 | Declared action options and refusal reasons | Accepted |
| 0138 | The pipeline order is fixed; apps toggle and parameterise gates | Accepted |
| 0139 | Actions declare their user experience | Accepted |
| 0140 | The error envelope and error kinds | Accepted |
| 0141 | Integration event names and the envelope | Accepted, amended by 0260 |
| 0142 | Cross-service transport goes through drivers | Accepted, amended by 0260 |
| 0143 | Container scopes, module registration, lifecycle and testing | Accepted, amended by 0263 |
| 0144 | A typed MetadataRegistry, and every decorator package ships an Explorer | Accepted, amended by 0263, 0264 |
| 0145 | Tokens are defineToken values; container-backed global helpers are banned | Accepted, amended by 0247, 0263, 0264 |
| 0146 | Package configuration: TypeScript files, layered overrides and secret references | Accepted, amended by 0263 |
| 0147 | Logger and runtime telemetry defaults | Accepted |
| 0148 | Queue and scheduler: full job features, fair queuing and tenant schedules | Accepted |
| 0149 | Locking: fencing tokens, auto-renew and @WithLock | Accepted |
| 0150 | @stackra/cache: memory, Valkey, Encore and Postgres drivers with tenant-namespaced keys | Accepted |
| 0151 | The workflow engine is a port with a native driver and a Temporal driver | Accepted |
| 0152 | Workflow semantics: timeouts, waits, pinned versions, operations and one graph format | Accepted |
| 0153 | Automations run as principals; every package exposes its capabilities as building blocks | Accepted |
| 0154 | Tenant code runs only in a sandboxed code step | Accepted |
| 0155 | AI-native rule: queries are MCP tools, and all AI code is free | Accepted |
| 0156 | The AI runtime: provider drivers, a managed-runtime driver, memory and guardrails | Accepted |
| 0157 | stackra inspect and stackra diff | Accepted |
| 0158 | Gen artefacts: committed OpenAPI and manifest, a CI-published client, deploy-mode targets | Accepted, amended by 0260, 0268 |
| 0159 | Migrations: gen-ordered SQL, migrations shipped in packages, and safety rules | Accepted |
| 0160 | Raw SQL at runtime and the approved Postgres extensions | Accepted |
| 0161 | @stackra/state-machine: typed state machines on model fields, with history and surfaces | Accepted |
| 0162 | Validation, translatable-field and EntitySchema clarifications | Accepted |
| 0163 | Reports, exports, imports and declared read models | Accepted, amended by 0260 |
| 0164 | Console panels are Filament-style resources rendered by @stackra/panel | Accepted |
| 0165 | The web client stack restated: the @stackra/ui contract, form adapters, no Next.js | Accepted, amended by 0268 |
| 0166 | CI policy: runners, budgets, concurrency, job shape and the check matrix | Accepted |
| 0167 | Workflow hardening, outside contributors and bot credentials | Accepted |
| 0168 | Runway: public reusable workflows, build order and runway.yaml | Accepted |
| 0169 | Topology: runway.yaml packs logical services into deployables | Accepted |
| 0170 | Deployment: what deploys where, and how a release is promoted | Accepted |
| 0171 | Infrastructure as code: Pulumi TypeScript packages owned by Stackra | Accepted |
| 0172 | AWS accounts, primary region and cloud cost controls | Accepted |
| 0173 | Secrets: Infisical is the source of production secrets; runway syncs them | Accepted, amended by 0267 |
| 0174 | Supply chain: images, signing, SBOM, dependency policy and rotation | Accepted |
| 0175 | Edge, domains and TLS | Accepted |
| 0176 | The marketing site: a placeholder now, prerendered from the experience service later | Accepted |
| 0177 | Package distribution and release lines: npmjs for free, Keygen Cloud for Pro | Accepted |
| 0178 | Licensing: Keygen licences and the @stackra/licensing verifier | Accepted |
| 0179 | On-prem and air-gapped delivery | Accepted |
| 0180 | Mobile apps and release trains | Accepted |
| 0181 | The desktop app’s pipeline | Accepted |
| 0182 | Testing strategy v2: tiers, coverage, infrastructure and policies | Accepted |
| 0183 | Quality budgets with numbers | Accepted |
| 0184 | Telemetry: OpenTelemetry, OTLP, SLIs, heartbeats and log retention | Accepted |
| 0185 | Incident response, on-call, the status page and support tiers | Accepted |
| 0186 | Backups and disaster recovery | Accepted |
| 0187 | The security and compliance programme | Accepted |
| 0188 | Operator access and the encryption key hierarchy | Accepted |
| 0189 | Privacy operations and data retention | Accepted |
| 0190 | Seed profiles and our product analytics | Accepted |
| 0191 | Email deliverability | Accepted |
| 0192 | Translation workflow and Arabic defaults | Accepted |
| 0193 | Agents and model policy | Accepted, amended by 0258 |
| 0194 | Developer and agent compute | Accepted |
| 0195 | Organisation, legal and release communication | Accepted |
| 0196 | Repository config is YAML wherever the reader supports it | Accepted |
| 0197 | HeroUI Pro is used only in our own apps until an OEM agreement exists | Accepted |
| 0198 | SDLC: spec location, spec states, traceability and roadmap structure | Accepted |
| 0199 | Developer experience: create-stackra-app, upgrades, stackra dev, docs and the agent kit | Accepted, amended by 0268 |
| 0200 | Stackra and Figentra OS: horizontal services, a private OS repo and co-development | Accepted |
| 0201 | The app split: framework packages, platform core and first-party apps | Accepted |
| 0202 | @stackra-pro is developer-side; OS capability is free code gated by entitlements | Accepted |
| 0203 | The commercial model: billing provider, metric and tier names | Accepted |
| 0204 | Reference services: identity, notes and registry | Accepted |
| 0205 | The Figentra OS build order and the first slice | Accepted |
| 0206 | ZITADEL is the identity provider; @stackra/identity is provider-neutral | Accepted, amended by 0268 |
| 0207 | Authentication assurance and machine identities | Accepted |
| 0208 | The IAM model: scope tree, roles, conditions and deny, delegation and permission names | Accepted |
| 0209 | IAM enforcement: the pipeline gate, an SQL predicate, an embedded PDP and service calls | Accepted |
| 0210 | Tenancy: a recursive tenant tree, lifecycle, one context per request, and region | Accepted |
| 0211 | Memberships and support access | Accepted |
| 0212 | Audit: evidence, access logs, a hash chain and retention | Accepted |
| 0213 | Settings v2: the full cascade, flags as a settings kind, YAML packs and revisions | Accepted |
| 0214 | Registry v2 and the module install lifecycle | Accepted |
| 0215 | Entitlements | Accepted |
| 0216 | Meters and usage events | Accepted |
| 0217 | API surfaces: MCP first plus REST, SDKs and rate limits | Accepted |
| 0218 | Integrations: the connector SDK and connections per chain level | Accepted |
| 0219 | The merchant-account chain and registered price models | Accepted |
| 0220 | @stackra/money and the ledger package | Accepted, amended by 0268 |
| 0221 | Search: Postgres hybrid, ElasticSuite parity, Arabic and operations | Accepted |
| 0222 | Files and media: storage drivers, uploads, scanning and public assets | Accepted |
| 0223 | Notifications: more channels, cascading templates, manual sends and preferences | Accepted |
| 0224 | @stackra/webhooks | Accepted |
| 0225 | Realtime drivers, co-editing and the Commentable trait | Accepted |
| 0226 | Content: tenant-defined types at runtime, and headless delivery | Accepted |
| 0227 | Rejected and deferred technologies, refreshed | Accepted, amended by 0267 |
| 0228 | Proposed ADRs settled | Accepted |
| 0229 | The constitution amended for the 2026-10-20 decisions | Accepted |
| 0230 | Reviews come from a separate reviewer identity, never the author | Accepted |
| 0231 | Naming and casing standard: one table for every kind of name | Accepted, amended by 0264 |
| 0232 | @stackra/errors: StackraError base, react, native, node and testing entries, reporter port | Accepted |
| 0233 | Imports use #subpath aliases only | Accepted |
| 0234 | Module assets and storage: assets/ folders, @stackra/assets, @stackra/filesystem | Accepted, amended by 0263, 0264 |
| 0235 | Devices and IoT: minimal now, full later; devices are identity principals | Accepted |
| 0236 | Translation providers as connectors: machine translation and TMS sync | Accepted |
| 0237 | The API gateway is generated, in four layers, with no gateway service | Accepted |
| 0238 | Database and connection model: one server per environment, one logical database per service | Accepted |
| 0239 | RLS shape: equality on tenant_id, with read models for organisation views | Accepted |
| 0240 | The scope tree is free code; its depth is a plan entitlement | Accepted |
| 0241 | Identity first slice: central login app, the BFF and the identity reference service | Accepted, amended by 0268 |
| 0242 | Commercial model: per-product plan ladders, shared add-ons, hybrid metric, and a 14-day trial | Accepted |
| 0243 | Organisations on the tenant tree: consolidated billing, guardrails and the standalone exit | Accepted |
| 0244 | Markets, owned by pricing | Accepted |
| 0245 | The AI intelligence plane: skills, prompts, context providers, plans and intents | Accepted |
| 0246 | Devtools: dev-only, for frontend and backend | Accepted |
| 0247 | Declaration rule: decorators annotate code, define* creates values | Accepted, amended by 0264 |
| 0248 | Delivery scope: build everything, SaaS first, on-prem and air-gapped kept green | Accepted |
| 0249 | One app, three targets: web, PWA and Electron desktop from one member | Accepted |
| 0250 | @stackra/platform: capability ports, drivers, gate and client-manifest capability section | Accepted |
| 0251 | The desktop bridge is generated from @DesktopAction; Electron hardening baseline | Accepted |
| 0252 | Offline on every client: completing the mutation queue | Proposed |
| 0253 | Peripherals are Web-API first; native modules only on evidence; device presets | Accepted |
| 0254 | Desktop release: signing, update feed, channels and version policy | Accepted |
| 0255 | PWA: vite-plugin-pwa, service worker scope and push strategy per platform | Accepted |
| 0256 | Client storage: one @stackra/storage package with named stores and per-platform drivers | Accepted |
| 0257 | Secret-manager agent and the secrets inbox: values written blind, nobody reads them | Proposed |
| 0258 | Agent roster v2, Claude-only agents and skill fencing | Accepted |
| 0259 | Module placement: three homes and the placement test | Accepted |
| 0260 | Cross-service reach: one generated client with call, command and typed events | Accepted |
| 0261 | Generated #stackra/* modules: real files in .stackra/gen, imported through the alias | Accepted, amended by 0265 |
| 0262 | Module catalogue generated from code, module plans in spec folders, and the module generator | Accepted |
| 0263 | DI stays; gen writes the wiring: same-name tokens, inferred module edges, config layers | Accepted |
| 0264 | Declaration vocabulary: one module key grammar, the define family closed at eight, kind folders and one listener form | Accepted |
| 0265 | Hook points: owner-declared transform and verify hooks, with implicit Before and After on actions | Accepted |
| 0266 | Capabilities phase in as one option, one config driver, and a memory driver and fake before production | Accepted |
| 0267 | Infisical Agent Vault is deferred; the model never sees a secret, and egress is direct | Deferred |
| 0268 | Register answers of 2026-10-21: the thin items R1 to R18 settled, each recorded on the page it changes | Accepted |