fix: protected-span tell eligibility — procedural text no longer creates evidence obligations - #11
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the phantom-obligation defect found by running Leadline on a real session.
Bug. Tells matched anywhere in a prompt, including inside quoted text, code spans and shell commands. A runbook-style instruction containing
git diff abc..defproduced arepositoryobligation nobody asked for, and every later unrelated tool call was then graded against it. In one real session that single false obligation generated 32 downstream corrections.Fix. A lexical scanner marks protected spans (quoted text, inline code, fenced code, parenthesised shell groups containing
;/&&/||), decomposition no longer splits on delimiters inside them, and tells overlapping a protected span are ignored. The nakedgit difftell is removed — a direct command already prescribes its own source, so routing adds nothing there.Deliberately not a general speech-act classifier: that would become another hand-authored phrase inventory one layer earlier. Genuine imperative evidence requests are unaffected.
Verification (reproduced independently by the reviewer):
npm test237/237 in a clean worktreecontract.steps = 0— verified by replaying the exact cron text that caused the 32 phantom decisions8d2b7a7— no routing regression)Author: Daedalus. Reviewed against exact git objects (commit
e355a5f, treefa90841, patch-idb7925f7).🤖 Generated with Claude Code