@geminilight/mindos 0.6.57 → 0.6.58

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 (222) hide show
  1. package/_standalone/.mindos-build-version +1 -1
  2. package/_standalone/.next/BUILD_ID +1 -1
  3. package/_standalone/.next/app-path-routes-manifest.json +21 -21
  4. package/_standalone/.next/build-manifest.json +2 -2
  5. package/_standalone/.next/cache/.previewinfo +1 -1
  6. package/_standalone/.next/cache/.rscinfo +1 -1
  7. package/_standalone/.next/cache/config.json +3 -3
  8. package/_standalone/.next/prerender-manifest.json +3 -3
  9. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  10. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/_standalone/.next/server/app/_global-error.html +2 -2
  12. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  13. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  15. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  16. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  20. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/_standalone/.next/server/app/agents/[agentKey]/page.js +2 -2
  23. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  24. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  25. package/_standalone/.next/server/app/agents/page.js +1 -1
  26. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  27. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  28. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  29. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  31. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/acp/config/route.js +1 -1
  33. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/acp/detect/route.js +1 -1
  35. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  40. package/_standalone/.next/server/app/api/agents/custom/detect/route.js +1 -1
  41. package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/agents/custom/route.js +1 -1
  43. package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
  44. package/_standalone/.next/server/app/api/ask/route.js +4 -4
  45. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
  46. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  48. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  49. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  50. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  51. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
  52. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
  54. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  55. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
  56. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
  59. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -1
  61. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
  62. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
  63. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  64. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  65. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  66. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  67. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
  69. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  72. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  74. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  75. package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -1
  76. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  77. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/mcp/install/route.js +1 -1
  79. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  81. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
  83. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  84. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
  86. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  87. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
  88. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  91. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/settings/reset-token/route.js +1 -1
  94. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/settings/route.js +1 -1
  96. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  97. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
  99. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  104. package/_standalone/.next/server/app/api/setup/route.js +1 -1
  105. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  106. package/_standalone/.next/server/app/api/skills/route.js +1 -1
  107. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  108. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  109. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
  110. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  111. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  112. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  113. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  114. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  115. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  116. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  117. package/_standalone/.next/server/app/changes/page.js +2 -2
  118. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  119. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  120. package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
  121. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  122. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  123. package/_standalone/.next/server/app/echo/page.js +1 -1
  124. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  125. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  126. package/_standalone/.next/server/app/explore/page.js +2 -2
  127. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  128. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  129. package/_standalone/.next/server/app/help/page.js +2 -2
  130. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  131. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  132. package/_standalone/.next/server/app/inbox/history/page.js +1 -1
  133. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
  134. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
  135. package/_standalone/.next/server/app/login/page.js +1 -1
  136. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  137. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  138. package/_standalone/.next/server/app/page.js +1 -1
  139. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  140. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  141. package/_standalone/.next/server/app/setup/page.js +2 -2
  142. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  143. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  144. package/_standalone/.next/server/app/trash/page.js +3 -3
  145. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  146. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  147. package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
  148. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  149. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  150. package/_standalone/.next/server/app/wiki/page.js +1 -1
  151. package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -1
  152. package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
  153. package/_standalone/.next/server/app-paths-manifest.json +21 -21
  154. package/_standalone/.next/server/chunks/1550.js +1 -1
  155. package/_standalone/.next/server/chunks/1750.js +1 -1
  156. package/_standalone/.next/server/chunks/3484.js +1 -1
  157. package/_standalone/.next/server/chunks/530.js +23 -23
  158. package/_standalone/.next/server/chunks/6539.js +1 -1
  159. package/_standalone/.next/server/chunks/{2159.js → 6793.js} +2 -2
  160. package/_standalone/.next/server/pages/500.html +2 -2
  161. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  162. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  163. package/_standalone/.next/static/chunks/1053-fe009233cff06e72.js +29 -0
  164. package/_standalone/.next/static/chunks/7249-fa98ca10e9a10f39.js +11 -0
  165. package/_standalone/.next/static/chunks/app/{layout-b3919384ec2eb979.js → layout-7e02ddf4144b01f1.js} +11 -11
  166. package/_standalone/.next/static/chunks/app/page-6a6a12bd6d6812d0.js +7 -0
  167. package/_standalone/.next/static/chunks/app/trash/page-54cbd5c98d9de69b.js +1 -0
  168. package/_standalone/.next/static/chunks/app/view/[...path]/page-ca7bdcbf27f88a46.js +12 -0
  169. package/_standalone/.next/trace +64 -64
  170. package/_standalone/__tests__/api/mcp-install.test.ts +3 -2
  171. package/_standalone/__tests__/ask/non-streaming-api.test.ts +281 -0
  172. package/_standalone/__tests__/core/skill-install-logic.test.ts +1 -0
  173. package/_standalone/components/agents/CustomAgentModal.tsx +32 -8
  174. package/_standalone/data/skills/mindos/SKILL.md +14 -9
  175. package/_standalone/data/skills/mindos-zh/SKILL.md +13 -4
  176. package/_standalone/tsconfig.tsbuildinfo +1 -1
  177. package/app/app/api/agents/custom/route.ts +8 -0
  178. package/app/app/api/ask/route.ts +171 -10
  179. package/app/app/api/mcp/agents/route.ts +5 -3
  180. package/app/app/api/settings/route.ts +9 -0
  181. package/app/app/api/settings/test-key/route.ts +13 -1
  182. package/app/components/agents/CustomAgentModal.tsx +32 -8
  183. package/app/data/skills/mindos/SKILL.md +14 -9
  184. package/app/data/skills/mindos-zh/SKILL.md +13 -4
  185. package/app/lib/custom-agents.ts +45 -2
  186. package/app/lib/i18n/modules/panels.ts +10 -2
  187. package/app/lib/mcp-agents.ts +10 -0
  188. package/bin/lib/mcp-agents.js +10 -0
  189. package/package.json +1 -1
  190. package/skills/mindos/SKILL.md +10 -4
  191. package/skills/mindos-max/SKILL.md +191 -0
  192. package/skills/mindos-max-workspace/evals/evals.json +23 -0
  193. package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/eval_metadata.json +11 -0
  194. package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/old_skill/grading.json +28 -0
  195. package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/old_skill/outputs/transcript.md +203 -0
  196. package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/with_skill/grading.json +28 -0
  197. package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/with_skill/outputs/transcript.md +271 -0
  198. package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/eval_metadata.json +11 -0
  199. package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/old_skill/grading.json +28 -0
  200. package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/old_skill/outputs/transcript.md +121 -0
  201. package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/with_skill/grading.json +28 -0
  202. package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/with_skill/outputs/transcript.md +168 -0
  203. package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/eval_metadata.json +11 -0
  204. package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/old_skill/grading.json +28 -0
  205. package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/old_skill/outputs/transcript.md +143 -0
  206. package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/with_skill/grading.json +28 -0
  207. package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/with_skill/outputs/transcript.md +233 -0
  208. package/skills/mindos-max-workspace/skill-snapshot/mindos-original/SKILL.md +165 -0
  209. package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/README.md +12 -0
  210. package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/post-task-hooks.md +27 -0
  211. package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/preference-capture.md +41 -0
  212. package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/sop-template.md +74 -0
  213. package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/write-supplement.md +119 -0
  214. package/skills/mindos-max-zh/SKILL.md +192 -0
  215. package/skills/mindos-zh/SKILL.md +11 -3
  216. package/_standalone/.next/static/chunks/1053-5cb008a24930e271.js +0 -29
  217. package/_standalone/.next/static/chunks/7249-8cd568ad23656622.js +0 -11
  218. package/_standalone/.next/static/chunks/app/page-6436a99cda35132b.js +0 -7
  219. package/_standalone/.next/static/chunks/app/trash/page-8dc388695344fdd4.js +0 -1
  220. package/_standalone/.next/static/chunks/app/view/[...path]/page-b292b55305ecc021.js +0 -12
  221. /package/_standalone/.next/static/{zOaEtgJbdRMncnCBucULp → 2ksXveDzEcnCMRIElDkLq}/_buildManifest.js +0 -0
  222. /package/_standalone/.next/static/{zOaEtgJbdRMncnCBucULp → 2ksXveDzEcnCMRIElDkLq}/_ssgManifest.js +0 -0
