@a-company/paradigm 5.38.0 → 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/dist/{accept-orchestration-OATWIRHP.js → accept-orchestration-QQISPINV.js} +1 -1
  2. package/dist/add-UOR4INIV.js +8 -0
  3. package/dist/{agent-loader-RIVI6QPP.js → agent-loader-2WJHD46U.js} +1 -1
  4. package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-YKS2PQWO.js} +1 -1
  5. package/dist/{ambient-76YMUA5Q.js → ambient-BE3SQXNN.js} +1 -1
  6. package/dist/{ambient-WTLYUAQM.js → ambient-NVKQCW2A.js} +12 -12
  7. package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
  8. package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
  9. package/dist/{chunk-5QOCKWK5.js → chunk-4PSD5R7N.js} +2 -2
  10. package/dist/{chunk-HOBHJPTL.js → chunk-6SKSV5B2.js} +1 -1
  11. package/dist/{chunk-4L7665QV.js → chunk-FEYOQMZ5.js} +1 -1
  12. package/dist/{chunk-NEJ4ZLCY.js → chunk-GAFKOFAV.js} +1 -1
  13. package/dist/chunk-GRZQIKST.js +2 -0
  14. package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
  15. package/dist/{chunk-4VKSEOXZ.js → chunk-LPBCQM5Y.js} +3 -3
  16. package/dist/{chunk-74SGKSRQ.js → chunk-M2HKWR25.js} +1 -1
  17. package/dist/{chunk-BOYQAMGC.js → chunk-M3PPXJU4.js} +1 -1
  18. package/dist/chunk-PHEX6LU4.js +111 -0
  19. package/dist/chunk-Q527BPUF.js +2 -0
  20. package/dist/chunk-R5ECMBIV.js +11 -0
  21. package/dist/{chunk-X3U3IGYT.js → chunk-TBWWFRL5.js} +1 -1
  22. package/dist/{chunk-MQIG6SMF.js → chunk-TNVWGPCE.js} +1 -1
  23. package/dist/chunk-TZDYIPVU.js +521 -0
  24. package/dist/{chunk-3XGNXXCT.js → chunk-UZ5H7K6Q.js} +1 -1
  25. package/dist/chunk-VIG5LSGZ.js +2 -0
  26. package/dist/chunk-VNIX5KBT.js +3 -0
  27. package/dist/{chunk-AGFPVSX5.js → chunk-VXIIVMTM.js} +1 -1
  28. package/dist/{chunk-ORDKEGII.js → chunk-WESTEMIM.js} +1 -1
  29. package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
  30. package/dist/chunk-Z5QW6USC.js +2 -0
  31. package/dist/{compliance-D7GD6ZYC.js → compliance-BNFWQPKM.js} +1 -1
  32. package/dist/config-schema-FLHRVZMI.js +2 -0
  33. package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
  34. package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
  35. package/dist/decision-loader-HELL2AMX.js +2 -0
  36. package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
  37. package/dist/{diff-YGHBIJY5.js → diff-MF55KQZH.js} +1 -1
  38. package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
  39. package/dist/{docs-USDAF26F.js → docs-O37YLLRN.js} +1 -1
  40. package/dist/doctor-IG5XM4C4.js +2 -0
  41. package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
  42. package/dist/{flow-FVZR3YJ4.js → flow-BGXOVE2V.js} +1 -1
  43. package/dist/index.js +6 -6
  44. package/dist/init-M44SO65G.js +2 -0
  45. package/dist/{init-XYB62Q3X.js → init-V4KSEKPK.js} +1 -1
  46. package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
  47. package/dist/list-CFHINXIS.js +12 -0
  48. package/dist/lore-loader-D2ISOASW.js +2 -0
  49. package/dist/lore-loader-PXFKMKAN.js +2 -0
  50. package/dist/mcp.js +4 -4
  51. package/dist/metrics-UESGUHTA.js +2 -0
  52. package/dist/migrate-assessments-YSITX7KM.js +4 -0
  53. package/dist/migrate-decisions-NPLQOEEH.js +6 -0
  54. package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
  55. package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-QPZJH6XO.js} +1 -1
  56. package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
  57. package/dist/{orchestrate-M5PBZBJQ.js → orchestrate-RID7HHHH.js} +1 -1
  58. package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
  59. package/dist/{portal-check-ZMLVBIGW.js → portal-check-DV2VSJ5E.js} +1 -1
  60. package/dist/portal-compliance-JONQ4SOP.js +2 -0
  61. package/dist/{probe-3FTG6LYO.js → probe-5HAXULAD.js} +1 -1
  62. package/dist/{providers-AWA7WLLM.js → providers-4PXMWA7V.js} +1 -1
  63. package/dist/quiz-WYIZJG5K.js +10 -0
  64. package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
  65. package/dist/reindex-FWPD2VGM.js +2 -0
  66. package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
  67. package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
  68. package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
  69. package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
  70. package/dist/{serve-U47GULB6.js → serve-MO35XIZE.js} +1 -1
  71. package/dist/serve-OQYUO7CR.js +12 -0
  72. package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
  73. package/dist/server-FGUL2FWQ.js +7 -0
  74. package/dist/session-tracker-KGORN6B5.js +2 -0
  75. package/dist/{session-work-log-PAKXOFGL.js → session-work-log-4IEVE4KK.js} +1 -1
  76. package/dist/{session-work-log-ZP45TREI.js → session-work-log-EE4UIZ33.js} +1 -1
  77. package/dist/{setup-FEWSYS3Y.js → setup-ZSEC72BS.js} +1 -1
  78. package/dist/{shift-PC6C7NUX.js → shift-TVNY2CQF.js} +6 -6
  79. package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
  80. package/dist/show-WVHAL4VU.js +7 -0
  81. package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
  82. package/dist/status-S7Z5FVIE.js +6 -0
  83. package/dist/{summary-PYTEIJ4U.js → summary-WLI3NF4G.js} +2 -2
  84. package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
  85. package/dist/sync-55U6QPIA.js +2 -0
  86. package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
  87. package/dist/{team-PDK64JXI.js → team-MGT66HZQ.js} +1 -1
  88. package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
  89. package/dist/tools-QJHAVYI6.js +2 -0
  90. package/dist/university-content/notes/N-para-001-build-something.md +126 -0
  91. package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
  92. package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
  93. package/dist/university-content/notes/N-para-101-component-types.md +99 -0
  94. package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
  95. package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
  96. package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
  97. package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
  98. package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
  99. package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
  100. package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
  101. package/dist/university-content/notes/N-para-101-welcome.md +51 -0
  102. package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
  103. package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
  104. package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
  105. package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
  106. package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
  107. package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
  108. package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
  109. package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
  110. package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
  111. package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
  112. package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
  113. package/dist/university-content/notes/N-para-301-context-management.md +53 -0
  114. package/dist/university-content/notes/N-para-301-decisions.md +99 -0
  115. package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
  116. package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
  117. package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
  118. package/dist/university-content/notes/N-para-301-history-system.md +42 -0
  119. package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
  120. package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
  121. package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
  122. package/dist/university-content/notes/N-para-301-protocols.md +113 -0
  123. package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
  124. package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
  125. package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
  126. package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
  127. package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
  128. package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
  129. package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
  130. package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
  131. package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
  132. package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
  133. package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
  134. package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
  135. package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
  136. package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
  137. package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
  138. package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
  139. package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
  140. package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
  141. package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
  142. package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
  143. package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
  144. package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
  145. package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
  146. package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
  147. package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
  148. package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
  149. package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
  150. package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
  151. package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
  152. package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
  153. package/dist/university-content/notes/N-para-501-task-management.md +100 -0
  154. package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
  155. package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
  156. package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
  157. package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
  158. package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
  159. package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
  160. package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
  161. package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
  162. package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
  163. package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
  164. package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
  165. package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
  166. package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
  167. package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
  168. package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
  169. package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
  170. package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
  171. package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
  172. package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
  173. package/dist/university-content/paths/LP-para-001.yaml +29 -0
  174. package/dist/university-content/paths/LP-para-101.yaml +59 -0
  175. package/dist/university-content/paths/LP-para-201.yaml +69 -0
  176. package/dist/university-content/paths/LP-para-301.yaml +84 -0
  177. package/dist/university-content/paths/LP-para-401.yaml +74 -0
  178. package/dist/university-content/paths/LP-para-501.yaml +89 -0
  179. package/dist/university-content/paths/LP-para-601.yaml +59 -0
  180. package/dist/university-content/paths/LP-para-701.yaml +64 -0
  181. package/dist/university-content/quizzes/Q-para-001-build-something.yaml +46 -0
  182. package/dist/university-content/quizzes/Q-para-001-meet-the-team.yaml +46 -0
  183. package/dist/university-content/quizzes/Q-para-001-shift-setup.yaml +46 -0
  184. package/dist/university-content/quizzes/Q-para-101-component-types.yaml +46 -0
  185. package/dist/university-content/quizzes/Q-para-101-first-steps.yaml +56 -0
  186. package/dist/university-content/quizzes/Q-para-101-five-symbols.yaml +66 -0
  187. package/dist/university-content/quizzes/Q-para-101-paradigm-logger.yaml +56 -0
  188. package/dist/university-content/quizzes/Q-para-101-portal-yaml.yaml +56 -0
  189. package/dist/university-content/quizzes/Q-para-101-project-structure.yaml +66 -0
  190. package/dist/university-content/quizzes/Q-para-101-purpose-files.yaml +56 -0
  191. package/dist/university-content/quizzes/Q-para-101-tags-and-classification.yaml +56 -0
  192. package/dist/university-content/quizzes/Q-para-101-welcome.yaml +56 -0
  193. package/dist/university-content/quizzes/Q-para-201-architecture-review.yaml +66 -0
  194. package/dist/university-content/quizzes/Q-para-201-aspect-graph.yaml +46 -0
  195. package/dist/university-content/quizzes/Q-para-201-aspects-and-anchors.yaml +56 -0
  196. package/dist/university-content/quizzes/Q-para-201-component-patterns.yaml +56 -0
  197. package/dist/university-content/quizzes/Q-para-201-cross-cutting-concerns.yaml +56 -0
  198. package/dist/university-content/quizzes/Q-para-201-disciplines.yaml +66 -0
  199. package/dist/university-content/quizzes/Q-para-201-flows-deep-dive.yaml +66 -0
  200. package/dist/university-content/quizzes/Q-para-201-gates-deep-dive.yaml +66 -0
  201. package/dist/university-content/quizzes/Q-para-201-portal-protocol.yaml +56 -0
  202. package/dist/university-content/quizzes/Q-para-201-signal-patterns.yaml +56 -0
  203. package/dist/university-content/quizzes/Q-para-201-symbol-naming.yaml +66 -0
  204. package/dist/university-content/quizzes/Q-para-301-context-management.yaml +56 -0
  205. package/dist/university-content/quizzes/Q-para-301-decisions.yaml +76 -0
  206. package/dist/university-content/quizzes/Q-para-301-doctor-and-validation.yaml +66 -0
  207. package/dist/university-content/quizzes/Q-para-301-enforcement-levels.yaml +46 -0
  208. package/dist/university-content/quizzes/Q-para-301-fragility-tracking.yaml +46 -0
  209. package/dist/university-content/quizzes/Q-para-301-history-system.yaml +56 -0
  210. package/dist/university-content/quizzes/Q-para-301-navigation-system.yaml +56 -0
  211. package/dist/university-content/quizzes/Q-para-301-operations-review.yaml +66 -0
  212. package/dist/university-content/quizzes/Q-para-301-paradigm-shift.yaml +46 -0
  213. package/dist/university-content/quizzes/Q-para-301-protocols.yaml +56 -0
  214. package/dist/university-content/quizzes/Q-para-301-ripple-analysis.yaml +56 -0
  215. package/dist/university-content/quizzes/Q-para-301-sentinel-observability.yaml +46 -0
  216. package/dist/university-content/quizzes/Q-para-301-sync-and-maintenance.yaml +46 -0
  217. package/dist/university-content/quizzes/Q-para-301-wisdom-system.yaml +56 -0
  218. package/dist/university-content/quizzes/Q-para-401-agent-identity.yaml +66 -0
  219. package/dist/university-content/quizzes/Q-para-401-agent-interop.yaml +46 -0
  220. package/dist/university-content/quizzes/Q-para-401-agent-roles.yaml +56 -0
  221. package/dist/university-content/quizzes/Q-para-401-commit-conventions.yaml +56 -0
  222. package/dist/university-content/quizzes/Q-para-401-mastery-review.yaml +66 -0
  223. package/dist/university-content/quizzes/Q-para-401-mcp-tools-overview.yaml +66 -0
  224. package/dist/university-content/quizzes/Q-para-401-multi-agent-coordination.yaml +76 -0
  225. package/dist/university-content/quizzes/Q-para-401-notebooks-permissions.yaml +61 -0
  226. package/dist/university-content/quizzes/Q-para-401-orchestration-workflow.yaml +66 -0
  227. package/dist/university-content/quizzes/Q-para-401-pm-governance.yaml +66 -0
  228. package/dist/university-content/quizzes/Q-para-401-provider-cascade.yaml +56 -0
  229. package/dist/university-content/quizzes/Q-para-401-quick-check.yaml +46 -0
  230. package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
  231. package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
  232. package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
  233. package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
  234. package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
  235. package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
  236. package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
  237. package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
  238. package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
  239. package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
  240. package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
  241. package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
  242. package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
  243. package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
  244. package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
  245. package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
  246. package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
  247. package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
  248. package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
  249. package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
  250. package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
  251. package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
  252. package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
  253. package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
  254. package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
  255. package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
  256. package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
  257. package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
  258. package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
  259. package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
  260. package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
  261. package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
  262. package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
  263. package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
  264. package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
  265. package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
  266. package/dist/university-content/reference.json +2 -2
  267. package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
  268. package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
  269. package/dist/university-ui/index.html +1 -1
  270. package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
  271. package/dist/validate-XUQZTF3H.js +9 -0
  272. package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
  273. package/lore-ui/dist/assets/{index-Bk-K0qgN.js → index-DKhNxgtW.js} +10 -10
  274. package/lore-ui/dist/index.html +1 -1
  275. package/package.json +2 -2
  276. package/platform-ui/dist/assets/{AmbientSection-BYjt75R1.js → AmbientSection-CwatqcBD.js} +1 -1
  277. package/platform-ui/dist/assets/{CanvasSection-rKvA_vZj.js → CanvasSection-dFAthehN.js} +1 -1
  278. package/platform-ui/dist/assets/{DocsSection-CI9K73M-.js → DocsSection-BZ2SFJBZ.js} +1 -1
  279. package/platform-ui/dist/assets/{GitSection-DSGj_c6S.js → GitSection-MNNYU1tO.js} +1 -1
  280. package/platform-ui/dist/assets/{GraphSection-CawN7pC5.js → GraphSection-COYjb4Pt.js} +1 -1
  281. package/platform-ui/dist/assets/LoreSection-B0hUbfsJ.js +1 -0
  282. package/platform-ui/dist/assets/{SentinelSection-DNgoYMH0.js → SentinelSection-BCxW1DCp.js} +1 -1
  283. package/platform-ui/dist/assets/{SymphonySection-C0zfcqv3.js → SymphonySection-BsucZRqy.js} +1 -1
  284. package/platform-ui/dist/assets/{TeamSection-Bzd3Dt9Q.js → TeamSection-C0QNTudW.js} +1 -1
  285. package/platform-ui/dist/assets/{UniversitySection-tBr62R0S.js → UniversitySection-DN1-g9pw.js} +1 -1
  286. package/platform-ui/dist/assets/{index-BaOmyn11.js → index-DwUT8pju.js} +2 -2
  287. package/platform-ui/dist/index.html +1 -1
  288. package/dist/add-P76GEMGF.js +0 -8
  289. package/dist/chunk-JQKKVAAN.js +0 -2
  290. package/dist/chunk-NQ47TA6C.js +0 -111
  291. package/dist/chunk-ODVKPZZ4.js +0 -2
  292. package/dist/chunk-Q2J542ST.js +0 -2
  293. package/dist/chunk-RBLK34IA.js +0 -11
  294. package/dist/chunk-RN4VE6P3.js +0 -521
  295. package/dist/chunk-WS2N27RX.js +0 -3
  296. package/dist/config-schema-GUQY2QN7.js +0 -2
  297. package/dist/decision-loader-2XPZE4EZ.js +0 -2
  298. package/dist/doctor-WMVULMQD.js +0 -2
  299. package/dist/list-5IUGP3ZB.js +0 -7
  300. package/dist/lore-loader-RVQI5GXL.js +0 -2
  301. package/dist/lore-loader-XY5MZRR2.js +0 -2
  302. package/dist/migrate-assessments-GEI5WMI2.js +0 -4
  303. package/dist/portal-compliance-6YR27IQU.js +0 -2
  304. package/dist/quiz-FE5UGAY2.js +0 -10
  305. package/dist/reindex-I6LPAKCC.js +0 -2
  306. package/dist/serve-OY6XYL7F.js +0 -12
  307. package/dist/server-2MNROHF6.js +0 -7
  308. package/dist/session-tracker-MWJAJA6Z.js +0 -2
  309. package/dist/show-BOAVWZPZ.js +0 -7
  310. package/dist/status-A37ECYNJ.js +0 -6
  311. package/dist/sync-DLUBV5HQ.js +0 -2
  312. package/dist/tools-5ITPEPSV.js +0 -2
  313. package/dist/university-content/courses/.purpose +0 -492
  314. package/dist/university-content/courses/para-001.json +0 -166
  315. package/dist/university-content/courses/para-101.json +0 -615
  316. package/dist/university-content/courses/para-201.json +0 -794
  317. package/dist/university-content/courses/para-301.json +0 -830
  318. package/dist/university-content/courses/para-401.json +0 -868
  319. package/dist/university-content/courses/para-501.json +0 -1166
  320. package/dist/university-content/courses/para-601.json +0 -719
  321. package/dist/university-content/courses/para-701.json +0 -807
  322. package/dist/university-content/plsat/.purpose +0 -162
  323. package/dist/university-content/plsat/v2.0.json +0 -760
  324. package/dist/university-content/plsat/v3.0.json +0 -3453
  325. package/dist/validate-C6SMKGYD.js +0 -9
  326. package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
  327. /package/dist/{chunk-BV5PRPLB.js → chunk-IZSBGW6E.js} +0 -0
  328. /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
