Skip to content

feat(memory): ACON category guidelines, Memex tool archive, RL admission control#2440

Merged
bug-ops merged 2 commits intomainfrom
feat-issue-2433-research-memory-acon-agent-con
Mar 30, 2026
Merged

feat(memory): ACON category guidelines, Memex tool archive, RL admission control#2440
bug-ops merged 2 commits intomainfrom
feat-issue-2433-research-memory-acon-agent-con

Conversation

@bug-ops
Copy link
Copy Markdown
Owner

@bug-ops bug-ops commented Mar 30, 2026

Summary

Implements three P2 research-driven memory improvements:

Architecture notes

  • C1 (placeholders destroyed by LLM): fixed — archived refs injected as postfix after summarization
  • C2 (archive vs overflow lifecycle): fixed — archive_type column on tool_overflow; cleanup skips archives
  • C3 (survivorship bias): fixed — all messages recorded before admission decision

Migrations

  • 054_memex_and_acon_categories.sqlarchive_type on tool_overflow, category on compression_failure_pairs / compression_guidelines, updated UNIQUE constraints
  • 055_admission_training_data.sqladmission_training_data, admission_rl_weights tables

Test plan

  • 7302 tests pass (cargo nextest run --workspace --features full --lib --bins)
  • cargo +nightly fmt --check passes
  • cargo clippy --all-targets --features full --workspace -- -D warnings passes
  • 8 unit tests for classify_failure_category() (tool_output, assistant_reasoning, user_context, priority ordering)
  • 4 async integration tests for category-aware store methods
  • Logistic regression unit tests (gradient descent, prediction, convergence)
  • Memex archive/cleanup tests

Closes #2433
Closes #2432
Closes #2416

@github-actions github-actions bot added documentation Improvements or additions to documentation memory zeph-memory crate (SQLite) rust Rust code changes core zeph-core crate dependencies Dependency updates config Configuration file changes enhancement New feature or request size/XL Extra large PR (500+ lines) labels Mar 30, 2026
@bug-ops bug-ops enabled auto-merge (squash) March 30, 2026 16:35
@bug-ops bug-ops disabled auto-merge March 30, 2026 16:40
@bug-ops bug-ops enabled auto-merge (squash) March 30, 2026 16:54
bug-ops added 2 commits March 30, 2026 18:55
…ion control (#2433, #2432, #2416)

Implement three research-driven memory improvements:

ACON (#2433): add per-category compression guidelines (tool_output,
assistant_reasoning, user_context) with lazy per-category guideline
updates to avoid 3x LLM cost. New `category` column on
compression_failure_pairs and compression_guidelines tables (migration
054); UNIQUE(version, category) replaces UNIQUE(version).

Memex (#2432): archive tool output bodies to SQLite before compaction
via `save_archive()` with `archive_type='archive'`; inject UUID
references as postfix after LLM summarization so placeholders survive
compaction; cleanup_overflow() skips archive rows. Opt-in via
`[memory.compression] archive_tool_outputs = true`.

RL admission (#2416): add AdmissionStrategy enum (heuristic/rl) and
admission_training_data + admission_rl_weights tables (migration 055);
record all messages (admitted + rejected) to fix survivorship bias;
pure-Rust logistic regression with 50-epoch mini-batch GD; mark_training_recalled()
wires positive labels from SemanticMemory::recall(); startup warn when
rl strategy is configured but not yet wired into live admission path.
@bug-ops bug-ops force-pushed the feat-issue-2433-research-memory-acon-agent-con branch from d2e5fb9 to 021e481 Compare March 30, 2026 16:55
@bug-ops bug-ops merged commit e1b1ad3 into main Mar 30, 2026
51 of 53 checks passed
@bug-ops bug-ops deleted the feat-issue-2433-research-memory-acon-agent-con branch March 30, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

config Configuration file changes core zeph-core crate dependencies Dependency updates documentation Improvements or additions to documentation enhancement New feature or request memory zeph-memory crate (SQLite) rust Rust code changes size/XL Extra large PR (500+ lines)

Projects

None yet

1 participant