mirror of
https://github.com/Jeuners/ECC.git
synced 2026-09-09 15:02:30 +02:00
fix: P1 test state-file PID mismatch + P2 session key eviction
P1 (cubic-dev-ai): Test process PID differs from spawned hook PID, so test was seeding/clearing wrong state file. Fix: pass fixed CLAUDE_SESSION_ID='gateguard-test-session' to spawned hooks. P2 (cubic-dev-ai): Pruning checked array could evict __bash_session__ and other session keys, causing gates to re-fire mid-session. Fix: preserve __prefixed keys during pruning, only evict file-path entries. 9/9 tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
6ed1c643e7
commit
67256194a0
2 changed files with 10 additions and 5 deletions
|
|
@ -59,9 +59,12 @@ function loadState() {
|
|||
function saveState(state) {
|
||||
try {
|
||||
state.last_active = Date.now();
|
||||
// Prune checked list if it exceeds the cap
|
||||
// Prune checked list if it exceeds the cap.
|
||||
// Preserve session keys (__prefixed) so gates like __bash_session__ don't re-fire.
|
||||
if (state.checked.length > MAX_CHECKED_ENTRIES) {
|
||||
state.checked = state.checked.slice(-MAX_CHECKED_ENTRIES);
|
||||
const sessionKeys = state.checked.filter(k => k.startsWith('__'));
|
||||
const fileKeys = state.checked.filter(k => !k.startsWith('__'));
|
||||
state.checked = [...sessionKeys, ...fileKeys.slice(-(MAX_CHECKED_ENTRIES - sessionKeys.length))];
|
||||
}
|
||||
fs.mkdirSync(STATE_DIR, { recursive: true });
|
||||
// Atomic write: temp file + rename prevents partial reads
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue