Benchmarks and quality gates
ash optimizes total token cost, latency, and recoverability for completed Coding Agent tasks. Every number must come from reproducible corpora, pinned tools, and reports committed with the source.
Format baseline
The report pins corpus SHA-256, tokenizer, source bytes, tokens, ratio, and gate. Current ASON uses about 62% of compact row JSON tokens under both tokenizers; the regression ceiling is 65%.
The same report compares all six retained-result formulas. Canonical / # ? - | >
uses 80 tokens in both tokenizers, matching the direct ASCII-letter floor; direct
Greek uses 86/86 and the former wrapper uses 97/98. The canonical form is 84% of
the wrapper bytes and 83%/82% of its tokens.
The report also calls the production ×N repeated-line reducer directly. It
projects 8,192 deterministic diagnostic lines into 128 lines at about 1% of the
source bytes and tokens under both tokenizers; the checked ceiling is 5%. The
projection reduces context while a result reference preserves the exact source.
An independent ×N#K block gate repeats 32 six-line blocks 64 times each. It
projects 12,288 retained lines into 224 lines at about 2% of the source bytes
and tokens under both tokenizers, below the same 5% ceiling.
The ⋯N failure-diagnostic gate places 32 error anchors into 8,192 unique
lines. Fixed edge and [-2, +6] windows project them into 325 lines at about 4%
of source bytes and tokens under both tokenizers, below the same 5% ceiling.
Every omitted line remains available through the exact stream reference.
Multicore determinism
Schema 14 contains twenty-two scenarios. Fifteen end-to-end paths cover recursive
directory traversal, literal search, regular-expression search, BLAKE3
snapshot, disk spill/fetch, paired disk I/O with idle and fully occupied compute,
fresh ash run startup, empty child spawn,
three dual-pipe capture profiles, process-tree cancellation, warm framed RPC dispatch, and
| column projection over retained ASON. Structured projection reads and
decodes a 16,384-row source table, then selects six columns in stable order on
the configured Rayon pool; every worker count must emit identical rows and
canonical bytes. Four isolated primitives measure 4,096 hot lookups in a
1,024-entry path dictionary plus DAG validation and scheduling at 64, 256, and
1,024 nodes. Three multicore reducer scenarios arrange separate 131,072-line
fixtures as consecutive 512-line runs, eight-line blocks repeated 64 times, and
sparse failure diagnostics. Every worker setting must produce identical ×N,
×N#K, and ⋯N text and counts. Block search verifies exact bytes before
omission; diagnostic classification keeps source-ordered fixed windows. List and search split
the fixture into disjoint roots so traversal
and scanning enter the bounded worker pool. Listing reports item throughput
without inventing content-byte throughput. Matrix paths run at 1, 2, 4, 8, and
host-available worker counts. Dictionary and DAG primitives use one caller and
have null scaling fields. Each cold observation starts and reaps the real
same-profile binary. Warm dispatch keeps one production RPC session alive and
excludes only its handshake. Changed canonical evidence fails the report; the
intentionally equivalent literal and regex queries must also emit the same
result. Timing remains host-local.
All three capture profiles write 8 MiB to each of stdout and stderr and verify
the final 64 KiB of each disk-backed retained value. steady writes consecutive
16 KiB chunks. fragmented cycles through
[1, 7, 31, 257, 4093, 16384, 65521] and flushes each write. bursty cycles
through [512, 4096, 16384, 65536], then flushes and pauses for 2,000
microseconds at every 256 KiB boundary. The report carries these parameters and
a profile-descriptor digest; the compiled fixture must describe the same
configuration before timing begins.
io-spill-idle-compute and io-spill-saturated-compute consume the same 8 MiB
input and time only zero-memory-ceiling asynchronous writes plus the final
flush. The saturated side keeps every Rayon worker inside an integer workload
and proves all workers remain active when I/O completes. Only then does it stop
the load, compute BLAKE3, and verify the same 64 KiB tail. Sample order alternates;
the report emits a saturated/idle p50 ratio per worker configuration without a
cross-host threshold.
ASH/native-shell task corpus
Seven small contracts cover search, diagnostic aggregation, exact patching, recursive listing, ordered multi-file reading, a guarded file transaction, and an independent batch graph. Each starts twice from the same locked visible tree: once in the current platform's native shell and once as typed requests through the production ASH session.
The schema-2 report verifies semantic output and final state. Native cost is the
objective plus command, stdout, and stderr; ASH cost is the same objective plus
every canonical ASON request and response. Requests and responses carry stable
per-step and transcript hashes. The plans are hand-authored, so the report marks
itself deterministic-tool-plan and agent_results: false. It is protocol
accounting, not a model score or a Token-reduction claim; on these tiny tasks,
structured metadata and digest safety are visible overhead. The embedded
session handshake is not tokenized; a future model report must add amortized
primer and format-instruction cost.
Real Agent traces
The repository now defines a strict paired trace format. Every repetition must run ASH and the native shell with the same model, seed, and task order while recording the driver digest, model revision, primers, sampling settings, provider usage, and SHA-256 of every tool result.
Replay starts from isolated copies of the locked fixtures. Model-selected ASON
requests enter the production ExecutionSession; native scripts execute only
after explicit operator authorization. Every result digest is checked before
the semantic answer, expected files, and complete visible tree are verified.
The primary total is provider input plus visible output: cached input remains
charged, hidden reasoning is reported separately and excluded. Two pinned
tokenizers also count primers, objectives, requests, tool results, and final
answers. Failed tasks remain in the report.
Replay proves internal consistency, not provider identity. Reports therefore
carry provenance: external-self-attested-trace and
provider_attestation_verified: false; published results must also include the
adapter digest and any available provider-side audit evidence.
This is trace-validation and replay infrastructure. The repository does not yet publish a real-model score and never relabels a deterministic plan as one.
Current automation
- Rust unit and integration suites across every workspace crate.
cargo checkand tests on Linux, macOS, and Windows.- Real release builds exercised by all three platform installers.
- Fifteen end-to-end runtime paths, three multicore output reducers, hot path-dictionary lookup, and three-size DAG scheduling evidence.
- Seven locked tasks with production ASH traces and Linux, macOS, and Windows native-shell baselines.
- Strict paired model-trace schema, provider Token accounting, result-digest checks, and final-tree replay.
- Twice-weekly AddressSanitizer targets for ASON, bounded ASH/1 frames and typed requests, arbitrary update metadata, and validly signed update decisions. Every run continues a bounded corpus and retains a source-bound summary, raw log, final corpus, findings, and artifact digest for 90 days.
- Thirty real file-transaction forward crash cutpoints, twelve recovery re-entry cutpoints, exhaustive four-node DAG propagation, update activation/recovery, and cancellation race tests.
- A locked third-party license inventory.
Evidence still required for release
The first supported version still needs captured and published real Agent-task results, sustained fuzz-duration records, hardware-labelled latency and throughput reports, and a six-target install/update/rollback run with production credentials.