kenaz 0.0.0-stage → 0.3.2

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 (1641) hide show
  1. package/bin/kenaz.js +3 -0
  2. package/core/.agents/skills/remotion-best-practices/SKILL.md +61 -0
  3. package/core/.agents/skills/remotion-best-practices/rules/3d.md +86 -0
  4. package/core/.agents/skills/remotion-best-practices/rules/animations.md +27 -0
  5. package/core/.agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  6. package/core/.agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  7. package/core/.agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  8. package/core/.agents/skills/remotion-best-practices/rules/assets.md +78 -0
  9. package/core/.agents/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  10. package/core/.agents/skills/remotion-best-practices/rules/audio.md +169 -0
  11. package/core/.agents/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
  12. package/core/.agents/skills/remotion-best-practices/rules/can-decode.md +81 -0
  13. package/core/.agents/skills/remotion-best-practices/rules/charts.md +120 -0
  14. package/core/.agents/skills/remotion-best-practices/rules/compositions.md +154 -0
  15. package/core/.agents/skills/remotion-best-practices/rules/display-captions.md +184 -0
  16. package/core/.agents/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  17. package/core/.agents/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
  18. package/core/.agents/skills/remotion-best-practices/rules/fonts.md +152 -0
  19. package/core/.agents/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  20. package/core/.agents/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  21. package/core/.agents/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  22. package/core/.agents/skills/remotion-best-practices/rules/gifs.md +141 -0
  23. package/core/.agents/skills/remotion-best-practices/rules/images.md +134 -0
  24. package/core/.agents/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  25. package/core/.agents/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  26. package/core/.agents/skills/remotion-best-practices/rules/lottie.md +70 -0
  27. package/core/.agents/skills/remotion-best-practices/rules/maps.md +412 -0
  28. package/core/.agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  29. package/core/.agents/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  30. package/core/.agents/skills/remotion-best-practices/rules/parameters.md +109 -0
  31. package/core/.agents/skills/remotion-best-practices/rules/sequencing.md +118 -0
  32. package/core/.agents/skills/remotion-best-practices/rules/sfx.md +30 -0
  33. package/core/.agents/skills/remotion-best-practices/rules/subtitles.md +36 -0
  34. package/core/.agents/skills/remotion-best-practices/rules/tailwind.md +11 -0
  35. package/core/.agents/skills/remotion-best-practices/rules/text-animations.md +20 -0
  36. package/core/.agents/skills/remotion-best-practices/rules/timing.md +179 -0
  37. package/core/.agents/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  38. package/core/.agents/skills/remotion-best-practices/rules/transitions.md +197 -0
  39. package/core/.agents/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  40. package/core/.agents/skills/remotion-best-practices/rules/trimming.md +51 -0
  41. package/core/.agents/skills/remotion-best-practices/rules/videos.md +171 -0
  42. package/core/.agents/skills/remotion-best-practices/rules/voiceover.md +99 -0
  43. package/core/.agents/skills/supabase-postgres-best-practices/AGENTS.md +90 -0
  44. package/core/.agents/skills/supabase-postgres-best-practices/CLAUDE.md +1 -0
  45. package/core/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  46. package/core/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  47. package/core/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  48. package/core/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  49. package/core/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  50. package/core/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  51. package/core/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  52. package/core/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  53. package/core/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  54. package/core/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  55. package/core/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  56. package/core/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  57. package/core/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  58. package/core/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  59. package/core/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  60. package/core/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  61. package/core/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  62. package/core/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  63. package/core/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  64. package/core/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  65. package/core/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +45 -0
  66. package/core/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  67. package/core/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  68. package/core/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  69. package/core/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  70. package/core/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  71. package/core/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  72. package/core/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  73. package/core/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  74. package/core/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  75. package/core/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
  76. package/core/.agents/skills/typesafe-ai/LICENSE +21 -0
  77. package/core/.agents/skills/typesafe-ai/SKILL.md +149 -0
  78. package/core/.agents/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  79. package/core/.agents/skills/vercel-react-best-practices/SKILL.md +136 -0
  80. package/core/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  81. package/core/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  82. package/core/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  83. package/core/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  84. package/core/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  85. package/core/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  86. package/core/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  87. package/core/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  88. package/core/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  89. package/core/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  90. package/core/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  91. package/core/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  92. package/core/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  93. package/core/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  94. package/core/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  95. package/core/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  96. package/core/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  97. package/core/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  98. package/core/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  99. package/core/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  100. package/core/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  101. package/core/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  102. package/core/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  103. package/core/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  104. package/core/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  105. package/core/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  106. package/core/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  107. package/core/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  108. package/core/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  109. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  110. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  111. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  112. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  113. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  114. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  115. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  116. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  117. package/core/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  118. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  119. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  120. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  121. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  122. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  123. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  124. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  125. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  126. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  127. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  128. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  129. package/core/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  130. package/core/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  131. package/core/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  132. package/core/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  133. package/core/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  134. package/core/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  135. package/core/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  136. package/core/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  137. package/core/.claude/agents/pcb-reviewer.md +146 -0
  138. package/core/.claude/commands/Amelia.md +5 -0
  139. package/core/.claude/commands/Ansuz.md +38 -0
  140. package/core/.claude/commands/Huginn.md +25 -0
  141. package/core/.claude/commands/agent-worker.md +168 -0
  142. package/core/.claude/commands/architect.md +24 -0
  143. package/core/.claude/commands/archive.md +24 -0
  144. package/core/.claude/commands/canary.md +17 -0
  145. package/core/.claude/commands/incident.md +15 -0
  146. package/core/.claude/commands/init.md +112 -0
  147. package/core/.claude/commands/legacy_dev.md +18 -0
  148. package/core/.claude/commands/product-review.md +131 -0
  149. package/core/.claude/commands/review.md +14 -0
  150. package/core/.claude/commands/security.md +15 -0
  151. package/core/.claude/commands/spec.md +22 -0
  152. package/core/.claude/commands/strategy.md +141 -0
  153. package/core/.claude/commands/sunny.md +1 -0
  154. package/core/.claude/commands//347/224/242/345/223/201.md +15 -0
  155. package/core/.claude/commands//347/224/242/345/223/201/346/252/242/350/246/226.md +129 -0
  156. package/core/.claude/commands//350/250/255/350/250/210.md +14 -0
  157. package/core/.claude/commands//350/251/225/344/274/260.md +16 -0
  158. package/core/.claude/commands//351/200/262/345/272/246.md +15 -0
  159. package/core/.claude/hooks/__tests__/substrate.test.js +122 -0
  160. package/core/.claude/hooks/__tests__/task-1866-cli-guard.test.js +193 -0
  161. package/core/.claude/hooks/__tests__/task-1977-dedupe-guard.test.js +125 -0
  162. package/core/.claude/hooks/__tests__/task-2087-mark-landed-idempotent.test.js +128 -0
  163. package/core/.claude/hooks/__tests__/task-2253-null-tip-marker-reuse.test.js +84 -0
  164. package/core/.claude/hooks/__tests__/task-2381-project-guard-walkup.test.js +53 -0
  165. package/core/.claude/hooks/_ansuz-conversation.js +183 -0
  166. package/core/.claude/hooks/_ansuz-conversation.test.js +90 -0
  167. package/core/.claude/hooks/_dedupe-guard.js +75 -0
  168. package/core/.claude/hooks/_peer-project-root.js +113 -0
  169. package/core/.claude/hooks/_peer-project-root.test.js +121 -0
  170. package/core/.claude/hooks/_peer-waiting-line.js +27 -0
  171. package/core/.claude/hooks/_project-guard.js +45 -0
  172. package/core/.claude/hooks/_run-user-prompt.js +134 -0
  173. package/core/.claude/hooks/_run-user-prompt.test.js +80 -0
  174. package/core/.claude/hooks/_session-identity.js +62 -0
  175. package/core/.claude/hooks/_session-pin.js +34 -0
  176. package/core/.claude/hooks/_session-pin.test.js +89 -0
  177. package/core/.claude/hooks/_signal-fence.js +17 -0
  178. package/core/.claude/hooks/_substrate-paths.js +95 -0
  179. package/core/.claude/hooks/_user-scope.js +23 -0
  180. package/core/.claude/hooks/ansuz-session-pin-via-turn-context.test.js +52 -0
  181. package/core/.claude/hooks/ansuz-session-pin.js +171 -0
  182. package/core/.claude/hooks/ansuz-session-pin.test.js +140 -0
  183. package/core/.claude/hooks/context-check.js +51 -0
  184. package/core/.claude/hooks/core-resolve.js +230 -0
  185. package/core/.claude/hooks/daemon-outbox-hook.js +139 -0
  186. package/core/.claude/hooks/fatigue-check.js +52 -0
  187. package/core/.claude/hooks/handoff-snapshot-on-commit.js +154 -0
  188. package/core/.claude/hooks/handoff-snapshot-on-decision.js +188 -0
  189. package/core/.claude/hooks/handoff-snapshot-on-question.js +158 -0
  190. package/core/.claude/hooks/handoff-staleness.js +197 -0
  191. package/core/.claude/hooks/jev-thalamus-context.js +17 -0
  192. package/core/.claude/hooks/jev-thalamus-context.test.js +41 -0
  193. package/core/.claude/hooks/lease-release.js +119 -0
  194. package/core/.claude/hooks/lease-touch.js +96 -0
  195. package/core/.claude/hooks/memory-guard.js +723 -0
  196. package/core/.claude/hooks/memory-guard.test.js +574 -0
  197. package/core/.claude/hooks/reflex-feedback.js +5 -0
  198. package/core/.claude/hooks/session-init.ps1 +49 -0
  199. package/core/.claude/hooks/sound-event.js +70 -0
  200. package/core/.claude/hooks/sound-event.sh +37 -0
  201. package/core/.claude/hooks/stream-delta.js +169 -0
  202. package/core/.claude/hooks/synapse-first-investigation.js +326 -0
  203. package/core/.claude/hooks/synapse-first-investigation.test.js +126 -0
  204. package/core/.claude/hooks/task-bridge.js +33 -0
  205. package/core/.claude/hooks/turn-context-peer.test.js +115 -0
  206. package/core/.claude/hooks/turn-context-session-line.test.js +69 -0
  207. package/core/.claude/hooks/turn-context.js +215 -0
  208. package/core/.claude/hooks/worktree-create.js +1232 -0
  209. package/core/.claude/hooks/worktree-remove.js +181 -0
  210. package/core/.claude/no-hooks.settings.json +3 -0
  211. package/core/.claude/settings.json +180 -0
  212. package/core/.claude/skills/adapt/SKILL.md +199 -0
  213. package/core/.claude/skills/animate/SKILL.md +190 -0
  214. package/core/.claude/skills/architect_agent/SKILL.md +408 -0
  215. package/core/.claude/skills/assessment_agent/SKILL.md +289 -0
  216. package/core/.claude/skills/audit/SKILL.md +129 -0
  217. package/core/.claude/skills/backend_agent/SKILL.md +407 -0
  218. package/core/.claude/skills/backend_engineer/SKILL.md +788 -0
  219. package/core/.claude/skills/bolder/SKILL.md +132 -0
  220. package/core/.claude/skills/clarify/SKILL.md +180 -0
  221. package/core/.claude/skills/code_reviewer/SKILL.md +305 -0
  222. package/core/.claude/skills/code_reviewer/patterns.yaml +85 -0
  223. package/core/.claude/skills/colorize/SKILL.md +158 -0
  224. package/core/.claude/skills/critique/SKILL.md +118 -0
  225. package/core/.claude/skills/delight/SKILL.md +317 -0
  226. package/core/.claude/skills/designer/SKILL.md +845 -0
  227. package/core/.claude/skills/dev_agent/SKILL.md +503 -0
  228. package/core/.claude/skills/developer/SKILL.md +792 -0
  229. package/core/.claude/skills/distill/SKILL.md +137 -0
  230. package/core/.claude/skills/extract/SKILL.md +95 -0
  231. package/core/.claude/skills/feature_agent/SKILL.md +303 -0
  232. package/core/.claude/skills/frontend-design/SKILL.md +127 -0
  233. package/core/.claude/skills/frontend-design/reference/color-and-contrast.md +132 -0
  234. package/core/.claude/skills/frontend-design/reference/interaction-design.md +123 -0
  235. package/core/.claude/skills/frontend-design/reference/motion-design.md +99 -0
  236. package/core/.claude/skills/frontend-design/reference/responsive-design.md +114 -0
  237. package/core/.claude/skills/frontend-design/reference/spatial-design.md +100 -0
  238. package/core/.claude/skills/frontend-design/reference/typography.md +131 -0
  239. package/core/.claude/skills/frontend-design/reference/ux-writing.md +107 -0
  240. package/core/.claude/skills/frontend_agent/SKILL.md +327 -0
  241. package/core/.claude/skills/harden/SKILL.md +358 -0
  242. package/core/.claude/skills/heimdall/SKILL.md +84 -0
  243. package/core/.claude/skills/huginn/SKILL.md +208 -0
  244. package/core/.claude/skills/incident_response/SKILL.md +315 -0
  245. package/core/.claude/skills/legacy_dev/SKILL.md +202 -0
  246. package/core/.claude/skills/normalize/SKILL.md +67 -0
  247. package/core/.claude/skills/onboard/SKILL.md +243 -0
  248. package/core/.claude/skills/optimization_agent/SKILL.md +340 -0
  249. package/core/.claude/skills/optimize/SKILL.md +269 -0
  250. package/core/.claude/skills/pcb-review/SKILL.md +39 -0
  251. package/core/.claude/skills/polish/SKILL.md +202 -0
  252. package/core/.claude/skills/product_manager/SKILL.md +1091 -0
  253. package/core/.claude/skills/qa_engineer/SKILL.md +1269 -0
  254. package/core/.claude/skills/quieter/SKILL.md +118 -0
  255. package/core/.claude/skills/remotion-best-practices/SKILL.md +61 -0
  256. package/core/.claude/skills/remotion-best-practices/rules/3d.md +86 -0
  257. package/core/.claude/skills/remotion-best-practices/rules/animations.md +27 -0
  258. package/core/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  259. package/core/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  260. package/core/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  261. package/core/.claude/skills/remotion-best-practices/rules/assets.md +78 -0
  262. package/core/.claude/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  263. package/core/.claude/skills/remotion-best-practices/rules/audio.md +169 -0
  264. package/core/.claude/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
  265. package/core/.claude/skills/remotion-best-practices/rules/can-decode.md +81 -0
  266. package/core/.claude/skills/remotion-best-practices/rules/charts.md +120 -0
  267. package/core/.claude/skills/remotion-best-practices/rules/compositions.md +154 -0
  268. package/core/.claude/skills/remotion-best-practices/rules/display-captions.md +184 -0
  269. package/core/.claude/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  270. package/core/.claude/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
  271. package/core/.claude/skills/remotion-best-practices/rules/fonts.md +152 -0
  272. package/core/.claude/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  273. package/core/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  274. package/core/.claude/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  275. package/core/.claude/skills/remotion-best-practices/rules/gifs.md +141 -0
  276. package/core/.claude/skills/remotion-best-practices/rules/images.md +134 -0
  277. package/core/.claude/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  278. package/core/.claude/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  279. package/core/.claude/skills/remotion-best-practices/rules/lottie.md +70 -0
  280. package/core/.claude/skills/remotion-best-practices/rules/maps.md +412 -0
  281. package/core/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  282. package/core/.claude/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  283. package/core/.claude/skills/remotion-best-practices/rules/parameters.md +109 -0
  284. package/core/.claude/skills/remotion-best-practices/rules/sequencing.md +118 -0
  285. package/core/.claude/skills/remotion-best-practices/rules/sfx.md +30 -0
  286. package/core/.claude/skills/remotion-best-practices/rules/subtitles.md +36 -0
  287. package/core/.claude/skills/remotion-best-practices/rules/tailwind.md +11 -0
  288. package/core/.claude/skills/remotion-best-practices/rules/text-animations.md +20 -0
  289. package/core/.claude/skills/remotion-best-practices/rules/timing.md +179 -0
  290. package/core/.claude/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  291. package/core/.claude/skills/remotion-best-practices/rules/transitions.md +197 -0
  292. package/core/.claude/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  293. package/core/.claude/skills/remotion-best-practices/rules/trimming.md +51 -0
  294. package/core/.claude/skills/remotion-best-practices/rules/videos.md +171 -0
  295. package/core/.claude/skills/remotion-best-practices/rules/voiceover.md +99 -0
  296. package/core/.claude/skills/security_agent/SKILL.md +312 -0
  297. package/core/.claude/skills/spec_optimizer/SKILL.md +299 -0
  298. package/core/.claude/skills/sre_agent/SKILL.md +1347 -0
  299. package/core/.claude/skills/sunny/SKILL.md +74 -0
  300. package/core/.claude/skills/supabase-postgres-best-practices/AGENTS.md +90 -0
  301. package/core/.claude/skills/supabase-postgres-best-practices/CLAUDE.md +1 -0
  302. package/core/.claude/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  303. package/core/.claude/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  304. package/core/.claude/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  305. package/core/.claude/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  306. package/core/.claude/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  307. package/core/.claude/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  308. package/core/.claude/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  309. package/core/.claude/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  310. package/core/.claude/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  311. package/core/.claude/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  312. package/core/.claude/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  313. package/core/.claude/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  314. package/core/.claude/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  315. package/core/.claude/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  316. package/core/.claude/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  317. package/core/.claude/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  318. package/core/.claude/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  319. package/core/.claude/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  320. package/core/.claude/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  321. package/core/.claude/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  322. package/core/.claude/skills/supabase-postgres-best-practices/references/query-index-types.md +45 -0
  323. package/core/.claude/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  324. package/core/.claude/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  325. package/core/.claude/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  326. package/core/.claude/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  327. package/core/.claude/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  328. package/core/.claude/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  329. package/core/.claude/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  330. package/core/.claude/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  331. package/core/.claude/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  332. package/core/.claude/skills/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
  333. package/core/.claude/skills/synapse_maintain/SKILL.md +84 -0
  334. package/core/.claude/skills/ui-ux-pro-max/SKILL.md +377 -0
  335. package/core/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  336. package/core/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
  337. package/core/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -0
  338. package/core/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
  339. package/core/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
  340. package/core/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  341. package/core/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  342. package/core/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  343. package/core/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  344. package/core/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  345. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  346. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  347. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  348. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  349. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  350. package/core/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  351. package/core/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  352. package/core/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  353. package/core/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  354. package/core/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -0
  355. package/core/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
  356. package/core/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  357. package/core/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  358. package/core/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  359. package/core/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -0
  360. package/core/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  361. package/core/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -0
  362. package/core/.claude/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  363. package/core/.claude/skills/vercel-react-best-practices/SKILL.md +136 -0
  364. package/core/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  365. package/core/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  366. package/core/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  367. package/core/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  368. package/core/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  369. package/core/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  370. package/core/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  371. package/core/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  372. package/core/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  373. package/core/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  374. package/core/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  375. package/core/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  376. package/core/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  377. package/core/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  378. package/core/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  379. package/core/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  380. package/core/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  381. package/core/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  382. package/core/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  383. package/core/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  384. package/core/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  385. package/core/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  386. package/core/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  387. package/core/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  388. package/core/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  389. package/core/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  390. package/core/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  391. package/core/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  392. package/core/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  393. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  394. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  395. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  396. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  397. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  398. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  399. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  400. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  401. package/core/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  402. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  403. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  404. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  405. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  406. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  407. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  408. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  409. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  410. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  411. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  412. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  413. package/core/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  414. package/core/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  415. package/core/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  416. package/core/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  417. package/core/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  418. package/core/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  419. package/core/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  420. package/core/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  421. package/core/.collaboration/README.md +258 -0
  422. package/core/.collaboration/cli/commands/assign.js +39 -0
  423. package/core/.collaboration/cli/commands/claim.js +33 -0
  424. package/core/.collaboration/cli/commands/complete.js +44 -0
  425. package/core/.collaboration/cli/commands/create.js +110 -0
  426. package/core/.collaboration/cli/commands/get.js +83 -0
  427. package/core/.collaboration/cli/commands/index.js +52 -0
  428. package/core/.collaboration/cli/commands/list.js +51 -0
  429. package/core/.collaboration/cli/commands/lock.js +45 -0
  430. package/core/.collaboration/cli/commands/rebuild.js +39 -0
  431. package/core/.collaboration/cli/commands/search.js +61 -0
  432. package/core/.collaboration/cli/commands/stats.js +61 -0
  433. package/core/.collaboration/cli/commands/transfer.js +41 -0
  434. package/core/.collaboration/cli/commands/unlock.js +48 -0
  435. package/core/.collaboration/cli/formatters/help-formatter.js +70 -0
  436. package/core/.collaboration/cli/formatters/index.js +7 -0
  437. package/core/.collaboration/cli/task-cli.js +46 -0
  438. package/core/.collaboration/cli/utils/arg-parser.js +74 -0
  439. package/core/.collaboration/cli/utils/git-user.js +25 -0
  440. package/core/.collaboration/cli/utils/index.js +9 -0
  441. package/core/.collaboration/cli/utils/output.js +10 -0
  442. package/core/.collaboration/config/default.yaml +189 -0
  443. package/core/.collaboration/core/conflict-resolver.js +461 -0
  444. package/core/.collaboration/core/conflict-resolver.test.js +389 -0
  445. package/core/.collaboration/core/id-generator.js +303 -0
  446. package/core/.collaboration/core/migrate-legacy.js +260 -0
  447. package/core/.collaboration/core/package.json +1 -0
  448. package/core/.collaboration/core/task-2257-estimated-hours.test.js +72 -0
  449. package/core/.collaboration/core/task-2260-dir-layout-move.test.js +60 -0
  450. package/core/.collaboration/core/task-2264-single-after-capture.test.js +61 -0
  451. package/core/.collaboration/core/task-2288-followups.test.js +121 -0
  452. package/core/.collaboration/core/task-api-json.js +211 -0
  453. package/core/.collaboration/core/task-api.js +3729 -0
  454. package/core/.collaboration/core/task-api.test.js +1268 -0
  455. package/core/.collaboration/docs/API.md +787 -0
  456. package/core/.collaboration/docs/ARCHITECTURE.md +596 -0
  457. package/core/.collaboration/docs/CLI.md +821 -0
  458. package/core/.collaboration/docs/FAQ.md +695 -0
  459. package/core/.collaboration/docs/MIGRATION.md +804 -0
  460. package/core/.collaboration/docs/examples/README.md +320 -0
  461. package/core/.collaboration/docs/examples/advanced-queries.js +261 -0
  462. package/core/.collaboration/docs/examples/basic-usage.js +184 -0
  463. package/core/.collaboration/docs/examples/team-workflow.js +352 -0
  464. package/core/.collaboration/hooks/README.md +70 -0
  465. package/core/.collaboration/hooks/config.json +10 -0
  466. package/core/.collaboration/hooks/install.js +400 -0
  467. package/core/.collaboration/hooks/post-merge.js +163 -0
  468. package/core/.collaboration/hooks/pre-commit.js +264 -0
  469. package/core/.collaboration/hooks/synapse-hook.js +486 -0
  470. package/core/.collaboration/hooks/synapse-hook.test.js +69 -0
  471. package/core/.failure/INDEX.yaml +231 -0
  472. package/core/.failure/agent-execution/FAIL-001-agent-no-output.yaml +391 -0
  473. package/core/.failure/agent-execution/FAIL-004_agent_platform_specific_commands.md +194 -0
  474. package/core/.failure/agent-execution/FAIL-005_background_agent_permission_denied.md +204 -0
  475. package/core/.failure/agent-execution/FAIL-007-pm-lead-wrong-team-invocation.yaml +0 -0
  476. package/core/.failure/agent-execution/FAIL-008-bypass-api-direct-yaml-write.yaml +94 -0
  477. package/core/.failure/agent-execution/FAIL-010-phase0-poem-format-skipped.yaml +28 -0
  478. package/core/.failure/agent-execution/FAIL-010-skipping-cognitive-checkpoint-after-verification.yaml +59 -0
  479. package/core/.failure/agent-execution/FAIL-012-grep-shortcut-during-investigation.yaml +85 -0
  480. package/core/.failure/agent-execution/FAIL-013-search-cwd-drift-and-case-mismatch.yaml +103 -0
  481. package/core/.failure/agent-execution/FAIL-014-shared-worktree-premature-death-verdict.yaml +35 -0
  482. package/core/.failure/agent-execution/FAIL-AUTO-TASK_1413.yaml +31 -0
  483. package/core/.failure/agent-execution/FAIL-AUTO-TASK_1427.yaml +41 -0
  484. package/core/.failure/agent-execution/FAIL-AUTO-TASK_904.yaml +30 -0
  485. package/core/.failure/agent-execution/README.md +68 -0
  486. package/core/.failure/architecture/FAIL-004_session_based_skill_recognition.md +128 -0
  487. package/core/.failure/architecture/FAIL-006-python-version-compatibility.yaml +445 -0
  488. package/core/.failure/architecture/README.md +87 -0
  489. package/core/.failure/code-quality/README.md +89 -0
  490. package/core/.failure/data-integrity/FAIL-002-json-bom.yaml +220 -0
  491. package/core/.failure/data-integrity/README.md +141 -0
  492. package/core/.failure/pipeline/FAIL-003-queue-pollution.yaml +335 -0
  493. package/core/.failure/pipeline/README.md +95 -0
  494. package/core/.failure/retired/FAIL-009-skipping-synapse-pulse-before-code-change.yaml +49 -0
  495. package/core/.failure/tools/README.md +230 -0
  496. package/core/.failure/tools/USAGE_GUIDE.md +323 -0
  497. package/core/.failure/tools/check_bom.js +101 -0
  498. package/core/.failure/tools/check_failures.ps1 +387 -0
  499. package/core/.failure/tools/fix_json.js +58 -0
  500. package/core/.failure/tools/log_failure.ps1 +474 -0
  501. package/core/.failure/tools/remove_bom.js +46 -0
  502. package/core/.failure/tools/validate_json.js +50 -0
  503. package/core/.formation/.episode-input.json +10 -0
  504. package/core/.formation/README.md +188 -0
  505. package/core/.formation/bifrost/CGDD_hook_lifecycle.js +575 -0
  506. package/core/.formation/bifrost/HOOK_PARITY_VERIFICATION.md +241 -0
  507. package/core/.formation/bifrost/README.md +71 -0
  508. package/core/.formation/bifrost/codex-doctor.js +106 -0
  509. package/core/.formation/bifrost/codex-doctor.test.js +51 -0
  510. package/core/.formation/bifrost/launch.js +510 -0
  511. package/core/.formation/bifrost/launch.test.js +217 -0
  512. package/core/.formation/bifrost/openai/codex-hook-shim.js +171 -0
  513. package/core/.formation/bifrost/openai/codex-hook-shim.test.js +107 -0
  514. package/core/.formation/bifrost/openai/models.json +36 -0
  515. package/core/.formation/bifrost/openai/relay.js +781 -0
  516. package/core/.formation/bifrost/openai/relay.test.js +71 -0
  517. package/core/.formation/bifrost/session.js +382 -0
  518. package/core/.formation/bifrost/session.test.js +121 -0
  519. package/core/.formation/bifrost/setup-codex.js +685 -0
  520. package/core/.formation/bifrost/setup-codex.test.js +102 -0
  521. package/core/.formation/bifrost/shared/ansuz-boot-policy.js +31 -0
  522. package/core/.formation/bifrost/shared/ansuz-boot-policy.test.js +40 -0
  523. package/core/.formation/bifrost/shared/boot-context.js +68 -0
  524. package/core/.formation/bifrost/shared/boot-context.test.js +67 -0
  525. package/core/.formation/bifrost/shared/codex-appserver.js +191 -0
  526. package/core/.formation/bifrost/shared/codex-injection.js +126 -0
  527. package/core/.formation/bifrost/shared/codex-session-registry.js +105 -0
  528. package/core/.formation/bifrost/shared/codex-session-registry.test.js +126 -0
  529. package/core/.formation/bifrost/shared/consolidate.js +286 -0
  530. package/core/.formation/bifrost/shared/stream-json.js +103 -0
  531. package/core/.formation/bifrost/shared/tools.js +278 -0
  532. package/core/.formation/bifrost/sync.js +142 -0
  533. package/core/.formation/briefs/scheduler-evolution.md +209 -0
  534. package/core/.formation/lead.yaml +118 -0
  535. package/core/.formation/legacy.bak/designer.yaml +57 -0
  536. package/core/.formation/legacy.bak/pm.yaml +57 -0
  537. package/core/.formation/legacy.bak/qa.yaml +57 -0
  538. package/core/.formation/legacy.bak/review.yaml +62 -0
  539. package/core/.formation/legacy.bak/scheduler.yaml +129 -0
  540. package/core/.formation/legacy.bak/sre.yaml +57 -0
  541. package/core/.formation/legion/forge.yaml +299 -0
  542. package/core/.formation/legion/hive.yaml +238 -0
  543. package/core/.formation/native/claude/README.md +61 -0
  544. package/core/.formation/native/claude/models.json +42 -0
  545. package/core/.formation/role-map.yaml +274 -0
  546. package/core/.formation/roles/_shared/modules/code_review.yaml +98 -0
  547. package/core/.formation/roles/_shared/modules/security.yaml +103 -0
  548. package/core/.formation/roles/_shared/modules/testing.yaml +14 -0
  549. package/core/.formation/roles/backend/role.yaml +93 -0
  550. package/core/.formation/roles/code_reviewer/role.yaml +102 -0
  551. package/core/.formation/roles/database_optimizer/role.yaml +107 -0
  552. package/core/.formation/roles/designer/role.yaml +66 -0
  553. package/core/.formation/roles/developer/role.yaml +75 -0
  554. package/core/.formation/roles/frontend/role.yaml +134 -0
  555. package/core/.formation/roles/incident_response/role.yaml +89 -0
  556. package/core/.formation/roles/qa/role.yaml +89 -0
  557. package/core/.formation/roles/security/role.yaml +87 -0
  558. package/core/.formation/roles/sre/role.yaml +66 -0
  559. package/core/.formation/skills/coordinator.yaml +52 -0
  560. package/core/.formation/solo/diagnosis.yaml +78 -0
  561. package/core/.formation/solo/strategy.yaml +121 -0
  562. package/core/.formation/spec/task_operations.parity.test.js +426 -0
  563. package/core/.formation/spec/task_operations.yaml +291 -0
  564. package/core/.formation/squad/blitz.yaml +192 -0
  565. package/core/.formation/squad/strategy-tribunal.yaml +354 -0
  566. package/core/.formation/squad/strategy.yaml +349 -0
  567. package/core/.formation/squad/sweep.yaml +208 -0
  568. package/core/.formation/tests/hello.txt +2 -0
  569. package/core/.formation/tools/__tests__/m1-claim-gate.test.js +175 -0
  570. package/core/.formation/tools/__tests__/m1-hmap-convid.test.js +216 -0
  571. package/core/.formation/tools/__tests__/release-lock.test.js +176 -0
  572. package/core/.formation/tools/__tests__/subagent-bifrost-guard.test.js +234 -0
  573. package/core/.formation/tools/__tests__/subagent-codex-harness.test.js +96 -0
  574. package/core/.formation/tools/__tests__/task-1863-claim-late-release.test.js +160 -0
  575. package/core/.formation/tools/__tests__/task-2265-singleton-identity.test.js +134 -0
  576. package/core/.formation/tools/__tests__/task-2281-singleton-readers.test.js +64 -0
  577. package/core/.formation/tools/__tests__/task2030-worktree-node-modules.test.js +221 -0
  578. package/core/.formation/tools/__tests__/task2067-worktree-branch-reuse.test.js +148 -0
  579. package/core/.formation/tools/alaya-gate.js +198 -0
  580. package/core/.formation/tools/analytics.js +172 -0
  581. package/core/.formation/tools/broadcast.js +103 -0
  582. package/core/.formation/tools/commit-sync.js +154 -0
  583. package/core/.formation/tools/coordinator.js +350 -0
  584. package/core/.formation/tools/dashboard-models-chain.test.js +60 -0
  585. package/core/.formation/tools/dispatch-cortex-context.test.js +52 -0
  586. package/core/.formation/tools/dispatch-detail/cross-project-worktree.md +40 -0
  587. package/core/.formation/tools/dispatch-detail/testing-module.md +53 -0
  588. package/core/.formation/tools/dispatch-detail/worktree-subagent-mode.md +72 -0
  589. package/core/.formation/tools/dispatch-dryrun.test.js +54 -0
  590. package/core/.formation/tools/dispatch-model-policy.test.js +165 -0
  591. package/core/.formation/tools/dispatch-notifier.js +84 -0
  592. package/core/.formation/tools/dispatch-registry.js +346 -0
  593. package/core/.formation/tools/dispatch.js +1931 -0
  594. package/core/.formation/tools/formations.js +1203 -0
  595. package/core/.formation/tools/forseti-verify.js +1170 -0
  596. package/core/.formation/tools/git-salvage.js +269 -0
  597. package/core/.formation/tools/guard-attribution.js +224 -0
  598. package/core/.formation/tools/headless-branch-recovery.test.js +64 -0
  599. package/core/.formation/tools/headless-dryrun.test.js +79 -0
  600. package/core/.formation/tools/headless-v2.js +659 -0
  601. package/core/.formation/tools/headless.js +1071 -0
  602. package/core/.formation/tools/integration.js +528 -0
  603. package/core/.formation/tools/jev-correction.js +214 -0
  604. package/core/.formation/tools/jev-correction.test.js +178 -0
  605. package/core/.formation/tools/legacy-scheduler.js +1994 -0
  606. package/core/.formation/tools/lib/exec-tree.js +92 -0
  607. package/core/.formation/tools/lib/exec-tree.test.js +82 -0
  608. package/core/.formation/tools/loader.js +190 -0
  609. package/core/.formation/tools/log-reader.js +232 -0
  610. package/core/.formation/tools/logger.js +273 -0
  611. package/core/.formation/tools/mcp-allowlist.test.js +40 -0
  612. package/core/.formation/tools/memory-loader.js +422 -0
  613. package/core/.formation/tools/merge-lock-heartbeat.test.js +35 -0
  614. package/core/.formation/tools/no-hooks.settings.json +3 -0
  615. package/core/.formation/tools/pool-status-push.js +121 -0
  616. package/core/.formation/tools/pool-status-push.test.js +165 -0
  617. package/core/.formation/tools/post-complete/bounded-http.js +102 -0
  618. package/core/.formation/tools/post-complete/bounded-http.test.js +130 -0
  619. package/core/.formation/tools/post-complete/cognitive.js +270 -0
  620. package/core/.formation/tools/post-complete/git-merge.js +2845 -0
  621. package/core/.formation/tools/post-complete/health.js +464 -0
  622. package/core/.formation/tools/post-complete/integration-gaps.js +98 -0
  623. package/core/.formation/tools/post-complete/outcome.js +874 -0
  624. package/core/.formation/tools/post-complete/staging.js +390 -0
  625. package/core/.formation/tools/post-complete/subagent-transcript-stats.js +460 -0
  626. package/core/.formation/tools/post-complete/subagent-transcript-stats.test.js +680 -0
  627. package/core/.formation/tools/post-complete/task1536.test.js +627 -0
  628. package/core/.formation/tools/post-complete/task1543.test.js +261 -0
  629. package/core/.formation/tools/post-complete/task1876.test.js +287 -0
  630. package/core/.formation/tools/post-complete/task1957.test.js +293 -0
  631. package/core/.formation/tools/post-complete/task1997.test.js +401 -0
  632. package/core/.formation/tools/post-complete/task2028.test.js +232 -0
  633. package/core/.formation/tools/post-complete/task2029.test.js +275 -0
  634. package/core/.formation/tools/post-complete/task2036.test.js +330 -0
  635. package/core/.formation/tools/post-complete/task2038.test.js +246 -0
  636. package/core/.formation/tools/post-complete/task2071.test.js +231 -0
  637. package/core/.formation/tools/post-complete/task2233.test.js +100 -0
  638. package/core/.formation/tools/post-complete/task2240.test.js +134 -0
  639. package/core/.formation/tools/post-complete/task2244.test.js +199 -0
  640. package/core/.formation/tools/post-complete/task2255.test.js +28 -0
  641. package/core/.formation/tools/post-complete/task2268.test.js +106 -0
  642. package/core/.formation/tools/post-complete/task2341.test.js +74 -0
  643. package/core/.formation/tools/post-complete/task2345.test.js +38 -0
  644. package/core/.formation/tools/post-complete/testing.js +482 -0
  645. package/core/.formation/tools/post-complete/wish.js +177 -0
  646. package/core/.formation/tools/post-complete/worktree-rescue.test.js +283 -0
  647. package/core/.formation/tools/post-complete.js +3660 -0
  648. package/core/.formation/tools/post-complete.test.js +1002 -0
  649. package/core/.formation/tools/pre-dispatch-snapshot.test.js +328 -0
  650. package/core/.formation/tools/process-state.js +33 -0
  651. package/core/.formation/tools/prompt.js +2183 -0
  652. package/core/.formation/tools/prompt.test.js +875 -0
  653. package/core/.formation/tools/remote-conflict.js +98 -0
  654. package/core/.formation/tools/revert-daemon-state.js +162 -0
  655. package/core/.formation/tools/route-audit.test.js +55 -0
  656. package/core/.formation/tools/runner.js +1332 -0
  657. package/core/.formation/tools/supabase-client.js +104 -0
  658. package/core/.formation/tools/task-sync.js +236 -0
  659. package/core/.formation/tools/task-utils.js +344 -0
  660. package/core/.formation/tools/task2028-headless-worktree.test.js +112 -0
  661. package/core/.formation/tools/test-drift.js +148 -0
  662. package/core/.formation/tools/tests/headless-mcp-args-plumbing.test.js +123 -0
  663. package/core/.formation/tools/tests/relay-mcp-overrides.test.js +112 -0
  664. package/core/.formation/tools/transcript-recorder.js +574 -0
  665. package/core/.formation/tools/utils-claude-cmd.test.js +28 -0
  666. package/core/.formation/tools/utils-worktree-config.test.js +44 -0
  667. package/core/.formation/tools/utils.js +1020 -0
  668. package/core/.formation/tools/verify-acceptance.js +585 -0
  669. package/core/.formation/tools/worktree-leak.test.js +162 -0
  670. package/core/.formation/tools/worktree-reclaim.js +259 -0
  671. package/core/.formation/tools/worktree-reclaim.test.js +182 -0
  672. package/core/.formation/tools/yggdrasil-local.js +97 -0
  673. package/core/.formation/unit/do.yaml +78 -0
  674. package/core/.formation/unit/heimdall.yaml +96 -0
  675. package/core/.formation/unit/plan.yaml +67 -0
  676. package/core/.formation/unit/think.yaml +58 -0
  677. package/core/.kenaz/MUNINN_SNAPSHOT9_EPISODE.json +32 -0
  678. package/core/.kenaz/MUNINN_SNAPSHOT9_RUNE.json +23 -0
  679. package/core/.kenaz/MUNINN_SNAPSHOT9_SUMMARY.md +89 -0
  680. package/core/.kenaz/ash_TASK_1428-20260507.json +14 -0
  681. package/core/.kenaz/cache/native-models/claude.json +42 -0
  682. package/core/.kenaz/claude-hooks-manifest.json +119 -0
  683. package/core/.kenaz/cortex.yaml +100 -0
  684. package/core/.kenaz/curator_state.json +7 -0
  685. package/core/.kenaz/dashboard-quick-prompts.json +9 -0
  686. package/core/.kenaz/designs/METAPLASTICITY_CONFIDENCE_DESIGN.md +537 -0
  687. package/core/.kenaz/designs/REFLEX_INITIATOR_DESIGN.md +501 -0
  688. package/core/.kenaz/designs/TASK_1385_handoff_mcp_design.md +426 -0
  689. package/core/.kenaz/designs/TASK_932_hippocampus_consolidation.md +103 -0
  690. package/core/.kenaz/designs/TASK_934_efe_signal_engine.md +97 -0
  691. package/core/.kenaz/designs/TASK_935_self_evolution_framework.md +154 -0
  692. package/core/.kenaz/designs/VISION_cognitive_architecture_roadmap.md +159 -0
  693. package/core/.kenaz/designs/metaplasticity_simulation_results.json +696 -0
  694. package/core/.kenaz/docs/INDEX.md +214 -0
  695. package/core/.kenaz/docs/README.md +290 -0
  696. package/core/.kenaz/docs/registry.json +962 -0
  697. package/core/.kenaz/docs/schema.json +144 -0
  698. package/core/.kenaz/docs/tools/GIT_HOOK_GUIDE.md +203 -0
  699. package/core/.kenaz/docs/tools/RAG_INTEGRATION_GUIDE.md +306 -0
  700. package/core/.kenaz/docs/tools/README.md +99 -0
  701. package/core/.kenaz/docs/tools/TIME_ESTIMATION_GUIDE.md +299 -0
  702. package/core/.kenaz/docs/tools/package-lock.json +618 -0
  703. package/core/.kenaz/docs/tools/package.json +34 -0
  704. package/core/.kenaz/docs/tools/src/cli.ts +365 -0
  705. package/core/.kenaz/docs/tools/src/field-extractor.ts +152 -0
  706. package/core/.kenaz/docs/tools/src/index.ts +14 -0
  707. package/core/.kenaz/docs/tools/src/registry.ts +664 -0
  708. package/core/.kenaz/docs/tools/src/search.ts +195 -0
  709. package/core/.kenaz/docs/tools/src/types.ts +88 -0
  710. package/core/.kenaz/docs/tools/test-git-hook.sh +79 -0
  711. package/core/.kenaz/docs/tools/tsconfig.json +20 -0
  712. package/core/.kenaz/docs/tools/verify.sh +106 -0
  713. package/core/.kenaz/episodes/SESSION_ansuz-prompt-1785087304784.yaml +68 -0
  714. package/core/.kenaz/huginn-exploration.json +8 -0
  715. package/core/.kenaz/knowledge/ladybug_2c51da1e_shadow_file_frame_group.patch +163 -0
  716. package/core/.kenaz/knowledge/ladybug_30cf85690e_shadow_page_read_during_checkpoint.patch +393 -0
  717. package/core/.kenaz/knowledge/ladybug_7a17858d3a_node_group_delete_lock.patch +102 -0
  718. package/core/.kenaz/knowledge/ladybug_926a0ba1_column_checkpoint.patch +412 -0
  719. package/core/.kenaz/knowledge/ladybug_a346c4c4b6_pk_index_header_pages.patch +144 -0
  720. package/core/.kenaz/knowledge/ladybug_ba5f38815b_csr_node_group.patch +86 -0
  721. package/core/.kenaz/main-memory/README.md +230 -0
  722. package/core/.kenaz/main-memory/kenaz/cortex/001_cortex_overview.md +168 -0
  723. package/core/.kenaz/main-memory/kenaz/cortex/001_rag_engine_overview.md +30 -0
  724. package/core/.kenaz/main-memory/kenaz/memory-system/001_three_tier_architecture.md +361 -0
  725. package/core/.kenaz/main-memory/kenaz/pipeline/001_task_execution_flow.md +117 -0
  726. package/core/.kenaz/main-memory/kenaz/pipeline/001_task_granularity.md +154 -0
  727. package/core/.kenaz/main-memory/kenaz/pipeline/002_team_priority.md +51 -0
  728. package/core/.kenaz/main-memory/kenaz/pipeline/003_feature_id_system.md +46 -0
  729. package/core/.kenaz/main-memory/kenaz/rules/001_gen_007_self_containment.md +108 -0
  730. package/core/.kenaz/main-memory/kenaz/rules/001_rule_priority_system.md +121 -0
  731. package/core/.kenaz/main-memory/kenaz/rules/002_agt_006_pre_check.md +0 -0
  732. package/core/.kenaz/main-memory/kenaz/rules/003_ppl_002_task_archival.md +48 -0
  733. package/core/.kenaz/main-memory/kenaz/system/001_dual_track_task_system.md +197 -0
  734. package/core/.kenaz/main-memory/knowledge/patterns/001_json_bom_issue.md +78 -0
  735. package/core/.kenaz/main-memory/knowledge/patterns/001_leader_worker_pattern.md +0 -0
  736. package/core/.kenaz/main-memory/knowledge/patterns/002_scope_path_conflict.md +115 -0
  737. package/core/.kenaz/main-memory/knowledge/patterns/002_task_dependency_resolution.md +223 -0
  738. package/core/.kenaz/main-memory/knowledge/patterns/003_question_protocol.md +242 -0
  739. package/core/.kenaz/main-memory/knowledge/patterns/004_user_insight_value.md +111 -0
  740. package/core/.kenaz/main-memory/knowledge/patterns/005_file_lock_pattern.md +274 -0
  741. package/core/.kenaz/main-memory/knowledge/references/001_ppl_rules.md +28 -0
  742. package/core/.kenaz/main-memory/knowledge/solutions/001_json_bom_issue.md +137 -0
  743. package/core/.kenaz/main-memory/knowledge/solutions/001_team_invocation.md +0 -0
  744. package/core/.kenaz/main-memory/knowledge/solutions/002_passive_monitoring.md +0 -0
  745. package/core/.kenaz/main-memory/knowledge/solutions/003_windows_file_race_condition.md +239 -0
  746. package/core/.kenaz/main-memory/registry.json +326 -0
  747. package/core/.kenaz/main-memory/version.yaml +58 -0
  748. package/core/.kenaz/muninn_episode_write.ps1 +17 -0
  749. package/core/.kenaz/muninn_snapshot11_rune_candidates.md +63 -0
  750. package/core/.kenaz/muninn_snapshot1_rune_candidates.md +49 -0
  751. package/core/.kenaz/orphan_audit_2026-05.md +181 -0
  752. package/core/.kenaz/ownership.yaml +155 -0
  753. package/core/.kenaz/peer.yaml +72 -0
  754. package/core/.kenaz/project.yaml +62 -0
  755. package/core/.kenaz/rune_ansuz_literature_validation_strategy.md +40 -0
  756. package/core/.kenaz/rune_efe_active_inference_validation.md +36 -0
  757. package/core/.kenaz/rune_yggdrasil_filesystem_scoped_project.md +41 -0
  758. package/core/.kenaz/rune_yggdrasil_project_identity_folder_name.md +41 -0
  759. package/core/.kenaz/rune_yggdrasil_relay_protocol_project_mismatch.md +39 -0
  760. package/core/.kenaz/runes_TASK_1428.json +57 -0
  761. package/core/.kenaz/specialist/ansuz_motivational_state.schema.json +138 -0
  762. package/core/.kenaz/specialist/ansuz_rules.yaml +241 -0
  763. package/core/.kenaz/specialist/ansuz_session_handoff.schema.json +128 -0
  764. package/core/.kenaz/specialist/chart_TASK_1657.json +50 -0
  765. package/core/.kenaz/specialist/cognitive-hub-e2e.test.js +494 -0
  766. package/core/.kenaz/specialist/daemon-manifest.yaml +168 -0
  767. package/core/.kenaz/specialist/empty_ac_audit_report.md +63 -0
  768. package/core/.kenaz/specialist/episode_muninn_completion_1785056865691.json +91 -0
  769. package/core/.kenaz/specialist/field_report_watermark.json +1 -0
  770. package/core/.kenaz/specialist/gc1826_driver.js +118 -0
  771. package/core/.kenaz/specialist/heimdall_proposal_1017c07f.json +13 -0
  772. package/core/.kenaz/specialist/heimdall_proposal_3dfaa8b9.json +12 -0
  773. package/core/.kenaz/specialist/heimdall_proposal_57af18f9.json +15 -0
  774. package/core/.kenaz/specialist/heimdall_proposal_57b1aa1b.json +14 -0
  775. package/core/.kenaz/specialist/heimdall_proposal_5a3c9473.json +13 -0
  776. package/core/.kenaz/specialist/identity_verdicts/TASK_1073.json +75 -0
  777. package/core/.kenaz/specialist/identity_verdicts/TASK_TEST.json +77 -0
  778. package/core/.kenaz/specialist/memory_guard_fired.json +1 -0
  779. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +1 -0
  780. package/core/.kenaz/specialist/memory_source_priority.yaml +260 -0
  781. package/core/.kenaz/specialist/motivational_state.schema.json +62 -0
  782. package/core/.kenaz/specialist/prompt_1775.txt +317 -0
  783. package/core/.kenaz/specialist/prompt_1776.txt +326 -0
  784. package/core/.kenaz/specialist/prompt_1791.txt +320 -0
  785. package/core/.kenaz/specialist/prompt_1792.txt +320 -0
  786. package/core/.kenaz/specialist/prompt_1795.txt +281 -0
  787. package/core/.kenaz/specialist/prompt_1813.txt +332 -0
  788. package/core/.kenaz/specialist/prompt_1814.txt +401 -0
  789. package/core/.kenaz/specialist/prompt_1815.txt +394 -0
  790. package/core/.kenaz/specialist/prompt_1816.txt +437 -0
  791. package/core/.kenaz/specialist/prompt_1818.txt +361 -0
  792. package/core/.kenaz/specialist/prompt_1819.txt +421 -0
  793. package/core/.kenaz/specialist/prompt_1821.txt +345 -0
  794. package/core/.kenaz/specialist/prompt_1822.txt +313 -0
  795. package/core/.kenaz/specialist/prompt_1824.txt +348 -0
  796. package/core/.kenaz/specialist/prompt_1826.txt +388 -0
  797. package/core/.kenaz/specialist/retired_organs/README.md +58 -0
  798. package/core/.kenaz/specialist/rune_calibration_poc.md +175 -0
  799. package/core/.kenaz/specialist/rune_efe_salience_gap.md +21 -0
  800. package/core/.kenaz/specialist/rune_ember_autonomous_dispatch_gate.md +24 -0
  801. package/core/.kenaz/specialist/rune_post_dispatch_verification_pattern.md +31 -0
  802. package/core/.kenaz/specialist/rune_surprise_proxy_improvement.md +28 -0
  803. package/core/.kenaz/specialist/rune_worktree_dispatch_pattern.md +31 -0
  804. package/core/.kenaz/specialist/rune_yaml_filter_desync_fix.md +26 -0
  805. package/core/.kenaz/specialist/rune_yggdrasil_project_identity_folder_name.md +24 -0
  806. package/core/.kenaz/specialist/sessions/chart_TASK_1599.json +41 -0
  807. package/core/.kenaz/specialist/sessions/hmap_028aa781-aad2-48c0-9a61-5540565d4a7f.json +5 -0
  808. package/core/.kenaz/specialist/sessions/hmap_20210387-0c64-400c-9d0a-53042a0cbd89.json +5 -0
  809. package/core/.kenaz/specialist/sessions/hmap_c1375c5d-fd9f-44bd-a83e-353ecbb0392f.json +5 -0
  810. package/core/.kenaz/specialist/sessions/scratch_028aa781-aad2-48c0-9a61-5540565d4a7f.json +6 -0
  811. package/core/.kenaz/specialist/sessions/scratch_0acc0fb3-24f9-453f-9e92-6ef1cdf03a7c.json +6 -0
  812. package/core/.kenaz/specialist/sessions/scratch_20210387-0c64-400c-9d0a-53042a0cbd89.json +6 -0
  813. package/core/.kenaz/specialist/sessions/scratch_2f10623e-b7a1-4647-905e-9dc7c4d99f9c.json +6 -0
  814. package/core/.kenaz/specialist/sessions/scratch_5a38b62d-608a-488c-82f0-7e47e95e0905.json +6 -0
  815. package/core/.kenaz/specialist/sessions/scratch_5d9758ef-d9b6-4ffe-a017-3ed26d0a313b.json +6 -0
  816. package/core/.kenaz/specialist/sessions/scratch_c1375c5d-fd9f-44bd-a83e-353ecbb0392f.json +6 -0
  817. package/core/.kenaz/specialist/sessions/scratch_c9f3c711-b73d-4fcd-ad2a-7b2bc024ee77.json +6 -0
  818. package/core/.kenaz/specialist/sessions/scratch_e72e5274-1c81-4655-a05a-f87d1ecb2917.json +6 -0
  819. package/core/.kenaz/specialist/sessions/scratch_f740cdbe-f756-41fc-98fb-2b1413d51901.json +6 -0
  820. package/core/.kenaz/specialist/t1777_probe.txt +1 -0
  821. package/core/.kenaz/specialist/task1825_update.json +43 -0
  822. package/core/.kenaz/specialist/task1827_update.json +43 -0
  823. package/core/.kenaz/specialist/task1828_update.json +43 -0
  824. package/core/.kenaz/specialist/taskgen/consolidation_i.json +38 -0
  825. package/core/.kenaz/specialist/taskgen/csharp_a.json +44 -0
  826. package/core/.kenaz/specialist/taskgen/csharp_b.json +40 -0
  827. package/core/.kenaz/specialist/taskgen/embedding_e.json +34 -0
  828. package/core/.kenaz/specialist/taskgen/hygiene_fg.json +39 -0
  829. package/core/.kenaz/specialist/taskgen/pathology_h.json +36 -0
  830. package/core/.kenaz/specialist/taskgen/unity_noise_d.json +38 -0
  831. package/core/.kenaz/specialist/taskgen/visibility_c.json +38 -0
  832. package/core/.kenaz/specialist/verify_1837.js +302 -0
  833. package/core/.kenaz/specialist/verify_1838.js +124 -0
  834. package/core/.kenaz/tmp/heimdall_proposal_fc7e0944.json +10 -0
  835. package/core/.kenaz/tmp_heimdall_proposal_8d3e392.json +13 -0
  836. package/core/.kenaz/tmp_props.json +1 -0
  837. package/core/.kenaz/tmp_sounddrop_t1_prompt.txt +371 -0
  838. package/core/.kenaz/user_model.schema.json +107 -0
  839. package/core/.matrix/README.md +257 -0
  840. package/core/.matrix/index.matrix +5 -0
  841. package/core/.mcp.json +8 -0
  842. package/core/.prefrontal/.gitkeep +0 -0
  843. package/core/.prefrontal/proposals/.gitkeep +0 -0
  844. package/core/.rule/INDEX.yaml +99 -0
  845. package/core/.rule/MECHANIZED.md +61 -0
  846. package/core/.rule/code/README.md +211 -0
  847. package/core/.rule/code/backend.yaml +294 -0
  848. package/core/.rule/code/checklist.yaml +258 -0
  849. package/core/.rule/code/maintainability.yaml +227 -0
  850. package/core/.rule/code/naming.yaml +106 -0
  851. package/core/.rule/code/principles.yaml +71 -0
  852. package/core/.rule/code/reusability.yaml +192 -0
  853. package/core/.rule/code/structure.yaml +218 -0
  854. package/core/.rule/code/style.yaml +197 -0
  855. package/core/.rule/design/ui.yaml +79 -0
  856. package/core/.rule/general/agent-workflow.yaml +572 -0
  857. package/core/.rule/general/cortex-memory-recall.yaml +446 -0
  858. package/core/.rule/general/cortex-tools.yaml +181 -0
  859. package/core/.rule/general/cross-platform.yaml +107 -0
  860. package/core/.rule/general/ddx-synapse-stack.yaml +162 -0
  861. package/core/.rule/general/file-size-threshold.yaml +45 -0
  862. package/core/.rule/general/identity-contract.schema.yaml +251 -0
  863. package/core/.rule/general/memory-language.yaml +67 -0
  864. package/core/.rule/general/memory-source-priority.yaml +207 -0
  865. package/core/.rule/general/pipeline.yaml +246 -0
  866. package/core/.rule/general/principles.yaml +77 -0
  867. package/core/.rule/general/project-self-containment.yaml +253 -0
  868. package/core/.rule/general/rust-verify-target.yaml +80 -0
  869. package/core/.rule/general/specialist-identity-contract.yaml +153 -0
  870. package/core/.rule/general/sunny-access-control.yaml +60 -0
  871. package/core/.rule/general/synapse-code-intelligence.yaml +375 -0
  872. package/core/.rule/general/synapse-cognitive-fusion.yaml +301 -0
  873. package/core/.rule/general/system-invariants.yaml +248 -0
  874. package/core/.rule/general/task-pool-routing.yaml +102 -0
  875. package/core/.rule/general/worktree-isolation.yaml +79 -0
  876. package/core/.rule/pipeline/PPL-002-completed-task-archival.yaml +528 -0
  877. package/core/.rule/pipeline/auto-update.yaml +282 -0
  878. package/core/.rule/pipeline/task-execution.yaml +368 -0
  879. package/core/.rule/tools/check-permissions.js +197 -0
  880. package/core/.specialist/Amelia/README.md +329 -0
  881. package/core/.specialist/Amelia/capability.yaml +386 -0
  882. package/core/.specialist/Amelia/knowledge.yaml +217 -0
  883. package/core/.specialist/Amelia/principles.yaml +10 -0
  884. package/core/.specialist/Amelia/rule.yaml +79 -0
  885. package/core/.specialist/Amelia/workflow.yaml +241 -0
  886. package/core/.specialist/Ansuz/HEURISTIC_BOOT_ROUTING.md +39 -0
  887. package/core/.specialist/Ansuz/ROUTING.md +35 -0
  888. package/core/.specialist/Ansuz/RULES.md +79 -0
  889. package/core/.specialist/Ansuz/SYSTEM_DOC.md +611 -0
  890. package/core/.specialist/Ansuz/VERIFY.md +38 -0
  891. package/core/.specialist/Ansuz/capability.yaml +338 -0
  892. package/core/.specialist/Ansuz/cognitive_principles.yaml +62 -0
  893. package/core/.specialist/Ansuz/concepts/agent_types.yaml +22 -0
  894. package/core/.specialist/Ansuz/concepts/autonomous_agenda.yaml +170 -0
  895. package/core/.specialist/Ansuz/concepts/autonomy_contract.yaml +126 -0
  896. package/core/.specialist/Ansuz/concepts/boot_ritual.yaml +107 -0
  897. package/core/.specialist/Ansuz/concepts/boot_rules_summary.yaml +16 -0
  898. package/core/.specialist/Ansuz/concepts/capability_pointers.yaml +21 -0
  899. package/core/.specialist/Ansuz/concepts/cognitive_fluency_contract.yaml +264 -0
  900. package/core/.specialist/Ansuz/concepts/cognitive_systems_competence_map.yaml +14 -0
  901. package/core/.specialist/Ansuz/concepts/cognitive_systems_hippocampus.yaml +14 -0
  902. package/core/.specialist/Ansuz/concepts/cognitive_systems_overview.yaml +27 -0
  903. package/core/.specialist/Ansuz/concepts/cognitive_systems_serendipity.yaml +14 -0
  904. package/core/.specialist/Ansuz/concepts/cognitive_systems_turn_context.yaml +13 -0
  905. package/core/.specialist/Ansuz/concepts/commitment_layer.yaml +150 -0
  906. package/core/.specialist/Ansuz/concepts/completion_tracking.yaml +29 -0
  907. package/core/.specialist/Ansuz/concepts/deep_knowledge_pointers.yaml +28 -0
  908. package/core/.specialist/Ansuz/concepts/evolvable_guardrails.yaml +20 -0
  909. package/core/.specialist/Ansuz/concepts/fatigue_handoff.yaml +84 -0
  910. package/core/.specialist/Ansuz/concepts/formation_quick_ref.yaml +28 -0
  911. package/core/.specialist/Ansuz/concepts/guardrails_immutable.yaml +31 -0
  912. package/core/.specialist/Ansuz/concepts/identity.yaml +48 -0
  913. package/core/.specialist/Ansuz/concepts/interaction_protocol.yaml +42 -0
  914. package/core/.specialist/Ansuz/concepts/meta_evolvable_tier.yaml +28 -0
  915. package/core/.specialist/Ansuz/concepts/mindset.yaml +18 -0
  916. package/core/.specialist/Ansuz/concepts/phase9_verification.yaml +21 -0
  917. package/core/.specialist/Ansuz/concepts/phase_protocol.yaml +66 -0
  918. package/core/.specialist/Ansuz/concepts/principles.yaml +65 -0
  919. package/core/.specialist/Ansuz/concepts/self_evolution_overview.yaml +53 -0
  920. package/core/.specialist/Ansuz/concepts/task_first_protocol.yaml +7 -0
  921. package/core/.specialist/Ansuz/concepts/task_pool.yaml +119 -0
  922. package/core/.specialist/Ansuz/concepts/task_system.yaml +22 -0
  923. package/core/.specialist/Ansuz/concepts/write_verification.yaml +26 -0
  924. package/core/.specialist/Ansuz/core.yaml +224 -0
  925. package/core/.specialist/Ansuz/decisions/ADR-requirement-graph-layer.md +390 -0
  926. package/core/.specialist/Ansuz/elixir.yaml +70 -0
  927. package/core/.specialist/Ansuz/exo_cortex_tools.yaml +13 -0
  928. package/core/.specialist/Ansuz/experiments/boot_ablation_replay.js +197 -0
  929. package/core/.specialist/Ansuz/guards/blind_spot_guards.yaml +28 -0
  930. package/core/.specialist/Ansuz/guards/lesson_guards.yaml +203 -0
  931. package/core/.specialist/Ansuz/identity_contract.yaml +375 -0
  932. package/core/.specialist/Ansuz/knowledge.yaml +284 -0
  933. package/core/.specialist/Ansuz/modules/amelia_review.yaml +112 -0
  934. package/core/.specialist/Ansuz/modules/ddx.yaml +47 -0
  935. package/core/.specialist/Ansuz/modules/design_checks.yaml +47 -0
  936. package/core/.specialist/Ansuz/modules/identity_verification.yaml +119 -0
  937. package/core/.specialist/Ansuz/modules/loop_guard.yaml +36 -0
  938. package/core/.specialist/Ansuz/modules/prevention.yaml +84 -0
  939. package/core/.specialist/Ansuz/modules/prophecy.yaml +95 -0
  940. package/core/.specialist/Ansuz/modules/pulse_empty.yaml +36 -0
  941. package/core/.specialist/Ansuz/modules/qa_intake.yaml +29 -0
  942. package/core/.specialist/Ansuz/modules/recall.yaml +45 -0
  943. package/core/.specialist/Ansuz/principles.yaml +31 -0
  944. package/core/.specialist/Ansuz/research/EMBER_architecture_comparison.md +142 -0
  945. package/core/.specialist/Ansuz/rule.yaml +97 -0
  946. package/core/.specialist/Ansuz/self_model_seed.backup.json +100 -0
  947. package/core/.specialist/Ansuz/self_model_seed.json +100 -0
  948. package/core/.specialist/Ansuz/self_model_seed.sha256 +1 -0
  949. package/core/.specialist/Ansuz/tools/ansuz-handoff-snapshot.js +626 -0
  950. package/core/.specialist/Ansuz/tools/ansuz-handoff.js +437 -0
  951. package/core/.specialist/Ansuz/tools/ansuz-sdk-runner.js +1254 -0
  952. package/core/.specialist/Ansuz/tools/ansuz-sdk-runner.test.js +137 -0
  953. package/core/.specialist/Ansuz/tools/ansuz-state.js +288 -0
  954. package/core/.specialist/Ansuz/tools/bootstrap-anchors.js +289 -0
  955. package/core/.specialist/Ansuz/tools/handoff-freshness-milestone.test.js +73 -0
  956. package/core/.specialist/Ansuz/tools/handoff-resolver.js +207 -0
  957. package/core/.specialist/Ansuz/tools/handoff-session-identity.test.js +333 -0
  958. package/core/.specialist/Ansuz/tools/handoff-snapshot-args.test.js +25 -0
  959. package/core/.specialist/Ansuz/tools/install-claude-hooks.js +354 -0
  960. package/core/.specialist/Ansuz/tools/install-claude-hooks.test.js +110 -0
  961. package/core/.specialist/Ansuz/tools/package.json +16 -0
  962. package/core/.specialist/Ansuz/tools/preservation-coordinator.js +504 -0
  963. package/core/.specialist/Ansuz/tools/verify-and-land.js +1012 -0
  964. package/core/.specialist/Ansuz/tools/verify-and-land.test.js +1099 -0
  965. package/core/.specialist/Ansuz/workflow.yaml +1273 -0
  966. package/core/.specialist/Forseti/capability.yaml +210 -0
  967. package/core/.specialist/Forseti/core.yaml +176 -0
  968. package/core/.specialist/Forseti/principles.yaml +88 -0
  969. package/core/.specialist/Forseti/rule.yaml +86 -0
  970. package/core/.specialist/Heimdall/SKILL.md +65 -0
  971. package/core/.specialist/Heimdall/capability.yaml +134 -0
  972. package/core/.specialist/Heimdall/core.yaml +275 -0
  973. package/core/.specialist/Heimdall/principles.yaml +66 -0
  974. package/core/.specialist/Heimdall/rule.yaml +68 -0
  975. package/core/.specialist/Huginn/capability.yaml +234 -0
  976. package/core/.specialist/Huginn/core.yaml +482 -0
  977. package/core/.specialist/Huginn/principles.yaml +57 -0
  978. package/core/.specialist/Huginn/rule.yaml +121 -0
  979. package/core/.specialist/REFLECTION_TO_CONTROL.md +347 -0
  980. package/core/.specialist/ansuz_session_handoff.json +96 -0
  981. package/core/.specialist/experiments/rg_benchmark.js +523 -0
  982. package/core/.specialist/experiments/rg_benchmark_results.json +27 -0
  983. package/core/.specialist/shared/cognitive-primer.md +15 -0
  984. package/core/.specialist/shared/guard_schema.json +290 -0
  985. package/core/.specialist/shared/principles.yaml +213 -0
  986. package/core/.specialist/tests/runtime-discovery/README.md +224 -0
  987. package/core/.specialist/tests/runtime-discovery/active-project-polling.test.js +495 -0
  988. package/core/.specialist/tests/runtime-discovery/port-binding.test.js +418 -0
  989. package/core/.specialist/tests/runtime-discovery/resolver-priority.test.js +693 -0
  990. package/core/.specialist/tests/runtime-discovery/resolver-skip-on-invalid.test.js +467 -0
  991. package/core/.specialist/tests/runtime-discovery/resolver-symmetry.test.js +679 -0
  992. package/core/.specialist/tests/runtime-discovery/tail-cli-project-path.test.js +231 -0
  993. package/core/.specialist/tools/MEMORY_RECALL_TRIGGERS.md +156 -0
  994. package/core/.specialist/tools/README.md +129 -0
  995. package/core/.specialist/tools/__tests__/freya-cli-contract.test.js +156 -0
  996. package/core/.specialist/tools/__tests__/task-1863-boot-lease-reuse.test.js +99 -0
  997. package/core/.specialist/tools/__tests__/task-1917-orphan-detection.test.js +175 -0
  998. package/core/.specialist/tools/__tests__/task-1977-banner-cap.test.js +129 -0
  999. package/core/.specialist/tools/__tests__/task-1983-lease-project-path.test.js +96 -0
  1000. package/core/.specialist/tools/__tests__/task-2218-boot-session-id.test.js +118 -0
  1001. package/core/.specialist/tools/__tests__/task-2222-session-identity-interleave.test.js +203 -0
  1002. package/core/.specialist/tools/__tests__/task-2246-reap-honesty.test.js +96 -0
  1003. package/core/.specialist/tools/__tests__/task-2254-handoff-archive-contract.test.js +60 -0
  1004. package/core/.specialist/tools/__tests__/task-2272-open-card-status-quote.test.js +26 -0
  1005. package/core/.specialist/tools/__tests__/task-2374-usage-counter.test.js +34 -0
  1006. package/core/.specialist/tools/ansuz-boot-fast.js +1120 -0
  1007. package/core/.specialist/tools/ansuz-boot-fast.test.js +705 -0
  1008. package/core/.specialist/tools/canary.js +501 -0
  1009. package/core/.specialist/tools/context-injection.js +395 -0
  1010. package/core/.specialist/tools/design-reasoning.js +493 -0
  1011. package/core/.specialist/tools/discovery-fixtures.js +308 -0
  1012. package/core/.specialist/tools/discovery-runner.js +460 -0
  1013. package/core/.specialist/tools/failure-detector.js +1132 -0
  1014. package/core/.specialist/tools/identity-scorer.js +714 -0
  1015. package/core/.specialist/tools/jev-optional-context.js +107 -0
  1016. package/core/.specialist/tools/jev-optional-context.test.js +152 -0
  1017. package/core/.specialist/tools/lesson-guard.js +1084 -0
  1018. package/core/.specialist/tools/lib/chart-path.js +159 -0
  1019. package/core/.specialist/tools/lib/chart-path.test.js +171 -0
  1020. package/core/.specialist/tools/lib/project-resolver.js +200 -0
  1021. package/core/.specialist/tools/lib/project-resolver.test.js +241 -0
  1022. package/core/.specialist/tools/memory-action-log.js +839 -0
  1023. package/core/.specialist/tools/phase-gate.js +3754 -0
  1024. package/core/.specialist/tools/phase-gate.test.js +85 -0
  1025. package/core/.specialist/tools/phase9-policy.test.js +109 -0
  1026. package/core/.specialist/tools/precompute-runner.js +444 -0
  1027. package/core/.specialist/tools/prompt-files.test.js +169 -0
  1028. package/core/.specialist/tools/replay-detectors.js +290 -0
  1029. package/core/.specialist/tools/rule-engine.js +621 -0
  1030. package/core/.specialist/tools/session-boot-ownership.test.js +117 -0
  1031. package/core/.specialist/tools/session-project-state.test.js +65 -0
  1032. package/core/.specialist/tools/session.js +1866 -0
  1033. package/core/.specialist/tools/stream-lease.js +263 -0
  1034. package/core/.specialist/tools/task-bridge-jev.test.js +170 -0
  1035. package/core/.specialist/tools/task-bridge.js +765 -0
  1036. package/core/.specialist/tools/verify-identity.js +453 -0
  1037. package/core/.specialist/tools/wish-mandate-delivery.test.js +76 -0
  1038. package/core/.system/README.md +555 -0
  1039. package/core/.system/agent-skills/README.md +724 -0
  1040. package/core/.system/archive/README.md +499 -0
  1041. package/core/.system/assessment/README.md +645 -0
  1042. package/core/.system/cli-tools/README.md +724 -0
  1043. package/core/.system/collaboration/KNOWLEDGE.md +65 -0
  1044. package/core/.system/collaboration/README.md +570 -0
  1045. package/core/.system/cortex/MODULES.md +1046 -0
  1046. package/core/.system/dashboard/FRONTEND.md +812 -0
  1047. package/core/.system/dashboard/README.md +737 -0
  1048. package/core/.system/external-skills/README.md +522 -0
  1049. package/core/.system/failure/README.md +723 -0
  1050. package/core/.system/formation/LEGACY_SKILLS.md +972 -0
  1051. package/core/.system/formation/POST_COMPLETE.md +600 -0
  1052. package/core/.system/formation/README.md +1092 -0
  1053. package/core/.system/formation/TOOLS_REFERENCE.md +1145 -0
  1054. package/core/.system/githooks/README.md +846 -0
  1055. package/core/.system/kenaz/README.md +787 -0
  1056. package/core/.system/memory/README.md +716 -0
  1057. package/core/.system/pipeline/README.md +712 -0
  1058. package/core/.system/rule/README.md +794 -0
  1059. package/core/.system/specialist/README.md +669 -0
  1060. package/core/.system/specialist/STRUCTURE.md +262 -0
  1061. package/core/.system/sunny/README.md +476 -0
  1062. package/core/.system/sunny/RULES.json +89 -0
  1063. package/core/.system/sunny/knowledge/INDEX.md +37 -0
  1064. package/core/.system/sunny/knowledge/agent-teams-api.md +0 -0
  1065. package/core/.system/sunny/knowledge/ansuz-specialist.md +500 -0
  1066. package/core/.system/sunny/knowledge/claude-cli-spawn.md +177 -0
  1067. package/core/.system/sunny/knowledge/collaboration-api.md +925 -0
  1068. package/core/.system/sunny/teammates/README.md +107 -0
  1069. package/core/.system/sunny/teammates/how_to_use.yaml +101 -0
  1070. package/core/.system/sunny/teammates/tools/headless/launcher.js +318 -0
  1071. package/core/.system/sunny/teammates/tools/powershell/launcher.js +241 -0
  1072. package/core/.system/sunny/teammates/tools/powershell/start.bat +50 -0
  1073. package/core/.system/sunny/teammates/tools/utils/env.js +96 -0
  1074. package/core/.system/sunny/teammates/tools/utils/format-output.js +329 -0
  1075. package/core/.system/sunny/tools.json +101 -0
  1076. package/core/.vendor/js-yaml.cjs +2795 -0
  1077. package/core/.vendor/require-yaml.cjs +8 -0
  1078. package/core/CLAUDE.md +172 -0
  1079. package/core/KENAZ_CORE_VERSION +1 -0
  1080. package/core/dev/ALAYA_FIELD_FEEDBACK_DESIGN.md +126 -0
  1081. package/core/dev/ANSUZ_SCAFFOLD_DIET_2026-09-20.md +231 -0
  1082. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +355 -0
  1083. package/core/dev/ANSUZ_WORKFLOW_MODERNIZATION.md +143 -0
  1084. package/core/dev/CORTEX_META_GRAPH_ASSESSMENT.md +99 -0
  1085. package/core/dev/FREYA_DOWNSTREAM_BUGS_2026-09-19.md +44 -0
  1086. package/core/dev/GLOBAL_MEMORY_IDENTITY_CONSOLIDATION.md +263 -0
  1087. package/core/dev/GUARD_EFFECTIVENESS_DESIGN.md +180 -0
  1088. package/core/dev/HEALTH_GATE_VARIANCE_ASSESSMENT.md +271 -0
  1089. package/core/dev/HOOK_DIET_2026-09-21.md +126 -0
  1090. package/core/dev/JEV_INTEGRATION_PLAN.md +189 -0
  1091. package/core/dev/KENAZ_AGENT_CONNECT_v1_SPEC.md +139 -0
  1092. package/core/dev/MOBILE_DESIGN_SPEC.md +569 -0
  1093. package/core/dev/MULTI_ANSUZ_SPEC.md +136 -0
  1094. package/core/dev/MUNINN_RETIREMENT.md +115 -0
  1095. package/core/dev/PHASE3_ATTRIBUTION_POPULATION_DIAGNOSIS.md +211 -0
  1096. package/core/dev/PHASE3_P3-2B_TASKLEVEL_PROBE.md +83 -0
  1097. package/core/dev/PHASE3_P3-2_POPULATION_DISJOINTNESS.md +83 -0
  1098. package/core/dev/PHASE3_P3-2_REMEASURE_REPORT.md +231 -0
  1099. package/core/dev/PREDICTION_GROUNDING_DESIGN.md +376 -0
  1100. package/core/dev/PRODUCT_SPEC.md +317 -0
  1101. package/core/dev/PRODUCT_SPEC_FOR_AI_tepmlate.md +716 -0
  1102. package/core/dev/PROJECT_REGISTRY_DUPLICATE_ASSESSMENT.md +86 -0
  1103. package/core/dev/STARTUP_TIMELINE_TASK_1995.md +181 -0
  1104. package/core/dev/SYNAPSE_WORKER_PER_PROJECT.md +881 -0
  1105. package/core/dev/TASK_1680_P3-3_DISPATCH_SPEC.md +96 -0
  1106. package/core/dev/TASK_1684_CALIBRATION_IMPACT_ANALYSIS.md +170 -0
  1107. package/core/dev/TASK_1684_FORK_A_GOODHART_DESIGN.md +171 -0
  1108. package/core/dev/TASK_1684_P3_2_REMEASURE_VALIDATION.md +262 -0
  1109. package/core/dev/TASK_1903_SIGNAL_AUC_MEASUREMENT.md +207 -0
  1110. package/core/dev/TASK_1904_BRANCH_INTEGRITY_AUDIT.md +146 -0
  1111. package/core/dev/ansuz-eval/README.md +38 -0
  1112. package/core/dev/ansuz-eval/build-fixtures.js +87 -0
  1113. package/core/dev/ansuz-eval/grade.js +96 -0
  1114. package/core/dev/ansuz-eval/grader.test.js +117 -0
  1115. package/core/dev/ansuz-eval/tasks.md +32 -0
  1116. package/core/dev/archive/ansuz/BOOT_FULL.md +141 -0
  1117. package/core/dev/archive/ansuz/agents/ansuz-boot.md +176 -0
  1118. package/core/dev/archive/ansuz/designs/alaya-passive-surfacing.md +84 -0
  1119. package/core/dev/archive/ansuz/designs/cc_memory_indexing.md +307 -0
  1120. package/core/dev/archive/ansuz/designs/check_guard.md +322 -0
  1121. package/core/dev/archive/ansuz/designs/consequence_loop.md +227 -0
  1122. package/core/dev/archive/ansuz/designs/mcp_kuzudb_lock_architecture.md +312 -0
  1123. package/core/dev/archive/ansuz/designs/phase0_git_enrichment.md +278 -0
  1124. package/core/dev/archive/ansuz/designs/refactor_mcp_tools_synapse.md +490 -0
  1125. package/core/dev/archive/ansuz/designs/semantic_markdown_extraction.md +167 -0
  1126. package/core/dev/archive/ansuz/designs/task_1372_prompt_injects_into.md +193 -0
  1127. package/core/dev/archive/ansuz/designs/thought_stack.md +286 -0
  1128. package/core/dev/archive/ansuz/investigations/reachability_unified_api_2026-04-11.md +330 -0
  1129. package/core/dev/archive/ansuz/investigations/synapse_orphans_indexing_bug_2026-04-11.md +352 -0
  1130. package/core/dev/archive/ansuz/investigations/synapse_orphans_reindex_verification_2026-04-11.md +48 -0
  1131. package/core/dev/archive/ansuz/investigations/synapse_orphans_verification_2026-04-11.md +170 -0
  1132. package/core/dev/archive/ansuz/legacy/kernel.yaml +399 -0
  1133. package/core/dev/archive/ansuz/legacy/phases/phase_0.yaml +418 -0
  1134. package/core/dev/archive/ansuz/legacy/phases/phase_1.yaml +376 -0
  1135. package/core/dev/archive/ansuz/legacy/phases/phase_10.yaml +35 -0
  1136. package/core/dev/archive/ansuz/legacy/phases/phase_11.yaml +582 -0
  1137. package/core/dev/archive/ansuz/legacy/phases/phase_2.yaml +94 -0
  1138. package/core/dev/archive/ansuz/legacy/phases/phase_3.yaml +274 -0
  1139. package/core/dev/archive/ansuz/legacy/phases/phase_4.yaml +67 -0
  1140. package/core/dev/archive/ansuz/legacy/phases/phase_5.yaml +32 -0
  1141. package/core/dev/archive/ansuz/legacy/phases/phase_6.yaml +91 -0
  1142. package/core/dev/archive/ansuz/legacy/phases/phase_7.yaml +58 -0
  1143. package/core/dev/archive/ansuz/legacy/phases/phase_8.yaml +146 -0
  1144. package/core/dev/archive/ansuz/legacy/phases/phase_9.yaml +424 -0
  1145. package/core/dev/archive/ansuz/specs/INDEX_bifrost_hook_parity.yaml +92 -0
  1146. package/core/dev/archive/ansuz/specs/active-inference-formation.yaml +453 -0
  1147. package/core/dev/archive/ansuz/specs/brief_TASK_1228_userpromptsubmit.yaml +191 -0
  1148. package/core/dev/archive/ansuz/specs/brief_TASK_1229_pretooluse_posttooluse.yaml +250 -0
  1149. package/core/dev/archive/ansuz/specs/brief_TASK_1230_sessionstart_stop.yaml +301 -0
  1150. package/core/dev/archive/ansuz/specs/brief_TASK_1231_verification.yaml +272 -0
  1151. package/core/dev/design/PHASE4_DESIGN.md +559 -0
  1152. package/core/dev/design/dashboard_docs_integration_PLAN.md +388 -0
  1153. package/core/dev/design/matrix_format_ABBREVIATIONS.md +655 -0
  1154. package/core/dev/design/matrix_format_DESIGN_SPEC.md +601 -0
  1155. package/core/dev/design/matrix_format_DISCUSSION_SUMMARY.md +484 -0
  1156. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +13 -0
  1157. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +9 -0
  1158. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +14 -0
  1159. package/core/dev/design/matrix_format_SYNTAX_BNF.md +754 -0
  1160. package/core/dev/design/matrix_format_TOKEN_COMPARISON.md +484 -0
  1161. package/core/dev/design/matrix_v2_COGNITIVE_DESIGN.md +503 -0
  1162. package/core/dev/design/matrix_v2_DISCUSSION_SUMMARY.md +414 -0
  1163. package/core/dev/design/matrix_v2_EXAMPLE.matrix +67 -0
  1164. package/core/dev/designs/EXPANDABLE_CARD_DESIGN_SPEC.md +509 -0
  1165. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +52 -0
  1166. package/core/dev/jev-eval/ANNOTATION_GUIDE.md +68 -0
  1167. package/core/dev/jev-eval/BASELINE_COMPARISON.md +45 -0
  1168. package/core/dev/jev-eval/CONTEXT_REVIEW.md +31 -0
  1169. package/core/dev/jev-eval/EVALUATION_STATUS.md +39 -0
  1170. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +33 -0
  1171. package/core/dev/jev-eval/PACKAGING_VERIFICATION.md +42 -0
  1172. package/core/dev/jev-eval/README.md +101 -0
  1173. package/core/dev/jev-eval/THALAMUS_RANKING.md +58 -0
  1174. package/core/dev/jev-eval/VALIDATION_PROGRESS.md +54 -0
  1175. package/core/dev/jev-eval/cli.mjs +50 -0
  1176. package/core/dev/jev-eval/context.mjs +183 -0
  1177. package/core/dev/jev-eval/corpus.mjs +186 -0
  1178. package/core/dev/jev-eval/fixtures/conversation-review.seed.jsonl +6 -0
  1179. package/core/dev/jev-eval/fixtures/synthetic.jsonl +11 -0
  1180. package/core/dev/jev-eval/metrics.mjs +67 -0
  1181. package/core/dev/jev-eval/muninn-baseline.mjs +119 -0
  1182. package/core/dev/jev-eval/providers.mjs +95 -0
  1183. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +32 -0
  1184. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +48 -0
  1185. package/core/dev/jev-eval/reports/conversation-review.pending.json +151 -0
  1186. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +52 -0
  1187. package/core/dev/jev-eval/reports/length-probe-2026-09-20.json +133 -0
  1188. package/core/dev/jev-eval/reports/live-smoke-2026-09-20.json +616 -0
  1189. package/core/dev/jev-eval/reports/muninn-baseline-2026-09-20.json +52 -0
  1190. package/core/dev/jev-eval/reports/resilience-2026-09-20.json +520 -0
  1191. package/core/dev/jev-eval/reports/rules-baseline.json +197 -0
  1192. package/core/dev/jev-eval/reports/synthetic-review.pending.json +357 -0
  1193. package/core/dev/jev-eval/resilience.mjs +71 -0
  1194. package/core/dev/jev-eval/review.mjs +78 -0
  1195. package/core/dev/jev-eval/schema.mjs +87 -0
  1196. package/core/dev/jev-eval/test/context.test.mjs +95 -0
  1197. package/core/dev/jev-eval/test/corpus.test.mjs +102 -0
  1198. package/core/dev/jev-eval/test/eval.test.mjs +146 -0
  1199. package/core/dev/jev-eval/test/muninn-baseline.test.mjs +71 -0
  1200. package/core/dev/jev-eval/test/resilience.test.mjs +72 -0
  1201. package/core/dev/jev-eval/test/review.test.mjs +61 -0
  1202. package/core/dev/pipeline/LOCK_STATE.json +4 -0
  1203. package/core/dev/pipeline/OPTIMIZATION_PROPOSALS.json +32 -0
  1204. package/core/dev/pipeline/PHASE3_PLANNING_SUMMARY.md +338 -0
  1205. package/core/dev/pipeline/PIPELINE_CONFIG.json +46 -0
  1206. package/core/dev/pipeline/PROGRESS.md +113 -0
  1207. package/core/dev/pipeline/PROGRESS_template.md +860 -0
  1208. package/core/dev/pipeline/QA_REPORT_F008.md +431 -0
  1209. package/core/dev/pipeline/QA_REPORT_LOCAL_CLAUDE_DIAGNOSIS.md +583 -0
  1210. package/core/dev/pipeline/README.md +210 -0
  1211. package/core/dev/pipeline/SELF_ENHANCEMENT_STATUS.json.bak +47 -0
  1212. package/core/dev/pipeline/TASK_QUEUE.json +192 -0
  1213. package/core/dev/pipeline/WORKFLOW_GUIDE.md +824 -0
  1214. package/core/dev/pipeline/archived/TASK_015_tauri_init.yaml +53 -0
  1215. package/core/dev/pipeline/archived/TASK_016_tauri_commands.yaml +54 -0
  1216. package/core/dev/pipeline/archived/TASK_017_rust_pty.yaml +54 -0
  1217. package/core/dev/pipeline/archived/TASK_018_tauri_bundle.yaml +53 -0
  1218. package/core/dev/pipeline/archived/TASK_019_release_workflow.yaml +56 -0
  1219. package/core/dev/pipeline/archived/TASK_020_update_ui.yaml +54 -0
  1220. package/core/dev/pipeline/archived/TASK_021_update_notification_ui.yaml +55 -0
  1221. package/core/dev/pipeline/archived/TASK_022_remove_node_pty.yaml +65 -0
  1222. package/core/dev/pipeline/archived/TASK_023_api_routes_migration.yaml +86 -0
  1223. package/core/dev/pipeline/archived/TASK_024_feature_id_system.yaml +51 -0
  1224. package/core/dev/pipeline/archived/TASK_025_executable_acceptance.yaml +66 -0
  1225. package/core/dev/pipeline/archived/TASK_026_spec_versioning.yaml +56 -0
  1226. package/core/dev/pipeline/archived/TASK_027_drift_detection.yaml +60 -0
  1227. package/core/dev/pipeline/archived/TASK_028_tauri_pty_manager.yaml +60 -0
  1228. package/core/dev/pipeline/archived/TASK_029_tauri_pty_commands.yaml +62 -0
  1229. package/core/dev/pipeline/archived/TASK_030_frontend_session_adapter.yaml +54 -0
  1230. package/core/dev/pipeline/archived/TASK_031_terminal_tauri_events.yaml +56 -0
  1231. package/core/dev/pipeline/archived/TASK_041_scheduler_data_models.yaml +54 -0
  1232. package/core/dev/pipeline/archived/TASK_042_path_lock_manager.yaml +53 -0
  1233. package/core/dev/pipeline/archived/TASK_043_process_manager.yaml +57 -0
  1234. package/core/dev/pipeline/archived/TASK_044_git_integration.yaml +85 -0
  1235. package/core/dev/pipeline/archived/TASK_045_task_queue_manager.yaml +54 -0
  1236. package/core/dev/pipeline/archived/TASK_046_scheduler_dispatcher.yaml +60 -0
  1237. package/core/dev/pipeline/archived/TASK_047_tauri_scheduler_commands.yaml +55 -0
  1238. package/core/dev/pipeline/archived/TASK_048_realtime_status_push.yaml +92 -0
  1239. package/core/dev/pipeline/archived/TASK_049_frontend_scheduler_integration.yaml +58 -0
  1240. package/core/dev/pipeline/archived/TASK_050_error_recovery.yaml +56 -0
  1241. package/core/dev/pipeline/archived/TASK_051_optimization_proposals_backend.yaml +53 -0
  1242. package/core/dev/pipeline/archived/TASK_052_optimization_proposals_ui.yaml +58 -0
  1243. package/core/dev/pipeline/archived/TASK_053_optimization_proposals_diff_view.yaml +54 -0
  1244. package/core/dev/pipeline/archived/TASK_054_multi_project_scheduler_state.yaml +76 -0
  1245. package/core/dev/pipeline/archived/TASK_055_scheduler_api_project_scope.yaml +64 -0
  1246. package/core/dev/pipeline/archived/TASK_056_frontend_scheduler_project_scope.yaml +62 -0
  1247. package/core/dev/pipeline/archived/TASK_057_scheduler_module_structure.yaml +54 -0
  1248. package/core/dev/pipeline/archived/TASK_058_scheduler_models_extract.yaml +51 -0
  1249. package/core/dev/pipeline/archived/TASK_059_scheduler_core_extract.yaml +51 -0
  1250. package/core/dev/pipeline/archived/TASK_060_scheduler_commands_extract.yaml +51 -0
  1251. package/core/dev/pipeline/archived/TASK_061_scheduler_specialized_commands.yaml +53 -0
  1252. package/core/dev/pipeline/archived/TASK_062_process_manager_module_structure.yaml +56 -0
  1253. package/core/dev/pipeline/archived/TASK_063_process_manager_core_extract.yaml +56 -0
  1254. package/core/dev/pipeline/archived/TASK_064_recovery_module_structure.yaml +57 -0
  1255. package/core/dev/pipeline/archived/TASK_065_recovery_core_extract.yaml +56 -0
  1256. package/core/dev/pipeline/archived/TASK_066_self_enhancement_scheduler_models.yaml +60 -0
  1257. package/core/dev/pipeline/archived/TASK_067_agents_section_quick_actions.yaml +53 -0
  1258. package/core/dev/pipeline/archived/TASK_067_self_enhancement_scheduler_core.yaml +65 -0
  1259. package/core/dev/pipeline/archived/TASK_068_agent_workflow_rule_enhancement.yaml +46 -0
  1260. package/core/dev/pipeline/archived/TASK_068_self_enhancement_tauri_commands.yaml +61 -0
  1261. package/core/dev/pipeline/archived/TASK_069_agent_wizard_responsive.yaml +46 -0
  1262. package/core/dev/pipeline/archived/TASK_069_self_enhancement_ui.yaml +62 -0
  1263. package/core/dev/pipeline/archived/TASK_070_preview_panel_redesign.yaml +62 -0
  1264. package/core/dev/pipeline/archived/TASK_070_self_enhancement_integration.yaml +57 -0
  1265. package/core/dev/pipeline/archived/TASK_071_preview_panel_qa.yaml +98 -0
  1266. package/core/dev/pipeline/archived/TASK_071_single_agent_config.yaml +57 -0
  1267. package/core/dev/pipeline/archived/TASK_072_preview_modal_esc_fix.yaml +71 -0
  1268. package/core/dev/pipeline/archived/TASK_072_product_review_module.yaml +57 -0
  1269. package/core/dev/pipeline/archived/TASK_073_agents_page_component_refactor.yaml +68 -0
  1270. package/core/dev/pipeline/archived/TASK_073_rename_single_agent.yaml +64 -0
  1271. package/core/dev/pipeline/archived/TASK_074_preview_mode_ui_diagnosis.yaml +71 -0
  1272. package/core/dev/pipeline/archived/TASK_074_single_agent_ui_toggle.yaml +56 -0
  1273. package/core/dev/pipeline/archived/TASK_075_agents_page_component_refactor.yaml +69 -0
  1274. package/core/dev/pipeline/archived/TASK_075_single_agent_integration_test.yaml +75 -0
  1275. package/core/dev/pipeline/archived/TASK_076_preview_mode_ui_diagnosis.yaml +70 -0
  1276. package/core/dev/pipeline/archived/TASK_076_single_agent_continuous_mode.yaml +65 -0
  1277. package/core/dev/pipeline/archived/TASK_077_failure_directory_structure.yaml +51 -0
  1278. package/core/dev/pipeline/archived/TASK_077_single_agent_typescript_types.yaml +59 -0
  1279. package/core/dev/pipeline/archived/TASK_078_fail_001_agent_no_output.yaml +53 -0
  1280. package/core/dev/pipeline/archived/TASK_078_single_agent_ui_simplify.yaml +74 -0
  1281. package/core/dev/pipeline/archived/TASK_079_dashboard_rwd_responsive.yaml +63 -0
  1282. package/core/dev/pipeline/archived/TASK_079_fail_002_json_bom.yaml +56 -0
  1283. package/core/dev/pipeline/archived/TASK_080_fail_003_queue_pollution.yaml +56 -0
  1284. package/core/dev/pipeline/archived/TASK_080_http_server_module.yaml +55 -0
  1285. package/core/dev/pipeline/archived/TASK_081_failure_logging_tools.yaml +57 -0
  1286. package/core/dev/pipeline/archived/TASK_081_http_api_routes.yaml +62 -0
  1287. package/core/dev/pipeline/archived/TASK_082_frontend_api_adapter.yaml +51 -0
  1288. package/core/dev/pipeline/archived/TASK_082_integrate_failure_to_workflow.yaml +60 -0
  1289. package/core/dev/pipeline/archived/TASK_083_cleanup_nextjs_api.yaml +48 -0
  1290. package/core/dev/pipeline/archived/TASK_083_task_queue_cleanup.yaml +67 -0
  1291. package/core/dev/pipeline/archived/TASK_084_rust_dead_code_cleanup.yaml +66 -0
  1292. package/core/dev/pipeline/archived/TASK_084_scheduler_sync_logic_fix.yaml +68 -0
  1293. package/core/dev/pipeline/archived/TASK_085_http_api_web_mode_fixes.yaml +46 -0
  1294. package/core/dev/pipeline/archived/TASK_085_memory_consolidation_0204_0205.yaml +98 -0
  1295. package/core/dev/pipeline/archived/TASK_086_collapsible_preview_panel.yaml +161 -0
  1296. package/core/dev/pipeline/archived/TASK_086_web_mode_feature_parity.yaml +62 -0
  1297. package/core/dev/pipeline/archived/TASK_087_manual_memory_archival.yaml +163 -0
  1298. package/core/dev/pipeline/archived/TASK_087_mobile_http_control.yaml +68 -0
  1299. package/core/dev/pipeline/archived/TASK_088_fail_003_to_ppl_002_rule.yaml +63 -0
  1300. package/core/dev/pipeline/archived/TASK_088_mobile_http_qa.yaml +121 -0
  1301. package/core/dev/pipeline/archived/TASK_089_agent_collaboration_topic.yaml +60 -0
  1302. package/core/dev/pipeline/archived/TASK_089_web_mode_monitor_fix.yaml +58 -0
  1303. package/core/dev/pipeline/archived/TASK_090_cli_detection_fix.yaml +61 -0
  1304. package/core/dev/pipeline/archived/TASK_090_ui_ux_lessons_topic.yaml +63 -0
  1305. package/core/dev/pipeline/archived/TASK_091_expandable_card_design.yaml +56 -0
  1306. package/core/dev/pipeline/archived/TASK_091_move_agent_section_components.yaml +65 -0
  1307. package/core/dev/pipeline/archived/TASK_092_expandable_card_component.yaml +60 -0
  1308. package/core/dev/pipeline/archived/TASK_092_refactor_agent_create_wizard.yaml +84 -0
  1309. package/core/dev/pipeline/archived/TASK_093_taskcard_detail_integration.yaml +57 -0
  1310. package/core/dev/pipeline/archived/TASK_093_update_barrel_exports_test.yaml +84 -0
  1311. package/core/dev/pipeline/archived/TASK_094_ai_agent_generation_enhancement.yaml +115 -0
  1312. package/core/dev/pipeline/archived/TASK_094_proposalcard_detail_integration.yaml +55 -0
  1313. package/core/dev/pipeline/archived/TASK_095_preview_fixes.yaml +129 -0
  1314. package/core/dev/pipeline/archived/TASK_095_single_agent_task_selector.yaml +60 -0
  1315. package/core/dev/pipeline/archived/TASK_096_agents_page_ux_improvements.yaml +163 -0
  1316. package/core/dev/pipeline/archived/TASK_096_single_agent_status_sync.yaml +60 -0
  1317. package/core/dev/pipeline/archived/TASK_097_local_claude_error_logging.yaml +59 -0
  1318. package/core/dev/pipeline/archived/TASK_097_single_agent_monitor_events.yaml +59 -0
  1319. package/core/dev/pipeline/archived/TASK_098_product_manager_team_phase2.yaml +60 -0
  1320. package/core/dev/pipeline/archived/TASK_098_single_agent_refactor_test.yaml +58 -0
  1321. package/core/dev/pipeline/archived/TASK_099_backend_team_creation.yaml +258 -0
  1322. package/core/dev/pipeline/archived/TASK_100_frontend_team_creation.yaml +61 -0
  1323. package/core/dev/pipeline/archived/TASK_101_orchestrator_system.yaml +403 -0
  1324. package/core/dev/pipeline/archived/TASK_102_designer_sre_teams.yaml +90 -0
  1325. package/core/dev/pipeline/archived/TASK_103_integration_testing.yaml +86 -0
  1326. package/core/dev/pipeline/archived/TASK_128_integration_testing.yaml +83 -0
  1327. package/core/dev/pipeline/archived/TASK_134_cortex_v2_phase3_file_watcher.yaml +65 -0
  1328. package/core/dev/pipeline/archived/TASK_134_team_http_api.yaml +96 -0
  1329. package/core/dev/pipeline/archived/TASK_135_cortex_v2_phase3_git_monitor.yaml +63 -0
  1330. package/core/dev/pipeline/archived/TASK_136_cortex_v2_phase3_change_analyzer.yaml +69 -0
  1331. package/core/dev/pipeline/archived/TASK_137_cortex_v2_phase3_cache_invalidator.yaml +67 -0
  1332. package/core/dev/pipeline/archived/TASK_137_team_orchestrator_integration.yaml +93 -0
  1333. package/core/dev/pipeline/archived/TASK_138_cortex_v2_phase3_distributed_cache.yaml +68 -0
  1334. package/core/dev/pipeline/archived/TASK_138_matrix_folder_structure.yaml +61 -0
  1335. package/core/dev/pipeline/archived/TASK_139_cortex_v2_phase3_cache_prewarming.yaml +65 -0
  1336. package/core/dev/pipeline/archived/TASK_146_unified_documentation.yaml +141 -0
  1337. package/core/dev/pipeline/archived/TASK_147_pipeline_execution_rules.yaml +76 -0
  1338. package/core/dev/pipeline/archived/TASK_148_update_claude_md.yaml +77 -0
  1339. package/core/dev/pipeline/archived/TASK_149_fix_nextjs_mdx_serialization.yaml +63 -0
  1340. package/core/dev/pipeline/archived/TASK_149_update_team_docs.yaml +77 -0
  1341. package/core/dev/pipeline/archived/TASK_150_pipeline_workflow_guide.yaml +82 -0
  1342. package/core/dev/pipeline/archived/TASK_164_fix_smart_context_switch.yaml +49 -0
  1343. package/core/dev/pipeline/archived/TASK_165_ctags_symbol_index.yaml +53 -0
  1344. package/core/dev/pipeline/archived/TASK_166_symbol_search_mcp_tool.yaml +48 -0
  1345. package/core/dev/pipeline/archived/TASK_167_llm_module_summary.yaml +55 -0
  1346. package/core/dev/pipeline/archived/TASK_168_map_reduce_context.yaml +51 -0
  1347. package/core/dev/pipeline/archived/TASK_169_v2_integration_testing.yaml +52 -0
  1348. package/core/dev/pipeline/backups/archive_2026-02-04T22-07-22/TASK_QUEUE_backup.json +95 -0
  1349. package/core/dev/pipeline/docs/multi-agent-coordination.md +446 -0
  1350. package/core/dev/pipeline/docs/overview.md +406 -0
  1351. package/core/dev/pipeline/docs/task-management.md +412 -0
  1352. package/core/dev/pipeline/docs/workflows.md +32 -0
  1353. package/core/dev/pipeline/orchestrator/schemas/task_queue_schema.json +58 -0
  1354. package/core/dev/pipeline/orchestrator/schemas/task_schema.json +139 -0
  1355. package/core/dev/pipeline/plans/PLAN_task_cli_refactor.md +281 -0
  1356. package/core/dev/pipeline/tasks/.gitkeep +1 -0
  1357. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +27 -0
  1358. package/core/dev/plans/CLI_FIRST_INSTALL_FLOW.md +128 -0
  1359. package/core/dev/plans/FORMATION_RETIREMENT_PLAN.md +313 -0
  1360. package/core/dev/plans/KUZU_REPLACEMENT_PLAN.md +126 -0
  1361. package/core/dev/schemas/PRODUCT_SPEC.example.yaml +382 -0
  1362. package/core/dev/schemas/PRODUCT_SPEC.schema.json +800 -0
  1363. package/core/dev/schemas/README.md +517 -0
  1364. package/core/dev/schemas/TASK.schema.json +226 -0
  1365. package/core/dev/schemas/dataflows_ground_truth.yaml +173 -0
  1366. package/core/dev/schemas/dataflows_spec.yaml +160 -0
  1367. package/core/dev/schemas/extends_ground_truth.yaml +66 -0
  1368. package/core/dev/schemas/extends_spec.yaml +121 -0
  1369. package/core/dev/schemas/implements_ground_truth.yaml +77 -0
  1370. package/core/dev/schemas/implements_spec.yaml +140 -0
  1371. package/core/dev/scripts/CRASH_DIAGNOSIS.md +47 -0
  1372. package/core/dev/scripts/README.md +142 -0
  1373. package/core/dev/scripts/RUN_ONCE.bat +40 -0
  1374. package/core/dev/scripts/START_DEV_AGENT.bat +63 -0
  1375. package/core/dev/scripts/START_MULTI_AGENT.bat +80 -0
  1376. package/core/dev/scripts/check-alaya-report-isolation.js +255 -0
  1377. package/core/dev/scripts/check-file-size.js +268 -0
  1378. package/core/dev/scripts/ci-feedback.js +251 -0
  1379. package/core/dev/scripts/clean-verify-targets.js +132 -0
  1380. package/core/dev/scripts/cleanup-queue.js +184 -0
  1381. package/core/dev/scripts/cleanup_queue.js +86 -0
  1382. package/core/dev/scripts/dev_agent_scheduler.ps1 +536 -0
  1383. package/core/dev/scripts/dispatch-stats.js +384 -0
  1384. package/core/dev/scripts/dispatch-stats.test.js +162 -0
  1385. package/core/dev/scripts/gc-agent-worktrees.js +461 -0
  1386. package/core/dev/scripts/gc-agent-worktrees.test.js +48 -0
  1387. package/core/dev/scripts/hooks/README.md +148 -0
  1388. package/core/dev/scripts/init_git.ps1 +396 -0
  1389. package/core/dev/scripts/init_git.sh +337 -0
  1390. package/core/dev/scripts/init_project.ps1 +851 -0
  1391. package/core/dev/scripts/init_project.sh +477 -0
  1392. package/core/dev/scripts/js-yaml-resolution.test.js +48 -0
  1393. package/core/dev/scripts/kenaz-session.js +354 -0
  1394. package/core/dev/scripts/kenaz-session.test.js +234 -0
  1395. package/core/dev/scripts/legacy/README.md +39 -0
  1396. package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +536 -0
  1397. package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +1978 -0
  1398. package/core/dev/scripts/matrix/CLI_README.md +214 -0
  1399. package/core/dev/scripts/matrix/README.md +310 -0
  1400. package/core/dev/scripts/matrix/package-lock.json +4266 -0
  1401. package/core/dev/scripts/matrix/package.json +55 -0
  1402. package/core/dev/scripts/matrix/src/abbreviations.ts +295 -0
  1403. package/core/dev/scripts/matrix/src/cli/commands/convert.ts +211 -0
  1404. package/core/dev/scripts/matrix/src/cli/commands/create.ts +95 -0
  1405. package/core/dev/scripts/matrix/src/cli/commands/delete.ts +102 -0
  1406. package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +140 -0
  1407. package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +173 -0
  1408. package/core/dev/scripts/matrix/src/cli/commands/query.ts +261 -0
  1409. package/core/dev/scripts/matrix/src/cli/commands/read.ts +77 -0
  1410. package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +168 -0
  1411. package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +126 -0
  1412. package/core/dev/scripts/matrix/src/cli/commands/update.ts +147 -0
  1413. package/core/dev/scripts/matrix/src/cli/commands/validate.ts +275 -0
  1414. package/core/dev/scripts/matrix/src/cli/index.ts +350 -0
  1415. package/core/dev/scripts/matrix/src/cli/utils/file-handler.ts +72 -0
  1416. package/core/dev/scripts/matrix/src/cli/utils/logger.ts +65 -0
  1417. package/core/dev/scripts/matrix/src/index.ts +62 -0
  1418. package/core/dev/scripts/matrix/src/indexer/tag-indexer.ts +165 -0
  1419. package/core/dev/scripts/matrix/src/parser.ts +281 -0
  1420. package/core/dev/scripts/matrix/src/serializer.ts +151 -0
  1421. package/core/dev/scripts/matrix/src/validator.ts +301 -0
  1422. package/core/dev/scripts/matrix/tests/abbreviations.test.ts +122 -0
  1423. package/core/dev/scripts/matrix/tests/cli.test.ts +177 -0
  1424. package/core/dev/scripts/matrix/tests/convert.test.ts +143 -0
  1425. package/core/dev/scripts/matrix/tests/parser.test.ts +203 -0
  1426. package/core/dev/scripts/matrix/tests/query.test.ts +85 -0
  1427. package/core/dev/scripts/matrix/tests/serializer.test.ts +197 -0
  1428. package/core/dev/scripts/matrix/tests/validate.test.ts +141 -0
  1429. package/core/dev/scripts/matrix/tests/validator.test.ts +167 -0
  1430. package/core/dev/scripts/matrix/tsconfig.json +20 -0
  1431. package/core/dev/scripts/matrix/types/index.d.ts +111 -0
  1432. package/core/dev/scripts/matrix/types/index.d.ts.map +1 -0
  1433. package/core/dev/scripts/matrix/types/index.js +8 -0
  1434. package/core/dev/scripts/matrix/types/index.js.map +1 -0
  1435. package/core/dev/scripts/matrix/types/index.ts +124 -0
  1436. package/core/dev/scripts/memory-guard-eval.js +330 -0
  1437. package/core/dev/scripts/memory-usage-report.js +152 -0
  1438. package/core/dev/scripts/migrate-task-dependencies.js +198 -0
  1439. package/core/dev/scripts/multi_agent_scheduler.ps1 +2021 -0
  1440. package/core/dev/scripts/multi_agent_scheduler.sh +1344 -0
  1441. package/core/dev/scripts/probe/ansuz-scaffold-ablation.js +579 -0
  1442. package/core/dev/scripts/probe/ansuz-scaffold-ablation.test.js +244 -0
  1443. package/core/dev/scripts/probe/hippocampus-concurrency.js +247 -0
  1444. package/core/dev/scripts/probe/hook-latency-probe.js +315 -0
  1445. package/core/dev/scripts/probe/hook-latency-probe.test.js +105 -0
  1446. package/core/dev/scripts/probe/prediction-signal-auc.js +483 -0
  1447. package/core/dev/scripts/probe/prediction-signal-auc.test.js +200 -0
  1448. package/core/dev/scripts/reset_tasks.js +99 -0
  1449. package/core/dev/scripts/run-rust-tests.js +207 -0
  1450. package/core/dev/scripts/run-rust-tests.test.js +154 -0
  1451. package/core/dev/scripts/run_once.sh +47 -0
  1452. package/core/dev/scripts/rust-verify-worktree.js +591 -0
  1453. package/core/dev/scripts/rust-verify-worktree.test.js +574 -0
  1454. package/core/dev/scripts/seh_probe.rs +26 -0
  1455. package/core/dev/scripts/setup_mcp.ps1 +192 -0
  1456. package/core/dev/scripts/setup_mcp.sh +159 -0
  1457. package/core/dev/scripts/setup_rag.ps1 +304 -0
  1458. package/core/dev/scripts/setup_rag.sh +230 -0
  1459. package/core/dev/scripts/start_dev_agent.sh +137 -0
  1460. package/core/dev/scripts/start_multi_agent.sh +41 -0
  1461. package/core/dev/scripts/sync_task_queue.ps1 +505 -0
  1462. package/core/dev/scripts/sync_task_queue.sh +392 -0
  1463. package/core/dev/scripts/task1961/RUNBOOK.md +300 -0
  1464. package/core/dev/scripts/task1961/fixtures/never-listens.server.js +54 -0
  1465. package/core/dev/scripts/task1961/fixtures/slow-serve.server.js +134 -0
  1466. package/core/dev/scripts/task1961/run-fixture.js +659 -0
  1467. package/core/dev/scripts/task1961/selftest.js +247 -0
  1468. package/core/dev/scripts/test-pty-ws-tunnel.js +229 -0
  1469. package/core/dev/scripts/validate_pipeline.js +197 -0
  1470. package/core/dev/scripts/verify-isbar-capture.js +100 -0
  1471. package/core/dev/scripts/verify-target-dir.js +69 -0
  1472. package/core/dev/scripts/verify-task-1839.js +141 -0
  1473. package/core/dev/specs/agent-connect/PROTOCOL.md +177 -0
  1474. package/core/dev/specs/agent-connect/SDK_GUIDE.md +915 -0
  1475. package/core/dev/specs/agent-connect/examples/minimal-site/README.md +137 -0
  1476. package/core/dev/specs/agent-connect/examples/minimal-site/package.json +12 -0
  1477. package/core/dev/specs/agent-connect/examples/minimal-site/public/index.html +116 -0
  1478. package/core/dev/specs/agent-connect/examples/minimal-site/public/install-redirect.js +73 -0
  1479. package/core/dev/specs/agent-connect/examples/minimal-site/server.js +516 -0
  1480. package/core/dev/specs/agent-connect/examples/minimal-site/test/smoke.test.mjs +263 -0
  1481. package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-empty-prompt-no-first-turn.md +77 -0
  1482. package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-prompt-mojibake.md +90 -0
  1483. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-07.md +61 -0
  1484. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-08_relay-v1-conformance.md +76 -0
  1485. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-09_v0.4-session-channel.md +87 -0
  1486. package/core/dev/specs/agent-connect/history/FLOWPIX_REPLY_agent-hub_2026-09-08_relay-v1-answers.md +68 -0
  1487. package/core/dev/specs/agent-connect/history/FLOWPIX_bridge_CONTRACT.md +642 -0
  1488. package/core/dev/specs/agent-connect/history/FLOWPIX_spikes_relay_spike_relay.mjs +244 -0
  1489. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-07.md +77 -0
  1490. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_direction-change-v0.3.md +44 -0
  1491. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-answers-ack.md +37 -0
  1492. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-conformance.md +56 -0
  1493. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_annotations-install-coldstart.md +44 -0
  1494. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_empty-prompt-first-turn.md +56 -0
  1495. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_prompt-mojibake-fixed.md +48 -0
  1496. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_session-channel.md +57 -0
  1497. package/core/dev/specs/agent-connect/history/PROTOCOL_v0.3_snapshot.md +379 -0
  1498. package/core/dev/specs/agent-connect/history/README.md +47 -0
  1499. package/core/dev/specs/peer/CODEX_INTERACTIVE_PUSH.md +65 -0
  1500. package/core/dev/specs/peer/CODEX_PEER_PULL_SPIKE.md +54 -0
  1501. package/core/dev/specs/peer/MODS_SPIKE.md +133 -0
  1502. package/core/dev/specs/peer/PER_PROJECT_ADDRESSING.md +143 -0
  1503. package/core/dev/specs/peer/SWARM_PROTOCOLS.md +256 -0
  1504. package/core/dev/specs/peer/codex-hook-shim-peer.test.js +101 -0
  1505. package/core/dev/specs/peer/codex-push-launcher.test.js +142 -0
  1506. package/core/dev/specs/peer/setup-codex-hooks.test.js +22 -0
  1507. package/core/dev/specs/peer-ansuz/DELIVERY_SPIKE.md +397 -0
  1508. package/core/dev/specs/peer-ansuz/DESIGN.md +109 -0
  1509. package/core/dev/specs/peer-ansuz/spike/claude_poke.js +129 -0
  1510. package/core/dev/specs/peer-ansuz/spike/claude_session_start_hook.js +37 -0
  1511. package/core/dev/specs/peer-ansuz/spike/claude_settings_hook.json +14 -0
  1512. package/core/dev/specs/peer-ansuz/spike/codex_appserver_client.js +105 -0
  1513. package/core/dev/specs/peer-ansuz/spike/codex_appserver_query.js +29 -0
  1514. package/core/dev/specs/peer-ansuz/spike/extract_timeline.js +26 -0
  1515. package/core/dev/specs/synapse/SYMBOL_IDENTITY.md +305 -0
  1516. package/core/dev/spikes/A4-cypher-varlen.md +176 -0
  1517. package/core/dev/spikes/bloat-rounds.sh +25 -0
  1518. package/core/dev/spikes/mods/clean-claude.js +9 -0
  1519. package/core/dev/spikes/mods/drive-probe.js +29 -0
  1520. package/core/dev/spikes/mods/e2e-peer.js +71 -0
  1521. package/core/dev/spikes/mods/evidence/e2e-peer-control.json +17 -0
  1522. package/core/dev/spikes/mods/evidence/e2e-peer-mod.json +17 -0
  1523. package/core/dev/spikes/mods/evidence/probe-006a6e65-d807-4bc1-b648-fd7d1edfe0b4.jsonl +4 -0
  1524. package/core/dev/spikes/mods/evidence/probe-cebdf1f7-f9c4-47a8-83cd-7c0786177404.jsonl +12 -0
  1525. package/core/dev/spikes/mods/evidence/probe-eb21147d-10ce-4c32-93ed-37ca37d88d5a.jsonl +11 -0
  1526. package/core/dev/spikes/mods/evidence/stream-cebdf1f7.jsonl +18 -0
  1527. package/core/dev/spikes/mods/kenaz-mod-probe/.claude-plugin/plugin.json +1 -0
  1528. package/core/dev/spikes/mods/kenaz-mod-probe/hooks/hooks.json +1 -0
  1529. package/core/dev/spikes/mods/kenaz-mod-probe/hooks/register.ts +65 -0
  1530. package/core/dev/spikes/mods/kenaz-mod-probe/tsconfig.json +3 -0
  1531. package/core/k-cli/README.md +423 -0
  1532. package/core/k-cli/package.json +21 -0
  1533. package/core/k-cli/templates/k-cli.md +91 -0
  1534. package/core/k-cli/test/TEST_SPEC.md +134 -0
  1535. package/core/k-cli/test/run.sh +469 -0
  1536. package/core/plugins/kenaz/.claude-plugin/plugin.json +1 -0
  1537. package/core/plugins/kenaz/.mcp.json +5 -0
  1538. package/core/plugins/kenaz/INVENTORY.md +48 -0
  1539. package/core/plugins/kenaz/README.md +55 -0
  1540. package/core/plugins/kenaz/commands/Amelia.md +5 -0
  1541. package/core/plugins/kenaz/commands/Ansuz.md +38 -0
  1542. package/core/plugins/kenaz/commands/architect.md +24 -0
  1543. package/core/plugins/kenaz/commands/incident.md +15 -0
  1544. package/core/plugins/kenaz/commands/kenaz.md +12 -0
  1545. package/core/plugins/kenaz/commands/review.md +14 -0
  1546. package/core/plugins/kenaz/commands/security.md +15 -0
  1547. package/core/plugins/kenaz/commands/spec.md +22 -0
  1548. package/core/plugins/kenaz/commands/strategy.md +141 -0
  1549. package/core/plugins/kenaz/commands//347/224/242/345/223/201.md +15 -0
  1550. package/core/plugins/kenaz/commands//350/250/255/350/250/210.md +14 -0
  1551. package/core/plugins/kenaz/commands//350/251/225/344/274/260.md +16 -0
  1552. package/core/plugins/kenaz/guidance.md +5 -0
  1553. package/core/plugins/kenaz/hooks/core-resolve.js +230 -0
  1554. package/core/plugins/kenaz/hooks/hooks.json +31 -0
  1555. package/core/plugins/kenaz/hooks/kenaz-hook.js +112 -0
  1556. package/core/plugins/kenaz/hooks/mode.js +39 -0
  1557. package/core/plugins/kenaz/scripts/kenaz-mode.js +46 -0
  1558. package/core/plugins/kenaz/scripts/kenaz.test.js +123 -0
  1559. package/core/plugins/kenaz/scripts/sync.js +45 -0
  1560. package/core/plugins/kenaz/scripts/ygg.js +157 -0
  1561. package/core/plugins/kenaz/skills/adapt/SKILL.md +199 -0
  1562. package/core/plugins/kenaz/skills/animate/SKILL.md +190 -0
  1563. package/core/plugins/kenaz/skills/architect_agent/SKILL.md +408 -0
  1564. package/core/plugins/kenaz/skills/assessment_agent/SKILL.md +289 -0
  1565. package/core/plugins/kenaz/skills/audit/SKILL.md +129 -0
  1566. package/core/plugins/kenaz/skills/backend_agent/SKILL.md +407 -0
  1567. package/core/plugins/kenaz/skills/backend_engineer/SKILL.md +788 -0
  1568. package/core/plugins/kenaz/skills/bolder/SKILL.md +132 -0
  1569. package/core/plugins/kenaz/skills/clarify/SKILL.md +180 -0
  1570. package/core/plugins/kenaz/skills/code_reviewer/SKILL.md +305 -0
  1571. package/core/plugins/kenaz/skills/code_reviewer/patterns.yaml +85 -0
  1572. package/core/plugins/kenaz/skills/colorize/SKILL.md +158 -0
  1573. package/core/plugins/kenaz/skills/critique/SKILL.md +118 -0
  1574. package/core/plugins/kenaz/skills/delight/SKILL.md +317 -0
  1575. package/core/plugins/kenaz/skills/designer/SKILL.md +845 -0
  1576. package/core/plugins/kenaz/skills/dev_agent/SKILL.md +503 -0
  1577. package/core/plugins/kenaz/skills/developer/SKILL.md +792 -0
  1578. package/core/plugins/kenaz/skills/distill/SKILL.md +137 -0
  1579. package/core/plugins/kenaz/skills/extract/SKILL.md +95 -0
  1580. package/core/plugins/kenaz/skills/feature_agent/SKILL.md +303 -0
  1581. package/core/plugins/kenaz/skills/frontend-design/SKILL.md +127 -0
  1582. package/core/plugins/kenaz/skills/frontend-design/reference/color-and-contrast.md +132 -0
  1583. package/core/plugins/kenaz/skills/frontend-design/reference/interaction-design.md +123 -0
  1584. package/core/plugins/kenaz/skills/frontend-design/reference/motion-design.md +99 -0
  1585. package/core/plugins/kenaz/skills/frontend-design/reference/responsive-design.md +114 -0
  1586. package/core/plugins/kenaz/skills/frontend-design/reference/spatial-design.md +100 -0
  1587. package/core/plugins/kenaz/skills/frontend-design/reference/typography.md +131 -0
  1588. package/core/plugins/kenaz/skills/frontend-design/reference/ux-writing.md +107 -0
  1589. package/core/plugins/kenaz/skills/frontend_agent/SKILL.md +327 -0
  1590. package/core/plugins/kenaz/skills/harden/SKILL.md +358 -0
  1591. package/core/plugins/kenaz/skills/incident_response/SKILL.md +315 -0
  1592. package/core/plugins/kenaz/skills/normalize/SKILL.md +67 -0
  1593. package/core/plugins/kenaz/skills/onboard/SKILL.md +243 -0
  1594. package/core/plugins/kenaz/skills/optimize/SKILL.md +269 -0
  1595. package/core/plugins/kenaz/skills/polish/SKILL.md +202 -0
  1596. package/core/plugins/kenaz/skills/product_manager/SKILL.md +1091 -0
  1597. package/core/plugins/kenaz/skills/qa_engineer/SKILL.md +1269 -0
  1598. package/core/plugins/kenaz/skills/quieter/SKILL.md +118 -0
  1599. package/core/plugins/kenaz/skills/security_agent/SKILL.md +312 -0
  1600. package/core/plugins/kenaz/skills/spec_optimizer/SKILL.md +299 -0
  1601. package/core/plugins/kenaz/skills/sre_agent/SKILL.md +1347 -0
  1602. package/core/plugins/kenaz/skills/ui-ux-pro-max/SKILL.md +377 -0
  1603. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1604. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1605. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1606. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1607. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/products.csv +97 -0
  1608. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  1609. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  1610. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1611. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1612. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  1613. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1614. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1615. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1616. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1617. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1618. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1619. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1620. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1621. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1622. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/styles.csv +68 -0
  1623. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1624. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  1625. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1626. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  1627. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/core.py +253 -0
  1628. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  1629. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/search.py +106 -0
  1630. package/core/plugins/kenaz-peer/.claude-plugin/plugin.json +1 -0
  1631. package/core/plugins/kenaz-peer/hooks/hooks.json +1 -0
  1632. package/core/plugins/kenaz-peer/hooks/register.test.ts +62 -0
  1633. package/core/plugins/kenaz-peer/hooks/register.ts +146 -0
  1634. package/core/plugins/kenaz-peer/tsconfig.json +3 -0
  1635. package/lib/cli.js +251 -0
  1636. package/lib/cli.test.js +59 -0
  1637. package/lib/dashboard.js +80 -0
  1638. package/lib/dashboard.test.js +59 -0
  1639. package/package.json +28 -4
  1640. package/vendor/install-kenaz-cli.js +268 -0
  1641. package/README.md +0 -3