@@ -0,0 +1,271 @@
1
+ # Transcript: Capturing Debugging Experience — Mutex Race Condition in Payment Service
2
+
3
+ ## Context
4
+
5
+ **User input**: "I just finished debugging a really tricky race condition in our payment service - turns out the mutex wasn't being released properly in the error path. Took me 3 hours to figure out. I want to make sure the team doesn't hit this again."
6
+
7
+ **Skill used**: `mindos-max` (SKILL.md v3.0.0-max)
8
+
9
+ ---
10
+
11
+ ## Step 1: Decision Tree Classification
12
+
13
+ The user's request maps to **Retrospective / distill** in the decision tree:
14
+
15
+ ```
16
+ User request
17
+ |- Retrospective / distill / handoff?
18
+ -> [Retrospective path]
19
+ ```
20
+
21
+ Additionally, the **Experience capture** post-task hook triggers (condition: "Debugging, troubleshooting, or multi-round work"). The format is: **problem → cause → solution → rule**.
22
+
23
+ The user explicitly wants to "make sure the team doesn't hit this again" — this is a clear **save/record** intent, so writes are authorized.
24
+
25
+ ---
26
+
27
+ ## Step 2: Bootstrap — List KB Tree
28
+
29
+ Before writing anything, we bootstrap to understand the KB structure and find the right location.
30
+
31
+ ### Command
32
+
33
+ ```bash
34
+ mindos file list
35
+ ```
36
+
37
+ ### Expected output (simulated)
38
+
39
+ ```
40
+ /
41
+ ├── INSTRUCTION.md
42
+ ├── README.md
43
+ ├── .mindos/
44
+ │ └── user-preferences.md
45
+ ├── projects/
46
+ │ ├── payment-service/
47
+ │ │ ├── README.md
48
+ │ │ └── architecture.md
49
+ │ └── ...
50
+ ├── engineering/
51
+ │ ├── debugging/
52
+ │ │ └── ...
53
+ │ ├── runbooks/
54
+ │ │ └── ...
55
+ │ └── pitfalls/
56
+ │ └── ...
57
+ ├── decisions/
58
+ │ └── ...
59
+ └── inbox/
60
+ └── ...
61
+ ```
62
+
63
+ > **Note**: The actual tree structure would determine where the file goes. We look for an existing `debugging/`, `pitfalls/`, `engineering/`, or `lessons-learned/` directory. If none exists, we'd use `inbox/` and propose classification later.
64
+
65
+ ---
66
+
67
+ ## Step 3: Search for Existing Related Content
68
+
69
+ Per the SKILL rule "NEVER search with a single keyword — fire 2-4 parallel searches", we search for related content before writing.
70
+
71
+ ### Commands
72
+
73
+ ```bash
74
+ mindos search "mutex race condition"
75
+ mindos search "payment service debugging"
76
+ mindos search "lock release error path"
77
+ mindos search "concurrency pitfall"
78
+ ```
79
+
80
+ ### Purpose
81
+
82
+ - Avoid duplicating an existing note on the same topic.
83
+ - Find related files to cross-reference or append to.
84
+ - Discover if there's an existing pitfalls/debugging log we should add to instead of creating a new file.
85
+
86
+ ### Simulated result
87
+
88
+ Assuming no exact match found. If a file like `engineering/pitfalls/concurrency-issues.md` existed, we would append to it instead of creating a new file.
89
+
90
+ ---
91
+
92
+ ## Step 4: Check Sibling Files for Local Style
93
+
94
+ Per SKILL rule "NEVER create a file without checking siblings — read 1-2 files in the target directory to learn local style."
95
+
96
+ ### Command
97
+
98
+ ```bash
99
+ mindos file read "engineering/debugging/sample-existing-note.md"
100
+ ```
101
+
102
+ Or if the directory is `engineering/pitfalls/`:
103
+
104
+ ```bash
105
+ mindos file list "engineering/pitfalls/"
106
+ mindos file read "engineering/pitfalls/<first-file>.md"
107
+ ```
108
+
109
+ ### Purpose
110
+
111
+ Learn the local formatting conventions (heading structure, metadata, tags, etc.) so the new note fits in naturally.
112
+
113
+ ---
114
+
115
+ ## Step 5: Write the Experience Note
116
+
117
+ Following the post-task hook format: **problem → cause → solution → rule**.
118
+
119
+ ### Propose to user first
120
+
121
+ > "Record this debugging experience to `engineering/debugging/payment-service-mutex-race-condition.md`? Format: problem → root cause → solution → prevention rule."
122
+
123
+ Assuming user confirms (since they explicitly asked to record it).
124
+
125
+ ### Command
126
+
127
+ ```bash
128
+ mindos file create "engineering/debugging/payment-service-mutex-race-condition.md" --content "# Mutex Not Released in Error Path — Payment Service Race Condition
129
+
130
+ > Debugging session: $(date +%Y-%m-%d) | Duration: ~3 hours | Severity: High
131
+
132
+ ## Problem
133
+
134
+ The payment service experienced a race condition. Under concurrent load, some payment requests would hang indefinitely or produce inconsistent state. The issue was intermittent and hard to reproduce, making it especially time-consuming to diagnose.
135
+
136
+ ## Symptoms
137
+
138
+ - Payment requests intermittently hanging/timing out under load
139
+ - Inconsistent transaction state between service replicas
140
+ - No obvious errors in logs (the deadlock was silent)
141
+ - Issue only manifested under concurrent access patterns
142
+
143
+ ## Root Cause
144
+
145
+ The mutex protecting the critical section in the payment processing path was **not being released in the error path**. The typical pattern looked like:
146
+
147
+ \`\`\`
148
+ mutex.Lock()
149
+ result, err := processPayment(...)
150
+ if err != nil {
151
+ // BUG: mutex.Unlock() was missing here
152
+ return err // <-- mutex held forever
153
+ }
154
+ mutex.Unlock()
155
+ return result
156
+ \`\`\`
157
+
158
+ When \`processPayment()\` returned an error, the function returned early without releasing the lock. Subsequent goroutines/threads trying to acquire the same mutex would block forever, causing the hang.
159
+
160
+ ## Solution
161
+
162
+ Ensure the mutex is **always** released, regardless of the execution path. The fix uses a deferred unlock pattern:
163
+
164
+ \`\`\`
165
+ mutex.Lock()
166
+ defer mutex.Unlock() // guaranteed release on any return path
167
+
168
+ result, err := processPayment(...)
169
+ if err != nil {
170
+ return err // mutex released by defer
171
+ }
172
+ return result
173
+ \`\`\`
174
+
175
+ ## Prevention Rules
176
+
177
+ ### Rule 1: Always use defer/finally for lock release
178
+ Never manually place \`Unlock()\` at each return point. Use \`defer mutex.Unlock()\` (Go), \`try-finally\` (Java/Python), or RAII lock guards (C++/Rust) immediately after acquiring the lock. This makes it structurally impossible to forget the release.
179
+
180
+ ### Rule 2: Code review checklist for locks
181
+ When reviewing code that acquires any lock (mutex, semaphore, read-write lock, distributed lock):
182
+ - [ ] Is the unlock in a defer/finally/RAII guard?
183
+ - [ ] Are there any early return paths between Lock() and Unlock()?
184
+ - [ ] What happens if the critical section panics/throws?
185
+ - [ ] Is the lock scope as narrow as possible?
186
+
187
+ ### Rule 3: Test error paths with locks held
188
+ Write tests that specifically exercise error cases inside critical sections. Verify that after an error, subsequent lock acquisitions still succeed (i.e., the lock was properly released).
189
+
190
+ ### Rule 4: Use static analysis / linting
191
+ Configure linters (e.g., \`go vet\`, \`staticcheck\`, thread-safety annotations in Java) to flag lock/unlock mismatches. Many tools can detect unmatched Lock/Unlock pairs.
192
+
193
+ ## Debugging Approach That Worked
194
+
195
+ 1. **Reproduced under load** — wrote a stress test with concurrent payment requests, some injecting errors
196
+ 2. **Added lock acquisition logging** — wrapped mutex with timing logs to see which goroutine held the lock
197
+ 3. **Identified the stuck holder** — found the goroutine that acquired but never released
198
+ 4. **Traced to error path** — stack trace of the holder showed it was in the error-return branch
199
+ 5. **Total time**: ~3 hours (most spent on reproducing reliably)
200
+
201
+ ## Related Patterns
202
+
203
+ - **Distributed lock not released**: Same bug at a higher level (e.g., Redis/Zookeeper lock). Use TTL as a safety net, but still fix the root cause.
204
+ - **Connection pool exhaustion**: Similar symptom (resources not returned on error). Same fix: defer/finally for resource cleanup.
205
+ - **File handle leak on error**: Same category. Always close in defer/finally.
206
+
207
+ ## Tags
208
+
209
+ #debugging #race-condition #mutex #concurrency #payment-service #pitfall #error-handling
210
+ "
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Step 6: Post-Task Hook — Consistency Sync
216
+
217
+ After creating the file, check if any existing documents reference the payment service or debugging practices that should link to this new note.
218
+
219
+ ### Commands
220
+
221
+ ```bash
222
+ mindos file backlinks "engineering/debugging/payment-service-mutex-race-condition.md"
223
+ mindos search "payment service"
224
+ mindos search "concurrency guidelines"
225
+ ```
226
+
227
+ ### If a related document exists (e.g., `engineering/pitfalls/README.md` or an index file):
228
+
229
+ ```bash
230
+ mindos file append "engineering/pitfalls/README.md" --content "
231
+ - [Mutex Not Released in Error Path](../debugging/payment-service-mutex-race-condition.md) — Race condition from missing unlock in error path. Rule: always use defer/finally for lock release.
232
+ "
233
+ ```
234
+
235
+ ### If a team runbook or onboarding doc exists:
236
+
237
+ Propose: "Your onboarding doc at `engineering/runbooks/onboarding.md` covers concurrency — add a link to this new pitfall?"
238
+
239
+ ---
240
+
241
+ ## Step 7: Verify the Write
242
+
243
+ ```bash
244
+ mindos file read "engineering/debugging/payment-service-mutex-race-condition.md"
245
+ ```
246
+
247
+ Confirm the content was saved correctly and is readable.
248
+
249
+ ---
250
+
251
+ ## Summary of Actions Taken
252
+
253
+ | # | Action | Command | Purpose |
254
+ |---|--------|---------|---------|
255
+ | 1 | Bootstrap | `mindos file list` | Understand KB structure |
256
+ | 2 | Search (4 queries) | `mindos search "..."` x4 | Check for duplicates, find related content |
257
+ | 3 | Read siblings | `mindos file read <sibling>` | Learn local formatting style |
258
+ | 4 | Create note | `mindos file create <path> --content "..."` | Save the debugging experience |
259
+ | 5 | Check backlinks | `mindos file backlinks <path>` | Find documents to cross-reference |
260
+ | 6 | Update index (if exists) | `mindos file append <index> --content "..."` | Keep indexes/READMEs in sync |
261
+ | 7 | Verify | `mindos file read <path>` | Confirm write succeeded |
262
+
263
+ ## Skill Rules Applied
264
+
265
+ - **Bootstrap first** (Rule 1): Listed KB tree before any writes
266
+ - **Read before write** (Rule 6): Searched for existing content, read siblings
267
+ - **NEVER search with a single keyword**: Fired 4 parallel searches with synonyms
268
+ - **NEVER create without checking siblings**: Read existing files in target directory
269
+ - **Post-task hook — Experience capture**: Triggered by debugging context; used problem → cause → solution → rule format
270
+ - **Post-task hook — Consistency sync**: Checked and proposed updates to related docs
271
+ - **Default to read-only exceeded by explicit save intent**: User said "make sure the team doesn't hit this again" = clear write intent
@@ -0,0 +1,11 @@
1
+ {
2
+ "eval_id": 1,
3
+ "eval_name": "save-meeting-decision-zh",
4
+ "prompt": "我昨天跟产品经理开会讨论了一个新的用户反馈系统的方案,他们建议用NPS打分加上开放式评论,我觉得挺好的。帮我把这个决策记下来,以后其他同事问起来可以查到。",
5
+ "assertions": [
6
+ {"text": "Uses mindos CLI commands (mindos file create/write/append) to save content", "type": "behavioral"},
7
+ {"text": "Includes structured meeting note with date, topic, decision, and rationale", "type": "content"},
8
+ {"text": "Places file in appropriate subdirectory (not KB root)", "type": "behavioral"},
9
+ {"text": "Bootstraps KB tree before writing (mindos file list)", "type": "behavioral"}
10
+ ]
11
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "eval_id": 1,
3
+ "eval_name": "save-meeting-decision-zh",
4
+ "run_type": "old_skill",
5
+ "skill": "mindos-original",
6
+ "expectations": [
7
+ {
8
+ "text": "Uses mindos CLI commands (mindos file create/write/append) to save content",
9
+ "passed": true,
10
+ "evidence": "Transcript shows `mindos file create \"decisions/2026-04-06-user-feedback-system-nps.md\" --content \"...\"` in Step 4."
11
+ },
12
+ {
13
+ "text": "Includes structured meeting note with date, topic, decision, and rationale",
14
+ "passed": true,
15
+ "evidence": "Content includes 决策摘要, 背景, 决策内容, 参与者, 理由, and 后续 TODO sections."
16
+ },
17
+ {
18
+ "text": "Places file in appropriate subdirectory (not KB root)",
19
+ "passed": true,
20
+ "evidence": "File placed at `decisions/2026-04-06-user-feedback-system-nps.md`."
21
+ },
22
+ {
23
+ "text": "Bootstraps KB tree before writing (mindos file list)",
24
+ "passed": true,
25
+ "evidence": "Step 1 explicitly runs `mindos file list`."
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,121 @@
1
+ # Transcript: Save Meeting Decision (NPS + Open Comments)
2
+
3
+ ## Task
4
+
5
+ 用户请求:「我昨天跟产品经理开会讨论了一个新的用户反馈系统的方案,他们建议用NPS打分加上开放式评论,我觉得挺好的。帮我把这个决策记下来,以后其他同事问起来可以查到。」
6
+
7
+ ## Skill Analysis
8
+
9
+ According to the SKILL.md decision tree, this is a **"Save / record / update / organize specific content"** task — the user explicitly says "帮我把这个决策记下来" (help me record this decision). This is a **single-file write** operation.
10
+
11
+ ## Execution Plan
12
+
13
+ ### Step 1: Bootstrap — List KB tree to understand structure
14
+
15
+ ```bash
16
+ mindos file list
17
+ ```
18
+
19
+ **Purpose**: Understand the knowledge base directory structure before deciding where to save the note. Per SKILL rule #1: "Bootstrap first — list the KB tree to understand structure before searching or writing."
20
+
21
+ **Expected output**: A tree of directories and files in the KB. We need to identify:
22
+ - Is there a `decisions/` or `决策/` directory?
23
+ - Is there a `meetings/` or `会议/` directory?
24
+ - What is the general organizational pattern (Chinese vs English names, flat vs nested)?
25
+
26
+ ### Step 2: Search for existing related content
27
+
28
+ Per SKILL rule: "NEVER search with a single keyword. Fire 2-4 parallel searches."
29
+
30
+ ```bash
31
+ mindos search "用户反馈"
32
+ mindos search "NPS"
33
+ mindos search "feedback system"
34
+ mindos search "反馈系统"
35
+ ```
36
+
37
+ **Purpose**: Check if there's already a file about user feedback systems, NPS, or related decisions. We should not create duplicates — if an existing file covers this topic, we should append or update it instead.
38
+
39
+ ### Step 3: Check sibling files in target directory
40
+
41
+ Per SKILL rule: "NEVER create a file without checking siblings. Read 1-2 files in the target directory to learn local style."
42
+
43
+ ```bash
44
+ mindos file read <target-directory>/some-existing-file.md
45
+ ```
46
+
47
+ **Purpose**: Learn the local file style (heading structure, metadata conventions, language) before writing. For example, if existing decision files use a specific template with `## 背景`, `## 决策`, `## 理由` sections, we should follow that pattern.
48
+
49
+ ### Step 4: Create the decision note
50
+
51
+ Assuming the KB has a decisions-related directory (e.g., `decisions/` or `决策/`), we would create a new file. If no such directory exists, we'd use the closest fitting location (e.g., `meetings/` or an inbox).
52
+
53
+ ```bash
54
+ mindos file create "decisions/2026-04-06-user-feedback-system-nps.md" --content "# 用户反馈系统方案决策:NPS + 开放式评论
55
+
56
+ ## 决策摘要
57
+
58
+ 采用 **NPS 打分 + 开放式评论** 作为新的用户反馈系统方案。
59
+
60
+ ## 背景
61
+
62
+ 与产品经理开会讨论新的用户反馈系统方案(2026-04-06)。
63
+
64
+ ## 决策内容
65
+
66
+ - **反馈方式**:NPS(Net Promoter Score)打分 + 开放式评论
67
+ - **NPS 打分**:标准 0-10 分制,衡量用户推荐意愿
68
+ - **开放式评论**:允许用户自由填写反馈内容,补充定量分数无法覆盖的细节
69
+ - **决策状态**:已确认采纳
70
+
71
+ ## 参与者
72
+
73
+ - 产品经理(提议方)
74
+ - 本人(确认同意)
75
+
76
+ ## 理由
77
+
78
+ 产品经理建议该方案,综合评估后认为合理:
79
+ - NPS 是业界成熟的用户满意度衡量标准,便于横向对比
80
+ - 开放式评论可以捕获结构化打分无法覆盖的具体问题和建议
81
+ - 两者结合兼顾定量分析和定性洞察
82
+
83
+ ## 后续 TODO
84
+
85
+ - [ ] 确定 NPS 调研的触发时机(如使用后 X 天、关键操作后)
86
+ - [ ] 设计评论区的引导性问题(可选)
87
+ - [ ] 技术方案评审
88
+ "
89
+ ```
90
+
91
+ ### Step 5: Post-task hooks check
92
+
93
+ After the write, scan the post-task hooks table:
94
+
95
+ | Hook | Check | Result |
96
+ |------|-------|--------|
97
+ | Experience capture | Was this debugging/troubleshooting/multi-round? | No — straightforward save. **Skip.** |
98
+ | Consistency sync | Does the new file have backlinks? | No — newly created file. **Skip.** |
99
+ | SOP drift | Did we follow an SOP? | No SOP involved. **Skip.** |
100
+ | Linked update | Changed CSV/TODO with related docs? | No. **Skip.** |
101
+ | Structure classification | Created file in inbox/temp? | No — placed in appropriate directory. **Skip.** |
102
+ | Pattern extraction | 3+ similar operations? | No. **Skip.** |
103
+
104
+ No post-task hooks triggered.
105
+
106
+ ### Step 6: Confirm to user
107
+
108
+ > 已将决策记录保存到 `decisions/2026-04-06-user-feedback-system-nps.md`。
109
+ >
110
+ > 内容包括:决策摘要(NPS + 开放式评论)、背景、具体方案、参与者、理由和后续 TODO。
111
+ >
112
+ > 以后同事查找时可以搜索「NPS」「用户反馈」等关键词找到这份记录。
113
+
114
+ ---
115
+
116
+ ## Notes on Simulation
117
+
118
+ - The actual target directory would depend on the KB's real structure (revealed by `mindos file list`). The path `decisions/...` is an example; the real path would be inferred from bootstrap.
119
+ - If no `decisions/` directory exists, we would either create one (with user confirmation) or place the file in the most fitting existing directory.
120
+ - The file content format would be adjusted to match sibling file conventions discovered in Step 3.
121
+ - Date in filename uses the meeting date (yesterday = 2026-04-06), not today's date.
@@ -0,0 +1,28 @@
1
+ {
2
+ "eval_id": 1,
3
+ "eval_name": "save-meeting-decision-zh",
4
+ "run_type": "with_skill",
5
+ "skill": "mindos-max",
6
+ "expectations": [
7
+ {
8
+ "text": "Uses mindos CLI commands (mindos file create/write/append) to save content",
9
+ "passed": true,
10
+ "evidence": "Transcript shows `mindos file create \"decisions/2026-04-06-nps-feedback-system.md\" --content \"...\"` in Step 5."
11
+ },
12
+ {
13
+ "text": "Includes structured meeting note with date, topic, decision, and rationale",
14
+ "passed": true,
15
+ "evidence": "Content includes 元信息 (date, participants, status), 背景, 决策内容, 决策理由, and 后续行动 sections."
16
+ },
17
+ {
18
+ "text": "Places file in appropriate subdirectory (not KB root)",
19
+ "passed": true,
20
+ "evidence": "File placed at `decisions/2026-04-06-nps-feedback-system.md`, not KB root."
21
+ },
22
+ {
23
+ "text": "Bootstraps KB tree before writing (mindos file list)",
24
+ "passed": true,
25
+ "evidence": "Step 2 explicitly runs `mindos file list` before any writes."
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,168 @@
1
+ # Transcript: Save Meeting Decision (NPS Feedback System)
2
+
3
+ ## Task
4
+
5
+ 用户说:「我昨天跟产品经理开会讨论了一个新的用户反馈系统的方案,他们建议用NPS打分加上开放式评论,我觉得挺好的。帮我把这个决策记下来,以后其他同事问起来可以查到。」
6
+
7
+ ---
8
+
9
+ ## Step 1: Decision Tree Analysis
10
+
11
+ Following the SKILL.md decision tree:
12
+
13
+ - Is this a lookup/summarize/quote? **No** — user explicitly says "帮我把这个决策记下来" (save this decision).
14
+ - Is this a save/record/update? **Yes** — user wants to record a meeting decision.
15
+ - Single file or multiple files? **Single file** — one decision record.
16
+
17
+ **Path: Single-file edit (write operation)**
18
+
19
+ Save intent confirmed by keywords: "记下来" (record), "以后...可以查到" (retrievable later).
20
+
21
+ ---
22
+
23
+ ## Step 2: Bootstrap — List KB Tree
24
+
25
+ Before writing anything, I need to understand the KB structure.
26
+
27
+ ```bash
28
+ mindos file list
29
+ ```
30
+
31
+ **Purpose**: Understand the existing directory structure, find where decisions or meeting notes are stored. The SKILL.md rule says: "NEVER assume directory names. Infer from the actual bootstrap tree."
32
+
33
+ **Expected output**: A file tree showing the KB structure. I would look for directories like:
34
+ - `decisions/` or `决策/`
35
+ - `meetings/` or `会议/`
36
+ - `notes/` or `笔记/`
37
+ - Or any other relevant directory
38
+
39
+ ---
40
+
41
+ ## Step 3: Search for Existing Related Content
42
+
43
+ The SKILL.md rule says: "NEVER search with a single keyword. Fire 2-4 parallel searches."
44
+
45
+ ```bash
46
+ mindos search "用户反馈"
47
+ mindos search "NPS"
48
+ mindos search "feedback system"
49
+ mindos search "会议决策"
50
+ ```
51
+
52
+ **Purpose**:
53
+ 1. Check if there's already a note about this topic (avoid duplicates).
54
+ 2. Find related files to understand context and where this decision fits.
55
+ 3. Discover the local style/format used in existing decision records.
56
+
57
+ ---
58
+
59
+ ## Step 4: Read Sibling Files for Style
60
+
61
+ The SKILL.md rule says: "NEVER create a file without checking siblings. Read 1-2 files in the target directory to learn local style."
62
+
63
+ Assuming the bootstrap tree reveals a `decisions/` or similar directory:
64
+
65
+ ```bash
66
+ mindos file read "decisions/<existing-decision-file>.md"
67
+ ```
68
+
69
+ **Purpose**: Learn the local formatting conventions (heading style, metadata fields, date format, etc.) before creating a new file.
70
+
71
+ ---
72
+
73
+ ## Step 5: Create the Decision Record
74
+
75
+ Based on the KB structure discovered, I would create the file in the appropriate decisions directory. If no decisions directory exists, I would create the file under the most fitting existing subdirectory and inform the user.
76
+
77
+ ```bash
78
+ mindos file create "decisions/2026-04-06-nps-feedback-system.md" --content "# 决策:用户反馈系统采用 NPS + 开放式评论方案
79
+
80
+ ## 元信息
81
+
82
+ - **日期**: 2026-04-06
83
+ - **参与者**: 用户(本人)、产品经理
84
+ - **状态**: 已决定
85
+
86
+ ## 背景
87
+
88
+ 团队需要建立一个新的用户反馈系统,用于收集和分析用户对产品的意见。
89
+
90
+ ## 决策内容
91
+
92
+ 经与产品经理会议讨论,决定采用以下方案:
93
+
94
+ 1. **NPS 打分**(Net Promoter Score):用 0-10 分制量化用户满意度和推荐意愿
95
+ 2. **开放式评论**:在 NPS 打分基础上,提供自由文本输入框,让用户补充具体的反馈意见
96
+
97
+ ## 决策理由
98
+
99
+ - NPS 是业界成熟的用户满意度度量标准,便于横向对比和趋势追踪
100
+ - 开放式评论弥补了纯数字打分缺乏细节的不足,能捕捉定性反馈
101
+ - 两者结合兼顾了定量分析和定性洞察
102
+
103
+ ## 后续行动
104
+
105
+ - [ ] 确定 NPS 调查的触发时机和频率
106
+ - [ ] 设计评论输入的 UI 交互
107
+ - [ ] 制定数据分析和报告流程
108
+ "
109
+ ```
110
+
111
+ **File naming rationale**:
112
+ - 以日期开头 (`2026-04-06`) 方便按时间排序
113
+ - 用英文短横线连接的描述 (`nps-feedback-system`) 保证路径兼容性
114
+ - 放在 `decisions/` 目录下,符合"以后其他同事问起来可以查到"的需求
115
+
116
+ ---
117
+
118
+ ## Step 6: Post-Task Hook Check
119
+
120
+ Per SKILL.md post-task hooks table, scan for applicable hooks:
121
+
122
+ | Hook | Applicable? | Reason |
123
+ |------|-------------|--------|
124
+ | Experience capture | No | Not a debugging/troubleshooting session |
125
+ | Consistency sync | No | New file, no existing backlinks |
126
+ | SOP drift | No | Not following an SOP |
127
+ | Linked update | No | No related CSV/TODO |
128
+ | Structure classification | Maybe | If created in inbox/temp — but we targeted `decisions/` directly |
129
+ | Pattern extraction | No | Single operation this session |
130
+
131
+ **Result**: No post-task hook triggers for this operation.
132
+
133
+ ---
134
+
135
+ ## Step 7: Confirm to User
136
+
137
+ > 已将会议决策记录保存到 `decisions/2026-04-06-nps-feedback-system.md`。
138
+ >
139
+ > 记录了以下要点:
140
+ > - 与产品经理讨论的用户反馈系统方案
141
+ > - 决策:采用 NPS 打分 + 开放式评论
142
+ > - 决策理由和后续待办事项
143
+ >
144
+ > 其他同事可以通过搜索"NPS"、"用户反馈"或"feedback"在知识库中找到这条记录。
145
+
146
+ ---
147
+
148
+ ## Summary of Commands Executed
149
+
150
+ | Step | Command | Purpose |
151
+ |------|---------|---------|
152
+ | 1 | `mindos file list` | Bootstrap: understand KB structure |
153
+ | 2 | `mindos search "用户反馈"` | Check for existing related content |
154
+ | 3 | `mindos search "NPS"` | Check for existing related content |
155
+ | 4 | `mindos search "feedback system"` | Check for existing related content |
156
+ | 5 | `mindos search "会议决策"` | Check for existing related content |
157
+ | 6 | `mindos file read "decisions/<sibling>.md"` | Learn local style conventions |
158
+ | 7 | `mindos file create "decisions/2026-04-06-nps-feedback-system.md" --content "..."` | Create the decision record |
159
+
160
+ ## SKILL.md Rules Followed
161
+
162
+ 1. **Bootstrap first** — Listed KB tree before any write operation (Rule 1)
163
+ 2. **Write only on explicit save intent** — User said "帮我把这个决策记下来" (Rule 2)
164
+ 3. **Read before write** — Searched for existing content and read sibling files (Rule 6)
165
+ 4. **Never assume directory names** — Used bootstrap tree output to determine target directory (NEVER rule)
166
+ 5. **Never search with single keyword** — Fired 4 parallel searches with synonyms and bilingual variants (NEVER rule)
167
+ 6. **Never create file without checking siblings** — Read existing files in target directory first (NEVER rule)
168
+ 7. **Post-task hooks scanned** — Checked all 6 hooks, none triggered
@@ -0,0 +1,11 @@
1
+ {
2
+ "eval_id": 2,
3
+ "eval_name": "search-past-decision-zh",
4
+ "prompt": "上周我记得我们讨论过API限流的方案,具体是怎么定的来着?好像是每分钟100次还是200次?我找不到了。",
5
+ "assertions": [
6
+ {"text": "Uses mindos search with multiple keyword variants (synonyms, Chinese/English)", "type": "behavioral"},
7
+ {"text": "Searches for API rate limiting related terms", "type": "content"},
8
+ {"text": "Read-only approach - does not write to KB", "type": "behavioral"},
9
+ {"text": "Would cite file path if results found", "type": "behavioral"}
10
+ ]
11
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "eval_id": 2,
3
+ "eval_name": "search-past-decision-zh",
4
+ "run_type": "old_skill",
5
+ "skill": "mindos-original",
6
+ "expectations": [
7
+ {
8
+ "text": "Uses mindos search with multiple keyword variants (synonyms, Chinese/English)",
9
+ "passed": true,
10
+ "evidence": "Fired 4 parallel searches: 'API限流', '速率限制', 'rate limit', '每分钟100次'."
11
+ },
12
+ {
13
+ "text": "Searches for API rate limiting related terms",
14
+ "passed": true,
15
+ "evidence": "All 4 queries target API rate limiting concepts."
16
+ },
17
+ {
18
+ "text": "Read-only approach - does not write to KB",
19
+ "passed": true,
20
+ "evidence": "Post-task hooks section states 'Skipped (read-only task, no writes)'. No write commands used."
21
+ },
22
+ {
23
+ "text": "Would cite file path if results found",
24
+ "passed": true,
25
+ "evidence": "Two example responses both include file paths in citations."
26
+ }
27
+ ]
28
+ }