fix(observer): route "what was I doing?" to observer_recall + honest empty-buffer (beat 20)#250
Merged
Merged
Conversation
…empty-buffer (beat 20) Two bugs made recall fabricate a SpaceX story from chat memory: 1. observer_recall was NOT in CHAT_SKILL_ALLOWLIST, so the phrase fell through to the LLM instead of the skill. Added it (read-only, reads the buffer). 2. When the buffer has entries but no captured content (app=None, ocr="", the permission-gap case), _summarise returned "" — letting the caller fabricate. Now it returns an honest message naming the missing macOS permissions. Manifest regenerated (D-1 gate). Found live-testing beat 20 — the observer is polling but capturing nothing (codec-observer lacks Screen Recording/Automation). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
AVADSA25
added a commit
that referenced
this pull request
Jul 15, 2026
…ter (beat 20) (#256) _try_skill ran _is_conversational() FIRST and bailed to the LLM for any question-phrased message — so "what was I doing 1h ago?" never reached observer_recall (allowlisted since #250); the LLM answered from memory and fabricated. Now: if the message word-boundary-matches an allowlisted skill trigger, honor it (explicit intent) even if it looks conversational; only fall through to the LLM when no allowlisted skill matches. Verified: "what was I doing 1h ago?" now routes to observer_recall. Co-authored-by: Mickael Farina <farina.mickael@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.
Bug (live-testing beat 20)
User asked "what was I doing 20 minutes ago?" and CODEC fabricated a detailed "Reflection AI $6.3B SpaceX deal" answer — pulled from chat memory (the beat-12 competitor report), not the observer buffer.
Root cause = two bugs:
observer_recallwas not inCHAT_SKILL_ALLOWLIST(routes/chat.py) — its triggers include "what was i doing", but the pre-LLM skill hijack gates on the allowlist, so the phrase fell through to the LLM.app=None,ocr="") —codec-observeris polling but capturing nothing (macOS Screen Recording / Automation / Accessibility not granted to it)._summarisereturned""in that case, which invites fabrication.Fix
observer_recallto the allowlist._summarisenow returns an honest message ("captured N snapshots but no window titles / screen text — grant the observer these permissions…") instead of an empty string.Manifest regenerated (88 skills).
py_compile+ruffclean.Follow-up (user action): grant
codec-observerScreen Recording + Automation + Accessibility in System Settings so the buffer actually fills.🤖 Generated with Claude Code