Convergence Engine
The Convergence Engine is the operating system underneath all GOVERN quality assurance. It is not a feature or a dashboard widget — it is the deterministic loop that governs every build and deploy decision.
What is Convergence?
Convergence is the state where:
- Every acceptance criterion has passed with evidence
- Zero unverified assumptions remain
- All blockers are resolved
- Build checks pass
- QA score is >= 85%
Until convergence is reached, deployment is blocked. There is no override.
The 9-Stage Loop
VISION → DECOMPOSE → RESEARCH → PLAN → BUILD → DEPLOY → INSPECT → QA → CONVERGE ↑ | └─────────────────────── (if score < 85%) ────────────────────────────────┘| Stage | Gate | Purpose |
|---|---|---|
| VISION | V(I) | Chairman defines intent. Council deliberates. Acceptance criteria written. |
| DECOMPOSE | — | Break into independent deliverable slices |
| RESEARCH | — | Exhaust public + repo knowledge. Record findings. |
| PLAN | V(I) | Lock the spec. Council approves. Execution order set. |
| BUILD | — | Write code within locked spec |
| DEPLOY | — | Ship to preview/staging. The artifact now exists. |
| INSPECT | V(Q) | Look at the deployed artifact. Screenshot. Test. Measure. |
| QA | V(Q) | Typecheck. Tests. Accessibility. Visual regression. |
| CONVERGE | V(Q) | Score against criteria. All pass → done. Any fail → loop. |
The V(Q) Convergence Score
V(Q) = (TypecheckScore × 0.20) + (UnitTestScore × 0.20) + (IntegrationTestScore × 0.20) + (E2EScore × 0.15) + (VisualRegressionScore × 0.15) + (APISpotCheckScore × 0.10)
PROCEED threshold: V(Q) >= 0.85BLOCKED: V(Q) < 0.85Each dimension is scored 0.0–1.0 based on pass rate. TypeScript typecheck is binary (0 errors = 1.0, any errors = 0.0).
Convergence Metrics in the Internal Dashboard
The convergence panel shows:
Current session convergence
The V(Q) score for the active session, updated in real-time as test results flow in:
Session Convergence — v0.12.0-rc1━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━TypeScript ██████████ 1.00 (0 errors)Unit Tests ██████████ 1.00 (248/248)Integration ██████████ 1.00 (42/42)E2E ██████████ 1.00 (8/8)Visual Regression ██████████ 1.00 (0 diffs)API Spot-checks ████████░░ 0.83 (10/12)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━V(Q): 0.97 ██████████ PROCEEDHistorical convergence trend
Line chart showing V(Q) scores over the last 30 build sessions. Healthy trend: scores above 0.85 consistently, with occasional dips that are quickly recovered.
Convergence velocity
How long does it take to reach convergence from first commit? Measured in hours. Healthy range: 2–8 hours. > 24 hours indicates systemic quality issues.
Stage failure distribution
Pie chart showing which stages of the 9-stage loop fail most often. Common failure points:
- QA — Visual regression diffs from unreviewed UI changes
- INSPECT — Deployed artifact not matching spec (spec drift)
- BUILD — TypeScript errors in new code
Council Deliberation Gate (V(I))
Before PLAN and VISION stages, V(I) fires. This is the deliberation gate:
V(I) = I ⊓ ¬Council(I)
A violation exists when inference occurs without deliberation.The Internal Dashboard shows council deliberation quality:
- Receipt tier — Was the receipt Constitutional (full 14-archetype), Standard, or Resonance?
- Convergence score — The council’s own convergence score (Oranos weight = 2.0, Alvin/Karen/Michelle = 1.5, others = 1.0)
- Oranos verdict — ALIGNED / CAUTIOUS / BLOCKED
- Decision CuC — Coherence score across all 20 voices (14 archetypes + 6 substrates)
A council convergence score below 0.80 means the work should not proceed. The engineer must deliberate again.
Convergence Engine Database
-- convergence_sessions tableCREATE TABLE convergence_sessions ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES profiles(id), session_label TEXT, vision TEXT, acceptance_criteria JSONB DEFAULT '[]', current_stage TEXT DEFAULT 'vision' CHECK (current_stage IN ('vision','decompose','research','plan', 'build','deploy','inspect','qa','converge')), vq_score NUMERIC(4,3), typecheck_score NUMERIC(4,3), unit_test_score NUMERIC(4,3), integration_score NUMERIC(4,3), e2e_score NUMERIC(4,3), visual_score NUMERIC(4,3), api_score NUMERIC(4,3), status TEXT DEFAULT 'active' CHECK (status IN ('active','converged','blocked','abandoned')), loop_count INTEGER DEFAULT 0, converged_at TIMESTAMPTZ, created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now());Convergence Queries
-- Average convergence score per weekSELECT DATE_TRUNC('week', created_at) AS week, AVG(vq_score) AS avg_vq, COUNT(*) AS session_count, COUNT(*) FILTER (WHERE status = 'converged') AS converged_count, AVG(loop_count) AS avg_loopsFROM convergence_sessionsWHERE created_at > NOW() - INTERVAL '90 days'GROUP BY weekORDER BY week DESC;
-- Sessions that required multiple loopsSELECT session_label, loop_count, vq_score, EXTRACT(EPOCH FROM (converged_at - created_at))/3600 AS hours_to_convergeFROM convergence_sessionsWHERE status = 'converged' AND loop_count > 1ORDER BY loop_count DESCLIMIT 20;The Iron Law
The convergence engine is governed by the Iron Law:
No deploy without convergence. No convergence without evidence. No evidence without inspection. No inspection without deployment. No deployment without build. No build without plan. No plan without research. No research without decomposition. No decomposition without vision.
The loop is the law. The law is the loop.
This law is constitutionally protected. It cannot be suspended for “urgent” deploys or “quick fixes.” If a quick fix is needed, the loop runs — just faster.