fix(save-session): never let compression drop a blocked/pending status - #323
Conversation
The one-sentence compression rule had no protection for "blocked on a manual step" language, so it got treated as droppable filler the same as any other wording. In practice: a session deployed app code but was explicitly blocked on a human running a manual data upload (missing credentials the assistant had no access to). The saved memory entry kept "deployed" and silently dropped the blocking caveat entirely, leaving a false impression the feature was fully live. Add an explicit rule (and reinforce it in the format bracket) that blocking/pending/not-yet-live status is a fact to preserve, not filler to compress away, even if it makes the one sentence a bit longer. No changes to the header contract, placeholders, or SKIP logic.
|
Merged — thank you. What made this easy to accept was the framing: you didn't report "the summary was bad", you named the exact class of fact that compression was allowed to eat. "Blocking status is a fact, not filler" is the right line, and it sits properly next to the non-destructive-compression rule rather than fighting it. The failure you described — reading Two things I checked before merging, in case they're useful to you: If you use Claude Code enough to have hit this, you may also get some mileage out of our other one — claude-supertool. Same idea applied to tool calls instead of memory: batch reads/greps/edits into a single call, with post-edit validation and rollback. It's stdlib-only Python and source-available like this one. No obligation, just adjacent. |
Problem
prompts/save-session.prompt.txtcompresses each save into exactly one sentence, but has no rule protecting "blocked / pending / not-yet-live" status from being treated as droppable filler alongside things like "successfully" or "in order to".Real-world hit: a session deployed app code but was explicitly blocked on a manual step (a human running a data upload with credentials the assistant doesn't have access to). The assistant told the user clearly, twice, in chat. The saved
.remember/now.mdentry kept "...deployed" and silently dropped the entire "blocked on you" caveat. The user read the memory entry later, believed the feature was fully live, and only found out otherwise by checking the app directly.Fix
Two small, coordinated edits to
prompts/save-session.prompt.txt, in its existing style:No changes to the
## {{TIME}} | {{BRANCH}}header contract, the four{{PLACEHOLDER}}s, or the SKIP logic.Testing
tests/test_prompts.py— all 10 tests pass unmodified (python3 -m pytest tests/test_prompts.py -v --no-cov), includingtest_build_save_prompt_with_real_templates, which loads this exact file.scripts/run-tests.shsection 6 ("Prompt templates") passes — file exists,{{TIME}}placeholder intact.pipeline.prompts.build_save_prompt()against a "deployed but blocked on a manual step" transcript and confirmed the new rule text assembles correctly into the final prompt sent to the summarizer.