kenaz 0.3.2 → 0.3.3

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 (390) hide show
  1. package/core/.agents/skills/typesafe-ai/LICENSE +21 -21
  2. package/core/.agents/skills/typesafe-ai/SKILL.md +149 -149
  3. package/core/.claude/commands/Ansuz.md +19 -30
  4. package/core/.claude/hooks/_ansuz-conversation.js +1 -0
  5. package/core/.claude/hooks/_ansuz-conversation.test.js +6 -0
  6. package/core/.claude/hooks/_run-user-prompt.js +0 -4
  7. package/core/.claude/hooks/_run-user-prompt.test.js +2 -3
  8. package/core/.claude/hooks/session-init.ps1 +49 -49
  9. package/core/.claude/settings.json +0 -37
  10. package/core/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -26
  11. package/core/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -97
  12. package/core/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -101
  13. package/core/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -31
  14. package/core/.claude/skills/ui-ux-pro-max/data/products.csv +96 -96
  15. package/core/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  16. package/core/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  17. package/core/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  18. package/core/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  19. package/core/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  20. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  21. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  22. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  23. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  24. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  25. package/core/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  26. package/core/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  27. package/core/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  28. package/core/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  29. package/core/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -68
  30. package/core/.claude/skills/ui-ux-pro-max/data/typography.csv +57 -57
  31. package/core/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  32. package/core/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  33. package/core/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  34. package/core/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -253
  35. package/core/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  36. package/core/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -106
  37. package/core/.collaboration/core/task-api.js +3 -8
  38. package/core/.formation/tests/hello.txt +2 -2
  39. package/core/.formation/tools/prompt.js +58 -5
  40. package/core/.formation/tools/prompt.test.js +29 -0
  41. package/core/.kenaz/claude-hooks-manifest.json +16 -16
  42. package/core/.kenaz/knowledge/ladybug_2c51da1e_shadow_file_frame_group.patch +163 -163
  43. package/core/.kenaz/knowledge/ladybug_30cf85690e_shadow_page_read_during_checkpoint.patch +393 -393
  44. package/core/.kenaz/knowledge/ladybug_7a17858d3a_node_group_delete_lock.patch +102 -102
  45. package/core/.kenaz/knowledge/ladybug_926a0ba1_column_checkpoint.patch +412 -412
  46. package/core/.kenaz/knowledge/ladybug_a346c4c4b6_pk_index_header_pages.patch +144 -144
  47. package/core/.kenaz/knowledge/ladybug_ba5f38815b_csr_node_group.patch +86 -86
  48. package/core/.kenaz/muninn_episode_write.ps1 +17 -17
  49. package/core/.kenaz/specialist/field_report_watermark.json +1 -1
  50. package/core/.kenaz/specialist/memory_guard_fired.json +1 -1
  51. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +1 -1
  52. package/core/.kenaz/specialist/t1777_probe.txt +1 -1
  53. package/core/.matrix/index.matrix +5 -5
  54. package/core/.specialist/Ansuz/RULES.md +6 -10
  55. package/core/.specialist/tools/__tests__/task-2218-boot-session-id.test.js +17 -1
  56. package/core/.specialist/tools/__tests__/task-2222-session-identity-interleave.test.js +17 -1
  57. package/core/.specialist/tools/__tests__/task-2254-handoff-archive-contract.test.js +6 -5
  58. package/core/.specialist/tools/ansuz-boot-fast.js +44 -100
  59. package/core/.specialist/tools/ansuz-boot-fast.test.js +45 -1
  60. package/core/KENAZ_CORE_VERSION +1 -1
  61. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +355 -355
  62. package/core/dev/JEV_INTEGRATION_PLAN.md +189 -189
  63. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +13 -13
  64. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +9 -9
  65. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +14 -14
  66. package/core/dev/design/matrix_v2_EXAMPLE.matrix +67 -67
  67. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +52 -52
  68. package/core/dev/jev-eval/CONTEXT_REVIEW.md +31 -31
  69. package/core/dev/jev-eval/EVALUATION_STATUS.md +39 -39
  70. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +33 -33
  71. package/core/dev/jev-eval/README.md +99 -99
  72. package/core/dev/jev-eval/THALAMUS_RANKING.md +58 -58
  73. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +32 -32
  74. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +48 -48
  75. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +52 -52
  76. package/core/dev/pipeline/SELF_ENHANCEMENT_STATUS.json.bak +47 -47
  77. package/core/dev/pipeline/tasks/.gitkeep +1 -1
  78. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +27 -27
  79. package/core/dev/plans/ANSUZ_SLIM_PLAN.md +68 -0
  80. package/core/dev/scripts/init_git.sh +0 -0
  81. package/core/dev/scripts/init_project.sh +0 -0
  82. package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +536 -536
  83. package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +1978 -1978
  84. package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +140 -140
  85. package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +173 -173
  86. package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +168 -168
  87. package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +126 -126
  88. package/core/dev/scripts/multi_agent_scheduler.sh +0 -0
  89. package/core/dev/scripts/run_once.sh +0 -0
  90. package/core/dev/scripts/setup_mcp.sh +0 -0
  91. package/core/dev/scripts/setup_rag.sh +0 -0
  92. package/core/dev/scripts/start_dev_agent.sh +0 -0
  93. package/core/dev/scripts/start_multi_agent.sh +0 -0
  94. package/core/dev/scripts/sync_task_queue.sh +0 -0
  95. package/core/k-cli/dist/alaya/run.js +91 -0
  96. package/core/k-cli/dist/core/output.js +24 -0
  97. package/core/k-cli/dist/core/process.js +38 -0
  98. package/core/k-cli/dist/core/project.js +80 -0
  99. package/core/k-cli/dist/core/spawn.js +268 -0
  100. package/core/k-cli/dist/core/types.js +2 -0
  101. package/core/k-cli/dist/dashboard/update.js +53 -0
  102. package/core/k-cli/dist/dashboard/version.js +20 -0
  103. package/core/k-cli/dist/dispatch/run.js +241 -0
  104. package/core/k-cli/dist/dispatch/status.js +103 -0
  105. package/core/k-cli/dist/index.js +283 -0
  106. package/core/k-cli/dist/project/initialize.js +301 -0
  107. package/core/k-cli/dist/project/install.js +89 -0
  108. package/core/k-cli/dist/project/status.js +138 -0
  109. package/core/k-cli/dist/specialist/list.js +100 -0
  110. package/core/k-cli/dist/specialist/run.js +93 -0
  111. package/core/k-cli/dist/task/create.js +194 -0
  112. package/core/k-cli/dist/task/delete.js +98 -0
  113. package/core/k-cli/dist/task/get.js +55 -0
  114. package/core/k-cli/dist/task/list.js +58 -0
  115. package/core/k-cli/dist/task/submit.js +156 -0
  116. package/core/k-cli/dist/ygg/run.js +51 -0
  117. package/core/k-cli/node_modules/.bin/yaml +16 -0
  118. package/core/k-cli/node_modules/.bin/yaml.cmd +17 -0
  119. package/core/k-cli/node_modules/.bin/yaml.ps1 +28 -0
  120. package/core/k-cli/node_modules/.package-lock.json +23 -0
  121. package/core/k-cli/node_modules/yaml/LICENSE +13 -0
  122. package/core/k-cli/node_modules/yaml/README.md +172 -0
  123. package/core/k-cli/node_modules/yaml/bin.mjs +11 -0
  124. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  125. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  126. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  127. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  128. package/core/k-cli/node_modules/yaml/browser/dist/compose/composer.js +217 -0
  129. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  130. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  131. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  132. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  133. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  134. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +223 -0
  135. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  136. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  137. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  138. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  139. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  140. package/core/k-cli/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  141. package/core/k-cli/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  142. package/core/k-cli/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  143. package/core/k-cli/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  144. package/core/k-cli/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  145. package/core/k-cli/node_modules/yaml/browser/dist/errors.js +57 -0
  146. package/core/k-cli/node_modules/yaml/browser/dist/index.js +17 -0
  147. package/core/k-cli/node_modules/yaml/browser/dist/log.js +11 -0
  148. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Alias.js +114 -0
  149. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  150. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  151. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  152. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  153. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  154. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  155. package/core/k-cli/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  156. package/core/k-cli/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  157. package/core/k-cli/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  158. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  159. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  160. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  161. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  162. package/core/k-cli/node_modules/yaml/browser/dist/parse/lexer.js +717 -0
  163. package/core/k-cli/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  164. package/core/k-cli/node_modules/yaml/browser/dist/parse/parser.js +967 -0
  165. package/core/k-cli/node_modules/yaml/browser/dist/public-api.js +102 -0
  166. package/core/k-cli/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  167. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  168. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  169. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  170. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  171. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  172. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  173. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  174. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  175. package/core/k-cli/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  176. package/core/k-cli/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  177. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  178. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  179. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  180. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  181. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +64 -0
  182. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  183. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  184. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  185. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  186. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  187. package/core/k-cli/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  188. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  189. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  190. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  191. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  192. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +24 -0
  193. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  194. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  195. package/core/k-cli/node_modules/yaml/browser/dist/util.js +11 -0
  196. package/core/k-cli/node_modules/yaml/browser/dist/visit.js +233 -0
  197. package/core/k-cli/node_modules/yaml/browser/index.js +5 -0
  198. package/core/k-cli/node_modules/yaml/browser/package.json +3 -0
  199. package/core/k-cli/node_modules/yaml/dist/cli.d.ts +8 -0
  200. package/core/k-cli/node_modules/yaml/dist/cli.mjs +201 -0
  201. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  202. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  203. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  204. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  205. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  206. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.js +112 -0
  207. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  208. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  209. package/core/k-cli/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  210. package/core/k-cli/node_modules/yaml/dist/compose/composer.js +222 -0
  211. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  212. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  213. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  214. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  215. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  216. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  217. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  218. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  219. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  220. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  221. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  222. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.js +225 -0
  223. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  224. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  225. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  226. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  227. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  228. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  229. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  230. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  231. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  232. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  233. package/core/k-cli/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  234. package/core/k-cli/node_modules/yaml/dist/doc/Document.js +337 -0
  235. package/core/k-cli/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  236. package/core/k-cli/node_modules/yaml/dist/doc/anchors.js +76 -0
  237. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  238. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  239. package/core/k-cli/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  240. package/core/k-cli/node_modules/yaml/dist/doc/createNode.js +90 -0
  241. package/core/k-cli/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  242. package/core/k-cli/node_modules/yaml/dist/doc/directives.js +178 -0
  243. package/core/k-cli/node_modules/yaml/dist/errors.d.ts +21 -0
  244. package/core/k-cli/node_modules/yaml/dist/errors.js +62 -0
  245. package/core/k-cli/node_modules/yaml/dist/index.d.ts +25 -0
  246. package/core/k-cli/node_modules/yaml/dist/index.js +50 -0
  247. package/core/k-cli/node_modules/yaml/dist/log.d.ts +3 -0
  248. package/core/k-cli/node_modules/yaml/dist/log.js +19 -0
  249. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  250. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.js +116 -0
  251. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  252. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.js +151 -0
  253. package/core/k-cli/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  254. package/core/k-cli/node_modules/yaml/dist/nodes/Node.js +40 -0
  255. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  256. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.js +39 -0
  257. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.d.ts +43 -0
  258. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  259. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  260. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  261. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  262. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  263. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  264. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  265. package/core/k-cli/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  266. package/core/k-cli/node_modules/yaml/dist/nodes/identity.js +53 -0
  267. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  268. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.js +39 -0
  269. package/core/k-cli/node_modules/yaml/dist/options.d.ts +350 -0
  270. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  271. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  272. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  273. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  274. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  275. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  276. package/core/k-cli/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  277. package/core/k-cli/node_modules/yaml/dist/parse/cst.js +112 -0
  278. package/core/k-cli/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  279. package/core/k-cli/node_modules/yaml/dist/parse/lexer.js +719 -0
  280. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  281. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.js +41 -0
  282. package/core/k-cli/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  283. package/core/k-cli/node_modules/yaml/dist/parse/parser.js +972 -0
  284. package/core/k-cli/node_modules/yaml/dist/public-api.d.ts +44 -0
  285. package/core/k-cli/node_modules/yaml/dist/public-api.js +107 -0
  286. package/core/k-cli/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  287. package/core/k-cli/node_modules/yaml/dist/schema/Schema.js +39 -0
  288. package/core/k-cli/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  289. package/core/k-cli/node_modules/yaml/dist/schema/common/map.js +19 -0
  290. package/core/k-cli/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  291. package/core/k-cli/node_modules/yaml/dist/schema/common/null.js +17 -0
  292. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  293. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.js +19 -0
  294. package/core/k-cli/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  295. package/core/k-cli/node_modules/yaml/dist/schema/common/string.js +16 -0
  296. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  297. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.js +21 -0
  298. package/core/k-cli/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  299. package/core/k-cli/node_modules/yaml/dist/schema/core/float.js +47 -0
  300. package/core/k-cli/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  301. package/core/k-cli/node_modules/yaml/dist/schema/core/int.js +42 -0
  302. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  303. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.js +25 -0
  304. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  305. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.js +64 -0
  306. package/core/k-cli/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  307. package/core/k-cli/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  308. package/core/k-cli/node_modules/yaml/dist/schema/tags.js +99 -0
  309. package/core/k-cli/node_modules/yaml/dist/schema/types.d.ts +92 -0
  310. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  311. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  312. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  313. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  314. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  315. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  316. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  317. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  318. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  319. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.js +68 -0
  320. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  321. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  322. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  323. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  324. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  325. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  326. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  327. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  328. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  329. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  330. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  331. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  332. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  333. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.js +132 -0
  334. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  335. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  336. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  337. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  338. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  339. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  340. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  341. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.js +26 -0
  342. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  343. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  344. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  345. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  346. package/core/k-cli/node_modules/yaml/dist/test-events.d.ts +4 -0
  347. package/core/k-cli/node_modules/yaml/dist/test-events.js +134 -0
  348. package/core/k-cli/node_modules/yaml/dist/util.d.ts +16 -0
  349. package/core/k-cli/node_modules/yaml/dist/util.js +28 -0
  350. package/core/k-cli/node_modules/yaml/dist/visit.d.ts +102 -0
  351. package/core/k-cli/node_modules/yaml/dist/visit.js +236 -0
  352. package/core/k-cli/node_modules/yaml/package.json +97 -0
  353. package/core/k-cli/node_modules/yaml/util.js +2 -0
  354. package/core/plugins/kenaz/commands/Ansuz.md +19 -30
  355. package/core/plugins/kenaz/hooks/hooks.json +1 -5
  356. package/core/plugins/kenaz/hooks/kenaz-hook.js +0 -4
  357. package/core/plugins/kenaz/scripts/kenaz.test.js +1 -1
  358. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/charts.csv +26 -26
  359. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/colors.csv +97 -97
  360. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/icons.csv +101 -101
  361. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/landing.csv +31 -31
  362. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/products.csv +96 -96
  363. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  364. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  365. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  366. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  367. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  368. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  369. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  370. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  371. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  372. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  373. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  374. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  375. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  376. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  377. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/styles.csv +68 -68
  378. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/typography.csv +57 -57
  379. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  380. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  381. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  382. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/core.py +253 -253
  383. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  384. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/search.py +106 -106
  385. package/lib/cli.js +36 -2
  386. package/lib/cli.test.js +24 -0
  387. package/lib/dashboard.js +10 -0
  388. package/package.json +6 -6
  389. package/core/.specialist/tools/__tests__/task-1863-boot-lease-reuse.test.js +0 -99
  390. package/core/.specialist/tools/__tests__/task-1977-banner-cap.test.js +0 -129
