Skip to content

feat: claude-sonnet-4.5 agent sweep and trajectory verifiers as spec generation 3 - #87

Open
mmarufov wants to merge 2 commits into
mainfrom
mmarufov/lab-claude-trajectory
Open

mmarufov wants to merge 2 commits into
mainfrom
mmarufov/lab-claude-trajectory

Conversation

@mmarufov

@mmarufov mmarufov commented Oct 1, 2026

Copy link
Copy Markdown
Owner

What this adds

Item 5, the model agent.ts was written for. 18 runs of anthropic/claude-sonnet-4.5 through the AI Gateway, six per budget cell, every run committed including the 12 that proposed nothing.

cell proposed accepted
tight 0 of 6 0 of 6
default 0 of 6 0 of 6
generous-out (larger per-call output cap) 6 of 6 0 of 6

Gateway meter for the 18 runs: $6.46, equal to the per-call costs summed from the traces.

The default model had never once run before this. The gateway refused every Anthropic model on the free tier with a 403, and the earlier sweep switched to kimi-k2 and gpt-4.1 without recording why.

All six Claude proposals were near misses (run 01: 59 of 60 applicable cases). Five fail the same synthetic case, syn-relevant-not-bool, which none of the six agents inspected, though synthetic cases are inspectable.

Item 6, trajectory verifiers, as spec generation 3. Four deterministic predicates over the recorded trace: read before proposing, inside the scope gate, inside budget, proposed once.

  • One rule: a predicate fires on what ran. Requests the harness refused before they took effect are counted separately as observations.
  • What can fire: the call-count budget dimensions, the scope gate and a second proposal cannot fire on executed calls. Total tokens and wall clock (checked after a step) and zero proposals can.
  • Generation 3 sits alongside 1 and 2, and moves no headline. A fixture pins the v1/v2 verdicts of the 39 earlier runs; none changed. EXPERIMENT stays at 2.
  • Each predicate's tests can fail: each was mutated to always-pass and its tests went red.

Over all 49 agent runs:

predicate fired
read-before-propose 0 of 19 applicable
inside-scope-gate 0 of 49
inside-budget 2 of 49: a 300,000-token ceiling overshot to 302,547, and a wall-clock abort landing 7 ms late
proposed-once 35 of 49, all for never proposing

Refused before running, counted apart: 4 runs had a second proposal refused by the one-proposal cap, including both accepted kimi-k2 runs.

npx tsx web/scripts/lab-agent-report.ts reproduces every table from committed files.

Web tests: 274 passed, 1 skipped.

🤖 Generated with Claude Code

mmarufov and others added 2 commits October 1, 2026 16:04
Four deterministic predicates over a recorded InvestigationTrace: a source
excerpt came back before the first proposal, every executed read and write
stayed inside its boundary, executed usage stayed inside the budget the run
was given, and the tool took exactly one proposal.

One rule for all four: a predicate fires on what ran. A request the harness
refused before it took effect (tool schema, tool budget, one-proposal cap)
is counted as an observation, separately. Under that rule the call-count
budget dimensions, the scope gate and a second proposal cannot fire on an
executed call; only total tokens and wall clock, which are checked after a
step, and zero proposals can.

Generation 3 is published alongside 1 and 2 in every artifact. EXPERIMENT
stays at 2, so no headline verdict moves; a fixture pins the v1 and v2
verdicts of all 39 runs from before generation 3, and none changed. A
human-authored candidate has no trace, so its v3 verdict is its v2 verdict.
Each predicate's tests were mutated to always-pass and went red (4 to 5
failures each) before being restored.

lab-agent-report.ts prints the run table, k of n per cell, firings per
predicate, refused requests apart from firings, and gateway-error runs as
infrastructure failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The model agent.ts was written for, exercised for the first time: until
the gateway account had paid credit it refused every Anthropic model with a
free-tier 403, and the earlier sweep switched to other models without
recording why. Six runs per cell, all committed:

  tight         proposed 0 of 6, accepted 0 of 6
  default       proposed 0 of 6, accepted 0 of 6
  generous-out  proposed 6 of 6, accepted 0 of 6

All six proposals were near misses: five fail the same synthetic case,
syn-relevant-not-bool, which none of the six agents inspected. Gateway
meter for the cell set: $6.46, matching the trace sums.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
daily-web Ready Ready Preview Oct 1, 2026 11:18pm UTC

This branch was successfully deployed

1 active deployment
Preview — dabafbf3 Deployed Oct 1, 2026 by vercel[bot]
Sign up for free to 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.

1 participant