You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After verify-subagent-pull-under-load was archived (#548), re-running its measurement specs recreated openspec/changes/verify-subagent-pull-under-load/ containing only a partial measurements.json. That directory looks like an active OpenSpec change to tooling that enumerates openspec/changes/*, but it is a leftover artifact of an archived one.
record() calls mkdirSync(dirname(EVIDENCE_PATH), { recursive: true }), so the directory is created rather than failing loudly once the change moves to openspec/changes/archive/<date>-<name>/.
Consequences
A phantom active-change directory reappears on every re-measure.
Worse for evidence integrity: the write silently goes somewhere other than the archived heap-evidence.md's source of truth, so a re-run appears to leave the archived numbers "unchanged" while actually recording different ones elsewhere. That happened during test(verify-subagent-pull-under-load): verify the four scenarios the payload change shipped unverified #548 — the final post-fix run's numbers landed in the stray path and were never transcribed. The recorded verdict (~36×) is unaffected in direction, but the failure mode is exactly the staleness the evidence file exists to prevent.
Suggested fix
Resolve the change dir at runtime instead of hardcoding it — prefer openspec/changes/archive/*-verify-subagent-pull-under-load/ when the active dir is absent, and fail (rather than mkdirSync) when neither exists, so a misdirected write is loud instead of silent.
Low severity: both specs are opt-in (PI_SYNTH_AGENT_TICKS=1, and PI_E2E_MEASURE=1 for the measurement file), so neither runs in normal CI.
Symptom
After
verify-subagent-pull-under-loadwas archived (#548), re-running its measurement specs recreatedopenspec/changes/verify-subagent-pull-under-load/containing only a partialmeasurements.json. That directory looks like an active OpenSpec change to tooling that enumeratesopenspec/changes/*, but it is a leftover artifact of an archived one.Cause
Both specs hardcode the pre-archive path:
tests/e2e/subagent-pull-measurements.spec.ts:46tests/e2e/subagent-pull-under-load.spec.ts:68record()callsmkdirSync(dirname(EVIDENCE_PATH), { recursive: true }), so the directory is created rather than failing loudly once the change moves toopenspec/changes/archive/<date>-<name>/.Consequences
heap-evidence.md's source of truth, so a re-run appears to leave the archived numbers "unchanged" while actually recording different ones elsewhere. That happened during test(verify-subagent-pull-under-load): verify the four scenarios the payload change shipped unverified #548 — the final post-fix run's numbers landed in the stray path and were never transcribed. The recorded verdict (~36×) is unaffected in direction, but the failure mode is exactly the staleness the evidence file exists to prevent.Suggested fix
Resolve the change dir at runtime instead of hardcoding it — prefer
openspec/changes/archive/*-verify-subagent-pull-under-load/when the active dir is absent, and fail (rather thanmkdirSync) when neither exists, so a misdirected write is loud instead of silent.Low severity: both specs are opt-in (
PI_SYNTH_AGENT_TICKS=1, andPI_E2E_MEASURE=1for the measurement file), so neither runs in normal CI.Found while shipping #548.