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,133 @@
1
+ # Claude Code mods spike (TASK_2225)
2
+
3
+ Date: 2026-10-03. CLI: Claude Code 2.1.288 (Windows 11). Status: spike report, no production code changed.
4
+
5
+ Question: can a Claude Code mod (function-hooks plugin, CLI >= 2.1.287) running inside each
6
+ Ansuz session replace (a) the peer wake helper (`peer_wake.rs`, a `claude -p` helper calling
7
+ ListAgents + SendMessage) and (b) the peer pull in the `UserPromptSubmit` hook
8
+ (`.claude/hooks/turn-context.js` -> `GET /api/peer/pending`)?
9
+
10
+ ## Reproduce
11
+
12
+ - Probe mod: `dev/spikes/mods/kenaz-mod-probe/` (`claude plugin validate` passes; not installed globally).
13
+ - One-shot run: `claude -p --plugin-dir dev/spikes/mods/kenaz-mod-probe --output-format json "<ask for the MODPROBE_CONTEXT line>"`.
14
+ - Long-lived idle run: `node dev/spikes/mods/drive-probe.js <repo> 80000`. This opens a stream-json session, sends one prompt,
15
+ then holds stdin open for 80 s so the session sits idle but alive.
16
+ - Evidence: `dev/spikes/mods/evidence/probe-<sessionId>.jsonl` (written by the mod itself) and
17
+ `evidence/stream-cebdf1f7.jsonl` (the session's stream-json output).
18
+
19
+ The probe records: `session.start` -> `$.session.id/cwd`; `$.http.fetch` to the backend plus a closed
20
+ port as a negative control; `$.clock.every(10s)` capped at 6 ticks; a `prompt.submit` hook that adds a
21
+ per-load random token as context; `$.clock.after(15s)` -> `$.prompt.submit(...)`.
22
+
23
+ ## Step 1: doc claims vs live behaviour
24
+
25
+ | Claim | Verdict | Evidence |
26
+ |---|---|---|
27
+ | A `prompt.submit` hook can add context that only the model reads | **VERIFIED** | Run `006a6e65`: the model replied `MODPROBE_CONTEXT token=8ayfzh14 session=006a6e65-…`. The token is random per load, so the model cannot guess it. The user never sees it. |
28
+ | `$.http.fetch` reaches `127.0.0.1:18080` | **VERIFIED** | `/api/health` returned `200 {"status":"ok","service":"kenaz-dashboard","version":"0.2.257",…}`. The control fetch to `127.0.0.1:1` rejected with `ECONNREFUSED`, so the success is not vacuous. |
29
+ | `$.session.id()` equals the hook payload / harness `session_id` | **VERIFIED** | The mod recorded `id=006a6e65-d807-…`, identical to `session_id` in the `claude -p` JSON output. Run 2 shows the same: mod `cebdf1f7-…` equals the stream-json `init session cebdf1f7-…`. |
30
+ | `$.clock.every` runs background timers | **VERIFIED** | Run `cebdf1f7`: 6 ticks at +10.0 s spacing (`1791014909642` … `1791014959648`), then `cancel()` stopped it. Ticks kept firing while no turn was running. |
31
+ | `$.prompt.submit` waits until the session is idle and starts a new turn with no user input | **VERIFIED (SDK host + real TTY)** | TTY run `eb21147d` (2026-10-03, see caveat 1): idle submit started a turn and the model answered. SDK run `cebdf1f7`: turn 1 ended with `result: success READY`. At +15 s the mod logged `submit.call`, and `submit.result` came back with `origin {kind:"plugin", name:"kenaz-mod-probe"}`. The stream then shows a second `init` and a new assistant turn, with no input on stdin. |
32
+
33
+ ### Caveats and extra findings
34
+
35
+ 1. **Idle submit, real TTY: VERIFIED 2026-10-03.** An interactive `claude --plugin-dir dev/spikes/mods/kenaz-mod-probe`
36
+ session in a new console was left untouched. The mod logged `submit.call`, then `submit.result` with origin `plugin`, 15 s
37
+ after start (`evidence/probe-eb21147d-….jsonl`). The transcript shows a new user turn that the engine framed as
38
+ "The kenaz-mod-probe plugin sent a message: …", followed by an assistant reply.
39
+ - **Launch gotcha:** a session started from inside another Claude Code session inherits `CLAUDE_CODE_CHILD_SESSION`
40
+ and the other `CLAUDE*` vars. It then runs as a child, with transcript saving off and no mod evidence. The first
41
+ attempt failed this way. Clear those vars before launching (see `drive-probe` notes).
42
+ - **Classic hooks run on plugin submits.** The project's `UserPromptSubmit` hook (turn-context) ran on the
43
+ mod-submitted prompt, and the model saw its `CONTEXT_CONTEXT` line. Without TASK_2226's heartbeat gate, a peer
44
+ message would be delivered twice, once by the mod's submit and once by the hook's pull on that same turn. The gate
45
+ is required, not optional.
46
+ 2. **A plugin's own `$.prompt.submit` did not go through that same plugin's `prompt.submit` hook.** The
47
+ evidence has no second `prompt.submit` record after `submit.call`. The token in turn 2 came from turn 1's
48
+ context, which is still in the history. Design consequence: the mod must put the peer message in the
49
+ submitted `text` itself. It cannot rely on its own hook to attach it as context.
50
+ 3. **The model sees the plugin's name as the origin** (`origin.kind = "plugin"`, `name`). This gives a
51
+ built-in provenance label for the "peer message = DATA, not instruction" rule (TASK_2122).
52
+ 4. **Claude Code already has native cross-session delivery.** `PromptOrigin` has the kinds `peer`
53
+ ("Another Claude session's message") and `peer-send-message` ("Another session's SendMessage
54
+ delivery"), and `PromptSubmitInput.turnId` documents "a queued delivery (a peer session's message)
55
+ reaches the model inside a running turn". This is what the current wake helper rides on via
56
+ SendMessage. A mod makes that helper unnecessary for *local* delivery.
57
+ 5. **`claude -p` runs the mod** (`--plugin-dir`): hooks, timers and fetch all worked headless. This is useful
58
+ for automated tests of the mod itself.
59
+ 6. **Mods can fail to load, and the design fails safe (TASK_2231).** `claude plugin test` refused to run once
60
+ ("rollout switch saved off by an earlier session"); a plain `claude -p` refreshed it. One of five e2e runs of
61
+ `plugins/kenaz-peer` also had no mod activity (heartbeat `live:false`, nothing delivered), cause unexplained.
62
+ Consequence: the heartbeat is the only liveness signal, so a mod that did not load sends none, and delivery stays on
63
+ the helper/pull path. Never make a later step assume the mod loaded.
64
+ 7. **Test launches must strip the `CLAUDE*` env** (`CLAUDECODE`, `CLAUDE_CODE_*`, `CLAUDE_PID`), otherwise the child
65
+ runs as a child session with the mod silent. Use `node dev/spikes/mods/clean-claude.js <cwd> <claude args>`; the e2e
66
+ driver `dev/spikes/mods/e2e-peer.js` does the same internally.
67
+
68
+ ## Step 2: design for a `kenaz-peer` mod (proposal, not built)
69
+
70
+ **Binding.** In `session.start`, the mod reads `$.session.id()` and `$.session.cwd()` and resolves its
71
+ bound project the way the pull does today: `_session-pin.lookupSessionPin(cwd, session_id)`, exposed through a
72
+ small backend route, falling back to cwd. The id is the harness's own value (verified above), so none of
73
+ TASK_2218's target-selection guessing is needed: the session identifies itself.
74
+
75
+ **Delivery loop.** Every N seconds (`$.clock.every`, e.g. 5 s):
76
+ 1. `GET /api/peer/pending?projectPath=<bound>&peek=true`. This reads without acking (TASK_2217 contract).
77
+ 2. If messages are waiting, call `$.prompt.submit({ text: <framed batch> })`. The engine holds the submit until the
78
+ session is idle; a mid-turn delivery is queued, not interleaved.
79
+ 3. When `submit` resolves (the prompt entered the session), ack the delivered ids.
80
+ **Backend gap:** today the non-peek `GET /pending` is take-and-ack in one step. The mod needs an
81
+ ack-by-id route, e.g. `POST /api/peer/ack {ids}`, so a crash between peek and submit cannot lose a message.
82
+ This is the only backend change on the critical path.
83
+
84
+ **Pull path.** The same mod's `prompt.submit` hook replaces the turn-context peer pull for user-typed prompts.
85
+ It peeks, attaches the messages as `context` (verified), and acks them. This retires the per-install-layout
86
+ `UserPromptSubmit` registration problem from the TASK_2218 review for peer messages.
87
+
88
+ **Coexistence and retirement of `peer_wake.rs`.** The mod sends a heartbeat on its timer:
89
+ `POST /api/peer/mod-heartbeat {session_id, project}`. `peer_wake::wake_session` skips projects with a
90
+ live heartbeat (< 2 ticks old) and keeps today's helper as the fallback otherwise. Likewise, turn-context.js
91
+ skips its peer pull when a heartbeat exists for its `session_id`. Once installs report the mod as
92
+ present, delete the helper path. That removes the `.cmd` argv handling (TASK_2217), console windows,
93
+ haiku-per-push cost, and permission-mode holds.
94
+
95
+ **Distribution.** Ship the mod as a plugin inside kenaz-core and have the installer write
96
+ `enabledPlugins` (user scope). On CLI < 2.1.287 the mod does not load, so no heartbeat is sent and the
97
+ backend keeps using the helper plus the pull, with no behaviour change. The installer can log
98
+ `claude --version` so the dashboard shows which path each machine uses.
99
+
100
+ **Remote peers are unchanged.** The relay, `peer_poller` storing into the local inbox, and the send-side gates
101
+ (`evaluate_send_gate`) stay as they are. The mod only replaces the last hop from the local inbox into a live session.
102
+
103
+ ## Step 3: moving the whole hook chain into mods
104
+
105
+ Mods can hook every settings-hook event as `classic.<Event>` (for example `classic.PreToolUse`). They
106
+ return the same fields, such as `additionalContext` and `block` (types: `ClassicResultFields`), so the
107
+ shape of each hook ports 1:1. But mods run with no Node runtime. turn-context, memory-guard,
108
+ pulse-before-*, task-bridge and the handoff hooks are Node scripts that use `require`, the filesystem and
109
+ local modules. Porting them means either a rewrite against `$.fs`/`$.http`, or `$.process.run(['node', script])`.
110
+ The second option recreates today's hook with an extra hop.
111
+
112
+ **Recommendation: no-go for now.** The install-layout problem is real, but it hurts only the peer pull,
113
+ and Step 2 removes that dependency. Keep the other hooks in `.claude/settings.json`. Revisit hook by hook
114
+ only when one becomes cheap to express against `$.*`, for example the SessionStart HTTP ping, which is
115
+ already a single fetch.
116
+
117
+ ## Go / no-go
118
+
119
+ **GO for Step 2** (peer delivery mod), in phases:
120
+ 1. Backend: `POST /api/peer/ack {ids}` plus `POST /api/peer/mod-heartbeat`, and make `peer_wake` and turn-context
121
+ skip their peer work for heartbeat-live sessions.
122
+ 2. Mod: `kenaz-peer` in kenaz-core (peek -> submit -> ack loop, pull via the `prompt.submit` context hook),
123
+ with `claude plugin test` coverage.
124
+ 3. Installer: write `enabledPlugins`; report the CLI version.
125
+ 4. Confirm in a real terminal (caveat 1), run a two-machine Ashfall test, then delete the helper path.
126
+
127
+ Fallback for CLI < 2.1.287: today's path, chosen automatically by the heartbeat being absent.
128
+
129
+ **NO-GO for Step 3** (whole-chain migration), for the reasons above.
130
+
131
+ ## TASK_2241 - the LLM push helper is unsafe for framing integrity
132
+
133
+ Observed live on 0.2.259: the `claude -p` helper delivered a paraphrase of a bridge reply WITHOUT the `[Peer message ...]` header and fence; the verifier rejected it only after `SendMessage` had already delivered it. Framing is what keeps peer text as data, and an LLM in the path cannot guarantee it. Mitigations in the helper path (bridge stand-down to a live core mod, a one-line "delivered unverified" notice on the rolled-back redelivery, sha256 audit of expected vs delivered text) reduce but do not remove the risk. Only the mod path (deterministic exact framed text, engine-stamped origin, no LLM) closes it, which raises the priority of the TASK_2234 mod rollout.
@@ -0,0 +1,143 @@
1
+ # Per-project peer addressing (TASK_2237)
2
+
3
+ Status: option B implemented behind wire compatibility; awaiting user review of the open questions at the end.
4
+
5
+ ## 1. Problem
6
+
7
+ Peer messages are addressed to a **machine** (`node_name`), not to a project folder. Two project folders on one
8
+ machine that belong to the same Yggdrasil room cannot be told apart, and only one of them receives. Field case
9
+ (node gamem-DESKTOP-1TR25AE, thread 0b849325): `C:\project\Ashfall` (ART) and `C:\project\Ashfall_code` (CODE)
10
+ share room `github.com/xyz9516/Ashfall` and one `node_name`. Art questions were injected into the CODE session
11
+ and arrived twice (turn-context pull plus UDS helper push). This is a plausible contributor to field report
12
+ TASK_2206 (one-way messages).
13
+
14
+ ## 2. Current model (before this task), with evidence
15
+
16
+ | Fact | Evidence |
17
+ |---|---|
18
+ | `node_name` is one per machine by design (global git user.name, then os user, then hostname) | `mcp_tools/pool.rs:311-326` (TASK_2124 comment) |
19
+ | Send writes `to_node = <machine name>`, `project = <room>`; payload is only `kind/body/refs/reply_to` | `mcp_tools/peer.rs` `send_with_cfg` |
20
+ | Poll runs once per room: roots resolving to the same `(http_base, project_key)` are deduped, the first root polls and stores into **its** inbox only | `peer_poller.rs` `poll_all_rooms` (`seen_rooms` HashSet) |
21
+ | Poll query is `task_events?to_node=<node>&project=<room>&include_acked=0` | `peer_poller.rs` `poll_with_cfg_bounded` |
22
+ | Relay matches `to_node` exactly and scopes by team and project | `yggdrasil-relay/src/routes/task_events.rs:236` |
23
+ | Ack is per event and removes it for every poller of that `to_node` (`WHERE ... AND to_node = ?4`) | `task_events.rs:294-298` |
24
+ | Relay validates `to_node` against the `nodes` table (team-scoped) on create | `task_events.rs:110-114` |
25
+ | Relay stores `payload` verbatim as `payload_json` and returns it unchanged; only a size cap applies | `task_events.rs:85-90, 100` |
26
+ | Bridge roots (TASK_2157) only let a session at the CORE root drain bridge inboxes; they do not split one room between two ordinary projects | `routes/peer.rs` `select_bridge_roots` |
27
+
28
+ Consequences: (1) a message to the machine reaches only the first-listed root; (2) a send from local project A to
29
+ local project B has `from_node == to_node` and lands in the first root (possibly A itself); (3) a reply cannot
30
+ choose A or B; (4) the second root's `peer_poll_state` is never advanced, so any attempt to poll it too would
31
+ contend for acks with the first poll.
32
+
33
+ Reproduction is in tests (no live registry or relay touched): see section 7.
34
+
35
+ ## 3. Options for identity
36
+
37
+ ### Option A: `node@project-instance` as the relay-level node id
38
+ `to_node` becomes e.g. `gamem-DESKTOP@a1b2c3d4e5f6`; each root registers its own presence row and polls its own
39
+ `to_node`.
40
+ - Wire: old nodes only know machine names. A message to `machine@proj` is rejected by the relay (`to_node` must
41
+ exist in `nodes`), so old senders cannot reach a new node unless the machine row is kept as well.
42
+ - Relay: presence/nodes table grows one row per root (the node list UI, `kenaz_pool_nodes`, claim ownership
43
+ `created_by = node_name` all assume one row per machine); `to_node` matching works unchanged but every
44
+ consumer of node names (pool claims, TASK_2139 stale-identity drain, mute/block lists) changes meaning.
45
+ - Ack: becomes per instance, which fixes the shared-ack problem for free.
46
+ - Pin/mod: the session pin picks an instance by construction.
47
+ - Cost: relay deploy plus a new node-identity concept across pool, presence, UI. Highest blast radius.
48
+
49
+ ### Option B: machine node plus a project sub-address in the event payload (recommended)
50
+ `to_node` stays the machine name. The payload carries `from_project` (instance id), `from_project_label`
51
+ (folder name, display only) and optional `to_project`. Routing is client-side.
52
+ - Wire: additive JSON fields inside `payload`. Old nodes ignore them (verified: they only read `kind`, `body`,
53
+ `refs`). The relay stores payload verbatim (section 2), so **no relay change**.
54
+ - Relay: none. `to_node` matching, `nodes` rows, size cap, TTL and ack semantics are untouched. Ack stays
55
+ per event per machine, which is fine because ONE poll per room per machine remains the only poller.
56
+ - Pin/mod: the receiving Ansuz sees `from node@label (project <id>)` in the framed header and replies with
57
+ `kenaz_peer_send toProject=<id>`; the sender needs no registry lookup. The session pin / kenaz-peer mod keep
58
+ working per root because each root has its own inbox, so a pull at root X only sees rows delivered to X.
59
+ Bridge roots (TASK_2157) are just another local root in the room and are routed like any other.
60
+ - Weakness: addressing is advisory, not enforced by the relay (a sender can omit or forge `to_project`);
61
+ acceptable because peers are team-claimed and all content is already framed as untrusted.
62
+
63
+ ### Option C: a separate relay route / per-instance mailbox
64
+ Rejected: new relay surface for no benefit over B at current scale.
65
+
66
+ | | A: node@instance | B: payload sub-address |
67
+ |---|---|---|
68
+ | Old node can send to a new node | only if the machine row is kept | yes, unchanged |
69
+ | New node can send to an old node | needs the old machine name | yes, fields ignored |
70
+ | Relay change | yes (presence, pool, UI semantics) | none |
71
+ | Ack isolation per project | yes | no (not needed, one poll per room) |
72
+ | Rollback | hard (rows, ids) | trivial (stop reading fields) |
73
+
74
+ ## 4. Instance id
75
+
76
+ Folder names are not safe: `Ashfall` vs `Ashfall_code` differ by a suffix and the same name can repeat on other
77
+ machines. The id is the **first 12 hex chars of sha256 over the normalized absolute root path** (forward
78
+ slashes, no trailing slash, lower-cased on Windows). Properties:
79
+ - Same function on send and receive (`mcp_tools/peer.rs::project_instance_id`), derived from the root the
80
+ existing `resolve_peer_project_root` already agrees on; no new stored state, nothing to migrate.
81
+ - Full local paths never go on the wire; the folder name travels only as `from_project_label` for display.
82
+ - Not portable across machines by design: it identifies a local root, and the remote peer only echoes it back.
83
+ - Weakness: moving or renaming a folder changes the id. In-flight replies then name an unknown id and fall back
84
+ to "all roots" (below), so nothing is lost. A `project.yaml` uuid would survive moves; see open questions.
85
+
86
+ ## 5. Behaviour (implemented)
87
+
88
+ Send (`send_with_cfg_addressed`, MCP `kenaz_peer_send`):
89
+ - payload adds `from_project`, `from_project_label`, and `to_project` (null unless `toProject` is given).
90
+ - `toProject` is validated against the peer-id charset; `to_node` is still the machine name.
91
+
92
+ Receive (`peer_poller.rs`, `route_roots`):
93
+ - Still ONE GET and one ack per event per room; all local roots of the room are collected in `poll_all_rooms`.
94
+ - `to_project` matches a local root's id: delivered only to that root.
95
+ - `to_project` absent (legacy sender, first contact): delivered to **every** local root in the room, one inbox
96
+ row each (same relay id, separate sqlite files, so no PK clash). A single-root machine behaves exactly as before.
97
+ - `to_project` present but unknown: delivered to all roots and logged at info.
98
+ - Mute/block is evaluated per destination root. If an inbox cannot be opened the event is not acked, so it is
99
+ retried next tick (INSERT OR IGNORE dedups the inboxes that succeeded).
100
+ - The sender's own outbound row (`direction='out'`, id `out:...`) is never inbound; a same-machine A to B message
101
+ returns from the relay on the normal poll and lands in B only.
102
+ - Inbox schema gains nullable `from_project`, `to_project`, `from_project_label` (idempotent ALTER migration).
103
+ The pending API adds `from_project` and `from_project_label`; the framed header becomes
104
+ `from <node>@<label> (project <id>)` when the sender is a new node, otherwise unchanged.
105
+ - Wake/push (peer_wake, codex_wake) now batches per destination root, so each project is woken with its own messages.
106
+
107
+ Not addressed here: the double delivery in the field report (pull plus UDS push) is a separate TASK_2223 path;
108
+ delivering the same message to two roots does not change its per-inbox claim/ack logic.
109
+
110
+ ## 6. Migration and interop
111
+
112
+ | Sender | Receiver | Result |
113
+ |---|---|---|
114
+ | old | old | unchanged |
115
+ | old | new | no `to_project`: delivered to all local roots of the room (previously: first root only) |
116
+ | new | old | extra fields ignored; old node behaves as today |
117
+ | new | new | addressed delivery; unaddressed first contact reaches all roots |
118
+
119
+ No flag day: rollout is per node, in any order. The only behaviour change for an old sender is that a new
120
+ multi-root machine now shows its messages in every root of the room instead of one, which is the safer failure
121
+ (duplicate visibility rather than silent misrouting). Rollback = deploy the old build; rows with the new nullable
122
+ columns are ignored by it.
123
+
124
+ ## 7. Tests (peer_poller.rs `e2e_stub_relay`, filter `task_2237`)
125
+
126
+ - `task_2237_addressed_message_lands_only_in_the_matching_root` (ART/CODE-style fixture, one GET per room)
127
+ - `task_2237_local_a_to_b_lands_in_b_only_with_sender_project` (outbound row not re-stored; sender shown)
128
+ - `task_2237_unaddressed_and_unknown_to_project_reach_all_roots` (legacy event without sub-address; no redelivery)
129
+ - `task_2237_project_instance_id_is_stable_across_path_variants`
130
+
131
+ The pre-fix characterization of the defect (second root empty, `from_node == to_node`) was converted into these
132
+ assertions once the fix landed.
133
+
134
+ ## 8. Open questions for the user
135
+
136
+ 1. Instance id stability: is path-hash acceptable (breaks on folder move), or should a uuid in
137
+ `.kenaz/project.yaml` be minted and used instead (survives moves, needs a one-time write per project)?
138
+ 2. Unaddressed messages now fan out to every root in the room. Prefer that, or fan out only to roots with an
139
+ active session, or keep a per-room "default root" setting?
140
+ 3. Broadcast (`to='*'`) is per machine row today; should it ever fan out to specific projects? (Left unchanged.)
141
+ 4. Do we want the relay to eventually validate `to_project` (Option A style) once most nodes are upgraded, or
142
+ keep addressing advisory?
143
+ 5. Same-machine delivery uses a relay round trip (needs network). Acceptable, or add a local short-circuit?
@@ -0,0 +1,256 @@
1
+ # Swarm-coordination protocols for Yggdrasil: evaluation (TASK_2228)
2
+
3
+ Status: DESIGN ONLY, for user review. No protocol or production code is changed by this document.
4
+ Date: 2026-10-03. Baseline: main at fb7867827 (TASK_2227 merged).
5
+
6
+ Question asked: should Yggdrasil peer collaboration borrow from slime mould, bees and ants?
7
+
8
+ Short answer: the one mechanism that paid off is the lease-style claim (a), and it paid off only after
9
+ being tuned to human absence rather than to biology. For (b)-(f) I found no field report or peer log
10
+ showing the failure each would prevent, and at 2-5 nodes most of them lose the property that makes them
11
+ work in nature. One cheap, flag-only slice is recommended at the end to collect the missing evidence.
12
+
13
+ ## 0. Ground rules used in this document
14
+
15
+ - "Current behaviour" claims cite a file and line in the main repo, or a field report. Field reports
16
+ are cards tagged `field-report` in `.kenaz/tasks/cancel/` (TASK_2205, 2206, 2207, 2208, 2212, 2132).
17
+ Those cards are duplicate re-cards from a self-heal at 2026-10-02T16:18Z, but each carries the
18
+ original report text (report id, received_at, app_version), which is what is cited here.
19
+ - The local peer log is not usable as evidence: `.kenaz/peer/inbox.sqlite` in the KenazAI repo has 0
20
+ rows in `peer_messages`. The Ashfall traffic lives on other machines. Where a mechanism has no
21
+ incident, this document says so rather than inventing one.
22
+ - Scale: Kenaz runs 2-5 nodes plus humans. Honeybee swarm decisions average over hundreds of scouts;
23
+ Temnothorax quorum over tens of ants; Physarum prunes a mesh of thousands of tube segments with
24
+ random exploration; the response-threshold model (Bonabeau 1998) is a statement about the
25
+ distribution of thresholds across a population. None of these statistical properties exist with
26
+ 3 nodes. Local rules transfer; averaging and random exploration do not.
27
+ - Principle carried from (a), supplied by the user's rejection of auto-release: biology's automatic
28
+ decay must be tuned to how long a member may legitimately be absent, and where a wrong automatic
29
+ action costs duplicated human work, prefer "flag, then explicit action with an event recorded" over
30
+ automatic action.
31
+
32
+ Sources: Seeley et al. 2012, Science 335:108 (stop signals); Bonabeau et al. 1998, Bull Math Biol
33
+ (response thresholds); Grueter et al. 2012, PLoS ONE, PMC3440389 (crowding negative feedback); Tero
34
+ et al. 2010, Science (Physarum network design).
35
+
36
+ ## Summary table
37
+
38
+ | | Mechanism | Evidence of a real failure | Cost | Pays off at 2-5 nodes | Verdict |
39
+ |---|---|---|---|---|---|
40
+ | a | Decaying claims / leases | Yes: offline owner holds a card (design reason for TASK_2227); human-absence cost drove the redesign | Done | Yes, as flag + explicit takeover | SHIPPED (reference) |
41
+ | b | Response-threshold claiming | None found | Medium | No (needs a population of thresholds); a read-time age flag is cheap | DEFER |
42
+ | c | Crowding / load signal | Partial: invisibility of claim progress (TASK_2207), since fixed; no overload incident | Low for a read-only flag | Marginal; humans already see load | DEFER (flag only, if ever) |
43
+ | d | Stop signals / cross-inhibition | None found for approach conflicts; file conflicts already gated | Medium-high | Automatic inhibition is harmful at N=2 | NO-GO automatic; DEFER advisory |
44
+ | e | Quorum for shared-outcome decisions | None found; no such decision path exists in code | High | No: N=2 quorum is unanimity or nothing | NO-GO |
45
+ | f | Physarum-style reinforced routing | None found; observed routing failures are identity bugs | Medium | No: sender already knows whom to ask | NO-GO |
46
+
47
+ ## (a) Decaying claims / leases (reference, shipped as TASK_2227)
48
+
49
+ Card text asked for automatic expiry of claims. What shipped is different and is the right shape:
50
+
51
+ - A claim is stale when its owner has not heartbeated (`nodes.updated_at`) for 4 hours, or, if the
52
+ owner never registered, when `claimed_at` is 4 hours old (`yggdrasil-relay/src/routes/tasks.rs:838-841`,
53
+ `claim_staleness` at 846-860). Staleness is computed at read time and nothing is released
54
+ automatically (comment at 840).
55
+ - Another node may take a stale claim only by explicitly claiming it. `claim_task` first tries the
56
+ atomic unclaimed update (922-930), refuses an owner re-claiming itself (944-946) and a non-stale
57
+ claim (949-951), re-checks `claimed_by` in the UPDATE so a concurrent change is not clobbered
58
+ (953-961), and writes a `reason=takeover` event with `previous_owner` and `stale_since` (965-972).
59
+ - `unclaim_task` returns a card to the pool and records `reason=unclaim` (978-1001).
60
+ - The client side, `tool_pool_claim`, keeps the relay row after the local write so the publisher keeps
61
+ seeing the card (`dashboard/src-tauri/src/infrastructure/http_server/routes/mcp_tools/pool.rs:747-750`).
62
+ That closes the visibility gap reported in TASK_2207 (publisher could no longer see a card after the
63
+ other lane claimed it).
64
+
65
+ Why the biology had to be changed: an ant pheromone trail evaporates in minutes and the colony loses
66
+ nothing when a trail dies, because workers are interchangeable and cheap. A Kenaz claim is a human's
67
+ or an agent's hours of context. An offline Dashboard (laptop closed overnight) is not abandoned work,
68
+ and an automatic release would hand the card to a second node that then duplicates the first node's
69
+ unfinished work. So the decay constant is 4 h, not minutes, and the "evaporation" is only a flag.
70
+
71
+ Lesson carried into (b)-(f): any proposed automatic action must state (1) the longest legitimate
72
+ absence or silence, (2) the cost of a wrong automatic action, and (3) the flag-plus-explicit
73
+ alternative. If (2) is duplicated human work, default to the flag.
74
+
75
+ Verdict: SHIPPED. No further work here.
76
+
77
+ ## (b) Response-threshold claiming (urgency rises with age, per-node thresholds by skill)
78
+
79
+ Biology: each worker has a threshold for a task stimulus; stimulus grows while the task is
80
+ unattended, and workers with lower thresholds respond first. Specialisation emerges from a
81
+ distribution of thresholds across many workers (Bonabeau 1998).
82
+
83
+ Current Kenaz behaviour:
84
+ - Pool cards are listed in static order: `ORDER BY priority, created_at`
85
+ (`yggdrasil-relay/src/routes/tasks.rs:103`). Priority is a fixed string defaulting to "P2"
86
+ (`tasks.rs:204`). Nothing grows with age.
87
+ - Role is a display/filter field only, "independent of assigned_to" (`tasks.rs:154` and the `role`
88
+ column in `yggdrasil-relay/src/routes/nodes.rs:38`). There is no per-node skill threshold.
89
+ - Claiming is a manual act by an agent or human calling `kenaz_pool_claim` (`pool.rs:631`), with an
90
+ atomic first-wins relay update (`tasks.rs:922-930`).
91
+ - Dependency gating already hides cards whose dependencies are unmet (`tasks.rs:80-87`).
92
+
93
+ Failure it would prevent: a card sitting unclaimed because nobody prefers it. Evidence: none found.
94
+ TASK_2207 reports the opposite problem (claimed cards invisible to the publisher), and TASK_2132 is a
95
+ room-key activation bug, not a starvation case. I did not find a report of an unclaimed card
96
+ languishing.
97
+
98
+ Why it transfers poorly: a threshold distribution needs a population; with 3 nodes plus a human who
99
+ reads the list, "node X has a lower threshold for UI cards" is a hand-written preference, i.e. the
100
+ existing `role` field. Automatic escalation would only re-sort a list a human reads anyway.
101
+
102
+ Cost: Low for a read-time `age_secs` annotation plus an "unclaimed for > N h" flag (same pattern as
103
+ `annotate_claim_state`, `tasks.rs:863-874`). Medium for per-node thresholds (schema + config + UX).
104
+
105
+ Verdict: DEFER. If evidence appears, the only form worth building is the read-time age flag, not
106
+ automatic urgency escalation and not automatic assignment.
107
+
108
+ ## (c) Crowding negative feedback (a busy node signals load)
109
+
110
+ Biology: Grueter et al. describe foragers reducing recruitment when a food source is crowded; the
111
+ negative signal is local and cheap.
112
+
113
+ Current Kenaz behaviour:
114
+ - Load-like data already exists in presence: each node row carries `current_task`, `touching_files`,
115
+ `uncommitted`, `work_summary`, `planned_tasks`, `is_online` (`yggdrasil-relay/src/routes/nodes.rs:37-38`,
116
+ upsert at 103-126). `kenaz_pool_nodes` exposes it (`pool.rs:916`).
117
+ - Negative feedback on message volume already exists: the TASK_2161 adaptive loop guard, 30 sends per
118
+ thread per hour and a ping-pong cooldown, is in `evaluate_send_gate`
119
+ (`dashboard/src-tauri/src/infrastructure/http_server/routes/mcp_tools/peer.rs:457-502`), called at
120
+ 1098-1134, plus a per-minute rate limit at 1067-1081.
121
+ - A send to an offline or stale target is still delivered but warned (`peer.rs:1179-1186`), and a
122
+ target that is not in the room is refused with the live node list (1181).
123
+
124
+ Evidence of failure: the relevant incidents are about the guard being wrong, not about missing load
125
+ signals. The earlier human-in-the-loop guard refused sends after the user had typed a new prompt
126
+ (TASK_2208, app 0.2.251, 2026-09-29; TASK_2212, app 0.2.254, 2026-10-02): "the very next
127
+ kenaz_peer_send on the same thread was refused with the identical loop-guard error", blocking
128
+ completion notices. TASK_2161 replaced that design (`peer.rs:1083-1086`). I have no field data yet on
129
+ the new guard, so I cannot say whether its constants (30/h, ping-pong) are right. The lesson for any
130
+ new negative-feedback rule: it must be tied to a signal that actually resets, and a false refusal
131
+ costs more than a missed throttle at this scale.
132
+ - TASK_2207 (app 0.2.252): a publisher could not see a claimed card's progress. Resolved in direction
133
+ by `pool.rs:747-750`; the remaining ask there (status moving to in_progress/done with commit hashes
134
+ on the relay row) is a visibility feature, not a crowding signal.
135
+
136
+ Why it transfers poorly: at 2-5 nodes, "node B is busy" is already in presence data and in the human's
137
+ head. A numeric load score with thresholds that suppresses sends or claims would be an automatic action
138
+ whose wrong case (a node refused work because a stale `planned_tasks` says busy) is blocked human work.
139
+
140
+ Cost: Low for a read-only `busy` flag in `kenaz_pool_nodes`; the data is already there.
141
+
142
+ Verdict: DEFER. Do not gate sends or claims on load. If done, flag only.
143
+
144
+ ## (d) Bee stop signals (cross-inhibition when two nodes start conflicting approaches)
145
+
146
+ Biology: scouts for site A headbutt scouts for site B, cutting their dance duration; this breaks
147
+ deadlock between equal-quality sites and prevents a split decision, where the swarm divides between
148
+ two sites (Seeley 2012). Tuned wrongly, inhibition fails either way: too much and the swarm stalls
149
+ (deadlock), too little and it fragments (split decision).
150
+
151
+ Current Kenaz behaviour:
152
+ - File-level conflict is already a pre-dispatch gate. `remote-conflict.js` compares a candidate card's
153
+ `scope_paths` with other nodes' claimed tasks and with their live `touching_files`
154
+ (`.formation/tools/remote-conflict.js:3-4`, `hasRemoteConflict` 44-64, `hasRemoteFileConflict` 72-87),
155
+ with a 10 s cache (line 14), and `dispatch.js:1062-1066` consults both before dispatching. That is
156
+ already a stop signal, on the dimension where Kenaz can detect conflict mechanically. It skips a
157
+ card (it does not abort running work).
158
+ - Approach-level conflict (two nodes solving the same problem differently without overlapping
159
+ `scope_paths`, or before either has touched a file) has no detection. Peer messages are free text
160
+ with kinds `question|answer|notice|request` (`peer.rs:59`); nothing relates them to cards.
161
+
162
+ Evidence of failure: none found. No field report describes two nodes starting conflicting approaches.
163
+ The only two-lane traffic on file (Ashfall, TASK_2206/2207) shows dependency sequencing needs
164
+ (TASK_470 before BA's edit; TASK_492 before TASK_500), which the dependency gate in `tasks.rs:80-87`
165
+ and the "claimed card stays visible" change address.
166
+
167
+ Why automatic inhibition is harmful here: with N=2, mutual cross-inhibition becomes deadlock: A
168
+ tells B to stop and B tells A to stop, and both stall, or a tie-break rule is needed, which
169
+ is just "lower node name wins" and arbitrary. The cost of a wrong stop is a node idling or discarding
170
+ work while a human is away, which is the (a) lesson.
171
+
172
+ Cost: Medium for an advisory (compare scope/touching overlap at claim time and report it), high for
173
+ anything that stops running work.
174
+
175
+ Verdict: NO-GO for automatic inhibition. DEFER an advisory; it is the basis of the recommended slice
176
+ because it also yields the evidence that this section lacks.
177
+
178
+ ## (e) Quorum before committing shared-outcome decisions
179
+
180
+ Biology: Temnothorax ants and honeybees commit only after enough scouts are at the candidate site;
181
+ this converts noisy individual votes into a reliable group choice.
182
+
183
+ Current Kenaz behaviour:
184
+ - I found no code path in the relay or peer tools that makes a shared-outcome decision across nodes.
185
+ Peer messages are advisory text (`peer.rs:59`, framed at 281-299 as untrusted peer content). Pool
186
+ claim is first-wins atomic, a single-writer decision (`tasks.rs:922-930`). Merging to main is a git
187
+ operation by a human or agent, outside the relay.
188
+ - The decisions that matter (what lands on main, whether an approach is accepted) are made by the
189
+ human owners, who are the real quorum.
190
+
191
+ Evidence of failure: none found. No report shows a shared decision committed by one node that others
192
+ objected to.
193
+
194
+ Why it does not transfer: quorum exists to average out unreliable individuals. With 2 nodes a
195
+ quorum threshold is 1 (no protection) or 2 (any offline node blocks everything, the (a) failure again).
196
+ With 3 nodes, 2-of-3 requires a third machine online, and the cost of waiting for it is human time.
197
+ Humans already provide the check at the points where it matters.
198
+
199
+ Cost: High (new message kind, vote storage, timeout policy, offline handling).
200
+
201
+ Verdict: NO-GO. Revisit only if a concrete shared-outcome decision type is identified and its
202
+ absence causes a logged incident.
203
+
204
+ ## (f) Physarum-style reinforced routing (send questions to peers whose answers proved useful)
205
+
206
+ Biology: tubes carrying more flow thicken, others shrink; the network converges on efficient paths
207
+ through many cycles of flow and random exploration (Tero 2010).
208
+
209
+ Current Kenaz behaviour:
210
+ - Routing is explicit by name: `to` is a node name or `*` for broadcast to every other registered
211
+ node, offline included (`peer.rs:1005-1012`, `1158-1172`). A non-room target is refused with the
212
+ node list (`1179-1181`); a stale one is warned (`1182-1184`).
213
+ - Local rows record kind, thread and direction (`peer.rs:633` schema, `751` thread query), so answer
214
+ rate and latency per node could be computed, but nothing does.
215
+ - Identity, not choice, is where routing has actually failed. TASK_2205 (app 0.2.249): a reply to the
216
+ sender's `from_node` "BA" failed with relay 403 because the routable name was "dashboard-node".
217
+ TASK_2206 (app 0.2.251): replies "never arrive" after a node rename without a Dashboard restart; the
218
+ lane "had to relay its answer through the human by copy-paste". Both are name-resolution defects
219
+ addressed by TASK_2139 (target check and stale-target warning at `peer.rs:1174-1189`, 403 fallback
220
+ at 1206-1210), not routing-quality problems.
221
+
222
+ Evidence of failure that reinforcement would fix: none. A learned weight cannot repair a name that
223
+ does not resolve.
224
+
225
+ Why it does not transfer: the Physarum result needs many flow events and random exploration to
226
+ estimate usefulness. A room with 2-5 nodes has a handful of threads; the sender knows whom to ask,
227
+ and the model has no data to learn from. Exploration (asking the wrong peer on purpose) costs a human
228
+ a confusing message.
229
+
230
+ Cost: Medium (per-node usefulness score, decay, UI), for a decision that is currently a human choice
231
+ among at most four options.
232
+
233
+ Verdict: NO-GO.
234
+
235
+ ## Recommended single next slice
236
+
237
+ Title: Claim-time overlap advisory with recorded event (flag only, relay + `kenaz_pool_claim` response).
238
+
239
+ What: when a node claims a pool card, the relay compares the card's `scope_paths` with the
240
+ `touching_files` and active-claim `scope_paths` of other nodes (reusing the matching rule in
241
+ `remote-conflict.js:44-87`, ported to the relay or exposed via an existing endpoint), and returns an
242
+ `overlap_advisory` list in the claim response without refusing the claim. It writes a
243
+ `reason=overlap_advisory` event into `task_state_events` with the other node and file, the same way
244
+ `reason=takeover` is recorded at `tasks.rs:965-972`. The claimer or human decides what to do.
245
+
246
+ Why this one: it is the only mechanism with an existing data source, an existing mechanical rule and a
247
+ flag-only shape that cannot cause duplicated human work. It adds no automatic action. It also produces
248
+ the evidence (how often overlap actually occurs, at claim time) that (b), (c) and (d) currently lack,
249
+ so a later decision can be made on logs rather than on biology.
250
+
251
+ Size: normal card, about 2 files plus tests: relay `tasks.rs` (advisory + event + tests against an
252
+ in-memory DB like the TASK_2227 tests) and `pool.rs` (pass the advisory through the claim result).
253
+ It does not change the peer wire protocol. It still touches shared relay behaviour, so it needs the
254
+ user's go-ahead after this document.
255
+
256
+ Not recommended now: any of (b), (e), (f); automatic inhibition from (d); load-gated sends from (c).
@@ -0,0 +1,101 @@
1
+ 'use strict';
2
+ // TASK_2299: codex-hook-shim per-turn peer pull. Runs the real shim as a child process against a stub
3
+ // /api/peer backend (never the live one). Run: node --test dev/specs/peer/codex-hook-shim-peer.test.js
4
+ const test = require('node:test');
5
+ const assert = require('node:assert/strict');
6
+ const http = require('http');
7
+ const fs = require('fs');
8
+ const os = require('os');
9
+ const path = require('path');
10
+ const { spawn } = require('child_process');
11
+
12
+ const SHIM = path.resolve(__dirname, '../../../.formation/bifrost/openai/codex-hook-shim.js');
13
+
14
+ function startStub(pending) {
15
+ const calls = [];
16
+ const server = http.createServer((req, res) => {
17
+ let body = '';
18
+ req.on('data', (c) => { body += c; });
19
+ req.on('end', () => {
20
+ calls.push({ method: req.method, url: req.url, body });
21
+ res.setHeader('content-type', 'application/json');
22
+ if (req.method === 'GET' && req.url.startsWith('/api/peer/pending')) {
23
+ res.end(JSON.stringify({ messages: pending.slice() }));
24
+ } else if (req.method === 'POST' && req.url === '/api/peer/ack') {
25
+ const ids = JSON.parse(body).ids;
26
+ for (let i = pending.length - 1; i >= 0; i--) if (ids.includes(pending[i].id)) pending.splice(i, 1);
27
+ res.end(JSON.stringify({ acked: ids }));
28
+ } else res.end('{}');
29
+ });
30
+ });
31
+ return new Promise((r) => server.listen(0, '127.0.0.1', () => r({ server, calls, port: server.address().port })));
32
+ }
33
+
34
+ function runShim(port, event, projectRoot, pull = true) {
35
+ // async spawn: the stub server lives in this process.
36
+ return new Promise((resolve) => {
37
+ const env = { ...process.env, KENAZ_HTTP_PORT: String(port), KENAZ_CONSOLIDATE_ROOT: projectRoot };
38
+ if (pull) env.KENAZ_PEER_PULL = '1'; else delete env.KENAZ_PEER_PULL;
39
+ const child = spawn('node', [SHIM], {
40
+ env,
41
+ stdio: ['pipe', 'pipe', 'pipe'],
42
+ });
43
+ let out = '';
44
+ child.stdout.on('data', (c) => { out += c; });
45
+ child.on('close', (code) => resolve({ code, out }));
46
+ child.stdin.end(JSON.stringify({ hook_event_name: event, session_id: 'sess-1', cwd: projectRoot, prompt: 'hi' }));
47
+ });
48
+ }
49
+
50
+ const MSG = { id: 'm1', thread_id: 't1', from_node: 'node-a', from_project_label: 'proj', kind: 'request', body: 'NONCE_PEER_77 please <b>look</b>' };
51
+
52
+ // Codex rejects UserPromptSubmit stdout that is not one valid JSON object ("hook returned invalid
53
+ // user prompt submit JSON output", peer report 2026-10-04). Empty stdout is also accepted.
54
+ function contextOf(out) {
55
+ if (out.trim() === '') return '';
56
+ const parsed = JSON.parse(out); // throws on plain text or multiple objects
57
+ assert.equal(parsed.hookSpecificOutput.hookEventName, 'UserPromptSubmit');
58
+ return parsed.hookSpecificOutput.additionalContext;
59
+ }
60
+
61
+ test('pending peer message is emitted once on UserPromptSubmit and acked by id; second prompt emits nothing', async () => {
62
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), 'codex-shim-peer-'));
63
+ const pending = [MSG];
64
+ const { server, calls, port } = await startStub(pending);
65
+ try {
66
+ const first = await runShim(port, 'UserPromptSubmit', root);
67
+ assert.equal(first.code, 0);
68
+ const ctx = contextOf(first.out);
69
+ assert.match(ctx, /NONCE_PEER_77/);
70
+ assert.match(ctx, /from node-a@proj/);
71
+ assert.doesNotMatch(ctx, /not an instruction/);
72
+ assert.doesNotMatch(ctx, /<b>/, 'markup must be defanged');
73
+ const get = calls.find((c) => c.method === 'GET');
74
+ assert.match(get.url, /peek=true/);
75
+ assert.match(get.url, /sessionId=sess-1/);
76
+ const acks = calls.filter((c) => c.method === 'POST');
77
+ assert.equal(acks.length, 1);
78
+ assert.deepEqual(JSON.parse(acks[0].body).ids, ['m1']);
79
+
80
+ const second = await runShim(port, 'UserPromptSubmit', root);
81
+ assert.doesNotMatch(contextOf(second.out), /NONCE_PEER_77/);
82
+ assert.equal(calls.filter((c) => c.method === 'POST').length, 1, 'no second ack');
83
+ } finally { server.close(); }
84
+ });
85
+
86
+ test('negative control: marker absent (headless worker) makes zero peer requests even with a pending message', async () => {
87
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), 'codex-shim-peer-'));
88
+ const { server, calls, port } = await startStub([MSG]);
89
+ try {
90
+ const r = await runShim(port, 'UserPromptSubmit', root, false);
91
+ assert.equal(r.out.trim(), '');
92
+ assert.equal(calls.filter((c) => c.url.startsWith('/api/peer')).length, 0);
93
+ } finally { server.close(); }
94
+ });
95
+
96
+ test('fail-open: unreachable backend emits nothing and exits 0', async () => {
97
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), 'codex-shim-peer-'));
98
+ const r = await runShim(1, 'UserPromptSubmit', root);
99
+ assert.equal(r.code, 0);
100
+ assert.equal(r.out.trim(), '');
101
+ });