Update Live lab with five-run evidence

AI-assisted: OpenAI Codex.
This commit is contained in:
Paul Bakaus
2026-07-12 18:15:51 -07:00
parent ff315a6015
commit be03fe734a
4 changed files with 122 additions and 87 deletions
+17
View File
@@ -0,0 +1,17 @@
export const liveCodexWorkerResult = {
generatedAt: '2026-07-13T01:05:15.178Z',
codexVersion: '0.144.0-alpha.4',
transport: 'stdio JSONL',
model: 'GPT-5.3-Codex-Spark',
effort: 'low',
timings: {
coldHandshakeMs: 36.83,
coldThreadStartMs: 400.19,
turnStartResponseMs: 0.45,
wakeToTurnStartedMs: 1.47,
trivialTurnCompletedMs: 2060.18,
},
result: 'READY',
passed: true,
architecture: 'A dedicated persistent Live app-server connection and worker thread. Do not attach a second app-server to the desktop task.',
} as const;
+24 -23
View File
@@ -1,11 +1,12 @@
export const harnessPaths = [
{
name: 'Supervisor + generation worker',
harness: 'Codex desktop · canonical progressive path',
pickup: 'Concurrent control-event intake',
tradeoff: 'The foreground poll supervisor handles Accept/Discard and the next Go while a fenced worker generates variants.',
status: 'E2E proven',
name: 'Dedicated app-server worker',
harness: 'Codex · isolated persistent thread',
pickup: '1.47 ms turn wake',
tradeoff: 'A separate Live-owned thread can generate while the control supervisor keeps polling. Cold setup is 437 ms; a persistent connection amortizes it.',
status: 'Protocol probe passed',
statusTone: 'ready',
source: 'https://learn.chatgpt.com/docs/app-server',
},
{
name: 'Foreground terminal supervisor',
@@ -17,11 +18,11 @@ export const harnessPaths = [
source: 'https://learn.chatgpt.com/docs/app-server#api-overview',
},
{
name: 'Warm variant producer',
harness: 'Codex custom agent',
pickup: 'Spawn/resume cost unknown',
tradeoff: 'Can pin a faster model and lower reasoning, but fresh context and handoff can erase the gain unless the agent stays warm.',
status: 'Prototype',
name: 'Native generation subagent',
harness: 'Codex desktop · current shipped path',
pickup: 'Main turn must dispatch it',
tradeoff: 'Low-effort compact handoff is safe and fenced, but it cannot start after the desktop task has gone idle.',
status: 'Current fallback',
statusTone: 'prototype',
source: 'https://learn.chatgpt.com/docs/agent-configuration/subagents',
},
@@ -119,32 +120,32 @@ export const liveExperiments = [
},
{
rank: 11,
title: 'Parallelize ideas, centralize writes — optional fast path',
evidence: 'Strict-gated provider runs made parallel compact fastest for GPT-5.5 and Gemini 3.1 Flash-Lite. Every worker remained write-free; deterministic assembly performed the only publication.',
move: 'Use parallel compact only where extra calls are acceptable. Keep progressive compact as the portable default and preserve variant 1 byte-for-byte.',
expected: 'Lowers time to first option without shared-file races or brand drift.',
confidence: 'Paid provider smoke matrix',
title: 'Parallelize ideas, centralize writes — provider-specific',
evidence: 'Parallel compact passed 5/5 for GPT-5.5 and Gemini 3.1 Flash-Lite, but only 3/5 for Claude Sonnet 4.6. It cut Gemini first review to 1.64 s and GPT full-set completion to 16.21 s.',
move: 'Make parallel compact the Gemini default and an OpenAI full-set fast path. Do not enable it for Anthropic until its validation reliability improves.',
expected: 'Lowers time to usable options without shared-file races or pretending one call shape fits every provider.',
confidence: 'Sixty-run paid matrix',
},
{
rank: 12,
title: 'Trim the producer contract — selected',
evidence: 'Progressive compact passed every measured brand, component, token, copy, source, and cleanup gate while cutting first-review latency 4262% for Claude and GPT.',
evidence: 'Progressive compact passed 5/5 for Claude Sonnet 4.6 and GPT-5.5. It was OpenAIs fastest and cheapest progressive path; Claudes other candidates all missed reliability.',
move: 'Keep the stable generation contract cacheable and send only the picked-element context plus the current action and identity lock.',
expected: 'Reduces prefill and output work without weakening the design brief.',
confidence: 'Cross-provider quality gate',
confidence: 'Five runs per candidate',
},
{
rank: 13,
title: 'Wake on the journal, not terminal stdout — still architectural',
evidence: 'Codex app-server exposes fs.watch and process output notifications, while this desktop probe still required an explicit terminal read.',
move: 'Benchmark a plugin/app-server bridge that watches the durable Live journal and starts or steers a dedicated turn directly.',
expected: 'Frees the main turn if watcher-to-turn startup beats foreground polling.',
confidence: 'Architectural bet',
title: 'Wake a dedicated Codex worker — protocol proven',
evidence: 'A cold app-server handshake took 36.83 ms, thread creation 400.19 ms, and turn/start reached turn/started in 1.47 ms. A low-effort Spark probe completed in 2.06 s.',
move: 'Keep one Live-owned app-server connection and isolated worker thread warm. Feed it durable events and structured output; never resume the desktop task from a second server.',
expected: 'Removes terminal-output pickup and main-turn availability from generation startup while preserving transactional publication fencing.',
confidence: 'Official protocol + live probe',
},
];
export const currentHarnessProbe = {
testedAt: '2026-07-11',
testedAt: '2026-07-13',
surface: 'Codex desktop unified exec',
delayedOutputMs: 250,
processExitMs: null,
+51 -44
View File
@@ -1,21 +1,31 @@
const candidate = (
firstMedianMs: number | null,
firstP95Ms: number | null,
allMedianMs: number | null,
allP95Ms: number | null,
passedRuns: number,
costUsd: number,
) => ({
firstMedianMs,
firstP95Ms,
allMedianMs,
allP95Ms,
passedRuns,
totalRuns: 5,
costUsd,
reliable: passedRuns === 5,
});
export const liveProviderResult = {
generatedAt: '2026-07-12T03:22:46.816Z',
generatedAt: '2026-07-13T01:11:49.054Z',
fixture: 'vite8-react-brand-fidelity',
runsPerCandidate: 1,
statisticallyStable: false,
paidSmokeMatrix: {
ran: ['atomic-full', 'progressive-compact', 'parallel-compact'],
notRun: [
{
strategy: 'progressive-full',
reason: 'External execution credits were exhausted before the direct full-context split comparison could run. No result is inferred.',
},
],
},
runsPerCandidate: 5,
statisticallyStable: true,
strategies: ['atomic-full', 'progressive-full', 'progressive-compact', 'parallel-compact'],
cleanupControl: {
providerIndependent: true,
acceptToCleanPickingMs: 171.41,
productionBuildMs: 378.04,
acceptToCleanPickingMs: 172.19,
productionBuildMs: 383.51,
markerFree: true,
browserClean: true,
consoleErrors: 0,
@@ -25,45 +35,41 @@ export const liveProviderResult = {
{
provider: 'Anthropic',
model: 'Claude Sonnet 4.6',
effort: 'Provider default in this sample; future harness runs explicitly use low.',
atomic: { firstMs: 32208.62, allMs: 32208.62, costUsd: 0.103779, quality: 0.9, passed: true },
progressiveCompact: { firstMs: 12247.31, allMs: 31709.49, costUsd: 0.057795, quality: 0.9, passed: true },
parallelCompact: { firstMs: 12361.28, allMs: 31378.19, costUsd: 0.064641, quality: 0.9, passed: true },
progressiveFirstImprovement: 0.6198,
parallelFirstImprovement: 0.6162,
effort: 'low',
atomic: candidate(57168.08, 64787.41, 57168.08, 64787.41, 4, 0.882555),
progressiveFull: candidate(18623.04, 21744.52, 40591.04, 57284.19, 3, 1.35405),
progressiveCompact: candidate(16387.92, 17641.08, 41505.32, 46789.53, 5, 0.386004),
parallelCompact: candidate(10567.09, 10755.49, 19805.73, 20156.03, 3, 0.424566),
recommendation: 'Progressive compact is the only 5/5 candidate; use atomic only as a compatibility fallback.',
},
{
provider: 'OpenAI',
model: 'GPT-5.5',
effort: 'low',
atomic: { firstMs: 22750.85, allMs: 22750.85, costUsd: 0.16728, quality: 0.95, passed: true },
progressiveCompact: { firstMs: 13124.09, allMs: 24735.95, costUsd: 0.098515, quality: 0.9, passed: true },
parallelCompact: { firstMs: 11846.73, allMs: 15871.87, costUsd: 0.145085, quality: 0.9, passed: true },
progressiveFirstImprovement: 0.4231,
parallelFirstImprovement: 0.4793,
atomic: candidate(27266.19, 31780.17, 27266.19, 31780.17, 5, 0.602296),
progressiveFull: candidate(12681.34, 14283.56, 36102.57, 41957.05, 5, 0.713001),
progressiveCompact: candidate(11777.98, 13334.92, 28867.61, 35691.27, 5, 0.48768),
parallelCompact: candidate(11846.01, 13551.87, 16211.64, 19043.63, 5, 0.614395),
recommendation: 'Progressive compact wins first review and cost; parallel compact wins full-set completion.',
},
{
provider: 'Google',
model: 'Gemini 3.1 Flash-Lite',
effort: 'minimal (provider default)',
atomic: {
firstMs: null,
allMs: null,
costUsd: null,
quality: null,
passed: false,
reason: 'Both attempts failed strict output validation.',
},
progressiveCompact: { firstMs: 2654.97, allMs: 6764.95, costUsd: 0.002813, quality: 0.95, passed: true },
parallelCompact: { firstMs: 1607.89, allMs: 1988.32, costUsd: 0.003956, quality: 0.95, passed: true },
progressiveFirstImprovement: null,
parallelFirstImprovement: null,
atomic: candidate(6579.06, 6579.06, 6579.06, 6579.06, 1, 0.034123),
progressiveFull: candidate(null, null, null, null, 0, 0.023667),
progressiveCompact: candidate(3063.57, 3069.15, 5357.76, 5368.13, 3, 0.015316),
parallelCompact: candidate(1635.05, 1973.83, 2193.7, 3576.19, 5, 0.020824),
recommendation: 'Parallel compact is the only 5/5 candidate and the clear production path.',
},
],
cost: {
apiCalls: 22,
measuredLowerBoundUsd: 0.643864,
note: 'Five rejected validation responses predate failed-response usage capture and are excluded. Current runs capture their usage.',
totals: {
runs: 60,
passingRuns: 44,
apiCalls: 160,
retries: 47,
rejectedResponses: 64,
estimatedCostUsd: 5.558477,
},
gate: {
dimensions: ['brand', 'component', 'token', 'copy', 'source', 'accept-cleanup'],
@@ -71,8 +77,9 @@ export const liveProviderResult = {
minimumDimension: 0.75,
},
recommendation: {
default: 'progressive-compact',
optionalFastPath: 'parallel-compact',
rationale: 'Progressive compact cut first-review latency 4262% for Claude and GPT while preserving every quality gate. Parallel compact was strongest for GPT and Gemini but spends more requests.',
codexDefault: 'progressive-compact',
googleDefault: 'parallel-compact',
portableFallback: 'atomic-full',
rationale: 'Choose per provider and harness. Compact progressive is the reliable first-review winner for OpenAI and Anthropic; parallel compact is required for Gemini reliability. Harnesses without measured progressive publication retain atomic delivery.',
},
} as const;
+30 -20
View File
@@ -7,6 +7,7 @@ import { liveInitResult } from '../../data/live-init-result';
import { liveControlResult } from '../../data/live-control-result';
import { liveFrameworkResults } from '../../data/live-framework-results';
import { liveProviderResult } from '../../data/live-provider-result';
import { liveCodexWorkerResult } from '../../data/live-codex-worker-result';
import { liveAnnotatedResult } from '../../data/live-annotated-result';
import '../../styles/sub-pages.css';
import '../../styles/live-performance.css';
@@ -61,6 +62,12 @@ const progressiveAllDelta = (
- progressiveDeliveryResult.atomic.medianAllMs
);
const initGain = 1 - (liveInitResult.cold.medianMs / liveInitResult.baselineColdMedianMs);
const providerColumns = [
{ key: 'atomic', label: 'Atomic full' },
{ key: 'progressiveFull', label: 'Progressive full' },
{ key: 'progressiveCompact', label: 'Progressive compact' },
{ key: 'parallelCompact', label: 'Parallel compact' },
] as const;
---
<Base
@@ -208,32 +215,30 @@ const initGain = 1 - (liveInitResult.cold.medianMs / liveInitResult.baselineCold
<section class="live-performance-section ks-section" aria-labelledby="provider-title">
<div class="live-performance-section-head">
<div>
<p class="live-performance-label">Paid provider smoke matrix</p>
<h2 id="provider-title">Decompose the work, preserve the first answer</h2>
<p class="live-performance-label">Paid provider matrix · five runs per candidate</p>
<h2 id="provider-title">The right split depends on the provider</h2>
</div>
<p>One strict-gated run per candidate. Brand, component, token, copy, source, and cleanup fidelity must all pass.</p>
<p>Sixty strict-gated runs. Brand, component, token, copy, source, and cleanup fidelity must all pass.</p>
</div>
<p class="table-scroll-hint" aria-hidden="true">Scroll horizontally to compare →</p>
<div class="harness-table-wrap" tabindex="0" aria-label="Scrollable provider strategy comparison">
<table class="harness-table">
<caption class="sr-only">Paid Live generation strategy results by provider</caption>
<thead><tr><th>Provider</th><th>Atomic full</th><th>Progressive compact</th><th>Parallel compact</th></tr></thead>
<thead><tr><th>Provider</th>{providerColumns.map(column => <th>{column.label}</th>)}</tr></thead>
<tbody>
{liveProviderResult.providers.map(result => (
<tr>
<td><strong>{result.provider}</strong><span>{result.model} · {result.effort}</span></td>
<td>
<strong>{result.atomic.firstMs === null ? 'Rejected' : displayMs(result.atomic.firstMs)}</strong>
<span>{result.atomic.passed ? 'quality gate passed' : ('reason' in result.atomic ? result.atomic.reason : 'quality gate failed')}</span>
</td>
<td>
<strong>{displayMs(result.progressiveCompact.firstMs)} first</strong>
<span>{displayMs(result.progressiveCompact.allMs)} all · gate passed</span>
</td>
<td>
<strong>{displayMs(result.parallelCompact.firstMs)} first</strong>
<span>{displayMs(result.parallelCompact.allMs)} all · gate passed</span>
</td>
<td><strong>{result.provider}</strong><span>{result.model} · {result.effort}</span><span>{result.recommendation}</span></td>
{providerColumns.map(column => {
const candidate = result[column.key];
return (
<td>
<strong>{candidate.firstMedianMs === null ? 'No valid run' : `${displayMs(candidate.firstMedianMs)} first`}</strong>
<span>{candidate.passedRuns}/5 pass{candidate.firstP95Ms === null ? '' : ` · p95 ${displayMs(candidate.firstP95Ms)}`}</span>
<span>{candidate.allMedianMs === null ? 'full set unavailable' : `${displayMs(candidate.allMedianMs)} all`}</span>
</td>
);
})}
</tr>
))}
</tbody>
@@ -242,12 +247,11 @@ const initGain = 1 - (liveInitResult.cold.medianMs / liveInitResult.baselineCold
<div class="live-performance-finding live-finding-card--quiet" role="note">
<strong>Decision</strong>
<p>
Use progressive compact as the safe default: it cut first-review latency 4262% for Claude and GPT without weakening any gate. Parallel compact is an optional GPT/Gemini fast path when extra calls and cost are acceptable. Variant 1 and its CSS are carried byte-for-byte into deterministic local assembly; later calls may only add directions.
Codex/OpenAI defaults to progressive compact: 5/5 passed, it had the fastest first review, and it cost less than the other OpenAI splits. Anthropic also keeps progressive compact because it was the only 5/5 candidate. Gemini uses parallel compact; every other Gemini strategy failed the reliability gate. Unmeasured harnesses retain atomic delivery.
</p>
</div>
<p class="live-performance-caption">
Provider matrix cost: ${liveProviderResult.cost.measuredLowerBoundUsd.toFixed(3)} lower bound. {liveProviderResult.cost.note}{' '}
The full-context progressive split was not run after external execution credits were exhausted; no result is inferred. Accept → clean Pick/build control passed in {displayMs(liveProviderResult.cleanupControl.acceptToCleanPickingMs)} with zero console errors or Live markers.
Provider matrix cost: ${liveProviderResult.totals.estimatedCostUsd.toFixed(2)} across {liveProviderResult.totals.apiCalls} calls, including {liveProviderResult.totals.retries} retries. {liveProviderResult.totals.passingRuns}/{liveProviderResult.totals.runs} runs passed the strict gate. Accept → clean Pick/build control passed in {displayMs(liveProviderResult.cleanupControl.acceptToCleanPickingMs)} with zero console errors or Live markers.
</p>
</section>
@@ -372,6 +376,12 @@ const initGain = 1 - (liveInitResult.cold.medianMs / liveInitResult.baselineCold
<strong>Harness probe</strong>
<p>{currentHarnessProbe.surface}: {currentHarnessProbe.result}</p>
</div>
<div class="live-performance-finding live-finding-card--quiet" role="note">
<strong>Dedicated Codex worker probe</strong>
<p>
{liveCodexWorkerResult.model} at {liveCodexWorkerResult.effort} effort started a dedicated turn in {displayMs(liveCodexWorkerResult.timings.wakeToTurnStartedMs)} and completed a trivial structured response in {displayMs(liveCodexWorkerResult.timings.trivialTurnCompletedMs)}. Cold app-server plus thread setup cost {displayMs(liveCodexWorkerResult.timings.coldHandshakeMs + liveCodexWorkerResult.timings.coldThreadStartMs)} and can be amortized. The safe path owns a separate Live thread; it never resumes the desktop task from a competing app-server.
</p>
</div>
</section>
<section class="live-performance-section live-experiments-section ks-section" aria-labelledby="experiments-title">