@pcircle/memesh 4.8.3 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +2 -1
  3. package/.codex-plugin/mcp.json +6 -4
  4. package/.codex-plugin/plugin.json +1 -1
  5. package/AGENTS.md +68 -17
  6. package/README.de.md +83 -555
  7. package/README.md +83 -581
  8. package/README.zh-TW.md +84 -572
  9. package/dashboard/dist/index.html +10 -10
  10. package/dist/cli/view-live.d.ts.map +1 -1
  11. package/dist/cli/view-live.js +154 -384
  12. package/dist/cli/view-live.js.map +1 -1
  13. package/dist/core/agent-message-inbox.d.ts +2 -1
  14. package/dist/core/agent-message-inbox.d.ts.map +1 -1
  15. package/dist/core/agent-message-inbox.js +23 -4
  16. package/dist/core/agent-message-inbox.js.map +1 -1
  17. package/dist/core/agent-messaging.d.ts.map +1 -1
  18. package/dist/core/agent-messaging.js +23 -15
  19. package/dist/core/agent-messaging.js.map +1 -1
  20. package/dist/core/agent-router.d.ts +11 -10
  21. package/dist/core/agent-router.d.ts.map +1 -1
  22. package/dist/core/agent-router.js +29 -14
  23. package/dist/core/agent-router.js.map +1 -1
  24. package/dist/core/agent-scope-id.d.ts +11 -0
  25. package/dist/core/agent-scope-id.d.ts.map +1 -0
  26. package/dist/core/agent-scope-id.js +40 -0
  27. package/dist/core/agent-scope-id.js.map +1 -0
  28. package/dist/core/analytics.d.ts.map +1 -1
  29. package/dist/core/analytics.js.map +1 -1
  30. package/dist/core/briefing.d.ts.map +1 -1
  31. package/dist/core/briefing.js +8 -2
  32. package/dist/core/briefing.js.map +1 -1
  33. package/dist/core/config.d.ts +4 -40
  34. package/dist/core/config.d.ts.map +1 -1
  35. package/dist/core/config.js +75 -141
  36. package/dist/core/config.js.map +1 -1
  37. package/dist/core/demo.d.ts.map +1 -1
  38. package/dist/core/demo.js +6 -6
  39. package/dist/core/demo.js.map +1 -1
  40. package/dist/core/doctor.d.ts +2 -6
  41. package/dist/core/doctor.d.ts.map +1 -1
  42. package/dist/core/doctor.js +120 -154
  43. package/dist/core/doctor.js.map +1 -1
  44. package/dist/core/dreamer.d.ts +32 -47
  45. package/dist/core/dreamer.d.ts.map +1 -1
  46. package/dist/core/dreamer.js +214 -704
  47. package/dist/core/dreamer.js.map +1 -1
  48. package/dist/core/install-channel.d.ts.map +1 -1
  49. package/dist/core/install-channel.js +4 -47
  50. package/dist/core/install-channel.js.map +1 -1
  51. package/dist/core/install-id.d.ts.map +1 -1
  52. package/dist/core/install-id.js.map +1 -1
  53. package/dist/core/kg-backfill.d.ts.map +1 -1
  54. package/dist/core/kg-backfill.js.map +1 -1
  55. package/dist/core/lesson-engine.d.ts +0 -5
  56. package/dist/core/lesson-engine.d.ts.map +1 -1
  57. package/dist/core/lesson-engine.js +0 -25
  58. package/dist/core/lesson-engine.js.map +1 -1
  59. package/dist/core/lifecycle.d.ts.map +1 -1
  60. package/dist/core/lifecycle.js +58 -49
  61. package/dist/core/lifecycle.js.map +1 -1
  62. package/dist/core/memory-tool.d.ts.map +1 -1
  63. package/dist/core/memory-tool.js +20 -18
  64. package/dist/core/memory-tool.js.map +1 -1
  65. package/dist/core/operations.d.ts +3 -27
  66. package/dist/core/operations.d.ts.map +1 -1
  67. package/dist/core/operations.js +10 -245
  68. package/dist/core/operations.js.map +1 -1
  69. package/dist/core/paths.d.ts +4 -1
  70. package/dist/core/paths.d.ts.map +1 -1
  71. package/dist/core/paths.js +88 -14
  72. package/dist/core/paths.js.map +1 -1
  73. package/dist/core/product-improvements.js +2 -2
  74. package/dist/core/product-improvements.js.map +1 -1
  75. package/dist/core/project-tags.d.ts +2 -0
  76. package/dist/core/project-tags.d.ts.map +1 -1
  77. package/dist/core/project-tags.js +29 -1
  78. package/dist/core/project-tags.js.map +1 -1
  79. package/dist/core/schema-export.d.ts.map +1 -1
  80. package/dist/core/schema-export.js +13 -3
  81. package/dist/core/schema-export.js.map +1 -1
  82. package/dist/core/semver.d.ts +7 -0
  83. package/dist/core/semver.d.ts.map +1 -0
  84. package/dist/core/semver.js +49 -0
  85. package/dist/core/semver.js.map +1 -0
  86. package/dist/core/serializer.d.ts.map +1 -1
  87. package/dist/core/serializer.js +69 -57
  88. package/dist/core/serializer.js.map +1 -1
  89. package/dist/core/signal-scorer.d.ts.map +1 -1
  90. package/dist/core/signal-scorer.js.map +1 -1
  91. package/dist/core/transcript-extractor.d.ts +1 -85
  92. package/dist/core/transcript-extractor.d.ts.map +1 -1
  93. package/dist/core/transcript-extractor.js +5 -364
  94. package/dist/core/transcript-extractor.js.map +1 -1
  95. package/dist/core/transcript-source.d.ts +22 -6
  96. package/dist/core/transcript-source.d.ts.map +1 -1
  97. package/dist/core/transcript-source.js +108 -69
  98. package/dist/core/transcript-source.js.map +1 -1
  99. package/dist/core/types.d.ts +1 -17
  100. package/dist/core/types.d.ts.map +1 -1
  101. package/dist/core/version-check.d.ts +1 -0
  102. package/dist/core/version-check.d.ts.map +1 -1
  103. package/dist/core/version-check.js +46 -1
  104. package/dist/core/version-check.js.map +1 -1
  105. package/dist/db.d.ts +0 -34
  106. package/dist/db.d.ts.map +1 -1
  107. package/dist/db.js +6 -287
  108. package/dist/db.js.map +1 -1
  109. package/dist/host-runtime/acp.d.ts.map +1 -1
  110. package/dist/host-runtime/acp.js +4 -3
  111. package/dist/host-runtime/acp.js.map +1 -1
  112. package/dist/host-runtime/claude.d.ts.map +1 -1
  113. package/dist/host-runtime/claude.js +11 -11
  114. package/dist/host-runtime/claude.js.map +1 -1
  115. package/dist/host-runtime/codex-session.d.ts +9 -1
  116. package/dist/host-runtime/codex-session.d.ts.map +1 -1
  117. package/dist/host-runtime/codex-session.js +474 -29
  118. package/dist/host-runtime/codex-session.js.map +1 -1
  119. package/dist/host-runtime/codex.d.ts.map +1 -1
  120. package/dist/host-runtime/codex.js +4 -3
  121. package/dist/host-runtime/codex.js.map +1 -1
  122. package/dist/host-runtime/config.d.ts +1 -0
  123. package/dist/host-runtime/config.d.ts.map +1 -1
  124. package/dist/host-runtime/config.js +4 -0
  125. package/dist/host-runtime/config.js.map +1 -1
  126. package/dist/host-runtime/entry.d.ts +5 -0
  127. package/dist/host-runtime/entry.d.ts.map +1 -0
  128. package/dist/host-runtime/entry.js +11 -0
  129. package/dist/host-runtime/entry.js.map +1 -0
  130. package/dist/host-runtime/router-client.d.ts.map +1 -1
  131. package/dist/host-runtime/router-client.js +62 -15
  132. package/dist/host-runtime/router-client.js.map +1 -1
  133. package/dist/host-runtime/router.js +2 -2
  134. package/dist/host-runtime/router.js.map +1 -1
  135. package/dist/knowledge-graph.d.ts +0 -1
  136. package/dist/knowledge-graph.d.ts.map +1 -1
  137. package/dist/knowledge-graph.js +77 -60
  138. package/dist/knowledge-graph.js.map +1 -1
  139. package/dist/mcp/THIRD_PARTY_NOTICES.txt +217 -0
  140. package/dist/mcp/server.js +30685 -38
  141. package/dist/mcp/server.js.map +6 -1
  142. package/dist/skills-manifest.json +39 -34
  143. package/dist/storage/entity-index.d.ts +3 -0
  144. package/dist/storage/entity-index.d.ts.map +1 -0
  145. package/dist/storage/entity-index.js +8 -0
  146. package/dist/storage/entity-index.js.map +1 -0
  147. package/dist/storage/fts-index.d.ts.map +1 -1
  148. package/dist/storage/fts-index.js +11 -7
  149. package/dist/storage/fts-index.js.map +1 -1
  150. package/dist/storage/graph-repairs.d.ts +7 -2
  151. package/dist/storage/graph-repairs.d.ts.map +1 -1
  152. package/dist/storage/graph-repairs.js +89 -13
  153. package/dist/storage/graph-repairs.js.map +1 -1
  154. package/dist/storage/schema.d.ts +1 -1
  155. package/dist/storage/schema.d.ts.map +1 -1
  156. package/dist/storage/schema.js +1 -2
  157. package/dist/storage/schema.js.map +1 -1
  158. package/dist/storage/sqlite.d.ts +0 -1
  159. package/dist/storage/sqlite.d.ts.map +1 -1
  160. package/dist/storage/sqlite.js.map +1 -1
  161. package/dist/transports/agent-messaging.d.ts.map +1 -1
  162. package/dist/transports/agent-messaging.js +5 -7
  163. package/dist/transports/agent-messaging.js.map +1 -1
  164. package/dist/transports/cli/cli.d.ts.map +1 -1
  165. package/dist/transports/cli/cli.js +75 -686
  166. package/dist/transports/cli/cli.js.map +1 -1
  167. package/dist/transports/http/retired-routes.js +1 -1
  168. package/dist/transports/http/retired-routes.js.map +1 -1
  169. package/dist/transports/http/server.d.ts.map +1 -1
  170. package/dist/transports/http/server.js +13 -232
  171. package/dist/transports/http/server.js.map +1 -1
  172. package/dist/transports/mcp/handlers.d.ts +130 -4
  173. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  174. package/dist/transports/mcp/handlers.js +56 -7
  175. package/dist/transports/mcp/handlers.js.map +1 -1
  176. package/dist/transports/schemas.d.ts +71 -19
  177. package/dist/transports/schemas.d.ts.map +1 -1
  178. package/dist/transports/schemas.js +57 -11
  179. package/dist/transports/schemas.js.map +1 -1
  180. package/docs/platforms/README.md +6 -5
  181. package/docs/platforms/agent-messaging.md +241 -20
  182. package/hooks/hooks.json +23 -2
  183. package/llms-install.md +62 -30
  184. package/package.json +12 -9
  185. package/scripts/hooks/_generated/agent-message-inbox.js +23 -4
  186. package/scripts/hooks/_generated/core-paths.js +88 -14
  187. package/scripts/hooks/_generated/fts-index.js +11 -7
  188. package/scripts/hooks/_generated/schema.js +1 -2
  189. package/scripts/hooks/_shared.js +65 -23
  190. package/scripts/hooks/decision-nudge.js +152 -0
  191. package/scripts/hooks/post-commit.js +11 -0
  192. package/scripts/hooks/pre-compact.js +12 -4
  193. package/scripts/hooks/session-start.js +32 -9
  194. package/scripts/hooks/session-summary.js +19 -374
  195. package/scripts/upgrade-plugin.sh +71 -2
  196. package/skills/memesh/SKILL.md +24 -15
  197. package/skills/memesh-review/SKILL.md +7 -6
  198. package/dist/core/auto-tagger.d.ts +0 -10
  199. package/dist/core/auto-tagger.d.ts.map +0 -1
  200. package/dist/core/auto-tagger.js +0 -63
  201. package/dist/core/auto-tagger.js.map +0 -1
  202. package/dist/core/conflict-candidates.d.ts +0 -20
  203. package/dist/core/conflict-candidates.d.ts.map +0 -1
  204. package/dist/core/conflict-candidates.js +0 -71
  205. package/dist/core/conflict-candidates.js.map +0 -1
  206. package/dist/core/conflict-judge.d.ts +0 -58
  207. package/dist/core/conflict-judge.d.ts.map +0 -1
  208. package/dist/core/conflict-judge.js +0 -189
  209. package/dist/core/conflict-judge.js.map +0 -1
  210. package/dist/core/digest-validator.d.ts +0 -18
  211. package/dist/core/digest-validator.d.ts.map +0 -1
  212. package/dist/core/digest-validator.js +0 -85
  213. package/dist/core/digest-validator.js.map +0 -1
  214. package/dist/core/embedder.d.ts +0 -20
  215. package/dist/core/embedder.d.ts.map +0 -1
  216. package/dist/core/embedder.js +0 -242
  217. package/dist/core/embedder.js.map +0 -1
  218. package/dist/core/failure-analyzer.d.ts +0 -19
  219. package/dist/core/failure-analyzer.d.ts.map +0 -1
  220. package/dist/core/failure-analyzer.js +0 -83
  221. package/dist/core/failure-analyzer.js.map +0 -1
  222. package/dist/core/json-utils.d.ts +0 -3
  223. package/dist/core/json-utils.d.ts.map +0 -1
  224. package/dist/core/json-utils.js +0 -46
  225. package/dist/core/json-utils.js.map +0 -1
  226. package/dist/core/llm-client.d.ts +0 -22
  227. package/dist/core/llm-client.d.ts.map +0 -1
  228. package/dist/core/llm-client.js +0 -203
  229. package/dist/core/llm-client.js.map +0 -1
  230. package/dist/core/llm-telemetry.d.ts +0 -47
  231. package/dist/core/llm-telemetry.d.ts.map +0 -1
  232. package/dist/core/llm-telemetry.js +0 -117
  233. package/dist/core/llm-telemetry.js.map +0 -1
  234. package/dist/core/llm-validator.d.ts +0 -20
  235. package/dist/core/llm-validator.d.ts.map +0 -1
  236. package/dist/core/llm-validator.js +0 -231
  237. package/dist/core/llm-validator.js.map +0 -1
  238. package/dist/core/ollama-host.d.ts +0 -6
  239. package/dist/core/ollama-host.d.ts.map +0 -1
  240. package/dist/core/ollama-host.js +0 -30
  241. package/dist/core/ollama-host.js.map +0 -1
  242. package/dist/core/output-language.d.ts +0 -6
  243. package/dist/core/output-language.d.ts.map +0 -1
  244. package/dist/core/output-language.js +0 -25
  245. package/dist/core/output-language.js.map +0 -1
  246. package/dist/core/prompt-safety.d.ts +0 -4
  247. package/dist/core/prompt-safety.d.ts.map +0 -1
  248. package/dist/core/prompt-safety.js +0 -20
  249. package/dist/core/prompt-safety.js.map +0 -1
  250. package/dist/storage/vector-index.d.ts +0 -3
  251. package/dist/storage/vector-index.d.ts.map +0 -1
  252. package/dist/storage/vector-index.js +0 -13
  253. package/dist/storage/vector-index.js.map +0 -1
  254. /package/{.mcp.json → .claude-plugin/mcp.json} +0 -0
