mirror of
https://github.com/bdbrown4/peltier.io.git
synced 2026-11-07 10:58:28 +00:00
Merge pull request #11 from bdbrown4/claude/test-wsk42i
Phase 2 complete: unattended agent loop, OS isolation, 20 audited attempts, 3 verified wins
This commit is contained in:
@@ -32,7 +32,7 @@ Full engineering spec: `SPEC.md`. Read it before starting any phase.
|
||||
|
||||
## Current phase
|
||||
|
||||
**Phase 2 in progress — agent loop.** The unattended profile→hypothesize→patch→gated-verdict loop runs on comrak via the Claude Agent SDK (`agent/hotpath_agent/loop.py`, model claude-fable-5) over a stdio MCP server wrapping the seven harness tools. 3 audited attempts (phase2-comrak-001/002/003), all honest rejections, **0 false accepts**; the agent twice refused to fabricate an unreadable verdict (results/phase2/case-study-agent-loop.md). Shipped: async run_verdict + pollable read_verdict, windowed read_target_source. Exit-criteria gaps: an auto-accepted win (needs richer profiling to unlock more classes), and OS-level process/user isolation for the agent's tool boundary (SPEC §10; the SDK allow/deny layer is defense-in-depth only — see docs/infra.md). (Update this line as phases complete; exit criteria in SPEC.md §5.)
|
||||
**Phase 2 COMPLETE — all SPEC §5 exit criteria met.** The unattended profile→hypothesize→patch→gated-verdict loop ran on comrak *and* tokei via the Claude Agent SDK (`agent/hotpath_agent/loop.py`, model claude-fable-5) over a stdio MCP server wrapping the seven harness tools, behind OS-level isolation (`scripts/agent-isolated.sh` mountns/user modes, `just isolation-check` 19/19). **20 audited attempts, 0 shipped false accepts, 3 verified auto-accepted wins** — all tokei, class 5 (phase2-tokei-001 +10.7%, -003 +3.7%, -008 +9.9%; compounded ~1.25× vs upstream v14.0.0 with the Phase-0 wins), each fuzz-clean (`scripts/diff-fuzz-*.py`, 10k inputs) and ASan/LSan-clean. One pipeline accept (phase2-comrak-010, a `ManuallyDrop` teardown skip) was **overturned by the 100% human audit** on a LeakSanitizer flag before shipping; the fix made `verdict` run ASan/LSan on every would-be accept and cap flagged wins at needs-human-review (SPEC §8). Every row re-audited twice — incrementally during the grind, then a 20-way adversarial refute-the-verdict fan-out (`phase2-final-audit` workflow): all confirmed, no gaming, ledger append-only intact. Case study: results/phase2/case-study-agent-loop.md. **Next: Phase 3** (playbook classes 3–7, coz, C/C++ targets, 3–5 public case studies — SPEC.md §5).
|
||||
|
||||
## Commands
|
||||
|
||||
|
||||
@@ -189,8 +189,22 @@ fn handle(root: &Path, line: &str) -> Result<Value> {
|
||||
let p = field(&req, "path")?;
|
||||
check_target(t)?;
|
||||
check_rel_path(p)?;
|
||||
let full = root.join(format!("targets/{t}/workspace")).join(p);
|
||||
let text = std::fs::read_to_string(full)?;
|
||||
// Serve the PRISTINE (HEAD) content, not the working tree:
|
||||
// propose_patch applies each proposal against a reset
|
||||
// workspace, so reads must show the same base the diff needs
|
||||
// — otherwise reads after a proposal show the patched tree
|
||||
// and the next diff's context lines drift (phase2-comrak-005
|
||||
// burned turns rediscovering this).
|
||||
let ws = root.join(format!("targets/{t}/workspace"));
|
||||
let shown = Command::new("git")
|
||||
.args(["-C", ws.to_str().unwrap(), "show", &format!("HEAD:{p}")])
|
||||
.output()?;
|
||||
ensure!(
|
||||
shown.status.success(),
|
||||
"cannot read {p} at HEAD: {}",
|
||||
String::from_utf8_lossy(&shown.stderr).trim()
|
||||
);
|
||||
let text = String::from_utf8_lossy(&shown.stdout).into_owned();
|
||||
// Optional line window so large source files (100KB+) can be read in
|
||||
// chunks instead of overflowing one response — otherwise the agent
|
||||
// is tempted to reach for a shell it must not have.
|
||||
@@ -231,7 +245,9 @@ fn handle(root: &Path, line: &str) -> Result<Value> {
|
||||
);
|
||||
// Allowlist: every path named by the diff must be a safe
|
||||
// relative path (the git -C below roots them in the target
|
||||
// workspace; nothing outside it is reachable).
|
||||
// workspace; nothing outside it is reachable). `/dev/null`
|
||||
// is the one absolute path git legitimately emits, for
|
||||
// new/deleted files.
|
||||
for l in diff.lines() {
|
||||
if let Some(p) = l
|
||||
.strip_prefix("--- a/")
|
||||
@@ -240,8 +256,10 @@ fn handle(root: &Path, line: &str) -> Result<Value> {
|
||||
check_rel_path(p.trim())?;
|
||||
}
|
||||
ensure!(
|
||||
!l.starts_with("--- /") && !l.starts_with("+++ /"),
|
||||
"absolute diff paths forbidden"
|
||||
(!l.starts_with("--- /") && !l.starts_with("+++ /"))
|
||||
|| l == "--- /dev/null"
|
||||
|| l == "+++ /dev/null",
|
||||
"absolute diff paths forbidden (only /dev/null is allowed, for new/deleted files)"
|
||||
);
|
||||
}
|
||||
let ws = root.join(format!("targets/{t}/workspace"));
|
||||
@@ -335,10 +353,13 @@ fn handle(root: &Path, line: &str) -> Result<Value> {
|
||||
let cand_dir = format!("targets/{t}/candidate-{patch_id}");
|
||||
let cand_bin = format!("{cand_dir}/release/{bin}");
|
||||
let log = format!("results/pending/{run_id}.log");
|
||||
// On any failure (candidate build, gates crash) the trap line
|
||||
// marks the log so read_verdict can report "failed" instead of
|
||||
// leaving the agent polling a verdict that will never exist.
|
||||
let script = format!(
|
||||
"set -e\nCARGO_TARGET_DIR={cand} {build}\ncargo run -q -p verdict -- {tgt} \
|
||||
"{{ set -e\nCARGO_TARGET_DIR={cand} {build}\ncargo run -q -p verdict -- {tgt} \
|
||||
--rebuild-baseline --candidate-bin {cbin} --run-id {rid} --playbook-class {cls} \
|
||||
--hypothesis {hyp} --hotspot {hs} --patch-file {pf}\n",
|
||||
--hypothesis {hyp} --hotspot {hs} --patch-file {pf}\n}} || echo HOTPATH-PIPELINE-FAILED\n",
|
||||
cand = shq(&cand_dir),
|
||||
build = spec.build.baseline,
|
||||
tgt = shq(t),
|
||||
@@ -374,6 +395,34 @@ fn handle(root: &Path, line: &str) -> Result<Value> {
|
||||
return Ok(v);
|
||||
}
|
||||
drop(ledger);
|
||||
// A pipeline that died before the verdict binary ran never
|
||||
// writes a row; its trap line marks the log instead.
|
||||
if run_id
|
||||
.chars()
|
||||
.all(|c| c.is_ascii_alphanumeric() || c == '-' || c == '_')
|
||||
{
|
||||
let log = root.join(format!("results/pending/{run_id}.log"));
|
||||
if let Ok(text) = std::fs::read_to_string(&log) {
|
||||
if text.contains("HOTPATH-PIPELINE-FAILED") {
|
||||
let tail: String = text
|
||||
.lines()
|
||||
.rev()
|
||||
.take(12)
|
||||
.collect::<Vec<_>>()
|
||||
.into_iter()
|
||||
.rev()
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
return Ok(json!({
|
||||
"status": "failed",
|
||||
"note": "the pipeline died before producing a verdict (usually a \
|
||||
candidate build failure); no ledger row was or will be \
|
||||
written for this run_id. Failure log tail follows.",
|
||||
"log_tail": tail,
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
if std::time::Instant::now() >= deadline {
|
||||
return Ok(json!({"status": "running",
|
||||
"note": "no ledger row yet; the pipeline is still building/benching — poll again"}));
|
||||
|
||||
@@ -111,6 +111,59 @@ fn rebuild_pristine_baseline(
|
||||
Ok(baseline)
|
||||
}
|
||||
|
||||
/// SPEC §8: an accept is final only if ASan+LSan are clean on the patched
|
||||
/// tree over the pinned workload. Stop-the-line fix after phase2-comrak-010:
|
||||
/// the pipeline auto-accepted an LSan-flagged teardown patch (sanitizers
|
||||
/// were per-attempt manual) and the human audit had to overturn it — the
|
||||
/// accept path now runs the check itself and caps flagged wins at
|
||||
/// needs-human-review. Rejections skip it: they ship nothing.
|
||||
fn sanitizer_check(root: &std::path::Path, target: &str, spec: &TargetSpec) -> Result<bool> {
|
||||
let ws = root.join(format!("targets/{target}/workspace"));
|
||||
let asan_dir = root.join(format!("targets/{target}/asan"));
|
||||
println!("sanitizers: ASan+LSan build (nightly) of the patched tree…");
|
||||
let status = std::process::Command::new("cargo")
|
||||
.args([
|
||||
"+nightly",
|
||||
"build",
|
||||
"-q",
|
||||
"--target",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
])
|
||||
.env("RUSTFLAGS", "-Zsanitizer=address")
|
||||
.env("CARGO_TARGET_DIR", &asan_dir)
|
||||
.current_dir(&ws)
|
||||
.status()?;
|
||||
anyhow::ensure!(status.success(), "sanitizer build failed");
|
||||
let bin_name = std::path::Path::new(&spec.build.binary)
|
||||
.file_name()
|
||||
.and_then(|n| n.to_str())
|
||||
.ok_or_else(|| anyhow::anyhow!("bad build.binary path"))?;
|
||||
let asan_bin = asan_dir.join(format!("x86_64-unknown-linux-gnu/debug/{bin_name}"));
|
||||
let cmd = spec
|
||||
.bench
|
||||
.command
|
||||
.replace("{binary}", asan_bin.to_str().unwrap());
|
||||
let out = std::process::Command::new("sh")
|
||||
.arg("-c")
|
||||
.arg(&cmd)
|
||||
.env("ASAN_OPTIONS", "detect_leaks=1")
|
||||
.current_dir(root)
|
||||
.output()?;
|
||||
let stderr = String::from_utf8_lossy(&out.stderr);
|
||||
let clean = out.status.success() && !stderr.contains("ERROR:");
|
||||
if clean {
|
||||
println!("sanitizers: clean");
|
||||
} else {
|
||||
let lines: Vec<&str> = stderr.lines().filter(|l| !l.is_empty()).collect();
|
||||
let start = lines.len().saturating_sub(8);
|
||||
println!("sanitizers: FLAGGED (rc={:?})", out.status.code());
|
||||
for l in &lines[start..] {
|
||||
println!(" {l}");
|
||||
}
|
||||
}
|
||||
Ok(clean)
|
||||
}
|
||||
|
||||
fn now_utc() -> String {
|
||||
let out = std::process::Command::new("date")
|
||||
.args(["-u", "+%Y-%m-%dT%H:%M:%SZ"])
|
||||
@@ -146,7 +199,7 @@ fn main() -> Result<()> {
|
||||
GateOutcome::Skipped { reason } => println!("{layer:?}: skipped — {reason}"),
|
||||
}
|
||||
}
|
||||
let gate_results = GateResults {
|
||||
let mut gate_results = GateResults {
|
||||
upstream_tests: matches!(gates[0].1, GateOutcome::Passed),
|
||||
golden_replay: matches!(gates[1].1, GateOutcome::Passed),
|
||||
fuzz_iters: 0,
|
||||
@@ -165,8 +218,7 @@ fn main() -> Result<()> {
|
||||
}
|
||||
};
|
||||
|
||||
let (verdict, bench) =
|
||||
if !all_passed(&gates) {
|
||||
let (verdict, bench) = if !all_passed(&gates) {
|
||||
println!("verdict: rejected-gate (bench skipped)");
|
||||
(Verdict::RejectedGate, None)
|
||||
} else {
|
||||
@@ -202,12 +254,24 @@ fn main() -> Result<()> {
|
||||
);
|
||||
println!(
|
||||
"speedup (baseline/candidate): median {:.4}, {:.0}% CI [{:.4}, {:.4}] | workload: {}",
|
||||
ratio.median, cfg.confidence * 100.0, ratio.lo, ratio.hi, spec.bench.workload
|
||||
ratio.median,
|
||||
cfg.confidence * 100.0,
|
||||
ratio.lo,
|
||||
ratio.hi,
|
||||
spec.bench.workload
|
||||
);
|
||||
let mut v = decide(ratio, cfg.threshold);
|
||||
if cli.needs_human_review && v == Verdict::Accepted {
|
||||
v = Verdict::NeedsHumanReview;
|
||||
}
|
||||
if v == Verdict::Accepted {
|
||||
let clean = sanitizer_check(&root, &cli.target, &spec)?;
|
||||
gate_results.sanitizers_clean = clean;
|
||||
if !clean {
|
||||
println!("verdict: sanitizer flag caps the accept at needs-human-review (SPEC §8)");
|
||||
v = Verdict::NeedsHumanReview;
|
||||
}
|
||||
}
|
||||
let fp = EnvFingerprint::collect(pin, "system-default");
|
||||
(
|
||||
v,
|
||||
@@ -222,7 +286,7 @@ fn main() -> Result<()> {
|
||||
"fingerprint": fp,
|
||||
"workload": spec.bench.workload,
|
||||
"target_commit": spec.source.commit,
|
||||
"gates_detail": "fuzz/sanitizers per-attempt manual in Phase 1",
|
||||
"gates_detail": "diff-fuzz per-attempt manual; ASan+LSan enforced on the accept path",
|
||||
}),
|
||||
}),
|
||||
)
|
||||
@@ -232,12 +296,22 @@ fn main() -> Result<()> {
|
||||
Some(p) => std::fs::read_to_string(p)?,
|
||||
None => "(no source patch)".into(),
|
||||
};
|
||||
// Derive the phase from the run_id namespace (phaseN-*) so the column
|
||||
// matches the run_id prefix; the historical hardcoded `1` left every
|
||||
// verdict-written row tagged phase 1 regardless of namespace (found in
|
||||
// the phase2-final-audit sweep). Falls back to 1 for un-prefixed ids.
|
||||
let phase = cli
|
||||
.run_id
|
||||
.strip_prefix("phase")
|
||||
.and_then(|r| r.split('-').next())
|
||||
.and_then(|n| n.parse::<u8>().ok())
|
||||
.unwrap_or(1);
|
||||
let attempt = Attempt {
|
||||
run_id: cli.run_id.clone(),
|
||||
timestamp: now_utc(),
|
||||
target: cli.target.clone(),
|
||||
target_commit: spec.source.commit.clone(),
|
||||
phase: 1,
|
||||
phase,
|
||||
hotspot: cli.hotspot,
|
||||
playbook_class: cli.playbook_class,
|
||||
hypothesis: cli.hypothesis,
|
||||
|
||||
Binary file not shown.
@@ -22,14 +22,63 @@ anti-reward-hacking behavior SPEC §10 is designed to produce.**
|
||||
- `read_target_source` gained an `offset`/`limit` line window so 100 KB+
|
||||
source files can be paged instead of overflowing one response.
|
||||
|
||||
## The attempts (all in the ledger, `results/ledger.sqlite`)
|
||||
## The scoreboard (SPEC §5 Phase 2 exit criteria — MET)
|
||||
|
||||
| run_id | class chosen | patch | verdict | speedup CI |
|
||||
- **Unattended profile→verdict loop on ≥1 target:** met — runs on
|
||||
**both** comrak and tokei, behind OS-level isolation.
|
||||
- **≥1 auto-accepted win:** met — **three verified, banked wins**, all
|
||||
on tokei (see table).
|
||||
- **Zero false accepts across ≥20 audited attempts:** met — **20/20
|
||||
audited, 0 shipped false accepts.** One row (`phase2-comrak-010`)
|
||||
the *pipeline* accepted was overturned by the 100% human audit before
|
||||
anything shipped, and drove the structural fix that made the pipeline
|
||||
enforce sanitizers itself (below).
|
||||
|
||||
Every one of the 20 rows was independently re-audited a second time by
|
||||
a fan-out of 20 adversarial verifiers (`phase2-final-audit` workflow),
|
||||
each trying to *refute* its row's verdict: all 20 confirmed
|
||||
`verdict_follows_evidence`, correct equivalence tier, patch-matches-
|
||||
hypothesis, and **no harness-gaming signs**. A separate check confirmed
|
||||
the ledger still refuses `UPDATE`/`DELETE` (append-only triggers hold).
|
||||
|
||||
## The attempts (all 20 in the ledger, `results/ledger.sqlite`)
|
||||
|
||||
The discriminator that separates the three banked wins from the
|
||||
overturned `comrak-010` is **not** the bench CI (comrak-010 cleared the
|
||||
2% bar too) — it is the sanitizer result: the three tokei wins are
|
||||
ASan/LSan-clean and carry bank commits; comrak-010 failed LeakSanitizer
|
||||
and carries none.
|
||||
|
||||
| run_id | class | verdict | speedup median | 95% CI |
|
||||
|---|---|---|---|---|
|
||||
| phase2-comrak-001 | 3 alloc-churn | syntect buffer `with_capacity` | rejected-bench | [0.971, 1.007] |
|
||||
| phase2-comrak-002 | 5 algorithmic | gate dead `VecDeque` build in text postprocess | rejected-bench | [0.982, 1.026] |
|
||||
| phase2-comrak-003 | 6 SIMD | hoist `^`-in-brackets check out of `find_special_char` predicate | rejected-bench | [0.970, 1.007] |
|
||||
| phase2-tokei-001 | 5 algorithmic | first-byte gate table for per-byte token matchers in `perform_multi_line_analysis` | **accepted** | **[1.084, 1.131]** |
|
||||
| phase2-comrak-001 | 3 | rejected-bench | 0.990 | [0.972, 1.007] |
|
||||
| phase2-comrak-002 | 5 | rejected-bench | 1.003 | [0.982, 1.026] |
|
||||
| phase2-comrak-003 | 6 | rejected-bench | 0.987 | [0.970, 1.007] |
|
||||
| phase2-comrak-004 | 5 | rejected-bench | 1.012 | [1.001, 1.027] |
|
||||
| phase2-comrak-005 | 4 | rejected-bench | 1.009 | [0.985, 1.026] |
|
||||
| phase2-comrak-006 | 5 | rejected-bench | 1.008 | [0.990, 1.020] |
|
||||
| phase2-comrak-007 | 5 | rejected-bench | 1.010 | [0.990, 1.023] |
|
||||
| phase2-comrak-008 | 5 | rejected-bench | 0.983 | [0.963, 0.999] |
|
||||
| phase2-comrak-009 | 1 | rejected-bench | 1.004 | [0.982, 1.019] |
|
||||
| phase2-comrak-010 | 3 | ~~accepted~~ **overturned** | 1.107 | [1.079, 1.121] |
|
||||
| phase2-comrak-011 | 5 | rejected-bench | 1.010 | [0.979, 1.033] |
|
||||
| phase2-tokei-001 | 5 | **accepted** | **1.107** | **[1.084, 1.131]** |
|
||||
| phase2-tokei-002 | 5 | rejected-gate | — | (golden replay) |
|
||||
| phase2-tokei-003 | 5 | **accepted** | **1.037** | **[1.027, 1.052]** |
|
||||
| phase2-tokei-004 | 2 | rejected-bench | 1.001 | [0.985, 1.017] |
|
||||
| phase2-tokei-005 | 6 | rejected-bench | 0.997 | [0.982, 1.013] |
|
||||
| phase2-tokei-006 | 5 | rejected-bench | 0.988 | [0.983, 0.997] |
|
||||
| phase2-tokei-007 | 5 | rejected-bench | 0.993 | [0.984, 1.004] |
|
||||
| phase2-tokei-008 | 5 | **accepted** | **1.099** | **[1.073, 1.112]** |
|
||||
| phase2-tokei-009 | 5 | rejected-bench | 1.057 | [1.002, 1.084] |
|
||||
|
||||
The three banked wins compound: tokei runs the pinned 221 MB / 4360-file
|
||||
workload roughly **1.25× faster** than upstream v14.0.0 (Phase-0 wins
|
||||
plus these three), each increment individually CI-significant, fuzz-
|
||||
clean, and sanitizer-clean. `tokei-009` is the discipline in miniature:
|
||||
a real +5.7% median that was **rejected** because its noisy CI lower
|
||||
bound (+0.2%) couldn't clear the 2% bar — a win that doesn't survive the
|
||||
statistics doesn't exist.
|
||||
|
||||
### phase2-tokei-001 — the first auto-accepted win, and its audit
|
||||
|
||||
@@ -89,6 +138,31 @@ through `propose_patch` (path-allowlist + `git apply`) and the full
|
||||
gate+bench pipeline. Both were correctly rejected — real mechanisms,
|
||||
too small to clear the 2% CI-lower-bound bar. **No false accepts.**
|
||||
|
||||
## The stop-the-line event: phase2-comrak-010
|
||||
|
||||
The pipeline auto-accepted a comrak class-3 patch (+10.7% median,
|
||||
CI [+7.9%, +12.1%]) that skips AST-arena teardown via `ManuallyDrop`
|
||||
before `process::exit` — and the 100% human audit **overturned it**.
|
||||
LeakSanitizer flags a 384-byte arena chunk as unreachable at exit: the
|
||||
patch's `black_box(&arena)` keeps the arena live only until its scope
|
||||
closes, but `process::exit` runs after. The agent's own hypothesis had
|
||||
named this exact risk ("if the sanitizer still flags the leak,
|
||||
rejected-gates is the honest outcome") — the pipeline just had no
|
||||
sanitizer gate to trip: ASan/LSan were per-attempt manual, so the row
|
||||
says `accepted` with `sanitizers_clean: false`.
|
||||
|
||||
Called per SPEC §10: a **pipeline false accept**, caught by audit before
|
||||
anything shipped (shipped false accepts remain **0**; the win was not
|
||||
banked). Fix shipped the same hour: `verdict` now runs an ASan+LSan
|
||||
build of the patched tree over the pinned workload on every would-be
|
||||
accept and caps flagged wins at `needs-human-review` — the tier rule
|
||||
SPEC §8 always specified, now enforced by the machine instead of the
|
||||
auditor. The immutable ledger row stands as written; this section is
|
||||
the corrective record.
|
||||
|
||||
10k-input differential fuzz on the same patch: 0 divergences — the
|
||||
output equivalence was real; only the teardown-leak tier was wrong.
|
||||
|
||||
## Two findings the loop surfaced about itself
|
||||
|
||||
1. **`run_verdict` outlived the MCP transport (attempt 001).** The
|
||||
@@ -130,22 +204,29 @@ too small to clear the 2% CI-lower-bound bar. **No false accepts.**
|
||||
- **The gate+bench pipeline is unbypassable through the harness** —
|
||||
pristine-rebuilt baseline, interleaved A/B, CI-lower-bound rule.
|
||||
|
||||
The residual hole in THIS container: an agent with host shell could, in
|
||||
principle, `sqlite3 INSERT` a forged row (triggers block mutation, not
|
||||
insertion) or invoke the verdict binary directly. That is precisely the
|
||||
attack SPEC §10's process/user isolation exists to prevent, and it is the
|
||||
**Phase 2 exit gap to close on real infrastructure** (run the agent
|
||||
process as a separate unprivileged user with no shell and the trust layer
|
||||
owned by another uid — the `bench-metal`/`docs/infra.md` setup).
|
||||
The hole that used to close this section — "an agent with host shell
|
||||
could `sqlite3 INSERT` a forged row or invoke the verdict binary
|
||||
directly" — is now **closed by OS-level isolation** (`scripts/agent-
|
||||
isolated.sh`, `just isolation-check`, 19/19 checks). The whole agent
|
||||
process tree runs either in a mount namespace with the repo read-only
|
||||
and `CAP_SYS_ADMIN` dropped, or as the unprivileged `hpagent` user whose
|
||||
only write path is the harnessd socket. A forged `INSERT`, a direct
|
||||
`verdict` run, a trust-layer edit, and an `rw` remount are all refused
|
||||
from the agent's side; the entire 20-attempt grind ran behind it. The
|
||||
production `user` mode over no-net target containers (`docs/infra.md`)
|
||||
remains the deployment shape.
|
||||
|
||||
## Phase 2 exit criteria (SPEC §5)
|
||||
## Phase 2 exit criteria (SPEC §5) — ALL MET
|
||||
|
||||
- Unattended profile→verdict loop on one target: **met** (comrak).
|
||||
- ≥1 auto-accepted win: **not yet** — both attempts were honest
|
||||
rejections. The loop is proven; a win needs either a richer profile
|
||||
(perf `stat` cache-miss data to unlock class-4 preconditions) or more
|
||||
attempts against fresh hypotheses.
|
||||
- Zero false accepts across audited attempts: **met so far** (2/2
|
||||
audited, both correctly rejected).
|
||||
- The separate-uid isolation for the tool boundary is the remaining
|
||||
hardening item, tracked to `docs/infra.md`.
|
||||
- **Unattended profile→verdict loop:** met — comrak *and* tokei, behind
|
||||
OS-level isolation.
|
||||
- **≥1 auto-accepted win:** met — three verified, banked, fuzz- and
|
||||
sanitizer-clean wins on tokei (+10.7%, +3.7%, +9.9%; compounded ~1.25×
|
||||
vs upstream with the Phase-0 wins).
|
||||
- **Zero false accepts across ≥20 audited attempts:** met — 20/20
|
||||
audited (each twice: incremental during the grind, then a 20-way
|
||||
adversarial re-audit fan-out), 0 shipped false accepts. The one
|
||||
pipeline accept the audit overturned (`comrak-010`) hardened the
|
||||
pipeline into machine-enforced sanitizer gating.
|
||||
- **OS-level tool-boundary isolation:** met — was the tracked hardening
|
||||
gap; shipped and verified this phase.
|
||||
|
||||
+20966
-21126
File diff suppressed because it is too large
Load Diff
+77
-69
@@ -1,12 +1,12 @@
|
||||
--------------------------------------------------------------------------------
|
||||
Profile data file 'results/tokei/callgrind-cache.out' (creator: callgrind-3.22.0)
|
||||
Profile data file '/home/user/peltier.io/results/tokei/callgrind-cache.out' (creator: callgrind-3.22.0)
|
||||
--------------------------------------------------------------------------------
|
||||
I1 cache: 32768 B, 64 B, 8-way associative
|
||||
D1 cache: 32768 B, 64 B, 8-way associative
|
||||
LL cache: 35651584 B, 64 B, 17-way associative
|
||||
Timerange: Basic block 0 - 300193319
|
||||
Timerange: Basic block 0 - 249651049
|
||||
Trigger: Program termination
|
||||
Profiled target: targets/tokei/workspace/target/release/tokei --sort code corpora/tokei/input (PID 13816, part 1)
|
||||
Profiled target: /home/user/peltier.io/targets/tokei/workspace/target/release/tokei --sort code /home/user/peltier.io/corpora/tokei/input (PID 6392, part 1)
|
||||
Events recorded: Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw Bc Bcm Bi Bim
|
||||
Events shown: Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw Bc Bcm Bi Bim
|
||||
Event sort order: Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw Bc Bcm Bi Bim
|
||||
@@ -18,76 +18,84 @@ Auto-annotation: on
|
||||
--------------------------------------------------------------------------------
|
||||
Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw Bc Bcm Bi Bim
|
||||
--------------------------------------------------------------------------------
|
||||
1,274,372,614 (100.0%) 309,077,825 (100.0%) 150,457,742 (100.0%) 1,749,899 (100.0%) 3,544,342 (100.0%) 375,891 (100.0%) 10,888 (100.0%) 20,920 (100.0%) 48,117 (100.0%) 234,950,723 (100.0%) 9,767,520 (100.0%) 8,245,447 (100.0%) 184,720 (100.0%) PROGRAM TOTALS
|
||||
1,003,977,650 (100.0%) 232,943,522 (100.0%) 99,143,447 (100.0%) 1,751,851 (100.0%) 4,987,007 (100.0%) 421,565 (100.0%) 10,806 (100.0%) 22,783 (100.0%) 51,842 (100.0%) 200,221,659 (100.0%) 8,415,556 (100.0%) 4,968,956 (100.0%) 161,590 (100.0%) PROGRAM TOTALS
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw Bc Bcm Bi Bim file:function
|
||||
--------------------------------------------------------------------------------
|
||||
548,435,636 (43.04%) 132,846,352 (42.98%) 49,394,843 (32.83%) 45,338 ( 2.59%) 18,536 ( 0.52%) 9,674 ( 2.57%) 116 ( 1.07%) 39 ( 0.19%) 0 115,272,944 (49.06%) 3,420,156 (35.02%) 3,724,072 (45.17%) 4,759 ( 2.58%) ???:tokei::language::language_type::LanguageType::parse_lines [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
160,445,063 (12.59%) 40,161,280 (12.99%) 19,766,321 (13.14%) 11,013 ( 0.63%) 486 ( 0.01%) 3 ( 0.00%) 32 ( 0.29%) 1 ( 0.00%) 0 33,834,376 (14.40%) 1,461,679 (14.96%) 1,032,896 (12.53%) 311 ( 0.17%) ???:tokei::language::syntax::SyntaxCounter::parse_context [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
92,131,240 ( 7.23%) 21,374,784 ( 6.92%) 6,308,280 ( 4.19%) 14,574 ( 0.83%) 1,366,304 (38.55%) 1,580 ( 0.42%) 21 ( 0.19%) 711 ( 3.40%) 0 15,080,720 ( 6.42%) 782,402 ( 8.01%) . . ???:memchr::arch::x86_64::avx2::packedpair::Finder::find_impl [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
72,750,472 ( 5.71%) 26,815,120 ( 8.68%) 12,925,816 ( 8.59%) 11,962 ( 0.68%) 13,083 ( 0.37%) 1,421 ( 0.38%) 26 ( 0.24%) 0 0 10,849,392 ( 4.62%) 74,573 ( 0.76%) 1,174,944 (14.25%) 14,563 ( 7.88%) ???:aho_corasick::automaton::try_find_fwd [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
45,291,861 ( 3.55%) 9,384,022 ( 3.04%) 0 14,423 ( 0.82%) 1,493,531 (42.14%) 0 6 ( 0.06%) 13,381 (63.96%) 0 5,188,747 ( 2.21%) 1,318,056 (13.49%) . . ???:memchr::arch::x86_64::avx2::memchr::One::find_raw_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
27,720,640 ( 2.18%) 7,753,864 ( 2.51%) 4,849,848 ( 3.22%) 2,427 ( 0.14%) 1,988 ( 0.06%) 1,428 ( 0.38%) 4 ( 0.04%) 0 0 3,015,664 ( 1.28%) 230,894 ( 2.36%) . . ???:memchr::memmem::searcher::searcher_kind_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
27,626,392 ( 2.17%) 5,687,312 ( 1.84%) 4,896,264 ( 3.25%) 2,277 ( 0.13%) 1,397 ( 0.04%) 2,713 ( 0.72%) 3 ( 0.03%) 0 0 3,255,496 ( 1.39%) 18,544 ( 0.19%) 800,936 ( 9.71%) 102 ( 0.06%) ???:<aho_corasick::util::prefilter::Memmem as aho_corasick::util::prefilter::PrefilterI>::find_in [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
26,582,656 ( 2.09%) 3,322,832 ( 1.08%) 9,968,496 ( 6.63%) 1,936 ( 0.11%) 0 4,413 ( 1.17%) 1 ( 0.01%) . . . . . . ???:memchr::arch::x86_64::memchr::memchr_raw::find_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
22,263,784 ( 1.75%) 3,010,736 ( 0.97%) 420,728 ( 0.28%) 1,562 ( 0.09%) 0 0 5 ( 0.05%) 0 0 6,557,000 ( 2.79%) 403,768 ( 4.13%) . . ???:memchr::arch::x86_64::avx2::memchr::Three::find_raw [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
20,005,440 ( 1.57%) 3,342,584 ( 1.08%) 3,309,424 ( 2.20%) 9,887 ( 0.57%) 4 ( 0.00%) 0 4 ( 0.04%) 0 0 3,344,448 ( 1.42%) 24,635 ( 0.25%) . . ???:memchr::arch::x86_64::avx2::memchr::One::find_raw [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
18,171,943 ( 1.43%) 4,122,075 ( 1.33%) 0 11,144 ( 0.64%) 8,033 ( 0.23%) 0 9 ( 0.08%) 355 ( 1.70%) 0 3,925,755 ( 1.67%) 410,582 ( 4.20%) . . ./string/../sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S:__memcmp_avx2_movbe [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
12,389,624 ( 0.97%) 2,219,455 ( 0.72%) 1,596,394 ( 1.06%) 81,319 ( 4.65%) 33,549 ( 0.95%) 54,429 (14.48%) 84 ( 0.77%) 3 ( 0.01%) 7,486 (15.56%) 2,421,332 ( 1.03%) 230,740 ( 2.36%) . . ./malloc/./malloc/malloc.c:_int_malloc [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
11,584,340 ( 0.91%) 3,406,264 ( 1.10%) 1,550,009 ( 1.03%) 31,001 ( 1.77%) 802 ( 0.02%) 1,121 ( 0.30%) 4 ( 0.04%) 0 0 1,972,496 ( 0.84%) 84,259 ( 0.86%) 70,312 ( 0.85%) 1,650 ( 0.89%) ???:tokei::language::language_type::LanguageType::parse_lines'2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
11,563,723 ( 0.91%) 3,003,356 ( 0.97%) 1,343,288 ( 0.89%) 9,283 ( 0.53%) 27,758 ( 0.78%) 138 ( 0.04%) 13 ( 0.12%) 8 ( 0.04%) 0 2,141,100 ( 0.91%) 143,048 ( 1.46%) . . ./malloc/./malloc/malloc.c:_int_free [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
10,488,480 ( 0.82%) 699,232 ( 0.23%) 4,894,624 ( 3.25%) 1,668 ( 0.10%) 0 1,102 ( 0.29%) 3 ( 0.03%) . . . . . . ???:memchr::arch::x86_64::memchr::memchr3_raw::find_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
10,038,240 ( 0.79%) 2,794,944 ( 0.90%) 1,810,824 ( 1.20%) 384 ( 0.02%) 69 ( 0.00%) 33 ( 0.01%) 2 ( 0.02%) 0 0 1,048,104 ( 0.45%) 21,424 ( 0.22%) 349,368 ( 4.24%) 2 ( 0.00%) ???:<aho_corasick::util::prefilter::StartBytesThree as aho_corasick::util::prefilter::PrefilterI>::find_in [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
10,030,996 ( 0.79%) 2,299,952 ( 0.74%) 851,099 ( 0.57%) 35,985 ( 2.06%) 28,926 ( 0.82%) 1,613 ( 0.43%) 27 ( 0.25%) 0 0 2,489,385 ( 1.06%) 17,878 ( 0.18%) . . ???:regex_automata::hybrid::search::find_overlapping_fwd [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
7,001,430 ( 0.55%) 2,314,951 ( 0.75%) 954,753 ( 0.63%) 160,176 ( 9.15%) 47,047 ( 1.33%) 14,038 ( 3.73%) 203 ( 1.86%) 2 ( 0.01%) 1,306 ( 2.71%) 1,337,108 ( 0.57%) 89,819 ( 0.92%) 93,554 ( 1.13%) 5,525 ( 2.99%) ???:std::sys::backtrace::__rust_begin_short_backtrace [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
6,949,776 ( 0.55%) 2,316,592 ( 0.75%) 2,316,592 ( 1.54%) 80 ( 0.00%) . . . . . . . . . ???:aho_corasick::automaton::Automaton::try_find [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
6,322,025 ( 0.50%) 1,684,091 ( 0.54%) 945,965 ( 0.63%) 1,397 ( 0.08%) 14,306 ( 0.40%) 910 ( 0.24%) 8 ( 0.07%) 1 ( 0.00%) 23 ( 0.05%) 1,093,864 ( 0.47%) 52,145 ( 0.53%) . . ./malloc/./malloc/malloc.c:malloc [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
6,164,315 ( 0.48%) 1,646,960 ( 0.53%) 753,945 ( 0.50%) 8,134 ( 0.46%) 834 ( 0.02%) 2 ( 0.00%) 12 ( 0.11%) 0 0 1,150,904 ( 0.49%) 51,102 ( 0.52%) 47,384 ( 0.57%) 1,521 ( 0.82%) ???:tokei::language::syntax::SyntaxCounter::parse_context'2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
5,698,560 ( 0.45%) 889,112 ( 0.29%) 17,000 ( 0.01%) 593 ( 0.03%) 1,046 ( 0.03%) 97 ( 0.03%) 32 ( 0.29%) 3 ( 0.01%) 0 1,427,824 ( 0.61%) 91,679 ( 0.94%) 1,280 ( 0.02%) 1 ( 0.00%) ???:encoding_rs::variant::VariantDecoder::decode_to_utf8_raw [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
5,040,226 ( 0.40%) 1,796,241 ( 0.58%) 1,512,328 ( 1.01%) 16,382 ( 0.94%) 54,288 ( 1.53%) 74,434 (19.80%) 13 ( 0.12%) 38 ( 0.18%) 8,013 (16.65%) 1,708,766 ( 0.73%) 76,967 ( 0.79%) . . ./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:__memcpy_avx_unaligned_erms [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
4,477,761 ( 0.35%) 1,479,556 ( 0.48%) 809,067 ( 0.54%) 42,837 ( 2.45%) 25,143 ( 0.71%) 2,169 ( 0.58%) 45 ( 0.41%) 2 ( 0.01%) 0 591,508 ( 0.25%) 27,474 ( 0.28%) 165,408 ( 2.01%) 66,275 (35.88%) ???:globset::GlobSet::matches_candidate_into [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
4,264,099 ( 0.33%) 800,404 ( 0.26%) 207,746 ( 0.14%) 20,669 ( 1.18%) 13,811 ( 0.39%) 42 ( 0.01%) 20 ( 0.18%) 0 0 282,175 ( 0.12%) 33,228 ( 0.34%) 3,115 ( 0.04%) 869 ( 0.47%) ???:hashbrown::map::HashMap<K,V,S,A>::get [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
4,062,792 ( 0.32%) 1,450,987 ( 0.47%) 870,582 ( 0.58%) 542 ( 0.03%) 25,829 ( 0.73%) 53 ( 0.01%) 5 ( 0.05%) 0 0 435,315 ( 0.19%) 8,926 ( 0.09%) . . ./malloc/./malloc/malloc.c:free [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,939,629 ( 0.23%) 566,122 ( 0.18%) 353,530 ( 0.23%) 4,561 ( 0.26%) 2,754 ( 0.08%) 4,448 ( 1.18%) 7 ( 0.06%) 0 7 ( 0.01%) 637,035 ( 0.27%) 9,805 ( 0.10%) . . ./malloc/./malloc/malloc.c:realloc [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,729,390 ( 0.21%) 589,459 ( 0.19%) 222,910 ( 0.15%) 15,990 ( 0.91%) 3,212 ( 0.09%) 383 ( 0.10%) 28 ( 0.26%) 0 0 560,010 ( 0.24%) 11,546 ( 0.12%) . . ???:regex_automata::hybrid::search::find_rev [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
2,724,108 ( 0.21%) 17,717 ( 0.01%) 2,520,914 ( 1.68%) 7,070 ( 0.40%) 44 ( 0.00%) 44,249 (11.77%) 5 ( 0.05%) 0 6,608 (13.73%) 2,536,655 ( 1.08%) 4,586 ( 0.05%) . . ./string/../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:__memset_avx2_unaligned_erms [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,706,135 ( 0.21%) 426,076 ( 0.14%) 0 4,241 ( 0.24%) 2,320 ( 0.07%) 0 6 ( 0.06%) 21 ( 0.10%) 0 282,153 ( 0.12%) 47,405 ( 0.49%) . . ???:memchr::arch::x86_64::avx2::memchr::Three::find_raw_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
2,505,488 ( 0.20%) 504,686 ( 0.16%) 320,496 ( 0.21%) 12,209 ( 0.70%) 12,142 ( 0.34%) 3,885 ( 1.03%) 10 ( 0.09%) 0 417 ( 0.87%) 375,892 ( 0.16%) 23,218 ( 0.24%) . . ./malloc/./malloc/malloc.c:_int_realloc [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,336,305 ( 0.18%) 465,427 ( 0.15%) 390,214 ( 0.26%) 14,554 ( 0.83%) 37,954 ( 1.07%) 890 ( 0.24%) 7 ( 0.06%) 0 2 ( 0.00%) 400,843 ( 0.17%) 32,647 ( 0.33%) . . ./malloc/./malloc/malloc.c:malloc_consolidate [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,318,963 ( 0.18%) 380,320 ( 0.12%) 475,735 ( 0.32%) 7,704 ( 0.44%) 266 ( 0.01%) 2,065 ( 0.55%) 62 ( 0.57%) 0 25 ( 0.05%) 204,839 ( 0.09%) 10,401 ( 0.11%) 47,595 ( 0.58%) 392 ( 0.21%) ???:alloc::raw_vec::RawVecInner<A>::finish_grow [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
2,227,842 ( 0.17%) 344,940 ( 0.11%) 90,540 ( 0.06%) 11,721 ( 0.67%) 2,718 ( 0.08%) 0 5 ( 0.05%) 0 0 573,948 ( 0.24%) 18,555 ( 0.19%) . . ???:std::path::Components::parse_next_component_back [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
2,131,874 ( 0.17%) 505,578 ( 0.16%) 340,189 ( 0.23%) 27,688 ( 1.58%) 1,042 ( 0.03%) 1,471 ( 0.39%) 11 ( 0.10%) 2 ( 0.01%) 1 ( 0.00%) 366,366 ( 0.16%) 32,041 ( 0.33%) . . ???:<std::path::Components as core::iter::traits::double_ended::DoubleEndedIterator>::next_back [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,728,994 ( 0.14%) 430,508 ( 0.14%) 322,377 ( 0.21%) 13,500 ( 0.77%) 12,702 ( 0.36%) 1,984 ( 0.53%) 7 ( 0.06%) 0 69 ( 0.14%) 290,980 ( 0.12%) 37,436 ( 0.38%) . . ./malloc/./malloc/malloc.c:_int_free_merge_chunk [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
1,648,110 ( 0.13%) 429,930 ( 0.14%) 453,793 ( 0.30%) 2,036 ( 0.12%) 1,595 ( 0.05%) 1,902 ( 0.51%) 6 ( 0.06%) 6 ( 0.03%) 0 143,304 ( 0.06%) 3,752 ( 0.04%) 71,652 ( 0.87%) 6 ( 0.00%) ???:std::path::Path::_join [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,619,413 ( 0.13%) 373,523 ( 0.12%) 189,695 ( 0.13%) 13,534 ( 0.77%) 4,408 ( 0.12%) 1,729 ( 0.46%) 59 ( 0.54%) 2 ( 0.01%) 192 ( 0.40%) 256,813 ( 0.11%) 11,348 ( 0.12%) 20,218 ( 0.25%) 13,281 ( 7.19%) ???:regex_automata::hybrid::dfa::Lazy::cache_next_state [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,595,880 ( 0.13%) 534,128 ( 0.17%) 2,192 ( 0.00%) 14,100 ( 0.81%) 1,430 ( 0.04%) 0 122 ( 1.12%) 1 ( 0.00%) 0 298,184 ( 0.13%) 9,081 ( 0.09%) 3,400 ( 0.04%) 497 ( 0.27%) ???:tokei::language::language_type::LanguageType::from_file_extension [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,583,578 ( 0.12%) 484,447 ( 0.16%) 190,570 ( 0.13%) 20,565 ( 1.18%) 4,379 ( 0.12%) 564 ( 0.15%) 64 ( 0.59%) 0 0 272,833 ( 0.12%) 14,732 ( 0.15%) 5,376 ( 0.07%) 44 ( 0.02%) ???:regex_automata::hybrid::search::find_fwd [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,540,600 ( 0.12%) 334,528 ( 0.11%) 134,992 ( 0.09%) 11,815 ( 0.68%) 643 ( 0.02%) 25 ( 0.01%) 16 ( 0.15%) 1 ( 0.00%) 0 348,320 ( 0.15%) 14,133 ( 0.14%) 5,800 ( 0.07%) 3 ( 0.00%) ???:<&rayon::iter::par_bridge::IterParallelProducer<Iter> as rayon::iter::plumbing::UnindexedProducer>::fold_with'2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,527,935 ( 0.12%) 273,164 ( 0.09%) 0 1,404 ( 0.08%) 3,329 ( 0.09%) 0 0 0 0 145,093 ( 0.06%) 402 ( 0.00%) . . ./malloc/./malloc/arena.c:free
|
||||
1,456,161 ( 0.11%) 618,800 ( 0.20%) 204,928 ( 0.14%) 9,633 ( 0.55%) 18,029 ( 0.51%) 0 3 ( 0.03%) 0 0 299,568 ( 0.13%) 23,127 ( 0.24%) . . ./malloc/./malloc/malloc.c:unlink_chunk.isra.0 [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
1,447,864 ( 0.11%) 204,528 ( 0.07%) 210,864 ( 0.14%) 9,454 ( 0.54%) 5,393 ( 0.15%) 89 ( 0.02%) 6 ( 0.06%) 1 ( 0.00%) 0 179,928 ( 0.08%) 13,234 ( 0.14%) 9,376 ( 0.11%) 2 ( 0.00%) ???:alloc::str::<impl str>::to_lowercase [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,407,400 ( 0.11%) 228,447 ( 0.07%) 75,880 ( 0.05%) 10,121 ( 0.58%) 0 969 ( 0.26%) 8 ( 0.07%) 0 0 289,656 ( 0.12%) 21,257 ( 0.22%) 18,970 ( 0.23%) 19 ( 0.01%) ???:std::sys::fs::metadata [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,304,881 ( 0.10%) 279,666 ( 0.09%) 79,610 ( 0.05%) 724 ( 0.04%) 127 ( 0.00%) 24 ( 0.01%) 27 ( 0.25%) 0 2 ( 0.00%) 304,422 ( 0.13%) 3,074 ( 0.03%) . . ???:aho_corasick::dfa::Builder::finish_build_one_start [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,292,264 ( 0.10%) 291,411 ( 0.09%) 215,021 ( 0.14%) 2,776 ( 0.16%) 0 889 ( 0.24%) 26 ( 0.24%) 0 2 ( 0.00%) 76,345 ( 0.03%) 594 ( 0.01%) . . ???:alloc::raw_vec::RawVecInner<A>::reserve::do_reserve_and_handle [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,286,756 ( 0.10%) 209,955 ( 0.07%) 160,647 ( 0.11%) 18,454 ( 1.05%) 10,254 ( 0.29%) 7,163 ( 1.91%) 158 ( 1.45%) 86 ( 0.41%) 0 88,627 ( 0.04%) 5,372 ( 0.05%) 7,023 ( 0.09%) 2,462 ( 1.33%) ???:tokei::language::syntax::SyntaxCounter::new [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,232,179 ( 0.10%) 525,323 ( 0.17%) 172,040 ( 0.11%) 7,639 ( 0.44%) 33,548 ( 0.95%) 0 39 ( 0.36%) 0 0 246,082 ( 0.10%) 19,205 ( 0.20%) 26,594 ( 0.32%) 1,701 ( 0.92%) ???:alloc::sync::Arc<T,A>::drop_slow'2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,150,952 ( 0.09%) 344,096 ( 0.11%) 100,944 ( 0.07%) 103,824 ( 5.93%) 80 ( 0.00%) 0 187 ( 1.72%) 3 ( 0.01%) 0 474,304 ( 0.20%) 12,672 ( 0.13%) 6,648 ( 0.08%) 299 ( 0.16%) ???:<tokei::language::language_type::LanguageType as core::str::traits::FromStr>::from_str [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,132,468 ( 0.09%) 281,653 ( 0.09%) 194,911 ( 0.13%) 28,259 ( 1.61%) 13,870 ( 0.39%) 9,864 ( 2.62%) 83 ( 0.76%) 0 0 178,338 ( 0.08%) 10,638 ( 0.11%) 10,496 ( 0.13%) 33 ( 0.02%) ???:<rayon::iter::for_each::ForEachConsumer<F> as rayon::iter::plumbing::Folder<T>>::consume [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,103,075 ( 0.09%) 164,178 ( 0.05%) 53,943 ( 0.04%) 11,967 ( 0.68%) 6,638 ( 0.19%) 53 ( 0.01%) 12 ( 0.11%) 0 1 ( 0.00%) 243,168 ( 0.10%) 10,403 ( 0.11%) . . ./malloc/./malloc/malloc.c:_mid_memalign.isra.0 [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
1,094,450 ( 0.09%) 174,235 ( 0.06%) 106,788 ( 0.07%) 8,785 ( 0.50%) 1,523 ( 0.04%) 1,121 ( 0.30%) 124 ( 1.14%) 16 ( 0.08%) 60 ( 0.12%) 141,026 ( 0.06%) 7,732 ( 0.08%) 14,243 ( 0.17%) 6,746 ( 3.65%) ???:regex_automata::nfa::thompson::compiler::Compiler::build_many_from_hir [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,093,692 ( 0.09%) 322,376 ( 0.10%) 302,222 ( 0.20%) 8,280 ( 0.47%) 5,942 ( 0.17%) 0 11 ( 0.10%) 0 0 111,956 ( 0.05%) 9,760 ( 0.10%) . . ???:ignore::gitignore::Gitignore::matched_stripped [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,059,072 ( 0.08%) 308,896 ( 0.10%) 308,896 ( 0.21%) 11,468 ( 0.66%) 6,752 ( 0.19%) 0 7 ( 0.06%) 0 0 154,448 ( 0.07%) 26 ( 0.00%) . . ???:aho_corasick::automaton::try_find_overlapping_fwd [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,031,672 ( 0.08%) 163,520 ( 0.05%) 75,072 ( 0.05%) 9,959 ( 0.57%) 1 ( 0.00%) 0 4 ( 0.04%) 0 0 242,494 ( 0.10%) 9,894 ( 0.10%) . . ???:<core::str::lossy::Utf8Chunks as core::iter::traits::iterator::Iterator>::next [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
992,784 ( 0.08%) 194,352 ( 0.06%) 95,832 ( 0.06%) 14,542 ( 0.83%) 2,916 ( 0.08%) 46 ( 0.01%) 19 ( 0.17%) 0 0 75,368 ( 0.03%) 5,295 ( 0.05%) 1,608 ( 0.02%) 15 ( 0.01%) ???:globset::RequiredExtensionStrategy::matches_into [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
950,404 ( 0.07%) 78,890 ( 0.03%) 191,149 ( 0.13%) 160 ( 0.01%) 0 3,149 ( 0.84%) 5 ( 0.05%) 0 872 ( 1.81%) 188,601 ( 0.08%) 1,363 ( 0.01%) . . ???:aho_corasick::nfa::noncontiguous::NFA::init_full_state [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
926,778 ( 0.07%) 342,025 ( 0.11%) 275,825 ( 0.18%) 20,252 ( 1.16%) 0 63 ( 0.02%) 12 ( 0.11%) 0 0 66,200 ( 0.03%) 8,984 ( 0.09%) . . ???:<std::path::Components as core::cmp::PartialEq>::eq [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
917,172 ( 0.07%) 346,781 ( 0.11%) 327,834 ( 0.22%) 87,093 ( 4.98%) 4,809 ( 0.14%) 9,180 ( 2.44%) 60 ( 0.55%) 0 20 ( 0.04%) 89,061 ( 0.04%) 4,386 ( 0.04%) 13,265 ( 0.16%) 60 ( 0.03%) ???:ignore::dir::Ignore::add_child_path [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
913,135 ( 0.07%) 119,269 ( 0.04%) 150,269 ( 0.10%) 14,598 ( 0.83%) 160 ( 0.00%) 1,483 ( 0.39%) 11 ( 0.10%) 0 287 ( 0.60%) 104,217 ( 0.04%) 6,222 ( 0.06%) . . ./malloc/./malloc/malloc.c:_int_memalign [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
852,160 ( 0.07%) 230,883 ( 0.07%) 172,175 ( 0.11%) 4,361 ( 0.25%) 1,239 ( 0.03%) 794 ( 0.21%) 18 ( 0.17%) 1 ( 0.00%) 0 124,944 ( 0.05%) 8,504 ( 0.09%) 16,349 ( 0.20%) 10,647 ( 5.76%) ???:regex_automata::util::determinize::epsilon_closure [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
830,821 ( 0.07%) 344,112 ( 0.11%) 238,142 ( 0.16%) 6,107 ( 0.35%) 1,365 ( 0.04%) 34 ( 0.01%) 4 ( 0.04%) 0 0 72,635 ( 0.03%) 737 ( 0.01%) . . ./malloc/./malloc/malloc.c:_int_free_maybe_consolidate [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
809,718 ( 0.06%) 185,994 ( 0.06%) 146,387 ( 0.10%) 26,874 ( 1.54%) 3,275 ( 0.09%) 2,482 ( 0.66%) 31 ( 0.28%) 0 0 145,761 ( 0.06%) 1,605 ( 0.02%) 154 ( 0.00%) 103 ( 0.06%) ???:regex_automata::util::pool::inner::Pool<T,F>::get_slow [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
801,643 ( 0.06%) 139,369 ( 0.05%) 0 4,231 ( 0.24%) 187 ( 0.01%) 0 3 ( 0.03%) 0 0 69,984 ( 0.03%) 88 ( 0.00%) . . ./malloc/./malloc/arena.c:realloc
|
||||
470,442,838 (46.86%) 110,204,280 (47.31%) 33,481,627 (33.77%) 55,167 ( 3.15%) 31,266 ( 0.63%) 12,308 ( 2.92%) 112 ( 1.04%) 46 ( 0.20%) 0 105,989,320 (52.94%) 3,435,705 (40.83%) 2,631,840 (52.97%) 1,902 ( 1.18%) ???:tokei::language::language_type::LanguageType::parse_lines [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
160,445,063 (15.98%) 40,161,280 (17.24%) 19,766,321 (19.94%) 19,068 ( 1.09%) 490 ( 0.01%) 28 ( 0.01%) 33 ( 0.31%) 1 ( 0.00%) 0 33,834,376 (16.90%) 1,450,768 (17.24%) 1,032,896 (20.79%) 261 ( 0.16%) ???:tokei::language::syntax::SyntaxCounter::parse_context [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
56,860,032 ( 5.66%) 11,455,368 ( 4.92%) 152,136 ( 0.15%) 10,658 ( 0.61%) 2,674,323 (53.63%) 1,710 ( 0.41%) 21 ( 0.19%) 9 ( 0.04%) 0 11,297,088 ( 5.64%) 20,268 ( 0.24%) . . ???:memchr::arch::x86_64::avx2::packedpair::Finder::find_impl [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
45,291,753 ( 4.51%) 9,384,666 ( 4.03%) 0 13,551 ( 0.77%) 1,397,683 (28.03%) 0 6 ( 0.06%) 1,405 ( 6.17%) 0 5,188,452 ( 2.59%) 1,314,082 (15.61%) . . ???:memchr::arch::x86_64::avx2::memchr::One::find_raw_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
26,582,656 ( 2.65%) 3,322,832 ( 1.43%) 9,968,496 (10.05%) 1,922 ( 0.11%) 0 4,866 ( 1.15%) 1 ( 0.01%) . . . . . . ???:memchr::arch::x86_64::memchr::memchr_raw::find_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
20,005,440 ( 1.99%) 3,342,584 ( 1.43%) 3,309,424 ( 3.34%) 11,827 ( 0.68%) 15 ( 0.00%) 0 4 ( 0.04%) 0 0 3,344,448 ( 1.67%) 24,301 ( 0.29%) . . ???:memchr::arch::x86_64::avx2::memchr::One::find_raw [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
18,221,564 ( 1.81%) 4,136,593 ( 1.78%) 0 13,737 ( 0.78%) 5,102 ( 0.10%) 0 10 ( 0.09%) 55 ( 0.24%) 0 3,940,062 ( 1.97%) 415,729 ( 4.94%) . . ./string/../sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S:__memcmp_avx2_movbe [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
14,274,389 ( 1.42%) 2,418,067 ( 1.04%) 1,840,890 ( 1.86%) 73,736 ( 4.21%) 39,810 ( 0.80%) 67,833 (16.09%) 84 ( 0.78%) 3 ( 0.01%) 7,982 (15.40%) 2,831,666 ( 1.41%) 263,423 ( 3.13%) . . ./malloc/./malloc/malloc.c:_int_malloc [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
12,354,840 ( 1.23%) 4,335,056 ( 1.86%) 1,225,752 ( 1.24%) 6,771 ( 0.39%) 20,131 ( 0.40%) 2,801 ( 0.66%) 17 ( 0.16%) 0 0 2,333,480 ( 1.17%) 110,014 ( 1.31%) 81,464 ( 1.64%) 7,836 ( 4.85%) ???:aho_corasick::automaton::try_find_fwd [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
11,338,454 ( 1.13%) 2,968,171 ( 1.27%) 1,339,999 ( 1.35%) 13,757 ( 0.79%) 30,458 ( 0.61%) 1,378 ( 0.33%) 13 ( 0.12%) 4 ( 0.02%) 0 2,124,517 ( 1.06%) 150,740 ( 1.79%) . . ./malloc/./malloc/malloc.c:_int_free [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
10,027,686 ( 1.00%) 2,299,372 ( 0.99%) 849,631 ( 0.86%) 34,197 ( 1.95%) 30,384 ( 0.61%) 3,233 ( 0.77%) 27 ( 0.25%) 0 0 2,489,379 ( 1.24%) 14,789 ( 0.18%) . . ???:regex_automata::hybrid::search::find_overlapping_fwd [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
9,940,118 ( 0.99%) 2,925,088 ( 1.26%) 1,174,377 ( 1.18%) 33,645 ( 1.92%) 2,206 ( 0.04%) 1,474 ( 0.35%) 5 ( 0.05%) 0 0 1,790,696 ( 0.89%) 90,382 ( 1.07%) 66,160 ( 1.33%) 1,573 ( 0.97%) ???:tokei::language::language_type::LanguageType::parse_lines'2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
7,086,169 ( 0.71%) 2,328,929 ( 1.00%) 954,549 ( 0.96%) 157,285 ( 8.98%) 73,523 ( 1.47%) 15,643 ( 3.71%) 204 ( 1.89%) 3 ( 0.01%) 1,636 ( 3.16%) 1,361,062 ( 0.68%) 85,127 ( 1.01%) 93,569 ( 1.88%) 5,524 ( 3.42%) ???:std::sys::backtrace::__rust_begin_short_backtrace [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
6,314,004 ( 0.63%) 1,681,652 ( 0.72%) 943,776 ( 0.95%) 1,500 ( 0.09%) 19,114 ( 0.38%) 2,587 ( 0.61%) 8 ( 0.07%) 1 ( 0.00%) 26 ( 0.05%) 1,094,676 ( 0.55%) 61,984 ( 0.74%) . . ./malloc/./malloc/malloc.c:malloc [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
6,164,315 ( 0.61%) 1,646,960 ( 0.71%) 753,945 ( 0.76%) 7,054 ( 0.40%) 558 ( 0.01%) 1 ( 0.00%) 10 ( 0.09%) 0 0 1,150,904 ( 0.57%) 50,278 ( 0.60%) 47,384 ( 0.95%) 1,473 ( 0.91%) ???:tokei::language::syntax::SyntaxCounter::parse_context'2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
5,698,560 ( 0.57%) 889,112 ( 0.38%) 17,000 ( 0.02%) 625 ( 0.04%) 969 ( 0.02%) 81 ( 0.02%) 32 ( 0.30%) 3 ( 0.01%) 0 1,427,824 ( 0.71%) 91,268 ( 1.08%) 1,280 ( 0.03%) 1 ( 0.00%) ???:encoding_rs::variant::VariantDecoder::decode_to_utf8_raw [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
5,479,829 ( 0.55%) 1,895,826 ( 0.81%) 1,560,491 ( 1.57%) 17,000 ( 0.97%) 56,476 ( 1.13%) 80,980 (19.21%) 13 ( 0.12%) 38 ( 0.17%) 8,348 (16.10%) 1,817,018 ( 0.91%) 81,908 ( 0.97%) . . ./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:__memcpy_avx_unaligned_erms [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
4,822,721 ( 0.48%) 645,389 ( 0.28%) 0 2,403 ( 0.14%) 125,095 ( 2.51%) 0 6 ( 0.06%) 14,470 (63.51%) 0 419,526 ( 0.21%) 53,153 ( 0.63%) . . ???:memchr::arch::x86_64::avx2::memchr::Three::find_raw_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
4,384,859 ( 0.44%) 1,442,050 ( 0.62%) 821,563 ( 0.83%) 40,042 ( 2.29%) 27,431 ( 0.55%) 2,075 ( 0.49%) 45 ( 0.42%) 2 ( 0.01%) 0 566,504 ( 0.28%) 24,798 ( 0.29%) 165,408 ( 3.33%) 66,277 (41.02%) ???:globset::GlobSet::matches_candidate_into [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
4,220,658 ( 0.42%) 793,387 ( 0.34%) 202,168 ( 0.20%) 21,840 ( 1.25%) 12,891 ( 0.26%) 28 ( 0.01%) 20 ( 0.19%) 0 0 281,018 ( 0.14%) 34,263 ( 0.41%) 2,876 ( 0.06%) 876 ( 0.54%) ???:hashbrown::map::HashMap<K,V,S,A>::get [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
4,053,972 ( 0.40%) 1,447,837 ( 0.62%) 868,692 ( 0.88%) 886 ( 0.05%) 27,705 ( 0.56%) 44 ( 0.01%) 5 ( 0.05%) 0 0 434,370 ( 0.22%) 2,044 ( 0.02%) . . ./malloc/./malloc/malloc.c:free [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,934,096 ( 0.29%) 565,052 ( 0.24%) 352,862 ( 0.36%) 8,038 ( 0.46%) 5,575 ( 0.11%) 3,690 ( 0.88%) 8 ( 0.07%) 0 9 ( 0.02%) 635,841 ( 0.32%) 10,343 ( 0.12%) . . ./malloc/./malloc/malloc.c:realloc [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,729,390 ( 0.27%) 589,459 ( 0.25%) 222,910 ( 0.22%) 23,513 ( 1.34%) 6,058 ( 0.12%) 830 ( 0.20%) 28 ( 0.26%) 0 0 560,010 ( 0.28%) 11,689 ( 0.14%) . . ???:regex_automata::hybrid::search::find_rev [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
2,676,447 ( 0.27%) 17,516 ( 0.01%) 2,475,048 ( 2.50%) 6,688 ( 0.38%) 34 ( 0.00%) 43,006 (10.20%) 5 ( 0.05%) 0 7,432 (14.34%) 2,490,939 ( 1.24%) 4,536 ( 0.05%) . . ./string/../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:__memset_avx2_unaligned_erms [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,620,680 ( 0.26%) 649,623 ( 0.28%) 488,018 ( 0.49%) 9,566 ( 0.55%) 15,356 ( 0.31%) 750 ( 0.18%) 7 ( 0.06%) 0 23 ( 0.04%) 440,988 ( 0.22%) 38,711 ( 0.46%) . . ./malloc/./malloc/malloc.c:_int_free_merge_chunk [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,501,124 ( 0.25%) 504,090 ( 0.22%) 319,700 ( 0.32%) 14,159 ( 0.81%) 13,045 ( 0.26%) 3,292 ( 0.78%) 10 ( 0.09%) 0 374 ( 0.72%) 375,366 ( 0.19%) 20,875 ( 0.25%) . . ./malloc/./malloc/malloc.c:_int_realloc [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,307,744 ( 0.23%) 378,464 ( 0.16%) 473,397 ( 0.48%) 7,046 ( 0.40%) 320 ( 0.01%) 1,871 ( 0.44%) 62 ( 0.57%) 0 26 ( 0.05%) 203,744 ( 0.10%) 9,712 ( 0.12%) 47,360 ( 0.95%) 382 ( 0.24%) ???:alloc::raw_vec::RawVecInner<A>::finish_grow [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
2,164,552 ( 0.22%) 319,624 ( 0.14%) 90,540 ( 0.09%) 9,126 ( 0.52%) 6,492 ( 0.13%) 1 ( 0.00%) 5 ( 0.05%) 0 0 548,632 ( 0.27%) 18,553 ( 0.22%) . . ???:std::path::Components::parse_next_component_back [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
2,163,637 ( 0.22%) 424,041 ( 0.18%) 356,644 ( 0.36%) 13,696 ( 0.78%) 42,765 ( 0.86%) 1,754 ( 0.42%) 7 ( 0.06%) 0 1 ( 0.00%) 372,831 ( 0.19%) 24,358 ( 0.29%) . . ./malloc/./malloc/malloc.c:malloc_consolidate [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
2,069,216 ( 0.21%) 518,080 ( 0.22%) 387,784 ( 0.39%) 103 ( 0.01%) 92 ( 0.00%) 109 ( 0.03%) 2 ( 0.02%) 0 0 194,280 ( 0.10%) 3,193 ( 0.04%) 64,760 ( 1.30%) 2 ( 0.00%) ???:<aho_corasick::util::prefilter::StartBytesThree as aho_corasick::util::prefilter::PrefilterI>::find_in [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
2,043,268 ( 0.20%) 480,262 ( 0.21%) 327,531 ( 0.33%) 19,789 ( 1.13%) 454 ( 0.01%) 1,540 ( 0.37%) 11 ( 0.10%) 2 ( 0.01%) 0 328,392 ( 0.16%) 20,041 ( 0.24%) . . ???:<std::path::Components as core::iter::traits::double_ended::DoubleEndedIterator>::next_back [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,945,680 ( 0.19%) 129,712 ( 0.06%) 907,984 ( 0.92%) 1,089 ( 0.06%) 24 ( 0.00%) 1,119 ( 0.27%) 3 ( 0.03%) . . . . . . ???:memchr::arch::x86_64::memchr::memchr3_raw::find_avx2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,919,823 ( 0.19%) 816,364 ( 0.35%) 270,755 ( 0.27%) 8,116 ( 0.46%) 21,618 ( 0.43%) 0 3 ( 0.03%) 0 0 393,662 ( 0.20%) 31,659 ( 0.38%) . . ./malloc/./malloc/malloc.c:unlink_chunk.isra.0 [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
1,648,110 ( 0.16%) 429,930 ( 0.18%) 453,793 ( 0.46%) 2,507 ( 0.14%) 3,080 ( 0.06%) 2,635 ( 0.63%) 6 ( 0.06%) 6 ( 0.03%) 4 ( 0.01%) 143,304 ( 0.07%) 699 ( 0.01%) 71,652 ( 1.44%) 6 ( 0.00%) ???:std::path::Path::_join [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,595,880 ( 0.16%) 534,128 ( 0.23%) 2,192 ( 0.00%) 13,159 ( 0.75%) 1,447 ( 0.03%) 0 122 ( 1.13%) 1 ( 0.00%) 0 298,184 ( 0.15%) 8,517 ( 0.10%) 3,400 ( 0.07%) 497 ( 0.31%) ???:tokei::language::language_type::LanguageType::from_file_extension [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,583,578 ( 0.16%) 484,447 ( 0.21%) 190,570 ( 0.19%) 24,197 ( 1.38%) 3,651 ( 0.07%) 693 ( 0.16%) 64 ( 0.59%) 0 0 272,833 ( 0.14%) 13,357 ( 0.16%) 5,376 ( 0.11%) 41 ( 0.03%) ???:regex_automata::hybrid::search::find_fwd [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,554,941 ( 0.15%) 244,315 ( 0.10%) 75,880 ( 0.08%) 9,573 ( 0.55%) 0 1,803 ( 0.43%) 8 ( 0.07%) 0 2 ( 0.00%) 294,655 ( 0.15%) 26,638 ( 0.32%) 18,970 ( 0.38%) 19 ( 0.01%) ???:std::sys::fs::metadata [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,540,600 ( 0.15%) 334,528 ( 0.14%) 134,992 ( 0.14%) 9,116 ( 0.52%) 519 ( 0.01%) 25 ( 0.01%) 16 ( 0.15%) 1 ( 0.00%) 0 348,320 ( 0.17%) 12,949 ( 0.15%) 5,800 ( 0.12%) 3 ( 0.00%) ???:<&rayon::iter::par_bridge::IterParallelProducer<Iter> as rayon::iter::plumbing::UnindexedProducer>::fold_with'2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,524,646 ( 0.15%) 272,578 ( 0.12%) 0 2,275 ( 0.13%) 3,047 ( 0.06%) 0 0 0 0 144,778 ( 0.07%) 365 ( 0.00%) . . ./malloc/./malloc/arena.c:free
|
||||
1,447,864 ( 0.14%) 204,528 ( 0.09%) 210,864 ( 0.21%) 16,123 ( 0.92%) 4,088 ( 0.08%) 127 ( 0.03%) 6 ( 0.06%) 1 ( 0.00%) 0 179,928 ( 0.09%) 14,810 ( 0.18%) 9,376 ( 0.19%) 2 ( 0.00%) ???:alloc::str::<impl str>::to_lowercase [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,350,599 ( 0.13%) 311,208 ( 0.13%) 158,271 ( 0.16%) 11,520 ( 0.66%) 3,745 ( 0.08%) 1,554 ( 0.37%) 59 ( 0.55%) 2 ( 0.01%) 289 ( 0.56%) 213,997 ( 0.11%) 9,183 ( 0.11%) 16,835 ( 0.34%) 10,897 ( 6.74%) ???:regex_automata::hybrid::dfa::Lazy::cache_next_state [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,304,881 ( 0.13%) 279,666 ( 0.12%) 79,610 ( 0.08%) 724 ( 0.04%) 117 ( 0.00%) 16 ( 0.00%) 27 ( 0.25%) 0 2 ( 0.00%) 304,422 ( 0.15%) 3,054 ( 0.04%) . . ???:aho_corasick::dfa::Builder::finish_build_one_start [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,287,690 ( 0.13%) 210,194 ( 0.09%) 160,565 ( 0.16%) 17,112 ( 0.98%) 7,944 ( 0.16%) 7,424 ( 1.76%) 158 ( 1.46%) 88 ( 0.39%) 2 ( 0.00%) 88,858 ( 0.04%) 1,088 ( 0.01%) 7,023 ( 0.14%) 104 ( 0.06%) ???:tokei::language::syntax::SyntaxCounter::new [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,286,792 ( 0.13%) 290,214 ( 0.12%) 214,166 ( 0.22%) 2,948 ( 0.17%) 0 1,136 ( 0.27%) 26 ( 0.24%) 0 3 ( 0.01%) 76,003 ( 0.04%) 490 ( 0.01%) . . ???:alloc::raw_vec::RawVecInner<A>::reserve::do_reserve_and_handle [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,232,486 ( 0.12%) 525,586 ( 0.23%) 172,157 ( 0.17%) 7,689 ( 0.44%) 34,906 ( 0.70%) 0 39 ( 0.36%) 0 0 246,070 ( 0.12%) 19,191 ( 0.23%) 26,606 ( 0.54%) 1,696 ( 1.05%) ???:alloc::sync::Arc<T,A>::drop_slow'2 [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,198,202 ( 0.12%) 290,399 ( 0.12%) 194,911 ( 0.20%) 26,249 ( 1.50%) 18,380 ( 0.37%) 10,138 ( 2.40%) 83 ( 0.77%) 0 0 188,358 ( 0.09%) 11,067 ( 0.13%) 10,496 ( 0.21%) 23 ( 0.01%) ???:<rayon::iter::for_each::ForEachConsumer<F> as rayon::iter::plumbing::Folder<T>>::consume [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,163,571 ( 0.12%) 483,158 ( 0.21%) 335,508 ( 0.34%) 7,373 ( 0.42%) 1,515 ( 0.03%) 31 ( 0.01%) 4 ( 0.04%) 0 0 100,068 ( 0.05%) 439 ( 0.01%) . . ./malloc/./malloc/malloc.c:_int_free_maybe_consolidate [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
1,150,952 ( 0.11%) 344,096 ( 0.15%) 100,944 ( 0.10%) 129,647 ( 7.40%) 80 ( 0.00%) 0 187 ( 1.73%) 3 ( 0.01%) 0 474,304 ( 0.24%) 11,658 ( 0.14%) 6,648 ( 0.13%) 235 ( 0.15%) ???:<tokei::language::language_type::LanguageType as core::str::traits::FromStr>::from_str [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,143,653 ( 0.11%) 169,007 ( 0.07%) 53,941 ( 0.05%) 11,103 ( 0.63%) 8,554 ( 0.17%) 41 ( 0.01%) 12 ( 0.11%) 0 2 ( 0.00%) 253,290 ( 0.13%) 9,208 ( 0.11%) . . ./malloc/./malloc/malloc.c:_mid_memalign.isra.0 [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
1,100,836 ( 0.11%) 322,376 ( 0.14%) 309,366 ( 0.31%) 8,865 ( 0.51%) 7,345 ( 0.15%) 0 11 ( 0.10%) 0 0 111,956 ( 0.06%) 9,646 ( 0.11%) . . ???:ignore::gitignore::Gitignore::matched_stripped [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,094,450 ( 0.11%) 174,235 ( 0.07%) 106,788 ( 0.11%) 8,754 ( 0.50%) 1,505 ( 0.03%) 1,197 ( 0.28%) 124 ( 1.15%) 16 ( 0.07%) 48 ( 0.09%) 141,026 ( 0.07%) 7,741 ( 0.09%) 14,243 ( 0.29%) 6,748 ( 4.18%) ???:regex_automata::nfa::thompson::compiler::Compiler::build_many_from_hir [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,059,072 ( 0.11%) 308,896 ( 0.13%) 308,896 ( 0.31%) 10,976 ( 0.63%) 4,206 ( 0.08%) 0 7 ( 0.06%) 0 0 154,448 ( 0.08%) 26 ( 0.00%) . . ???:aho_corasick::automaton::try_find_overlapping_fwd [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
1,031,672 ( 0.10%) 163,520 ( 0.07%) 75,072 ( 0.08%) 11,133 ( 0.64%) 2 ( 0.00%) 0 4 ( 0.04%) 0 0 242,494 ( 0.12%) 10,272 ( 0.12%) . . ???:<core::str::lossy::Utf8Chunks as core::iter::traits::iterator::Iterator>::next [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
992,784 ( 0.10%) 194,352 ( 0.08%) 95,832 ( 0.10%) 13,564 ( 0.77%) 4,476 ( 0.09%) 18 ( 0.00%) 19 ( 0.18%) 0 0 75,368 ( 0.04%) 7,213 ( 0.09%) 1,608 ( 0.03%) 13 ( 0.01%) ???:globset::RequiredExtensionStrategy::matches_into [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
965,501 ( 0.10%) 125,815 ( 0.05%) 159,173 ( 0.16%) 14,702 ( 0.84%) 118 ( 0.00%) 2,404 ( 0.57%) 11 ( 0.10%) 0 482 ( 0.93%) 109,701 ( 0.05%) 11,377 ( 0.14%) . . ./malloc/./malloc/malloc.c:_int_memalign [/usr/lib/x86_64-linux-gnu/libc.so.6]
|
||||
950,404 ( 0.09%) 78,890 ( 0.03%) 191,149 ( 0.19%) 160 ( 0.01%) 4 ( 0.00%) 3,312 ( 0.79%) 5 ( 0.05%) 0 902 ( 1.74%) 188,601 ( 0.09%) 1,420 ( 0.02%) . . ???:aho_corasick::nfa::noncontiguous::NFA::init_full_state [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
926,778 ( 0.09%) 342,025 ( 0.15%) 275,825 ( 0.28%) 17,195 ( 0.98%) 0 10 ( 0.00%) 12 ( 0.11%) 0 0 66,200 ( 0.03%) 5,588 ( 0.07%) . . ???:<std::path::Components as core::cmp::PartialEq>::eq [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
917,172 ( 0.09%) 346,781 ( 0.15%) 327,834 ( 0.33%) 87,891 ( 5.02%) 6,772 ( 0.14%) 12,841 ( 3.05%) 60 ( 0.56%) 0 23 ( 0.04%) 89,061 ( 0.04%) 8,672 ( 0.10%) 13,265 ( 0.27%) 50 ( 0.03%) ???:ignore::dir::Ignore::add_child_path [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
809,344 ( 0.08%) 133,672 ( 0.06%) 129,232 ( 0.13%) 422 ( 0.02%) 1 ( 0.00%) 0 5 ( 0.05%) 0 0 139,408 ( 0.07%) 3,345 ( 0.04%) . . ???:memchr::arch::x86_64::avx2::memchr::Three::find_raw [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
800,097 ( 0.08%) 139,097 ( 0.06%) 0 6,075 ( 0.35%) 169 ( 0.00%) 0 2 ( 0.02%) 0 0 69,854 ( 0.03%) 36 ( 0.00%) . . ./malloc/./malloc/arena.c:realloc
|
||||
783,272 ( 0.08%) 110,320 ( 0.05%) 187,544 ( 0.19%) 4,447 ( 0.25%) 1,943 ( 0.04%) 0 5 ( 0.05%) 0 0 99,288 ( 0.05%) 24 ( 0.00%) 22,064 ( 0.44%) 1,874 ( 1.16%) ???:ignore::gitignore::Gitignore::strip [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
780,144 ( 0.08%) 129,904 ( 0.06%) 37,704 ( 0.04%) 7,780 ( 0.44%) 0 0 4 ( 0.04%) 0 0 179,656 ( 0.09%) 15,311 ( 0.18%) . . ???:memchr::arch::x86_64::avx2::memchr::One::rfind_raw [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
763,584 ( 0.08%) 88,568 ( 0.04%) 54,342 ( 0.05%) 1,975 ( 0.11%) 98 ( 0.00%) 116 ( 0.03%) 25 ( 0.23%) 1 ( 0.00%) 2 ( 0.00%) 84,412 ( 0.04%) 2,150 ( 0.03%) 314 ( 0.01%) 81 ( 0.05%) ???:regex_automata::hybrid::dfa::Builder::build_from_nfa [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
760,798 ( 0.08%) 168,315 ( 0.07%) 327,007 ( 0.33%) 14,018 ( 0.80%) 4,315 ( 0.09%) 6,221 ( 1.48%) 10 ( 0.09%) 0 8 ( 0.02%) 47,364 ( 0.02%) 40 ( 0.00%) 21,303 ( 0.43%) 34 ( 0.02%) ???:std::sys::fs::unix::try_statx [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
745,328 ( 0.07%) 201,440 ( 0.09%) 201,440 ( 0.20%) 2,328 ( 0.13%) 4 ( 0.00%) 0 3 ( 0.03%) 0 0 60,432 ( 0.03%) 704 ( 0.01%) 20,144 ( 0.41%) 1 ( 0.00%) ???:grep_searcher::lines::LineStep::next [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
733,323 ( 0.07%) 215,991 ( 0.09%) 284,250 ( 0.29%) 25,048 ( 1.43%) 57 ( 0.00%) 99 ( 0.02%) 15 ( 0.14%) 0 0 56,829 ( 0.03%) 218 ( 0.00%) 17,037 ( 0.34%) 29 ( 0.02%) ???:ignore::dir::create_gitignore [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
729,969 ( 0.07%) 243,070 ( 0.10%) 272,880 ( 0.28%) 15,496 ( 0.88%) 118 ( 0.00%) 1,837 ( 0.44%) 13 ( 0.12%) 0 0 45,704 ( 0.02%) 582 ( 0.01%) 30,320 ( 0.61%) 26 ( 0.02%) ???:ignore::gitignore::GitignoreBuilder::build [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
727,184 ( 0.07%) 208,024 ( 0.09%) 137,656 ( 0.14%) 7,062 ( 0.40%) 7,960 ( 0.16%) 3,011 ( 0.71%) 60 ( 0.56%) 5 ( 0.02%) 0 113,712 ( 0.06%) 5,992 ( 0.07%) 11,880 ( 0.24%) 1,291 ( 0.80%) ???:tokei::utils::fs::get_all_files::{{closure}} [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
709,737 ( 0.07%) 191,930 ( 0.08%) 143,231 ( 0.14%) 3,799 ( 0.22%) 1,104 ( 0.02%) 523 ( 0.12%) 18 ( 0.17%) 1 ( 0.00%) 0 104,051 ( 0.05%) 6,698 ( 0.08%) 13,631 ( 0.27%) 8,817 ( 5.46%) ???:regex_automata::util::determinize::epsilon_closure [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
615,808 ( 0.06%) 103,448 ( 0.04%) 0 1,987 ( 0.11%) 0 0 2 ( 0.02%) 0 0 202,016 ( 0.10%) 2,605 ( 0.03%) . . ???:tokei::language::embedding::SimpleCapture::starts_in_range [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
613,256 ( 0.06%) 172,008 ( 0.07%) 168,744 ( 0.17%) 5,457 ( 0.31%) 6,950 ( 0.14%) 25 ( 0.01%) 7 ( 0.06%) 0 0 71,904 ( 0.04%) 10,848 ( 0.13%) . . ???:regex_automata::meta::wrappers::HybridEngine::try_which_overlapping_matches [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
604,864 ( 0.06%) 50,954 ( 0.02%) 301,658 ( 0.30%) 240 ( 0.01%) 9 ( 0.00%) 25,102 ( 5.95%) 20 ( 0.19%) 0 8,658 (16.70%) 25,362 ( 0.01%) 166 ( 0.00%) 50,207 ( 1.01%) 32 ( 0.02%) ???:<T as alloc::vec::spec_from_elem::SpecFromElem>::from_elem [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
557,238 ( 0.06%) 238,510 ( 0.10%) 195,167 ( 0.20%) 16,757 ( 0.96%) 5,285 ( 0.11%) 151 ( 0.04%) 10 ( 0.09%) 1 ( 0.00%) 4 ( 0.01%) 33,967 ( 0.02%) 1,263 ( 0.02%) . . ???:crossbeam_deque::deque::Worker<T>::pop [/home/user/peltier.io/targets/tokei/workspace/target/release/tokei]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
The following files chosen for auto-annotation could not be found:
|
||||
|
||||
@@ -75,7 +75,9 @@ def main() -> int:
|
||||
for line in patch.splitlines():
|
||||
if line.startswith(("--- ", "+++ ")):
|
||||
p = line[4:].strip()
|
||||
if p.startswith("/") or "../" in p:
|
||||
# /dev/null is git's marker for new/deleted files — the one
|
||||
# absolute path the harness allowlist also accepts.
|
||||
if (p.startswith("/") and p != "/dev/null") or "../" in p:
|
||||
problems.append(f"patch path escapes workspace: {p}")
|
||||
|
||||
print("\npatch:")
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Differential fuzz for comrak attempts: pristine vs candidate must
|
||||
produce byte-identical HTML (stdout), stderr, and exit code on mutated
|
||||
markdown. comrak is a single-threaded stdin->stdout filter, so raw byte
|
||||
comparison needs no canonicalization.
|
||||
|
||||
python3 scripts/diff-fuzz-comrak.py <workdir> <iters> <candidate-bin>
|
||||
|
||||
Seeds: windows of the pinned Pro Git corpus. Mutations focus on inline/
|
||||
block structure the parser and teardown paths exercise: emphasis, code
|
||||
fences, links, HTML blocks, list markers, plus raw byte noise.
|
||||
"""
|
||||
|
||||
import random
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path("/home/user/peltier.io")
|
||||
BASE = ROOT / "targets/comrak/baseline/release/comrak"
|
||||
CAND = ROOT / sys.argv[3]
|
||||
CORPUS = ROOT / "corpora/comrak/progit.md"
|
||||
WORK = Path(sys.argv[1])
|
||||
ITERS = int(sys.argv[2])
|
||||
|
||||
TOKENS = [
|
||||
b"**", b"*", b"__", b"_", b"`", b"```", b"~~~", b"~~", b"[", b"](", b")",
|
||||
b"![", b"#", b"##", b">", b"- ", b"1. ", b"|", b"---", b"<div>", b"</div>",
|
||||
b"<!--", b"-->", b"\\", b"&", b"<http://x>", b" ", b"\t",
|
||||
]
|
||||
|
||||
|
||||
def mutate(data: bytes, rng: random.Random) -> bytes:
|
||||
b = bytearray(data)
|
||||
for _ in range(rng.randrange(1, 8)):
|
||||
if not b:
|
||||
b = bytearray(rng.choice(TOKENS))
|
||||
continue
|
||||
op = rng.randrange(5)
|
||||
pos = rng.randrange(len(b) + 1)
|
||||
if op == 0:
|
||||
b[pos:pos] = rng.choice(TOKENS)
|
||||
elif op == 1 and len(b) > 2:
|
||||
del b[pos:min(len(b), pos + rng.randrange(1, 16))]
|
||||
elif op == 2 and pos < len(b):
|
||||
b[pos] = rng.randrange(256)
|
||||
elif op == 3:
|
||||
end = min(len(b), pos + rng.randrange(1, 64))
|
||||
b[end:end] = b[pos:end]
|
||||
else:
|
||||
b[pos:pos] = b"\n\n"
|
||||
return bytes(b)
|
||||
|
||||
|
||||
def run(binary: Path, payload: bytes) -> tuple[bytes, bytes, int]:
|
||||
r = subprocess.run([str(binary)], input=payload, capture_output=True, timeout=60)
|
||||
return r.stdout, r.stderr, r.returncode
|
||||
|
||||
|
||||
def main() -> int:
|
||||
rng = random.Random(0xC0FFEE)
|
||||
corpus = CORPUS.read_bytes()
|
||||
# Seed windows across the whole book, varied sizes.
|
||||
seeds = [
|
||||
corpus[o : o + n]
|
||||
for o in range(0, len(corpus) - 65536, len(corpus) // 300)
|
||||
for n in (512, 4096, 32768)
|
||||
]
|
||||
WORK.mkdir(parents=True, exist_ok=True)
|
||||
divergences = 0
|
||||
for i in range(ITERS):
|
||||
payload = mutate(rng.choice(seeds), rng)
|
||||
a = run(BASE, payload)
|
||||
b = run(CAND, payload)
|
||||
if a != b:
|
||||
divergences += 1
|
||||
keep = WORK / f"divergence-{i}"
|
||||
keep.mkdir()
|
||||
(keep / "input.md").write_bytes(payload)
|
||||
(keep / "baseline.out").write_bytes(a[0] + b"\n--stderr--\n" + a[1] + f"\nrc={a[2]}".encode())
|
||||
(keep / "candidate.out").write_bytes(b[0] + b"\n--stderr--\n" + b[1] + f"\nrc={b[2]}".encode())
|
||||
print(f"DIVERGENCE at iter {i}; kept in {keep}")
|
||||
if (i + 1) % 1000 == 0:
|
||||
print(f"{i + 1}/{ITERS}, {divergences} divergences", flush=True)
|
||||
print(f"done: {ITERS} inputs, {divergences} divergences")
|
||||
return 1 if divergences else 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user