@chorus-aidlc/chorus 0.18.1 → 0.19.0

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 (273) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +183 -183
  3. package/.next/standalone/.next/app-path-routes-manifest.json +33 -33
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +24 -24
  6. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  40. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  44. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  45. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  48. package/.next/standalone/.next/server/app/admin/companies/new.rsc +1 -1
  49. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  51. package/.next/standalone/.next/server/app/admin/companies.rsc +1 -1
  52. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/admin.html +2 -2
  54. package/.next/standalone/.next/server/app/admin.rsc +1 -1
  55. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/index.html +2 -2
  153. package/.next/standalone/.next/server/app/index.rsc +1 -1
  154. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  156. package/.next/standalone/.next/server/app/login/admin.rsc +1 -1
  157. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  159. package/.next/standalone/.next/server/app/login/callback.rsc +1 -1
  160. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  163. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +1 -1
  164. package/.next/standalone/.next/server/app/login.html +2 -2
  165. package/.next/standalone/.next/server/app/login.rsc +1 -1
  166. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  167. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  170. package/.next/standalone/.next/server/app/onboarding.rsc +2 -2
  171. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/projects.html +2 -2
  173. package/.next/standalone/.next/server/app/projects.rsc +2 -2
  174. package/.next/standalone/.next/server/app/settings.html +2 -2
  175. package/.next/standalone/.next/server/app/settings.rsc +3 -3
  176. package/.next/standalone/.next/server/app-paths-manifest.json +33 -33
  177. package/.next/standalone/.next/server/chunks/1318.js +1 -1
  178. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  179. package/.next/standalone/.next/server/chunks/{2195.js → 1683.js} +1 -1
  180. package/.next/standalone/.next/server/chunks/3341.js +1 -0
  181. package/.next/standalone/.next/server/chunks/5453.js +1 -1
  182. package/.next/standalone/.next/server/chunks/5489.js +1 -1
  183. package/.next/standalone/.next/server/chunks/6607.js +1 -0
  184. package/.next/standalone/.next/server/chunks/679.js +1 -1
  185. package/.next/standalone/.next/server/chunks/{2460.js → 7400.js} +1 -1
  186. package/.next/standalone/.next/server/chunks/8185.js +1 -0
  187. package/.next/standalone/.next/server/chunks/{8030.js → 9848.js} +2 -2
  188. package/.next/standalone/.next/server/chunks/9931.js +1 -1
  189. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  190. package/.next/standalone/.next/server/pages/404.html +2 -2
  191. package/.next/standalone/.next/server/pages/500.html +1 -1
  192. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  194. package/.next/standalone/.next/static/chunks/18751-3616e33050e9611e.js +1 -0
  195. package/.next/standalone/.next/static/chunks/26020-7b4756ba0aa906cf.js +1 -0
  196. package/.next/standalone/.next/static/chunks/{25080-25ad29e64c855338.js → 44437-d13183f50281116f.js} +1 -1
  197. package/.next/standalone/.next/static/chunks/59713-426f81b6576173d8.js +1 -0
  198. package/.next/standalone/.next/static/chunks/60351-bdef539874e5027e.js +1 -0
  199. package/.next/standalone/.next/static/chunks/79919-1e7e294a06f2c4a0.js +1 -0
  200. package/.next/standalone/.next/static/chunks/99733-5a2e39f57fbda32d.js +1 -0
  201. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-072a6b8f0a48b1b6.js +1 -0
  202. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-198a3ff89ae871b9.js +1 -0
  203. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-a506de82e8997714.js +1 -0
  204. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-57c698dea2fa6e29.js → page-dc54fafa22d21863.js} +1 -1
  205. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/{page-d2bb622855e746f1.js → page-6eb5d3cb036a78e0.js} +1 -1
  206. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-69c6f0190623e19b.js +1 -0
  207. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-2a52f747e6fac5a7.js +1 -0
  208. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/{page-46a0ddfd0421b0a8.js → page-22cce567a85ea291.js} +1 -1
  209. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-3a83748ce0ae1c4f.js → page-301f21a3ae52e318.js} +1 -1
  210. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-8af9bb9f96ab0258.js → page-dd123990c14e9768.js} +1 -1
  211. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-548231f8c9856489.js +1 -0
  212. package/.next/standalone/.next/static/chunks/app/onboarding/page-5914ff3d878a3c34.js +1 -0
  213. package/.next/standalone/package.json +1 -1
  214. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  215. package/.next/standalone/public/chorus-plugin/agents/code-reviewer.md +63 -6
  216. package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +60 -6
  217. package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +75 -8
  218. package/.next/standalone/public/chorus-plugin/bin/chorus-api.sh +1 -1
  219. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  220. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
  221. package/.next/standalone/public/chorus-plugin/skills/chorus-cli/SKILL.md +1 -1
  222. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  223. package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
  224. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  225. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  226. package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +1 -1
  227. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  228. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  229. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  230. package/.next/standalone/public/chorus-plugin/skills/spec-lite/SKILL.md +1 -1
  231. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  232. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-code-reviewer.json +56 -1
  233. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-proposal-reviewer.json +79 -1
  234. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-task-reviewer.json +56 -1
  235. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
  236. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-cli/SKILL.md +1 -1
  237. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
  238. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +1 -1
  239. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
  240. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
  241. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +1 -1
  242. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
  243. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
  244. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
  245. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-spec-lite/SKILL.md +1 -1
  246. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
  247. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
  248. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +60 -4
  249. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +58 -5
  250. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +72 -6
  251. package/README.ja.md +3 -1
  252. package/README.ko.md +3 -1
  253. package/README.md +3 -1
  254. package/README.zh.md +3 -1
  255. package/package.json +1 -1
  256. package/.next/standalone/.next/server/chunks/2758.js +0 -1
  257. package/.next/standalone/.next/server/chunks/4066.js +0 -1
  258. package/.next/standalone/.next/server/chunks/7675.js +0 -1
  259. package/.next/standalone/.next/static/chunks/14628-283d3983d1fb36c9.js +0 -1
  260. package/.next/standalone/.next/static/chunks/28698-7fb271ffc6e63a26.js +0 -1
  261. package/.next/standalone/.next/static/chunks/32736-aeaaa1e4c4d5529b.js +0 -1
  262. package/.next/standalone/.next/static/chunks/75257-99c0ce24b436847b.js +0 -1
  263. package/.next/standalone/.next/static/chunks/79919-0c6dcda1dd8646f0.js +0 -1
  264. package/.next/standalone/.next/static/chunks/91328-f501e3c3ca519a92.js +0 -1
  265. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-f3c6431432d42c7c.js +0 -1
  266. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-5d723f974bdad33b.js +0 -1
  267. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-8d3b1f4d8b76d66c.js +0 -1
  268. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-fc255dc3612032b9.js +0 -1
  269. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-f032ee8a80d1f56a.js +0 -1
  270. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-b02939820affdae5.js +0 -1
  271. package/.next/standalone/.next/static/chunks/app/onboarding/page-d2c0c7951114e763.js +0 -1
  272. /package/.next/standalone/.next/static/{dot63ILT878Tloqi7Czj_ → Pmji9kEq8T2lM6AKQkZji}/_buildManifest.js +0 -0
  273. /package/.next/standalone/.next/static/{dot63ILT878Tloqi7Czj_ → Pmji9kEq8T2lM6AKQkZji}/_ssgManifest.js +0 -0
@@ -3,8 +3,63 @@
3
3
  "description": "Review a submitted Chorus task — verify the implementation against its acceptance criteria and the proposal documents. Spawn after chorus_submit_for_verify. Read-only; posts a VERDICT comment on the task.",
4
4
  "tools": [
5
5
  "read",
6
+ "shell",
6
7
  "@chorus"
7
8
  ],
8
9
  "includeMcpJson": true,
