feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol - #869

Merged
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity
Aug 15, 2026
Merged

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol#869
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The P1 parity harness gets its honest live entry: a deterministic count-and-positions task family with harness-computed ground truth, an exact-match text oracle shared by both arms, and the reviewer driver protocol for the graph arm. Nothing in the repo's gates executes the live path; the offline suite still covers the arms.

Part of #694 (P1: loop-vs-graph parity).

What changed

  • examples/p1-parity/run-parity.tsLIVE_TASK_FAMILY (8 deterministic cells), expectedAnswerLine (ground truth computed by the harness, never by a model), liveShotPassed (exactly one matching ANSWER: line), live cell authoring (coder + reviewer profiles from env, driver tool protocol in instructions), per-run nonce so an upstream response cache cannot serve one run's completion to another.
  • examples/p1-parity/arms.ts — doc corrections on the record fields the live entry exercises.

Gates

  • pnpm typecheck — clean (root + examples).
  • pnpm vitest run examples/p1-parity/parity.test.ts — 5/5 passed.
  • Merge-tree vs origin/main — clean.

Live run evidence (8 cells x 3 shots x 2 arms, glm-5.3 both arms/legs, served-model verified)

cellarmconvergedshotsUsedtokens in/outusd @routersteeringledger
1multishottrue31510/2293$0.01462x/273Bnone (no edge ledger)
1graphtrue113413/583$0.02560x/0B1 delivered, bound, accounts=true
2multishottrue31982/1505$0.01132x/253Bnone
2graphtrue113391/797$0.02670x/0B1 delivered, bound, accounts=true
3multishottrue32410/1924$0.01422x/318Bnone
3graphtrue113411/561$0.02550x/0B1 delivered, bound, accounts=true
4multishottrue31617/3449$0.02092x/399Bnone
4graphtrue113427/631$0.02590x/0B1 delivered, bound, accounts=true
5multishottrue31581/2321$0.01492x/387Bnone
5graphtrue113441/906$0.02740x/0B1 delivered, bound, accounts=true
6multishottrue31524/3402$0.02052x/337Bnone
6graphtrue113407/477$0.02500x/0B1 delivered, bound, accounts=true
7multishottrue31551/3100$0.01902x/333Bnone
7graphtrue113457/642$0.02600x/0B1 delivered, bound, accounts=true
8multishottrue31602/3483$0.02112x/432Bnone
8graphtrue113412/822$0.02640x/0B1 delivered, bound, accounts=true

usd @router = tokens priced at the router's own response headers for glm-5.3 ($1.68/M input, $5.28/M output). The records' own usd fields are labeled by usdSource (multishot estimated from a stale catalog, graph unknown — it never estimates); neither is a router-header measurement, so the table prices tokens uniformly.

Verdict: parity HOLDS. Convergence agrees in 8/8 cells, infraShots = 0 in 16/16 records, tokensKnown = true in 16/16, and the graph edge ledger accounts in 8/8 cells (every delivered delegates row bound to a worker; distinct workers = shotsUsed; shot budget respected). Zero diverging cells.

