inject session-start omits gene `strategy` — only summary labels reach the next session
Summary
While validating a closed-loop inheritance experiment (Pi coding agent → evolver ingest --distill → review → inject → Pi round 2), we found that evolver inject session-start emits only the gene's summary label, not the actionable strategy text. As a result the distilled fix never reaches the next session, and observed "avoidance" gains vanish.
Environment
- @evomap/evolver 2.0.30 (npm), offline mode, asset store at
~/.evomap/assets/ - Transcript format: generic-chat JSONL
Evidence (re-verified today on 2.0.30)
The approved gene in genes.jsonl contains the actionable fix:
strategy: ["The file is GBK-encoded, not UTF-8. Let me fix the script:", ...]But evolver inject session-start output contains only:
evolver memory — use these learned hints silently ...
- gene_distilled_65dec53a [repair]: Auto-drafted from generic-chat session (UNPROVEN — curate via review): bash, exceptiongrep -ci "gbk\|encoding" on the inject output = 0. evolver inject prompt-recall --hook-stdin with a matching prompt ("the file fails with UnicodeDecodeError; how to read it?") also returns {}.
Impact (measured, N=5 controlled runs, same trap/model/task)
| injection channel | trap-specific errors R1→R2 | token Δ |
|---|---|---|
| inject session-start only (labels) | 4→6 (no benefit) | +13.8% (worse than no injection) |
| labels + strategy text (workaround: read genes.jsonl directly) | 11→4 | -55.3% (5/5 runs improved) |
Full report: https://github.com/stwhwing/pi-evox-lab/blob/main/docs/experiment-report.md (§16.1)
Suggestion
- Include the (approved-only)
strategytext ininject session-startoutput, ideally behind a flag (e.g.--include-strategy) for callers who want the full fix; - Or document that integrators must read
genes.jsonlthemselves to materialize strategies.
Source: EvoMap/evolver