@goondocks/myco 0.20.2 → 0.21.1

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 (216) hide show
  1. package/bin/myco-run +68 -7
  2. package/dist/agent-eval-YK2VP2S4.js +356 -0
  3. package/dist/agent-eval-YK2VP2S4.js.map +1 -0
  4. package/dist/{agent-run-X25Q2A6T.js → agent-run-GEJBD2YD.js} +10 -8
  5. package/dist/{agent-run-X25Q2A6T.js.map → agent-run-GEJBD2YD.js.map} +1 -1
  6. package/dist/{agent-tasks-7B6OFERB.js → agent-tasks-5XSRGTRX.js} +10 -8
  7. package/dist/{agent-tasks-7B6OFERB.js.map → agent-tasks-5XSRGTRX.js.map} +1 -1
  8. package/dist/{chunk-OD4AA7PV.js → chunk-53RPGOEN.js} +56 -8
  9. package/dist/chunk-53RPGOEN.js.map +1 -0
  10. package/dist/chunk-54SXG5HF.js +26 -0
  11. package/dist/chunk-54SXG5HF.js.map +1 -0
  12. package/dist/{chunk-XATDZX7U.js → chunk-6ALVMIB4.js} +19 -5
  13. package/dist/{chunk-XATDZX7U.js.map → chunk-6ALVMIB4.js.map} +1 -1
  14. package/dist/{chunk-FLLBJLHM.js → chunk-6C6QZ4PM.js} +9 -5
  15. package/dist/chunk-6C6QZ4PM.js.map +1 -0
  16. package/dist/{chunk-CCRGY3QW.js → chunk-AUIXX33A.js} +24 -95
  17. package/dist/chunk-AUIXX33A.js.map +1 -0
  18. package/dist/chunk-CISWUP5W.js +101 -0
  19. package/dist/chunk-CISWUP5W.js.map +1 -0
  20. package/dist/{chunk-MYOZLMB2.js → chunk-DTWUHHFI.js} +576 -20
  21. package/dist/chunk-DTWUHHFI.js.map +1 -0
  22. package/dist/chunk-EEOJWLMP.js +582 -0
  23. package/dist/chunk-EEOJWLMP.js.map +1 -0
  24. package/dist/{chunk-XG5RRUYF.js → chunk-ENZR5NG7.js} +2 -2
  25. package/dist/{chunk-6RFZWV4R.js → chunk-FCJ5JV54.js} +1 -1
  26. package/dist/{chunk-6RFZWV4R.js.map → chunk-FCJ5JV54.js.map} +1 -1
  27. package/dist/{chunk-US4LNCAT.js → chunk-IPPMYQ2Y.js} +5 -1
  28. package/dist/chunk-IPPMYQ2Y.js.map +1 -0
  29. package/dist/{chunk-VVNL26WX.js → chunk-KTTSXYEK.js} +22 -10
  30. package/dist/chunk-KTTSXYEK.js.map +1 -0
  31. package/dist/chunk-LQIPXVDH.js +17 -0
  32. package/dist/chunk-LQIPXVDH.js.map +1 -0
  33. package/dist/{chunk-DCSGJ7W4.js → chunk-N2DGFACQ.js} +3 -3
  34. package/dist/chunk-N7Z3LUEZ.js +858 -0
  35. package/dist/chunk-N7Z3LUEZ.js.map +1 -0
  36. package/dist/{chunk-2PDWCDKY.js → chunk-NFO7BRCO.js} +10 -7
  37. package/dist/{chunk-2PDWCDKY.js.map → chunk-NFO7BRCO.js.map} +1 -1
  38. package/dist/{chunk-Q36VMZST.js → chunk-OTQH5KZW.js} +89 -38
  39. package/dist/chunk-OTQH5KZW.js.map +1 -0
  40. package/dist/chunk-OUJSQSKE.js +113 -0
  41. package/dist/chunk-OUJSQSKE.js.map +1 -0
  42. package/dist/chunk-OZ3FBAK5.js +50 -0
  43. package/dist/chunk-OZ3FBAK5.js.map +1 -0
  44. package/dist/chunk-QATYARI5.js +408 -0
  45. package/dist/chunk-QATYARI5.js.map +1 -0
  46. package/dist/{chunk-KESLPBKV.js → chunk-QDLVIW2O.js} +4 -4
  47. package/dist/{chunk-5XIVBO25.js → chunk-QLLBJEM7.js} +6 -2
  48. package/dist/chunk-QLLBJEM7.js.map +1 -0
  49. package/dist/{chunk-EVDQKYCG.js → chunk-RQSJLWP4.js} +13 -2
  50. package/dist/chunk-RQSJLWP4.js.map +1 -0
  51. package/dist/{chunk-BPRIYNLE.js → chunk-TKAJ3JVF.js} +3 -3
  52. package/dist/chunk-TSM6VESW.js +25 -0
  53. package/dist/chunk-TSM6VESW.js.map +1 -0
  54. package/dist/{chunk-6X2ERTQV.js → chunk-USVFEWYL.js} +6 -4
  55. package/dist/{chunk-6X2ERTQV.js.map → chunk-USVFEWYL.js.map} +1 -1
  56. package/dist/{chunk-JZGN33AY.js → chunk-VRI56337.js} +4 -4
  57. package/dist/chunk-X2IRGXGF.js +14103 -0
  58. package/dist/chunk-X2IRGXGF.js.map +1 -0
  59. package/dist/{chunk-FMRZ26U5.js → chunk-X3IGT5RV.js} +5 -2
  60. package/dist/{chunk-FMRZ26U5.js.map → chunk-X3IGT5RV.js.map} +1 -1
  61. package/dist/{chunk-KHT24OWC.js → chunk-YDUOSRGD.js} +8 -94
  62. package/dist/{chunk-KHT24OWC.js.map → chunk-YDUOSRGD.js.map} +1 -1
  63. package/dist/{chunk-NGROSFOH.js → chunk-Z66IT5KL.js} +14 -9
  64. package/dist/chunk-Z66IT5KL.js.map +1 -0
  65. package/dist/{cli-GGPWH4UO.js → cli-HSLIG7EX.js} +50 -43
  66. package/dist/cli-HSLIG7EX.js.map +1 -0
  67. package/dist/{client-YXQUTXVZ.js → client-Z43DNLJH.js} +4 -4
  68. package/dist/{config-OMCYHG2S.js → config-VC4ACP42.js} +6 -4
  69. package/dist/{config-OMCYHG2S.js.map → config-VC4ACP42.js.map} +1 -1
  70. package/dist/{detect-PXNM6TA7.js → detect-7NUD5B5R.js} +2 -2
  71. package/dist/{detect-providers-5KOPZ7J2.js → detect-providers-ILLQZROY.js} +4 -4
  72. package/dist/{doctor-5JXJ36KA.js → doctor-HJCWHAU4.js} +49 -16
  73. package/dist/doctor-HJCWHAU4.js.map +1 -0
  74. package/dist/executor-DO6QFC6G.js +45 -0
  75. package/dist/{init-LMYOVZAV.js → init-4KVK7W2E.js} +16 -14
  76. package/dist/{init-LMYOVZAV.js.map → init-4KVK7W2E.js.map} +1 -1
  77. package/dist/{installer-FS257JRZ.js → installer-N4UTEACX.js} +6 -4
  78. package/dist/{llm-TH4NLIRM.js → llm-AGVEF5XD.js} +5 -4
  79. package/dist/{loader-CQYTFHEW.js → loader-LX7TFRM6.js} +5 -3
  80. package/dist/{loader-NOMBJUPW.js → loader-UDNUMEDA.js} +5 -3
  81. package/dist/{main-YTBVRTBI.js → main-4J4QZZTZ.js} +2518 -656
  82. package/dist/main-4J4QZZTZ.js.map +1 -0
  83. package/dist/{open-HG2DX6RN.js → open-7TXJQM3H.js} +10 -8
  84. package/dist/{open-HG2DX6RN.js.map → open-7TXJQM3H.js.map} +1 -1
  85. package/dist/{post-compact-JSECI44W.js → post-compact-7AEFVCZS.js} +8 -8
  86. package/dist/{post-tool-use-POGPTJBA.js → post-tool-use-TZINWWDH.js} +11 -9
  87. package/dist/post-tool-use-TZINWWDH.js.map +1 -0
  88. package/dist/{post-tool-use-failure-OT7BFWQW.js → post-tool-use-failure-TCFEU2GI.js} +8 -8
  89. package/dist/{pre-compact-OXVODKH4.js → pre-compact-LO2VZCGR.js} +8 -8
  90. package/dist/{provider-check-43LAMSMH.js → provider-check-ZEV5P4KM.js} +4 -4
  91. package/dist/{registry-U4CHXK6R.js → registry-F3THYC5M.js} +6 -4
  92. package/dist/{remove-N7ZPELFU.js → remove-F77AAALE.js} +12 -10
  93. package/dist/{remove-N7ZPELFU.js.map → remove-F77AAALE.js.map} +1 -1
  94. package/dist/{restart-ADG5GBTB.js → restart-UEFDPMLT.js} +11 -9
  95. package/dist/{restart-ADG5GBTB.js.map → restart-UEFDPMLT.js.map} +1 -1
  96. package/dist/{search-AHZEUNRR.js → search-NHNVUAQQ.js} +11 -9
  97. package/dist/{search-AHZEUNRR.js.map → search-NHNVUAQQ.js.map} +1 -1
  98. package/dist/{server-AGVYZVP5.js → server-AZJSTQEK.js} +369 -270
  99. package/dist/server-AZJSTQEK.js.map +1 -0
  100. package/dist/{session-6IU4AXYP.js → session-3HLC5KOD.js} +11 -9
  101. package/dist/{session-6IU4AXYP.js.map → session-3HLC5KOD.js.map} +1 -1
  102. package/dist/{session-end-FT27DWYZ.js → session-end-FS46UARX.js} +7 -7
  103. package/dist/session-start-46KPFV2H.js +134 -0
  104. package/dist/session-start-46KPFV2H.js.map +1 -0
  105. package/dist/{setup-llm-77MP4I2G.js → setup-llm-JMWSNQ2C.js} +11 -9
  106. package/dist/{setup-llm-77MP4I2G.js.map → setup-llm-JMWSNQ2C.js.map} +1 -1
  107. package/dist/src/agent/definitions/agent.yaml +9 -5
  108. package/dist/src/agent/definitions/tasks/cortex-instructions.yaml +115 -0
  109. package/dist/src/agent/definitions/tasks/cortex-prompt-builder.yaml +67 -0
  110. package/dist/src/agent/definitions/tasks/digest-only.yaml +1 -1
  111. package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
  112. package/dist/src/agent/definitions/tasks/review-session.yaml +10 -39
  113. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +181 -25
  114. package/dist/src/agent/definitions/tasks/skill-generate.yaml +21 -7
  115. package/dist/src/agent/definitions/tasks/skill-survey.yaml +2 -6
  116. package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
  117. package/dist/src/agent/definitions/tasks/title-summary.yaml +12 -19
  118. package/dist/src/agent/definitions/tasks/{full-intelligence.yaml → vault-evolve.yaml} +74 -129
  119. package/dist/src/agent/definitions/tasks/vault-seed.yaml +370 -0
  120. package/dist/src/agent/prompts/agent.md +12 -38
  121. package/dist/src/cli.js +1 -1
  122. package/dist/src/daemon/main.js +1 -1
  123. package/dist/src/hooks/post-tool-use.js +1 -1
  124. package/dist/src/hooks/session-end.js +1 -1
  125. package/dist/src/hooks/session-start.js +1 -1
  126. package/dist/src/hooks/stop.js +1 -1
  127. package/dist/src/hooks/user-prompt-submit.js +1 -1
  128. package/dist/src/mcp/server.js +1 -1
  129. package/dist/src/symbionts/manifests/claude-code.yaml +4 -0
  130. package/dist/src/symbionts/manifests/opencode.yaml +7 -0
  131. package/dist/src/symbionts/manifests/pi.yaml +22 -0
  132. package/dist/src/symbionts/templates/agents-starter.md +1 -1
  133. package/dist/src/symbionts/templates/pi/package.json +6 -0
  134. package/dist/src/symbionts/templates/pi/plugin.ts +559 -0
  135. package/dist/{stats-NVPWOYTE.js → stats-MKMETHMA.js} +11 -9
  136. package/dist/{stats-NVPWOYTE.js.map → stats-MKMETHMA.js.map} +1 -1
  137. package/dist/{stop-ZPIKVLH4.js → stop-OUEX6KA4.js} +7 -7
  138. package/dist/{stop-failure-2PX67YJC.js → stop-failure-2BWVNZEG.js} +8 -8
  139. package/dist/{subagent-start-UUE6EHQD.js → subagent-start-J4VV6DEE.js} +8 -8
  140. package/dist/{subagent-stop-KQWWWPE6.js → subagent-stop-JMLVEPIA.js} +8 -8
  141. package/dist/{task-completed-WMHOFQ7B.js → task-completed-65CHMMKA.js} +8 -8
  142. package/dist/{team-LRZ6GTQK.js → team-U2LDKIS4.js} +7 -5
  143. package/dist/{turns-YFNI5CQC.js → turns-HU2CTZAP.js} +2 -2
  144. package/dist/ui/assets/index-BUGor9dk.js +842 -0
  145. package/dist/ui/assets/index-_OP4ifzH.css +1 -0
  146. package/dist/ui/index.html +2 -2
  147. package/dist/{update-O6V4RC4W.js → update-ZSHVXWSQ.js} +12 -10
  148. package/dist/{update-O6V4RC4W.js.map → update-ZSHVXWSQ.js.map} +1 -1
  149. package/dist/{user-prompt-submit-N36KUPHI.js → user-prompt-submit-APMO6FVU.js} +10 -9
  150. package/dist/{user-prompt-submit-N36KUPHI.js.map → user-prompt-submit-APMO6FVU.js.map} +1 -1
  151. package/dist/{verify-LXPV7NYG.js → verify-R76ZFJSZ.js} +8 -5
  152. package/dist/{verify-LXPV7NYG.js.map → verify-R76ZFJSZ.js.map} +1 -1
  153. package/dist/{version-XMPPJQHR.js → version-TXPPS3L5.js} +2 -2
  154. package/dist/version-TXPPS3L5.js.map +1 -0
  155. package/package.json +3 -1
  156. package/skills/myco/SKILL.md +16 -1
  157. package/skills/myco/references/cli-usage.md +1 -1
  158. package/skills/myco-rules/SKILL.md +94 -0
  159. package/skills/{rules → myco-rules}/references/rules-bad-example.md +1 -1
  160. package/skills/{rules → myco-rules}/references/rules-good-example.md +1 -1
  161. package/dist/chunk-4YFKBL3F.js +0 -195
  162. package/dist/chunk-4YFKBL3F.js.map +0 -1
  163. package/dist/chunk-5XIVBO25.js.map +0 -1
  164. package/dist/chunk-CCRGY3QW.js.map +0 -1
  165. package/dist/chunk-CUDIZJY7.js +0 -36
  166. package/dist/chunk-CUDIZJY7.js.map +0 -1
  167. package/dist/chunk-EVDQKYCG.js.map +0 -1
  168. package/dist/chunk-FLLBJLHM.js.map +0 -1
  169. package/dist/chunk-MYOZLMB2.js.map +0 -1
  170. package/dist/chunk-NGROSFOH.js.map +0 -1
  171. package/dist/chunk-OD4AA7PV.js.map +0 -1
  172. package/dist/chunk-Q36VMZST.js.map +0 -1
  173. package/dist/chunk-US4LNCAT.js.map +0 -1
  174. package/dist/chunk-UYMFCYBF.js +0 -2326
  175. package/dist/chunk-UYMFCYBF.js.map +0 -1
  176. package/dist/chunk-VVNL26WX.js.map +0 -1
  177. package/dist/cli-GGPWH4UO.js.map +0 -1
  178. package/dist/doctor-5JXJ36KA.js.map +0 -1
  179. package/dist/executor-HWW2QNZQ.js +0 -2472
  180. package/dist/executor-HWW2QNZQ.js.map +0 -1
  181. package/dist/main-YTBVRTBI.js.map +0 -1
  182. package/dist/post-tool-use-POGPTJBA.js.map +0 -1
  183. package/dist/server-AGVYZVP5.js.map +0 -1
  184. package/dist/session-start-LAFICHII.js +0 -189
  185. package/dist/session-start-LAFICHII.js.map +0 -1
  186. package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +0 -93
  187. package/dist/ui/assets/index-C2JuNtRB.css +0 -1
  188. package/dist/ui/assets/index-JLVaQKV2.js +0 -832
  189. package/skills/myco-curate/SKILL.md +0 -86
  190. package/skills/rules/SKILL.md +0 -214
  191. /package/dist/{chunk-XG5RRUYF.js.map → chunk-ENZR5NG7.js.map} +0 -0
  192. /package/dist/{chunk-DCSGJ7W4.js.map → chunk-N2DGFACQ.js.map} +0 -0
  193. /package/dist/{chunk-KESLPBKV.js.map → chunk-QDLVIW2O.js.map} +0 -0
  194. /package/dist/{chunk-BPRIYNLE.js.map → chunk-TKAJ3JVF.js.map} +0 -0
  195. /package/dist/{chunk-JZGN33AY.js.map → chunk-VRI56337.js.map} +0 -0
  196. /package/dist/{client-YXQUTXVZ.js.map → client-Z43DNLJH.js.map} +0 -0
  197. /package/dist/{detect-PXNM6TA7.js.map → detect-7NUD5B5R.js.map} +0 -0
  198. /package/dist/{detect-providers-5KOPZ7J2.js.map → detect-providers-ILLQZROY.js.map} +0 -0
  199. /package/dist/{installer-FS257JRZ.js.map → executor-DO6QFC6G.js.map} +0 -0
  200. /package/dist/{llm-TH4NLIRM.js.map → installer-N4UTEACX.js.map} +0 -0
  201. /package/dist/{loader-CQYTFHEW.js.map → llm-AGVEF5XD.js.map} +0 -0
  202. /package/dist/{loader-NOMBJUPW.js.map → loader-LX7TFRM6.js.map} +0 -0
  203. /package/dist/{provider-check-43LAMSMH.js.map → loader-UDNUMEDA.js.map} +0 -0
  204. /package/dist/{post-compact-JSECI44W.js.map → post-compact-7AEFVCZS.js.map} +0 -0
  205. /package/dist/{post-tool-use-failure-OT7BFWQW.js.map → post-tool-use-failure-TCFEU2GI.js.map} +0 -0
  206. /package/dist/{pre-compact-OXVODKH4.js.map → pre-compact-LO2VZCGR.js.map} +0 -0
  207. /package/dist/{registry-U4CHXK6R.js.map → provider-check-ZEV5P4KM.js.map} +0 -0
  208. /package/dist/{team-LRZ6GTQK.js.map → registry-F3THYC5M.js.map} +0 -0
  209. /package/dist/{session-end-FT27DWYZ.js.map → session-end-FS46UARX.js.map} +0 -0
  210. /package/dist/{stop-ZPIKVLH4.js.map → stop-OUEX6KA4.js.map} +0 -0
  211. /package/dist/{stop-failure-2PX67YJC.js.map → stop-failure-2BWVNZEG.js.map} +0 -0
  212. /package/dist/{subagent-start-UUE6EHQD.js.map → subagent-start-J4VV6DEE.js.map} +0 -0
  213. /package/dist/{subagent-stop-KQWWWPE6.js.map → subagent-stop-JMLVEPIA.js.map} +0 -0
  214. /package/dist/{task-completed-WMHOFQ7B.js.map → task-completed-65CHMMKA.js.map} +0 -0
  215. /package/dist/{turns-YFNI5CQC.js.map → team-U2LDKIS4.js.map} +0 -0
  216. /package/dist/{version-XMPPJQHR.js.map → turns-HU2CTZAP.js.map} +0 -0
