feat: strengthen agent help benchmarks - #1404
Conversation
|
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
|
Review finding (actionable): the new grammar oracle still accepts excess positionals for command readers that silently ignore them. Validation is also incomplete for the changed SkillGym assertions/prompts: the PR reports only |
|
Reviewed and benchmarked at Validation run
That last row closes the second half of the earlier review comment — the four focused SkillGym cases are green with Haiku. Environment note: the SkillGym Findings1. Positional arity — confirmed, and the schema already carries the fixDirect probe of The false-green reproduces end to end: a five-command plan whose only
const schema = getCliCommandOverride(command);
if (!schema?.allowsExtraPositionals &&
positionals.length > (schema?.positionalArgs?.length ?? 0)) -> invalidNo command in the repo (53 total) uses a variadic 2. Runner/API errors are scored as model failuresThis bit the run above. The first {"is_error": true, "result": "API Error: Unable to connect to API: Self-signed certificate detected..."}
This matters more after this PR than before it: 3. A real Haiku regression the reported 12/12 hides
4.
|
e3f086c to
983249c
Compare
|
Addressed in
Regression coverage is 43/43 focused tests. Formatting, typecheck, lint, tooling/build, and fallow are green on the rebased head. The PR validation section now reports the independently verified SkillGym 4/4 result and the Haiku repeat variance (including the 2/3 not-settled case) instead of the earlier opaque 12/12 headline. |
|
Re-reviewed at
One precision note on finding 1
But the literal command from the original review comment still validates:
So the benchmark claim is sound now; I just want the record to be accurate about which change does the work, since a future reader might otherwise assume arity covers it. The residual — a syntactically valid Finding 2 verified too: an all-error group now yields New Haiku run on this headFull nine-case pass: 7/9. Three-trial repeats on the two failures:
New finding: case matchers run on raw text, not tokens
Since Nit:
|
|
Not ready; two P2 validation bypasses remain:
The rest of the scope and production trace is coherent; all current CI is green. No |
|
Addressed every actionable item from the latest reviews in
The scorer and local-help policy were extracted into focused modules while changing them, reducing the benchmark entry point from 846 to 743 lines and the SkillGym suite from 2,807 to 2,743 lines. Validation:
|
|
Re-reviewed 7a91891. Both prior bypasses are fixed: unquoted/escaped CR/LF are rejected while quoted newlines remain valid, and One P2 scorer regression remains: No |
7a91891 to
a93e474
Compare
|
Addressed the remaining P2 on the rebased head in a93e474.
Validation is green: format, typecheck, lint, tooling/build checks, 17-file fallow audit, and the focused benchmark/policy suites (24/24). |
|
Re-reviewed |
…dget #1404 added a benchmark gate requiring every Agent Workflows pointer to stay within the first 30 lines of bare `agent-device help` output. Adding ios-system-ui to that list pushed help macos to line 31. Drop the AGENT_WORKFLOWS entry; the topic stays fully reachable via its cross-references from help physical-device, help workflow's Escalate section, the agent-device skill router, and website/docs/docs/commands.md.
… A) (#1395) * docs: bless the works-today iOS SpringBoard/widget workflow (#1296 PR A) Live probe on iOS 26.2/Xcode 26.2 proved open com.apple.springboard already binds a driveable SpringBoard session with zero code changes: the full widget add/edit/remove flow is selector-driven from a fresh snapshot, aside from two documented coordinate fallbacks. Add a help ios-system-ui topic (and cross-links from physical-device/workflow, the skill router, and docs/commands.md) so agents can use it today, ahead of the --ui-target contract and gallery-capture fix landing. * docs: scope the SpringBoard claim to verified iOS simulator support #1296 explicitly leaves physical-iPhone SpringBoard unverified; the only evidence so far is an iPhone simulator run, whose private-AX fallback is simulator-only. Applied to both the CLI help topic and website/docs/docs/commands.md, with a link to the tracking issue. Dropped the SkillGym case from this PR per thymikee: most of that harness is being removed in #1411, so it's not worth iterating on here. * fix(test): keep help ios-system-ui out of the 30-line first-screen budget #1404 added a benchmark gate requiring every Agent Workflows pointer to stay within the first 30 lines of bare `agent-device help` output. Adding ios-system-ui to that list pushed help macos to line 31. Drop the AGENT_WORKFLOWS entry; the topic stays fully reachable via its cross-references from help physical-device, help workflow's Escalate section, the agent-device skill router, and website/docs/docs/commands.md.
Summary
Improve agent-facing CLI help with a compact, validated starting point and explicit
--settlecommand boundaries.Harden help-conformance research with parser-backed syntax validation, metamorphic cases, repeat trials, infrastructure-error separation, token-based case scoring, and aggregate failure summaries. SkillGym output-interpretation cases now prove that a real local help command was consumed before scoring; permitted wrapper commands cannot satisfy that requirement by themselves.
Scope: 17 files. The work expanded from CLI help and SkillGym prompts into their benchmark oracle and harness; it does not change device runtime behavior.
Validation
origin/mainat56b72c5cf; formatting, typecheck, lint, tooling/build checks, and the 17-file fallow audit are green ona93e4741f.agent-device press label="@react.dev" --settle, and verifies that parsed-token canonicalization still satisfies the semantic matcher.engineering-validate-mode, 3/3 forsettle-diff-is-observation, and 2/3 forsample-output-not-settled-needs-observe.Known boundary: parser-backed validation proves syntax, positional bounds, and interaction grammar, but it cannot prove runtime meaning for intentionally free-form values such as
open <appOrUrl>.