* feat(memory): add structured schema and usage index
Add schema-v1 frontmatter for memory files, including stable ids, deterministic signatures, soft delete metadata, TTL handling, and migration support for legacy stores.
Track recalled memories in usage_index.json so retrieval can prioritize useful memories and auto-dream can review stale unused entries before pruning.
Keep project and ohmo memory backends aligned under the same behavior while preserving runtime compatibility for unmigrated Markdown files.
* fix(memory): make backend migration defaults explicit
* fix(memory): parse YAML frontmatter in scan and improve search relevance
The memory scanner previously treated the first non-empty line as the
description, returning raw "---" for files with YAML frontmatter. This
broke search matching because the title and description fields—the only
fields the search function inspected—contained no meaningful content.
Changes:
- Parse name/description/type from YAML frontmatter in scan, consistent
with the existing skill loader pattern.
- Add body_preview and memory_type fields to MemoryHeader so downstream
consumers can leverage structured metadata.
- Search now matches against body content in addition to metadata, with
metadata hits weighted 2x for relevance ordering.
- Tokenizer handles CJK characters for multilingual memory queries.
- Eight new tests covering frontmatter parsing, search relevance ranking,
body content matching, and CJK tokenization.
* fix: address review feedback on memory scan and search
- Exclude description line from body_preview for non-frontmatter files
to prevent double-counting in search scoring (meta 2x + body 1x).
- Guard fallback description against '---' delimiters from malformed
frontmatter, consistent with skills/loader.py behavior.
- Rename CJK→Han in tokenizer docstring and variable names to reflect
that only Han ideographs are tokenized individually (kana/hangul
excluded by design as single characters lack lexical meaning).
- Fix CHANGELOG section ordering so existing Added entries stay under
their original heading.
- Add tests for malformed frontmatter and body_preview exclusion.
A lightweight open-source Python implementation of the Agent Harness architecture.
44x lighter than Claude Code (11K vs 512K lines), 98% core tool coverage.
- 43 tools with Pydantic validation and parallel execution
- Skills system compatible with anthropics/skills (17+ tested)
- Plugin system compatible with claude-code/plugins (12+ tested)
- API retry with exponential backoff
- Multi-level permissions with path rules
- React/Ink TUI with "Oh my Harness!" branding
- 114 unit tests + 6 E2E test suites
- MIT License