Concepts, value, and typical clone scenarios — less code.
Concepts, value, and typical clone scenarios — less code.
Preparing Ring content
Preparing Ring content
Preparing Ring content
Use Founder / Developer tabs in the docs sidebar to filter this page. Shared sections apply to both audiences.
Status: This page is the long-form white-label ringization SSOT for settlers and integrators. The Order Lab Playbook tab is the per-order checklist; this article is the methodology. Product steps also live in code at features/crm/lab/ringization-playbook.ts (seeded into the project room on integrator assign).
Ringization means shipping a clone-local feature overlay on Layer1 ring/web — brand, presets, and optional Tier-3 domain modules — without editing the platform tree (and without treating ring-platform-org as your vertical). Build merge: platform copy → tmp, then clone overlay overwrite (ringdom-clone-build / Forgejo Lab path).
| Surface | Role |
|---|---|
| This playbook | Full vertical / brand / Tier-1–3 methodology |
| Configuration playbook | Order Lab ?tab=playbook — this order’s gates |
| Vertical presets | Named entities / home / productField catalogs |
| Customization guide | Config-first branding + thin exclude hygiene |
| Owner Project Lab | Buyer /my-orders · integrator /my-jobs chrome |
| Previous habit | Ring equivalent |
|---|---|
Fork all of platform into ring-* | Thin ring-*/web/ overlay + ringdom-clone-build |
Patch lib/i18n.ts / home-wrapper per brand | Overlay lib/overlay/registry.ts + features/<id>/ |
Nest product under features.n9life: true | Top-level "n9life": { … } domain block |
Exclude whole lib/ or lib/overlay/ | Exclude web/lib/overlay/registry.ts plug only (+ domain dirs) |
reggie-ringize plan files as factory | reggie_autonomous_clone → merge → forge |
project_orderhome.preset, domainFeatureId, brand fieldsPLAYBOOK_SEED_MARKER)reggie_autonomous_clone (thin disk overlay) → Forgejo ringdom-clones/<slug> → BuildKit / Lab deployBuyers and integrators open the in-app panel on /my-orders/[id] and /my-jobs/[id] (?tab=playbook). Docs deep-link: /docs/customization/ringization-playbook.
Hostname / AI-CONTEXT id ring-platform.org is not a checkout directory. Legacy flat clones (package at clone root) should migrate with layer2-clone-operator Mode B before endemic Tier-3 work.
home-wrapper or lib/i18nlib/overlay/registry.ts stays maps-empty; clones overlay registrations (maps only)lib/overlay/runtime.ts + types.ts are SSOT — never fork loaders onto the clone plugreggie_autonomous_clone (not reggie-ringize plans)cp -r ring/web into the clone as a permanent forkUse Cursor agent clone-customization-with-implementer (orchestrates layer2-clone-operator + ringization-implementer). It does not mutate until you approve the plan / dry-run.
Starter prompt (paste, fill blanks):
Ringize
TARGET_CLONE=ring-<slug>withFEATURE_ID=<id>andMODE=A_new_thin|B_migrate_flat_to_web|C_ringize_existing. Overlay root = Final-Splitweb/. Follow.cursor/agents/layer2-clone-operator.mdthen.cursor/agents/ringization-implementer.md. Zero edits underring/web/or unsolicitedring-platform-org/. Update.reggie-propagate-exclude.jsonwithweb/…paths; excludeweb/lib/overlay/registry.tsplug only. Dry-runringdom-clone-buildthen pause for my approval before apply.
Inputs checklist
TARGET_CLONE, FEATURE_ID, display name / SEOplatform | mvm-landing | <FEATURE_ID>-landingReggie MCP (after overlay plan approved)
reggie_autonomous_clone with dry_run: true first (clone_name, customization, optional skip_merge)reggie_ringdom_propagate — source_project: "ring", dry_run: true, then review files_planned[] / files_rejected_list[] before dry_run: falseringdom-clone-build (ringdom-mcp) — platform → tmp, clone overlay winsPrerequisites: repo access to Ringdom, clone slug chosen, FEATURE_ID matching ^[a-z][a-z0-9]*$, MCP or local merge script available.
Classify Mode — New thin overlay (A), flat→web/ migrate (B), or ringize existing Final-Split (C). Prefer A/B via layer2-clone-operator before endemic product.
Tier-1 config — Under OVERLAY_ROOT (ring-<slug>/web): set ring-config.json clone.*, seo, home.preset, entity/product presets. For Tier-3 add top-level "<FEATURE_ID>": { "enabled": true, … } — not under boolean features.*.
Tier-2 presets — Prefer platform catalogs (agricultural, mvm-landing, …). Only add clone features/*/presets/<name>.ts + registry overlay when the niche is not upstream yet.
Tier-3 package — Create features/<FEATURE_ID>/ (i18n.ts → appendOverlayMessages, components, optional APIs). Overlay maps-only lib/overlay/registry.ts for i18n + home rail. Optional components/pages/home-presets/<FEATURE_ID>-landing.tsx.
Reggie exclude — At clone root .reggie-propagate-exclude.json: files[] + directories[] + locale_strategy: "new_keys_only". Final-Split paths use web/ prefixes. Always exclude the registry plug; never exclude types.ts / runtime.ts / whole lib/overlay/.
Build verify — ringdom-clone-build({ project_name: "ring-<slug>", dry_run: true }), then typecheck in the merge tmp / .dev-merge. Push forge ringdom-clones/<slug> only after dry-run review.
Allowlisted domain ids on Layer1 (OVERLAY_FEATURE_IDS): n9life, connect, greenfood, ringdom. New global ids need a separate platform PR to extend the allowlist; one-off clones still use the same id string + clone registry overlay.
You buy a vertical Ring, not a fork of the entire platform. Ringization keeps your brand and product modules in a thin overlay so platform upgrades (Auth.js, store, matcher, Lab) still flow via Reggie — without wiping Cosmic Mirror, Connect, or your logos.
No — if those paths are listed in .reggie-propagate-exclude.json. Missing excludes are how Reggie overwrites vertical code. Always exclude the registry plug + web/features/<id>/.
No. Prefer Tier-1 brand + Tier-2 named presets. Tier-3 only when you need clone-only UI, locales, or APIs.
Run layer2-clone-operator Mode B: cut endemic files into web/, rewrite exclude with web/… prefixes, add scripts/merge-dev.sh, then Mode C ringize.
ring/web to “fix” a missing brand string?No. That is a hard ban. Fix via clone locales / overlay registry / home preset — or upstream a shared preset in a separate Layer1 PR.
Deploy is integrator/admin from Order Lab. Reggie plans in chat and may scaffold/propagate; it does not deploy. See Owner Project Lab.
reggie_autonomous_clone (thin overlay + optional merge). Not reggie-ringize plan artifacts.
/my-orders/[id]?tab=playbook (buyer) and /my-jobs/[id]?tab=playbook (integrator). Seeded chat uses PLAYBOOK_SEED_MARKER for idempotent re-assign.
Same-workflow: Order Lab playbook tab checklist for this settler order.
Prerequisite: buyer My Projects and integrator Order Lab chrome.
Depends-on: named preset catalogs before Tier-3 forks.
Next-step: config-first branding and thin exclude hygiene.
Use Founder / Developer tabs in the docs sidebar to filter this page. Shared sections apply to both audiences.
Status: This page is the long-form white-label ringization SSOT for settlers and integrators. The Order Lab Playbook tab is the per-order checklist; this article is the methodology. Product steps also live in code at features/crm/lab/ringization-playbook.ts (seeded into the project room on integrator assign).
Ringization means shipping a clone-local feature overlay on Layer1 ring/web — brand, presets, and optional Tier-3 domain modules — without editing the platform tree (and without treating ring-platform-org as your vertical). Build merge: platform copy → tmp, then clone overlay overwrite (ringdom-clone-build / Forgejo Lab path).
| Surface | Role |
|---|---|
| This playbook | Full vertical / brand / Tier-1–3 methodology |
| Configuration playbook | Order Lab ?tab=playbook — this order’s gates |
| Vertical presets | Named entities / home / productField catalogs |
| Customization guide | Config-first branding + thin exclude hygiene |
| Owner Project Lab | Buyer /my-orders · integrator /my-jobs chrome |
| Previous habit | Ring equivalent |
|---|---|
Fork all of platform into ring-* | Thin ring-*/web/ overlay + ringdom-clone-build |
Patch lib/i18n.ts / home-wrapper per brand | Overlay lib/overlay/registry.ts + features/<id>/ |
Nest product under features.n9life: true | Top-level "n9life": { … } domain block |
Exclude whole lib/ or lib/overlay/ | Exclude web/lib/overlay/registry.ts plug only (+ domain dirs) |
reggie-ringize plan files as factory | reggie_autonomous_clone → merge → forge |
project_orderhome.preset, domainFeatureId, brand fieldsPLAYBOOK_SEED_MARKER)reggie_autonomous_clone (thin disk overlay) → Forgejo ringdom-clones/<slug> → BuildKit / Lab deployBuyers and integrators open the in-app panel on /my-orders/[id] and /my-jobs/[id] (?tab=playbook). Docs deep-link: /docs/customization/ringization-playbook.
Hostname / AI-CONTEXT id ring-platform.org is not a checkout directory. Legacy flat clones (package at clone root) should migrate with layer2-clone-operator Mode B before endemic Tier-3 work.
home-wrapper or lib/i18nlib/overlay/registry.ts stays maps-empty; clones overlay registrations (maps only)lib/overlay/runtime.ts + types.ts are SSOT — never fork loaders onto the clone plugreggie_autonomous_clone (not reggie-ringize plans)cp -r ring/web into the clone as a permanent forkUse Cursor agent clone-customization-with-implementer (orchestrates layer2-clone-operator + ringization-implementer). It does not mutate until you approve the plan / dry-run.
Starter prompt (paste, fill blanks):
Ringize
TARGET_CLONE=ring-<slug>withFEATURE_ID=<id>andMODE=A_new_thin|B_migrate_flat_to_web|C_ringize_existing. Overlay root = Final-Splitweb/. Follow.cursor/agents/layer2-clone-operator.mdthen.cursor/agents/ringization-implementer.md. Zero edits underring/web/or unsolicitedring-platform-org/. Update.reggie-propagate-exclude.jsonwithweb/…paths; excludeweb/lib/overlay/registry.tsplug only. Dry-runringdom-clone-buildthen pause for my approval before apply.
Inputs checklist
TARGET_CLONE, FEATURE_ID, display name / SEOplatform | mvm-landing | <FEATURE_ID>-landingReggie MCP (after overlay plan approved)
reggie_autonomous_clone with dry_run: true first (clone_name, customization, optional skip_merge)reggie_ringdom_propagate — source_project: "ring", dry_run: true, then review files_planned[] / files_rejected_list[] before dry_run: falseringdom-clone-build (ringdom-mcp) — platform → tmp, clone overlay winsPrerequisites: repo access to Ringdom, clone slug chosen, FEATURE_ID matching ^[a-z][a-z0-9]*$, MCP or local merge script available.
Classify Mode — New thin overlay (A), flat→web/ migrate (B), or ringize existing Final-Split (C). Prefer A/B via layer2-clone-operator before endemic product.
Tier-1 config — Under OVERLAY_ROOT (ring-<slug>/web): set ring-config.json clone.*, seo, home.preset, entity/product presets. For Tier-3 add top-level "<FEATURE_ID>": { "enabled": true, … } — not under boolean features.*.
Tier-2 presets — Prefer platform catalogs (agricultural, mvm-landing, …). Only add clone features/*/presets/<name>.ts + registry overlay when the niche is not upstream yet.
Tier-3 package — Create features/<FEATURE_ID>/ (i18n.ts → appendOverlayMessages, components, optional APIs). Overlay maps-only lib/overlay/registry.ts for i18n + home rail. Optional components/pages/home-presets/<FEATURE_ID>-landing.tsx.
Reggie exclude — At clone root .reggie-propagate-exclude.json: files[] + directories[] + locale_strategy: "new_keys_only". Final-Split paths use web/ prefixes. Always exclude the registry plug; never exclude types.ts / runtime.ts / whole lib/overlay/.
Build verify — ringdom-clone-build({ project_name: "ring-<slug>", dry_run: true }), then typecheck in the merge tmp / .dev-merge. Push forge ringdom-clones/<slug> only after dry-run review.
Allowlisted domain ids on Layer1 (OVERLAY_FEATURE_IDS): n9life, connect, greenfood, ringdom. New global ids need a separate platform PR to extend the allowlist; one-off clones still use the same id string + clone registry overlay.
You buy a vertical Ring, not a fork of the entire platform. Ringization keeps your brand and product modules in a thin overlay so platform upgrades (Auth.js, store, matcher, Lab) still flow via Reggie — without wiping Cosmic Mirror, Connect, or your logos.
No — if those paths are listed in .reggie-propagate-exclude.json. Missing excludes are how Reggie overwrites vertical code. Always exclude the registry plug + web/features/<id>/.
No. Prefer Tier-1 brand + Tier-2 named presets. Tier-3 only when you need clone-only UI, locales, or APIs.
Run layer2-clone-operator Mode B: cut endemic files into web/, rewrite exclude with web/… prefixes, add scripts/merge-dev.sh, then Mode C ringize.
ring/web to “fix” a missing brand string?No. That is a hard ban. Fix via clone locales / overlay registry / home preset — or upstream a shared preset in a separate Layer1 PR.
Deploy is integrator/admin from Order Lab. Reggie plans in chat and may scaffold/propagate; it does not deploy. See Owner Project Lab.
reggie_autonomous_clone (thin overlay + optional merge). Not reggie-ringize plan artifacts.
/my-orders/[id]?tab=playbook (buyer) and /my-jobs/[id]?tab=playbook (integrator). Seeded chat uses PLAYBOOK_SEED_MARKER for idempotent re-assign.
Same-workflow: Order Lab playbook tab checklist for this settler order.
Prerequisite: buyer My Projects and integrator Order Lab chrome.
Depends-on: named preset catalogs before Tier-3 forks.
Next-step: config-first branding and thin exclude hygiene.
Use Founder / Developer tabs in the docs sidebar to filter this page. Shared sections apply to both audiences.
Status: This page is the long-form white-label ringization SSOT for settlers and integrators. The Order Lab Playbook tab is the per-order checklist; this article is the methodology. Product steps also live in code at features/crm/lab/ringization-playbook.ts (seeded into the project room on integrator assign).
Ringization means shipping a clone-local feature overlay on Layer1 ring/web — brand, presets, and optional Tier-3 domain modules — without editing the platform tree (and without treating ring-platform-org as your vertical). Build merge: platform copy → tmp, then clone overlay overwrite (ringdom-clone-build / Forgejo Lab path).
| Surface | Role |
|---|---|
| This playbook | Full vertical / brand / Tier-1–3 methodology |
| Configuration playbook | Order Lab ?tab=playbook — this order’s gates |
| Vertical presets | Named entities / home / productField catalogs |
| Customization guide | Config-first branding + thin exclude hygiene |
| Owner Project Lab | Buyer /my-orders · integrator /my-jobs chrome |
| Previous habit | Ring equivalent |
|---|---|
Fork all of platform into ring-* | Thin ring-*/web/ overlay + ringdom-clone-build |
Patch lib/i18n.ts / home-wrapper per brand | Overlay lib/overlay/registry.ts + features/<id>/ |
Nest product under features.n9life: true | Top-level "n9life": { … } domain block |
Exclude whole lib/ or lib/overlay/ | Exclude web/lib/overlay/registry.ts plug only (+ domain dirs) |
reggie-ringize plan files as factory | reggie_autonomous_clone → merge → forge |
project_orderhome.preset, domainFeatureId, brand fieldsPLAYBOOK_SEED_MARKER)reggie_autonomous_clone (thin disk overlay) → Forgejo ringdom-clones/<slug> → BuildKit / Lab deployBuyers and integrators open the in-app panel on /my-orders/[id] and /my-jobs/[id] (?tab=playbook). Docs deep-link: /docs/customization/ringization-playbook.
Hostname / AI-CONTEXT id ring-platform.org is not a checkout directory. Legacy flat clones (package at clone root) should migrate with layer2-clone-operator Mode B before endemic Tier-3 work.
home-wrapper or lib/i18nlib/overlay/registry.ts stays maps-empty; clones overlay registrations (maps only)lib/overlay/runtime.ts + types.ts are SSOT — never fork loaders onto the clone plugreggie_autonomous_clone (not reggie-ringize plans)cp -r ring/web into the clone as a permanent forkUse Cursor agent clone-customization-with-implementer (orchestrates layer2-clone-operator + ringization-implementer). It does not mutate until you approve the plan / dry-run.
Starter prompt (paste, fill blanks):
Ringize
TARGET_CLONE=ring-<slug>withFEATURE_ID=<id>andMODE=A_new_thin|B_migrate_flat_to_web|C_ringize_existing. Overlay root = Final-Splitweb/. Follow.cursor/agents/layer2-clone-operator.mdthen.cursor/agents/ringization-implementer.md. Zero edits underring/web/or unsolicitedring-platform-org/. Update.reggie-propagate-exclude.jsonwithweb/…paths; excludeweb/lib/overlay/registry.tsplug only. Dry-runringdom-clone-buildthen pause for my approval before apply.
Inputs checklist
TARGET_CLONE, FEATURE_ID, display name / SEOplatform | mvm-landing | <FEATURE_ID>-landingReggie MCP (after overlay plan approved)
reggie_autonomous_clone with dry_run: true first (clone_name, customization, optional skip_merge)reggie_ringdom_propagate — source_project: "ring", dry_run: true, then review files_planned[] / files_rejected_list[] before dry_run: falseringdom-clone-build (ringdom-mcp) — platform → tmp, clone overlay winsPrerequisites: repo access to Ringdom, clone slug chosen, FEATURE_ID matching ^[a-z][a-z0-9]*$, MCP or local merge script available.
Classify Mode — New thin overlay (A), flat→web/ migrate (B), or ringize existing Final-Split (C). Prefer A/B via layer2-clone-operator before endemic product.
Tier-1 config — Under OVERLAY_ROOT (ring-<slug>/web): set ring-config.json clone.*, seo, home.preset, entity/product presets. For Tier-3 add top-level "<FEATURE_ID>": { "enabled": true, … } — not under boolean features.*.
Tier-2 presets — Prefer platform catalogs (agricultural, mvm-landing, …). Only add clone features/*/presets/<name>.ts + registry overlay when the niche is not upstream yet.
Tier-3 package — Create features/<FEATURE_ID>/ (i18n.ts → appendOverlayMessages, components, optional APIs). Overlay maps-only lib/overlay/registry.ts for i18n + home rail. Optional components/pages/home-presets/<FEATURE_ID>-landing.tsx.
Reggie exclude — At clone root .reggie-propagate-exclude.json: files[] + directories[] + locale_strategy: "new_keys_only". Final-Split paths use web/ prefixes. Always exclude the registry plug; never exclude types.ts / runtime.ts / whole lib/overlay/.
Build verify — ringdom-clone-build({ project_name: "ring-<slug>", dry_run: true }), then typecheck in the merge tmp / .dev-merge. Push forge ringdom-clones/<slug> only after dry-run review.
Allowlisted domain ids on Layer1 (OVERLAY_FEATURE_IDS): n9life, connect, greenfood, ringdom. New global ids need a separate platform PR to extend the allowlist; one-off clones still use the same id string + clone registry overlay.
You buy a vertical Ring, not a fork of the entire platform. Ringization keeps your brand and product modules in a thin overlay so platform upgrades (Auth.js, store, matcher, Lab) still flow via Reggie — without wiping Cosmic Mirror, Connect, or your logos.
No — if those paths are listed in .reggie-propagate-exclude.json. Missing excludes are how Reggie overwrites vertical code. Always exclude the registry plug + web/features/<id>/.
No. Prefer Tier-1 brand + Tier-2 named presets. Tier-3 only when you need clone-only UI, locales, or APIs.
Run layer2-clone-operator Mode B: cut endemic files into web/, rewrite exclude with web/… prefixes, add scripts/merge-dev.sh, then Mode C ringize.
ring/web to “fix” a missing brand string?No. That is a hard ban. Fix via clone locales / overlay registry / home preset — or upstream a shared preset in a separate Layer1 PR.
Deploy is integrator/admin from Order Lab. Reggie plans in chat and may scaffold/propagate; it does not deploy. See Owner Project Lab.
reggie_autonomous_clone (thin overlay + optional merge). Not reggie-ringize plan artifacts.
/my-orders/[id]?tab=playbook (buyer) and /my-jobs/[id]?tab=playbook (integrator). Seeded chat uses PLAYBOOK_SEED_MARKER for idempotent re-assign.
Same-workflow: Order Lab playbook tab checklist for this settler order.
Prerequisite: buyer My Projects and integrator Order Lab chrome.
Depends-on: named preset catalogs before Tier-3 forks.
Next-step: config-first branding and thin exclude hygiene.
Branding, feature flags, and thin-overlay exclude doctrine.
| Scenario | What you ask for |
|---|---|
| Logo + site name only | Tier-1 — ring-config + branding assets |
| Healthy-food marketplace like GreenFood | Tier-2 — entities/productFields/productBadges = agricultural, home.preset = mvm-landing |
| Unique product (Cosmic Mirror, Connect) | Tier-3 — features/<id>/* + registry plug + exclude |
| Flat legacy clone | Mode B Final-Split migrate before more endemic UI |
Empire Order Lab (ring-platform-org) is the control plane for paid clones — it is not the template to copy into your white-label. Your product lives under ring-<your-slug>/web/.
| Agents |
.cursor/agents/ringization-implementer.md, layer2-clone-operator.md, clone-customization-with-implementer.md |
| Exclude exemplar (empire) | ring-platform-org/.reggie-propagate-exclude.json (web/… + ops dirs) |
| Exclude exemplar (vertical) | ring-n9life-com/.reggie-propagate-exclude.json |
Replace n9life with your FEATURE_ID. Do not define loadOverlayMessages / resolveOverlayHomeRail here — those stay in platform runtime.ts.
| Tool | Server id |
|---|---|
legiox-knowledge / agent-selector | project-0-ringdom-legiox-mcp |
reggie_autonomous_clone, reggie_ringdom_propagate | project-0-ringdom-reggie-mcp |
ringdom-clone-build | project-0-ringdom-ringdom-mcp |
See-also: first local clone before ringizing a vertical.
{
"description": "<Clone> feature-overlay — brand + Tier-3. Exclude registry.ts plug only.",
"files": [
".reggie-propagate-exclude.json",
"web/ring-config.json",
"web/lib/overlay/registry.ts",
"web/components/pages/home-presets/<FEATURE_ID>-landing.tsx"
],
"directories": [
"web/features/<FEATURE_ID>",
"web/public/branding",
"web/locales"
],
"locale_strategy": "new_keys_only"
}
Layer1 ring/web/ Next.js SSOT — never ringize product here
Empire ring-platform-org/ Order Lab / CRM / calculator (not your vertical)
White-label ring-<slug>/web/ Endemic overlay only (Final-Split)
Compose ringdom-clone-build Layer1 web + clone web → build tmp (clone wins)Branding, feature flags, and thin-overlay exclude doctrine.
| Scenario | What you ask for |
|---|---|
| Logo + site name only | Tier-1 — ring-config + branding assets |
| Healthy-food marketplace like GreenFood | Tier-2 — entities/productFields/productBadges = agricultural, home.preset = mvm-landing |
| Unique product (Cosmic Mirror, Connect) | Tier-3 — features/<id>/* + registry plug + exclude |
| Flat legacy clone | Mode B Final-Split migrate before more endemic UI |
Empire Order Lab (ring-platform-org) is the control plane for paid clones — it is not the template to copy into your white-label. Your product lives under ring-<your-slug>/web/.
| Agents |
.cursor/agents/ringization-implementer.md, layer2-clone-operator.md, clone-customization-with-implementer.md |
| Exclude exemplar (empire) | ring-platform-org/.reggie-propagate-exclude.json (web/… + ops dirs) |
| Exclude exemplar (vertical) | ring-n9life-com/.reggie-propagate-exclude.json |
Replace n9life with your FEATURE_ID. Do not define loadOverlayMessages / resolveOverlayHomeRail here — those stay in platform runtime.ts.
| Tool | Server id |
|---|---|
legiox-knowledge / agent-selector | project-0-ringdom-legiox-mcp |
reggie_autonomous_clone, reggie_ringdom_propagate | project-0-ringdom-reggie-mcp |
ringdom-clone-build | project-0-ringdom-ringdom-mcp |
See-also: first local clone before ringizing a vertical.
{
"description": "<Clone> feature-overlay — brand + Tier-3. Exclude registry.ts plug only.",
"files": [
".reggie-propagate-exclude.json",
"web/ring-config.json",
"web/lib/overlay/registry.ts",
"web/components/pages/home-presets/<FEATURE_ID>-landing.tsx"
],
"directories": [
"web/features/<FEATURE_ID>",
"web/public/branding",
"web/locales"
],
"locale_strategy": "new_keys_only"
}
Layer1 ring/web/ Next.js SSOT — never ringize product here
Empire ring-platform-org/ Order Lab / CRM / calculator (not your vertical)
White-label ring-<slug>/web/ Endemic overlay only (Final-Split)
Compose ringdom-clone-build Layer1 web + clone web → build tmp (clone wins)Branding, feature flags, and thin-overlay exclude doctrine.
| Scenario | What you ask for |
|---|---|
| Logo + site name only | Tier-1 — ring-config + branding assets |
| Healthy-food marketplace like GreenFood | Tier-2 — entities/productFields/productBadges = agricultural, home.preset = mvm-landing |
| Unique product (Cosmic Mirror, Connect) | Tier-3 — features/<id>/* + registry plug + exclude |
| Flat legacy clone | Mode B Final-Split migrate before more endemic UI |
Empire Order Lab (ring-platform-org) is the control plane for paid clones — it is not the template to copy into your white-label. Your product lives under ring-<your-slug>/web/.
| Agents |
.cursor/agents/ringization-implementer.md, layer2-clone-operator.md, clone-customization-with-implementer.md |
| Exclude exemplar (empire) | ring-platform-org/.reggie-propagate-exclude.json (web/… + ops dirs) |
| Exclude exemplar (vertical) | ring-n9life-com/.reggie-propagate-exclude.json |
Replace n9life with your FEATURE_ID. Do not define loadOverlayMessages / resolveOverlayHomeRail here — those stay in platform runtime.ts.
| Tool | Server id |
|---|---|
legiox-knowledge / agent-selector | project-0-ringdom-legiox-mcp |
reggie_autonomous_clone, reggie_ringdom_propagate | project-0-ringdom-reggie-mcp |
ringdom-clone-build | project-0-ringdom-ringdom-mcp |
See-also: first local clone before ringizing a vertical.
{
"description": "<Clone> feature-overlay — brand + Tier-3. Exclude registry.ts plug only.",
"files": [
".reggie-propagate-exclude.json",
"web/ring-config.json",
"web/lib/overlay/registry.ts",
"web/components/pages/home-presets/<FEATURE_ID>-landing.tsx"
],
"directories": [
"web/features/<FEATURE_ID>",
"web/public/branding",
"web/locales"
],
"locale_strategy": "new_keys_only"
}
Layer1 ring/web/ Next.js SSOT — never ringize product here
Empire ring-platform-org/ Order Lab / CRM / calculator (not your vertical)
White-label ring-<slug>/web/ Endemic overlay only (Final-Split)
Compose ringdom-clone-build Layer1 web + clone web → build tmp (clone wins)
import type { OverlayHomeRailRegistry, OverlayI18nRegistry } from '@/lib/overlay/types'
export const OVERLAY_I18N_REGISTRY: OverlayI18nRegistry = {
n9life: () => import('@/features/n9life/i18n'),
}
export const OVERLAY_HOME_RAIL_REGISTRY: OverlayHomeRailRegistry = {
n9life: () => import('@/features/n9life/components/home-right-rail'),
}
import type { OverlayHomeRailRegistry, OverlayI18nRegistry } from '@/lib/overlay/types'
export const OVERLAY_I18N_REGISTRY: OverlayI18nRegistry = {
n9life: () => import('@/features/n9life/i18n'),
}
export const OVERLAY_HOME_RAIL_REGISTRY: OverlayHomeRailRegistry = {
n9life: () => import('@/features/n9life/components/home-right-rail'),
}
import type { OverlayHomeRailRegistry, OverlayI18nRegistry } from '@/lib/overlay/types'
export const OVERLAY_I18N_REGISTRY: OverlayI18nRegistry = {
n9life: () => import('@/features/n9life/i18n'),
}
export const OVERLAY_HOME_RAIL_REGISTRY: OverlayHomeRailRegistry = {
n9life: () => import('@/features/n9life/components/home-right-rail'),
}