The ledger
Every @feature annotation across the org, in one searchable index. Filter by repo, category, or maturity; each row resolves to the exact source line it was declared on.
Spectrum · top 12 categories
click to filter⬡ status coverage63%1,968 / 3,109 features annotated1,141 missing status:
worst offenders
- 11%openalice-embed601 missing
- 66%openalice-platform144 missing
- 78%openalice-persona66 missing
- 92%openalice60 missing
- 31%openalice-world36 missing
- 23%openalice-social34 missing
- 0%openalice-lab25 missing
- 0%openalice-inspector23 missing
0 matched0 in ledger
- agents.memory.ab_benchmarkopenalice · memoryMemory v4 A/B benchmark — env-gated baseline switches (ALICE_MEMORY_BASELINE_V3 / ALICE_MEMORY_DISABLE_M3 / _M4 / _M5) that flip M3 mode-classification, M4 history-search, and M5 intent-aware boosts off so a benchmark can compare v3 vs v4 retrieval inside one process. Default off — production path unchanged. See benches/memory_v4_ab.rs.2026-04-25
- agents.memory.bench.history_searchopenalice · memoryWave G6 — criterion benchmark for `memory_preload::history_search::lexical_rank` (BM25-lite). Measures small (50-turn / 5-token) and large (500-turn / 30-token) cases. Audit gap: claim was sub-ms at 500 turns, this bench is the first measurement.2026-04-25
- agents.memory.bench.live_embeddingsopenalice · memoryMemory v4 G8 — Wave G8 A/B harness wires a real EmbeddingService (provider=`bench`, deterministic n-gram embedder in openalice-core) so the benchmark exercises the HNSW vector channel hermetically without an ML gateway dependency. See benches/memory_v4_ab.rs and crates/core/src/embedding.rs.2026-04-26
- agents.memory.bench.preloadopenalice · memoryWave G6 — criterion benchmark for `memory_preload::preload_memory_context` end-to-end. Small (5 cards / 50 turns) and large (30 cards / 500 turns / M3+M4+M5 engaged) cases. Audit gap: claim was sub-10ms — first measurement.2026-04-25
- agents.memory.budget.compact_modeopenalice · memoryMemory v4 G8 tuning — opt-in `compact_budget_for` allocator that shrinks rerank pool ~30 % and clamps Active Characters to 3. Toggled via ALICE_MEMORY_COMPACT_MODE; default off so production budget remains unchanged.2026-04-26
- agents.memory.budget.quality_thresholdopenalice · memoryMemory v4 G8 tuning — drop scored candidates below ALICE_MEMORY_QUALITY_THRESHOLD (default 0.0 = no-op). Trims the cold-tier noise tail so Precision@10 stops bleeding under v4-full.2026-04-26
- agents.memory.decayopenalice · memoryMemory v4 M5 — importance auto-decay. Half-life-based decay on MemoryUnit.importance (default 14 days) with a permanent floor (1.0) so units never disappear, just deprioritise. Correction-flagged units decay 4x faster.2026-04-25
- agents.memory.decay.archiveopenalice · memoryWave Q5 — archive layout: `dossiers/{type}/_archive/{YYYY-MM-DDTHH-MM}/{slug}.md`. Survives `gather_candidates` filtering (Q4 `_archive/` skip rule) yet remains greppable on disk. Curator `archive_resurrect` path can re-load any archived dossier whose slug is explicitly pinned.2026-05-07
- agents.memory.decay.audit.archiveopenalice · memoryWave Q5 — append `actor=decay, action=archive` row to `_audit.jsonl` after every decay rename. Carries slug, reason ('60d_no_access' default), source path, and destination path.2026-05-07
- agents.memory.decay.job.archive_windowopenalice · memoryWave Q5 — default archive_after_days = 60 (matches `feedback-memory-archive-not-delete-2026-05-02`). Configurable per invocation; production cron is expected to keep the default.2026-05-07
- agents.memory.decay.job.dry_runopenalice · memoryWave Q5 — `cfg.dry_run = true` produces a DecayReport listing the slugs that *would* be archived without touching the disk or appending audit rows. Surfaced via `alice-cli memory decay run --dry-run`.2026-05-07
- agents.memory.decay.job.runopenalice · memoryWave Q5 — `run_decay(agent, scope, cfg)`: walks dossiers, archives any whose freshness age exceeds cfg.archive_after_days. Atomic per-file rename via std::fs::rename inside the lockfile guard. Returns a DecayReport with per-slug outcomes.2026-05-07
- agents.memory.decay.lockfileopenalice · memoryWave Q5 — fs4 advisory exclusive lock on `dossiers/_decay.lock`. Prevents two concurrent decay sweeps from racing on the same (agent, scope). Independent of Scribe lockfile — a Scribe run and a decay sweep are allowed to interleave (atomic renames keep the tree consistent).2026-05-07
- agents.memory.decay.lockfile.acquireopenalice · memoryWave Q5 — `acquire_decay_lock` opens (creating if needed) the per-(agent, scope) `dossiers/_decay.lock` and takes an exclusive fs4 advisory lock. RAII via `DecayLockGuard`: lock released on drop.2026-05-07
- agents.memory.decay.runopenalice · memoryWave Q5 — `run_decay(agent, scope, cfg)` scans dossiers and archive-moves any whose last_accessed_at (fallback updated_at) is older than archive_after_days (default 60). Atomic per-file rename to `_archive/{ts}/{slug}.md`; no hard deletes. Best-effort per file — partial failures don't abort the sweep.2026-05-07
- agents.memory.decay.statusopenalice · memoryWave Q5 — `decay_status(agent, scope)` walks `_archive/` and returns counts of archived dossiers in the trailing 30d, 90d and all-time. Surfaced via `alice-cli memory decay status`.2026-05-07
- agents.memory.decay.status.scanopenalice · memoryWave Q5 — `decay_status(agent, scope)` walks `_archive/` and returns counts of archive folders in trailing 30d/90d/all-time, plus the list of distinct archive batch timestamps. Read-only; safe to call without the decay lock.2026-05-07
- agents.memory_dedupopenalice · memoryMemory Engine v2 — three-step write pipeline (hash dedup → semantic dedup > 0.85 → bi-temporal contradiction resolution) inspired by Graphiti + Mem0.0.1.0
- agents.memory.history_search.fts5openalice · memoryMemory v4 M4 — opt-in FTS5 lexical fast-path. Currently a no-op shim because the Store trait is kv-only; the lexical layer falls back to in-Rust BM25 over the JSON-encoded history. Schema + FtsMessageIndex extension trait will land in M4.1.2026-04-25
- agents.memory.history_search.lexicalopenalice · memoryMemory v4 M4 — pure-Rust BM25-lite ranker over per-chat connector_history. Surfaces older turns lexically matching the user query without requiring an embedder. Sub-ms at 500 turns.2026-04-25
- agents.memory.history_search.mergeopenalice · memoryMemory v4 M4 — score-normalised, dedup-by-message-id merge of lexical + semantic hits. Tags each survivor with HitSource {Lexical|Semantic|Both}.2026-04-25
- agents.memory.history_search.prompt_slotopenalice · memoryMemory v4 M4 — `## Relevant past discussion (history search)` prompt slot. Gated by ModeBudget::history_search_slot; widens Coding / Research / Personal / Roleplay chats with full-history callbacks.2026-04-25
- agents.memory.history_search.semanticopenalice · memoryMemory v4 M4 — cosine-similarity ranker over cached per-turn embeddings at connector_history/{conv_id}/embeddings.json. Cache-on-write, sliding-window for chats > 100 turns.2026-04-25
- agents.memory.intent_classifieropenalice · memoryMemory v4 M5 — heuristic intent classifier (Question / Recall / Correction / NewFact / Emotion / TaskRequest / Smalltalk / Other). Cheap regex-only path, runs every turn. The classification is written *inline* on `Message::intent` (single source of truth in connector_history) and consumed by the scorer + reinforcement engine. The proxy boundary strips it before any LLM ever sees it.2026-04-25
- agents.memory.reflection.audit.applyopenalice · memoryWave Q7 — append `actor=reflection, action=...` row to `_audit.jsonl` for every auto-applied proposal (archive_stale, backlink_cleanup, index_refresh) and for every gated proposal enqueued for NAO approval. Carries the run_id so operators can group + replay.2026-05-07
- agents.memory.reflection.detect.emergingopenalice · memoryWave Q7 — `detect_emerging_clusters` flags observation references to entity slugs that appear ≥ 3 times across `observations/` JSON but have no dossier on disk. Risk Medium → Gated.2026-05-07
- agents.memory.reflection.detect.mergeopenalice · memoryWave Q7 — `detect_mergeable_pairs` flags two dossiers as candidates for merge when their alias sets share ≥ 2 entries OR their slug basenames are sub-string matches (e.g. `person/nao` vs `person/bassel-nao`). Risk Medium → Gated. Never auto-applied — operator approves in the CLI.2026-05-07
- agents.memory.reflection.detect.staleopenalice · memoryWave Q7 — `detect_stale` flags dossiers whose freshness age exceeds `stale_after_days` (default 30) AND importance < 0.9. Risk Low → Auto. Cross-validates the Q5 decay sweep; intentional overlap so an operator-skipped decay run is still caught.2026-05-07
- agents.memory.reflection.detect.tool_trace_conceptsopenalice · memoryWave V → Q7 — scan tool-calls.jsonl, find recurring lesson patterns (same lesson text 3+ times across ≥ 2 distinct days). Emit one `EmergingCluster` proposal per pattern with a suggested concept slug. Risk Medium → Gated — NAO approves dossier creation in the CLI.2026-05-07
- agents.memory.reflection.llm.budgetopenalice · memoryWave Q7 — `TokenBudget` enforces `OPENALICE_REFLECTION_MAX_TOKENS_PER_RUN` (default 20000) via pre-check + post-debit. Hitting the cap emits the `oa_reflection_budget_exceeded_total` Prometheus counter and aborts the run cleanly with a partial report.2026-05-07