fbf3e9c806b18be4508798d02cec7dbae2e18922
Real usage showed two failure modes on /wiki/domains/{tag} and the homepage:
1. Empty-transcript AKC sessions (mic-off) and synthetic E2E test memories
competed with real knowledge in topical listings. A user hitting the
'optics' domain page saw pages of '(no transcript)' and
'IMG integration test — synthetic session' before finding anything useful.
2. Every AKC voice session writes an episodic memory as provenance. At
one session per capture burst these quickly dominate any domain page
carrying a common tag like 'p05' or 'optics'.
This change partitions memories into three buckets on the domain and
homepage surfaces:
- low-signal → hidden entirely (counted in a dim sub-line)
- AKC session → collapsed behind a single link to /wiki/activity
- real → rendered inline
Filter predicates are additive: a memory that's both an empty-transcript
session AND tagged as AKC lands in low-signal (priority).
Tests: 4 new tests in test_wiki_pages.py lock the partition behaviour.
All 15 pre-existing wiki tests still pass.
No schema change, no migration needed.
AtoCore
Personal context engine that enriches LLM interactions with durable memory, structured context, and project knowledge.
Quick Start
pip install -e .
uvicorn src.atocore.main:app --port 8100
Usage
# Ingest markdown files
curl -X POST http://localhost:8100/ingest \
-H "Content-Type: application/json" \
-d '{"path": "/path/to/notes"}'
# Build enriched context for a prompt
curl -X POST http://localhost:8100/context/build \
-H "Content-Type: application/json" \
-d '{"prompt": "What is the project status?", "project": "myproject"}'
# CLI ingestion
python scripts/ingest_folder.py --path /path/to/notes
# Live operator client
python scripts/atocore_client.py health
python scripts/atocore_client.py audit-query "gigabit" 5
API Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /ingest | Ingest markdown file or folder |
| POST | /query | Retrieve relevant chunks |
| POST | /context/build | Build full context pack |
| GET | /health | Health check |
| GET | /debug/context | Inspect last context pack |
API versioning
The public contract for external clients (AKC, OpenClaw, future tools) is
served under a /v1 prefix. Every public endpoint is available at both its
unversioned path and under /v1 — e.g. POST /entities and POST /v1/entities
route to the same handler.
Rules:
- New public endpoints land at the latest version prefix.
- Backwards-compatible additions stay on the current version.
- Breaking schema changes to an existing endpoint bump the prefix (
/v2/...) and leave the prior version in place until clients migrate. - Unversioned paths are retained for internal callers (hooks, scripts, the
wiki/admin UI). Do not rely on them from external clients — use
/v1.
The authoritative list of versioned paths is in src/atocore/main.py
(_V1_PUBLIC_PATHS). GET /openapi.json reflects both the versioned and
unversioned forms.
Architecture
FastAPI (port 8100)
|- Ingestion: markdown -> parse -> chunk -> embed -> store
|- Retrieval: query -> embed -> vector search -> rank
|- Context Builder: retrieve -> boost -> budget -> format
|- SQLite (documents, chunks, memories, projects, interactions)
'- ChromaDB (vector embeddings)
Configuration
Set via environment variables (prefix ATOCORE_):
| Variable | Default | Description |
|---|---|---|
| ATOCORE_DEBUG | false | Enable debug logging |
| ATOCORE_PORT | 8100 | Server port |
| ATOCORE_CHUNK_MAX_SIZE | 800 | Max chunk size (chars) |
| ATOCORE_CONTEXT_BUDGET | 3000 | Context pack budget (chars) |
| ATOCORE_EMBEDDING_MODEL | paraphrase-multilingual-MiniLM-L12-v2 | Embedding model |
Testing
pip install -e ".[dev]"
pytest
Operations
scripts/atocore_client.pyprovides a live API client for project refresh, project-state inspection, and retrieval-quality audits.docs/operations.mdcaptures the current operational priority order: retrieval quality, Wave 2 trusted-operational ingestion, AtoDrive scoping, and restore validation.
Architecture Notes
Implementation-facing architecture notes live under docs/architecture/.
Current additions:
docs/architecture/engineering-knowledge-hybrid-architecture.md— 5-layer hybrid modeldocs/architecture/engineering-ontology-v1.md— V1 object and relationship inventorydocs/architecture/engineering-query-catalog.md— 20 v1-required queriesdocs/architecture/memory-vs-entities.md— canonical home splitdocs/architecture/promotion-rules.md— Layer 0 to Layer 2 pipelinedocs/architecture/conflict-model.md— contradictory facts detection and resolution
Description
Languages
Python
95.2%
Shell
3.6%
JavaScript
0.9%
PowerShell
0.3%