diff --git a/src/data/vortexopedia.ts b/src/data/vortexopedia.ts
index 7884650..025f877 100644
--- a/src/data/vortexopedia.ts
+++ b/src/data/vortexopedia.ts
@@ -1611,4 +1611,188 @@ export const vortexopediaTerms: VortexopediaTerm[] = [
source: "App UX: governing status scale",
updated: "2025-12-18",
},
+ {
+ ref: 56,
+ id: "invision_stability_stable_band",
+ name: "Stable Invision band",
+ category: "governance",
+ short:
+ "A stability band meaning the system is closing decisions, avoiding stale backlog, and preserving continuity well enough to be considered operationally healthy.",
+ long: [
+ "Stable is the high stability bucket in Invision.",
+ "It means the stability engine sees enough decision closure, backlog health, delay health, Formation continuity, governor continuity, constitutional calm, and concentration health to treat the system as operationally sound.",
+ "Stable does not mean perfect. It means the current evidence does not show a serious governance-flow problem.",
+ ],
+ tags: ["invision", "stability", "system_health", "band"],
+ related: ["invision_band", "gradual_decentralization"],
+ examples: [
+ "If proposals are closing on time and live work is not stale, the stability engine can land in the Stable band.",
+ ],
+ stages: ["global"],
+ links: [
+ {
+ label: "Invision",
+ url: "/app/invision",
+ },
+ ],
+ source: "App UX: Invision stability bands",
+ updated: "2026-06-26",
+ },
+ {
+ ref: 57,
+ id: "invision_stability_watch_band",
+ name: "Watch Invision band",
+ category: "governance",
+ short:
+ "A stability band meaning the system still operates, but one or more stability signals need attention before they become a serious failure mode.",
+ long: [
+ "Watch is the middle stability bucket in Invision.",
+ "It appears when the system is not broken, but signals such as stale live work, weak decision closure, Formation drag, or concentration pressure reduce confidence in the governance flow.",
+ "Watch is an attention state. It asks governors to inspect the components rather than assume the aggregate score is enough.",
+ ],
+ tags: ["invision", "stability", "system_health", "band", "watch"],
+ related: [
+ "invision_band",
+ "invision_stability_stable_band",
+ "invision_stability_unstable_band",
+ ],
+ examples: [
+ "A system with good legitimacy but a stale proposal backlog can fall into Watch.",
+ ],
+ stages: ["global"],
+ links: [
+ {
+ label: "Invision",
+ url: "/app/invision",
+ },
+ ],
+ source: "App UX: Invision stability bands",
+ updated: "2026-06-26",
+ },
+ {
+ ref: 58,
+ id: "invision_stability_unstable_band",
+ name: "Unstable Invision band",
+ category: "governance",
+ short:
+ "A stability band meaning the current evidence points to a serious governance-flow problem, such as severe stale backlog, weak closure, or constitutional stress.",
+ long: [
+ "Unstable is the low stability bucket in Invision.",
+ "It means the stability engine sees enough pressure that the system should not be treated as healthy without intervention.",
+ "Typical causes include very stale votes, unresolved Formation work, low decision closure, legitimacy referendum pressure, or sharp concentration of active work.",
+ ],
+ tags: ["invision", "stability", "system_health", "band", "critical"],
+ related: ["invision_band", "invision_stability_watch_band"],
+ examples: [
+ "A system with many stale live items and low decision closure can land in Unstable.",
+ ],
+ stages: ["global"],
+ links: [
+ {
+ label: "Invision",
+ url: "/app/invision",
+ },
+ ],
+ source: "App UX: Invision stability bands",
+ updated: "2026-06-26",
+ },
+ {
+ ref: 59,
+ id: "invision_decentralization_broad_band",
+ name: "Broad Invision band",
+ category: "governance",
+ short:
+ "A decentralization band meaning governance activity is spread across enough authors, chambers, factions, delegates, and execution leaders to look broadly distributed.",
+ long: [
+ "Broad is the high decentralization bucket in Invision.",
+ "It means no single center dominates the visible governance surface under the current evidence window.",
+ "Broad is about distribution of influence and workload, not whether every governor participates equally in every action.",
+ ],
+ tags: ["invision", "decentralization", "system_health", "band"],
+ related: [
+ "invision_band",
+ "gradual_decentralization",
+ "constant_deterrence",
+ ],
+ examples: [
+ "If proposal authorship, faction membership, chamber load, and execution leadership are distributed, decentralization can land in Broad.",
+ ],
+ stages: ["global"],
+ links: [
+ {
+ label: "Invision",
+ url: "/app/invision",
+ },
+ ],
+ source: "App UX: Invision decentralization bands",
+ updated: "2026-06-26",
+ },
+ {
+ ref: 60,
+ id: "invision_decentralization_mixed_band",
+ name: "Mixed Invision band",
+ category: "governance",
+ short:
+ "A decentralization band meaning influence is neither broadly distributed nor dangerously concentrated; some surfaces are healthy while others show clustering.",
+ long: [
+ "Mixed is the middle decentralization bucket in Invision.",
+ "It means the system has both distributed and concentrated signals at the same time.",
+ "Users should inspect the component list to see whether concentration comes from proposal authorship, accepted proposals, chamber load, factions, execution leadership, or delegated influence.",
+ ],
+ tags: ["invision", "decentralization", "system_health", "band", "watch"],
+ related: [
+ "invision_band",
+ "invision_decentralization_broad_band",
+ "invision_decentralization_concentrated_band",
+ ],
+ examples: [
+ "A system can be Mixed when many governors author proposals, but one chamber or faction still dominates live work.",
+ ],
+ stages: ["global"],
+ links: [
+ {
+ label: "Invision",
+ url: "/app/invision",
+ },
+ ],
+ source: "App UX: Invision decentralization bands",
+ updated: "2026-06-26",
+ },
+ {
+ ref: 61,
+ id: "invision_decentralization_concentrated_band",
+ name: "Concentrated Invision band",
+ category: "governance",
+ short:
+ "A decentralization band meaning too much visible governance influence or workload is clustered around too few centers.",
+ long: [
+ "Concentrated is the low decentralization bucket in Invision.",
+ "It indicates that one or a small number of authors, chambers, factions, delegates, or execution leaders dominate the measured governance surface.",
+ "Concentrated does not automatically mean abuse. It means the current distribution is structurally fragile and should be reviewed.",
+ ],
+ tags: [
+ "invision",
+ "decentralization",
+ "system_health",
+ "band",
+ "concentration",
+ ],
+ related: [
+ "invision_band",
+ "invision_decentralization_mixed_band",
+ "constant_deterrence",
+ ],
+ examples: [
+ "If one faction or chamber controls most visible activity, decentralization can land in Concentrated.",
+ ],
+ stages: ["global"],
+ links: [
+ {
+ label: "Invision",
+ url: "/app/invision",
+ },
+ ],
+ source: "App UX: Invision decentralization bands",
+ updated: "2026-06-26",
+ },
];
diff --git a/src/pages/invision/Invision.tsx b/src/pages/invision/Invision.tsx
index b9c307c..b222b41 100644
--- a/src/pages/invision/Invision.tsx
+++ b/src/pages/invision/Invision.tsx
@@ -25,6 +25,7 @@ import type {
type EngineDto = InvisionDecentralizationDto | InvisionStabilityDto;
type StatusTone = "danger" | "neutral" | "ok" | "primary" | "warn";
+type EngineBand = EngineDto["band"];
function toneForScore(tone: InvisionStabilityComponentDto["tone"]) {
if (tone === "critical") return "danger";
@@ -51,6 +52,23 @@ function toneForRiskStatus(status: string) {
return "primary";
}
+function invisionBandTermId(band: EngineBand): string {
+ switch (band) {
+ case "Stable":
+ return "invision_stability_stable_band";
+ case "Watch":
+ return "invision_stability_watch_band";
+ case "Unstable":
+ return "invision_stability_unstable_band";
+ case "Broad":
+ return "invision_decentralization_broad_band";
+ case "Mixed":
+ return "invision_decentralization_mixed_band";
+ case "Concentrated":
+ return "invision_decentralization_concentrated_band";
+ }
+}
+
function EngineSection({
engine,
title,
@@ -73,7 +91,12 @@ function EngineSection({
label={Band}
value={
- {engine.band}
+
+ {engine.band}
+
}
/>
diff --git a/tests/unit/phase89-visual-contract.test.ts b/tests/unit/phase89-visual-contract.test.ts
index e7a1442..d9c406d 100644
--- a/tests/unit/phase89-visual-contract.test.ts
+++ b/tests/unit/phase89-visual-contract.test.ts
@@ -46,8 +46,9 @@ test("Phase 89 static visual contract covers public entry routes", () => {
assert.match(guide, /The two UX primitives: hints and stages/);
assert.match(vortexopedia, /Search terms/);
- assert.match(vortexopedia, /Showing 57 \/ 57 entries/);
+ assert.match(vortexopedia, /Showing 63 \/ 63 entries/);
assert.match(vortexopedia, /Invision band/);
+ assert.match(vortexopedia, /Concentrated Invision band/);
assert.match(vortexopedia, /Vortex/);
});