Skip to content

evolver run writes pending review state but does not exit cleanly on Codex #553

@rendigua

Description

@rendigua

Summary

On Codex, evolver run can generate pending review state and local artifacts successfully, but the process does not exit naturally and remains alive as a residual node process.

This appears to be separate from:

  • the old _memoryFiltering.js copy bug (#547)
  • the older Codex context/session-log discovery issues (#540, #543)

Those areas improved, but this process-lifecycle issue still affects actual usability.

Environment

  • OS: Windows
  • Host: Codex
  • node: v22.15.0
  • npm: 11.6.2
  • package:
    • @evomap/evolver@1.87.2
    • also observed on @evomap/evolver@1.86.1

What I did

  1. Installed the latest package:

    npm install -g @evomap/evolver@1.87.2 --prefer-online --no-audit
  2. In a fresh git repo, ran:

    evolver setup-hooks --platform=codex
  3. Verified the generated Codex hooks:

    • session-start runs and returns {}
    • session-end runs and returns {}
  4. Ran:

    evolver run
  5. Waited for local artifacts/state, then checked:

    • assets/gep/candidates.jsonl
    • memory/evolution/memory_graph.jsonl
    • memory/evolution/evolution_solidify_state.json
    • residual node / evolver processes
  6. Ran:

    evolver review

Actual behavior

evolver run does not exit naturally within the observation window, but by that time it has already produced:

  • candidates.jsonl
  • memory_graph.jsonl
  • evolution_solidify_state.json with last_run

evolver review can then read the pending run correctly.

So the sequence is effectively:

  1. pending run state is written
  2. reviewable artifacts are written
  3. but the evolver run process stays alive instead of terminating

This leaves a residual node process that may need to be killed manually before continuing.

Why this matters

This is not the same as "run failed."

The core pipeline seems to reach a reviewable state, but the process lifecycle does not finish cleanly. In practice this hurts:

  • CLI usability
  • automation expectations
  • host integration reliability
  • human review flow, because a still-running process can keep mutating or rewriting state while review is already possible

Expected behavior

After the pending state and reviewable local artifacts are fully written, evolver run should terminate cleanly instead of remaining as a residual process.

If some long-running background mode is intended, that should be explicit and documented separately from the normal evolver run behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions