#120 extends §10 Business Model with the voucher-based franchise
revenue model.
Key shape (consistent with the existing implementation):
- Per-vCPU subscription remains the primary OpenOva revenue surface
and applies to every Sovereign, direct or franchised. Vouchers are
NOT a separate revenue stream.
- Voucher is the user-acquisition surface — the Franchisee mints
codes, the credit comes off the Franchisee's revenue share, and the
redemption flows through the existing /billing/checkout promo_code
field.
- Revenue split between OpenOva and each Franchisee is bilateral
contract scope, NOT a per-Sovereign config field. Stripe metadata
(sovereign=<fqdn>) is the rollup mechanism.
Also updates the §10.1 revenue-stream tree to include FRANCHISE as a
fourth top-level category alongside RECURRING / PROJECT-BASED /
STAFF AUGMENTATION.
The new sub-section reinforces the architectural invariant: same
core/admin UI, same core/services/billing schema, same Stripe pipeline
on every Sovereign. No franchise-specific code paths.
Closes#120.
Header L3 and footer L1214 both said "Last Updated: 2026-02-26" but
Pass 26 made substantive architectural fixes (OpenBao active-active
correction §8.4, Catalyst/OpenOva conflation resolution §5.1+§5.2).
Stale date misled readers about freshness for a "Living Document".
Updated to 2026-04-28.
Date-staleness sweep across canonical docs found 5 other 2026-02-26
markers: relay (no architectural edits, may be accurate), fabric/cortex/
fingate (Pass 34 TENANT rename architectural), TECHNOLOGY-FORECAST
(Pass 27 + Pass 45 architectural). Per Pass 47 scope discipline, only
BUSINESS-STRATEGY fixed this pass — others flagged for future bundled
date-sweep pass.
§1-§16 deep re-scan otherwise clean. Pass 26 fixes intact across all
sections. §16.2 "self-service deployment via wizard" acceptable as
generic UX term (not the banned Bootstrap-wizard-as-separate-product).
Approximation grep #12 false positive: L667 "~15 components" refers to
OpenShift competitor count, not OpenOva self-claim.
platform/coraza/README.md: clean. Banner correct (per-host-cluster
§3.1 DMZ). Integration table consistent with §3.1 + §10 SIEM pipeline.
§8.4 (CISO value prop) still described "OpenBao per-cluster with ESO PushSecrets
for cross-cluster secret sync" — the active-active model SECURITY §5 rejected
and Pass 7 corrected in component READMEs. Replaced with per-region independent
Raft + async Performance Replication; ESO scoped to in-region. Added the SPIFFE/
SPIRE 5-minute SVID line that fits the CISO frame.
§5.1 (Product Family) had two entries — "OpenOva (the core platform)" and
"OpenOva Catalyst (the platform)" — describing the same thing under two names.
Per GLOSSARY: OpenOva is the company, Catalyst is the platform. Removed the
duplicate "OpenOva" row, expanded the Catalyst row to absorb its content, and
added a Company/Platform/Sovereign vocabulary banner above the table.
§5.2 (Architecture Relationship diagram) had OPENOVA at the top as the platform.
Replaced with CATALYST + a footer clarifying each child is a composite Blueprint.
platform/matrix/README.md: clean.
Validation log Pass 26 entry added.
GLOSSARY.md line-by-line audit. Eight corrections.
1. workspace-controller → environment-controller everywhere. The
controller reconciles the Environment CRD; "workspace" is banned as
a Catalyst scope, so it cannot be in a component name either. Fixed
in: GLOSSARY, ARCHITECTURE, PLATFORM-TECH-STACK, NAMING-CONVENTION,
SOVEREIGN-PROVISIONING, IMPLEMENTATION-STATUS, core/README,
BUSINESS-STRATEGY. Banned-term entry in GLOSSARY now explicitly
covers component names too.
2. "workspace repos" (per-Environment Gitea repos) → "Environment
Gitea repos" in GLOSSARY, PLATFORM-TECH-STACK.
3. JWT claim {workspace, org, role} → {environment, org, role} in
ARCHITECTURE projector diagram.
4. OpenOva definition refined: was "Never used to name a product",
which contradicted "OpenOva Catalyst", "OpenOva Cortex". Now: brand
prefix in product names; bare "OpenOva" = the company; bare
"Catalyst" = the platform.
5. Catalyst definition completed: was missing provisioning, billing,
gitea, observability — now lists all 14 control-plane components,
pointing at the table below.
6. Catalyst components table: added `provisioning` (validates
configSchema, commits to Environment Gitea); reordered to match
ARCHITECTURE §3 grouping; clarified each component's source-of-truth
(catalog-svc reads monorepo + Gitea, blueprint-controller watches
monorepo + Gitea, etc.).
7. Environment definition: refers to NAMING §2.4 for env_type values;
removed inline list that didn't match canonical ordering. Added
concrete examples (acme-prod, acme-dev, bankdhofar-uat).
8. Application example: dropped "RocketChat" which appeared nowhere
else; replaced with generic "running deployment" plus the
established WordPress / Postgres examples.
9. sovereign-admin description: was "runs Crossplane" — Crossplane is
platform plumbing not user-facing. Now: "manages the underlying
clusters via Crossplane (which is platform plumbing, not a
user-facing surface)".
Banned-term coverage:
- "Workspace" entry now covers BOTH the Catalyst scope AND component
naming (workspace-controller → environment-controller).
Refs #37
Targeted updates to BUSINESS-STRATEGY.md §5.1 and §9.2 plus
TECHNOLOGY-FORECAST §removed-components.
- BUSINESS-STRATEGY.md §5.1: OpenOva Catalyst row repositioned. It is
the platform itself (the self-sufficient Kubernetes-native control
plane that turns any cluster into a Sovereign), not a sub-product
bundling bootstrap+IDP+lifecycle manager. Other OpenOva products
(Cortex, Fingate, Fabric, Relay, Specter, Axon) run ON Catalyst as
composite Blueprints.
- BUSINESS-STRATEGY.md §9.2: capability matrix "Developer portal" cell
updated from "Catalyst IDP" to "Catalyst console" — IDP function is
one of the console's responsibilities, not a separate product.
- TECHNOLOGY-FORECAST.md §removed-components: Backstage row updated to
describe replacement as "Catalyst console (the platform's own
developer-facing UI)" rather than the now-retired "Catalyst IDP"
sub-product.
Strategy narrative, market segmentation, pricing model, and migration
playbook are unchanged — they stand on their own.
Refs #37
Defines OpenOva's business positioning, product family (OpenOva, Cortex,
Synapse, Fingate, Specter), revenue model (per-vCPU-core with ELA/PAYG),
competitive landscape, persona-based messaging, banking-first GTM strategy,
expert network, migration program, and growth roadmap.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>