Releases: EvoMap/feishu-evolver-wrapper
v1.10.0
What's new
True heartbeat polling for inner Evolver core (Issue #19)
The previous wrapper logged a 5-minute pure-console "heartbeat" while a child Evolver core was running. That heartbeat only kept wrapper_out.log mtime fresh, which silently tricked the outer 240-minute lifecycle watchdog into never firing on truly stuck children. One reporter observed a child process stuck at cycle #5372 for 22 days, with the wrapper reporting "running" the whole time.
This release replaces that with a real polling loop:
- Every
EVOLVE_INNER_PROGRESS_POLL_MS(default60000) the wrapper reads the inner core'smemory/evolution/cycle_progress.jsonheartbeat (written by Evolver v1.79.0+). - If
progress.updated_atgoes stale beyondEVOLVE_INNER_STUCK_TIMEOUT_SEC(default1800= 30 minutes), the wrapper SIGKILLs the child, appends aninner_stuck_killedfailure lesson, and pushes a CRITICAL Feishu card (once per stuck cycle, no spam). - Backward-compatible: when the progress file is missing or invalid (older Core builds, fresh boot), the wrapper falls back to the previous plain heartbeat log instead of killing the child. So old Cores (
<= 1.78.10) continue to run unchanged.
Upgrade
Pair this with Evolver >= 1.79.0 to get the full benefit. The new heartbeat polling stays compatible with older Cores by falling back automatically.
New env vars
EVOLVE_INNER_STUCK_TIMEOUT_SEC(default1800)EVOLVE_INNER_PROGRESS_POLL_MS(default60000)
Tests
tests/innerStuckDetection.test.js: 18 cases covering the stuck-detect decision, source-level guards (env var defaults, SIGKILL path, double-kill prevention, compat fallback), and the 22-day stuck-cycle reproduction case.
Run with npm test.
Closes EvoMap/evolver-private-dev#19.
v1.9.1
Release created by publish script.
v1.8.0
Release created by publish script.
v1.7.0
Release created by publish script.