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
Three integrity issues surfaced during a single /alive:save invocation on alive 3.1.0. All three were caught by the post-save integrity check step. Without that check, all three would have shipped silently.
1. Heading collision dropped previous entry's heading. The save skill's "prepend new log entry" pattern uses an Edit with old_string matching ---\n\n## PREVIOUS_DATE -- squirrel:... (checkpoint N) and replaces it with ---\n\n## NEW_DATE -- squirrel:... (checkpoint N+1)\n\n[body]\n\n. The previous heading is silently dropped — its body remains in the file but with no heading attached, so it appears (incorrectly) to be a continuation of the new checkpoint. Caught by grep -c '^## 2026-' showing 54 not 55. Fix needed: the prepend pattern should explicitly preserve the previous heading, e.g. replace ---\n\n## PREVIOUS_HEADING with ---\n\n## NEW_HEADING\n\n[body]\n\n---\n\n## PREVIOUS_HEADING.
2. Frontmatter summary: field free-text drift. Wrote (saves:N) in the frontmatter summary text where N didn't match the actual saves: value in the squirrel YAML. The summary is free text the agent has to keep in sync with structured fields elsewhere; easy to drift. Suggest: auto-generate the summary from structured fields rather than free-form, or have the skill validate the summary against structured fields before the write commits.
3. tasks.py done command unverifiable via list. Ran tasks.py done --walnut WALNUT --id tNNN; got back Task tNNN marked done. Then tasks.py list --walnut WALNUT --bundle BUNDLE no longer showed the task. Tried tasks.py list --status done to verify and got 0 results. So there's no way to confirm done actually took effect — the task disappears from the active list, and --status done doesn't surface done tasks either. Either the filter is broken or done tasks live in a separate file list doesn't read. Fix: list --status done should return done tasks so operators can verify a done action took effect.
Expected Behaviour
Save skill prepends a new log entry without dropping the previous entry's heading.
Frontmatter summary either auto-generates from structured fields, or the skill validates the summary against structured fields before write commits.
tasks.py list --status done returns done tasks so operators can verify done actions.
Context
Skill: alive:save (during an actual save, not a dry-run)
All three issues caught by step 8 (integrity check); silent until that step ran
Description
Three integrity issues surfaced during a single
/alive:saveinvocation on alive 3.1.0. All three were caught by the post-save integrity check step. Without that check, all three would have shipped silently.1. Heading collision dropped previous entry's heading. The save skill's "prepend new log entry" pattern uses an
Editwithold_stringmatching---\n\n## PREVIOUS_DATE -- squirrel:... (checkpoint N)and replaces it with---\n\n## NEW_DATE -- squirrel:... (checkpoint N+1)\n\n[body]\n\n. The previous heading is silently dropped — its body remains in the file but with no heading attached, so it appears (incorrectly) to be a continuation of the new checkpoint. Caught bygrep -c '^## 2026-'showing 54 not 55. Fix needed: the prepend pattern should explicitly preserve the previous heading, e.g. replace---\n\n## PREVIOUS_HEADINGwith---\n\n## NEW_HEADING\n\n[body]\n\n---\n\n## PREVIOUS_HEADING.2. Frontmatter
summary:field free-text drift. Wrote(saves:N)in the frontmatter summary text where N didn't match the actualsaves:value in the squirrel YAML. The summary is free text the agent has to keep in sync with structured fields elsewhere; easy to drift. Suggest: auto-generate the summary from structured fields rather than free-form, or have the skill validate the summary against structured fields before the write commits.3.
tasks.py donecommand unverifiable vialist. Rantasks.py done --walnut WALNUT --id tNNN; got backTask tNNN marked done.Thentasks.py list --walnut WALNUT --bundle BUNDLEno longer showed the task. Triedtasks.py list --status doneto verify and got0 results. So there's no way to confirmdoneactually took effect — the task disappears from the active list, and--status donedoesn't surface done tasks either. Either the filter is broken or done tasks live in a separate filelistdoesn't read. Fix:list --status doneshould return done tasks so operators can verify adoneaction took effect.Expected Behaviour
summaryeither auto-generates from structured fields, or the skill validates the summary against structured fields before write commits.tasks.py list --status donereturns done tasks so operators can verifydoneactions.Context
alive:save(during an actual save, not a dry-run)System
Sent via
/alive:feedback