@a-company/paradigm 5.37.11 → 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 (362) hide show
  1. package/dist/{accept-orchestration-SBZVK3H4.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/{aggregate-W66DM3GA.js → aggregate-A5S5MTCC.js} +1 -1
  6. package/dist/{ambient-76YMUA5Q.js → ambient-BE3SQXNN.js} +1 -1
  7. package/dist/{ambient-WTLYUAQM.js → ambient-NVKQCW2A.js} +12 -12
  8. package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
  9. package/dist/{beacon-5QVYV5DF.js → beacon-QVUD3MGP.js} +1 -1
  10. package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
  11. package/dist/{chunk-SI6SV76D.js → chunk-3DZK54RU.js} +72 -19
  12. package/dist/{chunk-CHVQNRRT.js → chunk-4PSD5R7N.js} +2 -2
  13. package/dist/chunk-6SKSV5B2.js +24 -0
  14. package/dist/{chunk-KFNHCQ4R.js → chunk-FEYOQMZ5.js} +1 -1
  15. package/dist/{chunk-NEJ4ZLCY.js → chunk-GAFKOFAV.js} +1 -1
  16. package/dist/chunk-GRZQIKST.js +2 -0
  17. package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
  18. package/dist/chunk-LPBCQM5Y.js +6 -0
  19. package/dist/{chunk-T6IDXUUA.js → chunk-LWAIVOSF.js} +1 -1
  20. package/dist/{chunk-74SGKSRQ.js → chunk-M2HKWR25.js} +1 -1
  21. package/dist/{chunk-BOYQAMGC.js → chunk-M3PPXJU4.js} +1 -1
  22. package/dist/chunk-PHEX6LU4.js +111 -0
  23. package/dist/chunk-Q527BPUF.js +2 -0
  24. package/dist/chunk-R5ECMBIV.js +11 -0
  25. package/dist/{chunk-X3U3IGYT.js → chunk-TBWWFRL5.js} +1 -1
  26. package/dist/{chunk-MQIG6SMF.js → chunk-TNVWGPCE.js} +1 -1
  27. package/dist/{chunk-SUU6M4JH.js → chunk-TOYQ2QCB.js} +1 -1
  28. package/dist/chunk-TZDYIPVU.js +521 -0
  29. package/dist/{chunk-3XGNXXCT.js → chunk-UZ5H7K6Q.js} +1 -1
  30. package/dist/chunk-VIG5LSGZ.js +2 -0
  31. package/dist/chunk-VNIX5KBT.js +3 -0
  32. package/dist/{chunk-AGFPVSX5.js → chunk-VXIIVMTM.js} +1 -1
  33. package/dist/{chunk-ORDKEGII.js → chunk-WESTEMIM.js} +1 -1
  34. package/dist/{chunk-LBQBWIEX.js → chunk-Y4P4SGZV.js} +1 -1
  35. package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
  36. package/dist/chunk-Z5QW6USC.js +2 -0
  37. package/dist/chunk-ZJQY5PPP.js +7 -0
  38. package/dist/{commands-LMUD5L6R.js → commands-ANRJNG2W.js} +1 -1
  39. package/dist/compliance-BNFWQPKM.js +6 -0
  40. package/dist/config-schema-FLHRVZMI.js +2 -0
  41. package/dist/{constellation-CG7C4WFE.js → constellation-NWLXYATA.js} +1 -1
  42. package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
  43. package/dist/{cost-IDNVMAEV.js → cost-24UZSS2P.js} +1 -1
  44. package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
  45. package/dist/decision-loader-HELL2AMX.js +2 -0
  46. package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
  47. package/dist/{diff-JVEYCXUC.js → diff-MF55KQZH.js} +1 -1
  48. package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
  49. package/dist/dist-JZZJLVMR.js +2 -0
  50. package/dist/{dist-3ZCH25SG.js → dist-OG6MM4VY.js} +1 -1
  51. package/dist/dist-SE67SOXB.js +2 -0
  52. package/dist/{docs-USDAF26F.js → docs-O37YLLRN.js} +1 -1
  53. package/dist/doctor-IG5XM4C4.js +2 -0
  54. package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
  55. package/dist/{flow-POQP27WA.js → flow-BGXOVE2V.js} +1 -1
  56. package/dist/{hooks-IG2GOAHP.js → hooks-TFMMMB2H.js} +1 -1
  57. package/dist/index.js +6 -6
  58. package/dist/init-M44SO65G.js +2 -0
  59. package/dist/init-V4KSEKPK.js +2 -0
  60. package/dist/{integrity-UYDOOJDP.js → integrity-ROO3G43N.js} +1 -1
  61. package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
  62. package/dist/list-CFHINXIS.js +12 -0
  63. package/dist/lore-loader-D2ISOASW.js +2 -0
  64. package/dist/lore-loader-PXFKMKAN.js +2 -0
  65. package/dist/mcp.js +19 -11
  66. package/dist/metrics-UESGUHTA.js +2 -0
  67. package/dist/{migrate-IBDE7VK4.js → migrate-Z5UQN57G.js} +1 -1
  68. package/dist/migrate-assessments-YSITX7KM.js +4 -0
  69. package/dist/migrate-decisions-NPLQOEEH.js +6 -0
  70. package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
  71. package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-QPZJH6XO.js} +1 -1
  72. package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
  73. package/dist/{orchestrate-RCAMBOIB.js → orchestrate-RID7HHHH.js} +1 -1
  74. package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
  75. package/dist/portal-check-DV2VSJ5E.js +8 -0
  76. package/dist/{portal-compliance-4MG5F2GI.js → portal-compliance-JONQ4SOP.js} +1 -1
  77. package/dist/{probe-B22G2JKF.js → probe-5HAXULAD.js} +1 -1
  78. package/dist/{providers-AWA7WLLM.js → providers-4PXMWA7V.js} +1 -1
  79. package/dist/quiz-WYIZJG5K.js +10 -0
  80. package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
  81. package/dist/reindex-FWPD2VGM.js +2 -0
  82. package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
  83. package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
  84. package/dist/{review-6UAH6V3R.js → review-VMSX2PKI.js} +1 -1
  85. package/dist/{ripple-ZGDITCGB.js → ripple-FNZI47SH.js} +1 -1
  86. package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
  87. package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
  88. package/dist/sentinel.js +1 -1
  89. package/dist/{serve-U47GULB6.js → serve-MO35XIZE.js} +1 -1
  90. package/dist/serve-OQYUO7CR.js +12 -0
  91. package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
  92. package/dist/server-FGUL2FWQ.js +7 -0
  93. package/dist/session-tracker-KGORN6B5.js +2 -0
  94. package/dist/{session-work-log-PAKXOFGL.js → session-work-log-4IEVE4KK.js} +1 -1
  95. package/dist/{session-work-log-ZP45TREI.js → session-work-log-EE4UIZ33.js} +1 -1
  96. package/dist/{setup-3F5IK7MO.js → setup-ZSEC72BS.js} +2 -2
  97. package/dist/{shift-FDADESC4.js → shift-TVNY2CQF.js} +6 -6
  98. package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
  99. package/dist/show-WVHAL4VU.js +7 -0
  100. package/dist/{snapshot-L2G56RPL.js → snapshot-3IYB67D4.js} +1 -1
  101. package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
  102. package/dist/{status-77M3SDIF.js → status-DB3KNLW3.js} +1 -1
  103. package/dist/status-S7Z5FVIE.js +6 -0
  104. package/dist/{summary-LXLHFRN7.js → summary-WLI3NF4G.js} +2 -2
  105. package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
  106. package/dist/sync-55U6QPIA.js +2 -0
  107. package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
  108. package/dist/team-MGT66HZQ.js +2 -0
  109. package/dist/{test-BQJMS4Y2.js → test-WLEPZQFC.js} +1 -1
  110. package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
  111. package/dist/tools-QJHAVYI6.js +2 -0
  112. package/dist/university-content/notes/N-para-001-build-something.md +126 -0
  113. package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
  114. package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
  115. package/dist/university-content/notes/N-para-101-component-types.md +99 -0
  116. package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
  117. package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
  118. package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
  119. package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
  120. package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
  121. package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
  122. package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
  123. package/dist/university-content/notes/N-para-101-welcome.md +51 -0
  124. package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
  125. package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
  126. package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
  127. package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
  128. package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
  129. package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
  130. package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
  131. package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
  132. package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
  133. package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
  134. package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
  135. package/dist/university-content/notes/N-para-301-context-management.md +53 -0
  136. package/dist/university-content/notes/N-para-301-decisions.md +99 -0
  137. package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
  138. package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
  139. package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
  140. package/dist/university-content/notes/N-para-301-history-system.md +42 -0
  141. package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
  142. package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
  143. package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
  144. package/dist/university-content/notes/N-para-301-protocols.md +113 -0
  145. package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
  146. package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
  147. package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
  148. package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
  149. package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
  150. package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
  151. package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
  152. package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
  153. package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
  154. package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
  155. package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
  156. package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
  157. package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
  158. package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
  159. package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
  160. package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
  161. package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
  162. package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
  163. package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
  164. package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
  165. package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
  166. package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
  167. package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
  168. package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
  169. package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
  170. package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
  171. package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
  172. package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
  173. package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
  174. package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
  175. package/dist/university-content/notes/N-para-501-task-management.md +100 -0
  176. package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
  177. package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
  178. package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
  179. package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
  180. package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
  181. package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
  182. package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
  183. package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
  184. package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
  185. package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
  186. package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
  187. package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
  188. package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
  189. package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
  190. package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
  191. package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
  192. package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
  193. package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
  194. package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
  195. package/dist/university-content/paths/LP-para-001.yaml +29 -0
  196. package/dist/university-content/paths/LP-para-101.yaml +59 -0
  197. package/dist/university-content/paths/LP-para-201.yaml +69 -0
  198. package/dist/university-content/paths/LP-para-301.yaml +84 -0
  199. package/dist/university-content/paths/LP-para-401.yaml +74 -0
  200. package/dist/university-content/paths/LP-para-501.yaml +89 -0
  201. package/dist/university-content/paths/LP-para-601.yaml +59 -0
  202. package/dist/university-content/paths/LP-para-701.yaml +64 -0
  203. package/dist/university-content/quizzes/Q-para-001-build-something.yaml +46 -0
  204. package/dist/university-content/quizzes/Q-para-001-meet-the-team.yaml +46 -0
  205. package/dist/university-content/quizzes/Q-para-001-shift-setup.yaml +46 -0
  206. package/dist/university-content/quizzes/Q-para-101-component-types.yaml +46 -0
  207. package/dist/university-content/quizzes/Q-para-101-first-steps.yaml +56 -0
  208. package/dist/university-content/quizzes/Q-para-101-five-symbols.yaml +66 -0
  209. package/dist/university-content/quizzes/Q-para-101-paradigm-logger.yaml +56 -0
  210. package/dist/university-content/quizzes/Q-para-101-portal-yaml.yaml +56 -0
  211. package/dist/university-content/quizzes/Q-para-101-project-structure.yaml +66 -0
  212. package/dist/university-content/quizzes/Q-para-101-purpose-files.yaml +56 -0
  213. package/dist/university-content/quizzes/Q-para-101-tags-and-classification.yaml +56 -0
  214. package/dist/university-content/quizzes/Q-para-101-welcome.yaml +56 -0
  215. package/dist/university-content/quizzes/Q-para-201-architecture-review.yaml +66 -0
  216. package/dist/university-content/quizzes/Q-para-201-aspect-graph.yaml +46 -0
  217. package/dist/university-content/quizzes/Q-para-201-aspects-and-anchors.yaml +56 -0
  218. package/dist/university-content/quizzes/Q-para-201-component-patterns.yaml +56 -0
  219. package/dist/university-content/quizzes/Q-para-201-cross-cutting-concerns.yaml +56 -0
  220. package/dist/university-content/quizzes/Q-para-201-disciplines.yaml +66 -0
  221. package/dist/university-content/quizzes/Q-para-201-flows-deep-dive.yaml +66 -0
  222. package/dist/university-content/quizzes/Q-para-201-gates-deep-dive.yaml +66 -0
  223. package/dist/university-content/quizzes/Q-para-201-portal-protocol.yaml +56 -0
  224. package/dist/university-content/quizzes/Q-para-201-signal-patterns.yaml +56 -0
  225. package/dist/university-content/quizzes/Q-para-201-symbol-naming.yaml +66 -0
  226. package/dist/university-content/quizzes/Q-para-301-context-management.yaml +56 -0
  227. package/dist/university-content/quizzes/Q-para-301-decisions.yaml +76 -0
  228. package/dist/university-content/quizzes/Q-para-301-doctor-and-validation.yaml +66 -0
  229. package/dist/university-content/quizzes/Q-para-301-enforcement-levels.yaml +46 -0
  230. package/dist/university-content/quizzes/Q-para-301-fragility-tracking.yaml +46 -0
  231. package/dist/university-content/quizzes/Q-para-301-history-system.yaml +56 -0
  232. package/dist/university-content/quizzes/Q-para-301-navigation-system.yaml +56 -0
  233. package/dist/university-content/quizzes/Q-para-301-operations-review.yaml +66 -0
  234. package/dist/university-content/quizzes/Q-para-301-paradigm-shift.yaml +46 -0
  235. package/dist/university-content/quizzes/Q-para-301-protocols.yaml +56 -0
  236. package/dist/university-content/quizzes/Q-para-301-ripple-analysis.yaml +56 -0
  237. package/dist/university-content/quizzes/Q-para-301-sentinel-observability.yaml +46 -0
  238. package/dist/university-content/quizzes/Q-para-301-sync-and-maintenance.yaml +46 -0
  239. package/dist/university-content/quizzes/Q-para-301-wisdom-system.yaml +56 -0
  240. package/dist/university-content/quizzes/Q-para-401-agent-identity.yaml +66 -0
  241. package/dist/university-content/quizzes/Q-para-401-agent-interop.yaml +46 -0
  242. package/dist/university-content/quizzes/Q-para-401-agent-roles.yaml +56 -0
  243. package/dist/university-content/quizzes/Q-para-401-commit-conventions.yaml +56 -0
  244. package/dist/university-content/quizzes/Q-para-401-mastery-review.yaml +66 -0
  245. package/dist/university-content/quizzes/Q-para-401-mcp-tools-overview.yaml +66 -0
  246. package/dist/university-content/quizzes/Q-para-401-multi-agent-coordination.yaml +76 -0
  247. package/dist/university-content/quizzes/Q-para-401-notebooks-permissions.yaml +61 -0
  248. package/dist/university-content/quizzes/Q-para-401-orchestration-workflow.yaml +66 -0
  249. package/dist/university-content/quizzes/Q-para-401-pm-governance.yaml +66 -0
  250. package/dist/university-content/quizzes/Q-para-401-provider-cascade.yaml +56 -0
  251. package/dist/university-content/quizzes/Q-para-401-quick-check.yaml +46 -0
  252. package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
  253. package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
  254. package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
  255. package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
  256. package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
  257. package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
  258. package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
  259. package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
  260. package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
  261. package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
  262. package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
  263. package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
  264. package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
  265. package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
  266. package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
  267. package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
  268. package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
  269. package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
  270. package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
  271. package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
  272. package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
  273. package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
  274. package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
  275. package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
  276. package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
  277. package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
  278. package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
  279. package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
  280. package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
  281. package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
  282. package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
  283. package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
  284. package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
  285. package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
  286. package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
  287. package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
  288. package/dist/university-content/reference.json +2 -2
  289. package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
  290. package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
  291. package/dist/university-ui/index.html +1 -1
  292. package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
  293. package/dist/{validate-VZXTJHGO.js → validate-BB6LRWIY.js} +1 -1
  294. package/dist/validate-XUQZTF3H.js +9 -0
  295. package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
  296. package/dist/workspace-VMSPYIBV.js +2 -0
  297. package/lore-ui/dist/assets/{index-Bk-K0qgN.js → index-DKhNxgtW.js} +10 -10
  298. package/lore-ui/dist/index.html +1 -1
  299. package/package.json +3 -2
  300. package/platform-ui/dist/assets/{AmbientSection-BYjt75R1.js → AmbientSection-CwatqcBD.js} +1 -1
  301. package/platform-ui/dist/assets/{CanvasSection-rKvA_vZj.js → CanvasSection-dFAthehN.js} +1 -1
  302. package/platform-ui/dist/assets/{DocsSection-CI9K73M-.js → DocsSection-BZ2SFJBZ.js} +1 -1
  303. package/platform-ui/dist/assets/{GitSection-DSGj_c6S.js → GitSection-MNNYU1tO.js} +1 -1
  304. package/platform-ui/dist/assets/{GraphSection-CawN7pC5.js → GraphSection-COYjb4Pt.js} +1 -1
  305. package/platform-ui/dist/assets/LoreSection-B0hUbfsJ.js +1 -0
  306. package/platform-ui/dist/assets/{SentinelSection-DNgoYMH0.js → SentinelSection-BCxW1DCp.js} +1 -1
  307. package/platform-ui/dist/assets/{SymphonySection-C0zfcqv3.js → SymphonySection-BsucZRqy.js} +1 -1
  308. package/platform-ui/dist/assets/{TeamSection-Bzd3Dt9Q.js → TeamSection-C0QNTudW.js} +1 -1
  309. package/platform-ui/dist/assets/{UniversitySection-tBr62R0S.js → UniversitySection-DN1-g9pw.js} +1 -1
  310. package/platform-ui/dist/assets/{index-BaOmyn11.js → index-DwUT8pju.js} +2 -2
  311. package/platform-ui/dist/index.html +1 -1
  312. package/templates/paradigm/specs/symbols.md +4 -2
  313. package/dist/add-P76GEMGF.js +0 -8
  314. package/dist/chunk-3TR6LLXP.js +0 -111
  315. package/dist/chunk-G7XFK2GI.js +0 -11
  316. package/dist/chunk-J6KWGCHN.js +0 -24
  317. package/dist/chunk-JQKKVAAN.js +0 -2
  318. package/dist/chunk-ODVKPZZ4.js +0 -2
  319. package/dist/chunk-Q2J542ST.js +0 -2
  320. package/dist/chunk-QT2LKB3P.js +0 -7
  321. package/dist/chunk-SHD27BQX.js +0 -6
  322. package/dist/chunk-WS2N27RX.js +0 -3
  323. package/dist/chunk-YT52WLBF.js +0 -521
  324. package/dist/compliance-WJINB5DM.js +0 -6
  325. package/dist/config-schema-GUQY2QN7.js +0 -2
  326. package/dist/decision-loader-2XPZE4EZ.js +0 -2
  327. package/dist/dist-R3RWD35F.js +0 -2
  328. package/dist/dist-VXCZWVVJ.js +0 -2
  329. package/dist/doctor-QJ47XAUP.js +0 -2
  330. package/dist/init-HIBRSVUB.js +0 -2
  331. package/dist/list-5IUGP3ZB.js +0 -7
  332. package/dist/lore-loader-RVQI5GXL.js +0 -2
  333. package/dist/lore-loader-XY5MZRR2.js +0 -2
  334. package/dist/migrate-assessments-GEI5WMI2.js +0 -4
  335. package/dist/portal-check-Z3OCQEQR.js +0 -8
  336. package/dist/quiz-FE5UGAY2.js +0 -10
  337. package/dist/reindex-FO5VMZVQ.js +0 -2
  338. package/dist/serve-OY6XYL7F.js +0 -12
  339. package/dist/server-2MNROHF6.js +0 -7
  340. package/dist/session-tracker-MWJAJA6Z.js +0 -2
  341. package/dist/show-BOAVWZPZ.js +0 -7
  342. package/dist/status-A37ECYNJ.js +0 -6
  343. package/dist/sync-DLUBV5HQ.js +0 -2
  344. package/dist/team-NSP6PMPS.js +0 -2
  345. package/dist/tools-CERDNVCG.js +0 -2
  346. package/dist/university-content/courses/.purpose +0 -492
  347. package/dist/university-content/courses/para-001.json +0 -166
  348. package/dist/university-content/courses/para-101.json +0 -615
  349. package/dist/university-content/courses/para-201.json +0 -794
  350. package/dist/university-content/courses/para-301.json +0 -830
  351. package/dist/university-content/courses/para-401.json +0 -868
  352. package/dist/university-content/courses/para-501.json +0 -1166
  353. package/dist/university-content/courses/para-601.json +0 -719
  354. package/dist/university-content/courses/para-701.json +0 -807
  355. package/dist/university-content/plsat/.purpose +0 -162
  356. package/dist/university-content/plsat/v2.0.json +0 -760
  357. package/dist/university-content/plsat/v3.0.json +0 -3453
  358. package/dist/validate-C6SMKGYD.js +0 -9
  359. package/dist/workspace-MKSQN7B2.js +0 -2
  360. package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
  361. /package/dist/{chunk-BV5PRPLB.js → chunk-IZSBGW6E.js} +0 -0
  362. /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
