Handwork harness efficiency: paired results

Model: gpt-6-astra; effort: low; 2 attempts per variant per task; 600-second wall budget.

Both variants are native ReleaseFast builds. Runs are serial and alternate variant order. Every attempt is retained. These are small local fixtures, not public leaderboard scores.

Development

TaskPassed baseline → candidateMedian successful secondsMean input tokensMean output tokensMean model requestsMedian agent MiB
pagination2/2 → 2/228.3 → 27.231345.5 → 25642.0522.5 → 538.05.0 → 4.023.3 → 21.4
search2/2 → 2/246.7 → 44.246906.5 → 36975.51061.0 → 940.06.5 → 5.026.2 → 23.6
tenant-cache2/2 → 2/280.4 → 90.870946.0 → 82053.52021.5 → 2290.58.0 → 8.028.5 → 28.8

Across all attempts in this split: duration_s +4.3%, input_tokens -3.0%, output_tokens +4.5%, model_requests -12.8%, tool_calls -5.0%.

Held Out

TaskPassed baseline → candidateMedian successful secondsMean input tokensMean output tokensMean model requestsMedian agent MiB
ledger2/2 → 2/259.9 → 51.946864.5 → 27598.01383.5 → 1379.07.0 → 4.026.7 → 22.1
queue2/2 → 2/252.4 → 43.355438.5 → 33201.51070.0 → 1069.58.5 → 5.028.7 → 23.6
stream2/2 → 2/255.2 → 48.246739.0 → 34209.51234.5 → 1210.07.0 → 5.026.6 → 23.5

Across all attempts in this split: duration_s -14.4%, input_tokens -36.3%, output_tokens -0.8%, model_requests -37.8%, tool_calls -25.5%.

Diagnostics

Candidate request-composition events: 62. Duplicate-result bytes removed across request projections: 0. Repeated-failure hints: 0.

Mean bytes per candidate request (diagnostic categories, not tokens):

  • instruction_bytes: 9,311
  • conversation_bytes: 818
  • tool_result_bytes: 10,188
  • tool_argument_bytes: 1,568
  • replay_bytes: 892
  • schema_json_bytes: 16,106
  • wire_bytes: 40,584

Integrity and limits

  • Existing tests, private behavioral checks, protected files, and time budget all count toward success. All token totals include failed attempts.
  • Broken/known-correct control outcomes are saved beside the results. Fixture and verifier hashes and frozen executable hashes are recorded in state.json.
  • Development and held-out tasks are reported separately. No runtime tuning follows held-out results.
  • Two pairs per task cannot establish a general speed advantage. Completion times include inference and network variability. The six tasks do not cover large repositories, multiple languages, or multi-hour sessions.
  • Byte accounting is not provider tokenization; input includes cache hits. Memory measures local agent RSS, excluding hosted inference; tool/test subprocess memory is recorded separately.
  • No dollar-cost comparison, competitor rerun, official SWE-bench/Terminal-Bench score, or 20% speed guarantee is claimed. Docker preflight was unavailable.
  • Both variants inherit the existing personal Handwork context and load the unslop skill; this is not a pristine-profile evaluation. Available global context hashes were sampled during the run in observed-global-context-hashes.json; a later match does not prove no earlier changes. The sandbox reports inaccessible compatibility skill roots for both variants.
  • Candidate-only detailed tracing adds measurement overhead. Both variants enable the existing agent trace stream.

Acceptance target

Target: at least 20% lower total completion time for the equally repeated task mix, all candidate attempts correct, and neither input nor output tokens increasing. This descriptive pilot threshold is not a significance test.

  • development: not met.
  • held_out: not met.

Per-task regression checks use all-attempt token means and matched-success timing:

  • ledger: no observed regression on these checks.
  • pagination: output_tokens increased.
  • queue: no observed regression on these checks.
  • search: no observed regression on these checks.
  • stream: no observed regression on these checks.
  • tenant-cache: input_tokens increased; output_tokens increased; matched-success median time increased.

Failed attempts: none.