@@ -8,7 +8,7 @@
8
8
  "name": "memesh",
9
9
  "source": "./",
10
10
  "description": "MeMesh \u2014 agentic memory for coding agents. Captured from the agent's real work via hooks, recalled when it acts. One SQLite file, zero cloud required.",
11
- "version": "4.8.3",
11
+ "version": "4.9.0",
12
12
  "author": {
13
13
  "name": "PCIRCLE AI"
14
14
  },
@@ -4,7 +4,8 @@
4
4
  "author": {
5
5
  "name": "PCIRCLE AI"
6
6
  },
7
- "version": "4.8.3",
7
+ "version": "4.9.0",
8
+ "mcpServers": "./.claude-plugin/mcp.json",
8
9
  "homepage": "https://github.com/PCIRCLE-AI/memesh",
9
10
  "repository": "https://github.com/PCIRCLE-AI/memesh",
10
11
  "license": "MIT",
@@ -1,7 +1,9 @@
1
1
  {
2
- "memesh": {
3
- "command": "node",
4
- "args": ["./dist/mcp/server.js"],
5
- "cwd": "."
2
+ "mcpServers": {
3
+ "memesh": {
4
+ "command": "node",
5
+ "args": ["./dist/mcp/server.js"],
6
+ "cwd": "."
7
+ }
6
8
  }
7
9
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memesh",
3
3
  "description": "MeMesh — agentic memory for coding agents.",
4
- "version": "4.8.3",
4
+ "version": "4.9.0",
5
5
  "mcpServers": "./.codex-plugin/mcp.json"
6
6
  }
package/AGENTS.md CHANGED
@@ -23,7 +23,18 @@ host is recallable from all of them. Not installed yet? Follow
23
23
  field out if it was not said.
24
24
  3. **"What do you remember?"** — call `briefing` and relay its content. Do
25
25
  not answer from your own conversation context.
26
- 4. **When you need another agent** to hand off, to ask, to report back
26
+ 4. **When memory could be condensed from a calendar cluster or a recent Claude Code session**
27
+ when the host supports interactive prompts, offer concise choices in the
28
+ user's conversation language, such as **Dispatch agent task**, **Later**, or
29
+ **Don't suggest again this session**.
30
+ The last choice suppresses only this session's prompt; it does not create a
31
+ durable opt-out. Dispatch means
32
+ using `work_package` in this already-running agent session; it does not mean
33
+ the Dashboard can start or wake an agent. Prepare either one calendar-selected
34
+ digest package or, when the MCP client supplies one unambiguous matching
35
+ workspace root, one package from its newest Claude Code session's visible
36
+ turns. Submit one bounded result for human review or defer without writing.
37
+ 5. **When you need another agent** — to hand off, to ask, to report back —
27
38
  first use `message discover` with the exact project when you do not already
28
39
  know the recipient. It lists only live registrations and their routing IDs,
29
40
  host kind, declared model/current work, generation, and lease; missing
@@ -35,10 +46,11 @@ host is recallable from all of them. Not installed yet? Follow
35
46
  `recipient`; poll first, then fetch each returned `message_id`. Fetching
36
47
  does not acknowledge.
37
48
 
38
- ## All 11 MCP tools
49
+ ## All 12 MCP tools
39
50
 
40
51
  | Tool | Purpose |
41
52
  |---|---|
53
+ | `work_package` | Prepare one bounded untrusted digest (calendar-selected) or transcript package from the newest Claude Code session under the client's single matching MCP workspace root; submit one strictly validated result for pending human review or defer without durable change. Submission retains bounded redacted source turns for comparison; agents cannot apply or reject, and hashes identify freshness and workspace scope rather than authentication. |
42
54
  | `remember` | Store knowledge as an entity with observations, tags, and relations |
43
55
  | `recall` | Search stored knowledge (words are OR-ed, ranked by relevance); empty query lists recent |
44
56
  | `forget` | Archive an entity (soft-delete), or remove one observation via the `observation` parameter |
@@ -78,9 +90,8 @@ host is recallable from all of them. Not installed yet? Follow
78
90
  before concluding anything.
79
91
  - Every recall answer carries a `retrieval` block that says how it was
80
92
  produced — read it instead of guessing: `truncated: true` means the
81
- window filled and more may exist; `degraded: true` means semantic search
82
- is configured but could not run, so you are seeing keyword-only results
83
- right now (worth telling the user, and `memesh doctor` explains why).
93
+ window filled and more may exist. Recall is local FTS5 search; do not
94
+ describe results as semantic, vector-ranked, or model-generated.
84
95
 
85
96
  ## What Claude Code already does — do not double-write
86
97
 
@@ -91,7 +102,10 @@ Under Claude Code with the MeMesh plugin, hooks capture automatically:
91
102
  - **PreToolUse (Edit|Write)** surfaces memories related to the file being
92
103
  edited.
93
104
  - **PostToolUse (Bash)** records git commits with diff stats.
94
- - **Stop** captures session knowledge and turns failures into lessons.
105
+ - **PostToolUse (ExitPlanMode|AskUserQuestion)** reminds you to `remember` a
106
+ decision just made — once per tool per session. It only reminds; unlike
107
+ the hooks above, it writes nothing to the graph itself.
108
+ - **Stop** captures bounded session evidence, including observed error/fix signals.
95
109
  - **PreCompact** saves important knowledge before history is compressed.
96
110
  - **UserPromptSubmit** detects "remember this" intent in the prompt.
97
111
  - **PreToolUse (Bash)** fires accepted lesson-guards: a fenced warning
@@ -100,25 +114,32 @@ Under Claude Code with the MeMesh plugin, hooks capture automatically:
100
114
  you do.
101
115
 
102
116
  So under Claude Code: skip step 1 of the loop (the topology is already
103
- injected), and do not `remember` commits or session summaries by hand. Manual
104
- calls are for what hooks cannot see decisions and their rationale, lessons
105
- worth keeping, and user-stated task state.
117
+ injected), and do not `remember` commits or session summaries by hand. A
118
+ decision made via `ExitPlanMode`/`AskUserQuestion` gets a reminder, not a
119
+ write act on it with a real `remember` call. Manual calls are still how
120
+ decisions, their rationale, lessons worth keeping, and user-stated task state
121
+ actually get stored.
106
122
 
