Repository navigation
Exclude SkillOpt-generated Codex replay sessions from harvest - #287
kaluli123123 wants to merge 2 commits into
Conversation
|
Thank you for tackling the self-harvest feedback loop; preventing generated sessions from becoming user evidence is important. Reviewed
|
|
Addressed the two findings in 59be37e. The Codex subprocess boundary now prefixes every engine call with an explicit provenance sentinel, covering ordinary attempt/judge/reflect, tool replay, and benchmark/custom system prompts. Harvesting uses that prefix instead of generic heading substrings; legacy tool replay retains its complete-shape check. Ordinary quoted headings and multi-turn user sessions are preserved. The regression captures the actual subprocess input from all five paths and feeds it into synthetic archived sessions. Against the previous head, these tests fail with 12 assertions (four engine paths retained and eight user-session cases discarded). With this change, the focused tests pass: 6 tests and 13 subtests. Validation on Python 3.12: full suite 1,501 passed, 11 skipped; strict documentation build and focused Ruff checks passed. All backend responses were mocked; no live model calls were made. The full-suite run used a minimal PATH because this machine's installed Pi executable changes an unrelated path-resolution test. An initial run also hit an unrelated concurrent staging-pointer race; the final run passed. Upstream CI still needs its normal maintainer approval/execution. |
Summary
harvest_codex.Root cause
CodexCliBackend.attempt_with_tools()emits internal prompts containing SkillOpt skill, memory, task, judge, and reflection instructions.harvest_codex()did not identify those sessions, so later harvesting could treat SkillOpt's own headless work as user evidence.Changed behavior
Codex harvesting now skips sessions marked as agent sessions or matching the explicit SkillOpt replay prompt shape. It does not apply the generic short-duration headless heuristic, preserving valid short user sessions.
Test plan
python3 -m unittest -v tests.test_harvest_codex_replay tests.test_sleep_engine.TestHarvest— 19 passed.python3 -m compileall -q skillopt_sleep tests/test_harvest_codex_replay.py— passed.git diff --check— passed.python3 -m pytest -q— not run successfully becausepytestis not installed/available in the environment.Issue
Fixes #286
Incomplete gates
Full pytest, CI, maintainer review, and merge remain pending. No merge or Issue closure was performed.