memory: report the /snapshot handoff defect to galdrabok, with the mechanism
Sent with both specimens. Adds the root cause, which is in SYSTEM_PROMPT rather than the model. Next steps is the only one of the three generated sections with no empty case. Watch out for is told to omit itself when there are no gotchas and Resume here is told what to say when nothing is in flight, but Next steps is told only that it is a numbered, ordered, concrete list. With nothing in flight the sole action-shaped nouns in the input are the deferred items, and the nothing-in-flight rule points the model straight at them by asking it to name the most recent open pointer. Nothing in the prompt protects modality. Invent nothing and trace every claim to the input are both satisfied - the items really are in the input - while their deferred-ness is exactly what gets dropped. The verbatim-identifier rule already establishes that some attributes of the input must survive restructuring untouched; modality is one of them and only identifiers are guarded. Proposed two prompt changes to galdrabok: an empty-case escape for Next steps, and a rule making deferred, parked, belayed and deliberately-not-done items constraints belonging in Watch out for rather than steps. Offered as a caller's diagnosis since the skill is theirs. Noted that galdrabok-dev is pull mode, so there is no herald poke and they will see it on their next check.
This commit is contained in:
@@ -132,9 +132,31 @@ immediately after `/clear`, before any other framing, and its Next steps read as
|
||||
mandate. A wrong one here is not a bad summary; it is a fresh session going and doing
|
||||
belayed work.
|
||||
|
||||
### Mechanism — it is `SYSTEM_PROMPT`, not the model
|
||||
|
||||
`snapshot_handoff.py:75-107`. Three things compose:
|
||||
|
||||
1. **`## Next steps` has no empty case.** `## Watch out for` gets an explicit escape
|
||||
("OMIT THIS WHOLE SECTION if the input carries no gotchas"); `## Resume here` gets one
|
||||
("If the input says nothing is in flight, say so plainly"). **`## Next steps` gets
|
||||
neither**, while being told it is "A numbered list. Ordered, concrete". With nothing
|
||||
in flight, the only action-shaped nouns left are the deferred items.
|
||||
2. **The nothing-in-flight rule points straight at them** — "point at the most recent
|
||||
open pointer it names" directs attention to the parked entries, which then get
|
||||
promoted into Next steps.
|
||||
3. **Nothing protects MODALITY.** "Invent nothing; every claim must trace to the input"
|
||||
is satisfied — the items *are* in the input. Their *deferred-ness* is what got
|
||||
dropped, and only identifiers are protected against restructuring.
|
||||
|
||||
⭐ **The general lesson: the verbatim-identifier rule shows some input attributes must
|
||||
survive restructuring untouched. Modality is one of them and nobody guarded it.**
|
||||
|
||||
**Mitigation until fixed: read the generated handoff before accepting it**, and invert
|
||||
any deferred item into an explicit *do NOT*. Both runs this session were corrected
|
||||
in-session. Owner is the `/snapshot` skill (galdrabok); not reported yet.
|
||||
in-session. **Reported to `galdrabok-dev` 2026-09-15** with both specimens, the mechanism
|
||||
above and two proposed prompt changes (an empty-case escape for `## Next steps`; a rule
|
||||
making deferred/parked/belayed items constraints rather than steps).
|
||||
⚠ `galdrabok-dev` is `mode: pull` — no herald poke, so they see it on their next check.
|
||||
|
||||
⭐ Same family as everything above — the instrument produced a plausible artifact and
|
||||
the plausibility is exactly what makes it dangerous.
|
||||
|
||||
Reference in New Issue
Block a user