feat: add benchmark arm scaffolding (task 0026) #27
Reference in New Issue
Block a user
Delete Branch "task-0026-bench-arm-scaffolding"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Task:
.claude/tasks/0026-bench-arm-scaffolding.mdSummary
Adds
bench/arm.ts, the per-arm scaffolding that produces the singleArmDefinitionthe runner (task 0027) consumes for one cell. Two exports:basePrompt(context)— the identical, task-agnostic base prompt every arm shares, carrying only the repository coordinates, host URL, and token, so it is byte-for-byte identical across arms.buildArm(arm, context, options)— assembles the arm definition: the fully assembled system prompt plus the tool configuration (shellxormcp).The deliberate asymmetries follow the shipped products: the gitea-axi arm embeds the bundled Agent Skill; the tea and raw-api arms get a one-line native-discovery pointer; the gitea-mcp arm runs with the shell disabled and only the MCP server attached (its dispatcher schemas load eagerly). Shell arms' PATH and guard come from
bench/guard.ts(provisionArmBin+guardCommand).Built test-first;
bench/arm.test.tscovers all five acceptance criteria (12 tests). Full suite green (387), bench tier green (63), typecheck clean.Deviations (see the task's Implementation Notes)
shell: null+ a populatedmcp.loadSkillBodystrips the skill's YAML frontmatter, embedding only the instructional body, so gitea-axi is not overcharged for thedescriptionmetadata Claude Code loads ambiently for every skill (honest ambient-cost charging, User Story 4).Review
Risk
Overall: LOW
bench/files plus one README line; nothing outside the excluded harness importsarm.ts.bench/is dev-only and excluded from the published npm package.Standards
No hard violations of a documented standard. The one actionable judgement call — using
import.meta.dirnameinstead of the product's house style (new URL(..., import.meta.url), as insrc/commands/setup.ts) — was addressed in this branch. Remaining items are accepted judgement calls (deliberate independent-oracle duplication in tests; the MCP env map matches the official server's own env contract;skillPath/locateare justified testability seams mirroringguard.ts).Spec
Faithful; AC1/AC2/AC3/AC5 directly implemented. The only remaining gaps are the intentional AC4 deferrals noted above (eager-schema loading and "only the MCP tools" are the runner's SDK responsibility in task 0027) — deferred by design, not missing.