A single run recorded into `runs/traces/<render-name>/`, so a second run of the same blueprint overwrote the first and could leave a stale tap file beside an index that no longer listed it. The directory is now `runs/traces/<render-name>-<id8>/`, where the id is a digest over the run's own manifest: two runs differing in any identity-bearing input land in two directories, two runs differing in nothing land in one. The digest hashes the manifest with its two provenance fields removed and its parameter vectors merged. - `commit` (the aura binary's build sha) and `project.commit` (the project repo's HEAD plus a `-dirty` marker, re-derived on every invocation) record who built or checked out the code, not what the run was. The latter would have minted a fresh directory for any uncommitted file anywhere in the project worktree — the authoring loop's normal state. - `params` and `defaults` are merged name-sorted before hashing: how a value was supplied is not what the run is, so a no-op `--override` no longer splits one run across two directories. The two vectors are disjoint by construction. `project.dylib_sha256` stays in. It is what the C13 hot-reload comparison varies — an unchanged blueprint against a rebuilt node crate — which the campaign leg structurally cannot express, since its axes vary params, instrument and window, never code. The manifest is now assembled before the tap bind rather than after the run. Every input it needs was already resolved at that point, and the one value both keys the directory and enters the report, so a handle can never name one identity while the record describes another. `aura chart <render-name>` no longer names a directory; it now lists the trace handles beginning with that name instead of refusing blankly. `TraceStoreError::NameTaken` stops prescribing `--trace`, retired in #319. C18, C22, C23 and C27 record the new identity, each superseded clause moved verbatim to its history sidecar; C23 gains its first. closes #311
1.4 KiB
C27 — Declared taps: named measurement points bind sinks run-mode-aware: history
FROZEN HISTORICAL RECORD. Each block below was true as of its cycle/date stamp and may be superseded; this file is NOT current truth and NOT a grounding surface. Current contract: c27-declared-taps.md.
Current-state tap-plan sentence (2026-07-21, #283; superseded 2026-07-24 by
the #310 --tap selector): "…and the shared bind_tap_plan/BoundTaps
pair called by both declared-tap entry points, run_signal_r
(aura-runner::member) and run_measurement (aura-runner::measure); both
CLI verbs pass a record-all plan."
Current-state "single CLI verb" clause (superseded by the #319 sugar
retirement, 2026-07-25): "…both arms of the single CLI verb aura run,
whose repeatable --tap TAP=FOLD selector (#310) makes the Named
selection data-reachable…"
Current-state RunOutcome sentence (superseded 2026-07-27 by #311's
identity-keyed single-run trace directory): "Since #309 both entry points
return that pair as a named RunOutcome { report, skipped, trace_name }, the
third field being the trace-store handle the run recorded under (Some under
exactly the condition that opens the write path, None otherwise) — the same
beside-the-report discipline, widened rather than re-cut: the record keeps its
shape and the shell renders the handle."