Skip to content

fix(observer_recall): don't bluff on clock-time asks it can't answer (beat 20)#260

Merged
AVADSA25 merged 1 commit into
mainfrom
fix/observer-recall-absolute-time
Jul 16, 2026
Merged

fix(observer_recall): don't bluff on clock-time asks it can't answer (beat 20)#260
AVADSA25 merged 1 commit into
mainfrom
fix/observer-recall-absolute-time

Conversation

@AVADSA25

Copy link
Copy Markdown
Owner

Bug

"give me a recap of what I was doing today between 11am and 1pm" returned a confident summary of the last few minutes (20:43) — off-topic and misleading.

Why: _window_seconds only parses relative spans ("20 minutes", "1 hour"). A clock-time ask matches nothing → returns Nonerun() falls through to "summarise the whole buffer" → prints the last ~10 min as if it answered.

The deeper truth: the observer is a RAM ring of the last N snapshots (~10–30 min depending on poll cadence), wiped on restart — it structurally cannot recall 11am–1pm. It should say that, not bluff.

Fix

Detect absolute/calendar asks (11am, 14:30, today, this morning, last night, …) and answer honestly, reporting the span actually covered, while still showing what's held.

Before: "You were in: Claude. Timeline: 20:43 Claude"
After: "I can't recall that window. The observer is a rolling in-memory buffer of the last 10 snapshots — right now it only covers 09:09–09:34, about 25 min — not a full-day log… Here's everything it currently holds: …"

Relative asks ("20 minutes ago", "just now") unchanged. Manifest regenerated (88). 52 observer tests pass, ruff clean.

🤖 Generated with Claude Code

…(beat 20)

"recap what I was doing today between 11am and 1pm" parsed as no-window
(_window_seconds only handles relative spans like "20 minutes"), fell through to
"summarise the whole buffer", and returned the last few minutes as if it had
answered — a confident, off-topic reply.

The observer is a RAM ring of the last N snapshots (~10-30 min depending on
cadence), not a day log — it structurally cannot answer clock-time/calendar
windows. Now it detects those asks (11am, 14:30, today, this morning, last
night, …) and says so plainly, reports the span it actually covers, and still
shows what it does hold. Relative asks ("20 minutes ago", "just now") are
unchanged. Manifest regenerated; 52 observer tests pass, ruff clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@AVADSA25
AVADSA25 merged commit 382a56c into main Jul 16, 2026
1 check passed
AVADSA25 added a commit that referenced this pull request Jul 16, 2026
)

DEMO_SCRIPT.md had been rewritten locally (the 15→22→25-beat seal, performance
reorder, name-drop moats table) but was never actually committed — it sat as
an uncommitted edit in the shared working tree since 2026-07-14. Committing the
full sealed version now, plus today's status refresh:

- #21 self-improve: now fully conversational (#257), no longer "fix in progress"
- #20 observer recall: fully fixed — routing (#256), real NSWorkspace capture
  (#258), honest on out-of-range clock-time asks (#260)
- #14 Pilot: navigation confirmed live; live-view click-through flagged as a
  rebuild in progress (was mis-marked READY)
- #19 Connector: OAuth sign-in itself confirmed working; connected/disconnect
  state + persistent tokens flagged as a rebuild in progress
- #18: note to set the CODEC connector to Always Allow in Claude's settings

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