Skip to main content
Amended 2026-10-28 (STA-1371) by 0469: decision 3 and the design-system/ui-pro row of decision 6 are withdrawn. HeroUI refused redistribution, so @stackra-pro/ui is removed, not kept internal; Figentra’s product apps that use HeroUI Pro import it directly. The other decisions stand.
Accepted 2026-10-27 (STA-1355, batch stackra-203): owner decision D6 of the Stackra finish plan. Amends 0077 (decision 7, the Pro list), 0202 (decisions 1 and 2, for new studio UIs only), 0310 (the name, the source repository and the channel of @stackra-pro/ui) and 0453 (decision 10, a per-name internal rule inside @stackra-pro). Reserved number: 0461, the next free after 0460 (stackra-50).

Context

0077 listed whole areas as Pro. Later accepted ADRs moved most of them back to free code: 0202 (editors, AI, settings and search parity are free code gated by entitlements), 0240 and 0327 (the scope tree is free code in @stackra/scope), and 0310 (the HeroUI Pro wrappers are not for sale). Decision D5 (2026-10-27) then said “the 0077 list is paid” for 0.1.0, and the stackra-186 audit (notes/handover/batches/pro-split-audit.md) filed sixteen split batches (stackra-187 to 202) with an owner gate on each conflict. Several splits were impossible or harmful as written: free @stackra/builder/react, @stackra/loyalty-kit, @stackra/tenancy, OS and Commerce import the code that would have moved. The owner settled the line in D6 (2026-10-27): the 0202 model.

Decision

  1. Runtime code is free, behind plan entitlements. Every runtime, kernel, port, kind, driver and React hook that exists in @stackra/* today stays there, MIT. What a customer pays for at runtime is an entitlement checked by the pipeline (0202 decision 5, 0242 limits), never a package tier. Nothing moves out of a free package to Pro.
  2. @stackra-pro/* holds new code only, of two kinds.
    • Paid UIs and studios, new packages over free runtimes: @stackra-pro/builder-studio (dashboard, page, form, experience-block and automation editor UIs over the free builder kernel and @stackra/builder/react hooks; stackra-188), @stackra-pro/ai-studio (agent builder, registry UI and eval workspace over the free @stackra/ai runtime and runEvals; stackra-197), @stackra-pro/devtools (the web and native floating panel and the service dev console of 0246 over the free @stackra/devtools-kit; stackra-198) and @stackra-pro/notifications-studio (the visual template editor and the delivery analytics dashboard over the free template cascade and channel ports; stackra-199).
    • Advanced drivers behind free ports: @stackra-pro/search-meilisearch and @stackra-pro/search-opensearch (SearchDriver, each passing the free conformance suite published from @stackra/search/testing; stackra-195), and @stackra-pro/analytics-destinations (further AnalyticsDriver destinations behind the consent-gated queue; PostHog stays free; stackra-196).
    This amends 0202 decision 1 (as amended by 0270) for the studio editor UIs, none of which exists today: they are new Pro code, and the editor kernel and hooks they sit on stay free. Its decision 2 list (on-prem stack, advanced drivers, devtools UI) stands and gains the studios.
  3. @stackra-pro/ui is internal-only and never sold. The HeroUI Pro wrapper package keeps the name @stackra-pro/ui (its package.json name today), moves to figentra/stackra-pro (stackra-189) and is served by our registry under the internal read rule of 0453 decision 10, as a per-name row inside the @stackra-pro scope: only Figentra’s own internal tokens read it, and a customer licence grant, names: "*" included, never covers it. Its Keygen publishConfig is dropped. HeroUI Pro stays an external peer that each consuming repository installs with its own HeroUI Pro token (0310 decisions 3 and 7 stand). Kiosk stays free code in @stackra/ui; embeds and broadcast dashboards are out of scope for 0.1.0.
  4. @stackra/licensing stays free. It keeps the LicenceIssuer and LicenceVerifier ports, the registry own-issuer driver (default) and the optional keygen driver of 0453 decision 15, in figentra/stackra.
  5. Cancelled split batches, and why the code stays free.
  6. Per-package tier table. The audit’s table of 106 packages, amended by D6. Every package not listed is free with no Pro part. Totals for 0.1.0: 105 free packages in figentra/stackra; one internal package and seven new paid packages in figentra/stackra-pro.
  7. The rules of 0077 decision 4 and 0202 decision 4 stand. A Pro package plugs in behind a free contract, depends on released @stackra/* versions, and no member of figentra/stackra imports @stackra-pro/*. Figentra’s own products take Pro packages under the internal licence.

Consequences

  • Free installs get every runtime; a customer’s plan, not a package, switches a feature on.
  • No free package loses code, so OS, Commerce and the products need no change for 0.1.0.
  • figentra/stackra-pro starts with eight members, all new or moved code with no free dependent.
  • The registry needs a per-name internal row inside @stackra-pro before stackra-189 publishes (stackra-182 and stackra-183 own the Worker and grant logic).
  • Core apps/mobile and apps/playground stop depending on @stackra-pro/ui (stackra-189).

Enforcement

  • tools/scripts/validate-repository.mjs (with PRO_DEPENDENCIES from @stackra/repo-checks) keeps refusing a non-app member that depends on @stackra-pro/ui or HeroUI Pro.
  • planned — the same validator refuses any member of this repository that depends on any @stackra-pro/* name (0077 Enforcement), once stackra-189 has removed the app dependencies.
  • planned — workers/registry refuses a read of an internal name with a customer licence token, with its test beside the read-rule code (stackra-182, stackra-183).

Supersedes and sources

Supersedes: none. Amends: 0077 decision 7, 0202 decisions 1 and 2, 0310 decisions 1 and 2 as amended (name, repository and channel), 0453 decision 10. Related: 0240, 0327, 0246, 0089. Sources: owner decision D6, 2026-10-27 (notes/handover/batches/STACKRA-FINISH.md, PUBLISH-TIERS.md); the stackra-186 audit (notes/handover/batches/pro-split-audit.md); Linear STA-1355 and STA-1339 to STA-1354.