107
123
  On a host with no hooks (Gemini CLI, Cursor, an MCP-only setup, …) the loop is
108
124
  fully manual, and it is worth running.
109
125
 
110
- Codex CLI can be either. Wired as an MCP server it has no hooks, like the
111
- above. Installed as a plugin (`codex plugin add memesh@pcircle-memesh`) it
112
- reads the same `hooks/hooks.json` manifest Claude Code does and runs the same
113
- hook scripts, so the topology is injected for you there too. If you are unsure
114
- which one you are in, `memesh doctor` names it: the "Hooks wired into Claude
115
- Code" row says which plugin runtime it found.
126
+ Codex CLI can be either. Wired only as an MCP server it has no hooks, so call
127
+ `briefing` yourself. Installed as a plugin
128
+ (`codex plugin add memesh@pcircle-memesh`) it wires the MCP server and the
129
+ separate SessionStart companion. On macOS or Linux, an eligible ordinary Codex
130
+ CLI startup or resume registers that exact active thread for native delivery.
131
+ The companion does not run Claude Code's eight capture/recall hooks or prove
132
+ that topology was injected. Do not assume Codex Desktop or an unattached task
133
+ registered; confirm the exact live session with `message discover`.
134
+ `memesh doctor` reports installation and local integration health, but it does
135
+ not prove host acceptance or model-visible delivery.
116
136
 
