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
{{ message }}
Repository navigation
emrg: the evolution readings walk a log directory whose writer was removed, so the recent-improvements list stops at 2026-08-23 #2187
The daemon's two self-evolution readings walk <logs>/evolution-*.json:
EmrgServer._evolution_count() (the pong frame's evolution_count, i.e. the GUI growth counter) walks it for its "disk" half;
the evolution_summary frame walks it for the recent list.
No writer fills that directory any more. e401246e (2026-08-19, rants 14:16/14:18/14:20) removed _write_evolution_log along with the archival it belonged to, and the same commit left the file behind — its own diff says "evolution-.json was never consumed"*. The durable store that replaced it is <logs>/task-runs/<task>.jsonl, written by TaskHandler._append_task_run and restored at init by _load_task_runs.
Measured on this host, 2026-10-13 (cyc20261013-080459):
The count's disk half answers 27, a number that reaches the reader whenever it is the larger of the two the reading takes the max of — a host whose tasks are all disabled, or a daemon whose scheduler is not up (_scheduler is None falls back to the legacy self.evolutions, which is never appended). On this host the in-memory figure currently hides it; on a host with a smaller live store the growth card would be inflated to the dead directory's count.
Fix
One derivation of the durable store, in emrg/server/scheduler.py, used by both daemon readings and by the handler's own restore:
task_run_files(dir) — the store's files, by name;
read_task_run_records(path) — one file's records, oldest first, each naming its task; a missing/torn/not-a-regular-file subject answered by the reader itself (the kind asked before the open, as elsewhere in this module).
_evolution_count and the evolution_summary frame read that; _load_task_runs is routed through it instead of parsing the same lines a second time.
Acceptance
A record written to the live store is visible to both readings — and the dead directory's files are not counted (both directions).
The recent list is newest-first across tasks and carries the store's own fields.
A FIFO or a directory planted at <logs>/task-runs/<task>.jsonl does not stop either reading, and the skip still names the kind.
Activity
how2how2how2-arch commentedon Oct 13, 2026
Handled by #2188