Shot distributions: multishot 3,3,3,3,3,3,3,3 — the full budget in every cell, BY CONSTRUCTION (runMultishot has no deliverable check and cannot stop early). Graph 1,1,1,1,1,1,1,1 — settled on the first shot in 8/8 cells (the smoke's 1-shot pattern repeated).

The known design asymmetries, measured

  1. The graph driver sees the checker verdict; the multishot driver sees prose. The graph settle carries valid:true from the harness oracle, so the driver stopped after spawn fix: persist final runtime stream failures #1 in 8/8 cells: 0 steers, 0 bytes. The multishot driver leg never sees a verdict, so it delivered 2 corrective steers in every cell — 16 steers, 2732 bytes total — and the loop burned 24 shots for 8 convergences.
  2. The multishot opener is code-enforced; the graph brief is LLM-copied.buildOpener returns the task byte-exact. The graph driver copies the task into spawn_agent per its protocol, and the edge ledger measures the fidelity: delivered brief bytes minus task-text bytes = 424 bytes in all 8 cells — a constant delegates/worker-brief/v1 directive wrap over a byte-exact copy. Zero copy drift, and the exact-match oracle passing on shot 1 confirms it independently.

One cost asymmetry to keep visible: the graph arm is input-heavy (~13.4k tokens/cell of supervisor context vs ~1.7k for the loop), so at router prices it cost more per cell ($0.0261 avg vs $0.0171) despite using 1 shot vs 3 — while finishing faster in 7/8 cells (median wall 44.7s vs 82.8s).

Full artifacts (paired records JSON, ledger rows) on the #694 comment.

…rity harness
The live entry gets a deterministic count-and-positions task family whose
ground truth the harness computes, so the deliverable check is a deployable
text oracle identical in both arms. The reviewer profile carries the graph
driver protocol in prompt.instructions; the shared systemPrompt stays the
multishot driver stance. A per-run nonce keeps prompts unique across runs
so an upstream cache cannot cross-serve completions. The chat backend gains
a runGraph maxTurns bound, and the CLI prints a per-cell parity summary
with an edge-ledger accounting audit.
@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:44:53Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:45:01Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:50:12Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdictsound-with-nits
Coverage2 of 2 lenses (value, usefulness)
Concerns3 (1 medium-concern, 1 low, 1 weak-concern)
Heuristic0.0s
Duplication0.3s
Interrogation174.5s (2 bridge agents)
Total174.8s

💰 Value — sound-with-nits

Replaces the live entry's self-graded 'ALL TESTS PASS' marker with a harness-computed exact-match oracle plus a real driver protocol for the graph arm — a genuine measurement-validity upgrade in the codebase's grain; the only material gap is that the fixed famous-word task family, per the PR's own l

  • What it does: Three deltas in the p1-parity live entry (examples/p1-parity/run-parity.ts): (1) LIVE_TASK_FAMILY — 8 fixed count-and-positions cells ('strawberry'/r, etc.) whose ground truth expectedAnswerLine() computes in harness code, checked by liveShotPassed() demanding exactly one ANSWER: line byte-equal to it — replacing the old LIVE_PASS_MARKER where the model itself decided when to print 'ALL TESTS PASS
  • Goals it achieves: Makes the live parity measurement honest. The old marker oracle let the coder self-certify, so a 'converged' row measured nothing; now ground truth is computed by the harness and the oracle is shared byte-identically by both arms (the MultishotArmBackend.shotPassed contract at arms.ts:171-173 explicitly requires the same predicate as the graph deliverable). The driver protocol gives the graph arm'
  • Assessment: Good, and in the grain. The design reuses the right primitives instead of inventing: spawn_agent/await_event match the kernel's actual coordination tools (examples/graphs/shot-loop.ts:71-91), maxTurns is a real RunGraphOptions field, instructions ride the existing profile field with the documented append semantics, and the ledger audit reads the same EdgeTraversal rows ParityRecord already exposes
  • Better / existing approach: Searched for existing reusable oracle/task-family machinery: bench (LLM-judge fixtures, corpus-replay), examples/coding-benchmark (held-out test-execution oracle), examples/agentic-data-creation (rubric data-gen), src/ (no ANSWER-style exact oracles), and the agent-eval multishot surface (transport/driver seams only, no verifier lens). None fits the bare-chat no-tools no-third-model constraint, so
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

Replaces the live entry's self-graded marker oracle with a deterministic harness-computed oracle and a reviewer driver protocol that ride existing runtime knobs — the change is coherent, correctly wired, and already exercised by a full live run.

  • Integration: Reachable and already used. The entry is the documented CLI (pnpm tsx examples/p1-parity/run-parity.ts --backend cli-bridge, run-parity.ts:7-11), matching the repo-wide examples convention (examples/README.md:28-30,136-139). The live path is deliberately outside CI gates (header, run-parity.ts:17) while the offline suite still exercises both arms via the seams (parity.test.ts:103-326). Every new
  • Fit with existing patterns: Fits the grain rather than competing. The counting family + harness-computed ground truth implements the doctrine the file itself states (run-parity.ts:113-118: oracle read off the coder's text, never the model judging itself) and directly retires the previous placeholder — the deleted LIVE_PASS_MARKER = 'ALL TESTS PASS' includes-check was self-graded and explicitly labeled 'pending a real verif
  • Real-world viability: Built for the non-happy path. The oracle demands exactly ONE matching ANSWER line (run-parity.ts:148-156), so shotgunned candidates or prose cannot pass; ground truth is loop-computed, never model-claimed. Per-run nonce (run-parity.ts:397) defeats upstream response caches while preserving within-cell input equivalence (same nonce reaches both arms). Missing env fails loud with a complete list (run
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🔎 Heuristic Signals

🟡 Cruft: console debug addedexamples/p1-parity/run-parity.ts

  • console.log('\nparity summary (per cell):')

💰 Value Audit

🟠 Task family never exercises the multi-shot path with the tested model — the regime P1 measures[better-architecture] ``

run-parity.ts:113-118 claims 'shot 1 fails often enough to exercise the multi-shot path'. The PR's own live table contradicts this: all 5 visible graph-arm rows report shotsUsed=1, steering 0x/0B — the deliverable passed on the first spawn every time, so the graph arm's re-brief/steer/early-stop machinery and the arms' divergence behavior were never live-tested. Famous-word cells ('strawberry' most of all) are prime memorization candidates, which plausibly explains uniform shot-1 passes for glm-

🟡 Duplicated task-family bounds guard[maintenance] ``

The identical LIVE_TASK_FAMILY[index] undefined check exists at run-parity.ts:174-179 (inside liveParityCell) and run-parity.ts:411-416 (in main, needed to compute expectedAnswerLine before building the cell). liveParityCell's copy is unreachable from its only caller since main pre-checks. A generated family with no fixed cap dissolves this; otherwise drop the inner guard or have liveParityCell return the task alongside the cell.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

PassWhat it asks
HeuristicVague title? Whitespace-only or cruft-bearing diff? (content signals only)
DuplicationDo added function/class names already exist elsewhere in the repo?
Value AuditWhat does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness AuditDoes it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260815T105745Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

Disposition on the value-audit concerns (verdict sound-with-nits, head 380dfc2):

  1. Multi-shot regime never exercised live (medium) — agreed, and reported as the open confound on feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 before this audit landed: 8/8 graph cells settled on shot 1, so re-brief/steer/early-stop ran only in the offline suite. The named follow-up is per-shot pass telemetry in the multishot meter plus a harder (non-famous-word) family; tracked under feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 P1.
  2. console.log flagged as debug cruft (low) — intentional: run-parity.ts is a CLI whose contract is printing paired records; the flagged line is the summary printer, not leftover debugging.
  3. Duplicated bounds guard (weak) — real; the inner guard is unreachable from main. Will fold into the follow-up commit with the per-shot telemetry rather than dismiss this review cycle for a cosmetic.

@drewstone
drewstone merged commit 0e9c17c into mainAug 15, 2026
4 checks passed
@drewstone
drewstone deleted the feat/p1-live-parity branch August 15, 2026 11:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@drewstone@tangletools
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol - #869

Merged
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity
Aug 15, 2026
Merged

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol#869
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The P1 parity harness gets its honest live entry: a deterministic count-and-positions task family with harness-computed ground truth, an exact-match text oracle shared by both arms, and the reviewer driver protocol for the graph arm. Nothing in the repo's gates executes the live path; the offline suite still covers the arms.

Part of #694 (P1: loop-vs-graph parity).

What changed

  • examples/p1-parity/run-parity.tsLIVE_TASK_FAMILY (8 deterministic cells), expectedAnswerLine (ground truth computed by the harness, never by a model), liveShotPassed (exactly one matching ANSWER: line), live cell authoring (coder + reviewer profiles from env, driver tool protocol in instructions), per-run nonce so an upstream response cache cannot serve one run's completion to another.
  • examples/p1-parity/arms.ts — doc corrections on the record fields the live entry exercises.

Gates

  • pnpm typecheck — clean (root + examples).
  • pnpm vitest run examples/p1-parity/parity.test.ts — 5/5 passed.
  • Merge-tree vs origin/main — clean.

Live run evidence (8 cells x 3 shots x 2 arms, glm-5.3 both arms/legs, served-model verified)

cellarmconvergedshotsUsedtokens in/outusd @routersteeringledger
1multishottrue31510/2293$0.01462x/273Bnone (no edge ledger)
1graphtrue113413/583$0.02560x/0B1 delivered, bound, accounts=true
2multishottrue31982/1505$0.01132x/253Bnone
2graphtrue113391/797$0.02670x/0B1 delivered, bound, accounts=true
3multishottrue32410/1924$0.01422x/318Bnone
3graphtrue113411/561$0.02550x/0B1 delivered, bound, accounts=true
4multishottrue31617/3449$0.02092x/399Bnone
4graphtrue113427/631$0.02590x/0B1 delivered, bound, accounts=true
5multishottrue31581/2321$0.01492x/387Bnone
5graphtrue113441/906$0.02740x/0B1 delivered, bound, accounts=true
6multishottrue31524/3402$0.02052x/337Bnone
6graphtrue113407/477$0.02500x/0B1 delivered, bound, accounts=true
7multishottrue31551/3100$0.01902x/333Bnone
7graphtrue113457/642$0.02600x/0B1 delivered, bound, accounts=true
8multishottrue31602/3483$0.02112x/432Bnone
8graphtrue113412/822$0.02640x/0B1 delivered, bound, accounts=true

usd @router = tokens priced at the router's own response headers for glm-5.3 ($1.68/M input, $5.28/M output). The records' own usd fields are labeled by usdSource (multishot estimated from a stale catalog, graph unknown — it never estimates); neither is a router-header measurement, so the table prices tokens uniformly.

Verdict: parity HOLDS. Convergence agrees in 8/8 cells, infraShots = 0 in 16/16 records, tokensKnown = true in 16/16, and the graph edge ledger accounts in 8/8 cells (every delivered delegates row bound to a worker; distinct workers = shotsUsed; shot budget respected). Zero diverging cells.

Shot distributions: multishot 3,3,3,3,3,3,3,3 — the full budget in every cell, BY CONSTRUCTION (runMultishot has no deliverable check and cannot stop early). Graph 1,1,1,1,1,1,1,1 — settled on the first shot in 8/8 cells (the smoke's 1-shot pattern repeated).

The known design asymmetries, measured

  1. The graph driver sees the checker verdict; the multishot driver sees prose. The graph settle carries valid:true from the harness oracle, so the driver stopped after spawn fix: persist final runtime stream failures #1 in 8/8 cells: 0 steers, 0 bytes. The multishot driver leg never sees a verdict, so it delivered 2 corrective steers in every cell — 16 steers, 2732 bytes total — and the loop burned 24 shots for 8 convergences.
  2. The multishot opener is code-enforced; the graph brief is LLM-copied.buildOpener returns the task byte-exact. The graph driver copies the task into spawn_agent per its protocol, and the edge ledger measures the fidelity: delivered brief bytes minus task-text bytes = 424 bytes in all 8 cells — a constant delegates/worker-brief/v1 directive wrap over a byte-exact copy. Zero copy drift, and the exact-match oracle passing on shot 1 confirms it independently.

One cost asymmetry to keep visible: the graph arm is input-heavy (~13.4k tokens/cell of supervisor context vs ~1.7k for the loop), so at router prices it cost more per cell ($0.0261 avg vs $0.0171) despite using 1 shot vs 3 — while finishing faster in 7/8 cells (median wall 44.7s vs 82.8s).

Full artifacts (paired records JSON, ledger rows) on the #694 comment.

…rity harness
The live entry gets a deterministic count-and-positions task family whose
ground truth the harness computes, so the deliverable check is a deployable
text oracle identical in both arms. The reviewer profile carries the graph
driver protocol in prompt.instructions; the shared systemPrompt stays the
multishot driver stance. A per-run nonce keeps prompts unique across runs
so an upstream cache cannot cross-serve completions. The chat backend gains
a runGraph maxTurns bound, and the CLI prints a per-cell parity summary
with an edge-ledger accounting audit.
@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:44:53Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:45:01Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:50:12Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdictsound-with-nits
Coverage2 of 2 lenses (value, usefulness)
Concerns3 (1 medium-concern, 1 low, 1 weak-concern)
Heuristic0.0s
Duplication0.3s
Interrogation174.5s (2 bridge agents)
Total174.8s

💰 Value — sound-with-nits

Replaces the live entry's self-graded 'ALL TESTS PASS' marker with a harness-computed exact-match oracle plus a real driver protocol for the graph arm — a genuine measurement-validity upgrade in the codebase's grain; the only material gap is that the fixed famous-word task family, per the PR's own l

  • What it does: Three deltas in the p1-parity live entry (examples/p1-parity/run-parity.ts): (1) LIVE_TASK_FAMILY — 8 fixed count-and-positions cells ('strawberry'/r, etc.) whose ground truth expectedAnswerLine() computes in harness code, checked by liveShotPassed() demanding exactly one ANSWER: line byte-equal to it — replacing the old LIVE_PASS_MARKER where the model itself decided when to print 'ALL TESTS PASS
  • Goals it achieves: Makes the live parity measurement honest. The old marker oracle let the coder self-certify, so a 'converged' row measured nothing; now ground truth is computed by the harness and the oracle is shared byte-identically by both arms (the MultishotArmBackend.shotPassed contract at arms.ts:171-173 explicitly requires the same predicate as the graph deliverable). The driver protocol gives the graph arm'
  • Assessment: Good, and in the grain. The design reuses the right primitives instead of inventing: spawn_agent/await_event match the kernel's actual coordination tools (examples/graphs/shot-loop.ts:71-91), maxTurns is a real RunGraphOptions field, instructions ride the existing profile field with the documented append semantics, and the ledger audit reads the same EdgeTraversal rows ParityRecord already exposes
  • Better / existing approach: Searched for existing reusable oracle/task-family machinery: bench (LLM-judge fixtures, corpus-replay), examples/coding-benchmark (held-out test-execution oracle), examples/agentic-data-creation (rubric data-gen), src/ (no ANSWER-style exact oracles), and the agent-eval multishot surface (transport/driver seams only, no verifier lens). None fits the bare-chat no-tools no-third-model constraint, so
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

Replaces the live entry's self-graded marker oracle with a deterministic harness-computed oracle and a reviewer driver protocol that ride existing runtime knobs — the change is coherent, correctly wired, and already exercised by a full live run.

  • Integration: Reachable and already used. The entry is the documented CLI (pnpm tsx examples/p1-parity/run-parity.ts --backend cli-bridge, run-parity.ts:7-11), matching the repo-wide examples convention (examples/README.md:28-30,136-139). The live path is deliberately outside CI gates (header, run-parity.ts:17) while the offline suite still exercises both arms via the seams (parity.test.ts:103-326). Every new
  • Fit with existing patterns: Fits the grain rather than competing. The counting family + harness-computed ground truth implements the doctrine the file itself states (run-parity.ts:113-118: oracle read off the coder's text, never the model judging itself) and directly retires the previous placeholder — the deleted LIVE_PASS_MARKER = 'ALL TESTS PASS' includes-check was self-graded and explicitly labeled 'pending a real verif
  • Real-world viability: Built for the non-happy path. The oracle demands exactly ONE matching ANSWER line (run-parity.ts:148-156), so shotgunned candidates or prose cannot pass; ground truth is loop-computed, never model-claimed. Per-run nonce (run-parity.ts:397) defeats upstream response caches while preserving within-cell input equivalence (same nonce reaches both arms). Missing env fails loud with a complete list (run
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🔎 Heuristic Signals

🟡 Cruft: console debug addedexamples/p1-parity/run-parity.ts

  • console.log('\nparity summary (per cell):')

💰 Value Audit

🟠 Task family never exercises the multi-shot path with the tested model — the regime P1 measures[better-architecture] ``

run-parity.ts:113-118 claims 'shot 1 fails often enough to exercise the multi-shot path'. The PR's own live table contradicts this: all 5 visible graph-arm rows report shotsUsed=1, steering 0x/0B — the deliverable passed on the first spawn every time, so the graph arm's re-brief/steer/early-stop machinery and the arms' divergence behavior were never live-tested. Famous-word cells ('strawberry' most of all) are prime memorization candidates, which plausibly explains uniform shot-1 passes for glm-

🟡 Duplicated task-family bounds guard[maintenance] ``

The identical LIVE_TASK_FAMILY[index] undefined check exists at run-parity.ts:174-179 (inside liveParityCell) and run-parity.ts:411-416 (in main, needed to compute expectedAnswerLine before building the cell). liveParityCell's copy is unreachable from its only caller since main pre-checks. A generated family with no fixed cap dissolves this; otherwise drop the inner guard or have liveParityCell return the task alongside the cell.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

PassWhat it asks
HeuristicVague title? Whitespace-only or cruft-bearing diff? (content signals only)
DuplicationDo added function/class names already exist elsewhere in the repo?
Value AuditWhat does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness AuditDoes it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260815T105745Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

Disposition on the value-audit concerns (verdict sound-with-nits, head 380dfc2):

  1. Multi-shot regime never exercised live (medium) — agreed, and reported as the open confound on feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 before this audit landed: 8/8 graph cells settled on shot 1, so re-brief/steer/early-stop ran only in the offline suite. The named follow-up is per-shot pass telemetry in the multishot meter plus a harder (non-famous-word) family; tracked under feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 P1.
  2. console.log flagged as debug cruft (low) — intentional: run-parity.ts is a CLI whose contract is printing paired records; the flagged line is the summary printer, not leftover debugging.
  3. Duplicated bounds guard (weak) — real; the inner guard is unreachable from main. Will fold into the follow-up commit with the per-shot telemetry rather than dismiss this review cycle for a cosmetic.

@drewstone
drewstone merged commit 0e9c17c into mainAug 15, 2026
4 checks passed
@drewstone
drewstone deleted the feat/p1-live-parity branch August 15, 2026 11:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@drewstone@tangletools
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol - #869

Merged
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity
Aug 15, 2026
Merged

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol#869
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The P1 parity harness gets its honest live entry: a deterministic count-and-positions task family with harness-computed ground truth, an exact-match text oracle shared by both arms, and the reviewer driver protocol for the graph arm. Nothing in the repo's gates executes the live path; the offline suite still covers the arms.

Part of #694 (P1: loop-vs-graph parity).

What changed

  • examples/p1-parity/run-parity.tsLIVE_TASK_FAMILY (8 deterministic cells), expectedAnswerLine (ground truth computed by the harness, never by a model), liveShotPassed (exactly one matching ANSWER: line), live cell authoring (coder + reviewer profiles from env, driver tool protocol in instructions), per-run nonce so an upstream response cache cannot serve one run's completion to another.
  • examples/p1-parity/arms.ts — doc corrections on the record fields the live entry exercises.

Gates

  • pnpm typecheck — clean (root + examples).
  • pnpm vitest run examples/p1-parity/parity.test.ts — 5/5 passed.
  • Merge-tree vs origin/main — clean.

Live run evidence (8 cells x 3 shots x 2 arms, glm-5.3 both arms/legs, served-model verified)

cellarmconvergedshotsUsedtokens in/outusd @routersteeringledger
1multishottrue31510/2293$0.01462x/273Bnone (no edge ledger)
1graphtrue113413/583$0.02560x/0B1 delivered, bound, accounts=true
2multishottrue31982/1505$0.01132x/253Bnone
2graphtrue113391/797$0.02670x/0B1 delivered, bound, accounts=true
3multishottrue32410/1924$0.01422x/318Bnone
3graphtrue113411/561$0.02550x/0B1 delivered, bound, accounts=true
4multishottrue31617/3449$0.02092x/399Bnone
4graphtrue113427/631$0.02590x/0B1 delivered, bound, accounts=true
5multishottrue31581/2321$0.01492x/387Bnone
5graphtrue113441/906$0.02740x/0B1 delivered, bound, accounts=true
6multishottrue31524/3402$0.02052x/337Bnone
6graphtrue113407/477$0.02500x/0B1 delivered, bound, accounts=true
7multishottrue31551/3100$0.01902x/333Bnone
7graphtrue113457/642$0.02600x/0B1 delivered, bound, accounts=true
8multishottrue31602/3483$0.02112x/432Bnone
8graphtrue113412/822$0.02640x/0B1 delivered, bound, accounts=true

usd @router = tokens priced at the router's own response headers for glm-5.3 ($1.68/M input, $5.28/M output). The records' own usd fields are labeled by usdSource (multishot estimated from a stale catalog, graph unknown — it never estimates); neither is a router-header measurement, so the table prices tokens uniformly.

Verdict: parity HOLDS. Convergence agrees in 8/8 cells, infraShots = 0 in 16/16 records, tokensKnown = true in 16/16, and the graph edge ledger accounts in 8/8 cells (every delivered delegates row bound to a worker; distinct workers = shotsUsed; shot budget respected). Zero diverging cells.

Shot distributions: multishot 3,3,3,3,3,3,3,3 — the full budget in every cell, BY CONSTRUCTION (runMultishot has no deliverable check and cannot stop early). Graph 1,1,1,1,1,1,1,1 — settled on the first shot in 8/8 cells (the smoke's 1-shot pattern repeated).

The known design asymmetries, measured

  1. The graph driver sees the checker verdict; the multishot driver sees prose. The graph settle carries valid:true from the harness oracle, so the driver stopped after spawn fix: persist final runtime stream failures #1 in 8/8 cells: 0 steers, 0 bytes. The multishot driver leg never sees a verdict, so it delivered 2 corrective steers in every cell — 16 steers, 2732 bytes total — and the loop burned 24 shots for 8 convergences.
  2. The multishot opener is code-enforced; the graph brief is LLM-copied.buildOpener returns the task byte-exact. The graph driver copies the task into spawn_agent per its protocol, and the edge ledger measures the fidelity: delivered brief bytes minus task-text bytes = 424 bytes in all 8 cells — a constant delegates/worker-brief/v1 directive wrap over a byte-exact copy. Zero copy drift, and the exact-match oracle passing on shot 1 confirms it independently.

One cost asymmetry to keep visible: the graph arm is input-heavy (~13.4k tokens/cell of supervisor context vs ~1.7k for the loop), so at router prices it cost more per cell ($0.0261 avg vs $0.0171) despite using 1 shot vs 3 — while finishing faster in 7/8 cells (median wall 44.7s vs 82.8s).

Full artifacts (paired records JSON, ledger rows) on the #694 comment.

…rity harness
The live entry gets a deterministic count-and-positions task family whose
ground truth the harness computes, so the deliverable check is a deployable
text oracle identical in both arms. The reviewer profile carries the graph
driver protocol in prompt.instructions; the shared systemPrompt stays the
multishot driver stance. A per-run nonce keeps prompts unique across runs
so an upstream cache cannot cross-serve completions. The chat backend gains
a runGraph maxTurns bound, and the CLI prints a per-cell parity summary
with an edge-ledger accounting audit.
@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:44:53Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:45:01Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:50:12Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdictsound-with-nits
Coverage2 of 2 lenses (value, usefulness)
Concerns3 (1 medium-concern, 1 low, 1 weak-concern)
Heuristic0.0s
Duplication0.3s
Interrogation174.5s (2 bridge agents)
Total174.8s

💰 Value — sound-with-nits

Replaces the live entry's self-graded 'ALL TESTS PASS' marker with a harness-computed exact-match oracle plus a real driver protocol for the graph arm — a genuine measurement-validity upgrade in the codebase's grain; the only material gap is that the fixed famous-word task family, per the PR's own l

  • What it does: Three deltas in the p1-parity live entry (examples/p1-parity/run-parity.ts): (1) LIVE_TASK_FAMILY — 8 fixed count-and-positions cells ('strawberry'/r, etc.) whose ground truth expectedAnswerLine() computes in harness code, checked by liveShotPassed() demanding exactly one ANSWER: line byte-equal to it — replacing the old LIVE_PASS_MARKER where the model itself decided when to print 'ALL TESTS PASS
  • Goals it achieves: Makes the live parity measurement honest. The old marker oracle let the coder self-certify, so a 'converged' row measured nothing; now ground truth is computed by the harness and the oracle is shared byte-identically by both arms (the MultishotArmBackend.shotPassed contract at arms.ts:171-173 explicitly requires the same predicate as the graph deliverable). The driver protocol gives the graph arm'
  • Assessment: Good, and in the grain. The design reuses the right primitives instead of inventing: spawn_agent/await_event match the kernel's actual coordination tools (examples/graphs/shot-loop.ts:71-91), maxTurns is a real RunGraphOptions field, instructions ride the existing profile field with the documented append semantics, and the ledger audit reads the same EdgeTraversal rows ParityRecord already exposes
  • Better / existing approach: Searched for existing reusable oracle/task-family machinery: bench (LLM-judge fixtures, corpus-replay), examples/coding-benchmark (held-out test-execution oracle), examples/agentic-data-creation (rubric data-gen), src/ (no ANSWER-style exact oracles), and the agent-eval multishot surface (transport/driver seams only, no verifier lens). None fits the bare-chat no-tools no-third-model constraint, so
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

Replaces the live entry's self-graded marker oracle with a deterministic harness-computed oracle and a reviewer driver protocol that ride existing runtime knobs — the change is coherent, correctly wired, and already exercised by a full live run.

  • Integration: Reachable and already used. The entry is the documented CLI (pnpm tsx examples/p1-parity/run-parity.ts --backend cli-bridge, run-parity.ts:7-11), matching the repo-wide examples convention (examples/README.md:28-30,136-139). The live path is deliberately outside CI gates (header, run-parity.ts:17) while the offline suite still exercises both arms via the seams (parity.test.ts:103-326). Every new
  • Fit with existing patterns: Fits the grain rather than competing. The counting family + harness-computed ground truth implements the doctrine the file itself states (run-parity.ts:113-118: oracle read off the coder's text, never the model judging itself) and directly retires the previous placeholder — the deleted LIVE_PASS_MARKER = 'ALL TESTS PASS' includes-check was self-graded and explicitly labeled 'pending a real verif
  • Real-world viability: Built for the non-happy path. The oracle demands exactly ONE matching ANSWER line (run-parity.ts:148-156), so shotgunned candidates or prose cannot pass; ground truth is loop-computed, never model-claimed. Per-run nonce (run-parity.ts:397) defeats upstream response caches while preserving within-cell input equivalence (same nonce reaches both arms). Missing env fails loud with a complete list (run
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🔎 Heuristic Signals

🟡 Cruft: console debug addedexamples/p1-parity/run-parity.ts

  • console.log('\nparity summary (per cell):')

💰 Value Audit

🟠 Task family never exercises the multi-shot path with the tested model — the regime P1 measures[better-architecture] ``

run-parity.ts:113-118 claims 'shot 1 fails often enough to exercise the multi-shot path'. The PR's own live table contradicts this: all 5 visible graph-arm rows report shotsUsed=1, steering 0x/0B — the deliverable passed on the first spawn every time, so the graph arm's re-brief/steer/early-stop machinery and the arms' divergence behavior were never live-tested. Famous-word cells ('strawberry' most of all) are prime memorization candidates, which plausibly explains uniform shot-1 passes for glm-

🟡 Duplicated task-family bounds guard[maintenance] ``

The identical LIVE_TASK_FAMILY[index] undefined check exists at run-parity.ts:174-179 (inside liveParityCell) and run-parity.ts:411-416 (in main, needed to compute expectedAnswerLine before building the cell). liveParityCell's copy is unreachable from its only caller since main pre-checks. A generated family with no fixed cap dissolves this; otherwise drop the inner guard or have liveParityCell return the task alongside the cell.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

PassWhat it asks
HeuristicVague title? Whitespace-only or cruft-bearing diff? (content signals only)
DuplicationDo added function/class names already exist elsewhere in the repo?
Value AuditWhat does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness AuditDoes it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260815T105745Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

Disposition on the value-audit concerns (verdict sound-with-nits, head 380dfc2):

  1. Multi-shot regime never exercised live (medium) — agreed, and reported as the open confound on feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 before this audit landed: 8/8 graph cells settled on shot 1, so re-brief/steer/early-stop ran only in the offline suite. The named follow-up is per-shot pass telemetry in the multishot meter plus a harder (non-famous-word) family; tracked under feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 P1.
  2. console.log flagged as debug cruft (low) — intentional: run-parity.ts is a CLI whose contract is printing paired records; the flagged line is the summary printer, not leftover debugging.
  3. Duplicated bounds guard (weak) — real; the inner guard is unreachable from main. Will fold into the follow-up commit with the per-shot telemetry rather than dismiss this review cycle for a cosmetic.

@drewstone
drewstone merged commit 0e9c17c into mainAug 15, 2026
4 checks passed
@drewstone
drewstone deleted the feat/p1-live-parity branch August 15, 2026 11:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@drewstone@tangletools
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol - #869

Merged
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity
Aug 15, 2026
Merged

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol#869
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The P1 parity harness gets its honest live entry: a deterministic count-and-positions task family with harness-computed ground truth, an exact-match text oracle shared by both arms, and the reviewer driver protocol for the graph arm. Nothing in the repo's gates executes the live path; the offline suite still covers the arms.

Part of #694 (P1: loop-vs-graph parity).

What changed

  • examples/p1-parity/run-parity.tsLIVE_TASK_FAMILY (8 deterministic cells), expectedAnswerLine (ground truth computed by the harness, never by a model), liveShotPassed (exactly one matching ANSWER: line), live cell authoring (coder + reviewer profiles from env, driver tool protocol in instructions), per-run nonce so an upstream response cache cannot serve one run's completion to another.
  • examples/p1-parity/arms.ts — doc corrections on the record fields the live entry exercises.

Gates

  • pnpm typecheck — clean (root + examples).
  • pnpm vitest run examples/p1-parity/parity.test.ts — 5/5 passed.
  • Merge-tree vs origin/main — clean.

Live run evidence (8 cells x 3 shots x 2 arms, glm-5.3 both arms/legs, served-model verified)

cellarmconvergedshotsUsedtokens in/outusd @routersteeringledger
1multishottrue31510/2293$0.01462x/273Bnone (no edge ledger)
1graphtrue113413/583$0.02560x/0B1 delivered, bound, accounts=true
2multishottrue31982/1505$0.01132x/253Bnone
2graphtrue113391/797$0.02670x/0B1 delivered, bound, accounts=true
3multishottrue32410/1924$0.01422x/318Bnone
3graphtrue113411/561$0.02550x/0B1 delivered, bound, accounts=true
4multishottrue31617/3449$0.02092x/399Bnone
4graphtrue113427/631$0.02590x/0B1 delivered, bound, accounts=true
5multishottrue31581/2321$0.01492x/387Bnone
5graphtrue113441/906$0.02740x/0B1 delivered, bound, accounts=true
6multishottrue31524/3402$0.02052x/337Bnone
6graphtrue113407/477$0.02500x/0B1 delivered, bound, accounts=true
7multishottrue31551/3100$0.01902x/333Bnone
7graphtrue113457/642$0.02600x/0B1 delivered, bound, accounts=true
8multishottrue31602/3483$0.02112x/432Bnone
8graphtrue113412/822$0.02640x/0B1 delivered, bound, accounts=true

usd @router = tokens priced at the router's own response headers for glm-5.3 ($1.68/M input, $5.28/M output). The records' own usd fields are labeled by usdSource (multishot estimated from a stale catalog, graph unknown — it never estimates); neither is a router-header measurement, so the table prices tokens uniformly.

Verdict: parity HOLDS. Convergence agrees in 8/8 cells, infraShots = 0 in 16/16 records, tokensKnown = true in 16/16, and the graph edge ledger accounts in 8/8 cells (every delivered delegates row bound to a worker; distinct workers = shotsUsed; shot budget respected). Zero diverging cells.

Shot distributions: multishot 3,3,3,3,3,3,3,3 — the full budget in every cell, BY CONSTRUCTION (runMultishot has no deliverable check and cannot stop early). Graph 1,1,1,1,1,1,1,1 — settled on the first shot in 8/8 cells (the smoke's 1-shot pattern repeated).

The known design asymmetries, measured

  1. The graph driver sees the checker verdict; the multishot driver sees prose. The graph settle carries valid:true from the harness oracle, so the driver stopped after spawn fix: persist final runtime stream failures #1 in 8/8 cells: 0 steers, 0 bytes. The multishot driver leg never sees a verdict, so it delivered 2 corrective steers in every cell — 16 steers, 2732 bytes total — and the loop burned 24 shots for 8 convergences.
  2. The multishot opener is code-enforced; the graph brief is LLM-copied.buildOpener returns the task byte-exact. The graph driver copies the task into spawn_agent per its protocol, and the edge ledger measures the fidelity: delivered brief bytes minus task-text bytes = 424 bytes in all 8 cells — a constant delegates/worker-brief/v1 directive wrap over a byte-exact copy. Zero copy drift, and the exact-match oracle passing on shot 1 confirms it independently.

One cost asymmetry to keep visible: the graph arm is input-heavy (~13.4k tokens/cell of supervisor context vs ~1.7k for the loop), so at router prices it cost more per cell ($0.0261 avg vs $0.0171) despite using 1 shot vs 3 — while finishing faster in 7/8 cells (median wall 44.7s vs 82.8s).

Full artifacts (paired records JSON, ledger rows) on the #694 comment.

…rity harness
The live entry gets a deterministic count-and-positions task family whose
ground truth the harness computes, so the deliverable check is a deployable
text oracle identical in both arms. The reviewer profile carries the graph
driver protocol in prompt.instructions; the shared systemPrompt stays the
multishot driver stance. A per-run nonce keeps prompts unique across runs
so an upstream cache cannot cross-serve completions. The chat backend gains
a runGraph maxTurns bound, and the CLI prints a per-cell parity summary
with an edge-ledger accounting audit.
@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:44:53Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:45:01Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:50:12Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdictsound-with-nits
Coverage2 of 2 lenses (value, usefulness)
Concerns3 (1 medium-concern, 1 low, 1 weak-concern)
Heuristic0.0s
Duplication0.3s
Interrogation174.5s (2 bridge agents)
Total174.8s

💰 Value — sound-with-nits

Replaces the live entry's self-graded 'ALL TESTS PASS' marker with a harness-computed exact-match oracle plus a real driver protocol for the graph arm — a genuine measurement-validity upgrade in the codebase's grain; the only material gap is that the fixed famous-word task family, per the PR's own l

  • What it does: Three deltas in the p1-parity live entry (examples/p1-parity/run-parity.ts): (1) LIVE_TASK_FAMILY — 8 fixed count-and-positions cells ('strawberry'/r, etc.) whose ground truth expectedAnswerLine() computes in harness code, checked by liveShotPassed() demanding exactly one ANSWER: line byte-equal to it — replacing the old LIVE_PASS_MARKER where the model itself decided when to print 'ALL TESTS PASS
  • Goals it achieves: Makes the live parity measurement honest. The old marker oracle let the coder self-certify, so a 'converged' row measured nothing; now ground truth is computed by the harness and the oracle is shared byte-identically by both arms (the MultishotArmBackend.shotPassed contract at arms.ts:171-173 explicitly requires the same predicate as the graph deliverable). The driver protocol gives the graph arm'
  • Assessment: Good, and in the grain. The design reuses the right primitives instead of inventing: spawn_agent/await_event match the kernel's actual coordination tools (examples/graphs/shot-loop.ts:71-91), maxTurns is a real RunGraphOptions field, instructions ride the existing profile field with the documented append semantics, and the ledger audit reads the same EdgeTraversal rows ParityRecord already exposes
  • Better / existing approach: Searched for existing reusable oracle/task-family machinery: bench (LLM-judge fixtures, corpus-replay), examples/coding-benchmark (held-out test-execution oracle), examples/agentic-data-creation (rubric data-gen), src/ (no ANSWER-style exact oracles), and the agent-eval multishot surface (transport/driver seams only, no verifier lens). None fits the bare-chat no-tools no-third-model constraint, so
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

Replaces the live entry's self-graded marker oracle with a deterministic harness-computed oracle and a reviewer driver protocol that ride existing runtime knobs — the change is coherent, correctly wired, and already exercised by a full live run.

  • Integration: Reachable and already used. The entry is the documented CLI (pnpm tsx examples/p1-parity/run-parity.ts --backend cli-bridge, run-parity.ts:7-11), matching the repo-wide examples convention (examples/README.md:28-30,136-139). The live path is deliberately outside CI gates (header, run-parity.ts:17) while the offline suite still exercises both arms via the seams (parity.test.ts:103-326). Every new
  • Fit with existing patterns: Fits the grain rather than competing. The counting family + harness-computed ground truth implements the doctrine the file itself states (run-parity.ts:113-118: oracle read off the coder's text, never the model judging itself) and directly retires the previous placeholder — the deleted LIVE_PASS_MARKER = 'ALL TESTS PASS' includes-check was self-graded and explicitly labeled 'pending a real verif
  • Real-world viability: Built for the non-happy path. The oracle demands exactly ONE matching ANSWER line (run-parity.ts:148-156), so shotgunned candidates or prose cannot pass; ground truth is loop-computed, never model-claimed. Per-run nonce (run-parity.ts:397) defeats upstream response caches while preserving within-cell input equivalence (same nonce reaches both arms). Missing env fails loud with a complete list (run
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🔎 Heuristic Signals

🟡 Cruft: console debug addedexamples/p1-parity/run-parity.ts

  • console.log('\nparity summary (per cell):')

💰 Value Audit

🟠 Task family never exercises the multi-shot path with the tested model — the regime P1 measures[better-architecture] ``

run-parity.ts:113-118 claims 'shot 1 fails often enough to exercise the multi-shot path'. The PR's own live table contradicts this: all 5 visible graph-arm rows report shotsUsed=1, steering 0x/0B — the deliverable passed on the first spawn every time, so the graph arm's re-brief/steer/early-stop machinery and the arms' divergence behavior were never live-tested. Famous-word cells ('strawberry' most of all) are prime memorization candidates, which plausibly explains uniform shot-1 passes for glm-

🟡 Duplicated task-family bounds guard[maintenance] ``

The identical LIVE_TASK_FAMILY[index] undefined check exists at run-parity.ts:174-179 (inside liveParityCell) and run-parity.ts:411-416 (in main, needed to compute expectedAnswerLine before building the cell). liveParityCell's copy is unreachable from its only caller since main pre-checks. A generated family with no fixed cap dissolves this; otherwise drop the inner guard or have liveParityCell return the task alongside the cell.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

PassWhat it asks
HeuristicVague title? Whitespace-only or cruft-bearing diff? (content signals only)
DuplicationDo added function/class names already exist elsewhere in the repo?
Value AuditWhat does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness AuditDoes it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260815T105745Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

Disposition on the value-audit concerns (verdict sound-with-nits, head 380dfc2):

  1. Multi-shot regime never exercised live (medium) — agreed, and reported as the open confound on feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 before this audit landed: 8/8 graph cells settled on shot 1, so re-brief/steer/early-stop ran only in the offline suite. The named follow-up is per-shot pass telemetry in the multishot meter plus a harder (non-famous-word) family; tracked under feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 P1.
  2. console.log flagged as debug cruft (low) — intentional: run-parity.ts is a CLI whose contract is printing paired records; the flagged line is the summary printer, not leftover debugging.
  3. Duplicated bounds guard (weak) — real; the inner guard is unreachable from main. Will fold into the follow-up commit with the per-shot telemetry rather than dismiss this review cycle for a cosmetic.

@drewstone
drewstone merged commit 0e9c17c into mainAug 15, 2026
4 checks passed
@drewstone
drewstone deleted the feat/p1-live-parity branch August 15, 2026 11:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@drewstone@tangletools
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol - #869

Merged
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity
Aug 15, 2026
Merged

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol#869
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The P1 parity harness gets its honest live entry: a deterministic count-and-positions task family with harness-computed ground truth, an exact-match text oracle shared by both arms, and the reviewer driver protocol for the graph arm. Nothing in the repo's gates executes the live path; the offline suite still covers the arms.

Part of #694 (P1: loop-vs-graph parity).

What changed

  • examples/p1-parity/run-parity.tsLIVE_TASK_FAMILY (8 deterministic cells), expectedAnswerLine (ground truth computed by the harness, never by a model), liveShotPassed (exactly one matching ANSWER: line), live cell authoring (coder + reviewer profiles from env, driver tool protocol in instructions), per-run nonce so an upstream response cache cannot serve one run's completion to another.
  • examples/p1-parity/arms.ts — doc corrections on the record fields the live entry exercises.

Gates

  • pnpm typecheck — clean (root + examples).
  • pnpm vitest run examples/p1-parity/parity.test.ts — 5/5 passed.
  • Merge-tree vs origin/main — clean.

Live run evidence (8 cells x 3 shots x 2 arms, glm-5.3 both arms/legs, served-model verified)

cellarmconvergedshotsUsedtokens in/outusd @routersteeringledger
1multishottrue31510/2293$0.01462x/273Bnone (no edge ledger)
1graphtrue113413/583$0.02560x/0B1 delivered, bound, accounts=true
2multishottrue31982/1505$0.01132x/253Bnone
2graphtrue113391/797$0.02670x/0B1 delivered, bound, accounts=true
3multishottrue32410/1924$0.01422x/318Bnone
3graphtrue113411/561$0.02550x/0B1 delivered, bound, accounts=true
4multishottrue31617/3449$0.02092x/399Bnone
4graphtrue113427/631$0.02590x/0B1 delivered, bound, accounts=true
5multishottrue31581/2321$0.01492x/387Bnone
5graphtrue113441/906$0.02740x/0B1 delivered, bound, accounts=true
6multishottrue31524/3402$0.02052x/337Bnone
6graphtrue113407/477$0.02500x/0B1 delivered, bound, accounts=true
7multishottrue31551/3100$0.01902x/333Bnone
7graphtrue113457/642$0.02600x/0B1 delivered, bound, accounts=true
8multishottrue31602/3483$0.02112x/432Bnone
8graphtrue113412/822$0.02640x/0B1 delivered, bound, accounts=true

usd @router = tokens priced at the router's own response headers for glm-5.3 ($1.68/M input, $5.28/M output). The records' own usd fields are labeled by usdSource (multishot estimated from a stale catalog, graph unknown — it never estimates); neither is a router-header measurement, so the table prices tokens uniformly.

Verdict: parity HOLDS. Convergence agrees in 8/8 cells, infraShots = 0 in 16/16 records, tokensKnown = true in 16/16, and the graph edge ledger accounts in 8/8 cells (every delivered delegates row bound to a worker; distinct workers = shotsUsed; shot budget respected). Zero diverging cells.

Shot distributions: multishot 3,3,3,3,3,3,3,3 — the full budget in every cell, BY CONSTRUCTION (runMultishot has no deliverable check and cannot stop early). Graph 1,1,1,1,1,1,1,1 — settled on the first shot in 8/8 cells (the smoke's 1-shot pattern repeated).

The known design asymmetries, measured

  1. The graph driver sees the checker verdict; the multishot driver sees prose. The graph settle carries valid:true from the harness oracle, so the driver stopped after spawn fix: persist final runtime stream failures #1 in 8/8 cells: 0 steers, 0 bytes. The multishot driver leg never sees a verdict, so it delivered 2 corrective steers in every cell — 16 steers, 2732 bytes total — and the loop burned 24 shots for 8 convergences.
  2. The multishot opener is code-enforced; the graph brief is LLM-copied.buildOpener returns the task byte-exact. The graph driver copies the task into spawn_agent per its protocol, and the edge ledger measures the fidelity: delivered brief bytes minus task-text bytes = 424 bytes in all 8 cells — a constant delegates/worker-brief/v1 directive wrap over a byte-exact copy. Zero copy drift, and the exact-match oracle passing on shot 1 confirms it independently.

One cost asymmetry to keep visible: the graph arm is input-heavy (~13.4k tokens/cell of supervisor context vs ~1.7k for the loop), so at router prices it cost more per cell ($0.0261 avg vs $0.0171) despite using 1 shot vs 3 — while finishing faster in 7/8 cells (median wall 44.7s vs 82.8s).

Full artifacts (paired records JSON, ledger rows) on the #694 comment.

…rity harness
The live entry gets a deterministic count-and-positions task family whose
ground truth the harness computes, so the deliverable check is a deployable
text oracle identical in both arms. The reviewer profile carries the graph
driver protocol in prompt.instructions; the shared systemPrompt stays the
multishot driver stance. A per-run nonce keeps prompts unique across runs
so an upstream cache cannot cross-serve completions. The chat backend gains
a runGraph maxTurns bound, and the CLI prints a per-cell parity summary
with an edge-ledger accounting audit.
@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:44:53Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:45:01Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:50:12Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdictsound-with-nits
Coverage2 of 2 lenses (value, usefulness)
Concerns3 (1 medium-concern, 1 low, 1 weak-concern)
Heuristic0.0s
Duplication0.3s
Interrogation174.5s (2 bridge agents)
Total174.8s

💰 Value — sound-with-nits

Replaces the live entry's self-graded 'ALL TESTS PASS' marker with a harness-computed exact-match oracle plus a real driver protocol for the graph arm — a genuine measurement-validity upgrade in the codebase's grain; the only material gap is that the fixed famous-word task family, per the PR's own l

  • What it does: Three deltas in the p1-parity live entry (examples/p1-parity/run-parity.ts): (1) LIVE_TASK_FAMILY — 8 fixed count-and-positions cells ('strawberry'/r, etc.) whose ground truth expectedAnswerLine() computes in harness code, checked by liveShotPassed() demanding exactly one ANSWER: line byte-equal to it — replacing the old LIVE_PASS_MARKER where the model itself decided when to print 'ALL TESTS PASS
  • Goals it achieves: Makes the live parity measurement honest. The old marker oracle let the coder self-certify, so a 'converged' row measured nothing; now ground truth is computed by the harness and the oracle is shared byte-identically by both arms (the MultishotArmBackend.shotPassed contract at arms.ts:171-173 explicitly requires the same predicate as the graph deliverable). The driver protocol gives the graph arm'
  • Assessment: Good, and in the grain. The design reuses the right primitives instead of inventing: spawn_agent/await_event match the kernel's actual coordination tools (examples/graphs/shot-loop.ts:71-91), maxTurns is a real RunGraphOptions field, instructions ride the existing profile field with the documented append semantics, and the ledger audit reads the same EdgeTraversal rows ParityRecord already exposes
  • Better / existing approach: Searched for existing reusable oracle/task-family machinery: bench (LLM-judge fixtures, corpus-replay), examples/coding-benchmark (held-out test-execution oracle), examples/agentic-data-creation (rubric data-gen), src/ (no ANSWER-style exact oracles), and the agent-eval multishot surface (transport/driver seams only, no verifier lens). None fits the bare-chat no-tools no-third-model constraint, so
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

Replaces the live entry's self-graded marker oracle with a deterministic harness-computed oracle and a reviewer driver protocol that ride existing runtime knobs — the change is coherent, correctly wired, and already exercised by a full live run.

  • Integration: Reachable and already used. The entry is the documented CLI (pnpm tsx examples/p1-parity/run-parity.ts --backend cli-bridge, run-parity.ts:7-11), matching the repo-wide examples convention (examples/README.md:28-30,136-139). The live path is deliberately outside CI gates (header, run-parity.ts:17) while the offline suite still exercises both arms via the seams (parity.test.ts:103-326). Every new
  • Fit with existing patterns: Fits the grain rather than competing. The counting family + harness-computed ground truth implements the doctrine the file itself states (run-parity.ts:113-118: oracle read off the coder's text, never the model judging itself) and directly retires the previous placeholder — the deleted LIVE_PASS_MARKER = 'ALL TESTS PASS' includes-check was self-graded and explicitly labeled 'pending a real verif
  • Real-world viability: Built for the non-happy path. The oracle demands exactly ONE matching ANSWER line (run-parity.ts:148-156), so shotgunned candidates or prose cannot pass; ground truth is loop-computed, never model-claimed. Per-run nonce (run-parity.ts:397) defeats upstream response caches while preserving within-cell input equivalence (same nonce reaches both arms). Missing env fails loud with a complete list (run
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🔎 Heuristic Signals

🟡 Cruft: console debug addedexamples/p1-parity/run-parity.ts

  • console.log('\nparity summary (per cell):')

💰 Value Audit

🟠 Task family never exercises the multi-shot path with the tested model — the regime P1 measures[better-architecture] ``

run-parity.ts:113-118 claims 'shot 1 fails often enough to exercise the multi-shot path'. The PR's own live table contradicts this: all 5 visible graph-arm rows report shotsUsed=1, steering 0x/0B — the deliverable passed on the first spawn every time, so the graph arm's re-brief/steer/early-stop machinery and the arms' divergence behavior were never live-tested. Famous-word cells ('strawberry' most of all) are prime memorization candidates, which plausibly explains uniform shot-1 passes for glm-

🟡 Duplicated task-family bounds guard[maintenance] ``

The identical LIVE_TASK_FAMILY[index] undefined check exists at run-parity.ts:174-179 (inside liveParityCell) and run-parity.ts:411-416 (in main, needed to compute expectedAnswerLine before building the cell). liveParityCell's copy is unreachable from its only caller since main pre-checks. A generated family with no fixed cap dissolves this; otherwise drop the inner guard or have liveParityCell return the task alongside the cell.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

PassWhat it asks
HeuristicVague title? Whitespace-only or cruft-bearing diff? (content signals only)
DuplicationDo added function/class names already exist elsewhere in the repo?
Value AuditWhat does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness AuditDoes it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260815T105745Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

Disposition on the value-audit concerns (verdict sound-with-nits, head 380dfc2):

  1. Multi-shot regime never exercised live (medium) — agreed, and reported as the open confound on feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 before this audit landed: 8/8 graph cells settled on shot 1, so re-brief/steer/early-stop ran only in the offline suite. The named follow-up is per-shot pass telemetry in the multishot meter plus a harder (non-famous-word) family; tracked under feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 P1.
  2. console.log flagged as debug cruft (low) — intentional: run-parity.ts is a CLI whose contract is printing paired records; the flagged line is the summary printer, not leftover debugging.
  3. Duplicated bounds guard (weak) — real; the inner guard is unreachable from main. Will fold into the follow-up commit with the per-shot telemetry rather than dismiss this review cycle for a cosmetic.

@drewstone
drewstone merged commit 0e9c17c into mainAug 15, 2026
4 checks passed
@drewstone
drewstone deleted the feat/p1-live-parity branch August 15, 2026 11:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@drewstone@tangletools
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol - #869

Merged
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity
Aug 15, 2026
Merged

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol#869
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The P1 parity harness gets its honest live entry: a deterministic count-and-positions task family with harness-computed ground truth, an exact-match text oracle shared by both arms, and the reviewer driver protocol for the graph arm. Nothing in the repo's gates executes the live path; the offline suite still covers the arms.

Part of #694 (P1: loop-vs-graph parity).

What changed

  • examples/p1-parity/run-parity.tsLIVE_TASK_FAMILY (8 deterministic cells), expectedAnswerLine (ground truth computed by the harness, never by a model), liveShotPassed (exactly one matching ANSWER: line), live cell authoring (coder + reviewer profiles from env, driver tool protocol in instructions), per-run nonce so an upstream response cache cannot serve one run's completion to another.
  • examples/p1-parity/arms.ts — doc corrections on the record fields the live entry exercises.

Gates

  • pnpm typecheck — clean (root + examples).
  • pnpm vitest run examples/p1-parity/parity.test.ts — 5/5 passed.
  • Merge-tree vs origin/main — clean.

Live run evidence (8 cells x 3 shots x 2 arms, glm-5.3 both arms/legs, served-model verified)

cellarmconvergedshotsUsedtokens in/outusd @routersteeringledger
1multishottrue31510/2293$0.01462x/273Bnone (no edge ledger)
1graphtrue113413/583$0.02560x/0B1 delivered, bound, accounts=true
2multishottrue31982/1505$0.01132x/253Bnone
2graphtrue113391/797$0.02670x/0B1 delivered, bound, accounts=true
3multishottrue32410/1924$0.01422x/318Bnone
3graphtrue113411/561$0.02550x/0B1 delivered, bound, accounts=true
4multishottrue31617/3449$0.02092x/399Bnone
4graphtrue113427/631$0.02590x/0B1 delivered, bound, accounts=true
5multishottrue31581/2321$0.01492x/387Bnone
5graphtrue113441/906$0.02740x/0B1 delivered, bound, accounts=true
6multishottrue31524/3402$0.02052x/337Bnone
6graphtrue113407/477$0.02500x/0B1 delivered, bound, accounts=true
7multishottrue31551/3100$0.01902x/333Bnone
7graphtrue113457/642$0.02600x/0B1 delivered, bound, accounts=true
8multishottrue31602/3483$0.02112x/432Bnone
8graphtrue113412/822$0.02640x/0B1 delivered, bound, accounts=true

usd @router = tokens priced at the router's own response headers for glm-5.3 ($1.68/M input, $5.28/M output). The records' own usd fields are labeled by usdSource (multishot estimated from a stale catalog, graph unknown — it never estimates); neither is a router-header measurement, so the table prices tokens uniformly.

Verdict: parity HOLDS. Convergence agrees in 8/8 cells, infraShots = 0 in 16/16 records, tokensKnown = true in 16/16, and the graph edge ledger accounts in 8/8 cells (every delivered delegates row bound to a worker; distinct workers = shotsUsed; shot budget respected). Zero diverging cells.

Shot distributions: multishot 3,3,3,3,3,3,3,3 — the full budget in every cell, BY CONSTRUCTION (runMultishot has no deliverable check and cannot stop early). Graph 1,1,1,1,1,1,1,1 — settled on the first shot in 8/8 cells (the smoke's 1-shot pattern repeated).

The known design asymmetries, measured

  1. The graph driver sees the checker verdict; the multishot driver sees prose. The graph settle carries valid:true from the harness oracle, so the driver stopped after spawn fix: persist final runtime stream failures #1 in 8/8 cells: 0 steers, 0 bytes. The multishot driver leg never sees a verdict, so it delivered 2 corrective steers in every cell — 16 steers, 2732 bytes total — and the loop burned 24 shots for 8 convergences.
  2. The multishot opener is code-enforced; the graph brief is LLM-copied.buildOpener returns the task byte-exact. The graph driver copies the task into spawn_agent per its protocol, and the edge ledger measures the fidelity: delivered brief bytes minus task-text bytes = 424 bytes in all 8 cells — a constant delegates/worker-brief/v1 directive wrap over a byte-exact copy. Zero copy drift, and the exact-match oracle passing on shot 1 confirms it independently.

One cost asymmetry to keep visible: the graph arm is input-heavy (~13.4k tokens/cell of supervisor context vs ~1.7k for the loop), so at router prices it cost more per cell ($0.0261 avg vs $0.0171) despite using 1 shot vs 3 — while finishing faster in 7/8 cells (median wall 44.7s vs 82.8s).

Full artifacts (paired records JSON, ledger rows) on the #694 comment.

…rity harness
The live entry gets a deterministic count-and-positions task family whose
ground truth the harness computes, so the deliverable check is a deployable
text oracle identical in both arms. The reviewer profile carries the graph
driver protocol in prompt.instructions; the shared systemPrompt stays the
multishot driver stance. A per-run nonce keeps prompts unique across runs
so an upstream cache cannot cross-serve completions. The chat backend gains
a runGraph maxTurns bound, and the CLI prints a per-cell parity summary
with an edge-ledger accounting audit.
@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:44:53Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:45:01Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:50:12Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdictsound-with-nits
Coverage2 of 2 lenses (value, usefulness)
Concerns3 (1 medium-concern, 1 low, 1 weak-concern)
Heuristic0.0s
Duplication0.3s
Interrogation174.5s (2 bridge agents)
Total174.8s

💰 Value — sound-with-nits

Replaces the live entry's self-graded 'ALL TESTS PASS' marker with a harness-computed exact-match oracle plus a real driver protocol for the graph arm — a genuine measurement-validity upgrade in the codebase's grain; the only material gap is that the fixed famous-word task family, per the PR's own l

  • What it does: Three deltas in the p1-parity live entry (examples/p1-parity/run-parity.ts): (1) LIVE_TASK_FAMILY — 8 fixed count-and-positions cells ('strawberry'/r, etc.) whose ground truth expectedAnswerLine() computes in harness code, checked by liveShotPassed() demanding exactly one ANSWER: line byte-equal to it — replacing the old LIVE_PASS_MARKER where the model itself decided when to print 'ALL TESTS PASS
  • Goals it achieves: Makes the live parity measurement honest. The old marker oracle let the coder self-certify, so a 'converged' row measured nothing; now ground truth is computed by the harness and the oracle is shared byte-identically by both arms (the MultishotArmBackend.shotPassed contract at arms.ts:171-173 explicitly requires the same predicate as the graph deliverable). The driver protocol gives the graph arm'
  • Assessment: Good, and in the grain. The design reuses the right primitives instead of inventing: spawn_agent/await_event match the kernel's actual coordination tools (examples/graphs/shot-loop.ts:71-91), maxTurns is a real RunGraphOptions field, instructions ride the existing profile field with the documented append semantics, and the ledger audit reads the same EdgeTraversal rows ParityRecord already exposes
  • Better / existing approach: Searched for existing reusable oracle/task-family machinery: bench (LLM-judge fixtures, corpus-replay), examples/coding-benchmark (held-out test-execution oracle), examples/agentic-data-creation (rubric data-gen), src/ (no ANSWER-style exact oracles), and the agent-eval multishot surface (transport/driver seams only, no verifier lens). None fits the bare-chat no-tools no-third-model constraint, so
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

Replaces the live entry's self-graded marker oracle with a deterministic harness-computed oracle and a reviewer driver protocol that ride existing runtime knobs — the change is coherent, correctly wired, and already exercised by a full live run.

  • Integration: Reachable and already used. The entry is the documented CLI (pnpm tsx examples/p1-parity/run-parity.ts --backend cli-bridge, run-parity.ts:7-11), matching the repo-wide examples convention (examples/README.md:28-30,136-139). The live path is deliberately outside CI gates (header, run-parity.ts:17) while the offline suite still exercises both arms via the seams (parity.test.ts:103-326). Every new
  • Fit with existing patterns: Fits the grain rather than competing. The counting family + harness-computed ground truth implements the doctrine the file itself states (run-parity.ts:113-118: oracle read off the coder's text, never the model judging itself) and directly retires the previous placeholder — the deleted LIVE_PASS_MARKER = 'ALL TESTS PASS' includes-check was self-graded and explicitly labeled 'pending a real verif
  • Real-world viability: Built for the non-happy path. The oracle demands exactly ONE matching ANSWER line (run-parity.ts:148-156), so shotgunned candidates or prose cannot pass; ground truth is loop-computed, never model-claimed. Per-run nonce (run-parity.ts:397) defeats upstream response caches while preserving within-cell input equivalence (same nonce reaches both arms). Missing env fails loud with a complete list (run
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🔎 Heuristic Signals

🟡 Cruft: console debug addedexamples/p1-parity/run-parity.ts

  • console.log('\nparity summary (per cell):')

💰 Value Audit

🟠 Task family never exercises the multi-shot path with the tested model — the regime P1 measures[better-architecture] ``

run-parity.ts:113-118 claims 'shot 1 fails often enough to exercise the multi-shot path'. The PR's own live table contradicts this: all 5 visible graph-arm rows report shotsUsed=1, steering 0x/0B — the deliverable passed on the first spawn every time, so the graph arm's re-brief/steer/early-stop machinery and the arms' divergence behavior were never live-tested. Famous-word cells ('strawberry' most of all) are prime memorization candidates, which plausibly explains uniform shot-1 passes for glm-

🟡 Duplicated task-family bounds guard[maintenance] ``

The identical LIVE_TASK_FAMILY[index] undefined check exists at run-parity.ts:174-179 (inside liveParityCell) and run-parity.ts:411-416 (in main, needed to compute expectedAnswerLine before building the cell). liveParityCell's copy is unreachable from its only caller since main pre-checks. A generated family with no fixed cap dissolves this; otherwise drop the inner guard or have liveParityCell return the task alongside the cell.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

PassWhat it asks
HeuristicVague title? Whitespace-only or cruft-bearing diff? (content signals only)
DuplicationDo added function/class names already exist elsewhere in the repo?
Value AuditWhat does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness AuditDoes it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260815T105745Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

Disposition on the value-audit concerns (verdict sound-with-nits, head 380dfc2):

  1. Multi-shot regime never exercised live (medium) — agreed, and reported as the open confound on feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 before this audit landed: 8/8 graph cells settled on shot 1, so re-brief/steer/early-stop ran only in the offline suite. The named follow-up is per-shot pass telemetry in the multishot meter plus a harder (non-famous-word) family; tracked under feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 P1.
  2. console.log flagged as debug cruft (low) — intentional: run-parity.ts is a CLI whose contract is printing paired records; the flagged line is the summary printer, not leftover debugging.
  3. Duplicated bounds guard (weak) — real; the inner guard is unreachable from main. Will fold into the follow-up commit with the per-shot telemetry rather than dismiss this review cycle for a cosmetic.

@drewstone
drewstone merged commit 0e9c17c into mainAug 15, 2026
4 checks passed
@drewstone
drewstone deleted the feat/p1-live-parity branch August 15, 2026 11:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@drewstone@tangletools
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol - #869

Merged
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity
Aug 15, 2026
Merged

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol#869
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The P1 parity harness gets its honest live entry: a deterministic count-and-positions task family with harness-computed ground truth, an exact-match text oracle shared by both arms, and the reviewer driver protocol for the graph arm. Nothing in the repo's gates executes the live path; the offline suite still covers the arms.

Part of #694 (P1: loop-vs-graph parity).

What changed

  • examples/p1-parity/run-parity.tsLIVE_TASK_FAMILY (8 deterministic cells), expectedAnswerLine (ground truth computed by the harness, never by a model), liveShotPassed (exactly one matching ANSWER: line), live cell authoring (coder + reviewer profiles from env, driver tool protocol in instructions), per-run nonce so an upstream response cache cannot serve one run's completion to another.
  • examples/p1-parity/arms.ts — doc corrections on the record fields the live entry exercises.

Gates

  • pnpm typecheck — clean (root + examples).
  • pnpm vitest run examples/p1-parity/parity.test.ts — 5/5 passed.
  • Merge-tree vs origin/main — clean.

Live run evidence (8 cells x 3 shots x 2 arms, glm-5.3 both arms/legs, served-model verified)

cellarmconvergedshotsUsedtokens in/outusd @routersteeringledger
1multishottrue31510/2293$0.01462x/273Bnone (no edge ledger)
1graphtrue113413/583$0.02560x/0B1 delivered, bound, accounts=true
2multishottrue31982/1505$0.01132x/253Bnone
2graphtrue113391/797$0.02670x/0B1 delivered, bound, accounts=true
3multishottrue32410/1924$0.01422x/318Bnone
3graphtrue113411/561$0.02550x/0B1 delivered, bound, accounts=true
4multishottrue31617/3449$0.02092x/399Bnone
4graphtrue113427/631$0.02590x/0B1 delivered, bound, accounts=true
5multishottrue31581/2321$0.01492x/387Bnone
5graphtrue113441/906$0.02740x/0B1 delivered, bound, accounts=true
6multishottrue31524/3402$0.02052x/337Bnone
6graphtrue113407/477$0.02500x/0B1 delivered, bound, accounts=true
7multishottrue31551/3100$0.01902x/333Bnone
7graphtrue113457/642$0.02600x/0B1 delivered, bound, accounts=true
8multishottrue31602/3483$0.02112x/432Bnone
8graphtrue113412/822$0.02640x/0B1 delivered, bound, accounts=true

usd @router = tokens priced at the router's own response headers for glm-5.3 ($1.68/M input, $5.28/M output). The records' own usd fields are labeled by usdSource (multishot estimated from a stale catalog, graph unknown — it never estimates); neither is a router-header measurement, so the table prices tokens uniformly.

Verdict: parity HOLDS. Convergence agrees in 8/8 cells, infraShots = 0 in 16/16 records, tokensKnown = true in 16/16, and the graph edge ledger accounts in 8/8 cells (every delivered delegates row bound to a worker; distinct workers = shotsUsed; shot budget respected). Zero diverging cells.

Shot distributions: multishot 3,3,3,3,3,3,3,3 — the full budget in every cell, BY CONSTRUCTION (runMultishot has no deliverable check and cannot stop early). Graph 1,1,1,1,1,1,1,1 — settled on the first shot in 8/8 cells (the smoke's 1-shot pattern repeated).

The known design asymmetries, measured

  1. The graph driver sees the checker verdict; the multishot driver sees prose. The graph settle carries valid:true from the harness oracle, so the driver stopped after spawn fix: persist final runtime stream failures #1 in 8/8 cells: 0 steers, 0 bytes. The multishot driver leg never sees a verdict, so it delivered 2 corrective steers in every cell — 16 steers, 2732 bytes total — and the loop burned 24 shots for 8 convergences.
  2. The multishot opener is code-enforced; the graph brief is LLM-copied.buildOpener returns the task byte-exact. The graph driver copies the task into spawn_agent per its protocol, and the edge ledger measures the fidelity: delivered brief bytes minus task-text bytes = 424 bytes in all 8 cells — a constant delegates/worker-brief/v1 directive wrap over a byte-exact copy. Zero copy drift, and the exact-match oracle passing on shot 1 confirms it independently.

One cost asymmetry to keep visible: the graph arm is input-heavy (~13.4k tokens/cell of supervisor context vs ~1.7k for the loop), so at router prices it cost more per cell ($0.0261 avg vs $0.0171) despite using 1 shot vs 3 — while finishing faster in 7/8 cells (median wall 44.7s vs 82.8s).

Full artifacts (paired records JSON, ledger rows) on the #694 comment.

…rity harness
The live entry gets a deterministic count-and-positions task family whose
ground truth the harness computes, so the deliverable check is a deployable
text oracle identical in both arms. The reviewer profile carries the graph
driver protocol in prompt.instructions; the shared systemPrompt stays the
multishot driver stance. A per-run nonce keeps prompts unique across runs
so an upstream cache cannot cross-serve completions. The chat backend gains
a runGraph maxTurns bound, and the CLI prints a per-cell parity summary
with an edge-ledger accounting audit.
@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:44:53Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:45:01Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:50:12Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdictsound-with-nits
Coverage2 of 2 lenses (value, usefulness)
Concerns3 (1 medium-concern, 1 low, 1 weak-concern)
Heuristic0.0s
Duplication0.3s
Interrogation174.5s (2 bridge agents)
Total174.8s

💰 Value — sound-with-nits

Replaces the live entry's self-graded 'ALL TESTS PASS' marker with a harness-computed exact-match oracle plus a real driver protocol for the graph arm — a genuine measurement-validity upgrade in the codebase's grain; the only material gap is that the fixed famous-word task family, per the PR's own l

  • What it does: Three deltas in the p1-parity live entry (examples/p1-parity/run-parity.ts): (1) LIVE_TASK_FAMILY — 8 fixed count-and-positions cells ('strawberry'/r, etc.) whose ground truth expectedAnswerLine() computes in harness code, checked by liveShotPassed() demanding exactly one ANSWER: line byte-equal to it — replacing the old LIVE_PASS_MARKER where the model itself decided when to print 'ALL TESTS PASS
  • Goals it achieves: Makes the live parity measurement honest. The old marker oracle let the coder self-certify, so a 'converged' row measured nothing; now ground truth is computed by the harness and the oracle is shared byte-identically by both arms (the MultishotArmBackend.shotPassed contract at arms.ts:171-173 explicitly requires the same predicate as the graph deliverable). The driver protocol gives the graph arm'
  • Assessment: Good, and in the grain. The design reuses the right primitives instead of inventing: spawn_agent/await_event match the kernel's actual coordination tools (examples/graphs/shot-loop.ts:71-91), maxTurns is a real RunGraphOptions field, instructions ride the existing profile field with the documented append semantics, and the ledger audit reads the same EdgeTraversal rows ParityRecord already exposes
  • Better / existing approach: Searched for existing reusable oracle/task-family machinery: bench (LLM-judge fixtures, corpus-replay), examples/coding-benchmark (held-out test-execution oracle), examples/agentic-data-creation (rubric data-gen), src/ (no ANSWER-style exact oracles), and the agent-eval multishot surface (transport/driver seams only, no verifier lens). None fits the bare-chat no-tools no-third-model constraint, so
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

Replaces the live entry's self-graded marker oracle with a deterministic harness-computed oracle and a reviewer driver protocol that ride existing runtime knobs — the change is coherent, correctly wired, and already exercised by a full live run.

  • Integration: Reachable and already used. The entry is the documented CLI (pnpm tsx examples/p1-parity/run-parity.ts --backend cli-bridge, run-parity.ts:7-11), matching the repo-wide examples convention (examples/README.md:28-30,136-139). The live path is deliberately outside CI gates (header, run-parity.ts:17) while the offline suite still exercises both arms via the seams (parity.test.ts:103-326). Every new
  • Fit with existing patterns: Fits the grain rather than competing. The counting family + harness-computed ground truth implements the doctrine the file itself states (run-parity.ts:113-118: oracle read off the coder's text, never the model judging itself) and directly retires the previous placeholder — the deleted LIVE_PASS_MARKER = 'ALL TESTS PASS' includes-check was self-graded and explicitly labeled 'pending a real verif
  • Real-world viability: Built for the non-happy path. The oracle demands exactly ONE matching ANSWER line (run-parity.ts:148-156), so shotgunned candidates or prose cannot pass; ground truth is loop-computed, never model-claimed. Per-run nonce (run-parity.ts:397) defeats upstream response caches while preserving within-cell input equivalence (same nonce reaches both arms). Missing env fails loud with a complete list (run
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🔎 Heuristic Signals

🟡 Cruft: console debug addedexamples/p1-parity/run-parity.ts

  • console.log('\nparity summary (per cell):')

💰 Value Audit

🟠 Task family never exercises the multi-shot path with the tested model — the regime P1 measures[better-architecture] ``

run-parity.ts:113-118 claims 'shot 1 fails often enough to exercise the multi-shot path'. The PR's own live table contradicts this: all 5 visible graph-arm rows report shotsUsed=1, steering 0x/0B — the deliverable passed on the first spawn every time, so the graph arm's re-brief/steer/early-stop machinery and the arms' divergence behavior were never live-tested. Famous-word cells ('strawberry' most of all) are prime memorization candidates, which plausibly explains uniform shot-1 passes for glm-

🟡 Duplicated task-family bounds guard[maintenance] ``

The identical LIVE_TASK_FAMILY[index] undefined check exists at run-parity.ts:174-179 (inside liveParityCell) and run-parity.ts:411-416 (in main, needed to compute expectedAnswerLine before building the cell). liveParityCell's copy is unreachable from its only caller since main pre-checks. A generated family with no fixed cap dissolves this; otherwise drop the inner guard or have liveParityCell return the task alongside the cell.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

PassWhat it asks
HeuristicVague title? Whitespace-only or cruft-bearing diff? (content signals only)
DuplicationDo added function/class names already exist elsewhere in the repo?
Value AuditWhat does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness AuditDoes it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260815T105745Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

Disposition on the value-audit concerns (verdict sound-with-nits, head 380dfc2):

  1. Multi-shot regime never exercised live (medium) — agreed, and reported as the open confound on feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 before this audit landed: 8/8 graph cells settled on shot 1, so re-brief/steer/early-stop ran only in the offline suite. The named follow-up is per-shot pass telemetry in the multishot meter plus a harder (non-famous-word) family; tracked under feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 P1.
  2. console.log flagged as debug cruft (low) — intentional: run-parity.ts is a CLI whose contract is printing paired records; the flagged line is the summary printer, not leftover debugging.
  3. Duplicated bounds guard (weak) — real; the inner guard is unreachable from main. Will fold into the follow-up commit with the per-shot telemetry rather than dismiss this review cycle for a cosmetic.

@drewstone
drewstone merged commit 0e9c17c into mainAug 15, 2026
4 checks passed
@drewstone
drewstone deleted the feat/p1-live-parity branch August 15, 2026 11:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@drewstone@tangletools
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol - #869

Merged
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity
Aug 15, 2026
Merged

feat(p1-parity): honest live entry — deterministic task family, harness oracle, driver protocol#869
drewstone merged 1 commit into
mainfrom
feat/p1-live-parity

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The P1 parity harness gets its honest live entry: a deterministic count-and-positions task family with harness-computed ground truth, an exact-match text oracle shared by both arms, and the reviewer driver protocol for the graph arm. Nothing in the repo's gates executes the live path; the offline suite still covers the arms.

Part of #694 (P1: loop-vs-graph parity).

What changed

  • examples/p1-parity/run-parity.tsLIVE_TASK_FAMILY (8 deterministic cells), expectedAnswerLine (ground truth computed by the harness, never by a model), liveShotPassed (exactly one matching ANSWER: line), live cell authoring (coder + reviewer profiles from env, driver tool protocol in instructions), per-run nonce so an upstream response cache cannot serve one run's completion to another.
  • examples/p1-parity/arms.ts — doc corrections on the record fields the live entry exercises.

Gates

  • pnpm typecheck — clean (root + examples).
  • pnpm vitest run examples/p1-parity/parity.test.ts — 5/5 passed.
  • Merge-tree vs origin/main — clean.

Live run evidence (8 cells x 3 shots x 2 arms, glm-5.3 both arms/legs, served-model verified)

cellarmconvergedshotsUsedtokens in/outusd @routersteeringledger
1multishottrue31510/2293$0.01462x/273Bnone (no edge ledger)
1graphtrue113413/583$0.02560x/0B1 delivered, bound, accounts=true
2multishottrue31982/1505$0.01132x/253Bnone
2graphtrue113391/797$0.02670x/0B1 delivered, bound, accounts=true
3multishottrue32410/1924$0.01422x/318Bnone
3graphtrue113411/561$0.02550x/0B1 delivered, bound, accounts=true
4multishottrue31617/3449$0.02092x/399Bnone
4graphtrue113427/631$0.02590x/0B1 delivered, bound, accounts=true
5multishottrue31581/2321$0.01492x/387Bnone
5graphtrue113441/906$0.02740x/0B1 delivered, bound, accounts=true
6multishottrue31524/3402$0.02052x/337Bnone
6graphtrue113407/477$0.02500x/0B1 delivered, bound, accounts=true
7multishottrue31551/3100$0.01902x/333Bnone
7graphtrue113457/642$0.02600x/0B1 delivered, bound, accounts=true
8multishottrue31602/3483$0.02112x/432Bnone
8graphtrue113412/822$0.02640x/0B1 delivered, bound, accounts=true

usd @router = tokens priced at the router's own response headers for glm-5.3 ($1.68/M input, $5.28/M output). The records' own usd fields are labeled by usdSource (multishot estimated from a stale catalog, graph unknown — it never estimates); neither is a router-header measurement, so the table prices tokens uniformly.

Verdict: parity HOLDS. Convergence agrees in 8/8 cells, infraShots = 0 in 16/16 records, tokensKnown = true in 16/16, and the graph edge ledger accounts in 8/8 cells (every delivered delegates row bound to a worker; distinct workers = shotsUsed; shot budget respected). Zero diverging cells.

Shot distributions: multishot 3,3,3,3,3,3,3,3 — the full budget in every cell, BY CONSTRUCTION (runMultishot has no deliverable check and cannot stop early). Graph 1,1,1,1,1,1,1,1 — settled on the first shot in 8/8 cells (the smoke's 1-shot pattern repeated).

The known design asymmetries, measured

  1. The graph driver sees the checker verdict; the multishot driver sees prose. The graph settle carries valid:true from the harness oracle, so the driver stopped after spawn fix: persist final runtime stream failures #1 in 8/8 cells: 0 steers, 0 bytes. The multishot driver leg never sees a verdict, so it delivered 2 corrective steers in every cell — 16 steers, 2732 bytes total — and the loop burned 24 shots for 8 convergences.
  2. The multishot opener is code-enforced; the graph brief is LLM-copied.buildOpener returns the task byte-exact. The graph driver copies the task into spawn_agent per its protocol, and the edge ledger measures the fidelity: delivered brief bytes minus task-text bytes = 424 bytes in all 8 cells — a constant delegates/worker-brief/v1 directive wrap over a byte-exact copy. Zero copy drift, and the exact-match oracle passing on shot 1 confirms it independently.

One cost asymmetry to keep visible: the graph arm is input-heavy (~13.4k tokens/cell of supervisor context vs ~1.7k for the loop), so at router prices it cost more per cell ($0.0261 avg vs $0.0171) despite using 1 shot vs 3 — while finishing faster in 7/8 cells (median wall 44.7s vs 82.8s).

Full artifacts (paired records JSON, ledger rows) on the #694 comment.

…rity harness
The live entry gets a deterministic count-and-positions task family whose
ground truth the harness computes, so the deliverable check is a deployable
text oracle identical in both arms. The reviewer profile carries the graph
driver protocol in prompt.instructions; the shared systemPrompt stays the
multishot driver stance. A per-run nonce keeps prompts unique across runs
so an upstream cache cannot cross-serve completions. The chat backend gains
a runGraph maxTurns bound, and the CLI prints a per-cell parity summary
with an edge-ledger accounting audit.
@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:44:53Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:45:01Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

@tangletools review now

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — 380dfc28

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: drewstone_author · 2026-08-15T10:50:12Z

@tangletoolstangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdictsound-with-nits
Coverage2 of 2 lenses (value, usefulness)
Concerns3 (1 medium-concern, 1 low, 1 weak-concern)
Heuristic0.0s
Duplication0.3s
Interrogation174.5s (2 bridge agents)
Total174.8s

💰 Value — sound-with-nits

Replaces the live entry's self-graded 'ALL TESTS PASS' marker with a harness-computed exact-match oracle plus a real driver protocol for the graph arm — a genuine measurement-validity upgrade in the codebase's grain; the only material gap is that the fixed famous-word task family, per the PR's own l

  • What it does: Three deltas in the p1-parity live entry (examples/p1-parity/run-parity.ts): (1) LIVE_TASK_FAMILY — 8 fixed count-and-positions cells ('strawberry'/r, etc.) whose ground truth expectedAnswerLine() computes in harness code, checked by liveShotPassed() demanding exactly one ANSWER: line byte-equal to it — replacing the old LIVE_PASS_MARKER where the model itself decided when to print 'ALL TESTS PASS
  • Goals it achieves: Makes the live parity measurement honest. The old marker oracle let the coder self-certify, so a 'converged' row measured nothing; now ground truth is computed by the harness and the oracle is shared byte-identically by both arms (the MultishotArmBackend.shotPassed contract at arms.ts:171-173 explicitly requires the same predicate as the graph deliverable). The driver protocol gives the graph arm'
  • Assessment: Good, and in the grain. The design reuses the right primitives instead of inventing: spawn_agent/await_event match the kernel's actual coordination tools (examples/graphs/shot-loop.ts:71-91), maxTurns is a real RunGraphOptions field, instructions ride the existing profile field with the documented append semantics, and the ledger audit reads the same EdgeTraversal rows ParityRecord already exposes
  • Better / existing approach: Searched for existing reusable oracle/task-family machinery: bench (LLM-judge fixtures, corpus-replay), examples/coding-benchmark (held-out test-execution oracle), examples/agentic-data-creation (rubric data-gen), src/ (no ANSWER-style exact oracles), and the agent-eval multishot surface (transport/driver seams only, no verifier lens). None fits the bare-chat no-tools no-third-model constraint, so
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

Replaces the live entry's self-graded marker oracle with a deterministic harness-computed oracle and a reviewer driver protocol that ride existing runtime knobs — the change is coherent, correctly wired, and already exercised by a full live run.

  • Integration: Reachable and already used. The entry is the documented CLI (pnpm tsx examples/p1-parity/run-parity.ts --backend cli-bridge, run-parity.ts:7-11), matching the repo-wide examples convention (examples/README.md:28-30,136-139). The live path is deliberately outside CI gates (header, run-parity.ts:17) while the offline suite still exercises both arms via the seams (parity.test.ts:103-326). Every new
  • Fit with existing patterns: Fits the grain rather than competing. The counting family + harness-computed ground truth implements the doctrine the file itself states (run-parity.ts:113-118: oracle read off the coder's text, never the model judging itself) and directly retires the previous placeholder — the deleted LIVE_PASS_MARKER = 'ALL TESTS PASS' includes-check was self-graded and explicitly labeled 'pending a real verif
  • Real-world viability: Built for the non-happy path. The oracle demands exactly ONE matching ANSWER line (run-parity.ts:148-156), so shotgunned candidates or prose cannot pass; ground truth is loop-computed, never model-claimed. Per-run nonce (run-parity.ts:397) defeats upstream response caches while preserving within-cell input equivalence (same nonce reaches both arms). Missing env fails loud with a complete list (run
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🔎 Heuristic Signals

🟡 Cruft: console debug addedexamples/p1-parity/run-parity.ts

  • console.log('\nparity summary (per cell):')

💰 Value Audit

🟠 Task family never exercises the multi-shot path with the tested model — the regime P1 measures[better-architecture] ``

run-parity.ts:113-118 claims 'shot 1 fails often enough to exercise the multi-shot path'. The PR's own live table contradicts this: all 5 visible graph-arm rows report shotsUsed=1, steering 0x/0B — the deliverable passed on the first spawn every time, so the graph arm's re-brief/steer/early-stop machinery and the arms' divergence behavior were never live-tested. Famous-word cells ('strawberry' most of all) are prime memorization candidates, which plausibly explains uniform shot-1 passes for glm-

🟡 Duplicated task-family bounds guard[maintenance] ``

The identical LIVE_TASK_FAMILY[index] undefined check exists at run-parity.ts:174-179 (inside liveParityCell) and run-parity.ts:411-416 (in main, needed to compute expectedAnswerLine before building the cell). liveParityCell's copy is unreachable from its only caller since main pre-checks. A generated family with no fixed cap dissolves this; otherwise drop the inner guard or have liveParityCell return the task alongside the cell.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

PassWhat it asks
HeuristicVague title? Whitespace-only or cruft-bearing diff? (content signals only)
DuplicationDo added function/class names already exist elsewhere in the repo?
Value AuditWhat does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness AuditDoes it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260815T105745Z

@drewstone

Copy link
Copy Markdown
ContributorAuthor

Disposition on the value-audit concerns (verdict sound-with-nits, head 380dfc2):

  1. Multi-shot regime never exercised live (medium) — agreed, and reported as the open confound on feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 before this audit landed: 8/8 graph cells settled on shot 1, so re-brief/steer/early-stop ran only in the offline suite. The named follow-up is per-shot pass telemetry in the multishot meter plus a harder (non-famous-word) family; tracked under feat(kernel): agent graphs — profiles as nodes, optimizable directives as edges (subsumes the driver/loop/supervisor/multishot families) #694 P1.
  2. console.log flagged as debug cruft (low) — intentional: run-parity.ts is a CLI whose contract is printing paired records; the flagged line is the summary printer, not leftover debugging.
  3. Duplicated bounds guard (weak) — real; the inner guard is unreachable from main. Will fold into the follow-up commit with the per-shot telemetry rather than dismiss this review cycle for a cosmetic.

@drewstone
drewstone merged commit 0e9c17c into mainAug 15, 2026
4 checks passed
@drewstone
drewstone deleted the feat/p1-live-parity branch August 15, 2026 11:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@drewstone@tangletools