@chorus-aidlc/chorus 0.9.1 → 0.9.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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +223 -223
- package/.next/standalone/.next/app-path-routes-manifest.json +38 -38
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +39 -39
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +1 -1
- package/.next/standalone/.next/server/app/admin/companies.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +1 -1
- package/.next/standalone/.next/server/app/admin.rsc +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +3 -3
- package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/admin.html +1 -1
- package/.next/standalone/.next/server/app/login/admin.rsc +1 -1
- package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/callback.html +1 -1
- package/.next/standalone/.next/server/app/login/callback.rsc +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +1 -1
- package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
- package/.next/standalone/.next/server/app/login/silent-refresh.rsc +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +1 -1
- package/.next/standalone/.next/server/app/onboarding/page.js +3 -3
- package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding.html +1 -1
- package/.next/standalone/.next/server/app/onboarding.rsc +2 -2
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +1 -1
- package/.next/standalone/.next/server/app/projects.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +3 -3
- package/.next/standalone/.next/server/app-paths-manifest.json +38 -38
- package/.next/standalone/.next/server/chunks/1165.js +1 -1
- package/.next/standalone/.next/server/chunks/2990.js +1 -0
- package/.next/standalone/.next/server/chunks/4090.js +2 -2
- package/.next/standalone/.next/server/chunks/5491.js +1 -0
- package/.next/standalone/.next/server/chunks/6207.js +1 -1
- package/.next/standalone/.next/server/chunks/{5044.js → 6878.js} +1 -1
- package/.next/standalone/.next/server/chunks/7228.js +2 -2
- package/.next/standalone/.next/server/chunks/7578.js +2 -2
- package/.next/standalone/.next/server/chunks/7621.js +1 -0
- package/.next/standalone/.next/server/chunks/8144.js +1 -0
- package/.next/standalone/.next/server/chunks/8637.js +1 -1
- package/.next/standalone/.next/server/chunks/896.js +1 -0
- package/.next/standalone/.next/server/chunks/9508.js +2 -2
- package/.next/standalone/.next/server/middleware-manifest.json +5 -5
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/pages-manifest.json +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/19126-12ce8ade288ce1dc.js +1 -0
- package/.next/standalone/.next/static/chunks/19898-7e07c69b635e3662.js +1 -0
- package/.next/standalone/.next/static/chunks/35486-1978488574385a45.js +1 -0
- package/.next/standalone/.next/static/chunks/52206-51a89715ca643e44.js +1 -0
- package/.next/standalone/.next/static/chunks/60011-b602fea2afba6992.js +1 -0
- package/.next/standalone/.next/static/chunks/{32190-a110356fb68a4333.js → 75444-976ac95fd66e7988.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-dd7eb66bb4ffd252.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-6d92b9867caf0fe1.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-f8f17f58cf779d37.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-83e2e42b27132b41.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/{page-405cc5757c9116ed.js → page-55148db4b28ee5f5.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/{page-1591999fb2994672.js → page-556c181809c9e4f6.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-656797940b35b23c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/{page-31f4ffd9778a39ed.js → page-414b398806324ad1.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-af88aeaedc3f4ae5.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-00ae31e877b4b261.js → page-6524ab00e6cdf59a.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-b148c338bed81dce.js → page-7b0bb5f037cd320b.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-db79d84fa8ca8cbf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/{page-9768ac847f5b2b48.js → page-7a00689ba561c111.js} +1 -1
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
- package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +3 -2
- package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +2 -2
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +3 -2
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +18 -7
- package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +9 -4
- package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +5 -3
- package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +2 -2
- package/.next/standalone/public/install-codex.sh +200 -90
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/chorus/SKILL.md +56 -4
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +4 -3
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/package.json +21 -5
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +18 -7
- package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +198 -0
- package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +9 -4
- package/.next/standalone/public/skill/review-chorus/SKILL.md +17 -5
- package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +219 -0
- package/.next/standalone/public/skill/yolo-chorus/SKILL.md +529 -0
- package/.next/standalone/public/test-install-codex.sh +4 -0
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/1002.js +0 -1
- package/.next/standalone/.next/server/chunks/3405.js +0 -1
- package/.next/standalone/.next/server/chunks/4043.js +0 -1
- package/.next/standalone/.next/server/chunks/6592.js +0 -1
- package/.next/standalone/.next/server/chunks/6975.js +0 -1
- package/.next/standalone/.next/static/chunks/19126-7671ce1fd803fdd4.js +0 -1
- package/.next/standalone/.next/static/chunks/44046-5c0f7f8c0914988a.js +0 -1
- package/.next/standalone/.next/static/chunks/60011-0fbcb92028fe9655.js +0 -1
- package/.next/standalone/.next/static/chunks/6028-fe4175ea5e6241ed.js +0 -1
- package/.next/standalone/.next/static/chunks/9562-8433cd5c5abad077.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-8409ca03f132910b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-7f7a7f654cab4dc3.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-a99a690b878a03be.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-95cdcec5e6db551f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-2d85f24a980966b7.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-38579c303156008c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-b153aa34b940a24c.js +0 -1
- /package/.next/standalone/.next/static/{yBxnuARbl0brBJS3_STaI → uuDSoqvm-WWenZQ6dXPT7}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{yBxnuARbl0brBJS3_STaI → uuDSoqvm-WWenZQ6dXPT7}/_ssgManifest.js +0 -0
|
@@ -4,7 +4,7 @@ description: Chorus AI Agent collaboration platform — overview, common tools,
|
|
|
4
4
|
license: AGPL-3.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: chorus
|
|
7
|
-
version: "0.3
|
|
7
|
+
version: "0.9.3"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -30,18 +30,28 @@ Skill files are hosted under the `<BASE_URL>/skill/` path.
|
|
|
30
30
|
| **proposal-chorus** | Proposal creation, drafts, DAG, submission | `/skill/proposal-chorus/SKILL.md` |
|
|
31
31
|
| **develop-chorus** | Task execution workflow | `/skill/develop-chorus/SKILL.md` |
|
|
32
32
|
| **review-chorus** | Proposal approval, task verification, governance | `/skill/review-chorus/SKILL.md` |
|
|
33
|
+
| **quick-dev-chorus** | Lightweight direct-to-task workflow (skips Idea→Proposal) | `/skill/quick-dev-chorus/SKILL.md` |
|
|
34
|
+
| **brainstorm-chorus** | Optional divergent→convergent dialogue, prelude to elaboration | `/skill/brainstorm-chorus/SKILL.md` |
|
|
35
|
+
| **proposal-reviewer-chorus** | Read-only adversarial proposal reviewer (posts VERDICT) | `/skill/proposal-reviewer-chorus/SKILL.md` |
|
|
36
|
+
| **task-reviewer-chorus** | Read-only adversarial task reviewer (posts VERDICT) | `/skill/task-reviewer-chorus/SKILL.md` |
|
|
37
|
+
| **yolo-chorus** | Full-auto AI-DLC pipeline — prompt to done | `/skill/yolo-chorus/SKILL.md` |
|
|
33
38
|
| **package.json** | Version & download metadata | `/skill/package.json` |
|
|
34
39
|
|
|
35
40
|
### Install (Claude Code, project-level)
|
|
36
41
|
|
|
37
42
|
```bash
|
|
38
43
|
BASE_URL="<BASE_URL>"
|
|
39
|
-
mkdir -p .claude/skills/chorus .claude/skills/idea-chorus .claude/skills/proposal-chorus .claude/skills/develop-chorus .claude/skills/review-chorus
|
|
44
|
+
mkdir -p .claude/skills/chorus .claude/skills/idea-chorus .claude/skills/proposal-chorus .claude/skills/develop-chorus .claude/skills/review-chorus .claude/skills/quick-dev-chorus .claude/skills/brainstorm-chorus .claude/skills/proposal-reviewer-chorus .claude/skills/task-reviewer-chorus .claude/skills/yolo-chorus
|
|
40
45
|
curl -s $BASE_URL/skill/chorus/SKILL.md > .claude/skills/chorus/SKILL.md
|
|
41
46
|
curl -s $BASE_URL/skill/idea-chorus/SKILL.md > .claude/skills/idea-chorus/SKILL.md
|
|
42
47
|
curl -s $BASE_URL/skill/proposal-chorus/SKILL.md > .claude/skills/proposal-chorus/SKILL.md
|
|
43
48
|
curl -s $BASE_URL/skill/develop-chorus/SKILL.md > .claude/skills/develop-chorus/SKILL.md
|
|
44
49
|
curl -s $BASE_URL/skill/review-chorus/SKILL.md > .claude/skills/review-chorus/SKILL.md
|
|
50
|
+
curl -s $BASE_URL/skill/quick-dev-chorus/SKILL.md > .claude/skills/quick-dev-chorus/SKILL.md
|
|
51
|
+
curl -s $BASE_URL/skill/brainstorm-chorus/SKILL.md > .claude/skills/brainstorm-chorus/SKILL.md
|
|
52
|
+
curl -s $BASE_URL/skill/proposal-reviewer-chorus/SKILL.md > .claude/skills/proposal-reviewer-chorus/SKILL.md
|
|
53
|
+
curl -s $BASE_URL/skill/task-reviewer-chorus/SKILL.md > .claude/skills/task-reviewer-chorus/SKILL.md
|
|
54
|
+
curl -s $BASE_URL/skill/yolo-chorus/SKILL.md > .claude/skills/yolo-chorus/SKILL.md
|
|
45
55
|
curl -s $BASE_URL/skill/package.json > .claude/skills/chorus/package.json
|
|
46
56
|
```
|
|
47
57
|
|
|
@@ -49,12 +59,17 @@ curl -s $BASE_URL/skill/package.json > .claude/skills/chorus/package.json
|
|
|
49
59
|
|
|
50
60
|
```bash
|
|
51
61
|
BASE_URL="<BASE_URL>"
|
|
52
|
-
mkdir -p ~/.moltbot/skills/chorus ~/.moltbot/skills/idea-chorus ~/.moltbot/skills/proposal-chorus ~/.moltbot/skills/develop-chorus ~/.moltbot/skills/review-chorus
|
|
62
|
+
mkdir -p ~/.moltbot/skills/chorus ~/.moltbot/skills/idea-chorus ~/.moltbot/skills/proposal-chorus ~/.moltbot/skills/develop-chorus ~/.moltbot/skills/review-chorus ~/.moltbot/skills/quick-dev-chorus ~/.moltbot/skills/brainstorm-chorus ~/.moltbot/skills/proposal-reviewer-chorus ~/.moltbot/skills/task-reviewer-chorus ~/.moltbot/skills/yolo-chorus
|
|
53
63
|
curl -s $BASE_URL/skill/chorus/SKILL.md > ~/.moltbot/skills/chorus/SKILL.md
|
|
54
64
|
curl -s $BASE_URL/skill/idea-chorus/SKILL.md > ~/.moltbot/skills/idea-chorus/SKILL.md
|
|
55
65
|
curl -s $BASE_URL/skill/proposal-chorus/SKILL.md > ~/.moltbot/skills/proposal-chorus/SKILL.md
|
|
56
66
|
curl -s $BASE_URL/skill/develop-chorus/SKILL.md > ~/.moltbot/skills/develop-chorus/SKILL.md
|
|
57
67
|
curl -s $BASE_URL/skill/review-chorus/SKILL.md > ~/.moltbot/skills/review-chorus/SKILL.md
|
|
68
|
+
curl -s $BASE_URL/skill/quick-dev-chorus/SKILL.md > ~/.moltbot/skills/quick-dev-chorus/SKILL.md
|
|
69
|
+
curl -s $BASE_URL/skill/brainstorm-chorus/SKILL.md > ~/.moltbot/skills/brainstorm-chorus/SKILL.md
|
|
70
|
+
curl -s $BASE_URL/skill/proposal-reviewer-chorus/SKILL.md > ~/.moltbot/skills/proposal-reviewer-chorus/SKILL.md
|
|
71
|
+
curl -s $BASE_URL/skill/task-reviewer-chorus/SKILL.md > ~/.moltbot/skills/task-reviewer-chorus/SKILL.md
|
|
72
|
+
curl -s $BASE_URL/skill/yolo-chorus/SKILL.md > ~/.moltbot/skills/yolo-chorus/SKILL.md
|
|
58
73
|
curl -s $BASE_URL/skill/package.json > ~/.moltbot/skills/chorus/package.json
|
|
59
74
|
```
|
|
60
75
|
|
|
@@ -185,7 +200,7 @@ A **report** is a short idea-completion summary persisted as a `type="report"` D
|
|
|
185
200
|
| Tool | Purpose |
|
|
186
201
|
|------|---------|
|
|
187
202
|
| `chorus_get_proposals` | List project Proposals (filterable by status: pending, approved, rejected) |
|
|
188
|
-
| `chorus_get_proposal` | Get a single Proposal
|
|
203
|
+
| `chorus_get_proposal` | Get a single Proposal, sliced by `section` (default `basic`: metadata + lightweight draft index; `documents`/`tasks`/`full` for the draft bodies) |
|
|
189
204
|
|
|
190
205
|
### Tasks
|
|
191
206
|
|
|
@@ -385,17 +400,54 @@ approved --> draft (via revoke — cascade-closes tasks, deletes documents)
|
|
|
385
400
|
|
|
386
401
|
---
|
|
387
402
|
|
|
403
|
+
## Independent Review
|
|
404
|
+
|
|
405
|
+
Chorus uses **independent, read-only adversarial reviewers** at two gates: before a proposal is approved, and before a task is verified. The reviewer's job is to find what is wrong — not to rubber-stamp. Its output is **advisory**: it informs the admin's decision but does not by itself approve, reject, verify, or reopen anything.
|
|
406
|
+
|
|
407
|
+
This is the **single canonical description** of the reviewer pattern. The `develop-chorus`, `review-chorus`, and `yolo-chorus` skills all point back here rather than redefining it.
|
|
408
|
+
|
|
409
|
+
### The Pattern
|
|
410
|
+
|
|
411
|
+
1. **Spawn a read-only sub-agent** that loads one of the two reviewer skills:
|
|
412
|
+
- `proposal-reviewer-chorus` (`<BASE_URL>/skill/proposal-reviewer-chorus/SKILL.md`) — for reviewing a **proposal** before approval. Pass it the `proposalUuid`.
|
|
413
|
+
- `task-reviewer-chorus` (`<BASE_URL>/skill/task-reviewer-chorus/SKILL.md`) — for reviewing a **task** before verification. Pass it the `taskUuid`.
|
|
414
|
+
2. **The reviewer audits independently** and posts exactly **one** structured `VERDICT` comment on the proposal/task via `chorus_add_comment`. The comment ends with one literal verdict string: `VERDICT: PASS`, `VERDICT: PASS WITH NOTES`, or `VERDICT: FAIL`.
|
|
415
|
+
3. **Read the verdict and act.** Fetch the comment with `chorus_get_comments({ targetType, targetUuid })`, read the BLOCKER / NOTE findings, then make the call:
|
|
416
|
+
- `PASS` / `PASS WITH NOTES` → proceed (approve the proposal / verify the task), addressing NOTEs at your discretion.
|
|
417
|
+
- `FAIL` → do **not** proceed; route the BLOCKERs back for a fix (reject/revise the proposal, or reopen/rework the task), then re-review.
|
|
418
|
+
|
|
419
|
+
> The verdict is advisory: even a `FAIL` does not block the admin, and a `PASS` does not auto-approve. A human/admin makes the final decision.
|
|
420
|
+
|
|
421
|
+
### Spawn Mechanism Is Harness-Specific
|
|
422
|
+
|
|
423
|
+
How you spawn the read-only sub-agent depends on your agent harness — give it the reviewer skill plus the target UUID and instruct it to post a single VERDICT comment. Concrete examples:
|
|
424
|
+
|
|
425
|
+
- **Claude Code** — use the Task / Agent tool to launch a sub-agent that loads `task-reviewer-chorus` (or `proposal-reviewer-chorus`) and pass the `taskUuid` / `proposalUuid`.
|
|
426
|
+
- **Codex** — use `spawn_agent` with the reviewer skill and the target UUID.
|
|
427
|
+
- Other harnesses: use whatever sub-agent / sub-task primitive they expose.
|
|
428
|
+
|
|
429
|
+
### Inline Self-Review Fallback
|
|
430
|
+
|
|
431
|
+
When sub-agents are **not** available in your harness, run the review inline yourself: load the relevant reviewer skill's procedure (`proposal-reviewer-chorus` or `task-reviewer-chorus`), audit the proposal/task against its checklist with the same adversarial posture, and post the single `VERDICT` comment yourself before acting on it. A same-agent self-review is weaker than a fresh independent reviewer, but it is far better than skipping the gate.
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
388
435
|
## Skill Routing
|
|
389
436
|
|
|
390
437
|
This is the core overview skill. For stage-specific workflows, download and read the appropriate skill:
|
|
391
438
|
|
|
392
439
|
| Stage | Skill | Path |
|
|
393
440
|
|-------|-------|------|
|
|
441
|
+
| **Overview** (this file) | `chorus` | `<BASE_URL>/skill/chorus/SKILL.md` |
|
|
394
442
|
| **Quick Dev** | `quick-dev-chorus` | `<BASE_URL>/skill/quick-dev-chorus/SKILL.md` |
|
|
443
|
+
| **Brainstorm** | `brainstorm-chorus` | `<BASE_URL>/skill/brainstorm-chorus/SKILL.md` |
|
|
395
444
|
| **Ideation** | `idea-chorus` | `<BASE_URL>/skill/idea-chorus/SKILL.md` |
|
|
396
445
|
| **Planning** | `proposal-chorus` | `<BASE_URL>/skill/proposal-chorus/SKILL.md` |
|
|
397
446
|
| **Development** | `develop-chorus` | `<BASE_URL>/skill/develop-chorus/SKILL.md` |
|
|
398
447
|
| **Review** | `review-chorus` | `<BASE_URL>/skill/review-chorus/SKILL.md` |
|
|
448
|
+
| **Proposal Review** | `proposal-reviewer-chorus` | `<BASE_URL>/skill/proposal-reviewer-chorus/SKILL.md` |
|
|
449
|
+
| **Task Review** | `task-reviewer-chorus` | `<BASE_URL>/skill/task-reviewer-chorus/SKILL.md` |
|
|
450
|
+
| **Full-Auto** | `yolo-chorus` | `<BASE_URL>/skill/yolo-chorus/SKILL.md` |
|
|
399
451
|
|
|
400
452
|
### Getting Started
|
|
401
453
|
|
|
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, self-chec
|
|
|
4
4
|
license: AGPL-3.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: chorus
|
|
7
|
-
version: "0.3
|
|
7
|
+
version: "0.9.3"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -107,8 +107,9 @@ Each task and proposal includes a `commentCount` field — use it to decide whic
|
|
|
107
107
|
|
|
108
108
|
4. **Read the originating proposal** for design intent:
|
|
109
109
|
```
|
|
110
|
-
chorus_get_proposal({ proposalUuid: "<proposal-uuid>" })
|
|
110
|
+
chorus_get_proposal({ proposalUuid: "<proposal-uuid>", section: "documents" })
|
|
111
111
|
```
|
|
112
|
+
(`chorus_get_proposal` defaults to `section: "basic"` — just metadata + a draft index. Pass `section: "documents"` for the design docs, or `section: "full"` for docs + task drafts.)
|
|
112
113
|
|
|
113
114
|
5. **Read project documents** (PRD, tech design, ADR):
|
|
114
115
|
```
|
|
@@ -181,7 +182,7 @@ chorus_submit_for_verify({
|
|
|
181
182
|
|
|
182
183
|
> `to_verify` does NOT unblock downstream tasks — only `done` (after admin verification) does.
|
|
183
184
|
|
|
184
|
-
> **Review
|
|
185
|
+
> **Independent Review:** After `chorus_submit_for_verify`, run an independent review of the task before it is verified. Spawn a read-only sub-agent that loads the `task-reviewer-chorus` skill (`<BASE_URL>/skill/task-reviewer-chorus/SKILL.md`), pass it the `taskUuid`, and let it post a single `VERDICT` comment (PASS / PASS WITH NOTES / FAIL) on the task; then read it with `chorus_get_comments` and act. The verdict is **advisory** (it does not block verification). The spawn mechanism is harness-specific, and an inline self-review fallback exists when sub-agents are unavailable — see the canonical **Independent Review** section in the `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`) for the full pattern.
|
|
185
186
|
|
|
186
187
|
### Step 9: Handle Review Feedback
|
|
187
188
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chorus-skill",
|
|
3
|
-
"version": "0.3
|
|
3
|
+
"version": "0.9.3",
|
|
4
4
|
"description": "Chorus AI Agent collaboration platform skill. Supports PM, Developer, and Admin roles via MCP tools for the Idea-Proposal-Task workflow.",
|
|
5
5
|
"author": "chorus",
|
|
6
6
|
"license": "AGPL-3.0",
|
|
@@ -23,7 +23,12 @@
|
|
|
23
23
|
"idea-chorus/SKILL.md": "/skill/idea-chorus/SKILL.md",
|
|
24
24
|
"proposal-chorus/SKILL.md": "/skill/proposal-chorus/SKILL.md",
|
|
25
25
|
"develop-chorus/SKILL.md": "/skill/develop-chorus/SKILL.md",
|
|
26
|
-
"review-chorus/SKILL.md": "/skill/review-chorus/SKILL.md"
|
|
26
|
+
"review-chorus/SKILL.md": "/skill/review-chorus/SKILL.md",
|
|
27
|
+
"quick-dev-chorus/SKILL.md": "/skill/quick-dev-chorus/SKILL.md",
|
|
28
|
+
"brainstorm-chorus/SKILL.md": "/skill/brainstorm-chorus/SKILL.md",
|
|
29
|
+
"proposal-reviewer-chorus/SKILL.md": "/skill/proposal-reviewer-chorus/SKILL.md",
|
|
30
|
+
"task-reviewer-chorus/SKILL.md": "/skill/task-reviewer-chorus/SKILL.md",
|
|
31
|
+
"yolo-chorus/SKILL.md": "/skill/yolo-chorus/SKILL.md"
|
|
27
32
|
},
|
|
28
33
|
"requires": {
|
|
29
34
|
"mcp": ["chorus"]
|
|
@@ -38,7 +43,10 @@
|
|
|
38
43
|
"report work",
|
|
39
44
|
"verify task",
|
|
40
45
|
"approve proposal",
|
|
41
|
-
"project management"
|
|
46
|
+
"project management",
|
|
47
|
+
"yolo",
|
|
48
|
+
"review agent",
|
|
49
|
+
"verify"
|
|
42
50
|
]
|
|
43
51
|
},
|
|
44
52
|
"moltbot": {
|
|
@@ -48,7 +56,12 @@
|
|
|
48
56
|
"idea-chorus/SKILL.md": "/skill/idea-chorus/SKILL.md",
|
|
49
57
|
"proposal-chorus/SKILL.md": "/skill/proposal-chorus/SKILL.md",
|
|
50
58
|
"develop-chorus/SKILL.md": "/skill/develop-chorus/SKILL.md",
|
|
51
|
-
"review-chorus/SKILL.md": "/skill/review-chorus/SKILL.md"
|
|
59
|
+
"review-chorus/SKILL.md": "/skill/review-chorus/SKILL.md",
|
|
60
|
+
"quick-dev-chorus/SKILL.md": "/skill/quick-dev-chorus/SKILL.md",
|
|
61
|
+
"brainstorm-chorus/SKILL.md": "/skill/brainstorm-chorus/SKILL.md",
|
|
62
|
+
"proposal-reviewer-chorus/SKILL.md": "/skill/proposal-reviewer-chorus/SKILL.md",
|
|
63
|
+
"task-reviewer-chorus/SKILL.md": "/skill/task-reviewer-chorus/SKILL.md",
|
|
64
|
+
"yolo-chorus/SKILL.md": "/skill/yolo-chorus/SKILL.md"
|
|
52
65
|
},
|
|
53
66
|
"requires": {
|
|
54
67
|
"mcp": ["chorus"]
|
|
@@ -63,7 +76,10 @@
|
|
|
63
76
|
"report work",
|
|
64
77
|
"verify task",
|
|
65
78
|
"approve proposal",
|
|
66
|
-
"project management"
|
|
79
|
+
"project management",
|
|
80
|
+
"yolo",
|
|
81
|
+
"review agent",
|
|
82
|
+
"verify"
|
|
67
83
|
]
|
|
68
84
|
}
|
|
69
85
|
}
|
|
@@ -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.3
|
|
7
|
+
version: "0.9.3"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -111,6 +111,8 @@ chorus_pm_add_document_draft({
|
|
|
111
111
|
|
|
112
112
|
Add task drafts one at a time. The response returns the new draft's `draftUuid` — use it directly for `dependsOnDraftUuids` in subsequent drafts.
|
|
113
113
|
|
|
114
|
+
**`acceptanceCriteriaItems` is required** — every task draft must include at least one item with a non-blank `description`, or the call is rejected. Use the structured `acceptanceCriteriaItems` array (the legacy `acceptanceCriteria` Markdown string does not satisfy the requirement).
|
|
115
|
+
|
|
114
116
|
```
|
|
115
117
|
# First task -> response includes { draftUuid, draftTitle }
|
|
116
118
|
chorus_pm_add_task_draft({
|
|
@@ -119,7 +121,10 @@ chorus_pm_add_task_draft({
|
|
|
119
121
|
description: "Detailed description of what to build...",
|
|
120
122
|
priority: "high",
|
|
121
123
|
storyPoints: 3,
|
|
122
|
-
|
|
124
|
+
acceptanceCriteriaItems: [
|
|
125
|
+
{ description: "Criteria 1", required: true },
|
|
126
|
+
{ description: "Criteria 2", required: true }
|
|
127
|
+
]
|
|
123
128
|
})
|
|
124
129
|
|
|
125
130
|
# Second task — depends on first
|
|
@@ -129,18 +134,24 @@ chorus_pm_add_task_draft({
|
|
|
129
134
|
description: "Unit and integration tests...",
|
|
130
135
|
priority: "medium",
|
|
131
136
|
storyPoints: 2,
|
|
132
|
-
|
|
137
|
+
acceptanceCriteriaItems: [
|
|
138
|
+
{ description: "Test coverage > 80%", required: true }
|
|
139
|
+
],
|
|
133
140
|
dependsOnDraftUuids: ["<draftUuid-from-first-task>"]
|
|
134
141
|
})
|
|
135
142
|
```
|
|
136
143
|
|
|
144
|
+
> To edit a draft's criteria later via `chorus_pm_update_task_draft`, pass a non-empty `acceptanceCriteriaItems` to replace them; omit the field to leave them unchanged. The field cannot be used to clear criteria.
|
|
145
|
+
|
|
137
146
|
**Task priority:** `low`, `medium`, `high`
|
|
138
147
|
|
|
139
148
|
### Step 4: Review and Refine Drafts
|
|
140
149
|
|
|
141
150
|
```
|
|
142
|
-
# Review current state
|
|
143
|
-
|
|
151
|
+
# Review current state. chorus_get_proposal defaults to section:"basic"
|
|
152
|
+
# (metadata + a lightweight draft index, no bodies). Use section:"full" to
|
|
153
|
+
# see every draft's content, or section:"documents"/"tasks" for one kind.
|
|
154
|
+
chorus_get_proposal({ proposalUuid: "<proposal-uuid>", section: "full" })
|
|
144
155
|
|
|
145
156
|
# Update a document draft
|
|
146
157
|
chorus_pm_update_document_draft({
|
|
@@ -197,7 +208,7 @@ chorus_add_comment({
|
|
|
197
208
|
If the proposal is rejected, check the review note:
|
|
198
209
|
|
|
199
210
|
```
|
|
200
|
-
chorus_get_proposal({ proposalUuid: "<proposal-uuid>" })
|
|
211
|
+
chorus_get_proposal({ proposalUuid: "<proposal-uuid>", section: "full" })
|
|
201
212
|
chorus_get_comments({ targetType: "proposal", targetUuid: "<proposal-uuid>" })
|
|
202
213
|
```
|
|
203
214
|
|
|
@@ -300,7 +311,7 @@ Potential issues and how to address them.
|
|
|
300
311
|
|
|
301
312
|
Good tasks are:
|
|
302
313
|
- **Module-scoped** — One cohesive functional module per task, not a single function or file
|
|
303
|
-
- **Testable** — Clear, cohesive acceptance criteria (
|
|
314
|
+
- **Testable** — Clear, cohesive acceptance criteria are **required** on every task (at least one non-blank item; max 6; group related checks into one criterion but list key coverage, e.g. "All tests pass: service layer unit tests, API integration tests, edge case handling")
|
|
304
315
|
- **Sized** — 1-8 story points (hours of agent work)
|
|
305
316
|
- **Ordered** — Use `dependsOnDraftUuids` / `dependsOnTaskUuids` to express execution order
|
|
306
317
|
- **Descriptive** — Include enough context for a developer agent to start without questions. For tasks with cross-module dependencies, reference the tech design's Module Contracts in the AC
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: proposal-reviewer-chorus
|
|
3
|
+
description: Read-only adversarial Chorus proposal reviewer — audits PRD/task drafts against the originating Idea and posts a single structured VERDICT comment.
|
|
4
|
+
license: AGPL-3.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: chorus
|
|
7
|
+
version: "0.9.3"
|
|
8
|
+
category: project-management
|
|
9
|
+
mcp_server: chorus
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Proposal Reviewer Skill
|
|
13
|
+
|
|
14
|
+
This skill is the **read-only adversarial reviewer** for a submitted Chorus proposal. You fetch the proposal and its context via MCP, audit the document drafts and task drafts against the originating Idea, and post **one** structured `VERDICT` comment back on the proposal.
|
|
15
|
+
|
|
16
|
+
You are a proposal review specialist. Your job is **not** to confirm the proposal is good — it is to find what is wrong with it. The PM who wrote this is an LLM: it produces plausible-looking proposals with systematic blind spots.
|
|
17
|
+
|
|
18
|
+
Two failure patterns to avoid:
|
|
19
|
+
|
|
20
|
+
- **Rubber-stamping** — skimming and writing "PASS" without checking substance.
|
|
21
|
+
- **Surface-level approval** — seeing a well-structured PRD and assuming the tasks match it, missing requirements gaps, vague AC, or wrong dependencies.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## READ-ONLY Posture (Hard Constraints)
|
|
26
|
+
|
|
27
|
+
You are **strictly prohibited** from:
|
|
28
|
+
|
|
29
|
+
- Creating, modifying, or deleting any files.
|
|
30
|
+
- Running any shell commands.
|
|
31
|
+
- Installing dependencies or packages.
|
|
32
|
+
|
|
33
|
+
Your only side effect is posting a single comment via `chorus_add_comment`. Everything else is read-only MCP queries. Do **not** modify the project in any way.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## What You Receive
|
|
38
|
+
|
|
39
|
+
A `proposalUuid` (and, in Round 2+, a review round number). Your job is to fetch and review the full proposal.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Review Procedure
|
|
44
|
+
|
|
45
|
+
**Efficiency rule:** Gather ALL data first (Step 1), then analyze. Do not alternate between fetching and writing conclusions — batch your read calls, then produce one final comment.
|
|
46
|
+
|
|
47
|
+
**Turn-budget rule:** When few turns remain in your budget, STOP reading immediately and post your current findings as a comment via `chorus_add_comment`. Incomplete posted findings are strictly better than no comment at all.
|
|
48
|
+
|
|
49
|
+
### Step 1: Gather Context (batch these)
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
chorus_get_proposal({ proposalUuid: "<uuid>", section: "full" })
|
|
53
|
+
chorus_get_comments({ targetType: "proposal", targetUuid: "<uuid>" })
|
|
54
|
+
chorus_get_idea({ ideaUuid: "<idea-uuid>" })
|
|
55
|
+
chorus_get_elaboration({ ideaUuid: "<idea-uuid>" })
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> `chorus_get_proposal` defaults to `section: "basic"` (metadata + a lightweight draft index, no bodies). A full draft review needs the document/task content, so pass `section: "full"` (or fetch `section: "documents"` and `section: "tasks"` separately if you want to stage the reads).
|
|
59
|
+
|
|
60
|
+
Use `chorus_get_idea` + `chorus_get_elaboration` to recover the original intent and decision points so you can detect scope drift and missing requirements.
|
|
61
|
+
|
|
62
|
+
### Step 2: Review Document Drafts
|
|
63
|
+
|
|
64
|
+
For each document draft, check:
|
|
65
|
+
|
|
66
|
+
- **Completeness** — Does the PRD cover functional, non-functional, error scenarios, and edge cases?
|
|
67
|
+
- **Specificity** — Are requirements testable? "Should handle errors gracefully" is not testable.
|
|
68
|
+
- **Tech feasibility** — Does the architecture make sense? Missing auth, race conditions, no error handling?
|
|
69
|
+
- **Module contracts** — If multiple tasks share interfaces, are return formats, error patterns, and call points defined?
|
|
70
|
+
- **Hallucination risk** — Flag any specific external detail that looks LLM-fabricated (API signatures, model IDs, SDK versions, CLI flags, config keys, endpoint paths) as a NOTE. The PM is an LLM — it confidently invents plausible-looking specifics.
|
|
71
|
+
|
|
72
|
+
### Step 3: Review Task Drafts
|
|
73
|
+
|
|
74
|
+
For each task draft, check:
|
|
75
|
+
|
|
76
|
+
- **Granularity** — Each task should be cohesive and independently testable. 2-10 AC items is the sweet spot.
|
|
77
|
+
- **AC quality** — Each criterion must be objectively verifiable by a different agent. "Shows details" is BAD. "Displays order ID, customer name, and status badge" is GOOD.
|
|
78
|
+
- **Coverage** — Cross-reference task AC against document requirements. Any requirements with NO corresponding AC?
|
|
79
|
+
- **Dependencies** — Is the DAG correct? Missing dependencies? Circular? Can each task start once its dependencies are done?
|
|
80
|
+
- **Integration checkpoint** — For DAGs with **4 or more tasks**, at least one task MUST be an integration checkpoint whose AC requires end-to-end execution of the preceding modules together. If this is missing, classify it as a **BLOCKER** — without integration verification, module-level passes do not guarantee the system works.
|
|
81
|
+
|
|
82
|
+
### Step 4: Cross-Reference Requirements ↔ AC
|
|
83
|
+
|
|
84
|
+
- Each requirement in the PRD → at least one task AC covers it.
|
|
85
|
+
- Each task AC → traceable back to a requirement.
|
|
86
|
+
- No orphan tasks, no orphan requirements.
|
|
87
|
+
- No scope additions absent from the original Idea; no contradictions between documents and tasks.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Finding Classification: BLOCKER vs NOTE
|
|
92
|
+
|
|
93
|
+
Classify **every** finding as exactly one of:
|
|
94
|
+
|
|
95
|
+
**BLOCKER** — Blocks implementation correctness:
|
|
96
|
+
|
|
97
|
+
- Missing critical AC or NFR coverage.
|
|
98
|
+
- Functional scope contradiction between documents.
|
|
99
|
+
- Interface design flaw causing runtime errors.
|
|
100
|
+
- Incorrect task dependencies.
|
|
101
|
+
- Missing integration checkpoint in a 4+ task DAG.
|
|
102
|
+
|
|
103
|
+
**NOTE** — Does not block implementation:
|
|
104
|
+
|
|
105
|
+
- Pseudocode signature mismatch (parameter order, naming).
|
|
106
|
+
- Wording differences between PRD and tech design.
|
|
107
|
+
- Style / naming suggestions.
|
|
108
|
+
- Non-semantic document inconsistencies.
|
|
109
|
+
- Hallucination-risk specifics (SDK versions, API paths, CLI flags).
|
|
110
|
+
|
|
111
|
+
**Rules:** Pseudocode inconsistencies → **always NOTE**. Cross-document wording differences → **always NOTE**. Only semantic contradictions → BLOCKER.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Round 2+ Awareness
|
|
116
|
+
|
|
117
|
+
You may receive the current review round number in your context.
|
|
118
|
+
|
|
119
|
+
- **Round 1** — Full review at normal strictness.
|
|
120
|
+
- **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).
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Recognize Your Own Rationalizations
|
|
125
|
+
|
|
126
|
+
- "The proposal looks well-structured" — structure is not substance.
|
|
127
|
+
- "The PM probably considered this" — the PM is an LLM. Check it yourself.
|
|
128
|
+
- "There are enough tasks" — count is not coverage. Map requirements to tasks.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## VERDICT Contract
|
|
133
|
+
|
|
134
|
+
You MUST end your comment with exactly one of these three **literal** strings (automation greps for them):
|
|
135
|
+
|
|
136
|
+
- `VERDICT: PASS`
|
|
137
|
+
- `VERDICT: PASS WITH NOTES`
|
|
138
|
+
- `VERDICT: FAIL`
|
|
139
|
+
|
|
140
|
+
Mapping:
|
|
141
|
+
|
|
142
|
+
| Findings | Verdict |
|
|
143
|
+
|----------|---------|
|
|
144
|
+
| Any BLOCKER | `VERDICT: FAIL` |
|
|
145
|
+
| Only NOTEs (no BLOCKER) | `VERDICT: PASS WITH NOTES` |
|
|
146
|
+
| Nothing | `VERDICT: PASS` |
|
|
147
|
+
|
|
148
|
+
Do NOT invent other verdicts like "APPROVE" or "OK" — automation greps for the three exact strings above.
|
|
149
|
+
|
|
150
|
+
> The verdict is **advisory**. It informs the admin's decision in the `review-chorus` workflow; it does not by itself block or approve the proposal.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Output Format (Required)
|
|
155
|
+
|
|
156
|
+
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.
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
### Review Summary
|
|
160
|
+
|
|
161
|
+
**PASS (N):** Check-1 name, Check-2 name, ...
|
|
162
|
+
|
|
163
|
+
**NOTE (M):**
|
|
164
|
+
- Note-1: [one-line description]
|
|
165
|
+
- Note-2: [one-line description]
|
|
166
|
+
|
|
167
|
+
**BLOCKER (K):**
|
|
168
|
+
### Blocker-1: name
|
|
169
|
+
**Evidence:** [specific finding]
|
|
170
|
+
**Expected:** [what should be there]
|
|
171
|
+
**Actual:** [what is there or what is missing]
|
|
172
|
+
|
|
173
|
+
VERDICT: PASS
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
(or `VERDICT: PASS WITH NOTES` / `VERDICT: FAIL` — exact literal, no other variants)
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Posting Results
|
|
181
|
+
|
|
182
|
+
Post the full review as a **single** comment:
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
chorus_add_comment({
|
|
186
|
+
targetType: "proposal",
|
|
187
|
+
targetUuid: "<proposal-uuid>",
|
|
188
|
+
content: "<your review>"
|
|
189
|
+
})
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Next
|
|
195
|
+
|
|
196
|
+
- The admin reads your VERDICT comment, then approves or rejects in the `review-chorus` skill (`<BASE_URL>/skill/review-chorus/SKILL.md`).
|
|
197
|
+
- For platform overview and shared tools, see `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`).
|
|
198
|
+
- For Proposal creation (what you are reviewing), see `proposal-chorus` skill (`<BASE_URL>/skill/proposal-chorus/SKILL.md`).
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: quick-dev-chorus
|
|
3
|
-
version: 0.3.1
|
|
4
3
|
description: Quick Task workflow — skip Idea→Proposal, create tasks directly, execute, and verify.
|
|
4
|
+
license: AGPL-3.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: chorus
|
|
7
|
+
version: "0.9.3"
|
|
8
|
+
category: project-management
|
|
9
|
+
mcp_server: chorus
|
|
5
10
|
---
|
|
6
11
|
|
|
7
12
|
# Quick Dev Skill
|
|
@@ -63,7 +68,7 @@ This matters because admin agents can call `chorus_admin_verify_task` to close t
|
|
|
63
68
|
|
|
64
69
|
### Step 1: Create a Quick Task
|
|
65
70
|
|
|
66
|
-
**
|
|
71
|
+
**`acceptanceCriteriaItems` is required** — `chorus_create_tasks` rejects any task without at least one non-blank criterion (and rejects the whole batch if any task is missing them). These are also the foundation for self-checking in Step 6. Write specific, testable criteria that you can objectively verify after development. Vague AC like "works correctly" defeats the purpose; prefer "returns 200 on GET /api/foo with valid token".
|
|
67
72
|
|
|
68
73
|
```
|
|
69
74
|
chorus_create_tasks({
|
|
@@ -93,7 +98,7 @@ chorus_claim_task({ taskUuid: "<task-uuid>" })
|
|
|
93
98
|
|
|
94
99
|
### Step 3: Edit Details (if needed)
|
|
95
100
|
|
|
96
|
-
Use `chorus_update_task` to refine the task after creation.
|
|
101
|
+
Use `chorus_update_task` to refine the task after creation. Tasks always have AC (creation requires them), but **update them when your understanding changes during development**. Passing `acceptanceCriteriaItems` **replaces** the task's criteria with the provided non-empty set; omit the field to leave them unchanged (it cannot be used to clear AC).
|
|
97
102
|
|
|
98
103
|
```
|
|
99
104
|
chorus_update_task({
|
|
@@ -156,7 +161,7 @@ This completes the full autonomous cycle: create → develop → verify → done
|
|
|
156
161
|
## Tips
|
|
157
162
|
|
|
158
163
|
- Keep Quick Tasks small — if you need more than 2-3 tasks, consider using a proposal
|
|
159
|
-
- **
|
|
164
|
+
- **Acceptance criteria are required at creation time** — `chorus_create_tasks` rejects tasks without them. They are your self-check contract; specific, testable AC enables autonomous verification and makes the entire workflow self-contained
|
|
160
165
|
- Use `chorus_update_task` to refine tasks (including AC) after creation rather than deleting and recreating
|
|
161
166
|
- Pass `proposalUuid` to attach follow-up or gap-filling tasks to an existing proposal — this keeps related work grouped in the same project context and DAG
|
|
162
167
|
- Quick Tasks appear in the same project task list and DAG as proposal-based tasks
|
|
@@ -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.3
|
|
7
|
+
version: "0.9.3"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -95,10 +95,12 @@ Prioritize: **Proposals first** (they unblock PM and Developer work), then task
|
|
|
95
95
|
#### A1: Read the Proposal
|
|
96
96
|
|
|
97
97
|
```
|
|
98
|
-
chorus_get_proposal({ proposalUuid: "<proposal-uuid>" })
|
|
98
|
+
chorus_get_proposal({ proposalUuid: "<proposal-uuid>", section: "full" })
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
`chorus_get_proposal` defaults to `section: "basic"` — proposal metadata plus a lightweight index of the drafts (uuid, type/title, contentLength, AC count, dependency edges) with **no** document content or full task descriptions. For a review you need the bodies, so pass `section: "full"` to get everything at once (or `section: "documents"` / `section: "tasks"` to read one kind at a time).
|
|
102
|
+
|
|
103
|
+
The `full` view returns: title, description, input ideas, **document drafts** (PRD, tech design), **task drafts** (with descriptions and acceptance criteria).
|
|
102
104
|
|
|
103
105
|
#### A2: Quality Checklist
|
|
104
106
|
|
|
@@ -126,9 +128,11 @@ This returns: title, description, input ideas, **document drafts** (PRD, tech de
|
|
|
126
128
|
chorus_get_comments({ targetType: "proposal", targetUuid: "<proposal-uuid>" })
|
|
127
129
|
```
|
|
128
130
|
|
|
129
|
-
#### A3.5: Independent Review
|
|
131
|
+
#### A3.5: Independent Review
|
|
132
|
+
|
|
133
|
+
Before approving, run an independent review of the proposal. Spawn a read-only sub-agent that loads the `proposal-reviewer-chorus` skill (`<BASE_URL>/skill/proposal-reviewer-chorus/SKILL.md`), pass it the `proposalUuid`, and let it adversarially audit document quality, task granularity, AC alignment, and the dependency DAG. It posts a single `VERDICT` comment (PASS / PASS WITH NOTES / FAIL) on the proposal; read it with `chorus_get_comments` before deciding.
|
|
130
134
|
|
|
131
|
-
|
|
135
|
+
The spawn mechanism is harness-specific, and an inline self-review fallback exists when sub-agents are unavailable — see the canonical **Independent Review** section in the `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`) for the full pattern.
|
|
132
136
|
|
|
133
137
|
> **VERDICT: FAIL is advisory** — the reviewer's opinion does not block approval. The admin reads the review comment and makes the final decision.
|
|
134
138
|
|
|
@@ -193,6 +197,14 @@ Check: developer's work summary, acceptance criteria, self-check results.
|
|
|
193
197
|
chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })
|
|
194
198
|
```
|
|
195
199
|
|
|
200
|
+
#### B2.5: Independent Review
|
|
201
|
+
|
|
202
|
+
Before marking acceptance criteria and verifying, run an independent review of the task. Spawn a read-only sub-agent that loads the `task-reviewer-chorus` skill (`<BASE_URL>/skill/task-reviewer-chorus/SKILL.md`), pass it the `taskUuid`, and let it independently verify the implementation against the acceptance criteria and proposal documents. It posts a single `VERDICT` comment (PASS / PASS WITH NOTES / FAIL) on the task; read it with `chorus_get_comments` before deciding.
|
|
203
|
+
|
|
204
|
+
The spawn mechanism is harness-specific, and an inline self-review fallback exists when sub-agents are unavailable — see the canonical **Independent Review** section in the `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`) for the full pattern.
|
|
205
|
+
|
|
206
|
+
> **VERDICT is advisory** — a `FAIL` does not block verification and a `PASS` does not auto-verify. The admin reads the review comment, marks the acceptance criteria, and makes the final decision.
|
|
207
|
+
|
|
196
208
|
#### B3: Mark Acceptance Criteria
|
|
197
209
|
|
|
198
210
|
Review and mark each criterion:
|