Issue #2 starts simple on purpose.
Mneme does not need ten data sources before it becomes useful. It needs one reliable ingest path that turns OpenClaw memory files into raw evidence.
scripts/mneme_ingest_memory.py
Input:
MEMORY.mdmemory/*.md
Output:
raw/sources.jsonlraw/items.jsonlraw/report.json
- creates one
EvidenceSourceper source file - creates
EvidenceItemrecords from:- headings
- bullets
- section blocks
- preserves provenance
- redacts obvious secrets in item text
- writes deterministic JSONL output
- session transcript ingest
- repo file ingest
- PDFs / web pages / images
- entity linking
- contradiction resolution
- promotion into compiled memory
./scripts/mneme_ingest_memory.py \
--root ~/.openclaw/workspace \
--out ./.mneme-raw
# Opt in only if you truly need host-absolute paths in source URIs
./scripts/mneme_ingest_memory.py \
--root ~/.openclaw/workspace \
--out ./.mneme-raw \
--absolute-file-urisJSONL is enough for v1 because it is:
- append-friendly
- diffable
- inspectable
- easy to rebuild and pipe into later stages
This ingest pipeline is valid because it emits the fields defined in:
docs/evidence-model.md
That is the contract.