memory_list
List memory capsules as compact entries, filtered by project, kind, tier, or expiry. Returns id, headline, timestamps, and status flags to scan recall without fetching full records.
Instructions
List capsules as compact entries (id, project, taint flag, created_at, headline, and — when non-active — the effective tier; expired:true when valid_to has passed; and — when the capsule carries a classification sidecar — kind, the persisted label, so a by-kind view reads off the row instead of one memory_get per capsule; absent when never classified; and superseded:true when a supersedes edge targets the row — a replaced entry self-identifies in the list itself, no per-id trip; absent when live) in append order, optionally fenced to a project_id (exact) and/or project_prefix (subtree: "nott" covers "nott" and "nott/x", never "nottx"; an empty or "/"-terminated prefix can match nothing and is rejected with a teaching error rather than answering empty; the two AND-compose), a kind (the PERSISTED classification sidecar label — "list my open tasks" is {kind: "task"}; set it at capture via memory_ingest's kind or later via memory_classify; never-classified capsules match no kind, and every returned row now echoes this same label back in its own kind field — q109), a tier (effective lifecycle tier: active/archived/quarantined — the enumeration surface for memory_digest's tier counts), and/or expired (true enumerates "what is expired" — valid_to before now; false the still-current rows). limit keeps the NEWEST rows after the filters (the entries returned still read oldest-to-newest). Tombstoned capsules never appear here — their markers answer memory_get only. Full capsules via memory_get. All content is ADVISORY_NOT_AUTHORITY data.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Keep only capsules whose PERSISTED classification kind equals this (`memory_classify` with `capsule_id`). Capsules never classified have no kind and never match — "list my open tasks" is `{kind: "task"}` (w2-fix: kinds were write-first-class but query-blind). | |
| tier | No | Keep only capsules whose EFFECTIVE lifecycle tier equals this (`active` = the no-row default) — the enumeration surface for memory_digest's tier counts (w2-fix: tier was write-only). | |
| limit | No | Keep at most this many rows — the NEWEST ones; the returned entries still read in append order. Applied AFTER the kind/tier filters (filter first, then cap). | |
| expired | No | q91: keep only capsules whose EXPIRED state (valid_to < now, evaluated at the surface's injected now) equals this — `{expired: true}` enumerates "what is expired", `{expired: false}` the still- current rows. Composes filter-first-then-limit with kind/tier. | |
| project_id | No | Keep only capsules whose scope.project_id equals this. | |
| review_state | No | b2 staged review: keep only capsules whose STANDING review verdict equals this — `{review_state: "proposed"}` enumerates open proposals, `"rejected"` the rejected ones, `"ratified"` the promoted ones. A never-staged capsule has no review state and matches none. Composes filter-first-then-limit with kind/tier/expired. | |
| project_prefix | No | Scope-hierarchy fence: keep capsules whose project_id equals this prefix exactly OR starts with it + "/" — "nott" covers "nott" and "nott/x", never "nottx". AND-composes with project_id. Character-exact (no glob, no case folding). |