@@ -2,17 +2,20 @@ name: skill-evolve
2
2
  displayName: Skill Evolution
3
3
  description: >-
4
4
  Evaluate and evolve existing Myco-managed skills. Assesses content
5
- freshness, identifies merge and narrowness opportunities, and
6
- autonomously consolidates the skill inventory.
5
+ freshness against new spores AND codebase drift from refactors,
6
+ identifies merge and narrowness opportunities, and autonomously
7
+ consolidates the skill inventory.
7
8
  agent: myco-agent
8
9
  prompt: >-
9
- Assess and evolve skills that have new knowledge or structural
10
- overlap. The instruction contains pre-filtered skills with their
11
- content, new spore IDs, and pre-computed similarity analysis.
10
+ Assess and evolve skills that have new knowledge, codebase drift,
11
+ or structural overlap. The instruction contains pre-filtered skills
12
+ with their content, new spore IDs, and pre-computed similarity
13
+ analysis; the verify phase fact-checks the broader active skill
14
+ set against the codebase.
12
15
  isDefault: false
13
- model: claude-sonnet-4-6
14
- maxTurns: 48
15
- timeoutSeconds: 1800
16
+ reasoningLevel: default
17
+ maxTurns: 72
18
+ timeoutSeconds: 2400
16
19
  schedule:
