AGENT MEMORY · RETRIEVAL GAPS

Memory retrieval: inspect missing evidence

Filter eight stored memories by tenant, kind and age, rank them into a bounded context tray, and find out why the needed evidence is missing.

Computed drill · sixty inspection seconds

Event trace

    Computed data

    Final metrics

    Eight fictional memories for two tenants. The score counts how many of five query words (payments, database, retry, limit, agreed) a memory contains, plus up to 0.5 for recency; this is a lexical stand-in, not an embedding search or ADK memory service. Words are whitespace-separated. The guessing policy stands for a model that answers from the closest-looking memory; nothing is generated.

    A confident answer from the wrong memory

    Which retry limit was agreed for the payments database? At 0 s the query event names the team-a memories that answer it: M1, a 3-attempt limit, and M8, a review keeping it at 3. With the opening Maximum memory age of 30 days both are too old, at 40 and 50 days. The tray holds M2, M5 and M4, 23 of 40 words, and under Answer from the closest memory the agent replies 5 attempts from M2, the orders database: WRONG ANSWER, 0/2 supporting memories.

    Triage with the Outcome column

    A dropped needed memory turns red on the board. The table names the cause: "older than 30 days" points at Maximum memory age, "kind semantic filtered" at Memory kind, "below top-3" at Memories ranked into context (top-k), "exceeds word budget" at Context word budget. "other tenant" on M3 is correct isolation. Here the cause is age, so with top-k 8 or a budget of 120 the answer is still 5 attempts.

    Report the gap instead

    Set When no memory answers the question to Report that the evidence is missing: same tray, MISSING EVIDENCE REPORTED, 0/2. Switch back to Answer from the closest memory and choose Memory kind Episodes: only M4 remains and it states no limit, so the agent falls back to a common default of 3 attempts, UNSUPPORTED GUESS, right for team-a only by luck.

    Find the boundaries

    Restore All kinds, top-k 3 and a budget of 40, then set Maximum memory age to 39: still WRONG ANSWER. At 40 M1 enters: 3 attempts, ANSWERED FROM EVIDENCE, 1/2. At 50 the tray holds M8, M1 and M2, 2/2. At 365 the superseded 2-attempt policy M6 enters too, but M8 answers. Choose Semantic facts: M8, an episode, is filtered and M6, which also says agreed, outranks M1, so the answer is 2 attempts from an old, superseded policy, WRONG ANSWER. Restore All kinds; back at 50 days a budget of 10 skips M8, 14 words, and M1 answers alone; at 25, M8 and M1 fit in 22 words.

    Who is asking

    Switch Requesting tenant to team-b. Every team-a memory is now other tenant; M3, its own 10-attempt sandbox limit, answers: 10 attempts, 1/1. With an age of 4 days M3 is excluded, the tray is empty and the guess of 3 attempts is wrong: UNSUPPORTED GUESS.

    Replay and limits

    Any change recomputes and rewinds; the Complete-run preview shows the outcome at once. Play and Pause walk through query, filters, context slots and answer; Next event jumps one event, Restart rewinds, Speed runs from 0.25x to 2x and Inspection time seeks to 60 seconds, where outcome and metrics appear. The score counts five query words plus up to 0.5 for recency, not an embedding search. Guessing answers from the closest-looking memory, or a common default (Spring Retry uses 3) when none states a limit.