phase0: dry run — comrak & tokei vendored, 3 attempts in ledger

Target selection (SPEC §6): comrak 0.53.0 (45c1995, BSD-2-Clause) and
tokei 14.0.0 (fa44e51, MIT/Apache-2.0); both CPU-bound with pinned
corpora (progit book 11MB; 8x replicated pinned trees, 221MB) and
committed MANIFEST.sha256 + golden-output pins + regen scripts.

Calibration: A/A null verdicts on both real workloads; taskset -c 2
pinning tightens the A/A CI from [0.938, 1.008] to [0.993, 1.008],
making the 2% accept threshold meaningful in this container.

Profiles (callgrind; perf unavailable): comrak allocator symbols 26.7%
of Ir; tokei perform_multi_line_analysis 31.7%.

Attempts (ledger + results/phase0/):
- comrak class-1 target-cpu=native: null [0.983, 1.011], rejected-bench
- comrak class-2 mimalloc swap: +4.6% [1.033, 1.058], 848 upstream
  tests green, golden byte-identical, ASan-proper clean; LSan flags
  484B in onig (reachability false-positive analysis in case study) ->
  needs-human-review per SPEC §8
- tokei class-1 fat LTO+cgu=1: +1.6% [1.003, 1.026], real but under
  the 2% bar, rejected-bench

Also: ledger-cli for manual rows, targets/ excluded from trust-layer
workspace, corpora/build artifacts gitignored, case study written.
Phase 0 exit criteria (>=10% verified win) not yet met; next
hypotheses logged in results/phase0/attempts.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EcKPWQ3MQD4NdEHwar96u2
This commit is contained in:
Claude
2026-07-06 19:28:50 +00:00
parent 1ef2bb4fdb
commit 7c3c59f5f8
26 changed files with 1001 additions and 2 deletions
+27
View File
@@ -0,0 +1,27 @@
//! Manual ledger entry for Phase 0 dry runs: reads one JSON `Attempt`
//! from stdin, appends it, prints the running count. The DB is
//! append-only (triggers); there is deliberately no edit or delete
//! subcommand to grow here.
use ledger::{Attempt, Ledger};
use std::io::Read;
use std::path::PathBuf;
fn main() -> anyhow::Result<()> {
let db = std::env::args()
.nth(1)
.map(PathBuf::from)
.unwrap_or_else(|| PathBuf::from("results/ledger.sqlite"));
let mut raw = String::new();
std::io::stdin().read_to_string(&mut raw)?;
let attempt: Attempt = serde_json::from_str(&raw)?;
let ledger = Ledger::open(&db)?;
ledger.record(&attempt)?;
println!(
"recorded {} verdict={} ({} attempts total)",
attempt.run_id,
attempt.verdict.as_str(),
ledger.count()?
);
Ok(())
}