17
20
  enabled: false
18
21
  intervalSeconds: 900
@@ -25,7 +28,7 @@ params:
25
28
  max_skills_per_run: 8
26
29
  phases:
27
30
  - name: inventory
28
- model: claude-haiku-4-5-20251001
31
+ reasoningLevel: low
29
32
  prompt: |
30
33
  The instruction contains pre-computed structural analysis of
31
34
  all active skills. Two mechanical signals are provided:
@@ -81,13 +84,145 @@ phases:
81
84
  required: true
82
85
  readOnly: true
83
86
 
87
+ - name: verify
88
+ reasoningLevel: default
89
+ prompt: |
90
+ Fact-check active skills against the actual codebase. This phase
91
+ catches silent drift from refactors that didn't produce spores —
92
+ e.g., a file was renamed, a function was removed, a pattern was
93
+ replaced — so the spore-driven assessment in the next phase would
94
+ otherwise leave the skill's stale content in place.
95
+
96
+ ## Selection
97
+
98
+ List active skills via vault_skill_records (action: list,
99
+ status: active). Prioritize up to 3 skills with the OLDEST
100
+ `last_verified_at` in properties (missing/zero counts as oldest,
101
+ so never-verified skills sort to the front). If fewer than 3
102
+ active skills exist, verify them all. This watermark is
103
+ independent of `last_assessed_at` — it rotates verify coverage
104
+ even when assess never touches the skill, which is the whole
105
+ point: skills that never get new spores still need to be
106
+ fact-checked for silent refactor drift. Full rotation time
107
+ scales with the active skill count divided by 3, so a larger
108
+ skill inventory naturally stretches the verify cadence.
109
+
110
+ Skills flagged by the inventory phase (merge_candidates or
111
+ narrow_candidates in vault_state:skill-evolve-inventory) can be
112
+ skipped here — they're already going to be rewritten in act.
113
+
114
+ ## Per-skill procedure
115
+
116
+ For each selected skill:
117
+
118
+ 1. Read full content via vault_skill_records (action: get).
119
+ 2. Identify the 3-5 most LOAD-BEARING concrete claims. A claim
120
+ is load-bearing if the procedure depends on it being true.
121
+ Examples:
122
+ - "Edit `packages/myco/src/db/schema.ts`" — path claim
123
+ - "Call `setFocusedPanel()`" — identifier claim
124
+ - "The daemon restarts executor on SIGHUP" — behavior claim
125
+ Skip generic advice ("use good naming"), tool names that are
126
+ universal (e.g., `grep`), and illustrative code snippets that
127
+ aren't literal file content.
128
+ 3. Verify each claim with the cheapest tool that answers it:
129
+ - **Path claim** → fs_read with a narrow line window (e.g.,
130
+ start_line=1, end_line=30). ENOENT or unrelated content =
131
+ MISSING/OUTDATED. For a DIRECTORY path, use fs_list or
132
+ fs_tree instead — fs_read on a directory returns an error
133
+ and burns a turn.
134
+ - **Identifier claim** → code_grep for the symbol with a
135
+ path+glob filter. Zero hits in expected location = MISSING.
136
+ - **Behavior claim** → code_grep for signature patterns that
137
+ would implement it. Zero hits = MISSING.
138
+
139
+ HARD LIMIT: **at most 2 tool calls per claim**, and **at most
140
+ 4 claims per skill**, so ~8 filesystem calls per skill
141
+ absolute maximum. If your first grep returns too many hits
142
+ or the wrong ones, DO NOT refine and retry — accept
143
+ INCONCLUSIVE and move on. Exploratory refinement is exactly
144
+ how this phase burned through budget on earlier runs.
145
+
146
+ 4. Categorize each claim: VERIFIED / MISSING / OUTDATED /
147
+ INCONCLUSIVE. INCONCLUSIVE is fine when the claim is too
148
+ fuzzy to verify cheaply — don't burn turns on it.
149
+
150
+ 5. Aggregate for the skill:
151
+ - confidence: high (>=80% verified), medium, or low
152
+ - severity: none / minor (1 cosmetic miss) / major
153
+ (load-bearing miss) / critical (most refs gone)
154
+
155
+ 6. Update the skill's verify watermark REGARDLESS of severity —
156
+ skipping this step on severity=none would make verify re-pick
157
+ the same skill forever. Example call:
158
+
159
+ vault_skill_records({
160
+ action: "update",
161
+ id: "<the-skill-uuid>",
162
+ properties: "{\"last_verified_at\": 1776580022}"
163
+ })
164
+
165
+ `properties` is a JSON string, merged into the skill's existing
166
+ properties. Any recent epoch-seconds integer works as the
167
+ timestamp — this is a rotation cursor, not an audit timestamp.
168
+
169
+ ## Budget discipline
170
+
171
+ Total budget for this phase: {{max_turns}} turns covering ALL
172
+ selected skills combined. Plan per-skill budget as roughly
173
+ `{{max_turns}} / skills_selected` turns. Recommended shape:
174
+ 1 content read + up to 4 claim checks × up to 2 tool calls +
175
+ 1 watermark write. Stop verifying a skill as soon as severity
176
+ is clear — finding one MISSING load-bearing claim is enough
177
+ to flag the skill; don't check remaining claims.
178
+
179
+ Prefer narrow fs_read windows (start/end lines) over whole-file
180
+ reads. Prefer code_grep with a path/glob filter over an open grep.
181
+ When a tool returns "Not a file" or zero matches, accept that
182
+ answer and move on — do not retry with adjusted args.
183
+
184
+ Tools available for this phase: {{phase_tools}}.
185
+
186
+ ## Store results
187
+
188
+ Store via vault_set_state (key: skill-evolve-drift) as JSON:
189
+ {
190
+ "verified_at": <epoch-seconds>,
191
+ "reports": [
192
+ {
193
+ "skill_id": "...",
194
+ "name": "...",
195
+ "severity": "none|minor|major|critical",
196
+ "confidence": "high|medium|low",
197
+ "notes": "Short: what's missing or outdated.",
198
+ "load_bearing_misses": ["claim 1", "claim 2"]
199
+ }
200
+ ]
201
+ }
202
+
203
+ Report via vault_report. If no active skills are selectable
204
+ (e.g., all were flagged by inventory for merge), store an empty
205
+ reports array and report skip.
206
+ tools:
207
+ - vault_skill_records
208
+ - vault_set_state
209
+ - vault_report
210
+ - fs_read
211
+ - fs_list
212
+ - code_grep
213
+ maxTurns: 24
214
+ required: true
215
+ dependsOn:
216
+ - inventory
217
+
84
218
  - name: assess
