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
-
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. -
@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/reacthooks; stackra-188),@stackra-pro/ai-studio(agent builder, registry UI and eval workspace over the free@stackra/airuntime andrunEvals; 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-meilisearchand@stackra-pro/search-opensearch(SearchDriver, each passing the free conformance suite published from@stackra/search/testing; stackra-195), and@stackra-pro/analytics-destinations(furtherAnalyticsDriverdestinations behind the consent-gated queue; PostHog stays free; stackra-196).
- Paid UIs and studios, new packages over free runtimes:
-
@stackra-pro/uiis internal-only and never sold. The HeroUI Pro wrapper package keeps the name@stackra-pro/ui(itspackage.jsonname today), moves tofigentra/stackra-pro(stackra-189) and is served by our registry under theinternalread rule of 0453 decision 10, as a per-name row inside the@stackra-proscope: only Figentra’s own internal tokens read it, and a customer licence grant,names: "*"included, never covers it. Its KeygenpublishConfigis 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. -
@stackra/licensingstays free. It keeps theLicenceIssuerandLicenceVerifierports, theregistryown-issuer driver (default) and the optionalkeygendriver of 0453 decision 15, infigentra/stackra. -
Cancelled split batches, and why the code stays free.
-
Per-package tier table. The audit’s table of 106 packages, amended by D6. Every package not listed is
freewith no Pro part.Totals for 0.1.0: 105 free packages infigentra/stackra; one internal package and seven new paid packages infigentra/stackra-pro. -
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 offigentra/stackraimports@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-prostarts with eight members, all new or moved code with no free dependent.- The registry needs a per-name
internalrow inside@stackra-probefore stackra-189 publishes (stackra-182 and stackra-183 own the Worker and grant logic). - Core
apps/mobileandapps/playgroundstop depending on@stackra-pro/ui(stackra-189).
Enforcement
tools/scripts/validate-repository.mjs(withPRO_DEPENDENCIESfrom@stackra/repo-checks) keeps refusing a non-app member that depends on@stackra-pro/uior 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/registryrefuses a read of aninternalname 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.