d279af85d5
withDetected() rendered lane.detected_stage forever once written — the TTL in recordDetection only stops future writes from advancing past a stale floor, it never clears the row, so a lane gone quiet kept painting amber nodes from activity that was no longer current. Also add the shared test-runner regex to the ship-feature pipeline's `gates` node: Stage 1b's independent-test subagent runs the repo's test command directly, not through `ccam`, and had no detection fallback if `ccam stage tests` was skipped.