Skip to content

fix(observer): route "what was I doing?" to observer_recall + honest empty-buffer (beat 20)#250

Merged
AVADSA25 merged 1 commit into
mainfrom
fix/observer-recall-chat-route
Jul 14, 2026
Merged

fix(observer): route "what was I doing?" to observer_recall + honest empty-buffer (beat 20)#250
AVADSA25 merged 1 commit into
mainfrom
fix/observer-recall-chat-route

Conversation

@AVADSA25

Copy link
Copy Markdown
Owner

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:

  1. observer_recall was not in CHAT_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.
  2. Even routed, the observer buffer is empty (10 snapshots, all app=None, ocr="") — codec-observer is polling but capturing nothing (macOS Screen Recording / Automation / Accessibility not granted to it). _summarise returned "" in that case, which invites fabrication.

Fix

  1. Add observer_recall to the allowlist.
  2. _summarise now 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 + ruff clean.

Follow-up (user action): grant codec-observer Screen Recording + Automation + Accessibility in System Settings so the buffer actually fills.

🤖 Generated with Claude Code

…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
AVADSA25 merged commit 52d53da into main Jul 14, 2026
1 check passed
@AVADSA25
AVADSA25 deleted the fix/observer-recall-chat-route branch July 14, 2026 15:11
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants