Repository navigation
v1.3.0 — Quality improvements
Five improvements to verification quality, trust calibration, and usability.
What changed
Cross-file synthesis in self-test. The prior self-test sampled only single-file Key content claims — it never tested whether the pack understands relationships between files. Self-test now generates ≥30% Type B (cross-file synthesis) questions requiring joins across ≥2 notes to answer correctly. SELF_TEST.md reports factual and synthesis pass rates separately. A pack can score 95% factual and 60% synthesis — a meaningful signal that the aggregate hid before.
Staleness signal on every run. Pack age (days since build) and source drift (% of source files changed since last build) are now always surfaced — in INDEX.md, the reporting summary, and index.json. Warning escalates at ≥30% drift or ≥90 days. Cache hits still show it. Diff mode now re-runs self-test proportionally after re-extraction — the prior self-test score is invalidated by any source change and must refresh before coverage: 100 is restored.
Implicit numerical/temporal contradiction detection. CONFLICTS.md previously only caught contradictions where two files used the same entity name but stated different values. The new implicit pass normalizes all dates, amounts, durations, and counts across notes, then flags pairs where the same event or entity has inconsistent values — regardless of whether they share a name. Catches: "deadline is March 15" in one file vs "3 months from January" in another. Findings tagged [explicit] or [implicit].
Graduated ask mode on partial coverage. Ask mode previously hard-refused when coverage: partial. Now it checks whether the files relevant to the question are in the scanned set. If yes → answers with a MEDIUM confidence caveat and a warning. If no → refuses with the specific unscanned files listed. Removes the all-or-nothing block that made partial packs useless even when the relevant area was fully scanned.
Domain-driven red-team threshold. The ≥10-file rule for spawning a real independent red-team subagent was a cost heuristic. --domain=legal, --domain=finance, and --domain=medical now always get a real independent subagent regardless of file count. These are the domains where a confidently-wrong answer costs most — a 5-file contract set deserves the same adversarial scrutiny as a 50-file one.