@@ -0,0 +1,204 @@
1
+ ---
2
+ id: N-para-701-model-tier-resolution
3
+ title: 'Lesson 6: Model Tier Resolution'
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-701
11
+ - three-capability-tiers
12
+ - model-resolution-config-block
13
+ - five-level-resolution-cascade
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 5
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-701.json
21
+ ---
22
+
23
+ ## The Platform Portability Problem
24
+
25
+ Early Paradigm agent profiles specified `defaultModel: opus | sonnet | haiku` — Anthropic-specific model names hardcoded into each agent's configuration. This created four problems:
26
+
27
+ 1. **Platform lock-in** — These model names do not exist in Cursor, Windsurf, Copilot, or other IDEs. An agent profile designed for Claude Code breaks everywhere else.
28
+ 2. **Plan limitations** — Not every user has access to Opus. A developer on a Sonnet-only plan cannot use agents that request Opus without manual profile editing.
29
+ 3. **Provider assumptions** — The model names assume Anthropic. Users who want to use GPT-4o, Gemini, or local models through Ollama have no path.
30
+ 4. **Maintenance burden** — Model names were hardcoded in the orchestrator as `DEFAULT_MODELS`. Every time Anthropic ships a new model, someone has to update agent profiles.
31
+
32
+ ## The Solution: Capability Tiers
33
+
34
+ Model tier resolution replaces specific model names with abstract **capability tiers** that describe what the agent needs, not which model to use:
35
+
36
+ | Tier | Capability | Use Cases |
37
+ |---|---|---|
38
+ | `tier-1` (reasoning) | Complex analysis, multi-step planning | Architect, security audit, system design |
39
+ | `tier-2` (balanced) | General coding, review, design | Reviewer, designer, most agent work |
40
+ | `tier-3` (fast) | Simple tasks, documentation, bulk ops | Builder, tester, documentor |
41
+
42
+ Agent profiles now specify `modelTier` instead of `defaultModel`:
43
+
44
+ ```yaml
45
+ # Before (platform-locked)
46
+ defaultModel: opus
47
+
48
+ # After (platform-agnostic)
49
+ modelTier: tier-1
50
+ ```
51
+
52
+ The orchestrator maps tier requests to available models through a resolution table in the project configuration.
53
+
54
+ ## The model-resolution Config Block
55
+
56
+ The `model-resolution` block in `.paradigm/config.yaml` maps tiers to actual model identifiers:
57
+
58
+ ```yaml
59
+ # .paradigm/config.yaml
60
+ model-resolution:
61
+ tier-1: claude-opus-4-6 # Best reasoning available
62
+ tier-2: claude-sonnet-4-6 # Balanced
63
+ tier-3: claude-haiku-4-5 # Fast/cheap
64
+ ```
65
+
66
+ This is the single configuration point where model choices live. Changing all agent models is a 3-line edit. Different environments ship different defaults:
67
+
68
+ ```yaml
69
+ # Claude Code (full Anthropic access)
70
+ model-resolution:
71
+ tier-1: claude-opus-4-6
72
+ tier-2: claude-sonnet-4-6
73
+ tier-3: claude-haiku-4-5
74
+
75
+ # Cursor (may not have Opus access)
76
+ model-resolution:
77
+ tier-1: claude-sonnet-4-6
78
+ tier-2: claude-sonnet-4-6
79
+ tier-3: claude-haiku-4-5
80
+
81
+ # OpenAI-only environment
82
+ model-resolution:
83
+ tier-1: gpt-4o
84
+ tier-2: gpt-4o-mini
85
+ tier-3: gpt-4o-mini
86
+
87
+ # Self-hosted / Ollama
88
+ model-resolution:
89
+ tier-1: llama-3.1-70b
90
+ tier-2: llama-3.1-8b
91
+ tier-3: llama-3.1-8b
92
+
93
+ # Budget-conscious
94
+ model-resolution:
95
+ tier-1: claude-sonnet-4-6
96
+ tier-2: claude-sonnet-4-6
97
+ tier-3: claude-sonnet-4-6
98
+ ```
99
+
100
+ The budget-conscious configuration demonstrates the power of tiers: you can run the full 54-agent orchestration system with Sonnet for everything by mapping all three tiers to the same model. The agents still have different personalities, expertise, and behaviors — the model tier only affects the underlying LLM capability.
101
+
102
+ ## Resolution Order
103
+
104
+ When the orchestrator needs a model for an agent, it resolves through a five-level cascade:
105
+
106
+ 1. **Agent profile** — `modelTier` field (what the agent requests)
107
+ 2. **Project config** — `.paradigm/config.yaml` `model-resolution` block (project override)
108
+ 3. **Global config** — `~/.paradigm/config.yaml` `model-resolution` block (user preference)
109
+ 4. **IDE detection** — Auto-detect available models from environment variables (`CLAUDE_CODE`, `CURSOR_SESSION`, `WINDSURF_SESSION`)
110
+ 5. **Fallback** — Default to tier-2 (balanced) with the best available model
111
+
112
+ ```typescript
113
+ function resolveModel(tier: ModelTier, config: ParadigmConfig): string {
114
+ return config.modelResolution?.[tier] ?? DEFAULTS[tier];
115
+ }
116
+ ```
117
+
118
+ The cascade ensures that agent preferences are respected when possible, project-level overrides take precedence over global preferences, and there is always a working fallback even if nothing is configured.
119
+
120
+ ## Environment Detection
121
+
122
+ The system auto-detects the IDE environment to set sensible defaults:
123
+
124
+ ```typescript
125
+ function detectEnvironment(): ModelResolution {
126
+ if (process.env.CLAUDE_CODE) {
127
+ return {
128
+ 'tier-1': 'claude-opus-4-6',
129
+ 'tier-2': 'claude-sonnet-4-6',
130
+ 'tier-3': 'claude-haiku-4-5'
131
+ };
132
+ }
133
+ if (process.env.CURSOR_SESSION) {
134
+ return {
135
+ 'tier-1': 'claude-sonnet-4-6',
136
+ 'tier-2': 'claude-sonnet-4-6',
137
+ 'tier-3': 'claude-haiku-4-5'
138
+ };
139
+ }
140
+ // Fallback: everything is tier-2
141
+ return {
142
+ 'tier-1': 'claude-sonnet-4-6',
143
+ 'tier-2': 'claude-sonnet-4-6',
144
+ 'tier-3': 'claude-sonnet-4-6'
145
+ };
146
+ }
147
+ ```
148
+
149
+ Claude Code users get the full tier spread (Opus/Sonnet/Haiku). Cursor users get Sonnet for tier-1 because Opus may not be available in Cursor's model selection. Unknown environments get Sonnet for everything as a safe fallback.
150
+
151
+ ## Default Tier Assignments
152
+
153
+ The orchestrator assigns default tiers to standard agent roles:
154
+
155
+ ```typescript
156
+ const DEFAULT_TIERS: Record<string, ModelTier> = {
157
+ architect: 'tier-1', // Complex planning and design
158
+ security: 'tier-1', // Critical analysis, cannot miss vulnerabilities
159
+ reviewer: 'tier-2', // Balanced evaluation
160
+ builder: 'tier-3', // Fast implementation
161
+ tester: 'tier-3', // Fast test writing
162
+ documentor: 'tier-3', // Fast file maintenance
163
+ };
164
+ ```
165
+
166
+ Architect and security get tier-1 because their work requires deep reasoning (system design, vulnerability analysis). Builder, tester, and documentor get tier-3 because their work is more mechanical (implement this spec, write this test, update this .purpose file). Reviewer gets tier-2 as a balanced middle ground.
167
+
168
+ These defaults can be overridden per-agent in the `.agent` file (`modelTier: tier-2`) or per-project in config.yaml.
169
+
170
+ ## Cost Estimation
171
+
172
+ The orchestrator uses tier cost multipliers for budget estimation:
173
+
174
+ ```typescript
175
+ const TIER_COST_MULTIPLIER = {
176
+ 'tier-1': 3.0, // ~$15/MTok for Opus
177
+ 'tier-2': 1.0, // ~$3/MTok for Sonnet (baseline)
178
+ 'tier-3': 0.25, // ~$0.80/MTok for Haiku
179
+ };
180
+ ```
181
+
182
+ The orchestration plan output includes cost estimates: "Estimated cost: $0.12 (tier-1: architect, tier-2: reviewer, tier-3: builder+documentor)". This transparency lets the human approve or modify the plan before execution.
183
+
184
+ ## Backward Compatibility
185
+
186
+ The migration path preserves existing profiles:
187
+
188
+ ```yaml
189
+ # Agent profile with both fields (transitional)
190
+ defaultModel: opus # Old field (deprecated, still read)
191
+ modelTier: tier-1 # New field (preferred)
192
+ ```
193
+
194
+ The resolution logic checks `modelTier` first. If only `defaultModel` exists, it maps: `opus` to `tier-1`, `sonnet` to `tier-2`, `haiku` to `tier-3`. This ensures existing agent profiles continue working without modification.
195
+
196
+ ## What This Enables
197
+
198
+ Model tier resolution unlocks five capabilities:
199
+
200
+ - **Budget control** — Map all tiers to Sonnet and run the full orchestration at Sonnet cost.
201
+ - **Platform portability** — Same agents work in Claude Code, Cursor, Windsurf, and Copilot.
202
+ - **Provider flexibility** — Swap to OpenAI, Gemini, or local models by changing 3 lines in config.
203
+ - **Graceful degradation** — If the tier-1 model is unavailable, fall back to tier-2 automatically.
204
+ - **Team consistency** — The entire team shares one `model-resolution` config block, not per-agent model names.
@@ -0,0 +1,169 @@
1
+ ---
2
+ id: N-para-701-orchestration-enforcement
3
+ title: 'Lesson 7: Orchestration Enforcement'
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-701
11
+ - three-seed-habits
12
+ - enforcement-uses-the
13
+ - nominations-surface-in
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 6
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-701.json
21
+ ---
22
+
23
+ ## Why Enforcement Matters
24
+
25
+ Orchestration is powerful but optional. An agent can skip `paradigm_orchestrate_inline` and implement a 10-file feature solo, bypassing security review, missing test coverage, and producing no documentation updates. The feature ships, but quality degrades silently.
26
+
27
+ Enforcement solves this by making orchestration the path of least resistance. Instead of hardcoding rules into agent logic ("always call the orchestrator"), enforcement works through Paradigm's habit system — three seed habits that nudge, warn, and track orchestration compliance.
28
+
29
+ ## The Three Orchestration Habits
30
+
31
+ Paradigm seeds three habits specifically for orchestration enforcement:
32
+
33
+ ### 1. orchestration-required (preflight, warn)
34
+
35
+ ```typescript
36
+ {
37
+ id: 'orchestration-required',
38
+ name: 'Orchestrate Complex Tasks',
39
+ description: 'Tasks affecting 3+ files or touching security symbols
40
+ should use paradigm_orchestrate_inline to determine which agents
41
+ are needed.',
42
+ category: 'collaboration',
43
+ trigger: 'preflight',
44
+ severity: 'warn',
45
+ check: {
46
+ type: 'tool-called',
47
+ params: { tools: ['paradigm_orchestrate_inline'] }
48
+ },
49
+ enabled: true,
50
+ }
51
+ ```
52
+
53
+ This habit fires at **preflight** (session start). It checks whether `paradigm_orchestrate_inline` was called. If not, and the task description suggests complexity (3+ files, security symbols), it emits a `warn` severity message: "This task may benefit from orchestration. Call paradigm_orchestrate_inline mode='plan' to see which agents are needed."
54
+
55
+ The severity is `warn`, not `block`. This is deliberate. Blocking on orchestration would prevent quick fixes, hot patches, and simple tasks that genuinely do not need multi-agent coordination. The warning surfaces the recommendation; the human decides whether to follow it.
56
+
57
+ ### 2. agent-coverage-validated (postflight, advisory)
58
+
59
+ ```typescript
60
+ {
61
+ id: 'agent-coverage-validated',
62
+ name: 'Validate Agent Involvement',
63
+ description: 'After completing work, verify that agents with relevant
64
+ expertise were consulted. Check nominations that were surfaced but
65
+ not acted on.',
66
+ category: 'collaboration',
67
+ trigger: 'postflight',
68
+ severity: 'advisory',
69
+ check: {
70
+ type: 'tool-called',
71
+ params: {
72
+ tools: ['paradigm_ambient_nominations', 'paradigm_agent_list']
73
+ }
74
+ },
75
+ enabled: true,
76
+ }
77
+ ```
78
+
79
+ This habit fires at **postflight** (before session end). It checks whether agent nominations were reviewed. If `paradigm_ambient_nominations` was not called, it advises: "There may be agent nominations you haven't reviewed. Run paradigm_ambient_nominations to check if any agents have relevant contributions."
80
+
81
+ This catches the scenario where the orchestrator was bypassed but agents still self-nominated. The security agent may have noticed a new route without a gate, but if nobody checked nominations, the contribution is lost.
82
+
83
+ ### 3. hot-mode-incident (on-stop, advisory)
84
+
85
+ ```typescript
86
+ {
87
+ id: 'hot-mode-incident',
88
+ name: 'Incident Response Acknowledgment',
89
+ description: 'During incident response, orchestration enforcement is
90
+ waived. But a post-incident lore entry is required and a postflight
91
+ review should be scheduled.',
92
+ category: 'collaboration',
93
+ trigger: 'on-stop',
94
+ severity: 'advisory',
95
+ check: { type: 'lore-recorded' },
96
+ enabled: true,
97
+ }
98
+ ```
99
+
100
+ This habit acknowledges that incidents are different. When production is down, you do not want a warning about calling the orchestrator. You want to fix the problem. This habit fires at **on-stop** and only checks that a lore entry was recorded. The rationale: during incidents, skip orchestration. After incidents, record what happened so the learning loop can process it.
101
+
102
+ ## The Nomination System
103
+
104
+ Orchestration enforcement works hand-in-hand with the nomination system. When events flow through the event stream, each agent scores them against their attention patterns. Agents whose scores exceed their threshold self-nominate contributions.
105
+
106
+ Nominations surface in two places:
107
+
108
+ 1. **During orchestration plan/execute** — The orchestrator includes pending nominations in the plan. If the security agent nominated a gate-coverage review, it appears in the orchestration plan's agent list with the nomination brief.
109
+
110
+ 2. **Via paradigm_ambient_nominations** — This MCP tool returns all pending nominations with their urgency, agent, and brief description. The `agent-coverage-validated` habit points agents here when orchestration was skipped.
111
+
112
+ The nomination flow:
113
+
114
+ ```
115
+ Event emitted → Each agent scores it → Score >= threshold →
116
+ Agent self-nominates → Nomination stored →
117
+ Surfaced in orchestration OR paradigm_ambient_nominations
118
+ ```
119
+
120
+ ## The Post-Write Hook Connection
121
+
122
+ The post-write hook (which runs after every file edit) emits events into the event stream. These events trigger attention scoring across all active agents. If an agent's attention score exceeds its threshold, a nomination is created.
123
+
124
+ The post-write hook itself does not enforce orchestration. It simply produces the events that feed the nomination engine. The enforcement comes from the habits that check whether nominations were reviewed.
125
+
126
+ ## Enforcement Through Habits, Not Hardcoded Logic
127
+
128
+ This is a critical architectural decision. Orchestration enforcement is not baked into the orchestrator or the agent runtime. It lives in the habit system, which means:
129
+
130
+ - **Configurable** — A project can disable `orchestration-required` by setting `enabled: false` in their habits override. A team that always orchestrates manually can turn off the nag.
131
+ - **Tunable** — A project can change the severity from `warn` to `block` if they want strict enforcement. A project can change it to `advisory` if they want a softer touch.
132
+ - **Extensible** — Teams can add custom orchestration habits. A habit that requires security review for any task touching `auth/**` files. A habit that requires documentation review for API changes.
133
+ - **Transparent** — Habits are declared in YAML, visible in the project configuration, and evaluated at predictable trigger points (preflight, postflight, on-stop).
134
+
135
+ The alternative — hardcoding orchestration requirements into the orchestrator itself — would be rigid, opaque, and impossible to customize per project. The habit system provides the same enforcement with full flexibility.
136
+
137
+ ## Habit Evaluation Context
138
+
139
+ When habits are evaluated, the system provides an `EvaluationContext` that includes:
140
+
141
+ ```typescript
142
+ interface EvaluationContext {
143
+ toolsCalled: string[]; // Which MCP tools were invoked
144
+ filesModified: string[]; // Which files were changed
145
+ symbolsTouched: string[]; // Which symbols were affected
146
+ loreRecorded: boolean; // Whether a lore entry was written
147
+ hasPortalRoutes: boolean; // Whether portal.yaml has routes
148
+ taskAddsRoutes: boolean; // Whether the task added new routes
149
+ taskDescription?: string; // The task description (for complexity analysis)
150
+ gitClean?: boolean; // Whether the working tree is clean
151
+ }
152
+ ```
153
+
154
+ The `orchestration-required` habit checks `toolsCalled` for `paradigm_orchestrate_inline`. The `agent-coverage-validated` habit checks for `paradigm_ambient_nominations` or `paradigm_agent_list`. The `hot-mode-incident` habit checks `loreRecorded`.
155
+
156
+ The evaluation produces a `HabitEvaluation` with three possible results: `followed` (the habit was satisfied), `skipped` (the habit was not satisfied), or `partial` (some conditions met, others not). Skipped habits with `warn` severity produce warnings; skipped habits with `block` severity prevent the session from completing.
157
+
158
+ ## Practical Workflow
159
+
160
+ Here is how orchestration enforcement plays out in a typical session:
161
+
162
+ 1. Developer starts a task: "Add webhook support for Stripe events"
163
+ 2. **Preflight** — `orchestration-required` fires: "This task modifies auth-related symbols. Consider calling paradigm_orchestrate_inline."
164
+ 3. Developer calls `paradigm_orchestrate_inline mode='plan'` — the plan includes builder (implement), security (gate review), tester (write tests), documentor (update .purpose)
165
+ 4. Developer calls `paradigm_orchestrate_inline mode='execute'` — agents produce their outputs
166
+ 5. Work is done. **Postflight** — `agent-coverage-validated` fires: evaluates whether nominations were reviewed. Since orchestration was used, this passes.
167
+ 6. Session ends. **On-stop** — standard hooks check .purpose coverage, portal.yaml gates, etc.
168
+
169
+ If step 3 was skipped (developer implemented solo), the postflight habit would advise reviewing `paradigm_ambient_nominations` to check for security or documentation contributions that were self-nominated by agents watching the event stream.
@@ -0,0 +1,198 @@
1
+ ---
2
+ id: N-para-701-per-project-rosters
3
+ title: 'Lesson 5: Per-Project Rosters'
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-701
11
+ - rosteryaml-at-paradigmrosteryaml
12
+ - no-rosteryaml-
13
+ - project-type-detection
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 6
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-701.json
21
+ ---
22
+
23
+ ## The Problem: 54 Agents Everywhere
24
+
25
+ Without project-level rosters, all 54 global agents are available to every project. This creates three problems:
26
+
27
+ 1. **Noise** — The orchestrator considers 54 agents when planning, even though a backend API project does not need a designer, copywriter, or SEO agent. More candidates means more evaluation time and potentially irrelevant agents being included in plans.
28
+
29
+ 2. **Irrelevance** — Agents that have no domain expertise for the project (gamedev on a SaaS app, legal on an open-source tool) waste attention by scoring events and producing nominations that will never be acted on.
30
+
31
+ 3. **Global benching is broken** — Before rosters, benching an agent (setting `benched: true` on the `.agent` file) was a global operation. Benching the gamedev agent for your SaaS project also benched it for your game project. There was no per-project control.
32
+
33
+ ## The Solution: roster.yaml
34
+
35
+ The `roster.yaml` file at `.paradigm/roster.yaml` lists exactly which agents are active on this project:
36
+
37
+ ```yaml
38
+ # .paradigm/roster.yaml
39
+ version: "1.0"
40
+ project: dealoracle
41
+ type: saas-web-app
42
+
43
+ active:
44
+ - architect
45
+ - builder
46
+ - reviewer
47
+ - tester
48
+ - security
49
+ - documentor
50
+ - designer # Mika
51
+ - copywriter # Wren
52
+ - performance # Bolt
53
+ - devops # Atlas
54
+ - dba # Vault
55
+ - e2e # Ghost
56
+ - dx # Helix
57
+ - seo # Beacon
58
+ - pm # Yuki
59
+ - product # North
60
+ - advocate # Jinx
61
+ - debugger # Trace
62
+ - release # Ship
63
+ ```
64
+
65
+ Agents not listed are not active on this project. They still exist globally at `~/.paradigm/agents/` but the orchestrator will not consider them when planning work for this project.
66
+
67
+ ## Backward Compatibility
68
+
69
+ The key design decision: **no roster.yaml = all agents available**. Existing projects that never created a roster continue working exactly as before. The `isAgentActive()` function implements this:
70
+
71
+ ```typescript
72
+ function isAgentActive(agentId: string, rootDir: string): boolean {
73
+ const roster = loadProjectRoster(rootDir);
74
+ if (!roster) return true; // No roster = all active
75
+ return roster.includes(agentId);
76
+ }
77
+ ```
78
+
79
+ This ensures zero breaking changes. You opt into roster filtering by creating the file. Until then, the system behaves as it always has.
80
+
81
+ ## Project Type Detection
82
+
83
+ When running `paradigm shift` (the project initialization command), the system auto-detects the project type from filesystem signals:
84
+
85
+ ```typescript
86
+ function detectProjectType(cwd: string): ProjectType {
87
+ const signals = {
88
+ hasPackageJson: exists('package.json'),
89
+ hasSupabase: exists('supabase/'),
90
+ hasNextConfig: exists('next.config.*'),
91
+ hasSwiftPackage: exists('Package.swift'),
92
+ hasGodotProject: exists('project.godot'),
93
+ hasCargoToml: exists('Cargo.toml'),
94
+ hasPubspecYaml: exists('pubspec.yaml'),
95
+ hasPrisma: exists('prisma/'),
96
+ hasDockerfile: exists('Dockerfile'),
97
+ };
98
+
99
+ if (signals.hasGodotProject) return 'game';
100
+ if (signals.hasSwiftPackage) return 'ios-app';
101
+ if (signals.hasPubspecYaml) return 'flutter-app';
102
+ if (signals.hasSupabase && signals.hasNextConfig) return 'saas-web-app';
103
+ if (signals.hasNextConfig) return 'web-app';
104
+ if (signals.hasCargoToml) return 'rust-project';
105
+ if (signals.hasPrisma || signals.hasDockerfile) return 'backend-api';
106
+ return 'generic';
107
+ }
108
+ ```
109
+
110
+ Detected types include `saas-web-app`, `web-app`, `backend-api`, `ios-app`, `flutter-app`, `game`, `rust-project`, and `generic`. Each type maps to a suggested roster.
111
+
112
+ ## Suggested Rosters by Type
113
+
114
+ Each project type has a pre-defined suggested roster. These are starting points, not mandatory configurations:
115
+
116
+ | Project Type | Typical Size | Notable Inclusions | Notable Exclusions |
117
+ |---|---|---|---|
118
+ | saas-web-app | ~24 agents | Full stack: designer, dba, seo, sales, legal | gamedev, 3d, audio, streaming |
119
+ | web-app | ~15 agents | Frontend-focused: designer, seo, a11y | dba, sales, legal |
120
+ | backend-api | ~13 agents | Backend-focused: dba, dx, performance | designer, copywriter, seo |
121
+ | ios-app | ~12 agents | Mobile: mobile (Swift), a11y, performance | dba, seo, devops |
122
+ | game | ~11 agents | Game-specific: gamedev, 3d, audio | seo, legal, sales, dba |
123
+ | flutter-app | ~11 agents | Cross-platform: mobile, a11y | dba, seo, devops |
124
+ | generic | ~8 agents | Core only: architect through documentor + debugger + qa | All specialists |
125
+
126
+ The `generic` roster is intentionally minimal: architect, builder, reviewer, tester, security, documentor, debugger, and qa. These 8 agents provide the baseline quality coverage (design, build, review, test, secure, document, debug, validate) that every project needs.
127
+
128
+ ## CLI Commands for Roster Management
129
+
130
+ Roster management is done through the CLI:
131
+
132
+ ```bash
133
+ # Interactive roster setup (suggests based on project type)
134
+ paradigm agents roster
135
+
136
+ # Activate specific agents
137
+ paradigm agents activate designer copywriter security devops dba
138
+
139
+ # Deactivate agents
140
+ paradigm agents deactivate gamedev 3d audio streaming
141
+
142
+ # List active agents for this project
143
+ paradigm agents list # Shows only active roster
144
+ paradigm agents list --all # Shows all global + active status
145
+
146
+ # Activate a pod (all agents in the pod)
147
+ paradigm agents activate --pod ship-pod
148
+ ```
149
+
150
+ Activate and deactivate modify the `roster.yaml` file — they never modify global `.agent` files. This is the key architectural decision: the roster is a project-level filter over global agents. Agents are not "installed" or "removed" per project; they are "active" or "inactive" based on whether they appear in the roster.
151
+
152
+ ## Orchestrator Integration
153
+
154
+ The orchestrator's planning phase reads the roster before selecting agents:
155
+
156
+ ```typescript
157
+ function getActiveAgents(rootDir: string): string[] {
158
+ const rosterPath = path.join(rootDir, '.paradigm', 'roster.yaml');
159
+ if (fs.existsSync(rosterPath)) {
160
+ const roster = yaml.load(fs.readFileSync(rosterPath, 'utf8'));
161
+ return roster.active || [];
162
+ }
163
+ // Fallback: all global agents (backward compat)
164
+ return getAllGlobalAgents().map(a => a.id);
165
+ }
166
+ ```
167
+
168
+ The returned list gates which agents are considered during orchestration planning. If the security agent is not in the roster, it will not be included in orchestration plans, will not receive event notifications, and will not self-nominate contributions. It is effectively invisible on this project.
169
+
170
+ ## paradigm shift Integration
171
+
172
+ During `paradigm shift` (first-time project setup), the roster step runs after team initialization:
173
+
174
+ ```
175
+ Step 2b/6: Agent roster setup...
176
+
177
+ Detected project type: SaaS web app (React + Supabase + Vercel)
178
+
179
+ Suggested roster (20 agents):
180
+ Core: architect, builder, reviewer, tester, security, documentor
181
+ Design: designer (Mika), copywriter (Wren), a11y (Aria)
182
+ Data: dba (Vault), performance (Bolt), analyst (Sage)
183
+ Infra: devops (Atlas), seo (Beacon), release (Ship)
184
+ Product: pm (Yuki), product (North)
185
+ Quality: e2e (Ghost), qa (Shield), advocate (Jinx)
186
+
187
+ Accept suggested roster? [Y/n]
188
+
189
+ Roster saved to .paradigm/roster.yaml (20 agents active)
190
+ ```
191
+
192
+ The human can accept the suggestion, modify it, or skip (which creates no roster file, keeping all agents active). On existing projects, running `paradigm shift` again offers to create a roster based on the detected type.
193
+
194
+ ## Why Rosters Are Not Agent Behavior
195
+
196
+ Rosters are a filtering mechanism, not a behavior modifier. An agent's `.agent` file defines who it is (personality, expertise, behaviors, attention). The roster defines whether it is active on this project. If the designer is not in the roster, it does not mean the designer "knows" it is inactive — it simply is not invoked.
197
+
198
+ This separation is important: when you activate the designer on a project, it arrives with its full personality, expertise, notebooks, and transferable patterns intact. Nothing about the agent changed. The roster just opened the door.