@a-company/paradigm 5.38.0 → 6.0.4

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 (355) hide show
  1. package/dist/{accept-orchestration-OATWIRHP.js → accept-orchestration-TIXUQQGR.js} +1 -1
  2. package/dist/add-UOR4INIV.js +8 -0
  3. package/dist/agent-MB3H5EZA.js +33 -0
  4. package/dist/{agent-loader-RIVI6QPP.js → agent-loader-VGBPL3TH.js} +1 -1
  5. package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-W3RQJVW7.js} +1 -1
  6. package/dist/{agents-suggest-HYTFMQD3.js → agents-suggest-IKY6VD2R.js} +1 -1
  7. package/dist/{ambient-WTLYUAQM.js → ambient-AI42BOM5.js} +12 -12
  8. package/dist/{ambient-76YMUA5Q.js → ambient-FNNFB4AP.js} +1 -1
  9. package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
  10. package/dist/authority-FA3HLEOA.js +2 -0
  11. package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
  12. package/dist/chunk-23T6UG73.js +605 -0
  13. package/dist/{chunk-4L7665QV.js → chunk-2AU5L333.js} +1 -1
  14. package/dist/{chunk-BOYQAMGC.js → chunk-4N56FRNE.js} +1 -1
  15. package/dist/{chunk-5QOCKWK5.js → chunk-4PSD5R7N.js} +2 -2
  16. package/dist/{chunk-MQIG6SMF.js → chunk-6QXBXZF6.js} +1 -1
  17. package/dist/{chunk-ORDKEGII.js → chunk-AMLD7IYC.js} +1 -1
  18. package/dist/{chunk-3DZK54RU.js → chunk-DBEWOKD6.js} +32 -7
  19. package/dist/{chunk-AGFPVSX5.js → chunk-F6E3HW45.js} +1 -1
  20. package/dist/{chunk-X3U3IGYT.js → chunk-GD4F2HC6.js} +2 -2
  21. package/dist/chunk-GRZQIKST.js +2 -0
  22. package/dist/{chunk-HOBHJPTL.js → chunk-IOVHF4SR.js} +1 -1
  23. package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
  24. package/dist/{chunk-74SGKSRQ.js → chunk-KAFQA7HV.js} +2 -2
  25. package/dist/{chunk-NEJ4ZLCY.js → chunk-LAYBUKMB.js} +1 -1
  26. package/dist/{chunk-4VKSEOXZ.js → chunk-LPBCQM5Y.js} +3 -3
  27. package/dist/chunk-Q527BPUF.js +2 -0
  28. package/dist/{chunk-AO7ZSRME.js → chunk-TQOT2LBO.js} +2 -2
  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-WXF5VFB4.js +111 -0
  33. package/dist/chunk-XQLO5URP.js +11 -0
  34. package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
  35. package/dist/chunk-Z5QW6USC.js +2 -0
  36. package/dist/{compliance-D7GD6ZYC.js → compliance-J3VOV445.js} +1 -1
  37. package/dist/config-schema-FLHRVZMI.js +2 -0
  38. package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
  39. package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
  40. package/dist/decision-loader-HELL2AMX.js +2 -0
  41. package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
  42. package/dist/{diff-YGHBIJY5.js → diff-75MABOSL.js} +1 -1
  43. package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
  44. package/dist/{docs-USDAF26F.js → docs-TSAAS4W3.js} +1 -1
  45. package/dist/doctor-L5XZENCF.js +2 -0
  46. package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
  47. package/dist/{flow-FVZR3YJ4.js → flow-BGXOVE2V.js} +1 -1
  48. package/dist/{hooks-TFMMMB2H.js → hooks-KUEE5KMM.js} +1 -1
  49. package/dist/index.js +6 -6
  50. package/dist/init-M44SO65G.js +2 -0
  51. package/dist/{init-XYB62Q3X.js → init-V4KSEKPK.js} +1 -1
  52. package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
  53. package/dist/list-CFHINXIS.js +12 -0
  54. package/dist/lore-loader-D2ISOASW.js +2 -0
  55. package/dist/lore-loader-PXFKMKAN.js +2 -0
  56. package/dist/mcp.js +4 -4
  57. package/dist/metrics-UESGUHTA.js +2 -0
  58. package/dist/{migrate-Z5UQN57G.js → migrate-ZPNYDNM4.js} +1 -1
  59. package/dist/migrate-assessments-YSITX7KM.js +4 -0
  60. package/dist/migrate-decisions-NPLQOEEH.js +6 -0
  61. package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
  62. package/dist/migration-notices-BHLEYC4T.js +4 -0
  63. package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-NCLTGMAK.js} +1 -1
  64. package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
  65. package/dist/{orchestrate-M5PBZBJQ.js → orchestrate-K4KBTBYK.js} +1 -1
  66. package/dist/{platform-server-DNAMH4YI.js → platform-server-ANOALDPL.js} +1 -1
  67. package/dist/{portal-check-ZMLVBIGW.js → portal-check-DV2VSJ5E.js} +1 -1
  68. package/dist/portal-compliance-JONQ4SOP.js +2 -0
  69. package/dist/{probe-3FTG6LYO.js → probe-5HAXULAD.js} +1 -1
  70. package/dist/{providers-AWA7WLLM.js → providers-TBPOE4DI.js} +1 -1
  71. package/dist/quiz-WYIZJG5K.js +10 -0
  72. package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
  73. package/dist/registry-OUTA3DXW.js +20 -0
  74. package/dist/reindex-IZCD2JGD.js +2 -0
  75. package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
  76. package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
  77. package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
  78. package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
  79. package/dist/{serve-U47GULB6.js → serve-3FMUWW5K.js} +1 -1
  80. package/dist/serve-OQYUO7CR.js +12 -0
  81. package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
  82. package/dist/server-FGUL2FWQ.js +7 -0
  83. package/dist/session-tracker-HHNY6J4I.js +2 -0
  84. package/dist/{session-work-log-ZP45TREI.js → session-work-log-MEJ33TYD.js} +1 -1
  85. package/dist/{session-work-log-PAKXOFGL.js → session-work-log-ZVVJGO7X.js} +1 -1
  86. package/dist/{setup-FEWSYS3Y.js → setup-ZSEC72BS.js} +1 -1
  87. package/dist/shift-WGMZGWOC.js +60 -0
  88. package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
  89. package/dist/show-WVHAL4VU.js +7 -0
  90. package/dist/{spawn-M5BAV252.js → spawn-KKDDR6UR.js} +1 -1
  91. package/dist/status-S7Z5FVIE.js +6 -0
  92. package/dist/{summary-PYTEIJ4U.js → summary-WLI3NF4G.js} +2 -2
  93. package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
  94. package/dist/sync-55U6QPIA.js +2 -0
  95. package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
  96. package/dist/{team-PDK64JXI.js → team-2LGZQRP4.js} +1 -1
  97. package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
  98. package/dist/tools-4RRFTU5H.js +2 -0
  99. package/dist/university-content/notes/N-para-001-build-something.md +126 -0
  100. package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
  101. package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
  102. package/dist/university-content/notes/N-para-101-component-types.md +99 -0
  103. package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
  104. package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
  105. package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
  106. package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
  107. package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
  108. package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
  109. package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
  110. package/dist/university-content/notes/N-para-101-welcome.md +51 -0
  111. package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
  112. package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
  113. package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
  114. package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
  115. package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
  116. package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
  117. package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
  118. package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
  119. package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
  120. package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
  121. package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
  122. package/dist/university-content/notes/N-para-301-context-management.md +53 -0
  123. package/dist/university-content/notes/N-para-301-decisions.md +99 -0
  124. package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
  125. package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
  126. package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
  127. package/dist/university-content/notes/N-para-301-history-system.md +42 -0
  128. package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
  129. package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
  130. package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
  131. package/dist/university-content/notes/N-para-301-protocols.md +113 -0
  132. package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
  133. package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
  134. package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
  135. package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
  136. package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
  137. package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
  138. package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
  139. package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
  140. package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
  141. package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
  142. package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
  143. package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
  144. package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
  145. package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
  146. package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
  147. package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
  148. package/dist/university-content/notes/N-para-451-agent-routing.md +117 -0
  149. package/dist/university-content/notes/N-para-451-archetypes-vs-instances.md +82 -0
  150. package/dist/university-content/notes/N-para-451-identity-layers.md +76 -0
  151. package/dist/university-content/notes/N-para-451-orchestration-modes.md +85 -0
  152. package/dist/university-content/notes/N-para-451-paradigm-shift.md +95 -0
  153. package/dist/university-content/notes/N-para-451-partners-primitive.md +107 -0
  154. package/dist/university-content/notes/N-para-451-roster-management.md +132 -0
  155. package/dist/university-content/notes/N-para-451-roster-reference.md +106 -0
  156. package/dist/university-content/notes/N-para-451-the-team-pattern.md +87 -0
  157. package/dist/university-content/notes/N-para-451-tiers.md +81 -0
  158. package/dist/university-content/notes/N-para-451-welcome.md +55 -0
  159. package/dist/university-content/notes/N-para-451-what-is-an-agent.md +73 -0
  160. package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
  161. package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
  162. package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
  163. package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
  164. package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
  165. package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
  166. package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
  167. package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
  168. package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
  169. package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
  170. package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
  171. package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
  172. package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
  173. package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
  174. package/dist/university-content/notes/N-para-501-task-management.md +100 -0
  175. package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
  176. package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
  177. package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
  178. package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
  179. package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
  180. package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
  181. package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
  182. package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
  183. package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
  184. package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
  185. package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
  186. package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
  187. package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
  188. package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
  189. package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
  190. package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
  191. package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
  192. package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
  193. package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
  194. package/dist/university-content/paths/LP-para-001.yaml +29 -0
  195. package/dist/university-content/paths/LP-para-101.yaml +59 -0
  196. package/dist/university-content/paths/LP-para-201.yaml +69 -0
  197. package/dist/university-content/paths/LP-para-301.yaml +84 -0
  198. package/dist/university-content/paths/LP-para-401.yaml +74 -0
  199. package/dist/university-content/paths/LP-para-451.yaml +69 -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-451-foundations.yaml +154 -0
  253. package/dist/university-content/quizzes/Q-para-451-when-to-invoke.yaml +182 -0
  254. package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
  255. package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
  256. package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
  257. package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
  258. package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
  259. package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
  260. package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
  261. package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
  262. package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
  263. package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
  264. package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
  265. package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
  266. package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
  267. package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
  268. package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
  269. package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
  270. package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
  271. package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
  272. package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
  273. package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
  274. package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
  275. package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
  276. package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
  277. package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
  278. package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
  279. package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
  280. package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
  281. package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
  282. package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
  283. package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
  284. package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
  285. package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
  286. package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
  287. package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
  288. package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
  289. package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
  290. package/dist/university-content/reference.json +2 -2
  291. package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
  292. package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
  293. package/dist/university-ui/index.html +1 -1
  294. package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
  295. package/dist/validate-XUQZTF3H.js +9 -0
  296. package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
  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 +2 -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/dist/add-P76GEMGF.js +0 -8
  313. package/dist/agent-X6I2YWOB.js +0 -33
  314. package/dist/chunk-JQKKVAAN.js +0 -2
  315. package/dist/chunk-NQ47TA6C.js +0 -111
  316. package/dist/chunk-ODVKPZZ4.js +0 -2
  317. package/dist/chunk-Q2J542ST.js +0 -2
  318. package/dist/chunk-RBLK34IA.js +0 -11
  319. package/dist/chunk-RN4VE6P3.js +0 -521
  320. package/dist/chunk-WS2N27RX.js +0 -3
  321. package/dist/config-schema-GUQY2QN7.js +0 -2
  322. package/dist/decision-loader-2XPZE4EZ.js +0 -2
  323. package/dist/doctor-WMVULMQD.js +0 -2
  324. package/dist/list-5IUGP3ZB.js +0 -7
  325. package/dist/lore-loader-RVQI5GXL.js +0 -2
  326. package/dist/lore-loader-XY5MZRR2.js +0 -2
  327. package/dist/migrate-assessments-GEI5WMI2.js +0 -4
  328. package/dist/portal-compliance-6YR27IQU.js +0 -2
  329. package/dist/quiz-FE5UGAY2.js +0 -10
  330. package/dist/registry-KOOKFUWD.js +0 -20
  331. package/dist/reindex-I6LPAKCC.js +0 -2
  332. package/dist/serve-OY6XYL7F.js +0 -12
  333. package/dist/server-2MNROHF6.js +0 -7
  334. package/dist/session-tracker-MWJAJA6Z.js +0 -2
  335. package/dist/shift-PC6C7NUX.js +0 -60
  336. package/dist/show-BOAVWZPZ.js +0 -7
  337. package/dist/status-A37ECYNJ.js +0 -6
  338. package/dist/sync-DLUBV5HQ.js +0 -2
  339. package/dist/tools-5ITPEPSV.js +0 -2
  340. package/dist/university-content/courses/.purpose +0 -492
  341. package/dist/university-content/courses/para-001.json +0 -166
  342. package/dist/university-content/courses/para-101.json +0 -615
  343. package/dist/university-content/courses/para-201.json +0 -794
  344. package/dist/university-content/courses/para-301.json +0 -830
  345. package/dist/university-content/courses/para-401.json +0 -868
  346. package/dist/university-content/courses/para-501.json +0 -1166
  347. package/dist/university-content/courses/para-601.json +0 -719
  348. package/dist/university-content/courses/para-701.json +0 -807
  349. package/dist/university-content/plsat/.purpose +0 -162
  350. package/dist/university-content/plsat/v2.0.json +0 -760
  351. package/dist/university-content/plsat/v3.0.json +0 -3453
  352. package/dist/validate-C6SMKGYD.js +0 -9
  353. package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
  354. /package/dist/{chunk-BV5PRPLB.js → chunk-HXGYVS2N.js} +0 -0
  355. /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