85
- model: claude-sonnet-4-6
219
+ reasoningLevel: default
86
220
  prompt: |
87
- Read the inventory analysis from vault_state
88
- (key: skill-evolve-inventory).
221
+ Read two pre-computed inputs from vault_state:
222
+ - key: skill-evolve-inventory (merge/narrow candidates)
223
+ - key: skill-evolve-drift (codebase verification reports)
89
224
 
90
- There are TWO sources of skills to assess:
225
+ There are THREE sources of skills to assess:
91
226
 
92
227
  **A. Skills with new knowledge** — listed in the instruction
93
228
  with descriptions and new spore IDs (full content is NOT in
@@ -98,8 +233,8 @@ phases:
98
233
  get, id: "<name>") and verify 2-3 code references via
99
234
  vault_search_fts. Skip content reads for skills where
100
235
  the new spores are clearly unrelated.
101
- 3. Check the inventory analysis: is this skill also flagged
102
- for merge or narrowness?
236
+ 3. Check the inventory AND drift analyses: is this skill also
237
+ flagged for merge, narrowness, or codebase drift?
103
238
 
104
239
  **B. Inventory-flagged skills** — merge_candidates and
105
240
  narrow_candidates from the inventory analysis. These may NOT
@@ -109,12 +244,30 @@ phases:
109
244
  2. Verify the inventory's merge/narrow recommendation by
