@@ -94,6 +94,38 @@ pipx-published binary. For QA code-review smoke, always use the absolute path
9494` /Users/nikolay/.local/bin/diffctx ` . Tests, builds, and pre-commit need the venv
9595binary; only the user-facing smoke / review step needs the pipx one.
9696
97+ ## YAML Cases: CI Runs Only the First 20
98+
99+ ` ci.yml ` sets ` DIFFCTX_YAML_CASES_LIMIT: "20" ` , so ` cargo test --test yaml_cases `
100+ in CI runs only the first 20 discovered cases (sorted by filename). Everything
101+ alphabetically after that — ` kubernetes_* ` , later ` bal2_* ` , etc. — ** never runs
102+ in CI** . A green CI does NOT mean the full case suite passes. On every QA pass,
103+ run the FULL suite locally (` cd diffctx && cargo test --release --test yaml_cases ` )
104+ and triage cases below the score threshold (default ` min_score=10 ` , override via
105+ ` DIFFCTX_YAML_MIN_SCORE ` ). A failing case scores ` 100 * recall * (1 - forbidden_rate) ` ;
106+ ` forbidden_rate=100% ` means the selection pulled in every "unrelated" manifest.
107+
108+ ## Edge-Builder Regexes: Compile-Probe, Not Pipeline Coverage
109+
110+ The diff pipeline does NOT force every edge-builder ` Lazy<Regex> ` for small test
111+ inputs (PPR can pull a fragment in via a structural edge without ever invoking
112+ the k8s selector/label extraction). So a YAML case that "passes" does not prove
113+ the edge regexes even compile. A nested bounded repetition of a Unicode negated
114+ class — ` (?:...[^\n:]{1,200}\n){1,50} ` — compiles past regex's default 10 MiB
115+ limit and ` .unwrap() ` aborts the process the first time it's forced (a real k8s
116+ repo via the CLI hits it; the test suite did not). The deterministic guard is a
117+ ` #[cfg(test)] ` probe that forces every regex in the module to compile
118+ (` kubernetes::tests::all_kubernetes_regexes_compile ` ). Unbound the value class
119+ (` [^\n:]+ ` ) instead of bounding it — the regex crate is linear-time, so no ReDoS.
120+
121+ ## Building the Extension: maturin, Not ` cargo build --features python `
122+
123+ ` cargo build --features python ` fails at the link step (` linking with cc failed ` ,
124+ undefined Python symbols) because the ` extension-module ` pyo3 feature expects the
125+ host interpreter to provide symbols at import time. To compile-check the Python
126+ bridge, use ` .venv/bin/python -m maturin develop --release ` (or ` cargo build `
127+ WITHOUT ` --features python ` / ` cargo test --lib ` for the pure-Rust paths).
128+
97129## Empty-Diff Warning Is Expected on Docs-Only HEAD
98130
99131` diffctx --diff ` (bare, no range → defaults to HEAD) on a docs-only HEAD prints
0 commit comments