Re-running a different blueprint into a same-named trace dir orphans still-chartable tap files #311
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Source
Fieldtest of the tap-subscribers cycle (#283 + #77), spec_gap SG3 (borderline bug). Observed running
tap_1_record_spreadthentap_4_measure_ic— both default to blueprint namegraph, so both record intoruns/traces/graph/.Observed misbehaviour
The second run rewrote
runs/traces/graph/index.jsonto["signal","price"]but left the first run'sspread.jsonin place.aura chart graph(overlay, index-driven) correctly ignores the orphan, butaura chart graph --tap spreadstill renders it — data from a different topology than the run's ownindex.jsondescribes.Why this is unspecified
Nothing in C18/C27 says
begin_runclears the run dir, or that a run name must be unique. The record path streams new tap files and rewritesindex.jsonwithout 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
begin_run— a run owns its trace dir; stale siblings from a prior topology are removed. Closes the--tapinconsistency as a side effect.begin_runrefuses if the dir exists with a different tap set, forcing a distinct run name.--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.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 — andruns/traces/graph/slow_ma.jsonlingers from the earlier run whileindex.json'stapslists 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, binaryeb2b0a1). 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.