Files
Aura/docs/design/contracts/c27-declared-taps.history.md
claude b18a695531 feat(aura-runner, aura-cli, aura-registry): a run's trace directory is keyed by its own identity
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
2026-07-27 10:52:56 +02:00

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."