audit: cycle 0029 (#33) — run registry; one ledger drift fixed

Cycle-close architect review of 16e31fe..HEAD against docs/design/INDEX.md +
CLAUDE.md. Regression gate: none configured (commands.regression: []), so the
architect is the sole gate.

What holds:
- C18 honoured — aura-registry stores (manifest, metrics) RunReports append-only
  to runs/runs.jsonl, reproducible-from-manifest; no git/Gitea duplication, no
  multi-project manager. The depth deferrals (lineage, re-derive, run-diff,
  run_id, Aura.toml runs-dir) are named in the spec, not silently dropped.
- C1 preserved — the sweep stays disjoint/lock-free; "sweep == N independent
  runs" now compares full RunReports; serde_json output is deterministic.
- C12/C19/C20 fit — SweepPoint.report closes cycle C's deferred manifest-per-
  point gap; the manifest stays World-supplied (engine `sweep` is `Fn -> RunReport`,
  domain-free).
- Workspace green (cli_run 11, registry 5, engine 93, …); clippy clean.

Resolution:
- FIX (this commit): docs/design/INDEX.md "External components" (the data-server
  row) still asserted the struck "external-dependency firewall / engine crates
  stay external-dependency-free" framing — stale after the C16 amendment (aura-
  core/aura-engine now link serde). Rewritten to the amended per-case policy.
  The iter-1 commit's "no ledger text still asserts it" missed this mirror; it is
  now true (re-grep clean across the ledger and live source).
- FOLLOW-UP (#54, idea): RunReport has two divergent JSON encoders — serde for
  the on-disk store, hand-rolled to_json for stdout. This was a deliberate,
  spec-named deferral (keep stdout goldens stable this cycle); filed for the
  stdout→serde unification that retires the last hand-rolled writer.

Ratify: the C16 amendment (blanket zero-dependency -> considered per-case policy)
is the intentional contract change of this cycle, justified in the 0029 spec and
the iter-1 commit; this audit ratifies it as drift-clean (the codebase no longer
contradicts it anywhere).

closes #33
This commit is contained in:
2026-06-10 20:41:44 +02:00
parent 5bded0ca83
commit 654b23ad1f
+9 -7
View File
@@ -66,13 +66,15 @@ source of truth — not session memory.
boundary (C3) therefore **transposes** these AoS records into aura's SoA
columns (C7) and normalizes `time_ms` → canonical epoch-ns at that one
boundary. Pulled in as a cargo git dependency by the **`aura-ingest`** crate
(cycle 0011) — the ingestion edge and the workspace's **external-dependency
firewall**: `aura-ingest` is the *only* crate that links `data-server` (hence
its transitive `chrono`/`regex`/`zip`), so the engine crates (`aura-core` /
`aura-std` / `aura-engine` / `aura-cli`) and the frozen deploy artifact (C13)
stay external-dependency-free. Consequence: `cargo build/test --workspace` now
resolves from a populated cargo cache (one Gitea fetch) rather than fully
offline.
(cycle 0011) — the **data-source ingestion edge**, where the `data-server`
external tree (and its transitive `chrono`/`regex`/`zip`) enters the workspace.
Under the amended C16 **per-case dependency policy** (cycle 0029), `aura-ingest`
is no longer a zero-dep *firewall* for the rest: the engine crates link
standard vetted crates where they earn their place (e.g. `serde`/`serde_json`
for the run registry, cycle 0029), with particular scrutiny for the frozen
deploy artifact (C13). Consequence: `cargo build/test --workspace` resolves
from a populated cargo cache (a Gitea fetch for `data-server` + crates.io for
the standard crates) rather than fully offline.
- **RustAst (`myc`)** — `~/dev/RustAst`, Gitea `Brummel/RustAst`
(`http://192.168.178.103:3000/Brummel/RustAst.git`). The predecessor DSL attempt
(Foundation): **a conceptual reference, never a dependency** — its DSL authoring