Each ADR records one decision, the constraint that forced it, and what it
cost. They are append-only: a decision that stopped being right gets a
successor and a Superseded by pointer, never a silent edit. Several of
these exist because a measurement contradicted an assumption — those are
the ones worth reading first.
Start here if you are new: 0005 (why this project changed shape), then 0009 (the first honest measurement, and the bug it found).
| # | Decision | Status |
|---|---|---|
| 0005 | Reposition from Z3 code verification to a model-agnostic agentic harness | Accepted |
| 0006 | SQLite for the code graph; ingestion scope declared rather than implied | Accepted |
| 0007 | Backtick-only claim extraction; heuristics that report themselves as heuristics | Accepted — measured in 0018 |
| 0008 | Rescue T6's rule engine; check the architecture against its own graph | Accepted |
| 0010 | Generalize repetition.py from classification verdicts to arbitrary metrics |
Accepted |
| 0012 | Protect financial figures automatically; a real false positive found on real data | Accepted |
Each of these is an experiment with a verdict, including the ones whose verdict was "this pilot could not have detected an effect."
| # | Question | Verdict |
|---|---|---|
| 0009 | What does the context pipeline actually save on real transcripts? | 1.1% unbudgeted, 55.2% budgeted — and a methodology bug in the benchmark itself |
| 0011 | Does the harness change a task's outcome? | indistinguishable_from_noise — 20/20 both conditions. A ceiling, not a null result. Design superseded by 0013 |
| 0013 | Does figure protection survive a real token budget? | likely_real_difference, 0/5 vs 5/5 |
| 0014 | Does an agent use a memory tool unprompted across turns? | likely_real_difference, 0/5 vs 5/5 — every trial chose to persist and recall |
| 0015 | Does recovering a handoff after a reset change the outcome? | Success ceilinged; cost fell below the noise floor |
| 0016 | Does a harder bug break that ceiling? | No — third ceiling; cost effect reproduced and grew |
| 0017 | Does changing the bug's shape break it? | No — fourth ceiling; cost effect reproduced a third time |
| 0018 | Does the Consistency Engine catch real hallucinations? | 100% recall on invented symbols; three real bugs found and fixed |
| 0019 | Does an ambiguity not derivable from code at all break the ceiling? | No — the model's naming convention matched the fabricated policy 10/10 regardless of condition |
| 0020 | Does an ambiguity with no linguistic convention finally break it? | Yes — likely_real_difference, 0/5 vs 5/5, the first success-rate split in the series |
| 0021 | Did ADR-0018's fix actually close the relation blind spot? | No — it flipped a silent false negative into an asserted false positive; corrected to UNVERIFIABLE |
| 0022 | Can a real trial harness replace hand-run, hand-scored pilots? | Yes — verity eval retains a content-hashed artifact per trial and flags degenerate noise floors instead of hiding them; reproduced pilot 8's result exactly |
| 0023 | Can this project measure when memory was surfaced, not just when it was written? | Yes, narrowly — a new Surfacing record, emitted from build_handoff and decision resurfacing; "was it used" stays honestly unresolved except one negative signal |
| 0024 | Can Agent Reality Check widen its recall without repeating ADR-0021's mistake? | Yes — imports, negation, multi-target relations, and constraints-as-evidence, each narrow and each declining to guess where the graph has no adjudicating edge |
| 0025 | Can Verity proactively surface context without breaking the prune pipeline's invariants? | Yes, as a pre-pass only — context/adaptive.py + memory/surface.py merge into ContextPipeline.run unchanged; wiring and a measured pilot are stated as future work, not done here |
| 0026 | Can verification depth scale with file risk, using only signals already in the graph? | Yes — classify_file_risk tiers by path convention / blast radius / fan-in / untested symbols; rules_for_tier gates rule depth; both builtin rules tagged with risk tiers and sql-injection caveat backfilled |
| 0027 | Did ADR-0022 actually close invariant 7? | No — six checkable failures, including a default output path inside .gitignore and a CLI that could not express the metric ADR-0022 claimed to reproduce. Evidence is now a diff against a hash-pinned fixture; unretained ⇒ unpublishable, mechanically |
| 0028 | Did ADR-0026's risk tiering work outside its own tests? | No — any path form but the ingester's silently yielded zero signals and a clean-looking low for every file. The suite's only MagicMock could not express the difference; tests rewritten against a real graph, and unittest.mock is gone |
| 0029 | Does adaptive surfacing recall the records that matter most? | It did the opposite — BM25 omits zero-overlap candidates entirely, so a constraint sharing no word with the task was dropped before the budget applied and reported as a budget outcome. 0 of 4 records surfaced on a real store. Unscored candidates now rank last instead of vanishing |
Kept as history. All four describe the Z3 verification system that
ADR-0005 replaced; the documents and
evidence they link to live on the legacy/pre-pivot-research branch and at
the pre-harness-pivot tag.
| # | Decision |
|---|---|
| 0001 | Define the verifiable Python subset for the AST→Z3 converter |
| 0002 | Bind function parameters to Z3 variables |
| 0003 | Hybrid lexical + semantic retrieval over the rule KG |
| 0004 | Stream pipeline runs over SSE |
# ADR-NNNN: Title
- **Status**: Accepted | Superseded by [ADR-NNNN](...)
- **Date**: YYYY-MM-DD
- **Context**: one or two sentences on what forced the decision
## Context / Decision / Result / ConsequencesState consequences honestly, including the ones that argue against the decision. An ADR that only lists benefits is a press release.