@@ -0,0 +1,881 @@
1
+ # Synapse Worker Per Project — Design + PoC (TASK_1984)
2
+
3
+ Status: **ON by default (TASK_1999, 2026-09-22).** Feature flag
4
+ `KENAZ_SYNAPSE_WORKERS` defaults ON everywhere, including installed builds —
5
+ `KENAZ_SYNAPSE_WORKERS=0` opts out. See §10 for the decision, the R1 status
6
+ aggregation and R5 auto-regulation that were the prerequisites, and the
7
+ rollback lever.
8
+
9
+ Base: main @ `c6ad8ec83` (includes TASK_1983 `active_project_paths()`,
10
+ TASK_1958/1960/1980).
11
+
12
+ DDx this card resolves: `rune_d7a57528a7a94868b1b2a9e16931aa2b` (2026-09-21,
13
+ user + Ansuz). Crash-floor evidence: `rune_2c28a731b02c4d2594a6478719f8adbb`
14
+ (3+ live `kuzu::Database` instances in one process → ACCESS_VIOLATION,
15
+ `CRASH_INVESTIGATION_2026-04-18.md`), `rune_e3ddf1b76b8f45bf90a11a84d2674515`
16
+ (cross-project concurrency fails from ~6 concurrent calls; **sequential**
17
+ cross-project access is cheap, 85-112ms/call — concurrency is what breaks,
18
+ not project count).
19
+
20
+ ---
21
+
22
+ ## 0. Problem restated
23
+
24
+ Users run several projects at once (several Ansuz sessions, one per
25
+ project). Today the Dashboard backend is **one process** with
26
+ `MAX_DB_POOL_SIZE=2` KuzuDB instances, one of which is permanently pinned to
27
+ the cortex cross-project graph (`meta_graph` is excluded from eviction
28
+ candidates). That leaves **one** project slot. Switching the Dashboard's
29
+ current project evicts whatever was resident (drain ≤30s + CHECKPOINT), so a
30
+ second live session's Synapse tools go cold or block.
31
+
32
+ The cap cannot be raised: 3+ live `kuzu::Database` instances in **one
33
+ process** crash on Windows regardless of buffer-pool size (confirmed against
34
+ the kuzu 0.11.3 fork). The cap is a **per-process** floor. The only way to
35
+ keep N projects resident and reachable at once is **N processes**.
36
+
37
+ ---
38
+
39
+ ## 1. R1 — Measurements
40
+
41
+ All measured 2026-09-21 on the live dev backend (`kenaz-dashboard.exe`,
42
+ pid 32900, port 18080), one project (KenazAI) already resident, via
43
+ read-only `Get-Process`/`tasklist` and one MCP call. No live session was
44
+ disrupted (Synapse tool calls only; no rebuild, no restart).
45
+
46
+ | Measurement | Value | Method |
47
+ |---|---|---|
48
+ | Backend RSS, 1 project resident, idle | **834,124 KB** (~815 MB) | `tasklist /FI "PID eq 32900"` |
49
+ | Backend RSS immediately after a `synapse_status` call for a **second, non-current** project (esp32) | **923,212 KB** (~902 MB) | same, after `POST /api/mcp` `synapse_status` with `projectPath=.../esp32` |
50
+ | **Delta for opening a second project's KuzuDB pool slot** | **+89,088 KB (~87 MB)** | difference of the above |
51
+ | Call wall time for that cross-project call | 211 ms | `time curl` |
52
+ | ONNX embedding model on disk (arctic-embed-xs, the variant actually deployed — SFR-400M/bge-m3 are unused fallbacks, confirmed no files present for either) | **87 MB** (`model.onnx`) + tokenizer.json | `du -h` on `%LOCALAPPDATA%\Kenaz Dashboard\resources\onnx\arctic-embed-xs\model.onnx` |
53
+ | ONNX runtime DLL | 12 MB (`onnxruntime.dll`) | same dir |
54
+ | Is the embedding model loaded per-process or per-project? | **Per-process.** `INDEX_ENGINE` and `QUERY_ENGINE` (`features/synapse/embedding.rs:103-104`) are `static OnceLock<Result<EmbeddingEngine, String>>` — process-global singletons, keyed by nothing project-specific. One process pays the ONNX load cost exactly once no matter how many projects it touches (today, or in a pool large enough not to evict). | Source read: `resolve_model_dir()` / `create_engine()` take no project argument; the OnceLocks are declared at module scope. |
55
+
56
+ **RSS delta interpretation.** +87 MB for a second project's KuzuDB slot
57
+ almost exactly matches the on-disk ONNX model size — that is very likely
58
+ coincidence, not causation: the embedding engines are process-global
59
+ OnceLocks that were already initialized before this call (this backend had
60
+ already served searches for the resident project), so this call could not
61
+ have triggered a *second* embedding-engine load. The ~87 MB is far more
62
+ likely KuzuDB opening a second buffer pool + catalog + mmap'd pages for the
63
+ esp32 graph database. Both numbers happening to be ~87 MB is the kind of
64
+ coincidence that deserves a second, cleaner measurement before being relied
65
+ on (see "Honest limits" below) — but it does not change the qualitative
66
+ conclusion.
67
+
68
+ **The N-worker RAM math this implies (structural, not measured per-worker —
69
+ no worker existed to measure until this PoC):**
70
+
71
+ - Per-worker fixed cost ≈ ONNX model (~87 MB on disk, ~100-180 MB resident
72
+ once ORT allocates its session arena — two engines, INDEX + QUERY, each
73
+ `create_engine()`'d independently, so treat 180-250 MB as the realistic
74
+ per-worker floor for the embedding half alone) **+** one KuzuDB instance's
75
+ buffer pool for that project (~87 MB, this run's measured delta) **+**
76
+ axum/tokio/reqwest runtime overhead (tens of MB, no WebView — a worker has
77
+ no Tauri window, so it should sit well below the 815 MB measured for the
78
+ full GUI process).
79
+ - **Estimated floor per worker: ~250-400 MB.** This is a structural estimate
80
+ from measured components, not a measured worker RSS (R4 must replace it
81
+ with a real number — the runbook below asks for exactly that).
82
+ - 16 GB machine, ~8 GB realistically available to background work after OS +
83
+ browser + IDE: **~20-30 concurrent workers** before RAM pressure, i.e. more
84
+ than any single user plausibly has active projects — but each worker
85
+ **duplicates the ONNX cost that a single process pays once.** N=5 active
86
+ projects costs ~5× the embedding RAM that one resident process pays today.
87
+ - 32 GB machine: proportionally higher, same duplication tax.
88
+ - **This duplication is the central trade-off for R5**, not raw worker
89
+ count: worker-per-project trades a hard crash floor (unfixable in-process)
90
+ for a RAM tax that scales with concurrently-active project count, paid
91
+ once per worker regardless of how many tools that worker serves.
92
+
93
+ **Honest limits of R1.** This is one measurement on one machine with one
94
+ warm backend; it is a lower bound / plausibility check, not a
95
+ production capacity model. The 87 MB/87 MB coincidence above should be
96
+ treated with suspicion until R4 measures an actual standalone worker's RSS
97
+ after `/health` goes ready (with and without a prior search, to separate
98
+ ORT init cost from KuzuDB open cost). No native-exception or crash was
99
+ observed during this measurement.
100
+
101
+ ---
102
+
103
+ ## 2. R2 — Design
104
+
105
+ ### 2.1 Process model
106
+
107
+ | Runs in **main backend** (Tauri process, port 18080) | Runs in **a worker** (one per active project, `--synapse-worker`) |
108
+ |---|---|
109
+ | cortex (cross-project `meta_graph`, `global_memory`) | that project's KuzuDB graph + FTS5 + embedding index |
110
+ | Alaya (built on cortex) | that project's heat/pulse/co-change caches (already per-project files under `<project>/.synapse/`) |
111
+ | hippocampus for the **current** project only (see 2.6 — no per-connection session identity exists yet, so "current" is still the Dashboard's global selection for tools that omit `projectPath`) | that project's inscribe spool (`memory/inscribe.rs`, already per-project dir — TASK_1959) |
112
+ | the forwarder (routing table + on-demand spawn) | that project's `IS_INDEXING` / `index_jobs` / `CONNECTION_GATE` state (all become per-**worker**-process automatically — no code change needed, they are already process statics; a worker just doesn't share them with the main process or other workers) |
113
+ | the axum router's non-synapse routes (agents, scheduler, tasks, git status, dispatch-log, ...) — unaffected, always local | its own embedding OnceLocks (ONNX loaded once per worker — the R1 duplication cost) |
114
+ | the Job Object that owns every worker's lifecycle | nothing cross-project; a worker never talks to another worker or to cortex |
115
+
116
+ The worker binary is **the same `kenaz-dashboard.exe`**, launched with
117
+ `--synapse-worker --project <path> --port <n>` (see 2.7 — deliberately not
118
+ the existing `bin/synapse-headless.rs`, which is a dev-only cargo bin target
119
+ not present in an installed bundle). A worker starts no Tauri `Builder`, no
120
+ WebView, no plugin manager, no scheduler — just the existing axum
121
+ `HttpServer` bound to `127.0.0.1:<port>` with a fresh `HttpAppState`, i.e.
122
+ exactly the subset of routes `routes::build_api_router` already builds
123
+ (`/api/mcp`, `/api/synapse/*`, `/api/synapse/temporal/*`, `/health`), unused
124
+ routes present but inert (no scheduler ever runs since nothing calls it).
125
+
126
+ ### 2.2 Forwarding layer
127
+
128
+ Hook point: `mcp.rs::execute_tool_inner`, immediately before the tool-name
129
+ `match`. Every MCP `tools/call` already carries (or, per TASK_1983, is
130
+ expected to carry) an explicit `projectPath` for project-scoped tools —
131
+ `is_project_scoped_tool()` already defines that prefix set
132
+ (`synapse_*` / `hippocampus_*` / `cortex_*`).
133
+
134
+ Rule: **forward iff** (a) `KENAZ_SYNAPSE_WORKERS=1`, (b) the tool is in the
135
+ forwardable set, (c) `projectPath` is present and non-empty, and (d) the
136
+ resolved project is **not** the Dashboard's current project. The current
137
+ project always stays local — no loopback hop for the common case, and it is
138
+ also the one case the main process is guaranteed to already have a live
139
+ pool slot for.
140
+
141
+ **Resolution failure: serve locally, never forward (TASK_1986 R2).** The
142
+ decision above is factored into a pure `forward_decision(flag_on,
143
+ tool_forwardable, current, requested) -> ServeLocally(reason) | Forward` in
144
+ `synapse_worker.rs`. When the Dashboard's current project cannot be resolved
145
+ (`current: None` — e.g. `projects.json` missing/unparseable), the decision
146
+ is always `ServeLocally("current_unresolved")`, never `Forward` — a forward
147
+ target cannot be validated as "not the current project" if there is no
148
+ resolved current project to compare against, so the fail-safe direction is
149
+ local execution, not a blind hop to whatever worker the request asked for.
150
+ Logged once per process at `warn` level under the `synapse_worker` tracing
151
+ target (not per call — a broken `projects.json` must not spam the log).
152
+
153
+ At backend startup (before the reaper is armed), the resolved current
154
+ project is logged once under the `synapse_worker` tracing target:
155
+ `tracing::info!(target: "synapse_worker", workers_enabled, current_project =
156
+ %path_or_"<unresolved>", "synapse worker forwarder configuration")` — or,
157
+ when `KENAZ_SYNAPSE_WORKERS` is not `1`, a single line noting the forwarder
158
+ is disabled (no project resolution attempted in that case).
159
+
160
+ The REST surface (`/api/synapse/*`, used directly by the frontend, not
161
+ through MCP) needs the same treatment at its own resolution point — out of
162
+ scope for this PoC (R3 only forwards MCP `tools/call`), called out
163
+ explicitly as a gap below (2.8).
164
+
165
+ **Error semantics:**
166
+
167
+ - Worker not yet running → spawned on demand; the calling request blocks on
168
+ the HTTP readiness probe (bounded — see 2.3) rather than failing fast.
169
+ First-touch latency = spawn-to-ready time (R4 measures this).
170
+ - Worker spawn fails (can't find exe, can't write log dir, OS refuses
171
+ `Command::spawn`) → tool call returns `McpToolResult::error(...)`
172
+ immediately, with the underlying OS error in the message. No silent
173
+ fallback to local execution — a silent fallback would service the request
174
+ against the WRONG process's — actually the current process has no data for
175
+ a project it never opened, so this would just surface as a different
176
+ error downstream; failing at the forward boundary keeps the error close to
177
+ its cause.
178
+ - Worker crashes mid-flight (native exception, panic) → the forwarder's
179
+ `reqwest` call returns a connection error, surfaced as
180
+ `McpToolResult::error`. The PoC does **not** retry or respawn
181
+ automatically (R5 gap — production needs the crash-restart-with-backoff
182
+ from the requirements, not implemented here).
183
+ - Timeout: the PoC forward call uses a 120s client timeout (headroom for a
184
+ first-touch spawn + a slow `synapse_index full`); the readiness probe
185
+ itself uses a ~15s budget (50 × 300ms) that R4 should replace with a
186
+ measured number rather than this guess.
187
+
188
+ ### 2.3 Worker lifecycle
189
+
190
+ - **Spawn trigger (PoC):** first forwarded call for a project with no
191
+ tracked worker. **Production** should instead spawn from
192
+ `active_project_paths()` (TASK_1983 — the live-session-lease set) on a
193
+ timer/watcher, so a worker is warm *before* the first tool call needs it,
194
+ not on the request's own critical path. The PoC's on-demand spawn was
195
+ chosen because it needs no background task and is enough to prove R4's
196
+ numbers; the production version trades a warm-start guarantee for a
197
+ standing idle-RAM cost per active session even if that session's Synapse
198
+ tools are never called — a real trade-off, not a free upgrade.
199
+ - **Readiness:** HTTP probe against the worker's own `/health` route
200
+ (TASK_1961 lesson — never a bare TCP-connect: the listener binds long
201
+ before axum, embedding init, or the first KuzuDB open are actually able to
202
+ answer, so a TCP-only probe would report "ready" while the first real
203
+ request still queues behind slow init).
204
+ - **Idle reaper:** not implemented in the PoC (`WORKERS` map only grows).
205
+ Production needs one — same shape as the pool's own missing "nothing
206
+ tracks last_used, no idle release" gap (rune on hippocampus concurrency,
207
+ 2026-09-04) that TASK_1925 addressed for in-process pooling; a
208
+ worker-level reaper is the direct analogue, keyed off last-forwarded-call
209
+ time instead of `Arc::strong_count`.
210
+ - **Crash restart with backoff:** not implemented in the PoC. Production:
211
+ detect via failed forward + a stale/dead PID in the `WORKERS` map, restart
212
+ with exponential backoff, cap retries, surface the give-up state through
213
+ `synapse_status` per-project (2.5).
214
+ - **Job Object cleanup:** implemented — the PoC calls the *existing* global
215
+ `job_object::assign_child_pid(pid)` (already initialized at Tauri setup
216
+ for the pty-server/nextjs-server sidecars — `lib.rs:1770`), so every
217
+ worker dies with the Dashboard even on a hard crash
218
+ (`JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE`), same precedent as those two
219
+ sidecars. A **scoped** Job Object per worker (`job_object::ScopedJobObject`,
220
+ already exists for Agent Hub launches) would let production kill one
221
+ wedged worker without taking down the others — worth adopting over the
222
+ PoC's use of the single global job if per-worker force-kill becomes a
223
+ requirement.
224
+
225
+ ### 2.4 Port allocation and auth
226
+
227
+ - **PoC:** a process-global incrementing counter starting at 18100.
228
+ Acceptable for one Dashboard instance in a dev session; **not** acceptable
229
+ for production — no collision check against a port a user's other
230
+ service might already hold, no persistence across restarts (a worker
231
+ registry rebuilt from nothing on every Dashboard boot, needing every
232
+ worker respawned).
233
+ - **Production recommendation:** bind with port `0` (OS-assigned ephemeral)
234
+ and have the worker report its actual bound port back to the parent
235
+ (stdout line, matching the `SERVER_READY port=N` pattern
236
+ `bin/synapse-headless.rs` already uses) rather than dictating a port
237
+ up front — removes the collision class entirely.
238
+ - **Auth:** workers bind `127.0.0.1` only (the PoC explicitly overrides the
239
+ shared `HttpServerConfig` default of `0.0.0.0`, which exists for LAN
240
+ mobile access to the *main* backend — TASK_088 — and is wrong for a
241
+ worker). The existing `require_auth_with_state` middleware already exempts
242
+ loopback, non-tunnel requests (`auth.rs:241`, `is_loopback`), so the
243
+ forwarder's plain loopback POST needs no token. This reuses the main
244
+ backend's existing trust model as-is: **any local process can reach a
245
+ worker's port**, same trust boundary the main backend already has. That is
246
+ an explicit, inherited trust decision, not a new hole — flagging it here
247
+ so it is reviewed as a decision rather than discovered later. If it needs
248
+ tightening, the tunnel-bypass-closing mechanism already in `auth.rs`
249
+ (`x-kenaz-source: tunnel` requires a real token even from loopback) is the
250
+ template to extend to worker-to-worker traffic if that ever exists (it
251
+ does not in this design — only main→worker, never worker→worker).
252
+
253
+ ### 2.5 Status aggregation
254
+
255
+ - **PoC:** none. `synapse_status` called with a non-current `projectPath`
256
+ is transparently forwarded and returns that worker's own
257
+ process-local status — indistinguishable from a local call except for
258
+ added latency, which is the intended PoC behavior (correctness first).
259
+ - **Production:** the Dashboard's project switcher needs worker state
260
+ (running / starting / dead / never-spawned) surfaced *without* a live
261
+ tool call — i.e. a lightweight main-process registry endpoint
262
+ (`GET /api/synapse/workers` — new, not in this PoC) reporting
263
+ `{project_path, port, pid, state, last_forward_at}` per tracked worker,
264
+ read from the same `WORKERS` map this PoC introduces. `synapse_status` for
265
+ the *current* project should also learn to report "N other projects have
266
+ live workers" so a user can see the whole resident set, not just the one
267
+ they're looking at.
268
+
269
+ ### 2.6 What stays process-global vs goes per-worker
270
+
271
+ | Global today | After this design |
272
+ |---|---|
273
+ | `CONNECTION_GATE` / `MAX_TOTAL_CONNECTIONS=6` (`connection/mod.rs:99,265`) | Per-**worker** automatically (each worker is its own process with its own statics) — main backend's gate now only bounds *its own* current-project + cortex traffic, not the whole fleet. |
274
+ | `IS_INDEXING` / `is_indexing_project()` (`connection/mod.rs:241,432`) | Per-worker automatically. A worker indexing its one project cannot block another project's connections the way today's single shared flag can when it inadvertently means "the whole backend is busy." |
275
+ | `index_jobs` registry (`mcp_tools/synapse/index_jobs.rs`) | Per-worker automatically — a job ID is only meaningful within the process that issued it; the forwarder must route a `synapse_index job_id=...` status poll to the *same* worker that started the job (routing by `projectPath`, not by job ID, already achieves this as long as the caller keeps passing `projectPath`). |
276
+ | Inscribe spool (`memory/inscribe.rs`, TASK_1959) | Already per-project directory on disk — no change; a worker restarting for the same project still finds and drains its own spool. |
277
+ | Heat / pulse / co-change caches | Already per-project files under `<project>/.synapse/` — no change. |
278
+ | Cortex `meta_graph` / `global_memory` | **Stays in the main process.** This is the one thing that is inherently cross-project by design (it exists specifically to correlate across projects) — moving it to a worker would defeat its purpose. It keeps its pinned pool slot in the main process exactly as today. |
279
+ | `~/.kenaz/projects.json` registry, `CURRENT_PROJECT_OVERRIDE` | Stays global/shared, read by both the main process and (indirectly, via explicit `projectPath` args) workers — no worker ever needs to know the *current* project, only its own. |
280
+
281
+ ### 2.7 Why the same binary, not `bin/synapse-headless.rs`
282
+
283
+ `bin/synapse-headless.rs` (TASK_1589) already does ~90% of what a worker
284
+ needs — standalone axum server, ONNX preload, no Tauri — and was the first
285
+ thing this design checked for reuse. It is a **separate Cargo `[[bin]]`
286
+ target**, built only when something explicitly asks for it; it is not part
287
+ of the Tauri bundle an end user installs (NSIS ships `kenaz-dashboard.exe`
288
+ plus its sidecars, not a second full Rust binary). A shipped Dashboard must
289
+ be able to spawn its own workers from the one executable it *is*, so the
290
+ worker mode lives as a CLI-flag branch in `main.rs`/`infrastructure` instead.
291
+ `synapse-headless` remains valuable as a dev/CI tool for indexing a repo
292
+ standalone (its own use case, unrelated to this design) and was not
293
+ modified.
294
+
295
+ ### 2.8 Known gaps / explicitly out of scope for this PoC
296
+
297
+ - REST `/api/synapse/*` calls (used directly by the frontend) are not
298
+ forwarded — only MCP `tools/call`. A production rollout needs the same
299
+ routing rule applied at that boundary (likely by extracting the
300
+ `maybe_forward`-equivalent check into a small tower middleware shared by
301
+ both entry points, rather than duplicating it).
302
+ - No per-connection MCP session identity exists (confirmed unavailable by
303
+ TASK_1983's investigation — `get_session_id()` is one process-lifetime
304
+ UUID, not per-connection). A tool call that omits `projectPath` still
305
+ falls back to the Dashboard's single global "current project," exactly as
306
+ today — this design does not change that resolution gap, it only adds
307
+ routing for calls that *do* pass `projectPath` explicitly.
308
+ - Idle reaper, crash-restart-with-backoff, and worker-state status
309
+ aggregation (2.3, 2.5) are designed but not implemented — R3 scope was
310
+ "enough for R4," not production-complete.
311
+
312
+ ### 2.9 Rollback story
313
+
314
+ - `KENAZ_SYNAPSE_WORKERS` unset (default): `maybe_forward` returns `None`
315
+ unconditionally on its first line — zero code path change, byte-identical
316
+ behavior to pre-TASK_1984 main.
317
+ - `--synapse-worker` is a new, additive CLI branch checked before any
318
+ existing startup code runs; omitting the flag (every existing launch path)
319
+ leaves `main()` unchanged from the very next line onward.
320
+ - No schema, config file, or on-disk format changed. Turning the flag back
321
+ off after a rollout requires no cleanup beyond killing any live worker
322
+ processes (the Job Object handles that automatically on the next Dashboard
323
+ restart even if a user forgets).
324
+
325
+ ---
326
+
327
+ ## 3. R3 — PoC (what actually ships in this branch)
328
+
329
+ New file `dashboard/src-tauri/src/infrastructure/synapse_worker.rs`:
330
+
331
+ - `try_run_worker_mode()` — parses `--synapse-worker --project <path> --port
332
+ <n>` from argv; if present, does the same ONNX preload/eager-init sequence
333
+ as `bin/synapse-headless.rs`, forces `KENAZ_HTTP_HOST=127.0.0.1` +
334
+ `KENAZ_HTTP_PORT=<n>`, starts `HttpServer::from_env()` with a fresh
335
+ `HttpAppState::new()`, prints a `READY` line, waits for Ctrl-C, exits.
336
+ Called from `main.rs` as the very first line of `fn main()`, before the
337
+ release-mode stderr redirect and before `kenaz_dashboard_lib::run()`
338
+ (Tauri) — a worker never touches the GUI stack.
339
+ - `maybe_forward(name, args)` — the forwarder described in 2.2-2.4:
340
+ allowlist check, current-project short-circuit, on-demand spawn via
341
+ `ensure_worker()` (Job-Object-assigned, logs to
342
+ `<project>/.synapse/worker_<port>.log`), HTTP readiness probe
343
+ (`wait_for_worker_ready`), then a plain JSON-RPC `tools/call` proxy over
344
+ `reqwest` to the worker's `/api/mcp`.
345
+ - Forwardable tool set for this PoC: `synapse_status`, `synapse_recall`,
346
+ `synapse_search`, `synapse_inscribe`, `synapse_index`.
347
+
348
+ Touched (minimal, both additive):
349
+
350
+ - `dashboard/src-tauri/src/main.rs` — one early-return guard calling
351
+ `try_run_worker_mode()`.
352
+ - `dashboard/src-tauri/src/infrastructure/http_server/routes/mcp.rs` — one
353
+ `maybe_forward` call inserted immediately before the tool-name `match` in
354
+ `execute_tool_inner`.
355
+ - `dashboard/src-tauri/src/infrastructure/mod.rs` — `pub mod synapse_worker;`.
356
+
357
+ Not touched: `connection/`, `lib.rs` (beyond nothing — no lib.rs change was
358
+ needed once the flag lived in `main.rs`), any production default, any
359
+ existing test.
360
+
361
+ ---
362
+
363
+ ## 4. R4 — Experiment runbook (Ansuz runs this after merge)
364
+
365
+ Goal: with the flag OFF vs ON, run two projects concurrently and compare
366
+ failure/eviction counts, per-project latency, worker RSS, spawn-to-ready
367
+ time, and backend.log for native exceptions.
368
+
369
+ An existing probe already does almost exactly this shape —
370
+ `dev/scripts/probe/pool-multi-project.js` (built for TASK_1925) round-robins
371
+ concurrent calls across N project paths against `/api/mcp` and classifies
372
+ failures by message substring, reporting p50/p95/max latency. Reuse it
373
+ rather than writing a new one.
374
+
375
+ ### 4.1 Baseline (flag OFF — today's behavior, for comparison)
376
+
377
+ ```bash
378
+ # Ensure KENAZ_SYNAPSE_WORKERS is NOT set in the backend's environment.
379
+ node dev/scripts/probe/pool-multi-project.js \
380
+ --base-url http://127.0.0.1:18080 \
381
+ --concurrency 12 --waves 3 \
382
+ --projects "C:/Users/user/Documents/GitHub/KenazAI,C:/Users/user/Documents/GitHub/esp32"
383
+ ```
384
+
385
+ Expected observables (from prior measurement, rune on 2026-07-25 pool
386
+ probe): eviction/"connection limit exceeded"/"read pool exhausted" errors
387
+ appearing above ~6 concurrent, `/api/rust/health` still answering
388
+ throughout (backend does not crash — the caps exist precisely to prevent
389
+ that), no native exceptions in backend.log.
390
+
391
+ ### 4.2 Flag ON — two workers concurrent
392
+
393
+ ```bash
394
+ # Set once, before the Dashboard process starts (env var read once, not hot-reloadable):
395
+ set KENAZ_SYNAPSE_WORKERS=1
396
+ # (start/restart the Dashboard backend)
397
+
398
+ node dev/scripts/probe/pool-multi-project.js \
399
+ --base-url http://127.0.0.1:18080 \
400
+ --concurrency 12 --waves 3 \
401
+ --projects "C:/Users/user/Documents/GitHub/KenazAI,C:/Users/user/Documents/GitHub/esp32"
402
+ ```
403
+
404
+ `KenazAI` is (in this environment) the Dashboard's current project, so its
405
+ calls stay local; `esp32` calls are forwarded and spawn a worker on first
406
+ touch.
407
+
408
+ Expected observables, and how to get each number:
409
+
410
+ - **Spawn + forward evidence**: `grep -c "\[synapse-worker\]" backend.log`
411
+ should show a `starting pid=...` / `READY pid=...` pair for the esp32
412
+ worker, and `maybe_forward` doesn't log by itself in the PoC — add a
413
+ temporary `tracing::info!` there if the runbook needs an explicit forward
414
+ marker beyond inferring it from the worker's own request log (out of
415
+ scope to add permanently, but cheap for one verification run).
416
+ - **Worker RSS**: `tasklist /FI "IMAGENAME eq kenaz-dashboard.exe"` will now
417
+ list 2+ processes — the main backend and each worker — by PID; the
418
+ worker's own log line prints its `pid=` for correlation. Compare against
419
+ R1's structural estimate (~250-400 MB floor).
420
+ - **Spawn-to-ready time**: timestamp the first esp32-scoped probe request
421
+ vs. the worker's `READY` log line (or instrument `ensure_worker` with an
422
+ `Instant::now()` around `wait_for_worker_ready` for this run only).
423
+ - **Failures/evictions**: compare `pool-multi-project.js`'s failure
424
+ classification counts against the 4.1 baseline — under the flag,
425
+ cross-project failures should trend toward zero (each project now has its
426
+ own pool, not a shared 2-slot one), at the cost of first-touch spawn
427
+ latency the baseline never pays.
428
+ - **Per-project latency**: the probe's own p50/p95/max, split by which
429
+ project each call targeted (its `--projects` round-robin already tags
430
+ results per project internally — check the script's report format).
431
+ - **Native exceptions**: `grep -i "0xc0000005\|ACCESS_VIOLATION\|0xe06d7363"
432
+ backend.log` across both runs — should be absent in both; a hit under the
433
+ flag would mean the worker boundary did not actually eliminate the
434
+ crash-floor risk (it should, since it eliminates concurrent
435
+ `kuzu::Database` instances in one process by construction, but this is
436
+ exactly the kind of claim that needs a negative-result check, not just an
437
+ assumption).
438
+
439
+ ### 4.3 Scale check (optional, if time allows)
440
+
441
+ Repeat 4.2 with a third and fourth project added to `--projects` to see
442
+ where the "practical concurrent-worker ceiling" from R1's estimate actually
443
+ falls on this machine — `tasklist` RSS sum vs. available RAM is the direct
444
+ measurement R1 could not take without workers existing yet.
445
+
446
+ ---
447
+
448
+ ## 5. R5 — Decision record
449
+
450
+ **Go/no-go criteria (numbers, checked against R4's actual results once
451
+ run):**
452
+
453
+ - GO if: cross-project failure/eviction rate under the flag drops
454
+ materially versus the 4.1 baseline (target: nonzero improvement is not
455
+ enough — it should approach zero for the failure classes that are purely
456
+ about the shared 2-slot pool, since worker-per-project removes that
457
+ sharing by construction) AND no native exception appears in either arm
458
+ AND measured per-worker RSS stays within the R1 structural estimate
459
+ (~250-400 MB) — a number far outside that range would mean the design's
460
+ RAM math is wrong and needs redoing before any rollout sizing advice is
461
+ trustworthy AND spawn-to-ready time is bounded well enough that a user
462
+ opening a second project does not perceive multi-second hangs on first
463
+ Synapse tool use (no fixed threshold yet — R4 measures the actual number
464
+ first).
465
+ - NO-GO if: R4 finds worker RSS far above the structural estimate (e.g. if
466
+ ONNX sessions turn out to share less than assumed, or KuzuDB's buffer pool
467
+ is larger under real project sizes than esp32's), or spawn latency makes
468
+ first-touch unacceptable, or a native exception appears under the flag
469
+ (would mean some cross-process assumption in this design is wrong, not
470
+ just a tuning problem).
471
+ - **Bounded alternative if NO-GO**: a worker **pool of size K** (not
472
+ unbounded N) with LRU-by-lease-liveness eviction — same worker-process
473
+ mechanism, but capped at K concurrent workers (K chosen from R4's
474
+ measured per-worker RSS against a target machine's available RAM), evicting
475
+ the worker whose `active_project_paths()` lease is oldest/dead first. This
476
+ keeps the crash-floor fix (still N *separate* processes, so the
477
+ 3-Database-instances-in-one-process crash is still structurally
478
+ impossible) while bounding total RAM cost, at the price of the same
479
+ "still only K projects fully resident" limitation this design set out to
480
+ remove — just with K much larger than today's *effective* 1.
481
+
482
+ This PoC did not reach a final go/no-go — that requires R4's actual
483
+ numbers, which this runbook hands to Ansuz to produce. The design above
484
+ should not be treated as validated until those numbers come back within the
485
+ bounds this section sets.
486
+
487
+ ## 6. Post-merge smoke (Ansuz, 2026-09-21, verify-worktree debug build 8f3296bd5)
488
+
489
+ Standalone worker mode works without the forwarder: `kenaz-dashboard.exe --synapse-worker --project <throwaway git repo> --port 18090` printed `[synapse-worker] READY` and answered `POST /api/mcp synapse_status` within **2 s** of spawn. Measured idle footprint of that worker (empty project, no embedding computed yet): **RSS 40 MB, private 10 MB** (PowerShell Get-Process). That is far below the structural 250-400 MB floor estimated in §1 because the KuzuDB buffer pool and the ONNX engine are both loaded lazily on first use; the estimate applies to a worker that has actually indexed and embedded. Consequence for the capacity model: resident-but-idle workers are cheap, so the ceiling is set by concurrently *active* workers, not by how many projects have a live lease. The R4 experiment (flag ON, two projects concurrent through the forwarder) still requires restarting the Dashboard backend with `KENAZ_SYNAPSE_WORKERS=1`; it was not run in this session because the live dev backend belongs to the user.
490
+
491
+ ## 7. R4 results (Ansuz, 2026-09-21, live dev backend restarted with `KENAZ_SYNAPSE_WORKERS=1`)
492
+
493
+ Setup: `npm run tauri:dev` started with the flag in its environment (debug
494
+ build), Dashboard current project = KenazAI, second project = esp32 (real
495
+ indexed `.synapse`). Probe: `dev/scripts/probe/pool-multi-project.js
496
+ --concurrency 12 --waves 3 --projects KenazAI,esp32`.
497
+
498
+ ### 7.1 The runbook's probe never reached the forwarder
499
+
500
+ §4 told the runner to reuse the TASK_1925 probe as-is. Its two tool shapes
501
+ (`hippocampus_episode_recall`, `synapse_cypher`) are not in
502
+ `FORWARDABLE_TOOLS`, so the first flag-ON run served all 36 calls locally
503
+ and produced zero worker evidence while reporting 0 failures — a probe that
504
+ cannot fail is not a probe. The script now has `--tool-set worker`
505
+ (`synapse_status` + `synapse_recall`, both forwardable) and a per-project
506
+ split in its JSON summary. Every number below is from that tool set.
507
+
508
+ ### 7.2 Three defects found on the first real forwarded burst
509
+
510
+ | # | Defect | Evidence | Fix |
511
+ |---|--------|----------|-----|
512
+ | 1 | **Spawn race**: `ensure_worker` checked the registry, spawned, then inserted — no lock across the spawn. | 12 concurrent esp32 calls → the main process spawned **6** workers (ports 18100–18105). | Registry now holds one `tokio::sync::OnceCell` per project; concurrent first-touch callers share it, `get_or_try_init` runs the spawn once, a failed spawn leaves the cell empty for retry. Test: 12 tasks → 1 spawn, all see the same port. |
513
+ | 2 | **Recursive workers**: a worker inherits `KENAZ_SYNAPSE_WORKERS=1`, and the Dashboard's *current* project is not its project, so every forwarded call re-entered `maybe_forward` inside the worker and spawned a grandchild worker. | Process tree: each of the 6 workers had 1–3 children, **14** `--synapse-worker` processes total; grandchildren logged `assign_child_pid failed: Job Object not initialized` → orphans that survive Dashboard exit. | `try_run_worker_mode` sets a process-wide `IS_WORKER` flag (checked before the env var) and removes the env var. Test: flag set + env set → `maybe_forward` returns `None`. |
514
+ | 3 | **Shared port**: `server.rs` binds with `SO_REUSEADDR`; on Windows that lets a second process bind + listen on an already-listening port. | `netstat`: **7** listeners on 127.0.0.1:18100; every esp32 call failed with `forward to port 18100 failed: error sending request` because the connection landed on a recursing worker. | Worker sets `KENAZ_HTTP_EXCLUSIVE_BIND=1`; `start_with_state` then uses `SO_EXCLUSIVEADDRUSE` (raw `setsockopt`, the SDK defines it as a macro so windows-sys has no constant) instead of `SO_REUSEADDR`, so a clash fails at bind time. Main backend keeps `SO_REUSEADDR` (restart-after-TIME_WAIT). |
515
+
516
+ Per-project result of that first burst: KenazAI (local) 18/18 OK, esp32
517
+ (forwarded) **0/18** OK, wave-1 esp32 mean 5.1 s (ready-wait budget burned
518
+ on a recursing child).
519
+
520
+ ### 7.3 Numbers after the fixes (same probe, backend rebuilt by the dev watcher)
521
+
522
+ | Wave | Burst wall | KenazAI (local) mean / max | esp32 (forwarded) mean / max | Failures |
523
+ |------|-----------:|---------------------------:|-----------------------------:|---------:|
524
+ | 1 (first touch, spawn included) | 896 ms | 320 / 440 ms | **823 / 894 ms** | 0 / 12 |
525
+ | 2 | 437 ms | 305 / 437 ms | 106 / 132 ms | 0 / 12 |
526
+ | 3 | 416 ms | 299 / 415 ms | 127 / 187 ms | 0 / 12 |
527
+
528
+ - **Workers spawned**: exactly 1 (pid 24236, port 18100, child of the
529
+ backend, inside its Job Object). `[synapse-worker] starting` / `READY`
530
+ pair in `esp32/.synapse/worker_18100.log`.
531
+ - **Spawn-to-ready**: < 0.9 s wall including the first forwarded
532
+ `synapse_recall` (wave-1 esp32 max), debug build. The §4 ready budget of
533
+ 15 s is generous by >15×; leave it (a cold release-build machine under
534
+ antivirus scan is the real worst case).
535
+ - **Worker RSS after serving 9 recalls + 9 status calls**: **130 MB**
536
+ (Get-CimInstance WorkingSetSize) — below the §1 structural estimate of
537
+ 250–400 MB because esp32 is small; the estimate stays the planning
538
+ number for a KenazAI-sized project.
539
+ - **Native exceptions** (`0xc0000005|ACCESS_VIOLATION|0xe06d7363`) in
540
+ backend.log across both runs: **0**. `/api/rust/health` p95 ≤ 12 ms
541
+ throughout.
542
+ - **Forward hop cost**: esp32 steady-state mean ~110–130 ms vs local
543
+ KenazAI ~300 ms — not comparable (different projects, different graph
544
+ sizes); the hop itself is loopback + JSON re-encode, well under the
545
+ variance between projects.
546
+
547
+ ### 7.4 What R4 did NOT establish
548
+
549
+ - **No flag-OFF baseline with the `worker` tool set.** The same burst
550
+ with the flag off would route esp32 through the shared 2-slot pool. It
551
+ needs the backend restarted without the flag; not done this round. The
552
+ first flag-ON run with the `pool` tool set (everything local) showed
553
+ 0/36 failures too, so at concurrency 12 × 2 projects the single-process
554
+ pool does **not** currently fail — TASK_1960/1980 already cut pool demand.
555
+ The failure-rate criterion in §5 is therefore not the discriminating
556
+ number; the crash floor (3 `kuzu::Database` in one process, TASK_1925)
557
+ is structural and does not show up in a probe that only opens two.
558
+ - **Release build not measured** (RSS, spawn latency, `CREATE_NO_WINDOW`).
559
+ - **No worker lifecycle**: nothing reaps a worker when its project's lease
560
+ dies; the worker survives until the Dashboard exits (Job Object).
561
+
562
+ ### 7.5 Interim R5 reading
563
+
564
+ Within the bounds §5 set: no native exception under the flag, per-worker
565
+ RSS below the structural estimate, first-touch latency sub-second. The
566
+ three defects were all in the PoC's process plumbing, not in the design's
567
+ premise, and each now has a regression test on the exact path that failed.
568
+ **Not yet GO**: the flag stays off by default until (a) a flag-OFF control
569
+ with the same tool set is recorded, (b) a release-build run, and (c) a
570
+ worker reaper tied to `active_projects` leases exists (else every project a
571
+ user ever touched in a session keeps a process). Those are TASK_1985-scale
572
+ follow-ups, not blockers for merging the fixes.
573
+
574
+ ### 7.6 The two missing arms (Ansuz, 2026-09-21, later the same session)
575
+
576
+ Same probe (`--tool-set worker --concurrency 12 --waves 3`, KenazAI + esp32).
577
+
578
+ **Release build, flag ON** (`kenaz-dashboard.exe` 0.2.234 started standalone with `KENAZ_SYNAPSE_WORKERS=1`, dev stack stopped):
579
+
580
+ | Wave | Burst wall | KenazAI mean / max | esp32 mean / max | Failures |
581
+ |------|-----------:|-------------------:|-----------------:|---------:|
582
+ | 1 (first touch) | 1010 ms | 994 / 1009 ms | 852 / 896 ms | 0 / 12 |
583
+ | 2 | 477 ms | 345 / 477 ms | 136 / 192 ms | 0 / 12 |
584
+ | 3 | 400 ms | 294 / 400 ms | 115 / 161 ms | 0 / 12 |
585
+
586
+ - Worker RSS after 3 waves: esp32 **114 MB**, KenazAI **156 MB**; main process 221 MB. Spawn-to-ready ≈ 0.9–1.0 s (wave-1 max). No `conhost` child under either worker — `CREATE_NO_WINDOW` holds in the `windows_subsystem="windows"` binary.
587
+ - **Observation, not a defect**: the release process spawned a worker for KenazAI too (port 18101). Standalone, its `get_current_project()` did not resolve to KenazAI (the release app's own settings, not the dev tree's), so *both* projects counted as non-current and were forwarded. Under the flag, "current project stays local" depends on that resolution being right at first touch; a production rollout should log the resolved current project once at startup so this is visible.
588
+
589
+ **Dev build, flag OFF** (control — the shared 2-slot pool serves both projects in one process):
590
+
591
+ | Wave | Burst wall | KenazAI mean / max | esp32 mean / max | Failures |
592
+ |------|-----------:|-------------------:|-----------------:|---------:|
593
+ | 1 | 517 ms | 327 / 462 ms | 327 / 516 ms | 0 / 12 |
594
+ | 2 | 423 ms | 312 / 423 ms | 144 / 262 ms | 0 / 12 |
595
+ | 3 | 446 ms | 313 / 432 ms | 318 / 446 ms | 0 / 12 |
596
+
597
+ - 0 failures, 0 native exceptions, no eviction/limit errors. At 12 concurrent × 2 projects the single-process pool no longer fails — the 2026-07-25 expectation in §4.1 predates TASK_1960/1980's demand cut.
598
+
599
+ **Reading.** The failure-rate criterion of §5 cannot discriminate the arms at this load: both are 36/36. What the flag buys is (a) the structural crash floor — a third concurrently-open project cannot put three `kuzu::Database` instances in one process — and (b) per-project isolation of latency: esp32 steady-state is ~115–136 ms via its worker vs 144–327 ms when sharing the pool with KenazAI's heavier calls. What it costs is ~110–160 MB RSS per resident worker plus ~1 s on first touch. Remaining gate before default-ON: worker lifecycle (reap on lease death / idle), see §8.
600
+
601
+ ## 8. Worker lifecycle — reaper (Ansuz, 2026-09-21, follow-up (c) of §7.5)
602
+
603
+ `synapse_worker.rs` §3. Armed only in the main backend when
604
+ `KENAZ_SYNAPSE_WORKERS=1` (workers never reap; flag off ⇒ no task at all).
605
+ Every `KENAZ_SYNAPSE_WORKER_REAP_TICK_SECS` (default 60) it reads
606
+ `active_projects::active_project_paths()` (the TASK_1983 lease set) and
607
+ kills — `TerminateProcess` on Windows, `SIGTERM` on Unix — every registered
608
+ worker that satisfies all three of:
609
+
610
+ 1. no live lease names its project (same `normalize_key` as the registry);
611
+ 2. idle for at least `KENAZ_SYNAPSE_WORKER_IDLE_SECS` (default 300) since
612
+ its last forwarded call completed;
613
+ 3. zero forwarded calls in flight (an RAII guard in `maybe_forward` holds
614
+ the count across the whole HTTP exchange, so a worker mid-answer is
615
+ never killed).
616
+
617
+ The registry entry is removed under the lock *before* the kill, so a call
618
+ arriving during the kill re-spawns cleanly through the §7.2 once-cell path.
619
+ Killing only an idle worker leaves its KuzuDB WAL quiescent — the same
620
+ state a Dashboard exit puts it in via KILL_ON_JOB_CLOSE.
621
+
622
+ Tests (`t1984_dedupe_tests`, 5/5): selection picks only the
623
+ idle-leaseless-quiescent worker out of {leased-idle, leaseless-idle,
624
+ leaseless-fresh, leaseless-busy, still-spawning}; nothing is selected one
625
+ millisecond before the TTL and the same worker is selected one millisecond
626
+ after.
627
+
628
+ **Not yet exercised live.** The selection is unit-tested and the kill path
629
+ is the same `OpenProcess`/`TerminateProcess` pair `job_object.rs` already
630
+ uses, but no run has yet watched a real worker disappear on lease death:
631
+ that needs the backend restarted with the flag plus a short TTL
632
+ (`KENAZ_SYNAPSE_WORKER_IDLE_SECS=15 KENAZ_SYNAPSE_WORKER_REAP_TICK_SECS=5`),
633
+ and the single-instance plugin prevents a second debug instance beside the
634
+ running dev stack. First thing to do on the next flag-ON restart; until then
635
+ the flag stays off by default.
636
+
637
+ ## 9. R1 reaper evidence + R3 decision (Ansuz, 2026-09-22, TASK_1986)
638
+
639
+ ### 9.1 Reaper exercised live (R1 / A1)
640
+
641
+ Dev backend restarted with `KENAZ_SYNAPSE_WORKERS=1 KENAZ_SYNAPSE_WORKER_IDLE_SECS=15
642
+ KENAZ_SYNAPSE_WORKER_REAP_TICK_SECS=5` (18:20:23Z). Probe: `pool-multi-project.js --tool-set worker
643
+ --projects KenazAI,esp32 --concurrency 6 --waves 2` (12 + 12 calls, 0 failures, burst 763 / 340 ms).
644
+ esp32 has no live session lease, so its worker is leaseless by construction; KenazAI is the current
645
+ project and is served locally.
646
+
647
+ | t | Event (tauri dev stderr, `[synapse-worker]`) | Evidence |
648
+ |---|---|---|
649
+ | +0 | `reaper armed: idle_ttl=15s tick=5s` | flag read, reaper task alive |
650
+ | +~40 s | worker pid **17592** (port 18100, project esp32) spawned by wave 1 | `Get-CimInstance` listed it with `--synapse-worker --project` |
651
+ | +~85 s | `reaped idle worker pid=17592 port=18100 project=c:/users/user/documents/github/esp32` | process list empty |
652
+ | re-probe | wave of 6 calls, 0 failures, burst 814 ms (first-touch respawn cost) | new worker pid **34156** (port 18101) |
653
+ | later | `reaped idle worker pid=34156 port=18101 project=...esp32` | cycle repeats; no orphan |
654
+
655
+ A1 met: one worker reaped after lease-less idle TTL, re-spawned on the next call through the once-cell
656
+ path, reaped again. No failures on either side of the kill. The reaper line is `eprintln!` only: it is
657
+ visible in the dev stderr log but **not in backend.log** (GUI builds) — R2's tracing line covers the
658
+ startup config; the reaped event itself should also go through `tracing` before any default-ON
659
+ rollout (small follow-up, not done here).
660
+
661
+ ### 9.2 R2
662
+
663
+ Landed separately (startup line `synapse worker forwarder configuration` with `workers_enabled` and
664
+ `current_project`, and `forward_decision` with the `current_unresolved -> serve locally` fail-safe).
665
+
666
+ ### 9.3 R3 decision record — recommendation: **dev-only ON, production stays opt-in**
667
+
668
+ Numbers it rests on: §7.6 release-build flag-ON 36/36 vs dev flag-OFF 36/36 (the failure criterion
669
+ cannot discriminate at 12x2); worker RSS 114-156 MB per project on release; spawn-to-ready ~1 s;
670
+ §9.1 reaper cycle verified; the structural gain is the crash floor (a third open project cannot take the
671
+ main process down) plus latency isolation.
672
+
673
+ - **Dev machines (multi-project, long sessions): ON.** This is where 3+ projects are open at once and
674
+ where the KuzuDB crash floor has actually bitten (TASK_1925 history). Mechanism: the `tauri:dev`
675
+ launcher sets `KENAZ_SYNAPSE_WORKERS=1` (or `.env.local`), not a code default — rollback is unsetting
676
+ it.
677
+ - **Production installs: stay opt-in** until (a) `synapse_status` aggregates across workers (R4),
678
+ (b) the release standalone `get_current_project()` resolution observed in §7.6 is fixed so the
679
+ current project is never forwarded to a worker of itself, (c) the reaped event is in backend.log,
680
+ and (d) a two-week dev soak shows no orphaned worker/port leak. A typical end-user install has one
681
+ project open; the extra 115-155 MB process buys them nothing yet.
682
+ - **Not "everywhere"**: without (a)-(c) an installed user would see status numbers that silently
683
+ exclude worker-served projects (Name-Preserving Narrowing, sigil_12331ef3).
684
+
685
+ The default flip — even dev-only — changes shared developer infrastructure and is the user's call;
686
+ this section records the recommendation and its evidence, it does not apply it.
687
+
688
+ ## 10. Default ON everywhere (Ansuz, 2026-09-22, TASK_1999)
689
+
690
+ ### 10.1 Decision
691
+
692
+ **User decision, 2026-09-22: default ON everywhere, including installed builds** — wider than §9.3's
693
+ "dev-only" recommendation. §9.3's three blocking prerequisites for production are landed by this card:
694
+
695
+ - (a) `synapse_status` aggregates across workers — R1, below.
696
+ - (b) release standalone `get_current_project()` resolution — the R2 fail-safe already landed in
697
+ TASK_1986 (`forward_decision`'s `current_unresolved -> ServeLocally`, 7850d67c8): an unresolved
698
+ current project now always serves locally, never forwards to (or spawns) a worker for itself. This
699
+ card's R2 is the **live verification** of that fail-safe on a release standalone exe — procedure in
700
+ §10.4; evidence recorded there once the orchestrator's release-build smoke runs (this card is
701
+ Rust-only and does not itself build/run cargo — see the dispatch note at the top of this section's
702
+ commit).
703
+ - (c) reaped/spawned events already go through `tracing` (target `synapse_worker`) — landed in
704
+ TASK_1986 (§8/§9.1), confirmed still in place: `reap_once` and `spawn_reaper_if_enabled` both log via
705
+ `tracing::info!` in addition to `eprintln!`.
706
+
707
+ §9.3's fourth item — "a two-week dev soak shows no orphaned worker/port leak" — is superseded by R5
708
+ below: auto-regulation (leased-idle TTL, a hard concurrent-worker cap, an RSS watchdog) is landed as a
709
+ *precondition* of the flip, not a follow-up, so an orphan/leak class of problem has a structural ceiling
710
+ (≤`KENAZ_SYNAPSE_WORKER_MAX` processes, each capped at `KENAZ_SYNAPSE_WORKER_MAX_RSS_MB`) rather than
711
+ depending on empirical soak time to rule out unbounded growth.
712
+
713
+ ### 10.2 R1 — synapse_status worker aggregation
714
+
715
+ `infrastructure::synapse_worker::status_block()` is the one source of truth both surfaces call:
716
+
717
+ - MCP `synapse_status` (`graph.rs::tool_synapse_status`): adds top-level `workers` (array) and
718
+ `worker_totals` (object), additive only — no existing key's meaning changes.
719
+ - REST `GET /api/synapse/status` (`routes/synapse.rs::get_synapse_status`): `SynapseStatusResponse`
720
+ gains the same two fields (camelCase on the wire: `workers`, `workerTotals`), populated in all three
721
+ response branches (project-specific, `resolve_core_path` error, global registry) so no branch can
722
+ silently narrow the numbers.
723
+
724
+ Each `workers[]` row: `project, port, pid, spawned_at, last_used, idle_secs, leased, in_flight, rss_mb,
725
+ status`. `status` is fetched over loopback from the worker's OWN `synapse_status` for its project (2s
726
+ bound per worker), then trimmed to a compact subset (`compact_worker_status`, TASK_1999 follow-up) —
727
+ `phase, indexing_in_progress, symbol_entries, rune_count, spool_depth, last_indexed` — since embedding
728
+ the full ~5KB status payload per row made the aggregate balloon with every additional worker; a caller
729
+ who wants the rest calls `synapse_status(projectPath=<that project>)` directly, which forwards to the
730
+ same worker. A hung/dead worker degrades `status` to the string `"unreachable"` rather than blocking (or
731
+ failing) the aggregated call for every other worker. `worker_totals`: `worker_count, total_rss_mb,
732
+ total_in_flight, unreachable_count`.
733
+
734
+ Degrade path (A1): kill a worker's process out from under the registry between reaper ticks — the next
735
+ `synapse_status` poll's forwarded call to that port fails (connection refused), so that row's `status`
736
+ reads `"unreachable"` and `unreachable_count` increments; `rss_mb`/`idle_secs`/`leased` still report
737
+ last-known registry state until the next reaper tick removes the entry entirely.
738
+
739
+ ### 10.3 R5 — auto-regulation (precondition of default ON, not a follow-up)
740
+
741
+ Default ON means several projects can each hold open a worker indefinitely without this. Extends the
742
+ existing reaper (`spawn_reaper_if_enabled` / `reap_once`) rather than adding a second loop:
743
+
744
+ | Knob | Default | What it controls |
745
+ |---|---|---|
746
+ | `KENAZ_SYNAPSE_WORKERS` | unset = **ON** | `0` disables the whole forwarder/worker mechanism (§10.5 rollback). Any other value (unset, `1`, garbage) is ON. |
747
+ | `KENAZ_SYNAPSE_WORKER_IDLE_SECS` | 300 | Leaseless-idle TTL (unchanged from TASK_1986) — a worker whose project has no live session lease. |
748
+ | `KENAZ_SYNAPSE_WORKER_LEASED_IDLE_SECS` | 900 | **New (R5a).** Idle TTL for a worker whose project DOES have a live lease. Longer than the leaseless TTL — reaping an actively-worked project is a bigger interruption, but respawn costs only ~1s (§7.6/§9.1), so an idle-but-leased worker is not held forever either. |
749
+ | `KENAZ_SYNAPSE_WORKER_REAP_TICK_SECS` | 60 | Reaper poll interval (unchanged). |
750
+ | `KENAZ_SYNAPSE_WORKER_MAX` | 3 | **New (R5b).** Hard cap on concurrently resident workers. Spawning past the cap evicts the LRU idle worker first (reason `cap`); if every tracked worker is busy, the call is served locally instead of spawning a 4th process (logged, not silently degraded). |
751
+ | `KENAZ_SYNAPSE_WORKER_MAX_RSS_MB` | 400 | **New (R5c).** Per-worker RSS cap, checked on the reaper tick. |
752
+ | `KENAZ_SYNAPSE_WORKERS_TOTAL_RSS_MB` | 1200 | **New (R5c).** Fleet-wide RSS cap, checked on the reaper tick — over cap reaps the idlest worker(s) first. |
753
+
754
+ A busy worker (`in_flight != 0`) is never evicted by any of these — cap and RSS checks skip it the same
755
+ way idle-TTL selection always has (a worker mid-answer is never killed). Every eviction — idle, cap, or
756
+ RSS — logs via `tracing::info!(target: "synapse_worker", ...)` with an explicit `reason` field
757
+ (`idle_leaseless | idle_leased | cap | rss`), landing in `backend.log` on installed builds, not just dev
758
+ stderr.
759
+
760
+ Unit tests (`synapse_worker.rs`, no process spawning): `select_reapable` (leaseless vs. leased TTL
761
+ selection), `decide_capacity` (room available / evict LRU idle / serve-locally-when-all-busy),
762
+ `select_rss_reap_victims` (per-worker cap, fleet-total cap reaping idlest-first, busy workers spared in
763
+ both), `build_worker_rows` (leased/idle/rss reporting from a fake registry), plus the flag-parsing and
764
+ `is_forwardable_tool` suites for R3 below.
765
+
766
+ **A4 (live, not yet run by this card — Rust-only dispatch, no cargo build/run):** open 4 projects via
767
+ `dev/scripts/probe/pool-multi-project.js` → expect only 3 resident workers (4th evicts the LRU idle one,
768
+ `reason=cap` in backend.log); leave one leased project idle past 900s → its worker is reaped
769
+ (`reason=idle_leased`) and respawns on the next call; a synthetic RSS breach
770
+ (`KENAZ_SYNAPSE_WORKER_MAX_RSS_MB` set artificially low) reaps the idlest worker (`reason=rss`);
771
+ `synapse_status.workers[]` shows `rss_mb`/`idle_secs` throughout. Left for the orchestrator's live/
772
+ release smoke pass.
773
+
774
+ ### 10.4 R2 — release standalone smoke procedure (for the orchestrator to run + record)
775
+
776
+ 1. Stop any running `tauri dev` backend by PID (never `taskkill` by image name — see repo-wide lesson).
777
+ 2. `cargo build --release` (in the fixed verify worktree — kuzu re-cmakes per worktree PATH, ~20 min the
778
+ first time per worktree, per `reference_worktree_rust_verify_recipe.md`).
779
+ 3. Launch the release exe standalone (not through the installer) with `KENAZ_SYNAPSE_WORKERS` unset
780
+ (default ON) and at least two projects known to `projects.json`.
781
+ 4. Call `synapse_status` (MCP or REST) for the **current** project — expect `workers[]` to show **no**
782
+ entry for it (R2 fail-safe: the current project is always served locally) and the
783
+ `log_forwarder_config` startup line (`backend.log`, target `synapse_worker`) to show
784
+ `current_project` resolved to that project's path, not `<unresolved>`.
785
+ 5. Call `synapse_status` for **one other** known project — expect exactly one worker entry to appear for
786
+ it, with `status` reporting real (not `"unreachable"`) counts.
787
+ 6. Record: both pids, `rss_mb` for the spawned worker, and the exact `forwarder configuration` /
788
+ `forward_decision` log lines from `backend.log`.
789
+ 7. Evidence goes in this section (§10.4) once run — not yet run as of this card (Rust-only dispatch;
790
+ the orchestrator runs it in the fixed verify worktree per the dispatch contract at the top of this
791
+ task).
792
+
793
+ ### 10.5 R3 — the flip + rollback
794
+
795
+ `KENAZ_SYNAPSE_WORKERS` semantics inverted: **on unless set to exactly `0`** (`workers_enabled()` in
796
+ `synapse_worker.rs`). Unset, `1`, or any other value all mean ON — the PoC's `== Some("1")` opt-in gate
797
+ is retired. `FORWARDABLE_TOOLS`'s five-tool PoC allowlist is replaced by `is_forwardable_tool`, matching
798
+ `mcp.rs::is_project_scoped_tool`'s full `synapse_*` / `hippocampus_*` / `cortex_*` prefix set (duplicated
799
+ in `synapse_worker.rs` rather than calling that private function — `mcp.rs` is outside this card's scope
800
+ paths; the two prefix sets must be kept in sync by hand until they share one home). Reaper defaults
801
+ (`KENAZ_SYNAPSE_WORKER_IDLE_SECS=300`, `KENAZ_SYNAPSE_WORKER_REAP_TICK_SECS=60`) are unchanged.
802
+
803
+ **Rollback:** set `KENAZ_SYNAPSE_WORKERS=0` and restart the backend. Every forwarded call serves locally
804
+ again (`workers_enabled()` returns false), the reaper never arms, and `log_forwarder_config` logs the
805
+ disabled state at startup. No worker processes survive a restart with the flag off (Job Object /
806
+ `KILL_ON_JOB_CLOSE` owns their lifecycle either way).
807
+
808
+ **Dev launcher:** verified already clean — `dashboard/package.json`'s `tauri:dev` script does not set
809
+ `KENAZ_SYNAPSE_WORKERS` (grepped; only `dev/scripts/probe/pool-multi-project.js`, this doc, and the two
810
+ Rust source files reference the var), so there is no launcher env to remove — the default-ON flag
811
+ semantics apply to `tauri:dev` automatically, same as every other entry point.
812
+
813
+ ### 10.6 What this card did NOT touch
814
+
815
+ - `mcp.rs::execute_tool_inner`'s comment above the `maybe_forward` call still says "behind env
816
+ KENAZ_SYNAPSE_WORKERS=1" — stale after the flip, but `mcp.rs` is outside this card's scope paths.
817
+ Small follow-up for whoever next edits that file.
818
+ - The R2 `forward_decision` fail-safe itself (`current_unresolved -> ServeLocally`) is untouched, per
819
+ the dispatch instruction — §10.1(b) only points at it, does not modify it.
820
+
821
+ ### 10.7 Two defects found on the release standalone smoke (Ansuz, 2026-09-22, TASK_1999 R6)
822
+
823
+ The §10.4 smoke procedure surfaced two defects, both fixed in `synapse_worker.rs`:
824
+
825
+ **Defect 1 — `synapse_status` forwarded to a worker.** With the §10.5 widened forwardable prefix set,
826
+ `synapse_status` for a foreign project was itself a forwardable tool — it got proxied to that project's
827
+ worker, so the caller got the WORKER's view (`workers: [] / worker_count 0`, since a worker never spawns
828
+ children) instead of the main process's aggregation across every resident worker. Fix: `is_forwardable_tool`
829
+ now checks an explicit `MAIN_ONLY_TOOLS` deny-list first — `synapse_status`, `synapse_health`,
830
+ `synapse_maintain`, `synapse_index`, `synapse_release_project`, and any `synapse_evolution_*` tool — all of
831
+ which either answer a question about the process/pool/worker-set itself or trigger a long-running job, and
832
+ so are always served locally regardless of which project they're asked about. `synapse_status` served
833
+ locally on a foreign project is unaffected by this — it already gets that project's per-project numbers
834
+ from `status_block()`'s own direct (non-forwarding) queries to each tracked worker's `/api/mcp` (§10.2);
835
+ only the "hop the whole call over to a worker and return ITS answer" path is blocked.
836
+
837
+ **Defect 2 — current-project identity split by spelling/bundling.** On the release exe started standalone
838
+ from `target/release`, `get_current_project()` resolved to
839
+ `<repo>/dashboard/src-tauri/target/release/kenaz-core` — the bundled Synapse binary's own exe path — so a
840
+ call for the source repo (`C:/Users/user/Documents/GitHub/KenazAI`) compared as a FOREIGN project and
841
+ spawned a 160MB self-worker. Separately, an esp32 worker path was observed logged with mixed slash
842
+ spellings (`C:\...` vs `C:/...`), which a plain string-equality key would also treat as two projects. Fix,
843
+ both in `normalize_key`/`forward_decision`:
844
+
845
+ - `normalize_key` now resolves via `std::fs::canonicalize` when the path exists on disk (falling back to
846
+ the raw path when it doesn't — a worker's `--project` arg for a not-yet-touched path, or a key built from
847
+ a test fixture), strips Windows' verbatim (`\\?\`) prefix after the backslash→forward-slash pass, trims a
848
+ trailing slash, and lowercases only on Windows (`#[cfg(windows)]`) — so spelling alone never creates a
849
+ second identity for the same on-disk project.
850
+ - A new `same_project_or_bundle(current, requested) -> bool` rule, consulted by `forward_decision` right
851
+ after the existing `current == requested` check: if `current` is a bundled `kenaz-core` exe path
852
+ (`is_bundled_kenaz_core` — normalized path contains `/target/` and ends with `/kenaz-core`, `.exe` suffix
853
+ stripped first), its real project identity is the source repo that built it — the ancestor 4 directory
854
+ levels above the exe's parent (`<repo>/dashboard/src-tauri/target/release/kenaz-core` -> `<repo>`, walking
855
+ up through `release`, `target`, `src-tauri`, `dashboard`, computed via 5 `Path::parent()` calls from the
856
+ full exe path and re-`normalize_key`'d). A `requested` path equal to that computed root is
857
+ `ServeLocally("current_bundle_alias")` — same project, two spellings, not forwarded and no self-worker
858
+ spawned. A genuinely different `requested` path (not the bundle's own source root) still `Forward`s
859
+ normally.
860
+
861
+ Unit tests (`synapse_worker.rs`): `is_forwardable_tool_denies_main_only_tools` /
862
+ `is_forwardable_tool_still_allows_recall` (Defect 1); `normalize_key_collapses_slash_and_case_spelling` +
863
+ `same_spelling_variants_serve_locally_via_forward_decision` (Windows-only, mixed-slash/case collapse),
864
+ `is_bundled_kenaz_core_detects_the_release_exe_path`,
865
+ `bundled_current_and_source_root_requested_serve_locally`,
866
+ `bundled_current_but_genuinely_different_project_forwards`, `genuinely_different_project_still_forwards`
867
+ (Defect 2) — all in `t1999_project_identity_tests`.
868
+
869
+ ### 10.8 A4 live evidence (dev, 2026-09-22, default ON + short TTLs via env)
870
+
871
+ Env: `KENAZ_SYNAPSE_WORKER_LEASED_IDLE_SECS=60 KENAZ_SYNAPSE_WORKER_IDLE_SECS=40 KENAZ_SYNAPSE_WORKER_REAP_TICK_SECS=10 KENAZ_SYNAPSE_WORKERS_TOTAL_RSS_MB=260`; a lease file for esp32 was placed in `.kenaz/specialist/sessions/leases/` (heartbeat fresh, 8 h liveness) so esp32 counted as leased. Calls were direct `synapse_recall` per project (see the probe note below).
872
+
873
+ | step | observed |
874
+ |---|---|
875
+ | recall esp32, CognitiveLabs, trip | workers 18100 (154 MB), 18101 (120 MB), 18102 (145 MB); status rows carry `idle_secs` / `leased` / `rss_mb` |
876
+ | next reaper ticks (total 419 MB > 260 MB cap) | `reaped worker ... project=esp32 reason="rss"`, then `... cognitivelabs reason="rss"`; trip (145 MB) survives under the cap |
877
+ | trip idle > 40 s | `reaped worker ... project=trip reason="idle_leaseless"` |
878
+ | esp32 touched again, then idle > 60 s with a live lease | `reaped worker ... project=esp32 reason="idle_leased"` |
879
+ | recall esp32 after the reap | fresh worker on port 18104 (respawn on demand) |
880
+
881
+ Two lessons for anyone re-running this: (1) the RSS cap is a hard cap and reaps leased workers too (idlest first) — intended; (2) `synapse_status` is main-only since R6, so a probe that alternates status/recall with one call per project spawns nothing — `dev/scripts/probe/pool-multi-project.js --tool-set worker` now uses `synapse_search` + `synapse_recall`.