Local Model Benchmarks

Local test machine: Apple M5 Pro · 64 GB unified memoryRun window 29 September — 18 October 202622 recorded runs

12 October 2026 · Agentic task loop · command-line app

Pocket Ledger

Session completed Local run

The orchestrator reached COMPLETE without intervention in 5 h 9 min. All 16 model-planned tasks are done, and the project's verify passes 50 checks. The final reviewer accepted coverage of all 20 requirements, and an independent end-to-end check of the brief's acceptance scenario passed apart from one wording issue.

What was checked

  • Bootstrap was accepted on its first session. The orchestrator validated 20 requirements, 16 task cards, an acyclic dependency graph, full requirement coverage and a deterministic verify (two identical --all results).
  • Each task was accepted only after the orchestrator itself ran verify --all and verify --task <ID> (at least one passing task check) and a fresh reviewer session returned ACCEPT. T002 and T004 were sent back once by their reviewers. T015 was retried because its first attempt added no task check.
  • The T004 attempt-2 reviewer fell into a repetition loop in its reasoning (about 14k output tokens) and wrote no verdict. That task was accepted on verify alone.
  • The T013 builder was aborted at 60 turns. It had finished the code by about turn 25, then alternated rewriting its handover note and counting its lines. Its work passed verify and review.
  • Independent check after the run, outside the orchestrator: import of a two-month CSV with quoted commas, doubled quotes, DD/MM/YYYY dates and "-1,234.56" amounts; dry-run; duplicate skip on re-import; rules and recategorize; budget warning; report with over-budget mark and month-over-month change; undo; export and re-import with no loss; exit code 2 for bad dates, amounts, IDs and options; a corrupt data file reported with exit 1 and left unchanged. All behaved as specified, except that import --dry-run prints "added N" rather than a would-add wording.

Limits of this evidence

The engine and orchestrator settings were tuned only once before this run (enable --thinking, then a 2 GiB prompt cache with --prompt-cache-over-cap). After the run the orchestrator was changed: a windowed repeat-call watchdog, a reviewer retry when no verdict is written, contextBudget 0.65, and softer note-length rules. Later runs use a different configuration and are not repetitions of this one. Memory was not sampled during the run.

Configuration

The model, serving engine and agent used for this execution.

Recorded configuration and setup details
FieldValueDetail
Model · primaryQwen 3.8 27B · primary · reasoning mediumMLX affine 4-bit, group size 64 · 4 bpw
Checkpoint · primaryTensorFold/Qwen3.8-27B-MLX-4bitprimary model artifact · revision 22d8d538154e0e5b6f8dcb1fcc74a60a0798104c
Model · drafterQwen 3.8 27B DFlash2 · drafterLoaded with --drafter-bits 4
Checkpoint · drafterz-lab/Qwen3.8-27B-DFlash2drafter model artifact · revision 50307d4c4cde6860d4eee73e2547cd786fe8e8a4
RuntimeTensorFold native (Zig) 1.0.7 · OpenAI-compatible server, one stream, greedy sampling, DFlash2 drafts, 2 GiB prompt cache above the 70% memory cap modeinference engine and exact build
HarnessPi coding agent, driven by the task-loop orchestrator 1.1.0the agent or client that drove the run
HardwareApple MacBook Pro · 64 GB unified memoryhardware recorded for this execution
WorkloadPocket Ledger · revision 1First real run of the generic task-loop orchestrator (scripts/task-loop.mjs). The orchestrator ran 42 fresh Pi sessions in sequence: bootstrap, builders, fresh-context reviewers, replans and a final reviewer. No human input after launch.
Context window131,072 tokensmaximum context configured for the serving runtime
Repetitions1executions recorded for this workload; one means an indicative result, not an estimate

Inference measurements

Engine-side rates for this run. Each figure states its own statistic; figures from different runs are not interchangeable.

Inference measurements: recorded value and measurement definition
MetricValueDefinition
Draft acceptance33.97 %Total accepted DFlash2 draft tokens / total drafted tokens over matched requests. · n=480 · 250545 accepted of 737625 drafted.

Agent session counters

Agent-wide usage totals. These include reasoning, tool calls and waiting, and are not model decode speed.

Agent session counters: recorded value and measurement definition
MetricValueDefinition
Run elapsed309.2 minOrchestrator start (after preflight) to the run's COMPLETE record; includes all sessions, verify runs, git bookkeeping and review. · n=1
Agent sessions42 sessionsFresh Pi sessions started by the orchestrator: 1 bootstrap, 19 builder, 18 reviewer, 3 replan, 1 final reviewer. · n=1
Sessions stopped by a watchdog1 sessionsSessions aborted by an orchestrator watchdog. · n=1 · T013 builder, turn budget (60 of 40).
Model responses481 responsesAssistant responses with usage records across all 42 sessions. · n=1 · Includes one empty aborted response.
Matched model requests480 requestsSuccessful Pi responses matched monotonically and uniquely to TensorFold done summaries by prompt, cached and output token counts. · n=1 · Four preceding engine summaries belong to preflight probes and are excluded.
Tool calls650 callsPi tool calls across all sessions. · n=1
Context compactions0 compactionsPi context compactions across all sessions. · n=1

Context and token counters

Token totals as reported by the harness or engine. Cached and cumulative figures are not additive with fresh input.

Context and token counters: recorded value and measurement definition
MetricValueDefinition
Maximum prompt context42,457 tokensLargest engine-reported prompt among matched requests. · n=480
Fresh input2,409,139 tokensSum of Pi uncached input counters across all sessions. · n=1
Cached input7,018,644 tokensSum of Pi cache-read counters across all sessions; equals the engine's cached counts for matched requests. · n=1
Cumulative input9,427,783 tokensFresh plus cached input tokens across all sessions. · n=1
Prompt-cache token share74.45 %Cached input tokens / cumulative input tokens over matched requests. · n=480 · The 2 GiB cache logged 1153 evictions and 326 refused states (states above about 25k tokens did not fit).
Output tokens299,741 tokensPi output usage across all sessions; includes reasoning tokens. · n=1
of which reasoning output140,799 tokensPi-reported reasoning tokens included in output tokens. · n=1

Recorded check counters

Counts from the checks recorded with this run.

Recorded check counters: recorded value and measurement definition
MetricValueDefinition
Tasks completed16 tasksTask cards with status done at the end; none split, blocked or dropped. · n=1
Build attempts19 attemptsBuilder sessions across all tasks; 16 tasks needed 19 attempts. · n=1
Reviews returning changes2 reviewsReviewer sessions that returned CHANGES. · n=1
Project checks passing50 checksChecks passed by the project's own ./verify --all at the end. · n=1
Hidden acceptance cases passed19 checksHidden acceptance cases passed, of 19: written from the brief, never shown to the model, and scored the same way for every run. Added after the run. · n=1 · All passed. The cases were checked by planting four faults in a copy of this build; each was caught.
Request records & provenance

Per-request numbers are not published. All 480 successful Pi responses were matched in order to TensorFold summaries (prompt, cached and output tokens), with no ambiguous match. TensorFold 1.0.7 request summaries record no TTFT or decode time, and its cumulative /metrics histograms were not sampled per request during this run, so no latency or throughput figure is given.

Run ID: 2026-10-12-qwen38-27b-tensorfold-native-107-pi-task-loop-pocket-ledger

One execution, with checks transcribed from the retained record. A completed session is not a quality score. Measurement method · All runs