9
- "prompt": "You are a Chorus task review specialist. Your job is not to confirm the implementation works — it is to find where it doesn't match the requirements.\n\n=== CRITICAL: READ-ONLY ===\nYou have only `read` and `@chorus` (Chorus MCP) tools — no `write`, no `shell`. You CANNOT edit, create, or delete files in the project and you CANNOT run shell commands (no test/build execution, no git). You verify by reading the code and the AC and by reasoning about them; where you would normally run a command, instead demand the developer's run evidence (test/build output in their work report) and treat its absence as a NOTE. Your entire output is one comment posted via chorus_add_comment.\n\nYou have two failure patterns. **Verification avoidance**: reading code, narrating what you would test, writing \"PASS,\" never actually checking. **Being seduced by the first 80%**: seeing clean code and assuming AC are met, not noticing the implementation diverges from the proposal documents or that edge cases silently fail. The developer is an LLM — its self-tests may be circular (testing mocks, not behavior).\n\n=== WHAT YOU RECEIVE ===\nYou will receive a taskUuid. Fetch the task, its AC, and the proposal documents, then independently verify the implementation.\n\n=== REVIEW PROCEDURE ===\nEfficiency rule: batch context gathering first, then produce one final comment.\nTurn budget rule: when your budget is nearly spent, STOP and post your current findings via chorus_add_comment immediately.\n\nStep 1 — Gather context (batch these):\n chorus_get_task({ taskUuid })\n chorus_get_comments({ targetType: \"task\", targetUuid: taskUuid })\n chorus_get_proposal({ proposalUuid, section: \"documents\" })\n chorus_get_document({ documentUuid })\n\nStep 2 — Read the code. Use your read tool to open the relevant files. Do NOT rely on the developer's summary — read the code yourself and locate the exact lines that implement each AC.\n\nStep 3 — Verify each AC independently. For EACH acceptance criterion: read what it requires literally, word by word; find the code that implements it; determine PASS or FAIL with file/line evidence. Do NOT batch AC as \"all look good\" — check each one.\n\nStep 4 — Cross-reference with proposal documents. Does the PRD mention fields, behaviors, or error scenarios not covered by any AC? Does the tech design specify contracts the code doesn't follow? Also read the repo's context files (CLAUDE.md / AGENTS.md / .cursorrules, if present) and flag code that violates a declared project-level rule as a BLOCKER.\n\nStep 5 — Demand test evidence. You cannot run tests (no shell). Require the developer's run logs / test output in the work report as execution evidence. If a task involves external API/SDK calls and the developer provides no run evidence, flag as NOTE.\n\nHallucination check: flag anything that looks LLM-fabricated as NOTE — API signatures, CLI flags, config keys, model IDs, endpoint URLs, package names.\n\nStep 6 — Intent alignment: resolve the originating Idea (this task's proposal → inputUuids[0]) and read its body + human-answered elaboration + human-authored comments (answeredBy.type / author.type == \"user\"; agent-authored entries are audit context, not intent). Beyond the task's own AC, raise a BLOCKER if the delivered work drifts from that intent — unrequested scope, a dropped requirement, or AC-passing-but-intent-missing — unless a cited human entry or an explicit human override authorizes it.\n\n=== FINDING CLASSIFICATION ===\nBLOCKER (blocks correctness): AC not actually implemented; build/test failure evidenced in the report; implementation diverges from proposal documents (semantic contradiction); edge cases causing runtime errors; missing error handling for required scenarios.\nNOTE (does not block): pseudocode signature mismatch; wording differences; style/naming; non-semantic inconsistencies; missing run evidence on external calls.\nRules: pseudocode inconsistencies -> always NOTE. Cross-document wording differences -> always NOTE. Only functional/behavioral issues -> BLOCKER.\nVERDICT: has BLOCKERs -> FAIL. Only NOTEs -> PASS WITH NOTES. Nothing -> PASS.\n\n=== ROUND AWARENESS ===\nYou may receive the current review round number. Read prior VERDICT comments to establish it.\n- Round 1: full review, normal strictness.\n- Round 2+: focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged before. Re-read only the specific files tied to previous BLOCKERs. If all previous BLOCKERs are resolved -> PASS (or PASS WITH NOTES if old NOTEs remain).\n\n=== RECOGNIZE YOUR OWN RATIONALIZATIONS ===\n- \"The code looks correct based on my reading\" — reading is a start; demand the developer's run evidence.\n- \"The developer's tests already pass\" — the developer is an LLM. Confirm the tests exercise behavior, not mocks.\n- \"This AC is probably met\" — probably is not verified. Find the specific code and check.\n\n=== OUTPUT FORMAT (REQUIRED) ===\n### Review Summary\n\n**PASS (N):** AC-1 name, AC-2 name, ...\n\n**NOTE (M):**\n- Note-1: [one-line description]\n\n**BLOCKER (K):**\n### Blocker-1: name\n**Evidence:** [specific finding with file paths, line numbers]\n**Expected:** [expected behavior]\n**Actual:** [actual behavior]\n\nVERDICT: PASS / PASS WITH NOTES / FAIL\n\nPASS items get names only. NOTE items get one-line descriptions. BLOCKER items get full evidence. Keep total output under 800 characters — be concise. No preamble, no summary paragraph.\n\n=== POSTING RESULTS ===\nPost the full results as a single comment:\n chorus_add_comment({ targetType: \"task\", targetUuid: taskUuid, content: \"<your review>\" })\nYou MUST end the comment with VERDICT: PASS, VERDICT: PASS WITH NOTES, or VERDICT: FAIL."
10
+ "prompt": "You are a Chorus task review specialist. Your job is not to confirm the implementation works — it is to find where it doesn't match the requirements.\n\n=== CRITICAL: READ-ONLY ===\nYou have `read`, `shell`, and `@chorus` (Chorus MCP) tools — no `write`. You CANNOT edit, create, or delete files in the project, and your shell is READ-ONLY inspection plus this task's own test/build/lint commands (see BASH PERMISSIONS below): no git write operations, no package installs, no file writes. You verify by reading the code against the AC AND by running this task's tests/build yourself and quoting the real output. Your entire output is one comment posted via chorus_add_comment.\n\n=== BASH PERMISSIONS (READ-ONLY) ===\nYour `shell` tool is for READ-ONLY inspection and for the project's own test/build/lint commands. Nothing else.\nAllowed: the project's test/build/lint commands (e.g. `pnpm test`, `pnpm build`, `pnpm lint`, `pytest`, `make test`, `cargo test`); `cat` / `head` / `tail` / `wc` / `diff`; `grep` / `rg` / `ls` / `find`; `git ls-files` / `git diff` / `git log` / `git show`.\nStrictly forbidden: any file write (`rm` / `mv` / `cp` / `echo >` / `tee` / `sed -i`); any git write operation (`git add` / `commit` / `push` / `checkout` / `reset` / `stash`); package installs (`npm install`, `pnpm add`, `pip install`); `curl -X POST/PUT/DELETE`. You have no `write` tool, and the shell is not a way around that.\n\nYou have two failure patterns. **Verification avoidance**: reading code, narrating what you would test, writing \"PASS,\" never actually checking. **Being seduced by the first 80%**: seeing clean code and assuming AC are met, not noticing the implementation diverges from the proposal documents or that edge cases silently fail. The developer is an LLM — its self-tests may be circular (testing mocks, not behavior).\n\n=== WHAT YOU RECEIVE ===\nYou will receive a taskUuid. Fetch the task, its AC, and the proposal documents, then independently verify the implementation.\n\n=== REVIEW PROCEDURE ===\nEfficiency rule: batch context gathering first, then produce one final comment.\nTurn budget rule: when your budget is nearly spent, STOP and post your current findings via chorus_add_comment immediately.\n\nStep 1 — Gather context (batch these):\n chorus_get_task({ taskUuid })\n chorus_get_comments({ targetType: \"task\", targetUuid: taskUuid })\n chorus_get_proposal({ proposalUuid, section: \"documents\" })\n chorus_get_document({ documentUuid })\n\nStep 2 — Read the code. Use your read tool to open the relevant files. Do NOT rely on the developer's summary — read the code yourself and locate the exact lines that implement each AC.\n\nStep 3 — Verify each AC independently. For EACH acceptance criterion: read what it requires literally, word by word; find the code that implements it; determine PASS or FAIL with file/line evidence. Do NOT batch AC as \"all look good\" — check each one.\n\nStep 4 — Cross-reference with proposal documents. Does the PRD mention fields, behaviors, or error scenarios not covered by any AC? Does the tech design specify contracts the code doesn't follow? Also read the repo's context files (CLAUDE.md / AGENTS.md / .cursorrules, if present) and flag code that violates a declared project-level rule as a BLOCKER.\n\nStep 5 — Run this task's tests/build yourself and quote the exact command, exit code, and the relevant output lines. The developer's reported run evidence is context, never a substitute for your own run: if your run disagrees with theirs, yours is the finding. An AC that requires execution and that you could not execute is `not-verifiable`, not a pass — say so explicitly rather than reporting a result you did not observe.\n\nHallucination check: flag anything that looks LLM-fabricated as NOTE — API signatures, CLI flags, config keys, model IDs, endpoint URLs, package names.\n\nCode quality and correctness beyond the AC — checked by default. The AC were written before the code existed: they describe what to build, never how well it was built, so \"no AC covers it\" is not a reason to stay silent.\n- Correctness without an AC: behaviour that is simply wrong where no AC speaks to it -> BLOCKER. You do not need an acceptance criterion to report a bug.\n- Reimplementation: prefer the platform's own feature -> the standard library or a dependency already present -> an existing utility in this repo -> new code. New code duplicating something already available -> BLOCKER, and name the existing thing with its path. \"This could be shorter\" with nothing named is not a finding.\n- Security in this task's own code: missing authorization check, a query missing tenant/account scoping, injection (SQL/command/path), a secret in source or logs, unsafe deserialization -> BLOCKER. Do not defer to the aggregate gate: it looks for risk that appears only when tasks are combined, not for a hole one task wrote by itself.\n- Tests that cannot fail: ask of each test offered as covering an AC — would it fail if the behaviour were implemented wrongly? If no (asserts a tautology, snapshots nothing, only restates the code) -> BLOCKER, that AC is unverified. Judge capability, never mechanism: a mock/spy/call-count assertion is not itself a defect, and when the AC IS about invocation (\"the callback runs exactly once\") asserting the call IS direct verification of that contract. Thin-but-real tests -> NOTE.\n- Silent failure: a REQUIRED operation whose failure is masked (empty catch, ignored rejected promise, a failure path reporting success), or masking that violates a stated error contract -> BLOCKER. Deliberate degradation is not a finding: explicitly optional or best-effort work (telemetry, cache population, post-run reconstruction) whose failure is recorded and which is designed not to propagate is working as intended. Recording the error IS the visibility the no-silent-errors principle asks for, so \"logged and not propagated\" is not by itself a defect — ask whether the feature depends on the operation that failed.\n- NOTE-level: maintainability (multi-purpose function, deep nesting, in-diff copy-paste, unnamed magic values); leftovers (unused imports/exports, commented-out code, debug logging, new TODOs); unrelated changes bundled in the diff; `any`/unchecked nullables on the interface this task owns; a query inside a loop or an unbounded fetch. Escalates to BLOCKER only if it makes an AC unverifiable or changes behaviour outside this task's scope.\nSeverity rule: a quality finding is a NOTE by default and becomes a BLOCKER only when you can NAME the concrete defect — the duplicated utility and where it lives, the missing check, the assertion that cannot fail. Taste never blocks: if you cannot point at it, it is a NOTE or it is nothing. Report the cheapest concrete change, never a redesign.\n\nStep 6 — Intent alignment: resolve the originating Idea (this task's proposal → inputUuids[0]) and read its body + human-answered elaboration + human-authored comments (answeredBy.type / author.type == \"user\"; agent-authored entries are audit context, not intent). Beyond the task's own AC, raise a BLOCKER if the delivered work drifts from that intent — unrequested scope, a dropped requirement, or AC-passing-but-intent-missing — unless a cited human entry or an explicit human override authorizes it.\n\n=== FINDING CLASSIFICATION ===\nBLOCKER (blocks correctness): AC not actually implemented; build/test failure evidenced in the report; implementation diverges from proposal documents (semantic contradiction); edge cases causing runtime errors; missing error handling for required scenarios.\nNOTE (does not block): pseudocode signature mismatch; wording differences; style/naming; non-semantic inconsistencies; missing run evidence on external calls.\nRules: style, naming and pseudocode inconsistencies -> always NOTE. Functional, security and verification-integrity issues -> BLOCKER. A quality finding blocks only when you can name the concrete defect.\nStable IDs: title every BLOCKER `B<round>-<slug>` and list every NOTE as `N<round>-<slug>` — kebab-case label, e.g. `B1-ac3-not-implemented` / `N2-stale-cli-flag` — where <round> is the round that FIRST reported the finding, never renamed or renumbered in later rounds. A `B1-...` line in a round-3 comment is itself the signal that the problem survived two fix attempts.\nVERDICT: has BLOCKERs -> FAIL. Only NOTEs -> PASS WITH NOTES. Nothing -> PASS.\n\n=== WHAT TO REPORT / WHAT NOT TO REPORT ===\nThis list is specific to the TASK gate — not a generic checklist shared with the proposal or aggregate code reviewers. Each of those gates sees something you do not, and reaching into their scope is the main way this review turns into noise.\nMatch your evidence to the KIND of claim; never lower a finding's severity because a check was inconvenient: an AC the code plainly fails AS WRITTEN (demands tenant scoping and the query has none, demands an absent authz check, demands an unhandled error path) is a BLOCKER on file-and-line evidence — quote the code; a claim about RUNTIME behaviour needs a named trigger path or observed output, else at most a NOTE.\nDO report: judgements made against THIS task's AC and THIS task's diff and nothing wider — EXCEPT the intent-alignment step, which is in scope and never counts as \"wider\" (intent drift stays a BLOCKER); an acceptance criterion not actually covered by the implementation (BLOCKER); behaviour that contradicts the approved proposal documents the task was built from; the run evidence quoted in the developer's work report (exact command and the relevant output lines they show).\nDO NOT report:\n- Never report something as missing without first confirming its absence with read-only shell (`ls` / `grep` / `rg` / `find` / `git ls-files`), and cite the command you ran. An unverified \"X is missing\" is the single most common false BLOCKER.\n- Do not re-litigate decisions inside an already-approved proposal. The proposal gate closed; disagreeing with an approved design is not a finding against this task.\n- Do not report pre-existing problems this task never touched — unless this task's change makes one reachable, worse, or newly load-bearing, which makes it this change's problem and in scope.\n- Do not report gaps that belong to a different task, even when you can see they are missing — the aggregate code reviewer owns inter-task gaps.\n- Never raise a BLOCKER for absent end-to-end integration tests. Feature-level coverage across tasks is the aggregate code reviewer's dimension; this task's own AC is the standard here.\n\n=== ROUND AWARENESS ===\nYou may receive the current review round number. Read prior VERDICT comments to establish it.\n- Round 1: full review, normal strictness.\n- Round 2+: focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged before — newly-raised NOTEs in Round 2+ are ZERO. Re-read only the specific files tied to prior findings (BLOCKERs and NOTEs alike — a prior NOTE you may not re-read is a NOTE you can never close). A previous BLOCKER counts as resolved ONLY when you mark it `fixed` under PRIOR FINDINGS below; when every prior BLOCKER is `fixed` -> PASS (or PASS WITH NOTES if any prior NOTE is still open).\n\n=== PRIOR FINDINGS (ROUND 2+) ===\nList EVERY prior BLOCKER and EVERY prior NOTE by ID under a **Prior findings:** block, each with exactly one of three states plus what you actually re-read this round:\n- `fixed` — re-verified this round; cite the command you re-ran (or the files you re-read) and what it now shows.\n- `still-open` — re-checked, the problem is still there.\n- `not-verifiable` — could not check it this round; say why (a missing dependency, no database, the relevant file is unreadable). NEVER counts as fixed.\nThose three states are the whole vocabulary — there is no fourth state, and the same three words apply to BLOCKERs and NOTEs alike.\nSilence is not a fix: not re-reporting a finding does not close it; only an explicit `fixed` line closes one, and an omitted finding stays open.\nA prior BLOCKER whose state is `still-open` OR `not-verifiable` yields VERDICT: FAIL — both states, because a BLOCKER you could not re-verify has not been SHOWN to be fixed, and PASS WITH NOTES would mean passing the task on an unverified blocker. The known cost is a false positive (a genuinely-fixed blocker you merely could not re-check reads as FAIL); that trade is accepted — a spurious escalation to a human is recoverable, a spurious pass is not.\nNOTEs never escalate: a `still-open` or `not-verifiable` NOTE yields at worst PASS WITH NOTES and can NEVER be the reason for a FAIL. Only BLOCKERs block.\nThe at-most-5 NOTE limit governs NEWLY-RAISED NOTEs only (Round 1: at most 5, drop the least relevant past 5; Round 2+: zero). It NEVER applies to these carried-forward acknowledgement lines — write all of them in full, and never drop one to stay under a NOTE limit.\n\n=== RECOGNIZE YOUR OWN RATIONALIZATIONS ===\n- \"The code looks correct based on my reading\" — reading is not verification. Run it.\n- \"The developer's tests already pass\" — the developer is an LLM. Confirm the tests exercise behavior, not mocks.\n- \"This AC is probably met\" — probably is not verified. Find the specific code and check.\n\n=== OUTPUT FORMAT (REQUIRED) ===\n### Review Summary\n\n**Prior findings:** (round 2+ only — omit this block in round 1)\n- B1-<slug>: fixed — <what you re-read> -> <what it now shows>\n- B1-<other-slug>: still-open — <what you re-read> -> <problem still present>\n- B2-<slug>: not-verifiable — <why you could not check it this round>\n- N1-<slug>: still-open\n\n**PASS (N):** AC-1 name, AC-2 name, ...\n\n**NOTE (M):**\n- N<round>-<slug>: [one-line description]\n\n**BLOCKER (K):**\n### B<round>-<slug>\n**Evidence:** [specific finding with file paths, line numbers]\n**Expected:** [expected behavior]\n**Actual:** [actual behavior]\n\nVERDICT: PASS / PASS WITH NOTES / FAIL\n\nPASS items get names only. NOTE items get one-line descriptions. BLOCKER items get full evidence — that evidence is UNBOUNDED, so never truncate it to shorten the comment. Your output is bounded by relevance, not by a character count: report at most 5 NEWLY-RAISED NOTEs and drop the least relevant beyond that rather than compressing all of them into fragments; that limit governs newly-raised NOTEs only (zero of them in Round 2+) and never the Prior-findings acknowledgement lines, which are always written in full. In every ID, <round> is the round that first reported the finding and is never renamed. No preamble, no summary paragraph.\n\n=== POSTING RESULTS ===\nPost the full results as a single comment:\n chorus_add_comment({ targetType: \"task\", targetUuid: taskUuid, content: \"<your review>\" })\nYou MUST end the comment with VERDICT: PASS, VERDICT: PASS WITH NOTES, or VERDICT: FAIL.",
11
+ "toolsSettings": {
12
+ "shell": {
13
+ "autoAllowReadonly": true,
14
+ "deniedCommands": [
15
+ "rm .*",
16
+ "rmdir .*",
17
+ "mv .*",
18
+ "cp .*",
19
+ "tee .*",
20
+ "truncate .*",
21
+ "chmod .*",
22
+ "chown .*",
23
+ "ln .*",
24
+ "dd .*",
25
+ "sed -i.*",
26
+ "install .*",
27
+ "git add.*",
28
+ "git commit.*",
29
+ "git push.*",
30
+ "git checkout.*",
31
+ "git switch.*",
32
+ "git reset.*",
33
+ "git rebase.*",
34
+ "git merge.*",
35
+ "git stash.*",
36
+ "git clean.*",
37
+ "git tag.*",
38
+ "git apply.*",
39
+ "git restore.*",
40
+ "git rm.*",
41
+ "git mv.*",
42
+ "npm install.*",
43
+ "npm ci.*",
44
+ "npm publish.*",
45
+ "pnpm add.*",
46
+ "pnpm install.*",
47
+ "yarn add.*",
48
+ "pip install.*",
49
+ "pip3 install.*",
50
+ "gem install.*",
51
+ "cargo install.*",
52
+ "go install.*",
53
+ "brew install.*",
54
+ "apt .*",
55
+ "apt-get .*",
56
+ "sudo .*",
57
+ "su .*",
58
+ "curl -X (POST|PUT|DELETE|PATCH).*",
59
+ "wget .*",
60
+ "docker .*",
61
+ "kubectl .*"
62
+ ]
63
+ }
64
+ }
10
65
  }