@@ -0,0 +1,188 @@
1
+ ---
2
+ id: N-para-701-learning-feedback-loop
3
+ title: 'Lesson 9: The Learning Feedback Loop'
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-701
11
+ - session-work-log
12
+ - auto-expertise-adjustment-003
13
+ - teacher-model-runs
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 Full Loop: DO-RECORD-ASSESS-LEARN-ADAPT-DO
24
+
25
+ PARA 601 introduced the six-phase learning loop. In the context of the agent system, this loop operates at the agent level: each agent does work, records its contributions, receives verdicts, learns from the feedback, and adapts its behavior for the next session. The agent system provides the concrete mechanisms that make each phase work.
26
+
27
+ ## Phase 1: DO — Agent Work
28
+
29
+ Agents perform work during orchestration. The builder writes code. The security agent reviews gates. The designer proposes UI patterns. Each contribution is captured in the session work log as an `agent-contribution` entry:
30
+
31
+ ```typescript
32
+ interface SessionWorkEntry {
33
+ timestamp: string;
34
+ type: 'agent-contribution' | 'user-verdict' | 'decision';
35
+ agent?: string;
36
+ contribution?: string;
37
+ attribution?: string;
38
+ symbols?: string[];
39
+ }
40
+ ```
41
+
42
+ The session work log is stored at `.paradigm/events/session-log.jsonl` as append-only JSONL, bounded to 200 entries per session. Unlike breadcrumbs (which are recovery-focused with a 50-entry limit), the session work log captures rich context specifically for the learning pass.
43
+
44
+ ## Phase 2: RECORD — Verdict Capture
45
+
46
+ When a human accepts, dismisses, or revises an agent's contribution, the verdict is recorded:
47
+
48
+ ```typescript
49
+ {
50
+ type: 'user-verdict',
51
+ agent: 'security',
52
+ nominationId: 'nom-2026-03-24-001',
53
+ verdict: 'accepted' | 'dismissed' | 'revised' | 'deferred',
54
+ reason: 'Gate coverage recommendation was accurate',
55
+ symbols: ['^authenticated', '#payment-service'],
56
+ revisionDelta?: '...', // What the human changed (for revised)
57
+ }
58
+ ```
59
+
60
+ Four verdict types capture the full range of human feedback:
61
+
62
+ - **accepted** — The contribution was correct and applied as-is.
63
+ - **dismissed** — The contribution was wrong or irrelevant.
64
+ - **revised** — The contribution was partially correct; the human modified it. The `revisionDelta` captures what changed.
65
+ - **deferred** — The contribution may be valid but is not relevant now.
66
+
67
+ Each verdict is linked to the agent and the symbols involved, enabling per-symbol confidence tracking.
68
+
69
+ ## Phase 3: ASSESS — Auto-Expertise Adjustment
70
+
71
+ When a verdict is recorded, the session work log automatically adjusts the agent's expertise confidence:
72
+
73
+ ```typescript
74
+ const delta = entry.verdict === 'accepted' ? 0.03
75
+ : entry.verdict === 'dismissed' ? -0.02
76
+ : entry.verdict === 'revised' ? -0.01
77
+ : 0; // deferred = no change
78
+ ```
79
+
80
+ This adjustment is asymmetric by design:
81
+
82
+ - **+0.03 for accepted** — Positive reinforcement is slightly stronger than negative. This prevents a single bad review from tanking an otherwise reliable agent.
83
+ - **-0.02 for dismissed** — A dismissed contribution means the agent was wrong. Confidence should decrease, but not catastrophically.
84
+ - **-0.01 for revised** — A revised contribution was partially right. The penalty is smaller because the agent was in the right direction.
85
+ - **0 for deferred** — Deferral says nothing about correctness, only timing. No confidence change.
86
+
87
+ The adjustment is applied per-symbol. If the security agent's gate recommendation for `^authenticated` was accepted, its confidence on `^authenticated` increases by 0.03. Its confidence on unrelated symbols is unchanged.
88
+
89
+ ```typescript
90
+ for (const symbol of entry.symbols!) {
91
+ const exp = profile.expertise!.find(e => e.symbol === symbol);
92
+ if (exp) {
93
+ exp.confidence = Math.max(0, Math.min(1, exp.confidence + delta));
94
+ exp.sessions = (exp.sessions || 0) + 1;
95
+ exp.lastTouch = new Date().toISOString();
96
+ }
97
+ }
98
+ ```
99
+
100
+ Confidence is clamped to `[0.0, 1.0]`. Sessions are incremented. The `lastTouch` timestamp is updated. This all happens as a fire-and-forget side effect of recording the verdict — the human never manually adjusts expertise scores.
101
+
102
+ ## Phase 4: LEARN — Teacher Model and Journal Entries
103
+
104
+ At the end of an orchestration session, the Teacher Model runs a postflight learning pass. It reads the session work log, identifies patterns in the verdicts, and writes journal entries for each agent that participated:
105
+
106
+ ```yaml
107
+ # Learning journal entry written by Teacher Model
108
+ id: LJ-2026-03-24-001
109
+ agent: security
110
+ timestamp: '2026-03-24T16:00:00.000Z'
111
+ trigger: human_feedback
112
+ insight: >-
113
+ Security review of webhook endpoints should check for Stripe
114
+ signature verification, not just gate coverage. The human revised
115
+ the gate recommendation to include webhook-specific checks.
116
+ project: dealoracle
117
+ transferable: true
118
+ confidence_before: 0.85
119
+ confidence_after: 0.84
120
+ pattern:
121
+ id: webhook-stripe-signature
122
+ applies_when: Reviewing webhook endpoints that receive Stripe events
123
+ correct_approach: Check for webhook signature verification in addition to gate coverage
124
+ ```
125
+
126
+ The Teacher Model synthesizes verdict patterns into actionable journal entries. A single "revised" verdict becomes an insight about what the agent should do differently. The `trigger: human_feedback` records that this learning came from a human correction, not self-reflection.
127
+
128
+ ## Phase 5: ADAPT — Journal Promotion to Notebooks
129
+
130
+ Journal entries that prove valuable over time are promoted into notebook entries by Sensei (trainer). The promotion pipeline:
131
+
132
+ ```
133
+ Journal entry (agent-private) → Sensei reviews →
134
+ promoteFromLore() → Notebook entry (reusable snippet) →
135
+ buildProfileEnrichment() → Injected into future prompts
136
+ ```
137
+
138
+ The key distinction: journal entries are raw learnings ("I was wrong about X because Y"). Notebook entries are distilled knowledge ("When doing X, use this pattern"). Sensei's job is to transform the former into the latter.
139
+
140
+ Not every journal entry becomes a notebook entry. Sensei evaluates:
141
+ - Is the insight transferable to other projects?
142
+ - Is it actionable (specific enough to apply)?
143
+ - Has the same insight appeared in multiple sessions (pattern confirmation)?
144
+ - Is the confidence high enough to be reliable?
145
+
146
+ ## Phase 6: The Nomination Engine
147
+
148
+ The nomination engine connects the learning loop to real-time project activity. As events flow through the event stream, each active agent scores them against their attention patterns:
149
+
150
+ ```
151
+ Event (file-modified, gate-added, etc.)
152
+
153
+ scoreEventForAgent(event, agentId, attention)
154
+
155
+ AttentionScore { score, shouldNominate, breakdown }
156
+
157
+ If shouldNominate → Create nomination
158
+
159
+ Nomination surfaced in orchestration or paradigm_ambient_nominations
160
+ ```
161
+
162
+ The nomination engine is the adaptive component: as an agent's attention patterns evolve (new concepts, adjusted thresholds), its nominations change. As its expertise confidence adjusts, its contributions become more or less influential. The system adapts based on empirical performance, not fixed rules.
163
+
164
+ ## The Complete Cycle
165
+
166
+ Putting all six phases together for a single agent:
167
+
168
+ ```
169
+ 1. DO: Security agent reviews webhook endpoint, flags missing gate
170
+ 2. RECORD: Human accepts the gate recommendation → verdict: accepted
171
+ 3. ASSESS: Security confidence on ^authenticated: 0.85 → 0.88 (+0.03)
172
+ 4. LEARN: Teacher Model writes journal entry about webhook gate patterns
173
+ 5. ADAPT: Sensei promotes journal → notebook entry for webhook security
174
+ 6. DO: Next session, security agent starts with webhook pattern in
175
+ its prompt via buildProfileEnrichment(). It applies the pattern
176
+ without needing to rediscover it.
177
+ ```
178
+
179
+ Each iteration through the loop makes the agent incrementally better. After 10 sessions with consistent feedback, the security agent's webhook review pattern is battle-tested, high-confidence, and automatically injected into every relevant orchestration. The human no longer needs to remind the agent about webhook-specific checks — the learning loop closed.
180
+
181
+ ## What Makes This Different
182
+
183
+ Most AI systems have observation without adaptation. They log what happened but do not feed it back. Paradigm's agent system closes the loop through four mechanisms:
184
+
185
+ 1. **Per-symbol expertise tracking** — Confidence adjusts based on verdicts, not manual scoring
186
+ 2. **Asymmetric reinforcement** — +0.03/-0.02/-0.01 prevents a single bad session from destroying confidence
187
+ 3. **Teacher Model postflight** — Journal entries are written automatically, not relying on agents to self-reflect
188
+ 4. **Notebook promotion** — Insights become reusable patterns via Sensei, surfaced through buildProfileEnrichment()
@@ -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.