MAPS/ Audit — 2026-04-19
Audit scope: every file under MAPS/ (including _generators/ and who_is_mark_progress.json), cross-checked against this repo with rg/reads. Apex-only scheduled tasks and processes are verified against committed snapshots (process_map.md, scheduled_task_map.md), not live Windows.
Summary
| Metric | Count |
|---|---|
| Files audited | 21 |
| Accurate concrete claims (spot-checked; not every line enumerated) | ~85 |
| Stale claims | 6 |
| Wrong / unverifiable-in-repo claims | 12 |
| Missing coverage items | 8 |
| Internal contradictions (within MAPS or MAPS vs code) | 7 |
A. Internal contradictions
Heartbeat tag: session_start vs agent_heartbeat
MAPS/agent_coordination.mdL72 instructstwin_memory_writewith tagsession_start.MAPS/heartbeat_protocol.mdL15–18 requires tagagent_heartbeat.MAPS/mcp_server_map.mdL82 says announce withsession_start.MAPS/heartbeat_protocol.mdL114 referencestwin_memory_writewith tagagent_heartbeatforCLAUDE.md(aligned with protocol, not with agent_coordination L72).
Impact: Agents following different files will use different tags; heartbeat queries and tp3_heartbeat_check.py (tp3_scripts/tp3_heartbeat_check.py uses %agent_heartbeat%) will miss session_start entries.
data_flow_map.md: Bidet edge — DORMANT vs “ACTIVE” in auto block
- Edge inventory table
MAPS/data_flow_map.mdL75–L76: Edge 3 (Bidet AI →tp3_memories) status DORMANT — bridge files missing inhonest-answersrepo. - Auto-refreshed block
MAPS/data_flow_map.mdL96: Edge 3 shows 🟢 ACTIVE with recent activity.
Impact: Same edge id is simultaneously dormant (hand narrative) and active (freshness query). One of the two sections is out of date or the definitions differ without explanation.
“3-week” ingest narrative vs later correction
MAPS/README.mdL6–L7: Frames a 3-week silent ingest flatline as the motivating incident.MAPS/data_flow_map.mdL16–L17: Corrects that the 3-week claim was wrong for live ingest; long-lived issue called out is edge 5 (apex_backfill), not live Omi ingest.
Impact: README still leads with the stronger headline; readers must read data_flow_map.md correction note for nuance.
mcp_server_map.md vs mcp_server_map.md onboarding checklist (tool naming)
- Section 1 table
MAPS/mcp_server_map.mdL17: Lists tools astwin_memory_write,omi_ingest_transcript,slack_post_message(underscore style). - Section 5
MAPS/mcp_server_map.mdL81: Says verify withtwin_memory_list— not the MCP-registered name (see findings B).
agent_coordination.md “no dead-man’s switch” vs heartbeat_protocol.md
MAPS/agent_coordination.mdL110: States there is no dead-man’s switch forsession_startmemories.MAPS/heartbeat_protocol.mdL1–L7: Defines agent_heartbeat as exactly that switch (andtp3_scripts/tp3_heartbeat_check.pyexists in repo).
Impact: Coordination map debt section is outdated relative to heartbeat protocol + code.
process_map.md vs scheduled_task_map.md (duplicates vs tasks)
MAPS/process_map.mdL17–L19: Two PIDs fortp3_omi_ingest_worker.py(duplicate).MAPS/scheduled_task_map.md: SingleTP3 Launch At Logon/ ingest ecosystem — no contradiction, but duplicate processes are not explained by an extra scheduled task (operational note, not a map conflict).
B. Drift from reality (code vs map)
MAPS/mcp_server_map.md
| Location | Claim | Verdict | Evidence |
|---|---|---|---|
| L17 | Tools: twin_memory_*, omi_ingest_transcript, slack_post_message | Wrong names | MCP registry in tp3_scripts/tp3_mcp_omi_stdio_server.py L990–L1057: omi.ingest_transcript, omi.search_memories, omi.search_memories_unified, omi.get_status, slack.post_message, twin.memory_write, twin.memory_read, twin.memory_search, twin.memory_list, twin.memory_broadcast (dot-separated, not underscores). |
| L18 | stdio auth: TP3_OMI_API_KEY | Not in stdio server | rg TP3_OMI in repo: only MAPS and mission briefs; tp3_scripts/tp3_mcp_omi_stdio_server.py has no TP3_OMI_API_KEY. |
| L31 | See reference_zapier_mcp.md | File missing | rg / glob: no reference_zapier_mcp.md in repo. |
| L41 | See reference_chrome_devtools_mcp.md | File missing | No such file in repo. |
| L20 | Biometric: “biometric-specific search/ingest” | Vague but code exists | tp3_scripts/tp3_mcp_biometric_stdio_server.py L395–L427: biometric.ingest_signal, biometric.search_signals, biometric.get_status. |
MAPS/agent_coordination.md
| Location | Claim | Verdict | Evidence |
|---|---|---|---|
| L72 | twin_memory_write + tag session_start | Wrong tool id + tag | MCP tools use twin.memory_* (tp3_scripts/tp3_mcp_omi_stdio_server.py L1059+); heartbeat protocol uses agent_heartbeat (MAPS/heartbeat_protocol.md L15–18). |
MAPS/data_flow_map.md
| Location | Claim | Verdict | Evidence |
|---|---|---|---|
| L62–L63 | Diagram: twin.memory_write | Matches code | Same dotted names in tp3_scripts/tp3_mcp_omi_stdio_server.py tools list. |
| L38 | tool_ingest_transcript | Matches | tp3_scripts/tp3_mcp_omi_stdio_server.py defines tool_ingest_transcript L212; MCP exposes omi.ingest_transcript. |
MAPS/heartbeat_protocol.md
| Location | Claim | Verdict | Evidence |
|---|---|---|---|
| L114 | Rollout: twin_memory_write with tag agent_heartbeat | Misleading name | Implementation is twin.memory_write via MCP (tp3_scripts/tp3_mcp_omi_stdio_server.py); tag agent_heartbeat is correct. |
MAPS/README.md
| Location | Claim | Verdict | Evidence |
|---|---|---|---|
| L11–L13 | Effectiveness checks: tp3_scripts/tp3_effectiveness_checks.py | Accurate | File exists. |
| L30–L31 | Both process_map.md and scheduled_task_map.md refreshed Daily 6:55am via "TP3 Map Refresh" | Stale / overstated | MAPS/scheduled_task_map.md L49: task TP3 Map Refresh action is MAPS\_generators\gen_process_map.py only — no gen_task_map.py in the same scheduled action line. |
| L52–L57 | Manual refresh commands for both generators | Accurate | Matches intent; does not fix the single-task automation gap. |
MAPS/credential_map.md
| Location | Claim | Verdict | Evidence |
|---|---|---|---|
| L43–L44 | TP3_MCP_PUBLIC_TOKEN for omi-mcp.thebarnetts.info/rpc | Aligned with code | tp3_scripts/tp3_mcp_omi_sse_server.py L53–L61: TP3_MCP_PUBLIC_TOKEN, header X-TP3-MCP-TOKEN. |
| L45 | Bidet PIN shown as 4653 | Sensitive literal in repo | This audit does not repeat the value; map should not embed live PINs — rotate and redact in a follow-up. |
CLAUDE.md (drift vs MAPS / code)
| Location | Claim | Verdict | Evidence |
|---|---|---|---|
| L230 | Rule 11: twin_memory_write with tag agent_heartbeat | Wrong MCP tool id | MCP exposes twin.memory_write (tp3_scripts/tp3_mcp_omi_stdio_server.py L1059); tag matches heartbeat_protocol.md. |
Ports / paths (spot-check)
| Claim source | Claim | Verdict | Evidence |
|---|---|---|---|
MAPS/mcp_server_map.md L17 | SSE Omi on port 8933 | Accurate | tp3_scripts/tp3_mcp_omi_sse_server.py L409: TP3_MCP_SSE_PORT default 8933. |
docker-compose.yml L47–L50 | MinIO console :9001 | Accurate | command: server /data --console-address ":9001" and port mapping. |
MAPS/scheduled_task_map.md L48–L48 | TP3 Launch At Logon → tp3_launch.ps1 | Accurate path | tp3_scripts/tp3_launch.ps1 exists; -WaitForDocker switch exists L7–L59. |
| Mission brief / docs | Task name TP3 Backup Weekly | Name mismatch | Committed MAPS/scheduled_task_map.md L53: TP3 Weekly Backup. |
C. Missing coverage
1. mcp_server_map.md not indexed in MAPS/README.md — “Current maps” table (L28–L34) omits mcp_server_map.md while MAPS/mcp_server_map.md exists; Planned table (L36–L43) still lists mcp_server_map.md as Phase 3 (L40).
2. mcp_server_map.md not indexed — Same README omits agent_coordination.md, heartbeat_protocol.md, hardware_apex.md, today_agenda.md, legacy legacy_soil_*.md, who_is_mark_progress.json.
3. OllamaServe scheduled task — CLAUDE.md L69 references OllamaServe at logon; MAPS/scheduled_task_map.md snapshot (2026-04-18) has no task matching Ollama / OllamaServe in the captured inventory (23 tasks). Either pattern filter excludes it, task name differs, or map snapshot predates install — not documented in MAPS.
4. SSE Omi / biometric HTTP endpoints — data_flow_map.md centers ingest worker + poller; 8933/8934 SSE MCP is not an edge in the data-flow diagram (MCP query path vs ingest).
5. MinIO / Redis — data_flow_map.md focuses on Omi/Bidet/backfill/shared memory; object storage path is implicit in mcp_server_map.md L23 only.
6. Third-party MCP table — No repo verification for Gmail, Calendar, Make.com, etc. (expected; flag as host-config-only).
7. gen_today.py — Present under MAPS/_generators/ but not in README generator table.
8. tp3_heartbeat_check.py — Implements heartbeat_protocol.md but not referenced from README.md or agent_coordination.md “related maps” list.
D. README accuracy
MAPS/README.md
| Line(s) | Issue |
|---|---|
| L26–L34 | Incomplete index — does not list all files in MAPS/ (see §C). |
| L36–L43 | Planned table stale — mcp_server_map.md is present in repo (MAPS/mcp_server_map.md) but still listed under Planned (Phase 3) L40. |
| L30–L31 | Refresh cadence — claims both scheduled_task_map.md and process_map.md via TP3 Map Refresh task; scheduled task row (MAPS/scheduled_task_map.md L49) shows only gen_process_map.py. |
L6–L7 vs data_flow_map.md | Narrative — “3-week flatline” vs corrected post-mortem in data_flow_map.md L16–L17. |
MAPS/README.md “How to refresh” (L47–L57)
- Commands are consistent with two separate generators; automation for
gen_task_map.pyis not the same as forgen_process_map.pyper committed snapshot.
Recommended follow-ups
- [ ] Move
mcp_server_map.mdfrom Planned → Current inMAPS/README.mdand add a Current row (L28–L34). - [ ] Normalize MCP tool names across
mcp_server_map.md,CLAUDE.mdrule 11,agent_coordination.md,heartbeat_protocol.mdrollout line totwin.memory_*,omi.*,slack.post_message(or document alias if clients differ). - [ ] Single heartbeat tag: replace
session_startwithagent_heartbeatinagent_coordination.mdL72,mcp_server_map.mdL82, andagent_coordination.mdL110 debt bullet. - [ ] Fix
data_flow_map.mdedge 3: reconcile DORMANT narrative with auto ACTIVE row (L75–L76 vs L96). - [ ] TP3 Map Refresh scheduled task: either add
gen_task_map.pyto the same action or update README to say onlyprocess_mapis on that schedule;scheduled_task_mapmanual/on-demand. - [ ] Add missing
reference_*.mdfiles or remove links inmcp_server_map.mdL31, L41. - [ ] Redact
credential_map.mdL45 PIN (rotate + replace with “set in.env”. - [ ] Audit
TP3_OMI_API_KEY: remove from docs or implement in stdio if it was intended. - [ ] Index
agent_coordination.md,heartbeat_protocol.md,hardware_apex.md, Legacy Soil files, or add a “Other MAPS” subsection. - [ ]
OllamaServe: add toscheduled_task_map.mdafter confirming task name on Apex, or document why it’s absent from snapshot.
Top 5 severity (would bite soonest)
1. Wrong MCP tool names (twin_memory_* vs twin.memory_*) in mcp_server_map.md L17 and CLAUDE.md L230 — agents calling tools literally will fail.
2. Heartbeat tag split (session_start vs agent_heartbeat) across agent_coordination.md / mcp_server_map.md vs heartbeat_protocol.md — silent monitoring gaps.
3. TP3 Map Refresh only runs gen_process_map.py (scheduled_task_map.md L49) while README promises both maps on the same cadence — scheduled_task_map drift risk.
4. data_flow_map.md edge 3 DORMANT vs ACTIVE auto row — wrong trust in “is Bidet dead or not?”
5. Committed Bidet PIN in credential_map.md L45 — security hygiene; rotate and redact.
Notes (time-box)
- Legacy Soil markdown files (
MAPS/legacy_soil_*.md) were skimmed for TP3 cross-refs only; business content not audited against external markets. who_is_mark_progress.jsonnot validated against a schema.MAPS/_generators/*.py— logic not line-audited;gen_task_map.pyL346 documents Windows-only requirement.