117
137
  ## Working on this repository (contributing agents)
118
138
 
119
139
  The sections above are for agents whose user installed memesh. If you are an
120
- agent making changes to this codebase, [CLAUDE.md](CLAUDE.md) is the entry
121
- point; the policy it carries, compressed:
140
+ agent making changes to this codebase, read [CLAUDE.md](CLAUDE.md) as the
141
+ contributor entry point and apply the working and delegation requirements
142
+ below with it:
122
143
 
123
144
  - **Blast radius picks the process.** One module, no security surface, no
124
145
  cross-surface behaviour → implement, run the affected tests + typecheck,
@@ -132,5 +153,35 @@ point; the policy it carries, compressed:
132
153
  - **Delegation is disjoint.** Two writers never touch one file; file-editing
133
154
  subagents work in isolated worktrees and never commit or push — the
134
155
  orchestrator reads every diff before it lands.
156
+ - **Delegate the smallest verifiable slice.** Give each agent one coherent
157
+ outcome that can be implemented and falsified independently. Do not hand a
158
+ broad implementation or cleanup to one worker when it can be split at
159
+ file-disjoint boundaries. Read-only analysis may be divided further by
160
+ symbol, test, UI, documentation, or runtime question. A formal independent
161
+ reviewer still receives the same complete diff; specialist scope narrows
162
+ the questions, never the changed files. Delegation must reduce uncertainty
163
+ or work, not merely add an agent.
164
+ - **Use an explicit task card.** Every delegated task states: observable
165
+ outcome; owned paths and forbidden paths; frozen repository input (branch,
166
+ commit and, when relevant, tree or artifact digest); required invariants and
167
+ failure paths; exact checks and readbacks; non-goals and mutation authority;
168
+ and the required findings/evidence return format. Unknowns must be reported,
169
+ not guessed. A task without a falsifiable acceptance check is not ready to
170
+ delegate.
171
+ - **Treat DeepSeek as a bounded team worker.** Prefer the local DeepSeek worker
172
+ for small source inventories, candidate patches, test ideas, failure-log
173
+ analysis, mechanical classifications, and documentation comparisons when
174
+ its result can be checked cheaply. Give it only the minimum secret-free
175
+ context and least-privilege tools. It never receives credentials, MeMesh
176
+ database access, external mutation authority, architecture ownership,
177
+ formal independent-review authority, or completion authority. Its output is
178
+ an untrusted candidate until the orchestrator verifies it against the frozen
179
+ source and executable evidence.
180
+ - **Keep roles and evidence separate.** The orchestrator owns architecture,
181
+ integration, claim coverage, authorization boundaries, and the final status.
182
+ Implementers return a candidate, never `PASS`. A fresh read-only reviewer
183
+ who authored none of the changed paths replays every claim on the exact
184
+ immutable candidate. Any source change invalidates earlier test and review
185
+ evidence for that candidate.
135
186
  - **Internal notes stay local.** Plans and scratch analyses are never
136
187
  committed and never appear in commit messages or release notes.