helixevo 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +9 -2
- package/dashboard/app/api/proof/route.ts +71 -0
- package/dashboard/app/api/run/route.ts +1 -0
- package/dashboard/app/coevolution/client.tsx +6 -1
- package/dashboard/app/coevolution/page.tsx +3 -1
- package/dashboard/app/commands/page.tsx +32 -5
- package/dashboard/app/guide/page.tsx +34 -21
- package/dashboard/app/ontology/client.tsx +8 -1
- package/dashboard/app/ontology/page.tsx +3 -1
- package/dashboard/app/page.tsx +6 -0
- package/dashboard/app/proof/client.tsx +295 -0
- package/dashboard/app/proof/page.tsx +9 -0
- package/dashboard/app/topology/client.tsx +9 -0
- package/dashboard/app/topology/page.tsx +3 -1
- package/dashboard/components/sidebar-nav.tsx +1 -0
- package/dashboard/lib/loop-map.ts +23 -3
- package/dashboard/lib/proof.ts +577 -0
- package/dashboard/lib/release-spotlight.ts +10 -10
- package/dist/cli.js +500 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ All notable changes to HelixEvo are documented here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.7.0] - 2026-03-25
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- New `helixevo proof` command for bounded outcome attribution and explicit proof review across interventions, transfer, topology execution, semantic adoption, and legacy evolution impact
|
|
11
|
+
- New dashboard `Proof` route and `/api/proof` operator control surface for first-class prove-stage review
|
|
12
|
+
- New `~/.helix/proof-reviews.jsonl` ledger for verify / defer / contest decisions on derived proof records
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- The dashboard operator loop now routes the Prove stage to `/proof` instead of only the Guide metrics anchor
|
|
16
|
+
- Overview, Co-Evolution, Ontology, Topology, Guide, Commands, and README now surface the new proof layer and the broader prove-stage framing
|
|
17
|
+
- `metrics`, `status`, and `report` now point operators toward `helixevo proof --status` for broader post-action review
|
|
18
|
+
|
|
7
19
|
## [0.6.1] - 2026-03-24
|
|
8
20
|
|
|
9
21
|
### Added
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# HelixEvo
|
|
2
2
|
|
|
3
|
-
Co-evolving skill and project brain for AI agents. HelixEvo captures failures, traces activations, models pressure, routes governed responses, promotes cross-project transfer, reviews structural topology changes, safely executes accepted topology transitions with rollback,
|
|
3
|
+
Co-evolving skill and project brain for AI agents. HelixEvo captures failures, traces activations, models pressure, routes governed responses, promotes cross-project transfer, reviews structural topology changes, safely executes accepted topology transitions with rollback, lets approved ontology concepts become active semantic consumers inside the live control loop, and now exposes a first-class proof layer for bounded outcome attribution across the brain loop.
|
|
4
4
|
|
|
5
5
|
## How it works
|
|
6
6
|
|
|
@@ -81,6 +81,7 @@ helixevo dashboard
|
|
|
81
81
|
|---------|-------------|
|
|
82
82
|
| `helixevo watch` | Always-on learning: auto-capture + auto-evolve |
|
|
83
83
|
| `helixevo metrics` | Correction rates, skill trends, evolution impact |
|
|
84
|
+
| `helixevo proof` | Outcome attribution and proof review across interventions, transfer, topology, ontology, and evolution |
|
|
84
85
|
| `helixevo health` | Network health: cohesion, coverage, balance, transfer |
|
|
85
86
|
| `helixevo init` | Import existing skills + generate skill tests |
|
|
86
87
|
| `helixevo capture <session>` | Extract failures from a session file |
|
|
@@ -120,6 +121,9 @@ helixevo topology --status # Show reviewed topology execution state
|
|
|
120
121
|
helixevo topology --prepare <id> # Prepare an accepted topology candidate
|
|
121
122
|
helixevo topology --apply <id> # Apply a safe prepared topology plan
|
|
122
123
|
helixevo topology --rollback <id> # Roll back an applied topology plan
|
|
124
|
+
helixevo proof --status # Review proof state across the live loop
|
|
125
|
+
helixevo proof --review <id> --decision verify
|
|
126
|
+
# Verify a proof record after operator review
|
|
123
127
|
```
|
|
124
128
|
|
|
125
129
|
### Research options
|
|
@@ -151,6 +155,7 @@ All data is stored in `~/.helix/`:
|
|
|
151
155
|
├── topology-apply-plans.json # Prepared reviewed topology plans
|
|
152
156
|
├── topology-executions.jsonl # Prepared/applied/rolled-back execution ledger
|
|
153
157
|
├── topology-artifacts.jsonl # Evidence artifacts for reviewed structural execution
|
|
158
|
+
├── proof-reviews.jsonl # Operator verify/defer/contest ledger for derived proof records
|
|
154
159
|
├── evolution-artifacts.jsonl # Evolution + ontology-review evidence artifacts
|
|
155
160
|
├── ontology/
|
|
156
161
|
│ ├── kernel.json # Materialized ontology kernel snapshot
|
|
@@ -184,11 +189,12 @@ helixevo dashboard --port 3900
|
|
|
184
189
|
```
|
|
185
190
|
|
|
186
191
|
**Tabs:**
|
|
187
|
-
- **Overview** — Premium control cockpit with frontier signals, brain foundation, semantic backbone, ontology adoption visibility, pressure counts, topology review visibility, and prepared/applied structural state
|
|
192
|
+
- **Overview** — Premium control cockpit with frontier signals, brain foundation, semantic backbone, ontology adoption visibility, proof review visibility, pressure counts, topology review visibility, and prepared/applied structural state
|
|
188
193
|
- **Skill Network** — Interactive graph, premium inspector, co-evolution routing signals, and topology review/execution handoff links
|
|
189
194
|
- **Co-Evolution** — Operator cockpit for routed pressure response, governance mode visibility, promotion queues, transfer evidence, semantic route influence, and topology handoff
|
|
190
195
|
- **Ontology** — Semantic control surface for kernel visibility, frontier concept review, approved ontology extensions, adoption coverage, deprecation risk, and native ontology change events
|
|
191
196
|
- **Topology** — Governance steering plus a persistent operator pipeline for review → prepare → apply → rollback across merge / split / promote / rewire / consolidate candidates
|
|
197
|
+
- **Proof** — Outcome-attribution and proof-review cockpit for bounded effectiveness review across interventions, transfer, topology execution, semantic adoption, and evolution impact
|
|
192
198
|
- **Projects** — Project intake studio, live project analysis, gap routing, per-project pressure hotspots, and promotion feeders
|
|
193
199
|
- **Evolution** — Timeline of evolution runs with judge scores, artifact provenance, and activation-aware context
|
|
194
200
|
- **Research** — Knowledge buffer plus a live “why research now” handoff from current pressure, governed routing, and recurring gaps
|
|
@@ -235,6 +241,7 @@ Failures → Cluster → Propose → Replay → Multi-Judge → Regression → C
|
|
|
235
241
|
- **Governance steering** lets the operator pin or release the active adaptation mode rather than relying only on derived routing.
|
|
236
242
|
- **Topology review** persists merge / split / promote / rewire / consolidate candidates so manual review is a real workflow.
|
|
237
243
|
- **Reviewed topology execution** turns accepted safe candidates into prepared plans, snapshot-backed applies, and rollbackable structural transitions.
|
|
244
|
+
- **Proof control** turns bounded outcome attribution into an explicit operator layer where interventions, transfer, topology execution, semantic adoption, and evolution impact can be verified, deferred, or contested.
|
|
238
245
|
- **Evolution artifacts** preserve proposal-level evidence so the dashboard can show what changed, why, and with what provenance.
|
|
239
246
|
|
|
240
247
|
**Three-layer hierarchy:**
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server'
|
|
2
|
+
import { spawn } from 'child_process'
|
|
3
|
+
import { existsSync } from 'fs'
|
|
4
|
+
import { join } from 'path'
|
|
5
|
+
import { loadProofDashboardSummary } from '@/lib/proof'
|
|
6
|
+
import type { ProofReviewDecisionStatus } from '@/lib/proof'
|
|
7
|
+
|
|
8
|
+
export const dynamic = 'force-dynamic'
|
|
9
|
+
|
|
10
|
+
function resolveProofRunner(): { cmd: string; argsPrefix: string[] } {
|
|
11
|
+
const candidates = [
|
|
12
|
+
join(process.cwd(), '..', 'dist', 'cli.js'),
|
|
13
|
+
join(process.cwd(), 'dist', 'cli.js'),
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
for (const candidate of candidates) {
|
|
17
|
+
if (existsSync(candidate)) return { cmd: process.execPath, argsPrefix: [candidate] }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return { cmd: 'helixevo', argsPrefix: [] }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function runProofCommand(args: string[]): Promise<{ success: boolean; output: string }> {
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
const runner = resolveProofRunner()
|
|
26
|
+
const child = spawn(runner.cmd, [...runner.argsPrefix, 'proof', ...args], {
|
|
27
|
+
env: { ...process.env },
|
|
28
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
let output = ''
|
|
32
|
+
child.stdout?.on('data', (chunk: Buffer) => { output += chunk.toString() })
|
|
33
|
+
child.stderr?.on('data', (chunk: Buffer) => { output += chunk.toString() })
|
|
34
|
+
child.on('close', (code) => resolve({ success: code === 0, output }))
|
|
35
|
+
child.on('error', (err) => resolve({ success: false, output: `Error: ${err.message}` }))
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export async function GET() {
|
|
40
|
+
return NextResponse.json(loadProofDashboardSummary())
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export async function POST(request: Request) {
|
|
44
|
+
const body = await request.json() as {
|
|
45
|
+
action?: 'review'
|
|
46
|
+
recordId?: string
|
|
47
|
+
decision?: ProofReviewDecisionStatus
|
|
48
|
+
rationale?: string
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (body.action !== 'review') {
|
|
52
|
+
return NextResponse.json({ success: false, error: 'action must be review' }, { status: 400 })
|
|
53
|
+
}
|
|
54
|
+
if (!body.recordId || !body.decision) {
|
|
55
|
+
return NextResponse.json({ success: false, error: 'recordId and decision are required' }, { status: 400 })
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const args = ['--review', body.recordId, '--decision', body.decision]
|
|
59
|
+
if (body.rationale?.trim()) args.push('--rationale', body.rationale.trim())
|
|
60
|
+
|
|
61
|
+
const result = await runProofCommand(args)
|
|
62
|
+
if (!result.success) {
|
|
63
|
+
return NextResponse.json({ success: false, error: result.output || 'Proof command failed' }, { status: 500 })
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return NextResponse.json({
|
|
67
|
+
success: true,
|
|
68
|
+
output: result.output,
|
|
69
|
+
dashboard: loadProofDashboardSummary(),
|
|
70
|
+
})
|
|
71
|
+
}
|
|
@@ -7,6 +7,7 @@ const ALLOWED_COMMANDS: Record<string, { cmd: string; args: string[]; timeout: n
|
|
|
7
7
|
'status': { cmd: 'helixevo', args: ['status'], timeout: 15000 },
|
|
8
8
|
'health': { cmd: 'helixevo', args: ['health', '--verbose'], timeout: 120000 },
|
|
9
9
|
'metrics': { cmd: 'helixevo', args: ['metrics', '--verbose'], timeout: 15000 },
|
|
10
|
+
'proof': { cmd: 'helixevo', args: ['proof', '--verbose'], timeout: 20000 },
|
|
10
11
|
'evolve': { cmd: 'helixevo', args: ['evolve', '--verbose'], timeout: 300000 },
|
|
11
12
|
'evolve-dry': { cmd: 'helixevo', args: ['evolve', '--dry-run', '--verbose'], timeout: 300000 },
|
|
12
13
|
'generalize': { cmd: 'helixevo', args: ['generalize', '--verbose'], timeout: 300000 },
|
|
@@ -9,6 +9,7 @@ import { SectionFrame } from '@/components/section-frame'
|
|
|
9
9
|
import { OperatorLoopTrail } from '@/components/operator-loop-trail'
|
|
10
10
|
import { SurfaceJumpLinks } from '@/components/surface-jump-links'
|
|
11
11
|
import { NextStepEmptyState } from '@/components/next-step-empty-state'
|
|
12
|
+
import type { ProofDashboardSummary } from '@/lib/proof'
|
|
12
13
|
|
|
13
14
|
type RunState = 'idle' | 'running' | 'success' | 'error' | 'stopped'
|
|
14
15
|
type CommandName = 'evolve' | 'research' | 'generalize'
|
|
@@ -127,6 +128,7 @@ interface Props {
|
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
}
|
|
131
|
+
proof: ProofDashboardSummary
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
function consoleTone(state: RunState): 'neutral' | 'green' | 'red' | 'yellow' {
|
|
@@ -169,7 +171,7 @@ function formatMode(mode: Summary['governance']['activeMode']) {
|
|
|
169
171
|
return mode.split('-').join(' ')
|
|
170
172
|
}
|
|
171
173
|
|
|
172
|
-
export default function CoEvolutionClient({ summary, ontology }: Props) {
|
|
174
|
+
export default function CoEvolutionClient({ summary, ontology, proof }: Props) {
|
|
173
175
|
const [runState, setRunState] = useState<RunState>('idle')
|
|
174
176
|
const [activeCommand, setActiveCommand] = useState<CommandName | null>(null)
|
|
175
177
|
const [output, setOutput] = useState('')
|
|
@@ -272,6 +274,7 @@ export default function CoEvolutionClient({ summary, ontology }: Props) {
|
|
|
272
274
|
{ label: `${summary.topologyReviews.open} topology reviews`, tone: summary.topologyReviews.open > 0 ? 'yellow' : 'green' },
|
|
273
275
|
{ label: `${ontology.ontologyLoop.frontier} ontology frontier`, tone: ontology.ontologyLoop.reviewOpen > 0 ? 'blue' : 'neutral' },
|
|
274
276
|
{ label: `${ontology.ontologyLoop.adoption.activeConcepts} active concepts`, tone: ontology.ontologyLoop.adoption.activeConcepts > 0 ? 'green' : 'neutral' },
|
|
277
|
+
{ label: `${proof.summary.reviewOpen} proof review`, tone: proof.summary.reviewOpen > 0 ? 'yellow' : proof.summary.effective > 0 ? 'green' : 'neutral' },
|
|
275
278
|
{ label: `${summary.recentTransfers.length} recent transfers`, tone: summary.recentTransfers.length > 0 ? 'green' : 'neutral' },
|
|
276
279
|
{ label: formatMode(summary.governance.activeMode), tone: toneForMode(summary.governance.activeMode) },
|
|
277
280
|
]}
|
|
@@ -284,6 +287,7 @@ export default function CoEvolutionClient({ summary, ontology }: Props) {
|
|
|
284
287
|
<div style={{ marginTop: 8, display: 'flex', gap: 6, flexWrap: 'wrap' }}>
|
|
285
288
|
<span className="badge badge-gray">source: {summary.governance.source}</span>
|
|
286
289
|
<span className="badge badge-gray">review threshold {(summary.governance.profile.reviewThreshold * 100).toFixed(0)}%</span>
|
|
290
|
+
<Link href="/proof" className="badge badge-gray" style={{ textDecoration: 'none' }}>open proof</Link>
|
|
287
291
|
</div>
|
|
288
292
|
</div>
|
|
289
293
|
<div style={{ display: 'grid', gap: 10 }}>
|
|
@@ -307,6 +311,7 @@ export default function CoEvolutionClient({ summary, ontology }: Props) {
|
|
|
307
311
|
<MetricCard label="Prepared topology" value={summary.topologyExecution.prepared} sublabel={`${summary.topologyExecution.applied} applied • ${summary.topologyExecution.rolledBack} rolled back`} tone={summary.topologyExecution.prepared > 0 ? 'blue' : summary.topologyExecution.applied > 0 ? 'green' : 'neutral'} icon="↑" />
|
|
308
312
|
<MetricCard label="Active semantics" value={ontology.ontologyLoop.adoption.activeConcepts} sublabel={`${ontology.ontologyLoop.adoption.totalBindings} bindings • ${ontology.ontologyLoop.adoption.routesInfluenced} influenced routes`} tone={ontology.ontologyLoop.adoption.activeConcepts > 0 ? 'green' : 'neutral'} icon="◎" />
|
|
309
313
|
<MetricCard label="Recorded interventions" value={summary.pressureInterventions.total} sublabel={`${summary.pressureInterventions.completed} completed • ${summary.pressureInterventions.dryRun} dry-run`} tone="blue" icon="↺" />
|
|
314
|
+
<MetricCard label="Proof review" value={proof.summary.reviewOpen} sublabel={`${proof.summary.effective} effective • ${proof.summary.regressed} regressed`} tone={proof.summary.reviewOpen > 0 ? 'yellow' : proof.summary.effective > 0 ? 'green' : 'neutral'} icon="◇" />
|
|
310
315
|
<MetricCard label="Realized transfers" value={summary.recentTransfers.filter((event) => event.status === 'realized').length} sublabel={`${summary.pressureMotifs.addressed} motifs now addressed`} tone="green" icon="↑" />
|
|
311
316
|
</div>
|
|
312
317
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { loadCoEvolutionSummary, loadOntologySummary } from '@/lib/data'
|
|
2
|
+
import { loadProofDashboardSummary } from '@/lib/proof'
|
|
2
3
|
import CoEvolutionClient from './client'
|
|
3
4
|
|
|
4
5
|
export const dynamic = 'force-dynamic'
|
|
@@ -6,5 +7,6 @@ export const dynamic = 'force-dynamic'
|
|
|
6
7
|
export default function CoEvolutionPage() {
|
|
7
8
|
const summary = loadCoEvolutionSummary()
|
|
8
9
|
const ontology = loadOntologySummary()
|
|
9
|
-
|
|
10
|
+
const proof = loadProofDashboardSummary()
|
|
11
|
+
return <CoEvolutionClient summary={summary} ontology={ontology} proof={proof} />
|
|
10
12
|
}
|
|
@@ -212,7 +212,7 @@ const COMMANDS: CommandInfo[] = [
|
|
|
212
212
|
},
|
|
213
213
|
{
|
|
214
214
|
name: 'metrics',
|
|
215
|
-
description: 'Show correction rates, skill improvement trends, and evolution impact over time.
|
|
215
|
+
description: 'Show correction rates, skill improvement trends, and legacy evolution impact over time. Metrics remains the quantitative prove surface, while the newer proof layer now expands outcome review across interventions, topology, transfer, and semantic adoption.',
|
|
216
216
|
usage: 'helixevo metrics [options]',
|
|
217
217
|
examples: [
|
|
218
218
|
{ cmd: 'helixevo metrics', desc: 'Show summary metrics' },
|
|
@@ -225,6 +225,27 @@ const COMMANDS: CommandInfo[] = [
|
|
|
225
225
|
needsLLM: false,
|
|
226
226
|
runnable: { command: 'metrics', label: 'Show Metrics', icon: 'M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z', color: 'var(--text-secondary)' },
|
|
227
227
|
},
|
|
228
|
+
{
|
|
229
|
+
name: 'proof',
|
|
230
|
+
description: 'Review bounded outcome attribution across interventions, transfer, topology execution, semantic adoption, and legacy evolution impact. Proof is where the newer brain loop becomes operator-reviewable instead of relying only on passive heuristics.',
|
|
231
|
+
usage: 'helixevo proof [options]',
|
|
232
|
+
examples: [
|
|
233
|
+
{ cmd: 'helixevo proof --status', desc: 'Show proof summary plus the current open review queue' },
|
|
234
|
+
{ cmd: 'helixevo proof --status --verbose', desc: 'Show detailed proof records, reasons, and next actions' },
|
|
235
|
+
{ cmd: 'helixevo proof --review <recordId> --decision verify', desc: 'Verify a derived proof record after operator review' },
|
|
236
|
+
],
|
|
237
|
+
options: [
|
|
238
|
+
{ flag: '--status', desc: 'Show proof summary and open review state' },
|
|
239
|
+
{ flag: '--review <recordId>', desc: 'Review a derived proof record' },
|
|
240
|
+
{ flag: '--decision <verify|defer|contest>', desc: 'Decision for --review' },
|
|
241
|
+
{ flag: '--rationale <text>', desc: 'Optional rationale for the proof review decision' },
|
|
242
|
+
{ flag: '--verbose', desc: 'Show detailed proof records and derived reasons' },
|
|
243
|
+
],
|
|
244
|
+
category: 'analysis',
|
|
245
|
+
needsLLM: false,
|
|
246
|
+
runnable: { command: 'proof', label: 'Open Proof State', icon: 'M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z', color: 'var(--blue)' },
|
|
247
|
+
note: 'Proof stays bounded and reviewable. It does not claim strong causality when the available evidence is only partial or still measuring.',
|
|
248
|
+
},
|
|
228
249
|
{
|
|
229
250
|
name: 'status',
|
|
230
251
|
description: 'Quick overview of system state: total skills, frontier size, failure count, skill tests, and network health. Like a health check but without LLM analysis.',
|
|
@@ -313,7 +334,7 @@ const WORKFLOW = [
|
|
|
313
334
|
{ label: 'evolve', desc: 'Improve skills', tone: 'green' as const },
|
|
314
335
|
{ label: 'generalize', desc: 'Abstract patterns', tone: 'purple' as const },
|
|
315
336
|
{ label: 'graph --rebuild', desc: 'Map relationships', tone: 'yellow' as const },
|
|
316
|
-
{ label: '
|
|
337
|
+
{ label: 'proof --status', desc: 'Review outcomes', tone: 'blue' as const },
|
|
317
338
|
]
|
|
318
339
|
|
|
319
340
|
const WORKFLOW_RECIPES = [
|
|
@@ -341,6 +362,12 @@ const WORKFLOW_RECIPES = [
|
|
|
341
362
|
summary: 'Refresh structural review candidates, prepare accepted safe plans, apply them, and keep rollback available.',
|
|
342
363
|
steps: ['helixevo graph --optimize', 'helixevo topology --prepare <candidateId>', 'helixevo topology --apply <planId>'],
|
|
343
364
|
},
|
|
365
|
+
{
|
|
366
|
+
title: 'Proof review loop',
|
|
367
|
+
tone: 'blue' as const,
|
|
368
|
+
summary: 'Inspect outcome attribution across the live loop, then verify, defer, or contest proof records explicitly.',
|
|
369
|
+
steps: ['helixevo proof --status', 'helixevo proof --status --verbose', 'helixevo proof --review <recordId> --decision verify'],
|
|
370
|
+
},
|
|
344
371
|
]
|
|
345
372
|
|
|
346
373
|
const CATEGORIES: Array<{
|
|
@@ -389,8 +416,8 @@ export default function CommandsPage() {
|
|
|
389
416
|
actions={
|
|
390
417
|
<div className="hero-note-card">
|
|
391
418
|
<div className="hero-note-label">Recommended operating loop</div>
|
|
392
|
-
<div className="hero-note-title">Project Setup → Watch → Co-Evolution → Ontology → Topology</div>
|
|
393
|
-
<div className="hero-note-copy">Use the Commands page as the practical bridge between HelixEvo’s CLI, semantic control loop, and the
|
|
419
|
+
<div className="hero-note-title">Project Setup → Watch → Co-Evolution → Ontology → Topology → Proof</div>
|
|
420
|
+
<div className="hero-note-copy">Use the Commands page as the practical bridge between HelixEvo’s CLI, semantic control loop, structural control, and the new prove surface.</div>
|
|
394
421
|
</div>
|
|
395
422
|
}
|
|
396
423
|
/>
|
|
@@ -433,7 +460,7 @@ export default function CommandsPage() {
|
|
|
433
460
|
<SectionFrame
|
|
434
461
|
eyebrow="Operator recipes"
|
|
435
462
|
title="Fast command loops for the live product"
|
|
436
|
-
description="These compact sequences make the
|
|
463
|
+
description="These compact sequences make the current dashboard, CLI, and prove surface feel like one coordinated operating system instead of separate references."
|
|
437
464
|
tone="blue"
|
|
438
465
|
>
|
|
439
466
|
<div className="grid-2" style={{ gap: 14 }}>
|
|
@@ -18,7 +18,7 @@ const TOC = [
|
|
|
18
18
|
{ id: 'judges', label: 'Multi-Judge System', icon: '⚖' },
|
|
19
19
|
{ id: 'networkhealth', label: 'Network Health', icon: '♺' },
|
|
20
20
|
{ id: 'autogen', label: 'Auto-Generalization', icon: '↑' },
|
|
21
|
-
{ id: 'metrics', label: '
|
|
21
|
+
{ id: 'metrics', label: 'Proof & Metrics', icon: '📊' },
|
|
22
22
|
{ id: 'frontier', label: 'Pareto Frontier', icon: '▲' },
|
|
23
23
|
{ id: 'regression', label: 'Regression Testing', icon: '✓' },
|
|
24
24
|
{ id: 'research', label: 'Proactive Research', icon: '◎' },
|
|
@@ -286,13 +286,13 @@ export default function GuidePage() {
|
|
|
286
286
|
<div className="grid-3" style={{ marginTop: 24, marginBottom: 24 }}>
|
|
287
287
|
<div className="card" style={{ padding: '18px 18px 16px' }}>
|
|
288
288
|
<div style={{ fontSize: 10, fontWeight: 700, color: 'var(--text-muted)', textTransform: 'uppercase', letterSpacing: 0.7, marginBottom: 8 }}>Start operating</div>
|
|
289
|
-
<div style={{ fontSize: 15, fontWeight: 700, color: 'var(--text)', marginBottom: 6 }}>Project setup → Watch / Capture → Co-Evolution → Topology</div>
|
|
290
|
-
<div style={{ fontSize: 12.5, color: 'var(--text-dim)', lineHeight: 1.6 }}>This is the shortest path to seeing pressure, governed response,
|
|
289
|
+
<div style={{ fontSize: 15, fontWeight: 700, color: 'var(--text)', marginBottom: 6 }}>Project setup → Watch / Capture → Co-Evolution → Topology → Proof</div>
|
|
290
|
+
<div style={{ fontSize: 12.5, color: 'var(--text-dim)', lineHeight: 1.6 }}>This is the shortest path to seeing pressure, governed response, structural control, and the new bounded prove stage in the live product.</div>
|
|
291
291
|
</div>
|
|
292
292
|
<div className="card" style={{ padding: '18px 18px 16px' }}>
|
|
293
293
|
<div style={{ fontSize: 10, fontWeight: 700, color: 'var(--text-muted)', textTransform: 'uppercase', letterSpacing: 0.7, marginBottom: 8 }}>Understand the brain</div>
|
|
294
294
|
<div style={{ fontSize: 15, fontWeight: 700, color: 'var(--text)', marginBottom: 6 }}>Read the stack, then trace one signal through the loop</div>
|
|
295
|
-
<div style={{ fontSize: 12.5, color: 'var(--text-dim)', lineHeight: 1.6 }}>The current system is best understood as layered cognition: semantic kernel → observation → pressure → response → transfer → governance → topology.</div>
|
|
295
|
+
<div style={{ fontSize: 12.5, color: 'var(--text-dim)', lineHeight: 1.6 }}>The current system is best understood as layered cognition: semantic kernel → observation → pressure → response → transfer → governance → topology → proof.</div>
|
|
296
296
|
</div>
|
|
297
297
|
<div className="card" style={{ padding: '18px 18px 16px' }}>
|
|
298
298
|
<div style={{ fontSize: 10, fontWeight: 700, color: 'var(--text-muted)', textTransform: 'uppercase', letterSpacing: 0.7, marginBottom: 8 }}>Fast jumps</div>
|
|
@@ -319,11 +319,11 @@ export default function GuidePage() {
|
|
|
319
319
|
<p className="guide-text">
|
|
320
320
|
HelixEvo still captures failures, proposes skill mutations, evaluates them with judges, and deploys improvements carefully.
|
|
321
321
|
What changed over the recent milestone arc is that these mutation mechanics now live inside a larger architecture that senses pressure,
|
|
322
|
-
routes intervention under governance, records transfer evidence, reviews topology,
|
|
322
|
+
routes intervention under governance, records transfer evidence, reviews topology, executes a safe reviewed subset of structural change with rollback, and now exposes bounded proof review over what appears to have worked.
|
|
323
323
|
</p>
|
|
324
324
|
<p className="guide-text">
|
|
325
325
|
That means the current product should not be explained as only “capture → evolve → validate.” The more truthful frame is:
|
|
326
|
-
<strong> semantic kernel → observation → pressure → response → transfer → governance → topology review → topology execution → operator surfaces.</strong>
|
|
326
|
+
<strong> semantic kernel → observation → pressure → response → transfer → governance → topology review → topology execution → proof → operator surfaces.</strong>
|
|
327
327
|
</p>
|
|
328
328
|
<div className="guide-directions">
|
|
329
329
|
<div className="guide-direction">
|
|
@@ -488,9 +488,14 @@ helixevo topology --status`}</Code>
|
|
|
488
488
|
},
|
|
489
489
|
{
|
|
490
490
|
cmd: 'helixevo metrics',
|
|
491
|
-
desc: 'Measure
|
|
491
|
+
desc: 'Measure correction-rate and evolution-impact trends over time. This remains the quantitative metrics surface inside the broader prove stage.',
|
|
492
492
|
flags: ['--verbose'],
|
|
493
493
|
},
|
|
494
|
+
{
|
|
495
|
+
cmd: 'helixevo proof',
|
|
496
|
+
desc: 'Review bounded outcome attribution across interventions, transfer, topology execution, semantic adoption, and evolution impact; then verify, defer, or contest proof records explicitly.',
|
|
497
|
+
flags: ['--status', '--review <recordId>', '--decision <verify|defer|contest>', '--rationale <text>', '--verbose'],
|
|
498
|
+
},
|
|
494
499
|
{
|
|
495
500
|
cmd: 'helixevo dashboard',
|
|
496
501
|
desc: 'Open the premium operator dashboard. It prefers localhost:3847, reuses a known managed dashboard, falls forward if needed, and can auto-update before launch.',
|
|
@@ -522,7 +527,7 @@ helixevo topology --status`}</Code>
|
|
|
522
527
|
<Callout type="tip">
|
|
523
528
|
A good mental grouping is: <strong>observe</strong> with <code>project-setup</code>, <code>watch</code>, and <code>capture</code>;
|
|
524
529
|
<strong>respond</strong> with <code>research</code>, <code>specialize</code>, <code>evolve</code>, and <code>generalize</code>;
|
|
525
|
-
<strong>restructure</strong> with <code>graph --optimize</code> plus <code>topology</code>; and <strong>prove</strong> with <code>metrics</code>, <code>health</code>, and <code>report</code>.
|
|
530
|
+
<strong>restructure</strong> with <code>graph --optimize</code> plus <code>topology</code>; and <strong>prove</strong> with <code>proof</code> first, supported by <code>metrics</code>, <code>health</code>, and <code>report</code>.
|
|
526
531
|
</Callout>
|
|
527
532
|
</Section>
|
|
528
533
|
|
|
@@ -729,11 +734,12 @@ helixevo ontology --deprecate <conceptId>`}</Code>
|
|
|
729
734
|
<Section id="surfaces" title="Dashboard Surface Map" subtitle="Each tab is a different control or observability surface for the same brain.">
|
|
730
735
|
<div className="grid-2" style={{ gap: 12 }}>
|
|
731
736
|
{[
|
|
732
|
-
['Overview', 'var(--blue)', 'Top-level cockpit for frontier state, brain foundation, pressure totals, topology review counts,
|
|
737
|
+
['Overview', 'var(--blue)', 'Top-level cockpit for frontier state, brain foundation, pressure totals, topology review counts, prepared/applied structural state, and proof review visibility.'],
|
|
733
738
|
['Co-Evolution', 'var(--purple)', 'The response cockpit. Use it to inspect routed pressure, governance mode, promotion queue, transfer evidence, and where approved ontology concepts are influencing live route rationale.'],
|
|
734
739
|
['Skill Network', 'var(--green)', 'Graph-level understanding: relationships, co-evolution signals, inspector context, and structural handoff links.'],
|
|
735
740
|
['Ontology', 'var(--blue)', 'Semantic control surface for kernel visibility, frontier review, approved extensions, semantic adoption coverage, consumer summaries, and ontology change events.'],
|
|
736
741
|
['Topology', 'var(--yellow)', 'Governed plasticity surface for review decisions, accepted-ready queue, prepared plans, apply, rollback, and execution history.'],
|
|
742
|
+
['Proof', 'var(--text-secondary)', 'Outcome-attribution cockpit for bounded review across interventions, transfer, topology execution, semantic adoption, and evolution impact.'],
|
|
737
743
|
['Projects', 'var(--blue)', 'Project intake and project-aware pressure surface. Best for capability gaps, activation traces, and promotion feeders.'],
|
|
738
744
|
['Research', 'var(--purple)', 'Discovery-oriented view grounded in current pressure and routed recommendations rather than disconnected idea generation.'],
|
|
739
745
|
['Evolution', 'var(--green)', 'Proposal-centric evidence view: judge scores, artifact provenance, and iteration history.'],
|
|
@@ -746,8 +752,8 @@ helixevo ontology --deprecate <conceptId>`}</Code>
|
|
|
746
752
|
))}
|
|
747
753
|
</div>
|
|
748
754
|
<Callout type="tip">
|
|
749
|
-
If you are debugging current state, the best sequence is usually: <strong>Overview → Co-Evolution → Ontology → Topology → Skill Network → Projects / Research</strong>.
|
|
750
|
-
That path mirrors the stack from summary → routed demand → semantic interpretation → structural review/execution → graph context → project or discovery detail.
|
|
755
|
+
If you are debugging current state, the best sequence is usually: <strong>Overview → Co-Evolution → Ontology → Topology → Proof → Skill Network → Projects / Research</strong>.
|
|
756
|
+
That path mirrors the stack from summary → routed demand → semantic interpretation → structural review/execution → bounded outcome review → graph context → project or discovery detail.
|
|
751
757
|
</Callout>
|
|
752
758
|
</Section>
|
|
753
759
|
|
|
@@ -851,25 +857,32 @@ Project B: "Use FlashList not FlatList" (React Native perf)
|
|
|
851
857
|
</Section>
|
|
852
858
|
|
|
853
859
|
{/* ─── Closed-Loop Metrics ─── */}
|
|
854
|
-
<Section id="metrics" title="Closed-Loop Metrics" subtitle="
|
|
860
|
+
<Section id="metrics" title="Proof & Closed-Loop Metrics" subtitle="The prove stage is now first-class: metrics remain useful, but proof now unifies bounded outcome review across the newer brain loop.">
|
|
855
861
|
<p className="guide-text">
|
|
856
|
-
The <code>helixevo
|
|
857
|
-
|
|
858
|
-
impact of each evolution.
|
|
862
|
+
The <code>helixevo proof</code> command is now the primary operator surface for the <strong>prove</strong> stage. It reviews bounded outcome attribution across interventions,
|
|
863
|
+
transfer, topology execution, semantic adoption, and legacy evolution impact without pretending to know more than the evidence supports.
|
|
859
864
|
</p>
|
|
860
|
-
<Code title="Terminal">{`helixevo
|
|
865
|
+
<Code title="Terminal">{`helixevo proof --status --verbose
|
|
866
|
+
helixevo metrics --verbose`}</Code>
|
|
867
|
+
|
|
868
|
+
<h3 className="guide-h3">What Proof Adds</h3>
|
|
869
|
+
<ul className="guide-list">
|
|
870
|
+
<li><strong>Unified proof targets:</strong> interventions, realized transfers, topology execution, semantic-adoption effectiveness, and existing evolution impact</li>
|
|
871
|
+
<li><strong>Bounded outcome states:</strong> effective, mixed, regressed, measuring, and insufficient-evidence</li>
|
|
872
|
+
<li><strong>Operator review:</strong> verify, defer, or contest proof records explicitly instead of trusting derived heuristics blindly</li>
|
|
873
|
+
<li><strong>Dedicated dashboard route:</strong> the Prove stage now lands on <code>/proof</code> instead of only the Guide metrics section</li>
|
|
874
|
+
</ul>
|
|
861
875
|
|
|
862
|
-
<h3 className="guide-h3">What
|
|
876
|
+
<h3 className="guide-h3">What Metrics Still Tracks</h3>
|
|
863
877
|
<ul className="guide-list">
|
|
864
878
|
<li><strong>Per-skill correction rates:</strong> 7-day rolling windows showing how often each skill leads to corrections</li>
|
|
865
879
|
<li><strong>Trend detection:</strong> Each skill is marked as improving (↓), stable (→), or degrading (↑)</li>
|
|
866
880
|
<li><strong>Evolution impact:</strong> Before/after comparison for each evolution — failures/day in the 7 days before vs. after</li>
|
|
867
|
-
<li><strong>
|
|
881
|
+
<li><strong>Quantitative baseline:</strong> legacy correction reduction remains an important proof input even though it is no longer the whole prove layer</li>
|
|
868
882
|
</ul>
|
|
869
883
|
|
|
870
884
|
<Callout type="warning">
|
|
871
|
-
|
|
872
|
-
a reliable before/after comparison. Results shown as “Measuring” during the first 3 days.
|
|
885
|
+
Proof remains bounded. Recent changes should stay <strong>measuring</strong>, weak evidence should stay <strong>insufficient-evidence</strong>, and semantic-adoption proof should be treated as correlational evidence rather than strong direct causality.
|
|
873
886
|
</Callout>
|
|
874
887
|
</Section>
|
|
875
888
|
|
|
@@ -1359,7 +1372,7 @@ generation: 3
|
|
|
1359
1372
|
A transfer event is evidence that reusable knowledge was actually promoted or reused across layers or projects. This is how HelixEvo distinguishes a recommendation from a realized knowledge transfer.
|
|
1360
1373
|
</FAQItem>
|
|
1361
1374
|
<FAQItem q="How do I prove HelixEvo's brain is working?">
|
|
1362
|
-
|
|
1375
|
+
Start with <code>helixevo proof --status</code> or the <code>/proof</code> dashboard route, then use supporting proof surfaces together: <code>metrics</code> for correction reduction, Co-Evolution for routed interventions and transfer evidence, Topology for reviewed structural execution state, and the verification reports under <code>reports/verification/</code> for milestone-level backtesting.
|
|
1363
1376
|
</FAQItem>
|
|
1364
1377
|
<FAQItem q="How many failures do I need before evolution works?">
|
|
1365
1378
|
By default, 5 unresolved failures are required (<code>minFailuresForEvolution</code>) for the standard evolution trigger.
|
|
@@ -10,6 +10,7 @@ import { OperatorLoopTrail } from '@/components/operator-loop-trail'
|
|
|
10
10
|
import { SurfaceJumpLinks } from '@/components/surface-jump-links'
|
|
11
11
|
import { NextStepEmptyState } from '@/components/next-step-empty-state'
|
|
12
12
|
import type { OntologyControlDashboardSummary, OntologyReviewDecisionStatus } from '@/lib/data'
|
|
13
|
+
import type { ProofDashboardSummary } from '@/lib/proof'
|
|
13
14
|
|
|
14
15
|
type RunState = 'idle' | 'running' | 'success' | 'error'
|
|
15
16
|
|
|
@@ -35,7 +36,7 @@ function formatMode(value: string) {
|
|
|
35
36
|
return value.replace(/-/g, ' ')
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
export default function OntologyClient({ initialDashboard }: { initialDashboard: OntologyControlDashboardSummary }) {
|
|
39
|
+
export default function OntologyClient({ initialDashboard, proof }: { initialDashboard: OntologyControlDashboardSummary; proof: ProofDashboardSummary }) {
|
|
39
40
|
const [dashboard, setDashboard] = useState(initialDashboard)
|
|
40
41
|
const [runState, setRunState] = useState<RunState>('idle')
|
|
41
42
|
const [output, setOutput] = useState('')
|
|
@@ -80,6 +81,7 @@ export default function OntologyClient({ initialDashboard }: { initialDashboard:
|
|
|
80
81
|
{ label: `${dashboard.summary.extensions} approved extensions`, tone: dashboard.summary.extensions > 0 ? 'blue' : 'neutral' },
|
|
81
82
|
{ label: `${dashboard.adoption.activeConcepts} active concepts`, tone: dashboard.adoption.activeConcepts > 0 ? 'green' : 'neutral' },
|
|
82
83
|
{ label: `${dashboard.adoption.routesInfluenced} semantically influenced routes`, tone: dashboard.adoption.routesInfluenced > 0 ? 'purple' : 'neutral' },
|
|
84
|
+
{ label: `${proof.summary.reviewOpen} proof review`, tone: proof.summary.reviewOpen > 0 ? 'yellow' : proof.summary.effective > 0 ? 'green' : 'neutral' },
|
|
83
85
|
{ label: formatMode(dashboard.governance.activeMode), tone: dashboard.governance.activeMode === 'transfer-focused' ? 'purple' : dashboard.governance.activeMode === 'project-critical' ? 'yellow' : 'blue' },
|
|
84
86
|
]}
|
|
85
87
|
actions={
|
|
@@ -88,6 +90,10 @@ export default function OntologyClient({ initialDashboard }: { initialDashboard:
|
|
|
88
90
|
<div className="hero-note-label">Native ontology state</div>
|
|
89
91
|
<div className="hero-note-title">Kernel + review + semantic adoption</div>
|
|
90
92
|
<div className="hero-note-copy">Use this surface to move from frontier hypotheses into approved extensions, inspect active semantic consumers, and manage deprecation with operator-visible risk rather than hidden drift.</div>
|
|
93
|
+
<div style={{ marginTop: 8, display: 'flex', gap: 6, flexWrap: 'wrap' }}>
|
|
94
|
+
<Link href="/proof" className="badge badge-gray" style={{ textDecoration: 'none' }}>open proof</Link>
|
|
95
|
+
<span className="badge badge-gray">{proof.summary.effective} effective records live</span>
|
|
96
|
+
</div>
|
|
91
97
|
</div>
|
|
92
98
|
<div style={{ display: 'grid', gap: 10 }}>
|
|
93
99
|
<div style={{ display: 'flex', gap: 10, flexWrap: 'wrap', justifyContent: 'flex-end' }}>
|
|
@@ -107,6 +113,7 @@ export default function OntologyClient({ initialDashboard }: { initialDashboard:
|
|
|
107
113
|
<MetricCard label="Approved extensions" value={dashboard.summary.extensions} sublabel={`${dashboard.summary.deprecated} deprecated • ${dashboard.adoption.unusedExtensions} unused`} tone={dashboard.summary.extensions > 0 ? 'blue' : 'neutral'} icon="↑" />
|
|
108
114
|
<MetricCard label="Active semantic concepts" value={dashboard.adoption.activeConcepts} sublabel={`${dashboard.adoption.totalBindings} bindings • ${dashboard.adoption.routesInfluenced} routed influences`} tone={dashboard.adoption.activeConcepts > 0 ? 'green' : 'neutral'} icon="⇄" />
|
|
109
115
|
<MetricCard label="Deprecation-sensitive" value={dashboard.adoption.conceptsAtDeprecationRisk} sublabel="approved concepts with live consumers" tone={dashboard.adoption.conceptsAtDeprecationRisk > 0 ? 'yellow' : 'neutral'} icon="!" />
|
|
116
|
+
<MetricCard label="Semantic proof review" value={proof.summary.reviewOpen} sublabel={`${proof.summary.effective} effective • ${proof.summary.mixed} mixed`} tone={proof.summary.reviewOpen > 0 ? 'yellow' : proof.summary.effective > 0 ? 'green' : 'neutral'} icon="◇" />
|
|
110
117
|
<MetricCard label="Concept changes" value={dashboard.summary.changeEvents} sublabel={`${dashboard.summary.promoted} promoted • ${dashboard.summary.rejected} rejected`} tone={dashboard.summary.changeEvents > 0 ? 'green' : 'neutral'} icon="⇄" />
|
|
111
118
|
</div>
|
|
112
119
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import OntologyClient from './client'
|
|
2
2
|
import { loadOntologyControlSummary } from '@/lib/data'
|
|
3
|
+
import { loadProofDashboardSummary } from '@/lib/proof'
|
|
3
4
|
|
|
4
5
|
export const dynamic = 'force-dynamic'
|
|
5
6
|
|
|
6
7
|
export default function OntologyPage() {
|
|
7
8
|
const dashboard = loadOntologyControlSummary()
|
|
8
|
-
|
|
9
|
+
const proof = loadProofDashboardSummary()
|
|
10
|
+
return <OntologyClient initialDashboard={dashboard} proof={proof} />
|
|
9
11
|
}
|
package/dashboard/app/page.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Link from 'next/link'
|
|
2
2
|
import { getDashboardSummary, getOntologyDashboardSummary, loadCoEvolutionSummary, loadFailures, loadFrontier, loadGraph, loadHistory, listProjects } from '@/lib/data'
|
|
3
|
+
import { loadProofDashboardSummary } from '@/lib/proof'
|
|
3
4
|
import { OverviewActions } from '@/components/overview-actions'
|
|
4
5
|
import { PageHero } from '@/components/page-hero'
|
|
5
6
|
import { MetricCard } from '@/components/metric-card'
|
|
@@ -20,6 +21,7 @@ export default function Overview() {
|
|
|
20
21
|
const summary = getDashboardSummary()
|
|
21
22
|
const ontology = getOntologyDashboardSummary()
|
|
22
23
|
const coevolution = loadCoEvolutionSummary()
|
|
24
|
+
const proof = loadProofDashboardSummary()
|
|
23
25
|
const frontier = loadFrontier()
|
|
24
26
|
const history = loadHistory()
|
|
25
27
|
const graph = loadGraph()
|
|
@@ -42,6 +44,7 @@ export default function Overview() {
|
|
|
42
44
|
{ label: `${coevolution.pressureMotifs.promotionReady} promotion-ready motifs`, tone: coevolution.pressureMotifs.promotionReady > 0 ? 'purple' : 'neutral' },
|
|
43
45
|
{ label: `${coevolution.topologyReviews.open} topology reviews`, tone: coevolution.topologyReviews.open > 0 ? 'yellow' : 'green' },
|
|
44
46
|
{ label: `${coevolution.topologyExecution.prepared} prepared structural plans`, tone: coevolution.topologyExecution.prepared > 0 ? 'blue' : 'neutral' },
|
|
47
|
+
{ label: `${proof.summary.reviewOpen} proof reviews`, tone: proof.summary.reviewOpen > 0 ? 'yellow' : proof.summary.effective > 0 ? 'green' : 'neutral' },
|
|
45
48
|
{ label: `mode: ${coevolution.governance.activeMode.replace(/-/g, ' ')}`, tone: coevolution.governance.activeMode === 'transfer-focused' ? 'purple' : coevolution.governance.activeMode === 'project-critical' ? 'yellow' : 'blue' },
|
|
46
49
|
]}
|
|
47
50
|
actions={
|
|
@@ -68,6 +71,7 @@ export default function Overview() {
|
|
|
68
71
|
<MetricCard label="Unresolved corrections" value={summary.failures.unresolved} sublabel={`out of ${summary.failures.total} captured failures`} tone={summary.failures.unresolved > 0 ? 'yellow' : 'green'} href={summary.failures.unresolved > 0 ? '#attention' : '/evolution'} icon="!" />
|
|
69
72
|
<MetricCard label="Discoveries" value={summary.buffer.discoveries} sublabel={`${summary.buffer.drafts} drafts in progress`} tone="blue" href="/research" icon="◎" />
|
|
70
73
|
<MetricCard label="Frontier candidates" value={frontier.programs.length} sublabel={`${summary.canaries} active canaries`} tone="neutral" href="/frontier" icon="▲" />
|
|
74
|
+
<MetricCard label="Proof review" value={proof.summary.reviewOpen} sublabel={`${proof.summary.effective} effective • ${proof.summary.regressed} regressed`} tone={proof.summary.reviewOpen > 0 ? 'yellow' : proof.summary.effective > 0 ? 'green' : 'neutral'} href="/proof" icon="◇" />
|
|
71
75
|
</div>
|
|
72
76
|
|
|
73
77
|
<SectionFrame
|
|
@@ -215,8 +219,10 @@ export default function Overview() {
|
|
|
215
219
|
<span className="badge badge-gray">deprecation risk → {ontology.ontologyLoop.adoption.conceptsAtDeprecationRisk} concepts • {ontology.ontologyLoop.adoption.unusedExtensions} unused extensions</span>
|
|
216
220
|
<span className="badge badge-gray">topology → {ontology.topologyReviews.open} open • {ontology.topologyReviews.accepted} accepted • {ontology.topologyReviews.generatedFromManualReview} manual-route</span>
|
|
217
221
|
<span className="badge badge-gray">execution → {ontology.topologyExecution.prepared} prepared • {ontology.topologyExecution.applied} applied • {ontology.topologyExecution.rolledBack} rolled back</span>
|
|
222
|
+
<span className="badge badge-gray">proof → {proof.summary.total} total • {proof.summary.effective} effective • {proof.summary.reviewOpen} open review</span>
|
|
218
223
|
<Link href="/ontology" className="badge badge-blue" style={{ textDecoration: 'none' }}>Open ontology control</Link>
|
|
219
224
|
<Link href="/topology" className="badge badge-blue" style={{ textDecoration: 'none' }}>Open topology control</Link>
|
|
225
|
+
<Link href="/proof" className="badge badge-blue" style={{ textDecoration: 'none' }}>Open proof control</Link>
|
|
220
226
|
<span className="badge badge-gray">governance: {ontology.governance.activeMode.replace(/-/g, ' ')} ({ontology.governance.source})</span>
|
|
221
227
|
<span className="badge badge-gray">routes → research {ontology.governedRoutes.research} • specialize {ontology.governedRoutes.specialize} • evolve {ontology.governedRoutes.evolve} • generalize {ontology.governedRoutes.generalize} • manual-review {ontology.governedRoutes['manual-review']}</span>
|
|
222
228
|
<span className="badge badge-gray">{ontology.enrichedSkillNodes} skills carry explicit brain metadata</span>
|