@@ -0,0 +1,119 @@
1
+ ---
2
+ id: N-para-501-symphony-networking
3
+ title: 'Symphony Networking: Cross-Machine Relay'
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-501
11
+ - hub-and-spoke-topology-one
12
+ - websocket-relay-watches
13
+ - pairing-6-digit-code
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 4
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-501.json
21
+ ---
22
+
23
+ ## Beyond Single-Machine Messaging
24
+
25
+ Symphony Phase 0 (A-Mail) established file-based agent-to-agent messaging on a single machine — JSONL mailboxes at `~/.paradigm/score/`, polled via `/loop`. But what happens when two developers on the same WiFi, or at different locations, want their Claude instances to collaborate?
26
+
27
+ Symphony Phase 1 adds cross-machine networking via a WebSocket relay. The key design principle: **the local mailbox model is unchanged**. Networking is a transparent sync layer that watches local outboxes and delivers remote messages to local inboxes.
28
+
29
+ ## Hub-and-Spoke Topology
30
+
31
+ One machine runs `paradigm symphony serve` (the **hub**), and others connect with `paradigm symphony join --remote` (the **spokes**). The hub relays messages between all connected machines.
32
+
33
+ ```
34
+ Machine A (Hub) Machine B (Spoke)
35
+ ┌─────────────────────┐ ┌─────────────────────┐
36
+ │ ~/.paradigm/score/ │ │ ~/.paradigm/score/ │
37
+ │ agents/projA/core │ │ agents/projB/core │
38
+ │ inbox.jsonl │◄────ws───►│ inbox.jsonl │
39
+ │ outbox.jsonl │ :3939 │ outbox.jsonl │
40
+ └─────────────────────┘ └─────────────────────┘
41
+ ```
42
+
43
+ The relay watches each local agent's outbox file (polling every 2 seconds via `fs.stat`). When new messages appear, they're pushed to all connected peers as WebSocket frames. Incoming messages from peers are written to the appropriate local inbox via `appendToInbox()`.
44
+
45
+ ## Pairing & Authentication
46
+
47
+ Security is critical when connecting machines over a network. Symphony uses a pairing code + HMAC challenge-response protocol:
48
+
49
+ 1. The hub generates a 32-byte random secret and derives a **6-digit pairing code**
50
+ 2. The code is displayed on the hub's terminal
51
+ 3. The spoke connects and receives a `hello` frame with a random challenge nonce
52
+ 4. The user enters the code on the spoke terminal (or embeds it in the connection string)
53
+ 5. The spoke computes `HMAC-SHA256(challenge, SHA256(code))` and sends an `auth` frame
54
+ 6. The hub verifies the code and HMAC proof, then sends `auth_ok` with its agent list
55
+
56
+ Pairing codes rotate every 5 minutes. After 3 failed attempts from the same IP, a 60-second cooldown is enforced. Peer records are saved to `~/.paradigm/score/peers.json` (file mode 0600) for auto-reconnect.
57
+
58
+ ## Two Connection Modes
59
+
60
+ ### LAN Pairing (same WiFi)
61
+
62
+ ```sh
63
+ # Machine A (hub)
64
+ paradigm symphony serve
65
+ # Shows: Pairing Code: 847 291
66
+
67
+ # Machine B (spoke)
68
+ paradigm symphony join --remote 192.168.1.42:3939
69
+ # Prompted for code
70
+ ```
71
+
72
+ ### Internet Direct Connect
73
+
74
+ ```sh
75
+ # Machine A
76
+ paradigm symphony serve --public
77
+ # Shows connection string
78
+
79
+ # Machine B
80
+ paradigm symphony join --remote 73.162.44.103:3939#847291
81
+ # Code embedded — no prompt
82
+ ```
83
+
84
+ Internet mode requires port 3939 to be reachable (port forward, VPN, or SSH tunnel).
85
+
86
+ ## Trust Management
87
+
88
+ Peers are managed via CLI commands:
89
+
90
+ - `paradigm symphony peers` — List trusted peers with agent counts and last-seen times
91
+ - `paradigm symphony peers revoke <id>` — Immediately disconnect and block reconnection
92
+ - `paradigm symphony peers forget --force` — Clear all peer trust records
93
+
94
+ Existing `trust.yaml` hard-deny patterns (`.env*`, `*.key`, `*.pem`) apply to remote file requests — the trust boundary extends across the network.
95
+
96
+ ## Relay Internals
97
+
98
+ The `SymphonyRelay` class handles both server and client modes:
99
+
100
+ - **Outbox watcher**: Polls every 2s, compares outbox line counts against stored positions, forwards new messages
101
+ - **Deduplication**: Bounded `Set<string>` of message IDs (max 10,000) prevents duplicate delivery
102
+ - **Keepalive**: Ping/pong every 30s with 10s pong timeout. Dead connections are auto-terminated
103
+ - **Auto-reconnect**: Client mode uses exponential backoff (1s → 2s → 4s → ... → 30s max)
104
+ - **Rate limiting**: 3 failed auth attempts from the same IP triggers a 60s cooldown
105
+
106
+ ## Remote Agent Visibility
107
+
108
+ Remote agents appear throughout the Symphony CLI and MCP tools:
109
+
110
+ - `paradigm symphony list` shows remote agents with a `(remote: peer-name)` tag
111
+ - `paradigm symphony status` includes peer count and remote agent totals
112
+ - `paradigm_symphony_status` MCP tool returns a `peers` array in its response
113
+ - Platform UI `GET /api/symphony/peers` endpoint returns connected peer data
114
+
115
+ Local MCP tools (`peek`, `poll`, `send`) work unchanged — they just read/write local files. The relay handles the network transport transparently.
116
+
117
+ ## Backward Compatibility
118
+
119
+ If `paradigm symphony serve` is never run, Symphony operates exactly as Phase 0: local-only file-based messaging. Networking is purely additive — no existing workflows change.
@@ -0,0 +1,100 @@
1
+ ---
2
+ id: N-para-501-task-management
3
+ title: Task Management
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-501
11
+ - tasks-are-persistent
12
+ - auto-generated-ids-t-date-sequence
13
+ - three-priority-levels
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 4
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-501.json
21
+ ---
22
+
23
+ ## Why Tasks Exist
24
+
25
+ AI agent sessions are stateless. You can discuss a plan, identify five things that need doing, and then the session ends. The next session starts blank — those five items are gone. Sticky notes on a monitor do not help when your developer is a language model.
26
+
27
+ Paradigm's Task Management system provides a persistent scratch pad that survives context windows. Tasks are lightweight, date-partitioned YAML entries that capture what needs doing, how urgent it is, and what project knowledge relates to it. They are not a full project management system — they are the missing short-term memory between sessions.
28
+
29
+ The key difference from lore: lore records what happened (past tense). Tasks record what should happen (future tense). Together they form a complete timeline — memory of the past and intention for the future.
30
+
31
+ ## Anatomy of a Task
32
+
33
+ Every task follows a consistent structure:
34
+
35
+ ```yaml
36
+ id: T-2026-02-26-001
37
+ blurb: "Add rate limiting to the /api/payments endpoint"
38
+ priority: high
39
+ status: open
40
+ tags: [security, payments]
41
+ related_lore: [L-2026-02-25-003]
42
+ created: "2026-02-26T10:15:00Z"
43
+ updated: "2026-02-26T10:15:00Z"
44
+ ```
45
+
46
+ The `id` field is auto-generated: `T-{date}-{sequence}`, following the same date-partitioned pattern as lore entries. The `blurb` is the only required field — a concise description of what needs to be done. Everything else is optional but useful.
47
+
48
+ Three priority levels exist: `high` (do this soon), `medium` (do this eventually), and `low` (nice to have). Tasks without an explicit priority default to `medium`.
49
+
50
+ Three statuses track lifecycle: `open` (needs doing), `done` (completed), and `shelved` (parked for later — not abandoned, just deferred).
51
+
52
+ ## Storage: Date-Partitioned YAML
53
+
54
+ Tasks live in `.paradigm/tasks/entries/` organized by creation date:
55
+
56
+ ```
57
+ .paradigm/tasks/
58
+ entries/
59
+ 2026-02-25/
60
+ T-2026-02-25-001.yaml
61
+ T-2026-02-25-002.yaml
62
+ 2026-02-26/
63
+ T-2026-02-26-001.yaml
64
+ ```
65
+
66
+ Date partitioning keeps directories small. Each task is a standalone YAML file, making them easy to read, edit, and version-control. The date in the path matches the date in the task ID.
67
+
68
+ ## The Five MCP Tools
69
+
70
+ **`paradigm_task_create`** — Create a new task. The `blurb` field is required — a short description of what needs to be done. Optional fields include `priority` (high/medium/low), `tags` (for categorization and filtering), and `related_lore` (linking to lore entries that provide context). The task is written to the correct date directory with an auto-incremented ID and starts with status `open`.
71
+
72
+ **`paradigm_task_list`** — List tasks with filters. Filter by `status` (open/done/shelved/all), `priority` (high/medium/low), or `tag`. Results are sorted by priority (high first) then by date (newest first). Without filters, it returns all open tasks.
73
+
74
+ **`paradigm_task_update`** — Update any field on an existing task by ID. You can change the blurb, priority, status, tags, or related_lore. Only specified fields are modified — everything else is preserved.
75
+
76
+ **`paradigm_task_done`** — Shorthand to mark a task as complete. Pass the task ID and the status changes to `done` with an updated timestamp. This is equivalent to `paradigm_task_update` with `status: done` but more ergonomic for the common case.
77
+
78
+ **`paradigm_task_shelve`** — Shorthand to shelve a task for later. Pass the task ID and the status changes to `shelved`. Shelved tasks are not deleted — they remain searchable and can be reopened by updating their status back to `open`.
79
+
80
+ ## Session Recovery Integration
81
+
82
+ The top 5 open tasks are automatically surfaced during session recovery. When a new session starts and the agent calls any Paradigm MCP tool, the recovery data includes the highest-priority open tasks alongside the usual breadcrumbs and checkpoint data.
83
+
84
+ This means every session begins with awareness of outstanding work. The agent does not need to ask "what should I work on?" — the task list is already there, sorted by priority. This is the scratch-pad-that-survives pattern: write tasks in one session, see them in the next.
85
+
86
+ ## When to Create Tasks
87
+
88
+ Create tasks when:
89
+ - You identify work that cannot be completed in the current session
90
+ - A code review surfaces follow-up items
91
+ - You discover a bug or improvement while working on something else
92
+ - The user mentions something that should be tracked but is not the current focus
93
+ - A handoff needs to communicate specific next steps
94
+
95
+ Do not use tasks for:
96
+ - Tracking completed work (that is what lore is for)
97
+ - Long-term roadmap items (use your project management tool)
98
+ - Architectural decisions (use lore entries with type `decision`)
99
+
100
+ Tasks are ephemeral intentions — they should be created quickly, completed or shelved promptly, and never allowed to accumulate into a backlog of hundreds. If your task list grows beyond 20-30 open items, it is time to triage: shelve the low-priority items and focus on what matters.
@@ -0,0 +1,121 @@
1
+ ---
2
+ id: N-para-601-agent-renaissance
3
+ title: Agent Manifest Renaissance
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-601
11
+ - six-new-dimensions
12
+ - intrinsic-learning-optional
13
+ - five-collaboration-stances
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 5
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-601.json
21
+ ---
22
+
23
+ ## Six New Dimensions
24
+
25
+ Before v5.0, an agent profile (`AgentProfile`) had six core fields: `id`, `role`, `description`, `personality`, `expertise`, and `transferable` patterns. These covered identity and knowledge but said nothing about how agents observe, learn, contribute context, report work, collaborate, or decide when to speak up.
26
+
27
+ v5.0 adds six new dimensions to the agent manifest, transforming it from a static identity card into a living behavioral specification:
28
+
29
+ 1. **Attention** (`AgentAttention`) — What this agent notices in the event stream
30
+ 2. **Learning** (`AgentLearning`) — How this agent improves over time
31
+ 3. **Context** (`AgentContext`) — What this agent contributes to shared context
32
+ 4. **Reporting** (`AgentReporting`) — How this agent logs work and learnings
33
+ 5. **Collaboration** (`AgentCollaboration`) — How this agent interacts with others
34
+ 6. **Nomination** (`AgentNomination`) — When this agent speaks up in ambient mode
35
+
36
+ All six are optional on the `AgentProfile` interface for backward compatibility. Agents without these fields use sensible defaults or are treated as non-ambient (they do not participate in the observation-nomination loop).
37
+
38
+ ## Attention (AgentAttention)
39
+
40
+ Covered in detail in the Attention & Scoring lesson. The attention dimension defines what the agent watches for: symbol patterns, file paths, semantic concepts, and signal types. The threshold determines sensitivity.
41
+
42
+ Default configs exist for five standard roles via `DEFAULT_ATTENTION`. For example, the security agent defaults to watching all gate symbols (`^*`), auth-related components and paths, security concepts, and gate/route signals with a low threshold of 0.4.
43
+
44
+ ## Learning (AgentLearning)
45
+
46
+ The learning dimension has two layers:
47
+
48
+ **Intrinsic Learning** (`IntrinsicLearning`) — The agent's own drive to improve. This is optional for downloaded agents (they may or may not want to learn from user feedback). Four sub-sections:
49
+
50
+ - **feedback** — When to ask for assessment: after work, after recommendations, from which agents, from humans. A security agent might configure `from_agents: ['architect', 'reviewer']` to weight peer feedback.
51
+ - **adaptation** — How to adjust: `confidence_ema_alpha` (default 0.3) controls how quickly confidence scores move. `notebook_auto_promote` auto-promotes high-value journal entries. `pattern_extraction` extracts reusable patterns from learnings.
52
+ - **reflection** — When to self-reflect: on failure, on correction, on debate loss. Each trigger records a journal entry with the relevant trigger type.
53
+ - **calibration** — Accuracy targets: `target_accuracy` (default 0.85) is the goal. `overconfidence_alert` (default 0.15) triggers when estimated confidence exceeds actual accuracy by more than 15 points.
54
+
55
+ **Platform Learning** (`PlatformLearning`) — Mandated for all marketplace agents. `feedback_required: true` is always set. Collects `work_outcome`, `helpfulness`, and `would_use_again` metrics. Feedback flows upstream anonymized. Aggregation is configurable per-offering, per-session, or per-project.
56
+
57
+ ## Context (AgentContext)
58
+
59
+ The context dimension defines what the agent contributes to the composed context and what it requires to be loaded.
60
+
61
+ **Contributions** — An array of `ContextContribution` items. Each specifies a `section` name (e.g., "Security Warnings"), inline `content` or a `content_ref` MCP resource URI, and a `priority` (high, medium, low). High-priority contributions are always included in composed context. Medium-priority contributions are included if token budget allows. Low-priority contributions are loaded on demand.
62
+
63
+ **Requirements** — An array of `ContextRequirement` items specifying files or sections the agent needs loaded before it can work effectively. A security agent might require `portal.yaml` and the "gates" section of CLAUDE.md.
64
+
65
+ ## Reporting (AgentReporting)
66
+
67
+ The reporting dimension controls how the agent captures its work and learnings in the knowledge streams.
68
+
69
+ **Work Log Config** (`WorkLogConfig`):
70
+ - `auto_record` — Automatically create work log entries when work completes
71
+ - `structure` — Which structured fields to include: `task_ref`, `files_modified`, `symbols_touched`, `next_steps`, `blockers`
72
+ - `destination` — Always `'work-log'`
73
+
74
+ **Learning Journal Config** (`LearningJournalConfig`):
75
+ - `auto_record` — Automatically record learning moments
76
+ - `triggers` — Which events trigger journal entries: `correction_received`, `confidence_miss`, `pattern_discovered`
77
+ - `destination` — Always `'journal'` (agent-private)
78
+
79
+ ## Collaboration (AgentCollaboration)
80
+
81
+ The collaboration dimension defines how the agent interacts with others in multi-agent contexts.
82
+
83
+ **Default Stance** (`CollaborationStance`) — One of five stances:
84
+ - `lead` — Drives decisions, sets direction (architect default)
85
+ - `advisory` — Offers guidance but does not drive (reviewer, security defaults)
86
+ - `supportive` — Follows direction, executes (builder default)
87
+ - `observer` — Watches but rarely acts
88
+ - `peer` — Equal footing with no hierarchy
89
+
90
+ **Per-Agent Relationships** — The `with` record allows overriding stance per agent. A builder might be `supportive` by default but `peer` with another builder.
91
+
92
+ **Debate Config** — Controls debate behavior: `will_challenge` (will push back), `evidence_required` (must cite specific code/patterns), `escalate_to_human` (ask human if debate does not resolve).
93
+
94
+ Default configs exist via `DEFAULT_COLLABORATION`. The architect defaults to `lead` stance with evidence-based challenging and human escalation. The builder defaults to `supportive` with `can_contradict: false` toward the architect.
95
+
96
+ ## Nomination (AgentNomination)
97
+
98
+ The nomination dimension defines behavioral rules for self-nomination beyond the threshold check.
99
+
100
+ **speak_when** — Conditions for speaking up:
101
+ - `relevance_above` — Score threshold (default 0.6, mirrors attention threshold)
102
+ - `urgency` — Always speak for specific urgency types: `security_risk`, `breaking_change`, `gate_missing`, `test_failure`, `performance_risk`
103
+ - `asked_directly` — Always respond to direct questions (default: true)
104
+
105
+ **quiet_when** — Conditions for staying silent:
106
+ - `relevance_below` — Hard floor below which the agent never speaks
107
+ - `another_agent_handling` — Stay quiet if another agent is already addressing this
108
+ - `human_explicitly_excluded` — Respect human's explicit exclusion
109
+
110
+ **contribution_style** — How the agent communicates:
111
+ - `brief_first` — Start with a short summary, elaborate if asked
112
+ - `cite_sources` — Reference specific code and patterns
113
+ - `offer_action` — Offer concrete actions rather than just observations
114
+
115
+ ## buildProfileEnrichment
116
+
117
+ The `buildProfileEnrichment` function composes all six dimensions into a prompt enrichment string for orchestration. It takes the agent profile, relevant symbols, optional notebook entries, and optional ambient context (recent decisions, journal insights, pending nominations).
118
+
119
+ The output is structured markdown with sections for: Agent Identity, Expertise on Relevant Symbols, Transferable Patterns, Relevant Notebook Entries, Attention patterns, Collaboration stance, Nomination preferences, Recent Team Decisions, Transferable Insights, and Pending Nominations.
120
+
121
+ This enrichment is injected into the agent's prompt during orchestration, giving it full awareness of its identity, capabilities, behavioral rules, and ambient context — all derived from the `.agent` file and the knowledge streams.
@@ -0,0 +1,129 @@
1
+ ---
2
+ id: N-para-601-attention-scoring
3
+ title: Attention & Scoring
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-601
11
+ - agentattention-has-four
12
+ - four-scoring-dimensions
13
+ - score-is-max-based
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 5
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-601.json
21
+ ---
22
+
23
+ ## AgentAttention Patterns
24
+
25
+ Every agent in the ambient system has an attention configuration — a set of patterns that define what the agent notices. Think of it as a personalized filter: events that match the agent's attention patterns are potentially relevant; events that do not match are noise.
26
+
27
+ The `AgentAttention` interface has five fields:
28
+
29
+ ```typescript
30
+ interface AgentAttention {
31
+ symbols?: string[]; // Symbol patterns (e.g., ["^*", "#*-middleware"])
32
+ paths?: string[]; // File path patterns (e.g., ["auth/**", "middleware/**"])
33
+ concepts?: string[]; // Semantic triggers (e.g., ["JWT", "RBAC", "injection"])
34
+ signals?: AttentionSignal[]; // Event type triggers (e.g., [{ type: "gate-added" }])
35
+ threshold?: number; // Confidence threshold (default 0.6)
36
+ }
37
+ ```
38
+
39
+ **Symbols** use glob patterns to match against the `symbols` array on events. A security agent watching `["^*", "#*-auth", "#*-middleware"]` will match any gate symbol and any component whose name ends in `-auth` or `-middleware`.
40
+
41
+ **Paths** use glob patterns to match against the `path` field on events. A builder watching `["src/**", "lib/**", "packages/**"]` matches any source file change.
42
+
43
+ **Concepts** are semantic keywords matched against the event's `context`, `keywords`, and `type` fields (all lowercased). A tester watching `["test", "coverage", "assertion"]` will match events mentioning those terms.
44
+
45
+ **Signals** match against the event's `type` field. A security agent with `signals: [{ type: 'gate-added' }, { type: 'route-created' }]` will match whenever a new gate or route appears in the stream.
46
+
47
+ ## Four Scoring Dimensions
48
+
49
+ When an event enters the stream, each agent scores it against their attention patterns across four dimensions:
50
+
51
+ **symbolMatch (0.0-1.0):** For each pattern in the agent's `symbols` array, check if any symbol in the event matches (using glob). If any match is found, `symbolMatch = 1.0`. If no agent symbols are defined or no event symbols exist, `symbolMatch = 0.0`.
52
+
53
+ **pathMatch (0.0-1.0):** For each pattern in the agent's `paths` array, check if the event's `path` matches. If any match is found, `pathMatch = 1.0`. Binary: either a path matches or it does not.
54
+
55
+ **conceptMatch (0.0-1.0):** The event's `context`, `keywords`, and `type` are joined into a lowercased text. Each concept in the agent's `concepts` array is checked for inclusion. The score is `matched / total_concepts`. If the agent watches 5 concepts and 3 appear in the event text, `conceptMatch = 0.6`.
56
+
57
+ **signalMatch (0.0-1.0):** For each signal in the agent's `signals` array, check if the event's `type` matches. If any match, `signalMatch = 1.0`. Binary.
58
+
59
+ ## Max-Based Score
60
+
61
+ The overall score is the **maximum** of the four dimensions:
62
+
63
+ ```typescript
64
+ const score = Math.max(symbolMatch, pathMatch, conceptMatch, signalMatch);
65
+ ```
66
+
67
+ This is a deliberate design choice. Using max (rather than average or weighted sum) means a single strong match is enough to trigger attention. A security agent does not need to match on all four dimensions — if the event mentions a gate symbol (`symbolMatch = 1.0`), that alone is sufficient even if the file path, concepts, and signals do not match.
68
+
69
+ The alternative (averaging) would dilute strong signals: a perfect symbol match (1.0) with no other matches would average to 0.25, likely falling below the threshold. Max scoring ensures that domain-specific expertise in any single dimension is respected.
70
+
71
+ ## Threshold-Based Self-Nomination
72
+
73
+ After scoring, the agent checks its threshold:
74
+
75
+ ```typescript
76
+ const threshold = attention.threshold ?? 0.6;
77
+ const shouldNominate = score >= threshold;
78
+ ```
79
+
80
+ If the score meets or exceeds the threshold, the agent should self-nominate a contribution. If not, the agent stays quiet, and the `quietReason` field records why: `'below-threshold'`.
81
+
82
+ The default threshold is 0.6, but different agent roles have different defaults based on their domain:
83
+
84
+ | Role | Default Threshold | Rationale |
85
+ |---|---|---|
86
+ | architect | 0.5 | Broad awareness — should notice most structural changes |
87
+ | builder | 0.7 | Focused — only speaks when directly relevant to implementation |
88
+ | reviewer | 0.6 | Balanced — watches code quality and patterns |
89
+ | tester | 0.5 | Broad — testing intersects all areas |
90
+ | security | 0.4 | Most sensitive — should speak up early and often |
91
+
92
+ A lower threshold means the agent speaks up more often (more false positives, fewer missed issues). A higher threshold means the agent speaks up less often (fewer false positives, more missed issues). Security uses 0.4 because the cost of missing a security issue far outweighs the cost of a false alarm.
93
+
94
+ ## scoreEventForAgent
95
+
96
+ The `scoreEventForAgent` function ties everything together:
97
+
98
+ ```typescript
99
+ function scoreEventForAgent(
100
+ event: StreamEvent,
101
+ agentId: string,
102
+ attention: AgentAttention
103
+ ): AttentionScore
104
+ ```
105
+
106
+ It returns an `AttentionScore` with five fields:
107
+ - `agentId` — Which agent evaluated this event
108
+ - `score` — Overall relevance (0.0-1.0)
109
+ - `breakdown` — The four dimension scores (`symbolMatch`, `pathMatch`, `conceptMatch`, `signalMatch`)
110
+ - `shouldNominate` — Whether the score exceeds the agent's threshold
111
+ - `quietReason` — Why the agent stayed quiet (if it did)
112
+
113
+ The breakdown is valuable for debugging attention patterns. If an agent is not speaking up when expected, the breakdown shows which dimension scored low. If `symbolMatch = 0.0` but the event clearly involves the agent's domain, the agent's symbol patterns may need expanding.
114
+
115
+ ## DEFAULT_ATTENTION for Standard Roles
116
+
117
+ Paradigm provides default attention configurations for five standard roles:
118
+
119
+ **Architect** — Watches all flows (`$*`) and components (`#*`), concepts like `architecture`, `design`, `pattern`, `refactor`. Threshold 0.5.
120
+
121
+ **Builder** — Watches source paths (`src/**`, `lib/**`, `packages/**`). Threshold 0.7.
122
+
123
+ **Reviewer** — Watches concepts like `code quality`, `bug`, `smell`, `convention`. Threshold 0.6.
124
+
125
+ **Tester** — Watches test paths (`**/*.test.*`, `**/*.spec.*`), concepts like `test`, `coverage`, `assertion`, and `error-encountered` signals. Threshold 0.5.
126
+
127
+ **Security** — Watches gate symbols (`^*`), auth components (`#*-auth`, `#*-middleware`), auth paths (`auth/**`, `middleware/**`, `guards/**`), concepts like `permission`, `JWT`, `session`, `RBAC`, `XSS`, `injection`, and signals `gate-added` and `route-created`. Threshold 0.4.
128
+
129
+ These defaults are overridable in the agent's `.agent` file via the `attention` field. A security agent working on a project with no web routes might raise its threshold to 0.6 and remove the path patterns.
@@ -0,0 +1,146 @@
1
+ ---
2
+ id: N-para-601-context-composition
3
+ title: Context Composition
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-601
11
+ - slim-claudemd-150
12
+ - paradigmcontextcompose-assembles-base
13
+ - agent-contributions-use
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 6
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-601.json
21
+ ---
22
+
23
+ ## From Verbose to Slim
24
+
25
+ Paradigm's CLAUDE.md historically contained everything an agent might need: logging rules, portal conventions, MCP workflow guidance, flow patterns, orchestration instructions, workspace configuration, and more. At its peak, the file was ~856 lines — loaded in full at the start of every session, consuming thousands of tokens regardless of whether the task involved logging, security, or lore.
26
+
27
+ This approach has two problems. First, it wastes context window space. An agent working on test coverage does not need 200 lines of portal gate conventions. Second, it creates staleness — with all guidance in one file, updates to any topic require reading and understanding the entire file.
28
+
29
+ v5.0 restructured this into a two-layer architecture: a slim CLAUDE.md (~150 lines) for universal orientation, plus 12 on-demand guidance resources for topic-specific depth.
30
+
31
+ ## The Slim CLAUDE.md
32
+
33
+ The reduced CLAUDE.md contains only what every session needs:
34
+
35
+ 1. **Project Overview** — What this project is and which version of Paradigm it uses
36
+ 2. **Symbol System** — The 5 symbols (#, $, ^, !, ~) and their meanings
37
+ 3. **Conventions** — Naming, commit format, .purpose rules
38
+ 4. **Agent Onboarding** — What to call first (`paradigm_status`), what to check
39
+ 5. **Before Implementing** — Protocol search, ripple, gates check
40
+ 6. **Automatic Enforcement** — What the stop hook blocks
41
+ 7. **On-Demand Guidance** — Table of 12 guidance resources with their MCP URIs
42
+
43
+ This provides enough context for any agent to orient itself and know where to find deeper guidance, without spending tokens on content irrelevant to the current task.
44
+
45
+ ## 12 Guidance Resources
46
+
47
+ Guidance resources are served via MCP at `paradigm://guidance/{topic}`. Each resource generates its content on demand — it is not a static file but a function that produces the latest guidance.
48
+
49
+ The 12 topics:
50
+
51
+ | Topic | What It Covers |
52
+ |---|---|
53
+ | `logging` | Logger usage, symbol-to-method mapping by directory |
54
+ | `portal` | Portal protocol, gate patterns, route declarations |
55
+ | `mcp-workflow` | MCP tool orchestration, token budgets |
56
+ | `flows` | Flow-first development, $flow documentation |
57
+ | `orchestration` | Multi-agent orchestration, agent spawning |
58
+ | `workspaces` | Multi-project symbol awareness |
59
+ | `university` | Knowledge base, courses, PLSAT |
60
+ | `calibration` | Confidence calibration, overconfidence alerts |
61
+ | `checkpoints` | Session checkpoints, crash recovery |
62
+ | `navigation` | Task recipes, navigation patterns |
63
+ | `component-types` | Component hierarchy, type guidelines |
64
+ | `troubleshooting` | Common issues, diagnostic steps |
65
+
66
+ An agent working on portal.yaml calls `paradigm://guidance/portal` to get the full portal protocol. An agent setting up multi-project awareness calls `paradigm://guidance/workspaces`. This on-demand model means the agent pays the token cost only for the guidance it actually uses.
67
+
68
+ ## Agent Contributions Section
69
+
70
+ Beyond the static guidance resources, composed context includes a dynamic **Agent Contributions** section built from active agents' `AgentContext.contributions`.
71
+
72
+ For example, if a security agent is active and its profile includes:
73
+
74
+ ```yaml
75
+ context:
76
+ contributions:
77
+ - section: "Security Warnings"
78
+ content: "New routes added in this session require ^authenticated gate minimum."
79
+ priority: high
80
+ - section: "Portal Conventions"
81
+ content_ref: "paradigm://guidance/portal"
82
+ priority: medium
83
+ ```
84
+
85
+ ...the composed context will include a "Security Warnings" section (always, because `priority: high`) and may include the full portal guidance (if token budget allows, because `priority: medium`).
86
+
87
+ Contributions with `content_ref` instead of inline `content` are resolved lazily — the MCP resource is fetched only when the contribution is actually included in the composed context.
88
+
89
+ ## paradigm_context_compose
90
+
91
+ The `paradigm_context_compose` tool assembles the full context for a session. It takes:
92
+
93
+ - The active agent(s) and their profiles
94
+ - The current task or focus area
95
+ - Token budget constraints
96
+
97
+ It produces a composed context string that includes:
98
+
99
+ 1. **Base CLAUDE.md content** — Universal orientation
100
+ 2. **Agent identity section** — From `buildProfileEnrichment`
101
+ 3. **High-priority contributions** — From all active agents' context contributions
102
+ 4. **Relevant guidance** — On-demand resources loaded based on the task
103
+ 5. **Ambient context** — Recent team decisions, transferable journal insights, pending nominations
104
+ 6. **Medium-priority contributions** — If token budget allows
105
+
106
+ Low-priority contributions and unused guidance resources are omitted from the initial context but remain available via MCP resource URIs if the agent needs them mid-session.
107
+
108
+ ## The Full Loop: Journal to Context
109
+
110
+ Here is where everything connects. Consider this sequence:
111
+
112
+ 1. **Session A**: Builder modifies `#payment-service`, makes a mistake with JWT token ordering, gets corrected by the human. The builder records a journal entry: `trigger: 'correction_received', insight: 'JWT refresh tokens must be validated before access tokens when both are present', transferable: true, pattern: { id: 'jwt-ordering', applies_when: 'validating multiple JWT types', correct_approach: 'Check refresh token first, then access token' }`.
113
+
114
+ 2. **Between sessions**: The journal entry is stored at `~/.paradigm/agents/builder/journal/`. The pattern is extracted as a transferable pattern.
115
+
116
+ 3. **Session B**: A different agent (or the same builder on a different project) starts work on an authentication module. `paradigm_context_compose` runs, loading the builder's profile. The `buildProfileEnrichment` function includes the transferable pattern and the journal insight in the "Transferable Insights" section of the composed context.
117
+
118
+ 4. **Result**: The agent in Session B sees the JWT ordering insight before writing any code, preventing the same mistake.
119
+
120
+ This is the closed loop: DO (Session A work) -> RECORD (journal entry) -> ASSESS (attention scoring recognizes auth work in Session B) -> LEARN (pattern extracted) -> ADAPT (context composition includes the pattern) -> DO (Session B starts with the insight).
121
+
122
+ ## emitAndProcess
123
+
124
+ The `emitAndProcess` function unifies event emission with nomination processing. When an event is emitted, it is simultaneously:
125
+
126
+ 1. Written to the event stream (JSONL file + memory buffer)
127
+ 2. Scored against all active agents' attention patterns
128
+ 3. For any agent exceeding its threshold, a nomination opportunity is created
129
+
130
+ This single-call pattern ensures that no event is emitted without being evaluated for nominations. It prevents the race condition where an event is emitted but attention scoring happens too late to catch it.
131
+
132
+ The function returns both the emitted event and any nominations that were generated, giving the caller full visibility into what happened.
133
+
134
+ ## Putting It All Together
135
+
136
+ Ambient coordination is not a single feature — it is a system of interconnected capabilities:
137
+
138
+ - **Knowledge streams** split lore into purpose-specific channels
139
+ - **Events** capture every meaningful action in a structured format
140
+ - **Attention** filters events to the right agents
141
+ - **Nominations** let agents contribute without being asked
142
+ - **Data sovereignty** ensures data stays where it belongs
143
+ - **Agent renaissance** gives agents the behavioral vocabulary to participate
144
+ - **Context composition** closes the loop by feeding learnings back into future sessions
145
+
146
+ Each piece is independently useful, but together they create a system that gets smarter with every session — not because any single component is intelligent, but because the loop never breaks.