@@ -1,189 +1,189 @@
1
- # Kenaz × Jev 導入規劃
2
-
3
-
4
- Current Dashboard UI uses one Jev switch for correction and Thalamus together (TASK_1970). Local Thalamus integration and verification: [delivery ranking](jev-eval/THALAMUS_RANKING.md). Authoritative tracking is now KenazAI TASK_1965-1968, with quotation TASK_43-46 retained as historical cross-references.
5
- 最新進度(2026-09-20):依使用者決定,已在本機實作預設關閉、可直接影響正式更正辨識的專案開關與本機回饋。使用方式、測試及限制見 [Active correction experiment](jev-eval/ACTIVE_CORRECTION.md)。以下保留最初提案及各階段紀錄;其中「production 未接線」描述的是當時狀態,不是目前原始碼狀態。尚未打包或發布安裝版,真實工作流程品質仍未驗證。
6
-
7
- 日期:2026-09-20。狀態:調查與設計提案;未實作、未安裝外掛、未發送 Kenaz 紀錄到 Jev API。以下數值為提議的實驗與上線門檻,除明確標示官方案例外,均不是實測結果。
8
-
9
- ## 1. 決策
10
-
11
- 引入可選的語意判斷能力,先改善證據與記憶選取,再評估即時修正辨識。確定性計算、權限、任務完成判定仍由現有程式與驗證流程負責。
12
-
13
- 第一個候選上線功能:Synapse 英文 rune 的相關性重排。第一批並行研究:繁體中文修正辨識。交接的原文證據保留同步設計,主會話壓縮放到最後。
14
-
15
- 不以供應商延遲展示作為 Kenaz 加速倍數,不將模型回傳的 confidence 視為已在 Kenaz 校準的正確率。
16
-
17
- ## 2. 已核對的事實
18
-
19
- | 事實 | 來源 | 設計影響 |
20
- | --- | --- | --- |
21
- | Jev 支援 Choice、Score、Noul;同一 request 的問題獨立評估。 | [Primitives](https://docs.typesafe.ai/primitives) | 相同 state 的獨立問題合併;相依問題必須另一步處理。 |
22
- | Noul 僅提供 yes 機率,沒有獨立 confidence;Choice/Score 的 confidence 是分布的統計量。 | [Confidence](https://docs.typesafe.ai/confidence) | 不混用欄位,不把不同題型的門檻相互套用。 |
23
- | 目前 models 頁列 jev-1.13.0;總 request 上限 64k tokens,state 加最長單題上限 32k。 | [Models](https://docs.typesafe.ai/models) | 固定版本測試;原 compaction repo 的 25k/30k 設定是該實作的預算,不是完整最新模型上限。 |
24
- | 英文是主要訓練語言;中文等語言可輸入,但效果不等同英文。 | 同上 | 中文辨識要獨立驗收,不能沿用英文門檻。 |
25
- | 大量無關 state、複雜間接推理、數字與日期運算、對抗文字是已知弱點;不適合文字生成。 | [Jev 1.13 limitations](https://docs.typesafe.ai/model-jaggedness/jev-1.13) | 先篩選再送模型;翻譯、根因分析與計算不可整段替換。 |
26
- | 官方 13 問案例:批次約 0.27 秒,循序單問合計約 2.71 秒;五次重複,非 Kenaz workload。 | [Parallel questions](https://docs.typesafe.ai/cookbooks/parallel_questions) | 需要與並行基準比較,量端到端 p95,而非引用十倍加速。 |
27
- | Muninn 分類器使用同步 Haiku CLI,同時翻譯與分類七種訊號,timeout 30 秒。 | `.formation/tools/muninn.js:translateAndClassifyMessages` | 拆開分類與翻譯才可能移除關鍵路徑等待;30 秒是上限,不是實際延遲。 |
28
- | 分類結果的英文 translated text 被 extractDomain 使用。 | `.formation/tools/muninn.js:extractUserSignals` | 保留下游契約,不能刪除翻譯欄位而假裝行為一致。 |
29
- | Codex 自動 episode 摘要取最前面三段助手文字,再截短;不是所有交接來源均如此。 | `.formation/bifrost/shared/consolidate.js:extractEpisodeFromTranscript` | 改善最後決策與證據覆蓋,不只換摘要模型。 |
30
- | Muninn 的 formatJSONLChunk 省略 tool_result 細節。 | `.formation/tools/muninn-watcher.js:formatJSONLChunk` | 應從原始紀錄建立重要結果索引,不能對已遺失的內容做排序。 |
31
- | turn-context hook 對主要 HTTP 請求設 500ms timeout,另有 800ms active sensing timeout。 | `.claude/hooks/turn-context.js` | 不可直接在既有同步 endpoint 裡塞入無上限外部模型等待。 |
32
- | 該 hook 建構的 turn-context/recall URL 未顯式帶 projectPath;後端允許預設專案。 | 同上;`routes/synapse.rs:TurnContextQuery` | 接入前確認 session/project 契約;不可讓 Jev 猜測專案。此處是靜態風險,尚未證明現場誤路由。 |
33
- | recall 已有 reranking;hybrid 在最終集合寫 rune_usage_log/co_recall_log。 | `features/retrieval.rs`; `synapse/memory/semantic.rs`; `memory/recall.rs` | 加入 Jev 後仍必須只記錄真正交付的最終結果;shadow 不得改動學習統計。 |
34
- | Bifröst relay 啟動 Codex CLI 並轉譯事件;shim 有 UserPromptSubmit 正規化。 | `.formation/bifrost/openai/relay.js`; `codex-hook-shim.js` | 事件正規化不代表當前客戶端一定支援同回合注入或內部 compaction 替換,需端到端驗證。 |
35
-
36
- 工作樹存在其他未提交工作,含 Bifröst fast boot 與 Phase 9 政策。此提案不重做或覆蓋它們;後續實作需以當時基線重新確認。
37
-
38
- ## 3. 功能順序
39
-
40
- | 優先 | 功能 | Jev 的工作 | 明確邊界 |
41
- | --- | --- | --- | --- |
42
- | P0 | 事件、來源、版本與評測基礎 | 暫無控制權 | 先證明資料進出正確、可回放。 |
43
- | P1 | 英文 rune 重排 | 對每個候選判斷與查詢/任務的直接相關性 | 不改 rune,不移除原始資料,不跨專案查詢。 |
44
- | P1 shadow | 中文修正與範圍變更辨識 | 多標籤判斷、選出已知且被修正的 assumption 候選 | 不生成新事實,不自動擴權、切換專案或標記任務完成。 |
45
- | P2 | 交接證據選取 | 在已封存的候選片段中評估後續必要性 | 原文固定保留;摘要可選,且必須有來源。 |
46
- | P3 | 工具結果語意分流 | 識別警告、可能矛盾、值得調查的新資訊 | exit code、測試成功、檔案清單由 parser/工具本身決定。 |
47
- | P4 | 主會話選擇性壓縮 | 提供保留建議 | 僅在客戶端接口、回復能力與品質驗收全部通過後啟用。 |
48
-
49
- 任務角色推薦可在上述資料契約穩定後另做研究。合併、部署、授權與 Phase 9 通過判定不列入 Jev 自動決策。
50
-
51
- ## 4. 共用架構與資料契約
52
-
53
- 離線評測先使用 Node 非同步 HTTP adapter,不啟動額外常駐服務。上線時將 provider client 放在現有 Dashboard Rust 服務的獨立非同步模組,Node hooks/觀察器透過既有本機通道呼叫。不要讓每個 hook 各自持有 key、重試和限流策略;不新增啟動必需的外部服務。
54
-
55
- 共用流程:事件正規化 → 本地篩選/資料政策 → 依用途建立小型 state → Jev 批次問題 → 嚴格驗證回答 → 本地決策 → 消費者。模型僅得到完成該判斷所需欄位。
56
-
57
- 每筆輸入必須帶:schema_version、project_id/明確 projectPath、session_id、task_id(可空)、event_id、event_seq、task_revision、purpose、source_refs、state_hash。相同文字的兩次事件仍有不同 event_id。
58
-
59
- 每筆結果記錄:request_id、model 的實際版本、question_set_version、原始 probabilities/score、policy_version、latency、usage、status、fallback_reason、source_refs。status 明確區分 ok、abstain、timeout、unavailable、invalid、stale。
60
-
61
- 用 event_id 去重處理;用 state_hash + purpose + 專案 + 模型版本 + 問題版本 + 任務版本做計算快取。兩者不能混用。模型成功只證明評分完成,不證明判斷正確或已被代理採用。
62
-
63
- ## 5. 三條主要流程
64
-
65
- **A. Rune 重排**
66
-
67
- 沿用現有 FTS/semantic/RRF 與本地排序,取得同專案候選。實驗從最多 12 個候選、約 8k token 的小型 state 開始;不足時明確標示 excerpt,不能將被截掉的資訊當成不存在。
68
-
69
- 每個候選使用固定 rubric 的 Score 判斷相關性,例如 unrelated / background / useful / directly answers。程式指定正確的 `candidates[i]`;題目 ID 本身不會傳入模型,因此 instructions 內必須包含索引與判斷條件。
70
-
71
- 第一版僅重排,維持既有結果數量;不以低分刪除所有結果。同分、缺資訊及模型失敗時保留既有排序。不得直接把 Jev 機率加到尺度不同的 BM25/RRF 分數;先採 Jev 分級排序、原排序做 tie-break,之後才評估校準融合。
72
-
73
- 整合應位於可 await 的服務協調層,不能在持有 SQLite/Kuzu 鎖時等待網路。若候選讀取與最終 telemetry 目前綁在同步函數中,先拆成 candidate retrieval 和 final delivery logging,讓舊路徑也沿用同一出口。shadow 必須使用不產生正式 recall/co-recall/acted-on 副作用的候選路徑。
74
-
75
- **B. 用戶修正辨識**
76
-
77
- state 包含當前目標、少量具來源的 active assumptions、最新用戶原文、必要的前幾回合;不是整段 transcript。以獨立 Noul 問題辨識 correction、scope clarification、new constraint、question 等可共存訊號。
78
-
79
- 對固定欄位可使用 Choice,例如 deployment_target = installed / development / both / unspecified。自由格式的更正內容由主代理解析,或先提出帶原文來源的候選,再由 Jev 評分;Jev 本身不生成任意文字 patch。
80
-
81
- 初期結果只是「帶來源的修正候選」。當回合原始用戶訊息始終直接交给代理;即使 Jev 失敗也不能把修正漏掉。對新訊息,event_seq/task_revision 不匹配的遲到結果標 stale,不覆蓋新狀態。
82
-
83
- 翻譯留在背景或持久記憶寫入階段,以 source hash 去重。英文長期記憶規則保留,中文原文僅作證據來源。不在同步 fast path 執行 Haiku fallback。中文品質不足時保持現有分類路徑,不用英文測試結果推定中文可上線。
84
-
85
- 同回合可用性需要 capability 測試:hook 收到真實 user prompt → 結果抵達 → 當回合代理確實收到且引用。只能寫 log 或下回合讀取者,標為 next-turn,不能宣稱即時阻止錯誤行動。
86
-
87
- **C. 交接與工具證據**
88
-
89
- 重用 transcript tee 與 per-session handoff,加入 evidence_refs,而不是另造交接檔案體系。每筆引用包括 project/session/event、tool_use_id、原文位置、內容 hash、觀測時間,以及可取得時的 commit/file version。
90
-
91
- 固定保留:明確用戶修正、未完成/執行中動作、未解決錯誤、變更回執、驗收結果及尚待回答的問題。資料檔保留原文,工作上下文可只附必要片段和讀回入口。
92
-
93
- 工具呼叫/結果維持配對。圖片、PDF、二進位證據附原始資產引用;Jev 僅支援文字,不能把未看懂的非文字結果當作無用。多個新舊檔案版本不可只憑路徑去重。
94
-
95
- 原 compaction 的「可重跑工具」不適用於寫入、部署、訊息发送等有副作用行為,也不適用於不可重現的故障。回復流程優先讀封存原文,不重做動作。
96
-
97
- ## 6. 延遲、失敗與隔離政策
98
-
99
- 實驗初始預算:recall 重排與同回合修正候選的總額外等待至多 800ms;包含排隊、網路、驗證,不能每一層各等 800ms。這是可接受上限,不是 Jev 的速度承諾;是否保留同步模式由實測決定。
100
-
101
- 背景工作使用獨立低優先佇列;初始總 concurrency 4、每 session 1,可依實測調整。短期排隊滿時優先保留最近的同任務修正事件,丟棄可重算的過時評分工作,但不能丟原始事件。
102
-
103
- 同步路徑不重試。背景對 429/529/暫時性網路錯誤做有限次帶 jitter 的 backoff,遵守 Retry-After;超出總期限後留待後續回放。401/422 不盲重試。連續故障時熔斷 provider,沿用本地行為。
104
-
105
- feature flag 按用途設 off / shadow / advisory / active;一鍵切 off 不需要資料回滾。shadow 結果不進正式權重、用戶模型或任務狀態。單一用途故障不能使 Dashboard 顯示 Initializing 或延遲主視窗啟動。
106
-
107
- 外部請求只由後端發送;不把 provider key 放前端或隨安裝包配送。小範圍試驗使用開發環境 key;發佈產品前再決定 BYOK 或具驗證的服務端代理,兩者都不能把共用 key 放客戶端。
108
-
109
- 每個專案可獨立禁止外送。先核對供應商資料條款;官方的「不訓練」不等於所有帳號都零保留。預設只記錄 metadata/hash,禁止 API key/完整敏感 prompt 進普通 logs。程序權限與來源隔離是硬規則,不由 Jev 自評。
110
-
111
- ## 7. 評測與上線門檻
112
-
113
- 建立版本化、人工標註的資料集,分開 development/calibration/held-out。以 session 與時間切分,不能把同一段對話的近似改寫分散在訓練/測試兩側。
114
-
115
- 初始資料規模:500 則訊息(至少 150 則真修正,涵蓋繁中、英文、混合語言)、100 組 recall 查詢/候選集、30 段交接情境。這是起始評估,不能由少量零錯誤推論全面安全;報告各類別分母與信賴區間,必要時補樣本。
116
-
117
- 測試情境包含:安裝版/dev 更正、暫停與取消、插入狀態追問但主目標不變、含否定/引用/反諷、同名跨專案符號、舊錯誤已修正、新舊 commit、工具成功 exit code 但正文有警告、quoted prompt injection、並行 session、亂序結果、重複 hook、無網路與服務未啟動。
118
-
119
- 比較組:既有流程、純規則、本地候選+Jev、現有 Haiku 分類;分類品質用相同原文與標註比較,同時另外測量現行翻譯+分類端到端時間。Jev 批次同時比較循序/並行單問,避免誇大倍數。
120
-
121
- | 項目 | 提議門檻與量測 |
122
- | --- | --- |
123
- | 修正辨識 | held-out precision ≥95%、recall ≥98%,分語言報告;固定重要修正案例零漏失。報告 abstention coverage,不能排除 abstain 後冒充全體高準確。 |
124
- | Rune 重排 | nDCG@5 相對既有提升 ≥10%,Recall@5 的非劣容忍界線為 -1 個百分點;paired bootstrap 95% 區間也需支持非劣。 |
125
- | 工作流收益 | 回放後衡量查錯環境、忽略修正、重複工具呼叫與原任務完成率;分類高分但行為不改善者不升級。 |
126
- | 延遲 | p50/p95/p99、timeout 比例、排隊時間、冷/熱連線分開;同步額外等待總預算 ≤800ms,超時一律 fallback。 |
127
- | 交接 | 固定保護項目全部可讀回,引用 hash 一致;不能僅量摘要短度。 |
128
- | 隔離 | 跨專案/跨 session/過時版本污染測試零失敗;副作用工具不得因找回上下文而重跑。 |
129
- | 回退 | 401/422/429/529、斷線、畸形輸出、缺失 question ID、NaN、越界 probability 均有明確狀態與既有路徑。 |
130
- | 完整性 | tool-call/result 配對、結果來源與模型版本可追;shadow 不改學習統計;off 恢復基線行為。 |
131
-
132
- Noul 機率用 Brier score、可靠度分桶及 precision-recall 曲線校準;Choice/Score 分開處理。門檻以用途和誤判成本決定,不能一律 0.5/0.9。模型版本、rubric 或語言變更時重新驗收。
133
-
134
- 不能以「另一個模型同意」作唯一 ground truth,不能把 Jev 高 confidence 回饋成自己的正確性獎勵。下游是否引用 rune 與任務是否成功分開記錄,避免把相關性當成因果改善。
135
-
136
- ## 8. 工作包與真實依賴
137
-
138
- 以下 J0–J7 為工作包編號;後續已授權執行 J0/J1 原型,實際進度見第 10 節。尚未 merge。
139
-
140
- | 工作包 | 產物/主要範圍 | 依賴 | 驗收 |
141
- | --- | --- | --- | --- |
142
- | J0 規格與標註 | 資料契約、用途 rubric、人工評測集;docs/fixtures | 無 | 每筆標註具來源/語言/session 分組,目標與限制可追。 |
143
- | J1 離線評測器 | 獨立非同步 adapter、回放與測量;建議新增 `dev/jev-eval/` | J0 | 不啟動代理任務、不改原資料;重複回放可比較,HTTP 失敗測試通過。 |
144
- | J2 共用 provider 服務 | 建議 `features/decision_service/`,接現有本機通道 | J1 證明至少一用途有效 | 隔離、期限、熔斷、key 不外洩、Dashboard 啟動不依賴 provider。 |
145
- | J3 Rune shadow→active | `memory/semantic.rs`、`memory/recall.rs`、服務協調層 | J2+retrieval 評測通過 | 最終交付 IDs 與 usage/co-recall logs 一致;shadow 無副作用;排序指標通過。 |
146
- | J4 修正 shadow→advisory | Muninn、用戶事件 adapter、turn-context 消費端 | J2+中文分類評測通過 | 原文來源、翻譯契約、seq/revision、防重複、每個客戶端 delivery 測試。 |
147
- | J5 證據交接 | consolidate、preservation-coordinator、handoff-resolver | J0;Jev 排序另依 J2 | 原文證據可回復;保護項不漏;不取代或覆寫其他 session。 |
148
- | J6 工具分流 | 工具事件消費端、結果索引 | J2+J5 | parser 結果優先;語意警告具來源;不自動將任務標完成。 |
149
- | J7 即時壓縮可行性 | 客戶端版本/接口實驗與回復演練 | J5+各客戶端 capability 實證 | 通過品質與回復驗收才另提上線;不直接修改 live transcript 檔案。 |
150
-
151
- J3/J4 在技術上無互相依賴;J5 的原文保全不必等模型。實作代碼與 kernel/YAML 行為政策應分開任務;這份規劃不變更現行 Ansuz 身份/授權/驗收規則。既有工作樹有其他修改,實作時需隔離並保留基線。
152
-
153
- ## 9. 尚待實驗回答
154
-
155
- - 台灣使用環境下不同輸入長度與並發量的真實延遲、中文誤判率與校準。
156
- - 現行 Haiku 分類的實際延遲分布,以及翻譯真正位於哪些消費者的必要路徑。
157
- - Claude/Codex 各種啟動方式下,hook 是否完整收到同回合 user event,以及訊號是否能及時注入。
158
- - 安裝版是否使用同一份來源/版本;不得從 dev 通過直接推論安裝版可用。
159
- - provider key 的試验配置、產品發佈時的認證方式、實際帳號 rate limit 和資料保留條款。
160
- - Jev 整體效益是否優於純規則與現有本地 reranker;若沒有,保留证據/交接改善而不啟用模型。
161
-
162
- 下一步為 J0/J1:建立標註與可回放評測,再以數據決定 J2/J3/J4 的上線範圍。先不全面安裝 fast-jev-compaction,也不承諾端到端加速倍數。
163
-
164
- ## 10. 已授權執行紀錄(2026-09-20)
165
-
166
- 使用者已授權自主處理。TASK_26 追蹤離線工具、TASK_27 追蹤資料契約與文件;依本次 session 路由規則,任務卡位於 quotation,實作則限定 KenazAI/dev/jev-eval,未更動 quotation 應用程式。
167
-
168
- - 已建立 dependency-free Node CLI、固定 Jev 版本的非同步 adapter、本地 rules 基準、prediction 回放驗證與指標報告。API 契約已對照官方文件;未執行供應商實測。
169
- - 獨立執行 15 項測試,15 通過、0 失敗;包含本機 HTTP server 模擬錯誤、串流逾時、重新導向、非法答案、身分/版本不符及分割洩漏。
170
- - 11 筆合成案例(8 correction、3 relevance)通過 validate;全為 synthetic/agent_proposed。split 名稱僅測試分割機制,不代表真人盲測資料。
171
- - [rules 基準報告](jev-eval/reports/rules-baseline.json) 已保存。它只驗證工程流程,不是 Jev 品質或延遲;規則分類 precision/recall 均為 0.5,不能推論模型優劣。
172
- - preflight 回報 api_key_available=false、network_attempted=false。無法在目前環境量測 Jev 真實延遲與品質。
173
- - [使用文件](jev-eval/README.md) 與 [標註規則](jev-eval/ANNOTATION_GUIDE.md) 已落地。人工驗證、正式資料規模、現行 Haiku/Synapse 比較、信賴區間和端到端任務評估仍未完成。
174
-
175
- 本階段為可審閱原型,尚未 commit/merge,任務未標記完成。production 未接入 Jev,promotion_eligible 固定 false。J2 仍須先有至少一個用途的可靠評測證據;下一步是在本機安全配置金鑰、準備與覆核資料後,執行 live 比較,不能由這 11 筆合成案例跳過驗收。
176
-
177
- ### 後續更新:已取得 API 並安裝 TypeSafe skill
178
-
179
- 使用者取得金鑰後,已依其指定單一方式安裝:`npx --yes skills add typesafe-ai/skills --skill typesafe-ai --agent codex --yes`。專案 skill 位於 `.agents/skills/typesafe-ai/SKILL.md`,來源與雜湊寫入 `skills-lock.json`。本回合已讀取 skill 及官方 API、模型、Score 與 reranking 文件,往後 TypeSafe 工作依此指引進行。
180
-
181
- 先前「尚無金鑰/未供應商實測」是初始紀錄,已由本次 [live smoke 報告](jev-eval/reports/live-smoke-2026-09-20.json) 更新:固定 `jev-1.13.0`,11 筆合成案例全部收到可驗證 HTTP 200 回應。保留的 10 秒期限與 800ms 期限兩輪,p50 分別約 273/272ms,最大約 736/653ms。兩輪更正辨識均為 8/8,排序 NDCG@5 為 1(僅兩筆可評估查詢);同期規則基準為 4/8 與約 0.822。總共執行三輪,中間一輪輸出截斷而排除統計。
182
-
183
- 這證明既有 adapter 可連接真實 API,尚不能證明正式語料準確率、冷熱連線差異或端到端任務加速。重複輸入可能受未知快取影響。J2 的可靠品質驗收仍未滿足;金鑰未保存至專案、production 未接線,後續優先完成真人覆核資料與更正辨識/證據重排比較。安裝與評測未改動 Freya BUG 修正。
184
-
185
- ### 後續更新:可選的正式更正判斷開關
186
-
187
- 使用者明確選擇開啟即影響正式判斷,效果不好便關閉並留下回饋。現已加入 Default Models 的 Jev 更正辨識開關:`jevCorrectionEnabled` 僅作用於目前專案,預設 false;缺少 `TYPESAFE_API_KEY` 或模型失敗時沿用原流程。成功的正判定會把 correction 提升為主要訊號,使既有只讀 `type` 的使用者模型更新實際採用它;其他標籤與翻譯保留。關閉影響後續判斷,不撤銷先前訊號。
188
-
189
- 本機驗證為 16 項執行端測試、54 項研究測試、13 項前端 controller/SSR 測試及 8 項 Rust 設定測試全部通過;TypeScript 通過,ESLint 零錯誤但有 31 項風格警告。本機 HTTP 拒絕錯誤專案及非法回饋的檢查亦通過。這些證明接線與失敗處理,不等同模型準確率或安裝版驗收。本次未送出真實歷史訊息、未啟用真實專案設定、未 commit/merge 或發布。
1
+ # Kenaz × Jev 導入規劃
2
+
3
+
4
+ Current Dashboard UI uses one Jev switch for correction and Thalamus together (TASK_1970). Local Thalamus integration and verification: [delivery ranking](jev-eval/THALAMUS_RANKING.md). Authoritative tracking is now KenazAI TASK_1965-1968, with quotation TASK_43-46 retained as historical cross-references.
5
+ 最新進度(2026-09-20):依使用者決定,已在本機實作預設關閉、可直接影響正式更正辨識的專案開關與本機回饋。使用方式、測試及限制見 [Active correction experiment](jev-eval/ACTIVE_CORRECTION.md)。以下保留最初提案及各階段紀錄;其中「production 未接線」描述的是當時狀態,不是目前原始碼狀態。尚未打包或發布安裝版,真實工作流程品質仍未驗證。
6
+
7
+ 日期:2026-09-20。狀態:調查與設計提案;未實作、未安裝外掛、未發送 Kenaz 紀錄到 Jev API。以下數值為提議的實驗與上線門檻,除明確標示官方案例外,均不是實測結果。
8
+
9
+ ## 1. 決策
10
+
11
+ 引入可選的語意判斷能力,先改善證據與記憶選取,再評估即時修正辨識。確定性計算、權限、任務完成判定仍由現有程式與驗證流程負責。
12
+
13
+ 第一個候選上線功能:Synapse 英文 rune 的相關性重排。第一批並行研究:繁體中文修正辨識。交接的原文證據保留同步設計,主會話壓縮放到最後。
14
+
15
+ 不以供應商延遲展示作為 Kenaz 加速倍數,不將模型回傳的 confidence 視為已在 Kenaz 校準的正確率。
16
+
17
+ ## 2. 已核對的事實
18
+
19
+ | 事實 | 來源 | 設計影響 |
20
+ | --- | --- | --- |
21
+ | Jev 支援 Choice、Score、Noul;同一 request 的問題獨立評估。 | [Primitives](https://docs.typesafe.ai/primitives) | 相同 state 的獨立問題合併;相依問題必須另一步處理。 |
22
+ | Noul 僅提供 yes 機率,沒有獨立 confidence;Choice/Score 的 confidence 是分布的統計量。 | [Confidence](https://docs.typesafe.ai/confidence) | 不混用欄位,不把不同題型的門檻相互套用。 |
23
+ | 目前 models 頁列 jev-1.13.0;總 request 上限 64k tokens,state 加最長單題上限 32k。 | [Models](https://docs.typesafe.ai/models) | 固定版本測試;原 compaction repo 的 25k/30k 設定是該實作的預算,不是完整最新模型上限。 |
24
+ | 英文是主要訓練語言;中文等語言可輸入,但效果不等同英文。 | 同上 | 中文辨識要獨立驗收,不能沿用英文門檻。 |
25
+ | 大量無關 state、複雜間接推理、數字與日期運算、對抗文字是已知弱點;不適合文字生成。 | [Jev 1.13 limitations](https://docs.typesafe.ai/model-jaggedness/jev-1.13) | 先篩選再送模型;翻譯、根因分析與計算不可整段替換。 |
26
+ | 官方 13 問案例:批次約 0.27 秒,循序單問合計約 2.71 秒;五次重複,非 Kenaz workload。 | [Parallel questions](https://docs.typesafe.ai/cookbooks/parallel_questions) | 需要與並行基準比較,量端到端 p95,而非引用十倍加速。 |
27
+ | Muninn 分類器使用同步 Haiku CLI,同時翻譯與分類七種訊號,timeout 30 秒。 | `.formation/tools/muninn.js:translateAndClassifyMessages` | 拆開分類與翻譯才可能移除關鍵路徑等待;30 秒是上限,不是實際延遲。 |
28
+ | 分類結果的英文 translated text 被 extractDomain 使用。 | `.formation/tools/muninn.js:extractUserSignals` | 保留下游契約,不能刪除翻譯欄位而假裝行為一致。 |
29
+ | Codex 自動 episode 摘要取最前面三段助手文字,再截短;不是所有交接來源均如此。 | `.formation/bifrost/shared/consolidate.js:extractEpisodeFromTranscript` | 改善最後決策與證據覆蓋,不只換摘要模型。 |
30
+ | Muninn 的 formatJSONLChunk 省略 tool_result 細節。 | `.formation/tools/muninn-watcher.js:formatJSONLChunk` | 應從原始紀錄建立重要結果索引,不能對已遺失的內容做排序。 |
31
+ | turn-context hook 對主要 HTTP 請求設 500ms timeout,另有 800ms active sensing timeout。 | `.claude/hooks/turn-context.js` | 不可直接在既有同步 endpoint 裡塞入無上限外部模型等待。 |
32
+ | 該 hook 建構的 turn-context/recall URL 未顯式帶 projectPath;後端允許預設專案。 | 同上;`routes/synapse.rs:TurnContextQuery` | 接入前確認 session/project 契約;不可讓 Jev 猜測專案。此處是靜態風險,尚未證明現場誤路由。 |
33
+ | recall 已有 reranking;hybrid 在最終集合寫 rune_usage_log/co_recall_log。 | `features/retrieval.rs`; `synapse/memory/semantic.rs`; `memory/recall.rs` | 加入 Jev 後仍必須只記錄真正交付的最終結果;shadow 不得改動學習統計。 |
34
+ | Bifröst relay 啟動 Codex CLI 並轉譯事件;shim 有 UserPromptSubmit 正規化。 | `.formation/bifrost/openai/relay.js`; `codex-hook-shim.js` | 事件正規化不代表當前客戶端一定支援同回合注入或內部 compaction 替換,需端到端驗證。 |
35
+
36
+ 工作樹存在其他未提交工作,含 Bifröst fast boot 與 Phase 9 政策。此提案不重做或覆蓋它們;後續實作需以當時基線重新確認。
37
+
38
+ ## 3. 功能順序
39
+
40
+ | 優先 | 功能 | Jev 的工作 | 明確邊界 |
41
+ | --- | --- | --- | --- |
42
+ | P0 | 事件、來源、版本與評測基礎 | 暫無控制權 | 先證明資料進出正確、可回放。 |
43
+ | P1 | 英文 rune 重排 | 對每個候選判斷與查詢/任務的直接相關性 | 不改 rune,不移除原始資料,不跨專案查詢。 |
44
+ | P1 shadow | 中文修正與範圍變更辨識 | 多標籤判斷、選出已知且被修正的 assumption 候選 | 不生成新事實,不自動擴權、切換專案或標記任務完成。 |
45
+ | P2 | 交接證據選取 | 在已封存的候選片段中評估後續必要性 | 原文固定保留;摘要可選,且必須有來源。 |
46
+ | P3 | 工具結果語意分流 | 識別警告、可能矛盾、值得調查的新資訊 | exit code、測試成功、檔案清單由 parser/工具本身決定。 |
47
+ | P4 | 主會話選擇性壓縮 | 提供保留建議 | 僅在客戶端接口、回復能力與品質驗收全部通過後啟用。 |
48
+
49
+ 任務角色推薦可在上述資料契約穩定後另做研究。合併、部署、授權與 Phase 9 通過判定不列入 Jev 自動決策。
50
+
51
+ ## 4. 共用架構與資料契約
52
+
53
+ 離線評測先使用 Node 非同步 HTTP adapter,不啟動額外常駐服務。上線時將 provider client 放在現有 Dashboard Rust 服務的獨立非同步模組,Node hooks/觀察器透過既有本機通道呼叫。不要讓每個 hook 各自持有 key、重試和限流策略;不新增啟動必需的外部服務。
54
+
55
+ 共用流程:事件正規化 → 本地篩選/資料政策 → 依用途建立小型 state → Jev 批次問題 → 嚴格驗證回答 → 本地決策 → 消費者。模型僅得到完成該判斷所需欄位。
56
+
57
+ 每筆輸入必須帶:schema_version、project_id/明確 projectPath、session_id、task_id(可空)、event_id、event_seq、task_revision、purpose、source_refs、state_hash。相同文字的兩次事件仍有不同 event_id。
58
+
59
+ 每筆結果記錄:request_id、model 的實際版本、question_set_version、原始 probabilities/score、policy_version、latency、usage、status、fallback_reason、source_refs。status 明確區分 ok、abstain、timeout、unavailable、invalid、stale。
60
+
61
+ 用 event_id 去重處理;用 state_hash + purpose + 專案 + 模型版本 + 問題版本 + 任務版本做計算快取。兩者不能混用。模型成功只證明評分完成,不證明判斷正確或已被代理採用。
62
+
63
+ ## 5. 三條主要流程
64
+
65
+ **A. Rune 重排**
66
+
67
+ 沿用現有 FTS/semantic/RRF 與本地排序,取得同專案候選。實驗從最多 12 個候選、約 8k token 的小型 state 開始;不足時明確標示 excerpt,不能將被截掉的資訊當成不存在。
68
+
69
+ 每個候選使用固定 rubric 的 Score 判斷相關性,例如 unrelated / background / useful / directly answers。程式指定正確的 `candidates[i]`;題目 ID 本身不會傳入模型,因此 instructions 內必須包含索引與判斷條件。
70
+
71
+ 第一版僅重排,維持既有結果數量;不以低分刪除所有結果。同分、缺資訊及模型失敗時保留既有排序。不得直接把 Jev 機率加到尺度不同的 BM25/RRF 分數;先採 Jev 分級排序、原排序做 tie-break,之後才評估校準融合。
72
+
73
+ 整合應位於可 await 的服務協調層,不能在持有 SQLite/Kuzu 鎖時等待網路。若候選讀取與最終 telemetry 目前綁在同步函數中,先拆成 candidate retrieval 和 final delivery logging,讓舊路徑也沿用同一出口。shadow 必須使用不產生正式 recall/co-recall/acted-on 副作用的候選路徑。
74
+
75
+ **B. 用戶修正辨識**
76
+
77
+ state 包含當前目標、少量具來源的 active assumptions、最新用戶原文、必要的前幾回合;不是整段 transcript。以獨立 Noul 問題辨識 correction、scope clarification、new constraint、question 等可共存訊號。
78
+
79
+ 對固定欄位可使用 Choice,例如 deployment_target = installed / development / both / unspecified。自由格式的更正內容由主代理解析,或先提出帶原文來源的候選,再由 Jev 評分;Jev 本身不生成任意文字 patch。
80
+
81
+ 初期結果只是「帶來源的修正候選」。當回合原始用戶訊息始終直接交给代理;即使 Jev 失敗也不能把修正漏掉。對新訊息,event_seq/task_revision 不匹配的遲到結果標 stale,不覆蓋新狀態。
82
+
83
+ 翻譯留在背景或持久記憶寫入階段,以 source hash 去重。英文長期記憶規則保留,中文原文僅作證據來源。不在同步 fast path 執行 Haiku fallback。中文品質不足時保持現有分類路徑,不用英文測試結果推定中文可上線。
84
+
85
+ 同回合可用性需要 capability 測試:hook 收到真實 user prompt → 結果抵達 → 當回合代理確實收到且引用。只能寫 log 或下回合讀取者,標為 next-turn,不能宣稱即時阻止錯誤行動。
86
+
87
+ **C. 交接與工具證據**
88
+
89
+ 重用 transcript tee 與 per-session handoff,加入 evidence_refs,而不是另造交接檔案體系。每筆引用包括 project/session/event、tool_use_id、原文位置、內容 hash、觀測時間,以及可取得時的 commit/file version。
90
+
91
+ 固定保留:明確用戶修正、未完成/執行中動作、未解決錯誤、變更回執、驗收結果及尚待回答的問題。資料檔保留原文,工作上下文可只附必要片段和讀回入口。
92
+
93
+ 工具呼叫/結果維持配對。圖片、PDF、二進位證據附原始資產引用;Jev 僅支援文字,不能把未看懂的非文字結果當作無用。多個新舊檔案版本不可只憑路徑去重。
94
+
95
+ 原 compaction 的「可重跑工具」不適用於寫入、部署、訊息发送等有副作用行為,也不適用於不可重現的故障。回復流程優先讀封存原文,不重做動作。
96
+
97
+ ## 6. 延遲、失敗與隔離政策
98
+
99
+ 實驗初始預算:recall 重排與同回合修正候選的總額外等待至多 800ms;包含排隊、網路、驗證,不能每一層各等 800ms。這是可接受上限,不是 Jev 的速度承諾;是否保留同步模式由實測決定。
100
+
101
+ 背景工作使用獨立低優先佇列;初始總 concurrency 4、每 session 1,可依實測調整。短期排隊滿時優先保留最近的同任務修正事件,丟棄可重算的過時評分工作,但不能丟原始事件。
102
+
103
+ 同步路徑不重試。背景對 429/529/暫時性網路錯誤做有限次帶 jitter 的 backoff,遵守 Retry-After;超出總期限後留待後續回放。401/422 不盲重試。連續故障時熔斷 provider,沿用本地行為。
104
+
105
+ feature flag 按用途設 off / shadow / advisory / active;一鍵切 off 不需要資料回滾。shadow 結果不進正式權重、用戶模型或任務狀態。單一用途故障不能使 Dashboard 顯示 Initializing 或延遲主視窗啟動。
106
+
107
+ 外部請求只由後端發送;不把 provider key 放前端或隨安裝包配送。小範圍試驗使用開發環境 key;發佈產品前再決定 BYOK 或具驗證的服務端代理,兩者都不能把共用 key 放客戶端。
108
+
109
+ 每個專案可獨立禁止外送。先核對供應商資料條款;官方的「不訓練」不等於所有帳號都零保留。預設只記錄 metadata/hash,禁止 API key/完整敏感 prompt 進普通 logs。程序權限與來源隔離是硬規則,不由 Jev 自評。
110
+
111
+ ## 7. 評測與上線門檻
112
+
113
+ 建立版本化、人工標註的資料集,分開 development/calibration/held-out。以 session 與時間切分,不能把同一段對話的近似改寫分散在訓練/測試兩側。
114
+
115
+ 初始資料規模:500 則訊息(至少 150 則真修正,涵蓋繁中、英文、混合語言)、100 組 recall 查詢/候選集、30 段交接情境。這是起始評估,不能由少量零錯誤推論全面安全;報告各類別分母與信賴區間,必要時補樣本。
116
+
117
+ 測試情境包含:安裝版/dev 更正、暫停與取消、插入狀態追問但主目標不變、含否定/引用/反諷、同名跨專案符號、舊錯誤已修正、新舊 commit、工具成功 exit code 但正文有警告、quoted prompt injection、並行 session、亂序結果、重複 hook、無網路與服務未啟動。
118
+
119
+ 比較組:既有流程、純規則、本地候選+Jev、現有 Haiku 分類;分類品質用相同原文與標註比較,同時另外測量現行翻譯+分類端到端時間。Jev 批次同時比較循序/並行單問,避免誇大倍數。
120
+
121
+ | 項目 | 提議門檻與量測 |
122
+ | --- | --- |
123
+ | 修正辨識 | held-out precision ≥95%、recall ≥98%,分語言報告;固定重要修正案例零漏失。報告 abstention coverage,不能排除 abstain 後冒充全體高準確。 |
124
+ | Rune 重排 | nDCG@5 相對既有提升 ≥10%,Recall@5 的非劣容忍界線為 -1 個百分點;paired bootstrap 95% 區間也需支持非劣。 |
125
+ | 工作流收益 | 回放後衡量查錯環境、忽略修正、重複工具呼叫與原任務完成率;分類高分但行為不改善者不升級。 |
126
+ | 延遲 | p50/p95/p99、timeout 比例、排隊時間、冷/熱連線分開;同步額外等待總預算 ≤800ms,超時一律 fallback。 |
127
+ | 交接 | 固定保護項目全部可讀回,引用 hash 一致;不能僅量摘要短度。 |
128
+ | 隔離 | 跨專案/跨 session/過時版本污染測試零失敗;副作用工具不得因找回上下文而重跑。 |
129
+ | 回退 | 401/422/429/529、斷線、畸形輸出、缺失 question ID、NaN、越界 probability 均有明確狀態與既有路徑。 |
130
+ | 完整性 | tool-call/result 配對、結果來源與模型版本可追;shadow 不改學習統計;off 恢復基線行為。 |
131
+
132
+ Noul 機率用 Brier score、可靠度分桶及 precision-recall 曲線校準;Choice/Score 分開處理。門檻以用途和誤判成本決定,不能一律 0.5/0.9。模型版本、rubric 或語言變更時重新驗收。
133
+
134
+ 不能以「另一個模型同意」作唯一 ground truth,不能把 Jev 高 confidence 回饋成自己的正確性獎勵。下游是否引用 rune 與任務是否成功分開記錄,避免把相關性當成因果改善。
135
+
136
+ ## 8. 工作包與真實依賴
137
+
138
+ 以下 J0–J7 為工作包編號;後續已授權執行 J0/J1 原型,實際進度見第 10 節。尚未 merge。
139
+
140
+ | 工作包 | 產物/主要範圍 | 依賴 | 驗收 |
141
+ | --- | --- | --- | --- |
142
+ | J0 規格與標註 | 資料契約、用途 rubric、人工評測集;docs/fixtures | 無 | 每筆標註具來源/語言/session 分組,目標與限制可追。 |
143
+ | J1 離線評測器 | 獨立非同步 adapter、回放與測量;建議新增 `dev/jev-eval/` | J0 | 不啟動代理任務、不改原資料;重複回放可比較,HTTP 失敗測試通過。 |
144
+ | J2 共用 provider 服務 | 建議 `features/decision_service/`,接現有本機通道 | J1 證明至少一用途有效 | 隔離、期限、熔斷、key 不外洩、Dashboard 啟動不依賴 provider。 |
145
+ | J3 Rune shadow→active | `memory/semantic.rs`、`memory/recall.rs`、服務協調層 | J2+retrieval 評測通過 | 最終交付 IDs 與 usage/co-recall logs 一致;shadow 無副作用;排序指標通過。 |
146
+ | J4 修正 shadow→advisory | Muninn、用戶事件 adapter、turn-context 消費端 | J2+中文分類評測通過 | 原文來源、翻譯契約、seq/revision、防重複、每個客戶端 delivery 測試。 |
147
+ | J5 證據交接 | consolidate、preservation-coordinator、handoff-resolver | J0;Jev 排序另依 J2 | 原文證據可回復;保護項不漏;不取代或覆寫其他 session。 |
148
+ | J6 工具分流 | 工具事件消費端、結果索引 | J2+J5 | parser 結果優先;語意警告具來源;不自動將任務標完成。 |
149
+ | J7 即時壓縮可行性 | 客戶端版本/接口實驗與回復演練 | J5+各客戶端 capability 實證 | 通過品質與回復驗收才另提上線;不直接修改 live transcript 檔案。 |
150
+
151
+ J3/J4 在技術上無互相依賴;J5 的原文保全不必等模型。實作代碼與 kernel/YAML 行為政策應分開任務;這份規劃不變更現行 Ansuz 身份/授權/驗收規則。既有工作樹有其他修改,實作時需隔離並保留基線。
152
+
153
+ ## 9. 尚待實驗回答
154
+
155
+ - 台灣使用環境下不同輸入長度與並發量的真實延遲、中文誤判率與校準。
156
+ - 現行 Haiku 分類的實際延遲分布,以及翻譯真正位於哪些消費者的必要路徑。
157
+ - Claude/Codex 各種啟動方式下,hook 是否完整收到同回合 user event,以及訊號是否能及時注入。
158
+ - 安裝版是否使用同一份來源/版本;不得從 dev 通過直接推論安裝版可用。
159
+ - provider key 的試验配置、產品發佈時的認證方式、實際帳號 rate limit 和資料保留條款。
160
+ - Jev 整體效益是否優於純規則與現有本地 reranker;若沒有,保留证據/交接改善而不啟用模型。
161
+
162
+ 下一步為 J0/J1:建立標註與可回放評測,再以數據決定 J2/J3/J4 的上線範圍。先不全面安裝 fast-jev-compaction,也不承諾端到端加速倍數。
163
+
164
+ ## 10. 已授權執行紀錄(2026-09-20)
165
+
166
+ 使用者已授權自主處理。TASK_26 追蹤離線工具、TASK_27 追蹤資料契約與文件;依本次 session 路由規則,任務卡位於 quotation,實作則限定 KenazAI/dev/jev-eval,未更動 quotation 應用程式。
167
+
168
+ - 已建立 dependency-free Node CLI、固定 Jev 版本的非同步 adapter、本地 rules 基準、prediction 回放驗證與指標報告。API 契約已對照官方文件;未執行供應商實測。
169
+ - 獨立執行 15 項測試,15 通過、0 失敗;包含本機 HTTP server 模擬錯誤、串流逾時、重新導向、非法答案、身分/版本不符及分割洩漏。
170
+ - 11 筆合成案例(8 correction、3 relevance)通過 validate;全為 synthetic/agent_proposed。split 名稱僅測試分割機制,不代表真人盲測資料。
171
+ - [rules 基準報告](jev-eval/reports/rules-baseline.json) 已保存。它只驗證工程流程,不是 Jev 品質或延遲;規則分類 precision/recall 均為 0.5,不能推論模型優劣。
172
+ - preflight 回報 api_key_available=false、network_attempted=false。無法在目前環境量測 Jev 真實延遲與品質。
173
+ - [使用文件](jev-eval/README.md) 與 [標註規則](jev-eval/ANNOTATION_GUIDE.md) 已落地。人工驗證、正式資料規模、現行 Haiku/Synapse 比較、信賴區間和端到端任務評估仍未完成。
174
+
175
+ 本階段為可審閱原型,尚未 commit/merge,任務未標記完成。production 未接入 Jev,promotion_eligible 固定 false。J2 仍須先有至少一個用途的可靠評測證據;下一步是在本機安全配置金鑰、準備與覆核資料後,執行 live 比較,不能由這 11 筆合成案例跳過驗收。
176
+
177
+ ### 後續更新:已取得 API 並安裝 TypeSafe skill
178
+
179
+ 使用者取得金鑰後,已依其指定單一方式安裝:`npx --yes skills add typesafe-ai/skills --skill typesafe-ai --agent codex --yes`。專案 skill 位於 `.agents/skills/typesafe-ai/SKILL.md`,來源與雜湊寫入 `skills-lock.json`。本回合已讀取 skill 及官方 API、模型、Score 與 reranking 文件,往後 TypeSafe 工作依此指引進行。
180
+
181
+ 先前「尚無金鑰/未供應商實測」是初始紀錄,已由本次 [live smoke 報告](jev-eval/reports/live-smoke-2026-09-20.json) 更新:固定 `jev-1.13.0`,11 筆合成案例全部收到可驗證 HTTP 200 回應。保留的 10 秒期限與 800ms 期限兩輪,p50 分別約 273/272ms,最大約 736/653ms。兩輪更正辨識均為 8/8,排序 NDCG@5 為 1(僅兩筆可評估查詢);同期規則基準為 4/8 與約 0.822。總共執行三輪,中間一輪輸出截斷而排除統計。
182
+
183
+ 這證明既有 adapter 可連接真實 API,尚不能證明正式語料準確率、冷熱連線差異或端到端任務加速。重複輸入可能受未知快取影響。J2 的可靠品質驗收仍未滿足;金鑰未保存至專案、production 未接線,後續優先完成真人覆核資料與更正辨識/證據重排比較。安裝與評測未改動 Freya BUG 修正。
184
+
185
+ ### 後續更新:可選的正式更正判斷開關
186
+
187
+ 使用者明確選擇開啟即影響正式判斷,效果不好便關閉並留下回饋。現已加入 Default Models 的 Jev 更正辨識開關:`jevCorrectionEnabled` 僅作用於目前專案,預設 false;缺少 `TYPESAFE_API_KEY` 或模型失敗時沿用原流程。成功的正判定會把 correction 提升為主要訊號,使既有只讀 `type` 的使用者模型更新實際採用它;其他標籤與翻譯保留。關閉影響後續判斷,不撤銷先前訊號。
188
+
189
+ 本機驗證為 16 項執行端測試、54 項研究測試、13 項前端 controller/SSR 測試及 8 項 Rust 設定測試全部通過;TypeScript 通過,ESLint 零錯誤但有 31 項風格警告。本機 HTTP 拒絕錯誤專案及非法回饋的檢查亦通過。這些證明接線與失敗處理,不等同模型準確率或安裝版驗收。本次未送出真實歷史訊息、未啟用真實專案設定、未 commit/merge 或發布。
@@ -1,13 +1,13 @@
1
- # .matrix v1.0
2
- @meta |v=1.0|c=memory|t=260207-0530|r=7d|
3
- @index |d=260207,260206,260205,260204,260203,260202,260201|e=25|cat=dev,bug,feat,doc|
4
- @data
5
- 260207|dev|T123,st=P,dur=45m;T124,st=P,dur=60m|note=DB migration in progress|
6
- 260207|bug|T130,st=B,blk=REVIEW_PENDING|note=Waiting for review|
7
- 260206|feat|T121,st=C,dur=135m;T122,st=C,dur=90m|note=API+UI completed|
8
- 260206|bug|T125,st=B,blk=API_DOWN|note=API service outage|
9
- 260205|dev|T126,st=C,dur=120m;T127,st=C,dur=75m|note=Security+Docs done|
10
- 260204|feat|T115,st=C,dur=180m|note=Major feature shipped|
11
- 260203|bug|T110,st=C,dur=60m|note=Critical bug fixed|
12
- 260202|doc|T105,st=C,dur=90m|note=README updated|
13
- 260201|feat|T100,st=C,dur=240m|note=Milestone reached|
1
+ # .matrix v1.0
2
+ @meta |v=1.0|c=memory|t=260207-0530|r=7d|
3
+ @index |d=260207,260206,260205,260204,260203,260202,260201|e=25|cat=dev,bug,feat,doc|
4
+ @data
5
+ 260207|dev|T123,st=P,dur=45m;T124,st=P,dur=60m|note=DB migration in progress|
6
+ 260207|bug|T130,st=B,blk=REVIEW_PENDING|note=Waiting for review|
7
+ 260206|feat|T121,st=C,dur=135m;T122,st=C,dur=90m|note=API+UI completed|
8
+ 260206|bug|T125,st=B,blk=API_DOWN|note=API service outage|
9
+ 260205|dev|T126,st=C,dur=120m;T127,st=C,dur=75m|note=Security+Docs done|
10
+ 260204|feat|T115,st=C,dur=180m|note=Major feature shipped|
11
+ 260203|bug|T110,st=C,dur=60m|note=Critical bug fixed|
12
+ 260202|doc|T105,st=C,dur=90m|note=README updated|
13
+ 260201|feat|T100,st=C,dur=240m|note=Milestone reached|
@@ -1,9 +1,9 @@
1
- # .matrix v1.0
2
- @meta |v=1.0|c=project-status|t=260207-0530|proj=KenazAI|
3
- @index |tot=123|c=100|p=15|b=8|act=1|upd=260207|
4
- @data
5
- gen|tot=123|c=100|p=15|b=8|succ=81.3%|
6
- rec|T121,T122,T123,T124,T125|
7
- stat|C=100|P=15|B=8|
8
- pri|P0=45|P1=50|P2=20|P3=8|
9
- team|backend=5|frontend=4|designer=3|pm=2|sre=1|
1
+ # .matrix v1.0
2
+ @meta |v=1.0|c=project-status|t=260207-0530|proj=KenazAI|
3
+ @index |tot=123|c=100|p=15|b=8|act=1|upd=260207|
4
+ @data
5
+ gen|tot=123|c=100|p=15|b=8|succ=81.3%|
6
+ rec|T121,T122,T123,T124,T125|
7
+ stat|C=100|P=15|B=8|
8
+ pri|P0=45|P1=50|P2=20|P3=8|
9
+ team|backend=5|frontend=4|designer=3|pm=2|sre=1|
@@ -1,14 +1,14 @@
1
- # .matrix v1.0
2
- @meta |v=1.0|c=tasks|t=260207-0530|r=30|
3
- @index |tot=30|c=20|p=7|b=3|date=260207,260206,260205|
4
- @data
5
- T121|st=C|p=0|dur=135m|ct=260206-1430|desc=API integration|
6
- T122|st=C|p=1|dur=90m|ct=260206-1500|desc=UI refactoring|
7
- T123|st=P|p=0|dur=45m|ct=260207-0900|desc=DB migration|
8
- T124|st=P|p=1|dur=60m|ct=260207-1000|desc=Test coverage|
9
- T125|st=B|p=2|blk=API_DOWN|ct=260206-1600|desc=Deploy to staging|
10
- T126|st=C|p=0|dur=120m|ct=260205-1400|desc=Security audit|
11
- T127|st=C|p=1|dur=75m|ct=260205-1530|desc=Documentation|
12
- T128|st=P|p=1|dur=30m|ct=260207-1100|desc=Code review|
13
- T129|st=P|p=2|dur=45m|ct=260207-1130|desc=Performance test|
14
- T130|st=B|p=0|blk=REVIEW_PENDING|ct=260207-1200|desc=Feature X|
1
+ # .matrix v1.0
2
+ @meta |v=1.0|c=tasks|t=260207-0530|r=30|
3
+ @index |tot=30|c=20|p=7|b=3|date=260207,260206,260205|
4
+ @data
5
+ T121|st=C|p=0|dur=135m|ct=260206-1430|desc=API integration|
6
+ T122|st=C|p=1|dur=90m|ct=260206-1500|desc=UI refactoring|
7
+ T123|st=P|p=0|dur=45m|ct=260207-0900|desc=DB migration|
8
+ T124|st=P|p=1|dur=60m|ct=260207-1000|desc=Test coverage|
9
+ T125|st=B|p=2|blk=API_DOWN|ct=260206-1600|desc=Deploy to staging|
10
+ T126|st=C|p=0|dur=120m|ct=260205-1400|desc=Security audit|
11
+ T127|st=C|p=1|dur=75m|ct=260205-1530|desc=Documentation|
12
+ T128|st=P|p=1|dur=30m|ct=260207-1100|desc=Code review|
13
+ T129|st=P|p=2|dur=45m|ct=260207-1130|desc=Performance test|
14
+ T130|st=B|p=0|blk=REVIEW_PENDING|ct=260207-1200|desc=Feature X|