Re-running a different blueprint into a same-named trace dir orphans still-chartable tap files #311

Open
opened 2026-07-22 00:37:24 +02:00 by claude · 1 comment
Collaborator

Source

Fieldtest of the tap-subscribers cycle (#283 + #77), spec_gap SG3 (borderline bug). Observed running tap_1_record_spread then tap_4_measure_ic — both default to blueprint name graph, so both record into runs/traces/graph/.

Observed misbehaviour

The second run rewrote runs/traces/graph/index.json to ["signal","price"] but left the first run's spread.json in place. aura chart graph (overlay, index-driven) correctly ignores the orphan, but aura chart graph --tap spread still renders it — data from a different topology than the run's own index.json describes.

Why this is unspecified

Nothing in C18/C27 says begin_run clears the run dir, or that a run name must be unique. The record path streams new tap files and rewrites index.json without removing stale siblings. Likely pre-existing (dir-per-blueprint-name predates #283) and orthogonal to the subscription model — NOT a regression of this cycle.

Fork

  • (a) Clear the run dir on begin_run — a run owns its trace dir; stale siblings from a prior topology are removed. Closes the --tap inconsistency as a side effect.
  • (b) Reject a name collisionbegin_run refuses if the dir exists with a different tap set, forcing a distinct run name.
  • (c) Ratify current behaviour — document that --tap <name> is not index-validated and a re-run into an existing dir is the caller's hazard.

If judged a correctness bug, route via debug (RED-first) once the contract is chosen. Filed at cycle close of #283.

## Source Fieldtest of the tap-subscribers cycle (#283 + #77), spec_gap SG3 (borderline bug). Observed running `tap_1_record_spread` then `tap_4_measure_ic` — both default to blueprint name `graph`, so both record into `runs/traces/graph/`. ## Observed misbehaviour The second run rewrote `runs/traces/graph/index.json` to `["signal","price"]` but left the first run's `spread.json` in place. `aura chart graph` (overlay, index-driven) correctly ignores the orphan, but `aura chart graph --tap spread` still renders it — data from a *different* topology than the run's own `index.json` describes. ## Why this is unspecified Nothing in C18/C27 says `begin_run` clears the run dir, or that a run name must be unique. The record path streams new tap files and rewrites `index.json` without removing stale siblings. Likely **pre-existing** (dir-per-blueprint-name predates #283) and orthogonal to the subscription model — NOT a regression of this cycle. ## Fork - **(a) Clear the run dir on `begin_run`** — a run owns its trace dir; stale siblings from a prior topology are removed. Closes the `--tap` inconsistency as a side effect. - **(b) Reject a name collision** — `begin_run` refuses if the dir exists with a different tap set, forcing a distinct run name. - **(c) Ratify current behaviour** — document that `--tap <name>` is not index-validated and a re-run into an existing dir is the caller's hazard. If judged a correctness bug, route via `debug` (RED-first) once the contract is chosen. Filed at cycle close of #283.
claude added the bug label 2026-07-22 00:37:24 +02:00
claude added this to the Trace store — completing the tap-subscriber cut milestone 2026-07-23 13:42:58 +02:00
Author
Collaborator

Second observation of the cross-run tap-file lifecycle gap (m37 milestone fieldtest, 2026-07-24)

Same lifecycle class as this issue, now reachable without a blueprint-name collision: with #310's per-run tap plans, a default run records slow_ma, a later --tap-planned run leaves it unbound — and runs/traces/graph/slow_ma.json lingers from the earlier run while index.json's taps lists only the three bound taps. The chart stays clean (index-gated), but the ledger (C27) does not say whether a run prunes taps it did not produce; "file lingers, index is authoritative" and "prune to the current plan" were both defensible readings for a source-blind consumer (fieldtests/m37-data-authorability-boundary/m37_1, binary eb2b0a1). Whichever of the three candidate contracts this issue picks should also pin the per-run-plan case, and C27's tap-store paragraph should record the chosen lifecycle.

## Second observation of the cross-run tap-file lifecycle gap (m37 milestone fieldtest, 2026-07-24) Same lifecycle class as this issue, now reachable without a blueprint-name collision: with #310's per-run tap plans, a default run records `slow_ma`, a later `--tap`-planned run leaves it unbound — and `runs/traces/graph/slow_ma.json` lingers from the earlier run while `index.json`'s `taps` lists only the three bound taps. The chart stays clean (index-gated), but the ledger (C27) does not say whether a run prunes taps it did not produce; "file lingers, index is authoritative" and "prune to the current plan" were both defensible readings for a source-blind consumer (`fieldtests/m37-data-authorability-boundary/m37_1`, binary eb2b0a1). Whichever of the three candidate contracts this issue picks should also pin the per-run-plan case, and C27's tap-store paragraph should record the chosen lifecycle.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#311