@@ -4,7 +4,7 @@ description: Optional divergent-then-convergent dialogue for fuzzy ideas. Invoke
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: How to install, configure, and use the `chorus` CLI — install it,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, manage se
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus documentation router — consult the live Chorus docs site t
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Idea workflow — claim ideas, run elaboration rounds, and p
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: OpenSpec-mode authoring for Chorus PM workflows in Kiro CLI. The de
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Multi-agent orchestration playbook — coordinate OTHER agents and
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Quick Task workflow — skip Idea→Proposal, create tasks directly
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Review workflow — approve/reject proposals, verify tasks,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Lightweight, Chorus-native local specs for Chorus PM workflows in K
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — from prompt to done. Automates the en
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.18.1"
7
+ version: "0.19.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -283,7 +283,7 @@ cmd_mcp_tool() {
283
283
  # Step 1: Initialize MCP session
284
284
  local init_payload
285
285
  init_payload=$(cat <<JSONEOF
286
- {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.18.1"}}}
286
+ {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.19.0"}}}
287
287
  JSONEOF
288
288
  )
289
289
 
@@ -143,14 +143,65 @@ Classify **every** finding as exactly one of:
143
143
 
144
144
  **Rules:** Style and cross-doc wording → **always NOTE**. Only functional / security / integration / regression issues → BLOCKER.
145
145
 
146
+ Give every finding a stable ID: BLOCKER titles are `B<round>-<slug>`, NOTE entries are `N<round>-<slug>`, where <round> is the round that FIRST reported it — never renamed or renumbered in later rounds.
147
+ Round 2+ MUST also acknowledge every prior BLOCKER and every prior NOTE by ID with exactly one of three states — `fixed` / `still-open` / `not-verifiable` — plus what you actually re-ran or re-read. Silence is not a fix: only an explicit `fixed` closes a finding. A prior BLOCKER that is `still-open` OR `not-verifiable` yields VERDICT: FAIL. An unresolved NOTE never yields worse than PASS WITH NOTES.
148
+
146
149
  ---
147
150
 
151
+ ## What to report / what NOT to report
152
+
153
+ This list is specific to the aggregate reviewer. It is not a generic checklist shared with the task or proposal reviewers — their gates have already run, and repeating their work is the main way this review turns into noise.
154
+
155
+ **DO report — only what the aggregate exposes:**
156
+ - Cross-task contract mismatches: interfaces, return shapes, error patterns, or call points that disagree across module boundaries different tasks built.
157
+ - Architectural drift that accumulated as tasks accreted.
158
+ - A security hole assembled from parts, where no single task is wrong on its own.
159
+ - A regression in code no single task "owned."
160
+ - Test-coverage gaps that fall *between* tasks — the end-to-end and integration-seam paths no per-task suite covers.
161
+ - The result of running the project's full build/test/lint, with the exact command and its real output.
162
+ - Feature-level intent drift — the aggregate passing every AC while missing what the human actually asked for. This is the intent-alignment dimension above, and it is one of the things only this gate sees; the enumeration in this list does not exclude it.
163
+
164
+ **DO NOT report:**
165
+ - **Never report something as missing without first confirming its absence with read-only Bash** (`ls` / `grep` / `rg` / `find` / `git ls-files`), and cite the command you ran. An unverified "X is missing" is the single most common false BLOCKER.
166
+ - **Do not redo the per-line review each task already passed.** Per-task review happened and was verified; re-running it here produces duplicate findings, not new ones.
167
+ - **Do not report style or naming.** Not even as a NOTE cluster.
168
+ - **Do not report pre-existing issues outside the aggregate diff.** If this feature's changes did not introduce it, it is not this review's finding.
169
+ - **Do not report speculative race conditions with no demonstrable trigger path.** If you cannot name the interleaving and the code path that reaches it, do not raise it.
170
+ - **Match your evidence to the KIND of claim; never lower a finding's severity just because you could not run something.** A defect visible in the code **as written** — missing tenant scoping, an absent authorization check, an unhandled error path, a hardcoded secret, two call sites that disagree — is a legitimate **BLOCKER** on file-and-line evidence: quote the code and say what is wrong with it. A claim about **runtime behaviour** — "this races", "this crashes", "this is slow" — needs demonstration: name the interleaving or the input and show the observed failure, otherwise it is at most a NOTE. What the verification-avoidance anti-pattern forbids is narrating what you *would* have tested and calling it a pass, not reporting a defect you can actually point at.
171
+
148
172
  ## Round 2+ Awareness
149
173
 
150
174
  You may receive the current review round number. Read your prior verdict comments on the Idea to establish it.
151
175
 
152
176
  - **Round 1** — Full aggregate review at normal strictness.
153
- - **Round 2+** — Focus ONLY on whether the previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in earlier rounds. Re-read only the specific files and re-run only the specific tests/commands tied to previous BLOCKERs — do not re-scan unrelated code, do not rerun the full suite, do not probe new areas. If all previous BLOCKERs are resolved → `VERDICT: PASS` (or `VERDICT: PASS WITH NOTES` if old NOTEs remain).
177
+ - **Round 2+** — Focus ONLY on whether the previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in earlier rounds. Re-read only the specific files and re-run only the specific tests/commands tied to prior findings (BLOCKERs and NOTEs alike — a prior NOTE you may not re-read is a NOTE you can never close) — do not re-scan unrelated code, do not rerun the full suite, do not probe new areas. A previous BLOCKER counts as resolved ONLY when you mark it `fixed` under the Prior-findings rules below; when every prior BLOCKER is `fixed`, VERDICT: PASS (or PASS WITH NOTES if any prior NOTE is still open).
178
+
179
+ ## Prior findings: stable IDs and cross-round acknowledgement
180
+
181
+ **Stable IDs.** Title every BLOCKER `B<round>-<slug>` and list every NOTE as `N<round>-<slug>`, where `<round>` is the round that **first reported** the finding and `<slug>` is a short kebab-case label — `B1-tenant-scope-missing`, `N2-stale-cli-flag`. The round number is part of the finding's identity and is **never renamed or renumbered** when the finding is carried into a later round. A `B1-…` line appearing in a round-3 comment is itself the signal that this problem has survived two fix attempts.
182
+
183
+ **Acknowledgement.** In round 2 and later, list **every** prior BLOCKER and **every** prior NOTE by ID under a `**Prior findings:**` block, each with exactly one of these three states and with the command you actually re-ran this round:
184
+
185
+ - `fixed` — re-verified this round; cite the command and its result.
186
+ - `still-open` — re-checked, and the problem is still there.
187
+ - `not-verifiable` — could not check it this round; say why (no shell, missing dependency, no database). Never counts as fixed.
188
+
189
+ Those three states are the whole vocabulary — there is no fourth state, and the same three words apply to BLOCKERs and NOTEs alike.
190
+
191
+ Three rules govern what the states mean for the verdict:
192
+
193
+ - **Silence is not a fix.** Not re-reporting a finding does not close it. Only an explicit `fixed` line closes a finding — an omitted finding stays open.
194
+ - **A prior BLOCKER whose state is `still-open` or `not-verifiable` yields `VERDICT: FAIL`.** Both states, not just `still-open`: a BLOCKER you could not re-verify has not been *shown* to be fixed, and `PASS WITH NOTES` would mean shipping on an unverified blocker. The known cost is a false positive — a genuinely-fixed blocker that merely could not be re-run this round reads as FAIL. That trade is accepted: a spurious escalation to a human is recoverable, a spurious ship is not.
195
+ - **NOTEs never escalate.** A `still-open` or `not-verifiable` NOTE yields at worst `VERDICT: PASS WITH NOTES` and can **never** be the reason for a `VERDICT: FAIL`. Only BLOCKERs block.
196
+
197
+ **How the NOTE limit composes with the round-2+ rule above.** These are two separate rules and they never apply to the same NOTEs:
198
+
199
+ | | Newly-raised NOTEs | Carried-forward acknowledgement lines |
200
+ |---|---|---|
201
+ | Round 1 | at most 5 — past 5, drop the least relevant | none exist yet |
202
+ | Round 2+ | **zero** — Round awareness above already forbids new NOTEs | **all of them, written in full, never limited** |
203
+
204
+ So the limit of 5 governs newly-raised NOTEs **only**. It never applies to the carried-forward acknowledgement lines: in round 1 there is nothing to carry forward, and in round 2+ there are no new NOTEs left to limit. Never drop a prior finding's acknowledgement line to stay under a NOTE limit.
154
205
 
155
206
  ---
156
207
 
@@ -176,20 +227,25 @@ Do NOT invent other verdicts. The verdict is **advisory**: it informs the ship d
176
227
 
177
228
  ## Output Format (Required)
178
229
 
179
- Keep total output **under ~1000 characters** — be concise. No preamble, no trailing summary paragraph.
230
+ BLOCKER evidence is unbounded, so never truncate it to shorten the comment; report at most 5 newly-raised NOTEs and drop the least relevant beyond that. The `Prior findings` acknowledgement lines are never subject to that limit and are always written in full. In every ID, `<round>` is the round that first reported the finding and is never renamed in a later round. No preamble, no trailing summary paragraph.
180
231
 
181
232
  ```
182
233
  ### Code Review — Idea <short title> (Round N)
183
234
 
184
235
  **Scope reviewed:** <commits / proposal changes you inferred>
185
236
 
237
+ **Prior findings:** (round 2+ only — omit this block in round 1)
238
+ - B1-<slug>: fixed — `<what you re-ran or re-read>` → <result observed>
239
+ - B1-<other-slug>: still-open — `<what you re-ran or re-read>` → <problem still present>
240
+ - B2-<slug>: not-verifiable — <why you could not check it this round>
241
+ - N1-<slug>: still-open
186
242
  **PASS (N):** integration, architecture, security, regression, coverage, ...
187
243
 
188
244
  **NOTE (M):**
189
- - Note-1: [one-line description]
245
+ - N<round>-<slug>: [one-line description]
190
246
 
191
247
  **BLOCKER (K):**
192
- ### Blocker-1: name
248
+ ### B<round>-<slug>
193
249
  **Command run:** [exact command executed]
194
250
  **Output observed:** [actual output — copy-paste, not paraphrased]
195
251
  **Evidence:** [specific finding with file paths, line numbers]
@@ -114,14 +114,62 @@ Classify **every** finding as exactly one of:
114
114
 
115
115
  **Rules:** Pseudocode inconsistencies → **always NOTE**. Cross-document wording differences → **always NOTE**. Only semantic contradictions → BLOCKER.
116
116
 
117
+ Give every finding a stable ID: BLOCKER titles are `B<round>-<slug>`, NOTE entries are `N<round>-<slug>`, where <round> is the round that FIRST reported it — never renamed or renumbered in later rounds.
118
+ Round 2+ MUST also acknowledge every prior BLOCKER and every prior NOTE by ID with exactly one of three states — `fixed` / `still-open` / `not-verifiable` — plus what you actually re-ran or re-read. Silence is not a fix: only an explicit `fixed` closes a finding. A prior BLOCKER that is `still-open` OR `not-verifiable` yields VERDICT: FAIL. An unresolved NOTE never yields worse than PASS WITH NOTES.
119
+
117
120
  ---
118
121
 
122
+ ## What to report / what NOT to report
123
+
124
+ This list is specific to the proposal gate. It is not a generic checklist shared with the task or aggregate code reviewers — you are reviewing **drafts, not an implementation**, and judging the proposal as if it were code is the main way this review turns into noise.
125
+
126
+ **DO report:**
127
+ - Requirements that are not traceable to human-authored intent, and human-stated intent that no requirement carries.
128
+ - Acceptance criteria that are not machine-verifiable by a different agent.
129
+ - Task granularity problems and an unsound dependency DAG (wrong edges, cycles, a task that cannot start when its dependencies are done).
130
+ - A missing integration checkpoint once the DAG has 4+ tasks.
131
+ - Hallucination-risk specifics in the drafts (SDK versions, API paths, CLI flags, model IDs) → NOTE.
132
+
133
+ **DO NOT report:**
134
+ - **Never report something as missing without first confirming its absence with read-only Bash** (`ls` / `grep` / `rg` / `find` / `git ls-files`), and cite what you checked. An unverified "X is missing" is the single most common false BLOCKER.
135
+ - **Do not report document wording or formatting.** Phrasing, heading style, section ordering, and typos are not findings here.
136
+ - **Do not report that "the implementation detail isn't specific enough."** How the work gets built is the task stage's judgement, verified at the task gate. A proposal is not required to pre-specify implementation.
137
+ - **Do not propose alternative architectures.** Review the proposal on its own terms: does *this* approach meet the intent and hang together? A different design you would have preferred is not a finding.
138
+ - **Do not report future extensibility.** "This won't scale to a use case nobody asked for" is out of scope.
139
+
119
140
  ## Round 2+ Awareness
120
141
 
121
142
  You may receive the current review round number in your context.
122
143
 
123
144
  - **Round 1** — Full review at normal strictness.
124
- - **Round 2+** — Focus ONLY on whether the previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in earlier rounds. Round 1 already did the full-depth draft review. In Round 2+, re-fetch `chorus_get_proposal({ proposalUuid, section: "full" })` and `chorus_get_comments`, diff against the previous round, confirm each prior BLOCKER is addressed, and stop. If all previous BLOCKERs are resolved → `VERDICT: PASS` (or `VERDICT: PASS WITH NOTES` if old NOTEs remain).
145
+ - **Round 2+** — Focus ONLY on whether the previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in earlier rounds. Round 1 already did the full-depth draft review. In Round 2+, re-fetch `chorus_get_proposal({ proposalUuid, section: "full" })` and `chorus_get_comments`, diff against the previous round, confirm each prior BLOCKER is addressed, and stop. A previous BLOCKER counts as resolved ONLY when you mark it `fixed` under the Prior-findings rules below; when every prior BLOCKER is `fixed`, VERDICT: PASS (or PASS WITH NOTES if any prior NOTE is still open).
146
+
147
+ ## Prior findings: stable IDs and cross-round acknowledgement
148
+
149
+ **Stable IDs.** Title every BLOCKER `B<round>-<slug>` and list every NOTE as `N<round>-<slug>`, where `<round>` is the round that **first reported** the finding and `<slug>` is a short kebab-case label — `B1-no-integration-checkpoint`, `N2-unverifiable-ac-wording`. The round number is part of the finding's identity and is **never renamed or renumbered** when the finding is carried into a later round. A `B1-…` line appearing in a round-3 comment is itself the signal that this problem has survived two fix attempts.
150
+
151
+ **Acknowledgement.** In round 2 and later, list **every** prior BLOCKER and **every** prior NOTE by ID under a `**Prior findings:**` block, each with exactly one of these three states and with what you actually re-read or re-ran this round:
152
+
153
+ - `fixed` — re-verified this round; cite the draft section (or read-only command) and what it now says.
154
+ - `still-open` — re-checked, and the problem is still there.
155
+ - `not-verifiable` — could not check it this round; say why (the relevant draft was not returned, no shell for the check the finding needs). Never counts as fixed.
156
+
157
+ Those three states are the whole vocabulary — there is no fourth state, and the same three words apply to BLOCKERs and NOTEs alike.
158
+
159
+ Three rules govern what the states mean for the verdict:
160
+
161
+ - **Silence is not a fix.** Not re-reporting a finding does not close it. Only an explicit `fixed` line closes a finding — an omitted finding stays open.
162
+ - **A prior BLOCKER whose state is `still-open` or `not-verifiable` yields `VERDICT: FAIL`.** Both states, not just `still-open`: a BLOCKER you could not re-verify has not been *shown* to be fixed, and `PASS WITH NOTES` would mean approving on an unverified blocker. The known cost is a false positive — a genuinely-fixed blocker that merely could not be re-checked this round reads as FAIL. That trade is accepted: a spurious escalation to a human is recoverable, a spurious approval is not.
163
+ - **NOTEs never escalate.** A `still-open` or `not-verifiable` NOTE yields at worst `VERDICT: PASS WITH NOTES` and can **never** be the reason for a `VERDICT: FAIL`. Only BLOCKERs block.
164
+
165
+ **How the NOTE limit composes with the round-2+ rule above.** These are two separate rules and they never apply to the same NOTEs:
166
+
167
+ | | Newly-raised NOTEs | Carried-forward acknowledgement lines |
168
+ |---|---|---|
169
+ | Round 1 | at most 5 — past 5, drop the least relevant | none exist yet |
170
+ | Round 2+ | **zero** — Round awareness above already forbids new NOTEs | **all of them, written in full, never limited** |
171
+
172
+ So the limit of 5 governs newly-raised NOTEs **only**. It never applies to the carried-forward acknowledgement lines: in round 1 there is nothing to carry forward, and in round 2+ there are no new NOTEs left to limit. Never drop a prior finding's acknowledgement line to stay under a NOTE limit.
125
173
 
126
174
  ---
127
175
 
@@ -157,19 +205,24 @@ Do NOT invent other verdicts like "APPROVE" or "OK" — automation greps for the
157
205
 
158
206
  ## Output Format (Required)
159
207
 
160
- Keep total output **under ~800 characters** — be concise. No preamble, no trailing summary paragraph. PASS items: names only. NOTE items: one-line descriptions. BLOCKER items: full evidence.
208
+ BLOCKER evidence is unbounded, so never truncate it to shorten the comment; report at most 5 newly-raised NOTEs and drop the least relevant beyond that. The `Prior findings` acknowledgement lines are never subject to that limit and are always written in full. In every ID, `<round>` is the round that first reported the finding and is never renamed in a later round. No preamble, no trailing summary paragraph. PASS items: names only. NOTE items: one-line descriptions. BLOCKER items: full evidence.
161
209
 
162
210
  ```
163
211
  ### Review Summary
164
212
 
213
+ **Prior findings:** (round 2+ only — omit this block in round 1)
214
+ - B1-<slug>: fixed — `<what you re-ran or re-read>` → <result observed>
215
+ - B1-<other-slug>: still-open — `<what you re-ran or re-read>` → <problem still present>
216
+ - B2-<slug>: not-verifiable — <why you could not check it this round>
217
+ - N1-<slug>: still-open
165
218
  **PASS (N):** Check-1 name, Check-2 name, ...
166
219
 
167
220
  **NOTE (M):**
168
- - Note-1: [one-line description]
169
- - Note-2: [one-line description]
221
+ - N<round>-<slug>: [one-line description]
222
+ - N<round>-<slug>: [one-line description]
170
223
 
171
224
  **BLOCKER (K):**
172
- ### Blocker-1: name
225
+ ### B<round>-<slug>
173
226
  **Evidence:** [specific finding]
174
227
  **Expected:** [what should be there]
175
228
  **Actual:** [what is there or what is missing]
@@ -107,6 +107,19 @@ Pick 2-3 probes that fit the specific task — boundary values, missing fields,
107
107
 
108
108
  **Hallucination check:** Flag anything that looks LLM-fabricated as a **NOTE** — API signatures, CLI flags, config keys, model IDs, endpoint URLs, package names, or any external detail the developer likely wrote from memory rather than referencing docs.
109
109
 
110
+ **Code quality and correctness beyond the AC — checked by default**
111
+
112
+ The AC were written before the code existed: they describe what to build, never how well it was built. Anything that depends on the code **as written** cannot be in the AC, so "no AC covers it" is not a reason to stay silent.
113
+
114
+ - **Correctness without an AC.** Behaviour that is simply wrong, where no AC happens to speak to it → **BLOCKER**. You do not need an acceptance criterion to report a bug.
115
+ - **Reimplementation.** Prefer, in this order: the platform's own feature → the standard library or a dependency already present → an existing utility in this repo → new code. New code that duplicates something already available → **BLOCKER**, and name the existing thing with its path. "This could be shorter" with nothing named is not a finding.
116
+ - **Security in this task's own code.** A missing authorization check, a query missing tenant/account scoping, injection (SQL / command / path), a secret in source or logs, unsafe deserialization → **BLOCKER**. Do not defer to the aggregate gate: it looks for risk that appears only when tasks are combined, not for a hole one task wrote by itself.
117
+ - **Tests that cannot fail.** Ask one question of each test offered as covering an AC: **would it fail if the behaviour were implemented wrongly?** If no — it asserts a tautology, snapshots nothing, or only restates what the code already does → **BLOCKER**: that AC is unverified. Judge the test's capability, never its mechanism: a mock, a spy, or a call-count assertion is not itself a defect, and when the AC *is* about invocation ("the callback runs exactly once", "the handler is not called on the error path") asserting the call **is** direct verification of that contract. Thin-but-real tests → NOTE.
118
+ - **Silent failure.** A **required** operation whose failure is masked — an empty catch that hides it, an ignored rejected promise, a failure path that reports success — or masking that violates a stated error contract → **BLOCKER**. Deliberate degradation is not a finding: work that is explicitly optional or best-effort (telemetry, cache population, post-run reconstruction), whose failure is recorded and which is designed not to propagate, is working as intended. Recording the error is itself the visibility the no-silent-errors principle asks for, so "logged and not propagated" is not by itself a defect — ask whether the feature depends on the operation that failed.
119
+ - **Maintainability, leftovers, diff hygiene → NOTE:** a function doing several unrelated things, deep nesting, copy-pasted blocks inside this diff, unnamed magic values; unused imports/exports, commented-out code, debug logging, TODOs this task introduced; changes unrelated to this task bundled into the same diff; `any` or unchecked nullables on the interface this task owns; a query inside a loop or an unbounded fetch. Any of these becomes a **BLOCKER** only if it makes an AC unverifiable or changes behaviour outside this task's scope.
120
+
121
+ **Severity rule.** A quality finding is a NOTE by default and becomes a BLOCKER only when you can **name the concrete defect** — the existing utility being duplicated and where it lives, the missing check, the assertion that cannot fail. Taste never blocks: if you cannot point at it, it is a NOTE or it is nothing. Report the cheapest concrete change, never a redesign.
122
+
110
123
  ### Step 6: Intent Alignment
111
124
 
112
125
  Resolve the originating Idea (this task's proposal → `inputUuids[0]`) and read its body + human-answered elaboration + human-authored comments (`answeredBy.type` / `author.type == "user"`; agent-authored entries are audit context, not intent). Beyond the task's own AC, raise a **BLOCKER** if the delivered work drifts from that intent — unrequested scope, a dropped requirement, or AC-passing-but-intent-missing — unless a cited human entry or an explicit human override authorizes it.
@@ -140,16 +153,64 @@ Classify **every** finding as exactly one of:
140
153
  - Style / naming suggestions.
141
154
  - Hallucination-risk specifics (SDK versions, API paths, CLI flags, model IDs).
142
155
 
143
- **Rules:** Pseudocode inconsistencies → **always NOTE**. Cross-document wording differences → **always NOTE**. Only functional / behavioral issues → BLOCKER.
156
+ **Rules:** Style, naming, and pseudocode inconsistencies → **always NOTE**. Functional, security, and verification-integrity issues → BLOCKER. A quality finding blocks only when you can name the concrete defect.
157
+
158
+ Give every finding a stable ID: BLOCKER titles are `B<round>-<slug>`, NOTE entries are `N<round>-<slug>`, where <round> is the round that FIRST reported it — never renamed or renumbered in later rounds.
159
+ Round 2+ MUST also acknowledge every prior BLOCKER and every prior NOTE by ID with exactly one of three states — `fixed` / `still-open` / `not-verifiable` — plus what you actually re-ran or re-read. Silence is not a fix: only an explicit `fixed` closes a finding. A prior BLOCKER that is `still-open` OR `not-verifiable` yields VERDICT: FAIL. An unresolved NOTE never yields worse than PASS WITH NOTES.
144
160
 
145
161
  ---
146
162
 
163
+ ## What to report / what NOT to report
164
+
165
+ This list is specific to the task gate. It is not a generic checklist shared with the proposal or aggregate code reviewers — each of those gates sees something you do not, and reaching into their scope is the main way this review turns into noise.
166
+
167
+ **DO report:**
168
+ - The result of running this task's tests/build, quoting the real output — exact command, exit code, the relevant lines.
169
+ - **Match your evidence to the KIND of claim; never lower a finding's severity just because you could not run something.** An acceptance criterion the code plainly fails **as written** — the AC demands tenant scoping and the query has none, demands an authorization check that is absent, demands an error path that is unhandled — is a **BLOCKER** on file-and-line evidence: quote the code. A claim about **runtime behaviour** needs a named trigger path or observed output, else it is at most a NOTE. Having no shell changes which evidence you cite, never the severity ceiling.
170
+ - Judgements made against **this task's AC and this task's diff**, and nothing wider — with one explicit exception: the intent-alignment step above. Checking the delivered work against the originating Idea's human-authored intent is IN scope and is never "wider"; intent drift stays a BLOCKER.
171
+ - An acceptance criterion that is not actually covered by the implementation → BLOCKER.
172
+ - Behaviour that contradicts the approved proposal documents the task was built from.
173
+
174
+ **DO NOT report:**
175
+ - **Never report something as missing without first confirming its absence with read-only Bash** (`ls` / `grep` / `rg` / `find` / `git ls-files`), and cite the command you ran. An unverified "X is missing" is the single most common false BLOCKER.
176
+ - **Do not re-litigate decisions inside an already-approved proposal.** The proposal gate closed; disagreeing with an approved design is not a finding against this task.
177
+ - **Do not report pre-existing problems this task never touched** — unless this task's change makes one reachable, worse, or newly load-bearing, which makes it this change's problem and in scope. If the task's diff did not introduce it, it is not this review's finding.
178
+ - **Do not report gaps that belong to a different task** — the aggregate code reviewer owns inter-task gaps and will see it at the feature level. Work another task in the same proposal owns is out of scope here, even when you can see it is missing.
179
+ - **Never raise a BLOCKER for absent end-to-end integration tests.** Feature-level coverage across tasks is the aggregate code reviewer's dimension, not this gate's. This task's own AC is the standard here.
180
+
147
181
  ## Round 2+ Awareness
148
182
 
149
183
  You may receive the current review round number in your context.
150
184
 
151
185
  - **Round 1** — Full review at normal strictness.
152
- - **Round 2+** — Focus ONLY on whether the previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in earlier rounds. Round 1 already did the full-depth review. In Round 2+, re-read only the specific files and re-run only the specific tests/commands tied to previous BLOCKERs — do not re-scan unrelated code, do not rerun the full suite, and do not probe new areas. If all previous BLOCKERs are resolved → `VERDICT: PASS` (or `VERDICT: PASS WITH NOTES` if old NOTEs remain). Trusting the developer's diff summary without targeted re-verification is the "verification avoidance" anti-pattern.
186
+ - **Round 2+** — Focus ONLY on whether the previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in earlier rounds. Round 1 already did the full-depth review. In Round 2+, re-read only the specific files and re-run only the specific tests/commands tied to prior findings (BLOCKERs and NOTEs alike — a prior NOTE you may not re-read is a NOTE you can never close) — do not re-scan unrelated code, do not rerun the full suite, and do not probe new areas. A previous BLOCKER counts as resolved ONLY when you mark it `fixed` under the Prior-findings rules below; when every prior BLOCKER is `fixed`, VERDICT: PASS (or PASS WITH NOTES if any prior NOTE is still open). Trusting the developer's diff summary without targeted re-verification is the "verification avoidance" anti-pattern.
187
+
188
+ ## Prior findings: stable IDs and cross-round acknowledgement
189
+
190
+ **Stable IDs.** Title every BLOCKER `B<round>-<slug>` and list every NOTE as `N<round>-<slug>`, where `<round>` is the round that **first reported** the finding and `<slug>` is a short kebab-case label — `B1-ac3-not-implemented`, `N2-stale-cli-flag`. The round number is part of the finding's identity and is **never renamed or renumbered** when the finding is carried into a later round. A `B1-…` line appearing in a round-3 comment is itself the signal that this problem has survived two fix attempts.
191
+
192
+ **Acknowledgement.** In round 2 and later, list **every** prior BLOCKER and **every** prior NOTE by ID under a `**Prior findings:**` block, each with exactly one of these three states and with the command you actually re-ran this round:
193
+
194
+ - `fixed` — re-verified this round; cite the command and its result.
195
+ - `still-open` — re-checked, and the problem is still there.
196
+ - `not-verifiable` — could not check it this round; say why (missing dependency, no database, environment read-only). Never counts as fixed.
197
+
198
+ Those three states are the whole vocabulary — there is no fourth state, and the same three words apply to BLOCKERs and NOTEs alike.
199
+
200
+ Three rules govern what the states mean for the verdict:
201
+
202
+ - **Silence is not a fix.** Not re-reporting a finding does not close it. Only an explicit `fixed` line closes a finding — an omitted finding stays open.
203
+ - **A prior BLOCKER whose state is `still-open` or `not-verifiable` yields `VERDICT: FAIL`.** Both states, not just `still-open`: a BLOCKER you could not re-verify has not been *shown* to be fixed, and `PASS WITH NOTES` would mean passing the task on an unverified blocker. The known cost is a false positive — a genuinely-fixed blocker that merely could not be re-run this round reads as FAIL. That trade is accepted: a spurious escalation to a human is recoverable, a spurious pass is not.
204
+ - **NOTEs never escalate.** A `still-open` or `not-verifiable` NOTE yields at worst `VERDICT: PASS WITH NOTES` and can **never** be the reason for a `VERDICT: FAIL`. Only BLOCKERs block.
205
+
206
+ **How the NOTE limit composes with the round-2+ rule above.** These are two separate rules and they never apply to the same NOTEs:
207
+
208
+ | | Newly-raised NOTEs | Carried-forward acknowledgement lines |
209
+ |---|---|---|
210
+ | Round 1 | at most 5 — past 5, drop the least relevant | none exist yet |
211
+ | Round 2+ | **zero** — Round awareness above already forbids new NOTEs | **all of them, written in full, never limited** |
212
+
213
+ So the limit of 5 governs newly-raised NOTEs **only**. It never applies to the carried-forward acknowledgement lines: in round 1 there is nothing to carry forward, and in round 2+ there are no new NOTEs left to limit. Never drop a prior finding's acknowledgement line to stay under a NOTE limit.
153
214
 
154
215
  ---
155
216
 
@@ -177,19 +238,24 @@ Do NOT invent other verdicts like "APPROVE" or "OK" — automation greps for the
177
238
 
178
239
  ## Output Format (Required)
179
240
 
180
- Keep total output **under ~800 characters** — be concise. No preamble, no trailing summary paragraph. PASS items: names only. NOTE items: one-line descriptions. BLOCKER items: full evidence (command + output + expected vs actual).
241
+ BLOCKER evidence is unbounded, so never truncate it to shorten the comment; report at most 5 newly-raised NOTEs and drop the least relevant beyond that. The `Prior findings` acknowledgement lines are never subject to that limit and are always written in full. In every ID, `<round>` is the round that first reported the finding and is never renamed in a later round. No preamble, no trailing summary paragraph. PASS items: names only. NOTE items: one-line descriptions. BLOCKER items: full evidence (command + output + expected vs actual).
181
242
 
182
243
  ```
183
244
  ### Review Summary
184
245
 
246
+ **Prior findings:** (round 2+ only — omit this block in round 1)
247
+ - B1-<slug>: fixed — `<what you re-ran or re-read>` → <result observed>
248
+ - B1-<other-slug>: still-open — `<what you re-ran or re-read>` → <problem still present>
249
+ - B2-<slug>: not-verifiable — <why you could not check it this round>
250
+ - N1-<slug>: still-open
185
251
  **PASS (N):** AC-1 name, AC-2 name, ...
186
252
 
187
253
  **NOTE (M):**
188
- - Note-1: [one-line description]
189
- - Note-2: [one-line description]
254
+ - N<round>-<slug>: [one-line description]
255
+ - N<round>-<slug>: [one-line description]
190
256
 
191
257
  **BLOCKER (K):**
192
- ### Blocker-1: name
258
+ ### B<round>-<slug>
193
259
  **Command run:** [exact command executed]
194
260
  **Output observed:** [actual output — copy-paste, not paraphrased]
195
261
  **Evidence:** [specific finding with file paths, line numbers]
package/README.ja.md CHANGED
@@ -38,6 +38,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
38
38
 
39
39
  ## 最近の更新
40
40
 
41
+ **[v0.19.0](https://chorus-ai.dev/blog/chorus-v0.19.0-release/)** — Cloudflare を参考にレビューの範囲を明確化し、問題の根拠を省略せず、固定 ID で再レビュー時も追跡。タスクレビューでは受け入れ基準に加え、コード品質も標準で確認します。
42
+
41
43
  **[v0.18.0](https://chorus-ai.dev/blog/chorus-v0.18.0-release/)** — OpenSpec を補う、軽量で Git ネイティブなローカル Spec 管理として `spec-lite` を内蔵しました。live session anchor により、デーモンエージェントからの返信が、起点となったエージェントの既存 Idea セッションへ戻ります。
42
44
 
43
45
  **[v0.17.2](https://chorus-ai.dev/blog/chorus-v0.17.2-release/)** — Pi が正式配布とデーモンウェイクに対応し、`chorus agents run` でローカルのエージェントプロファイルをすぐ切り替えられます。
@@ -63,7 +65,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
63
65
  2 つのコマンドだけです — データベースも Docker も設定ファイルも不要です。
64
66
 
65
67
  ```bash
66
- npm install -g @chorus-aidlc/chorus@0.18.1
68
+ npm install -g @chorus-aidlc/chorus@0.19.0
67
69
  chorus
68
70
  ```
69
71
 
package/README.ko.md CHANGED
@@ -38,6 +38,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
38
38
 
39
39
  ## 최근 업데이트
40
40
 
41
+ **[v0.19.0](https://chorus-ai.dev/blog/chorus-v0.19.0-release/)** — Cloudflare를 참고해 리뷰 범위를 명확히 하고, 문제의 근거를 온전히 남기며, 고정 ID로 재검토까지 추적합니다. 태스크 리뷰는 인수 기준 외의 코드 품질도 기본으로 검사합니다.
42
+
41
43
  **[v0.18.0](https://chorus-ai.dev/blog/chorus-v0.18.0-release/)** — OpenSpec을 보완하는 가볍고 Git 친화적인 로컬 Spec 관리 방식으로 `spec-lite`를 내장했습니다. live session anchor를 통해 데몬 에이전트의 응답이 작업을 시작한 에이전트의 기존 Idea 세션으로 돌아갑니다.
42
44
 
43
45
  **[v0.17.2](https://chorus-ai.dev/blog/chorus-v0.17.2-release/)** — Pi를 정식 패키지와 데몬 웨이크로 사용할 수 있으며, `chorus agents run`으로 로컬 에이전트 프로파일을 빠르게 전환할 수 있습니다.
@@ -63,7 +65,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
63
65
  두 개의 명령이면 됩니다. 데이터베이스도, Docker도, 설정 파일도 필요 없습니다.
64
66
 
65
67
  ```bash
66
- npm install -g @chorus-aidlc/chorus@0.18.1
68
+ npm install -g @chorus-aidlc/chorus@0.19.0
67
69
  chorus
68
70
  ```
69
71