Skip to content

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%) ────────────────────────────────┘
StageGatePurpose
VISIONV(I)Chairman defines intent. Council deliberates. Acceptance criteria written.
DECOMPOSEBreak into independent deliverable slices
RESEARCHExhaust public + repo knowledge. Record findings.
PLANV(I)Lock the spec. Council approves. Execution order set.
BUILDWrite code within locked spec
DEPLOYShip to preview/staging. The artifact now exists.
INSPECTV(Q)Look at the deployed artifact. Screenshot. Test. Measure.
QAV(Q)Typecheck. Tests. Accessibility. Visual regression.
CONVERGEV(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.85
BLOCKED: V(Q) < 0.85

Each 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 ██████████ PROCEED

Historical 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 table
CREATE 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 week
SELECT
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_loops
FROM convergence_sessions
WHERE created_at > NOW() - INTERVAL '90 days'
GROUP BY week
ORDER BY week DESC;
-- Sessions that required multiple loops
SELECT
session_label,
loop_count,
vq_score,
EXTRACT(EPOCH FROM (converged_at - created_at))/3600 AS hours_to_converge
FROM convergence_sessions
WHERE status = 'converged'
AND loop_count > 1
ORDER BY loop_count DESC
LIMIT 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.