You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: document why the graph is a computed snapshot, not a maintained store (#174)
Adds docs/SNAPSHOTS.md, the design argument that was missing everywhere:
enola's output is a verdict on a change, a verdict is a function of two
states, and a graph updated in place destroys the earlier state with the
very edit being graded. Everything otherwise unusual — pinned baselines,
content-fingerprint snapshot IDs, the comparability guard, from-scratch
re-linking on append — follows from treating the graph as a value rather
than as state. Includes what the choice costs and where a continuously
maintained graph is the better design.
Registered from README (Learn more), ARCHITECTURE.md (a pointer section
after "Determinism & incremental updates" plus one line in "The idea"),
the BENCHMARKS footer bar and section 1, and the CLI gate section.
Accuracy fixes found while writing it:
- README cited 30 benchmarked repositories; BENCHMARKS measures 38
- set_baseline listed three pinned artifacts; the code copies four,
including receipt.json, which the comparability check depends on
- the A/B cost column was cited as evidence about cost per query. It
compares an agent that checked its work against one that did not, and
the cheap arm shipped the cycle 3/3, so it isolates nothing about what
enola itself costs. Corrected in BENCHMARKS (three places) and in the
new document.
Trims retrospective narration from the shipped surface: six passages in
ARCHITECTURE.md and one in docs/extraction/python.md now state each rule
in present tense, as the failure mode the design prevents, rather than
recounting how it came about. The repo-root write-up they referred to is
removed with its eight references — one in CONTRIBUTING.md, six source
comments, one in a working document.
Copy file name to clipboardExpand all lines: README.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -175,7 +175,8 @@ Framework- and platform-specific detection for each language is described in **[
175
175
## Learn more
176
176
177
177
-**[docs/CLI.md](docs/CLI.md)** - setup, every command and flag, the exit codes, and the `--explain` report.
178
-
-**[docs/BENCHMARKS.md](docs/BENCHMARKS.md)** - reproducibility, delta precision, cross-repo coverage and scale, measured on 30 public repositories - including the three defects the run found in enola itself.
178
+
-**[docs/BENCHMARKS.md](docs/BENCHMARKS.md)** - reproducibility, delta precision, cross-repo coverage and scale, measured on 38 public repositories.
179
+
-**[docs/SNAPSHOTS.md](docs/SNAPSHOTS.md)** - why enola computes a graph on demand and keeps it as an addressable snapshot rather than maintaining one continuously-updated graph - and where the opposite choice is the right one.
179
180
-**[docs/extraction/](docs/extraction/)** - per language, what specific code produces which facts, from committed fixtures - and what each extractor deliberately does not resolve.
180
181
-**[ARCHITECTURE.md](ARCHITECTURE.md)** - the concept, the fact model, the pipeline, the MCP tool reference, and the value model.
181
182
-**[examples/](examples/)** - ready-made per-language and multi-repo configs, plus a pre-commit hook and a CI workflow.
Copy file name to clipboardExpand all lines: docs/CLI.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -453,6 +453,8 @@ enola baseline pin /path/to/repo # 1. freeze how it looks now, BEFORE editing
453
453
enola check /path/to/repo # 2. grade what they did
454
454
```
455
455
456
+
The baseline is a pinned artifact rather than "whatever state the tool last held" - it survives re-snapshots, publishes atomically, and travels to another machine. Why the graph works that way at all: **[docs/SNAPSHOTS.md](SNAPSHOTS.md)**.
0 commit comments