110
245
  reading both skills' content.
111
246
 
112
- For ALL skills from both sources, classify with one of:
247
+ **C. Drift-flagged skills** — reports from the verify phase with
248
+ severity of `minor`, `major`, or `critical`. These may NOT appear
249
+ in the instruction (no new spores) but need attention because
250
+ their content no longer matches the codebase. For each drift
251
+ report not already covered above:
252
+ 1. Read the skill's content via vault_skill_records (action: get).
253
+ 2. Trust the verify phase's load_bearing_misses as the STALE
254
+ detail set. You do NOT need to re-run fs_read/code_grep —
255
+ the verify phase already did that work. Only re-check if
256
+ the verify report's confidence is low.
257
+ 3. Major/critical severity with confidence high/medium should
258
+ classify as STALE (or DEPRECATED if the entire subsystem
259
+ described is gone). Minor severity may stay CURRENT unless
260
+ combined with new-spore evidence.
261
+
262
+ For ALL skills from all three sources, classify with one of:
113
263
  - CURRENT — still accurate, no changes needed.
114
- - STALE — new knowledge changes specific steps, paths,
115
- or gotchas. Note exactly WHAT is new.
264
+ - STALE — new knowledge OR drift report changes specific
265
+ steps, paths, or gotchas. Note exactly WHAT is new or
266
+ wrong (cite the drift report's load_bearing_misses if
267
+ that's the driver).
116
268
  - DEPRECATED — key code references are gone or the
117
269
  procedure is no longer relevant. Note what's missing.
270
+ Drift severity=critical is the strongest signal here.
118
271
  - MERGE — overlaps significantly with another skill
119
272
  (from inventory analysis). Note the TARGET skill to
120
273
  merge into.
@@ -122,10 +275,11 @@ phases:
122
275
  inventory analysis). Note the BROADER skill to absorb
