Repository navigation
Keep Stage 1's type line for bare type requests, and assert the cases it decides (closes #3499) - #3505
Conversation
Pragmatic Code Review: PR #3505 (closes #3499)Review TypeInitial review. The PR has no earlier reviews or comments. Requirements Check
The live-model measurements were not reproduced here, because the GPU is in use. I checked them for internal consistency instead:
Plural matching and the new
|
malibio
left a comment
There was a problem hiding this comment.
Automated pragmatic-code-review: APPROVE (posted as a comment — GitHub blocks self-approval). Full findings in the review comment above.
Review addressedAddressed (3):
Skipped (2):
Comment-only changes; Re-Review DecisionNO RE-REVIEW NEEDED. Every change is to comments or docs, there is no logic change, and each one implements the reviewer's own suggested wording. |
eval:routing / eval:decisionsSingle rep each, locked E4B, isolated daemon (
Whether the type line can be involved:
These are single-rep figures, so they're one draw, not a reliability number. |
… it decides (closes #3499) With route_lookup offered, the type line no longer decides any question about records: a question routes as a lookup either way. 28 more requests were measured both ways, four reps per arm, to find what it still decides. Three requests that name a type and nothing else, in a phrase not shaped like a question, clarify without the line and route as a lookup with it: "my projects", "collections" and "the matches" (Match type). One request moves the other way: "open deals" (Deal type) routes without the line and clarifies with it. Two routed after earlier turns by a different tool in each arm, and the other 22 decided alike. So the line stays. The type-line test gains a BareType group that asserts the three cases clarify without the line and route with it, and fails if one of them routes without it, at which point the line's cost is open again. "open deals" is kept as an accepted cost. The doc comments on the test and on stage1_system_prompt now state what the line is for. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… requests - The comments said a bare noun phrase is not put to Stage 1 as a lookup first. That pass runs only with earlier turns, and the test sends none; the cause is that Stage 1 reads a question as a lookup by itself and nothing but the line says a bare noun is a kind of record. - Group::Unrelated's doc now says a case with no expectation is measured and printed but only its query is asserted, which is where the accepted cost 'open deals' sits. - The test doc records the latest run, with the note that both arms ran slower than the earlier run, so arms compare within a run. Skipped: aligning the test's plural rule with production's. It only adds a printed flag for an unasserted bare type case, and no asserted case uses 'match' or 'deal'; revisit if one does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
96ba4e9 to
1856c9c
Compare
Summary
Closes #3499. Decides whether Stage 1's type line still earns its cost now that
route_lookupexists: it does, for a narrower set of requests than it was added for, so it stays and the test is re-aimed at those.With
route_lookupoffered, questions about records route as a lookup whether or not the type is named, so the original 7 known-type cases no longer separate the arms. I measured the three candidate shapes the issue lists, 28 requests, both arms, four reps each, on the locked E4B model:Every rep of every case decided alike. What the line decides now: a request that names a type and nothing else. It isn't shaped like a question, so it isn't put to Stage 1 as a lookup first, and without the line Stage 1 asks whether to list the records or create one. Three gained, one lost, for the same ~11 prompt tokens.
Changes
live_stage1_golden_prompts.rs: newGroup::BareTypewith the three cases. It asserts each one clarifies on every rep without the line and routes on every rep with it. If one starts routing without the line, the test fails and says the line's cost needs asking again. "open deals" is added as an unrelated case with no expectation (accepted cost);MatchandDealare added to the measured workspace's types. The doc comment records the 28-request measurement and states what the line is for.stage1_system_promptdoc comment: the reason for the line is updated to the bare type case. The code is unchanged.prompt-skill-system.mddescribe this outcome.Test results
bun run test:changed(rust, scripts, types:check, node-types:check): pass.eval:routing/eval:decisions: running; results to follow in a comment. The only production change is a doc comment, so one run of each serves as both before and after.🤖 Generated with Claude Code