Amended by 0145: the
support row is restated there.
Amended by 0127: the category list, and
the Vite plugin is @stackra/vite-plugin in developer.
Context
Figentra OS (@figentra-os/*, 55 packages in the same ten categories) is Stackra’s ancestor. The owner decided, package by package, what to port. Some packages port as they are, some are adapted or redesigned, some start fresh, some are skipped, and some become Pro. Each port still goes through the gate (spec, review), and the code is relicensed to MIT as it is ported (0024). This page is the plan. Each package’s design ADR is written when it lands (0018).
Decision
-
Conventions every ported package meets:
- A file-contract docblock on every file and a docblock on every export (0007).
- One export per file,
#subpath imports, and noany, non-null assertions or enums (0006). - No
Reflectmetadata. Code that callsReflect.defineMetadata(kbd, pwa) switches to the container’sWeakMapmetadata store.reflect-metadatastays rejected (0011). - The diagnostics catalogue is kept, and its prefix becomes
STK. - Devtools tabs (through
@stackra/devtools-kit) only where a package needs one. - Driver packages follow the instance-module pattern and ship a conformance suite (0076).
- No
encore.devimport (0078). Names follow 0083.
-
The plan. Actions: port as-is, port + adapt, redesign, fresh, skip, Pro.
Consequences
- The ported set is large, and most of it is mechanical, so it can be delegated (0066). Adapt, redesign and fresh rows need a spec each.
- Category folders are created with their first package (0028).
@stackra/brandalready lives inexperience, while Figentra OS keeps brand incross-cutting. Which folder it ends in is settled when the FigentraBrandServiceis merged into it. - A row changes by a new ADR or an amendment to this one.
Enforcement
Existing:FORBIDDEN_DEPENDENCIES (reflect-metadata) in tools/scripts/validate-repository.mjs, and boundaries.jsonc (encore.dev). Planned: an oxlint rule banning Reflect.defineMetadata and Reflect.getMetadata, a docblock check, and a test that every diagnostic code starts with STK.
Supersedes and sources
Supersedes: none. Sources: owner decisions in chat, 2026-10-19 (Round 2 lineage, Round 3 conventions, Round 6 item 4, Round 8 package questionnaire F1 to F13, R1 to R6, S1 to S4, T1 to T4, E1 to E4, D1, D2, C1, cross-cutting, developer, X3 to X5). Package list:/Projects/figentra/packages/os/* (informational).