123
276
  into.
124
277
 
125
- Bias toward CURRENT. A skill that is 90% accurate is
126
- better left alone than rewritten with risk of losing detail.
127
- Only classify MERGE/NARROW when the inventory analysis
128
- supports it AND you agree after reading the content.
278
+ Bias toward CURRENT for cosmetic issues. A skill that is 90%
279
+ accurate is better left alone than rewritten with risk of
280
+ losing detail. Do NOT bias toward CURRENT when a drift report
281
+ flags load-bearing misses with high confidence that's
282
+ exactly the refactor-drift case this pipeline exists to catch.
129
283
 
130
284
  5. Update the skill's properties with the new watermark:
131
285
  vault_skill_records (action: update, id: <skill_id>,
@@ -143,8 +297,9 @@ phases:
143
297
  Report via vault_report.
144
298
 
145
299
  If the instruction says "No skills need assessment" AND the
146
- inventory has no merge/narrow candidates, report skip via
147
- vault_report and finish.
300
+ inventory has no merge/narrow candidates AND the drift report
301
+ has no minor+ severity entries, report skip via vault_report
302
+ and finish.
148
303
  tools:
149
304
  - vault_spores
150
305
  - vault_search_fts
@@ -155,9 +310,10 @@ phases:
155
310
  required: true
156
311
  dependsOn:
157
312
  - inventory
313
+ - verify
158
314
 
159
315
  - name: act
160
- model: claude-haiku-4-5-20251001
316
+ reasoningLevel: low
161
317
  prompt: |
162
318
  Read classifications from vault_state
163
319
  (key: skill-evolve-classifications). Parse the JSON.
@@ -10,8 +10,8 @@ prompt: >-
10
10
  The instruction contains the candidate metadata and pre-assembled
11
11
  source material. Stage the skill, validate it, then finalize it.
12
12
  isDefault: false
13
- model: claude-sonnet-4-6
14
- maxTurns: 30
13
+ reasoningLevel: default
14
+ maxTurns: 32
15
15
  timeoutSeconds: 900
16
16
  schedule:
17
17
  enabled: false
@@ -177,9 +177,22 @@ phases:
177
177
  staging path's dedup gate already ran on your description;
178
178
  this is a sanity check on the procedural content itself.
179
179
 
180
- 7. **Accuracy:** Spot-check 2-3 specific claims against the
181
- vault. Use vault_search_fts to verify file paths and
182
- function names mentioned in the skill.
180
+ 7. **Accuracy (codebase-grounded):** Identify the 3-5 most
181
+ LOAD-BEARING concrete claims paths, function/class names,
182
+ patterns the procedure depends on — and verify each against
183
+ the actual source:
184
+ - **Path claim** → `fs_read` (narrow window). ENOENT or
185
+ unrelated content = FAIL.
186
+ - **Identifier claim** → `code_grep` with a path+glob filter.
187
+ Zero hits in the expected location = FAIL.
188
+ - **Behavior claim** → `code_grep` for signature patterns
189
+ that would implement it. Zero hits = FAIL.
190
+ Budget 1-2 tool calls per claim.
191
+
192
+ If any load-bearing claim FAILS, treat as a criterion failure
193
+ and re-stage with corrected content. Do not finalize a skill
194
+ whose load-bearing paths can't be verified against the
195
+ current codebase — that's how hallucinated paths ship.
183
196
 
184
197
  ## If criteria fail
185
198
 
@@ -216,9 +229,10 @@ phases:
216
229
  - vault_skill_records
217
230
  - vault_skill_candidates
218
231
  - vault_spores
219
- - vault_search_fts
220
232
  - vault_report
221
- maxTurns: 15
233
+ - fs_read
234
+ - code_grep
235
+ maxTurns: 18
222
236
  required: true
223
237
  dependsOn:
224
238
  - draft
@@ -9,7 +9,7 @@ prompt: >-
9
9
  Survey the vault knowledge graph for procedural domain candidates.
10
10
  The instruction contains pre-assembled vault context.
11
11
  isDefault: false
12
- model: claude-sonnet-4-6
12
+ reasoningLevel: default
13
13
  maxTurns: 35
14
14
  timeoutSeconds: 1800
15
15
  schedule:
@@ -72,8 +72,6 @@ phases:
72
72
  a domain you spotted in the digest
73
73
  - vault_spores to read full content of high-signal spores
74
74
  summarized in the baseline
75
- - vault_entities for components with high mention counts
76
- that might anchor a domain
77
75
 
78
76
  Do NOT exhaustively paginate or search every keyword.
79
77
  You have ~12 tool calls — use them purposefully.
@@ -89,8 +87,6 @@ phases:
89
87
  Store your domain clusters in working notes for the next phase.
90
88
  tools:
91
89
  - vault_spores
92
- - vault_entities
93
- - vault_edges
94
90
  - vault_sessions
95
91
  - vault_search_fts
96
92
  - vault_search_semantic
@@ -99,7 +95,7 @@ phases:
99
95
  readOnly: true
100
96
 
101
97
  - name: synthesize-evaluate
102
- model: claude-sonnet-4-6
98
+ reasoningLevel: default
103
99
  prompt: |
104
100
  The explore phase identified procedural domain clusters from
105
101
  the vault. Now evaluate each and create candidates for domains
@@ -13,7 +13,7 @@ description: >
13
13
  Records resolution events for audit trail.
14
14
  agent: myco-agent
15
15
  isDefault: false
16
- model: claude-haiku-4-5-20251001
16
+ reasoningLevel: low
17
17
  maxTurns: 30
18
18
  timeoutSeconds: 300
19
19
 
@@ -13,9 +13,9 @@ description: >
13
13
  title and informative summary.
14
14
  agent: myco-agent
15
15
  isDefault: false
16
- model: claude-haiku-4-5-20251001
16
+ reasoningLevel: low
17
17
  maxTurns: 15
18
- timeoutSeconds: 120
18
+ timeoutSeconds: 300
19
19
 
20
20
  prompt: |
21
21
  Generate or update session titles and summaries. Budget: ~12 turns.
@@ -28,27 +28,24 @@ prompt: |
28
28
 
29
29
  **If a target session ID is specified above:**
30
30
  Always process it — the user explicitly requested regeneration.
31
- Call `vault_sessions` with `include_active: true` to get its current
32
- title/summary (the session may still be active). Call `vault_search_fts`
33
- with the session ID to find ALL its prompt batches (processed and
34
- unprocessed). Do NOT skip even if there are no new unprocessed batches.
31
+ Call `vault_session_summary_material` with `session_id: <target session>`
32
+ to get the current title/summary plus the compact ordered prompt-batch arc.
33
+ Do NOT skip even if there are no new unprocessed batches.
35
34
 
36
35
  **If no target session specified (automatic run):**
37
36
  Call `vault_unprocessed` with `include_active: true` — titles are needed
38
37
  mid-flight, not just after a session completes. Group by session_id —
39
- each session with unprocessed batches needs its summary updated. Call
40
- `vault_sessions` with `include_active: true` for those sessions. If no
41
- sessions have unprocessed batches, report "skip" and finish.
38
+ each session with unprocessed batches needs its summary updated. For each
39
+ session, call `vault_session_summary_material`. If no sessions have
40
+ unprocessed batches, report "skip" and finish.
42
41
 
43
42
  ## Phase 2 — Update Each Session (budget: 8 turns)
44
43
 
45
44
  For each session to process:
46
45
  1. Read the EXISTING title and summary — context from prior runs.
47
- 2. Read the session's prompt batches — user_prompt + response_summary.
48
- For targeted sessions, use `vault_search_fts` results from Phase 1.
49
- For automatic runs, use `vault_unprocessed` results.
50
- This is your PRIMARY source — read through the full set to understand
51
- the complete arc of work.
46
+ 2. Read the session's compact prompt-batch arc — user_prompt +
47
+ response_summary. This is your PRIMARY source read through the full
48
+ set to understand the complete arc of work.
52
49
  3. Generate a title and summary from the full session content.
53
50
  4. Call `vault_update_session` with BOTH title and summary.
54
51
 
@@ -81,10 +78,6 @@ prompt: |
81
78
 
82
79
  toolOverrides:
83
80
  - vault_unprocessed
84
- - vault_sessions
85
- - vault_spores
86
- - vault_search_fts
87
- - vault_state
81
+ - vault_session_summary_material
88
82
  - vault_update_session
89
- - vault_set_state
90
83
  - vault_report