mirror of
https://github.com/Jeuners/ECC.git
synced 2026-09-09 15:02:30 +02:00
Mirror the previous commit's `writeBridgeAtomic` fix on the
companion `writeWarnState` in `ecc-context-monitor.js`. Same shape:
fixed `${target}.tmp` → `${target}.${process.pid}.${randomNonce}.tmp`,
plus best-effort cleanup of the tmp file on `renameSync` failure
(throws original error after cleanup).
`writeWarnState` debounces the context-monitor's threshold alarms
(`COST_NOTICE_USD`, `COST_WARNING_USD`, `COST_CRITICAL_USD`, plus the
context-remaining and loop-detection ones). Without unique suffixes,
two PostToolUse subprocesses racing on the warn-state file produce
either a corrupted JSON debounce-state on disk or an ENOENT throw
that the hook catches and swallows — either way the next warn-state
read returns the default `{callsSinceWarn: 0, lastSeverity: null}`
and the threshold alarms re-fire or stop firing erratically. Users
see warning messages flicker or vanish; debounce no longer works.
Three call sites in this repo now share the same atomic-write
contract:
- `writeBridgeAtomic` (scripts/lib/session-bridge.js) — primary
- `writeCostWarningIfChanged` (scripts/hooks/ecc-metrics-bridge.js) — cost cache
- `writeWarnState` (this file) — debounce state
`yarn lint` clean. Regression test covering both `writeBridgeAtomic`
and `writeWarnState` under concurrent load lands in the next commit.
|
||
|---|---|---|
| .. | ||
| auto-tmux-dev.js | ||
| bash-hook-dispatcher.js | ||
| block-no-verify.js | ||
| check-console-log.js | ||
| check-hook-enabled.js | ||
| config-protection.js | ||
| cost-tracker.js | ||
| design-quality-check.js | ||
| desktop-notify.js | ||
| doc-file-warning.js | ||
| ecc-context-monitor.js | ||
| ecc-metrics-bridge.js | ||
| ecc-statusline.js | ||
| evaluate-session.js | ||
| gateguard-fact-force.js | ||
| governance-capture.js | ||
| insaits-security-monitor.py | ||
| insaits-security-wrapper.js | ||
| mcp-health-check.js | ||
| observe-runner.js | ||
| plugin-hook-bootstrap.js | ||
| post-bash-build-complete.js | ||
| post-bash-command-log.js | ||
| post-bash-dispatcher.js | ||
| post-bash-pr-created.js | ||
| post-edit-accumulator.js | ||
| post-edit-console-warn.js | ||
| post-edit-format.js | ||
| post-edit-typecheck.js | ||
| pre-bash-commit-quality.js | ||
| pre-bash-dev-server-block.js | ||
| pre-bash-dispatcher.js | ||
| pre-bash-git-push-reminder.js | ||
| pre-bash-tmux-reminder.js | ||
| pre-compact.js | ||
| pre-write-doc-warn.js | ||
| quality-gate.js | ||
| run-with-flags-shell.sh | ||
| run-with-flags.js | ||
| session-activity-tracker.js | ||
| session-end-marker.js | ||
| session-end.js | ||
| session-start-bootstrap.js | ||
| session-start.js | ||
| stop-format-typecheck.js | ||
| suggest-compact.js | ||