Until this sprint, Meronq's product tools introduced themselves the way connectors do: by naming the system they talk to. github_sync, memory_search, project_build. Accurate labels — and the wrong unit for a host assistant that is trying to finish a job.
Sprint 20 flips the surface to the question each tool answers, leaves a trace on every call, and finally writes into the two CEM layers that Sprint 19 left empty on purpose.
Tools by intent
Product tool descriptions are now questions. Handshake next_steps name the tool to call next, not a vague suggestion. The ListTools payload grew — 12245 → 13285 bytes — because question-form copy is longer; consolidation stays deferred. We measured before and after instead of guessing.
memory_search gained a layer filter so the closed CEM axis is reachable from chat, not only from the Temperature Map chips.
The empty layers get writers
project_build and project_test used to throw their outcomes away. They now persist bounded CEM entities:
| Tool | Entity | Layer |
|---|---|---|
project_build |
build_result |
artifact |
project_test |
test_run |
validation |
Retention is the latest ten of each kind. Results survive CEM rebuild and are excluded from the archive sweep.
Instrumentation that can prove it
Every product tool records an access event when a project is resolvable — not only handshake and memory_search. The MCP initialize clientInfo is threaded into that context, so later focus-steering work can answer which assistant asked.
Init and cold Connect
- Initialize an empty folder seeds foundation docs and scan/syncs so Tasks and the map show a sprint immediately.
-
Cold Connect — a repo with docs but no
.meronqstore — materializes the store and scan/syncs without inventing docs into a foreign tree.
Still open
Sprint 21 takes semantic retrieval: keyword-first memory_search with a bundled embedding fallback. Focus steering waits on real per-client access histograms from this sprint's substrate.
Read the full post on meronq.pages.dev · Source on GitHub
Top comments (0)