Research-Stack/4-Infrastructure/shim/codebase-memory/src/main.rs
Brandon Schneider 0e7489559c feat(codebase-memory): FAMM-based persistent multi-domain memory for Hermes
- Rust crate: codebase-memory with cargo check + 6/6 tests pass
- types.rs: Q16_16, 7 CodeDomain banks, scar tracking, dual-map state
- adapter.rs: observe, commit_gate, advance_epoch, query_all, save/load
- main.rs: load_for_hermes binary entry point
- hermes_integration_manifest.json: agent contract and promotion gates
- Manifest: shared-data/data/stack_solidification/codebase_memory_receipt_2026-05-13.md
- Deleted Python adapter, replaced with Rust runtime
- FAMM.lean fix: UInt4→UInt8 for capability cells, proper Q16_16 comparisons
- Semantics.lean: quarantine imports for CodebaseMemory/CodebaseFSDU/CodebaseReceipt
- Quarantined 3 Lean files from lake build (field notation issues)

Build verified: lake build Semantics.FAMM passes (3,300 jobs)
2026-05-13 16:11:27 -05:00

45 lines
1.3 KiB
Rust

use std::env;
use std::path::Path;
use codebase_memory::adapter::load_for_hermes;
fn main() {
let args: Vec<String> = env::args().collect();
let root = if args.len() > 1 {
&args[1]
} else {
"."
};
let memory_path = Path::new(root).join(".hermes").join("codebase_memory.json");
let mut adapter = load_for_hermes(Path::new(root), &memory_path);
println!("[hermes-memory] Loaded adapter for {}", root);
println!("[hermes-memory] Domains: 7");
for dom in codebase_memory::types::CodeDomain::all() {
println!(
" {}: {} active / {} capacity",
dom.as_str(),
adapter.active_count(dom.as_str()),
adapter.capacity()
);
}
println!("\n--- Sample query: AGENTS.md ---");
let results = adapter.query_all("AGENTS.md");
for (domain, cells) in &results {
println!(" {}: {} matches", domain, cells.len());
}
println!("\n--- Committing all domains ---");
for dom in codebase_memory::types::CodeDomain::all() {
let receipt = adapter.commit(dom.as_str());
println!(
" {}: success={} invariant={}",
dom.as_str(),
receipt.success,
receipt.invariant
);
}
println!("\n[hermes-memory] Done.");
}