@a-company/paradigm 5.38.0 → 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/dist/{accept-orchestration-OATWIRHP.js → accept-orchestration-QQISPINV.js} +1 -1
  2. package/dist/add-UOR4INIV.js +8 -0
  3. package/dist/{agent-loader-RIVI6QPP.js → agent-loader-2WJHD46U.js} +1 -1
  4. package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-YKS2PQWO.js} +1 -1
  5. package/dist/{ambient-76YMUA5Q.js → ambient-BE3SQXNN.js} +1 -1
  6. package/dist/{ambient-WTLYUAQM.js → ambient-NVKQCW2A.js} +12 -12
  7. package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
  8. package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
  9. package/dist/{chunk-5QOCKWK5.js → chunk-4PSD5R7N.js} +2 -2
  10. package/dist/{chunk-HOBHJPTL.js → chunk-6SKSV5B2.js} +1 -1
  11. package/dist/{chunk-4L7665QV.js → chunk-FEYOQMZ5.js} +1 -1
  12. package/dist/{chunk-NEJ4ZLCY.js → chunk-GAFKOFAV.js} +1 -1
  13. package/dist/chunk-GRZQIKST.js +2 -0
  14. package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
  15. package/dist/{chunk-4VKSEOXZ.js → chunk-LPBCQM5Y.js} +3 -3
  16. package/dist/{chunk-74SGKSRQ.js → chunk-M2HKWR25.js} +1 -1
  17. package/dist/{chunk-BOYQAMGC.js → chunk-M3PPXJU4.js} +1 -1
  18. package/dist/chunk-PHEX6LU4.js +111 -0
  19. package/dist/chunk-Q527BPUF.js +2 -0
  20. package/dist/chunk-R5ECMBIV.js +11 -0
  21. package/dist/{chunk-X3U3IGYT.js → chunk-TBWWFRL5.js} +1 -1
  22. package/dist/{chunk-MQIG6SMF.js → chunk-TNVWGPCE.js} +1 -1
  23. package/dist/chunk-TZDYIPVU.js +521 -0
  24. package/dist/{chunk-3XGNXXCT.js → chunk-UZ5H7K6Q.js} +1 -1
  25. package/dist/chunk-VIG5LSGZ.js +2 -0
  26. package/dist/chunk-VNIX5KBT.js +3 -0
  27. package/dist/{chunk-AGFPVSX5.js → chunk-VXIIVMTM.js} +1 -1
  28. package/dist/{chunk-ORDKEGII.js → chunk-WESTEMIM.js} +1 -1
  29. package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
  30. package/dist/chunk-Z5QW6USC.js +2 -0
  31. package/dist/{compliance-D7GD6ZYC.js → compliance-BNFWQPKM.js} +1 -1
  32. package/dist/config-schema-FLHRVZMI.js +2 -0
  33. package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
  34. package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
  35. package/dist/decision-loader-HELL2AMX.js +2 -0
  36. package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
  37. package/dist/{diff-YGHBIJY5.js → diff-MF55KQZH.js} +1 -1
  38. package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
  39. package/dist/{docs-USDAF26F.js → docs-O37YLLRN.js} +1 -1
  40. package/dist/doctor-IG5XM4C4.js +2 -0
  41. package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
  42. package/dist/{flow-FVZR3YJ4.js → flow-BGXOVE2V.js} +1 -1
  43. package/dist/index.js +6 -6
  44. package/dist/init-M44SO65G.js +2 -0
  45. package/dist/{init-XYB62Q3X.js → init-V4KSEKPK.js} +1 -1
  46. package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
  47. package/dist/list-CFHINXIS.js +12 -0
  48. package/dist/lore-loader-D2ISOASW.js +2 -0
  49. package/dist/lore-loader-PXFKMKAN.js +2 -0
  50. package/dist/mcp.js +4 -4
  51. package/dist/metrics-UESGUHTA.js +2 -0
  52. package/dist/migrate-assessments-YSITX7KM.js +4 -0
  53. package/dist/migrate-decisions-NPLQOEEH.js +6 -0
  54. package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
  55. package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-QPZJH6XO.js} +1 -1
  56. package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
  57. package/dist/{orchestrate-M5PBZBJQ.js → orchestrate-RID7HHHH.js} +1 -1
  58. package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
  59. package/dist/{portal-check-ZMLVBIGW.js → portal-check-DV2VSJ5E.js} +1 -1
  60. package/dist/portal-compliance-JONQ4SOP.js +2 -0
  61. package/dist/{probe-3FTG6LYO.js → probe-5HAXULAD.js} +1 -1
  62. package/dist/{providers-AWA7WLLM.js → providers-4PXMWA7V.js} +1 -1
  63. package/dist/quiz-WYIZJG5K.js +10 -0
  64. package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
  65. package/dist/reindex-FWPD2VGM.js +2 -0
  66. package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
  67. package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
  68. package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
  69. package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
  70. package/dist/{serve-U47GULB6.js → serve-MO35XIZE.js} +1 -1
  71. package/dist/serve-OQYUO7CR.js +12 -0
  72. package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
  73. package/dist/server-FGUL2FWQ.js +7 -0
  74. package/dist/session-tracker-KGORN6B5.js +2 -0
  75. package/dist/{session-work-log-PAKXOFGL.js → session-work-log-4IEVE4KK.js} +1 -1
  76. package/dist/{session-work-log-ZP45TREI.js → session-work-log-EE4UIZ33.js} +1 -1
  77. package/dist/{setup-FEWSYS3Y.js → setup-ZSEC72BS.js} +1 -1
  78. package/dist/{shift-PC6C7NUX.js → shift-TVNY2CQF.js} +6 -6
  79. package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
  80. package/dist/show-WVHAL4VU.js +7 -0
  81. package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
  82. package/dist/status-S7Z5FVIE.js +6 -0
  83. package/dist/{summary-PYTEIJ4U.js → summary-WLI3NF4G.js} +2 -2
  84. package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
  85. package/dist/sync-55U6QPIA.js +2 -0
  86. package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
  87. package/dist/{team-PDK64JXI.js → team-MGT66HZQ.js} +1 -1
  88. package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
  89. package/dist/tools-QJHAVYI6.js +2 -0
  90. package/dist/university-content/notes/N-para-001-build-something.md +126 -0
  91. package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
  92. package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
  93. package/dist/university-content/notes/N-para-101-component-types.md +99 -0
  94. package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
  95. package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
  96. package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
  97. package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
  98. package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
  99. package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
  100. package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
  101. package/dist/university-content/notes/N-para-101-welcome.md +51 -0
  102. package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
  103. package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
  104. package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
  105. package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
  106. package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
  107. package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
  108. package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
  109. package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
  110. package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
  111. package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
  112. package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
  113. package/dist/university-content/notes/N-para-301-context-management.md +53 -0
  114. package/dist/university-content/notes/N-para-301-decisions.md +99 -0
  115. package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
  116. package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
  117. package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
  118. package/dist/university-content/notes/N-para-301-history-system.md +42 -0
  119. package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
  120. package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
  121. package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
  122. package/dist/university-content/notes/N-para-301-protocols.md +113 -0
  123. package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
  124. package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
  125. package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
  126. package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
  127. package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
  128. package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
  129. package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
  130. package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
  131. package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
  132. package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
  133. package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
  134. package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
  135. package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
  136. package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
  137. package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
  138. package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
  139. package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
  140. package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
  141. package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
  142. package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
  143. package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
  144. package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
  145. package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
  146. package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
  147. package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
  148. package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
  149. package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
  150. package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
  151. package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
  152. package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
  153. package/dist/university-content/notes/N-para-501-task-management.md +100 -0
  154. package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
  155. package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
  156. package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
  157. package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
  158. package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
  159. package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
  160. package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
  161. package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
  162. package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
  163. package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
  164. package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
  165. package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
  166. package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
  167. package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
  168. package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
  169. package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
  170. package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
  171. package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
  172. package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
  173. package/dist/university-content/paths/LP-para-001.yaml +29 -0
  174. package/dist/university-content/paths/LP-para-101.yaml +59 -0
  175. package/dist/university-content/paths/LP-para-201.yaml +69 -0
  176. package/dist/university-content/paths/LP-para-301.yaml +84 -0
  177. package/dist/university-content/paths/LP-para-401.yaml +74 -0
  178. package/dist/university-content/paths/LP-para-501.yaml +89 -0
  179. package/dist/university-content/paths/LP-para-601.yaml +59 -0
  180. package/dist/university-content/paths/LP-para-701.yaml +64 -0
  181. package/dist/university-content/quizzes/Q-para-001-build-something.yaml +46 -0
  182. package/dist/university-content/quizzes/Q-para-001-meet-the-team.yaml +46 -0
  183. package/dist/university-content/quizzes/Q-para-001-shift-setup.yaml +46 -0
  184. package/dist/university-content/quizzes/Q-para-101-component-types.yaml +46 -0
  185. package/dist/university-content/quizzes/Q-para-101-first-steps.yaml +56 -0
  186. package/dist/university-content/quizzes/Q-para-101-five-symbols.yaml +66 -0
  187. package/dist/university-content/quizzes/Q-para-101-paradigm-logger.yaml +56 -0
  188. package/dist/university-content/quizzes/Q-para-101-portal-yaml.yaml +56 -0
  189. package/dist/university-content/quizzes/Q-para-101-project-structure.yaml +66 -0
  190. package/dist/university-content/quizzes/Q-para-101-purpose-files.yaml +56 -0
  191. package/dist/university-content/quizzes/Q-para-101-tags-and-classification.yaml +56 -0
  192. package/dist/university-content/quizzes/Q-para-101-welcome.yaml +56 -0
  193. package/dist/university-content/quizzes/Q-para-201-architecture-review.yaml +66 -0
  194. package/dist/university-content/quizzes/Q-para-201-aspect-graph.yaml +46 -0
  195. package/dist/university-content/quizzes/Q-para-201-aspects-and-anchors.yaml +56 -0
  196. package/dist/university-content/quizzes/Q-para-201-component-patterns.yaml +56 -0
  197. package/dist/university-content/quizzes/Q-para-201-cross-cutting-concerns.yaml +56 -0
  198. package/dist/university-content/quizzes/Q-para-201-disciplines.yaml +66 -0
  199. package/dist/university-content/quizzes/Q-para-201-flows-deep-dive.yaml +66 -0
  200. package/dist/university-content/quizzes/Q-para-201-gates-deep-dive.yaml +66 -0
  201. package/dist/university-content/quizzes/Q-para-201-portal-protocol.yaml +56 -0
  202. package/dist/university-content/quizzes/Q-para-201-signal-patterns.yaml +56 -0
  203. package/dist/university-content/quizzes/Q-para-201-symbol-naming.yaml +66 -0
  204. package/dist/university-content/quizzes/Q-para-301-context-management.yaml +56 -0
  205. package/dist/university-content/quizzes/Q-para-301-decisions.yaml +76 -0
  206. package/dist/university-content/quizzes/Q-para-301-doctor-and-validation.yaml +66 -0
  207. package/dist/university-content/quizzes/Q-para-301-enforcement-levels.yaml +46 -0
  208. package/dist/university-content/quizzes/Q-para-301-fragility-tracking.yaml +46 -0
  209. package/dist/university-content/quizzes/Q-para-301-history-system.yaml +56 -0
  210. package/dist/university-content/quizzes/Q-para-301-navigation-system.yaml +56 -0
  211. package/dist/university-content/quizzes/Q-para-301-operations-review.yaml +66 -0
  212. package/dist/university-content/quizzes/Q-para-301-paradigm-shift.yaml +46 -0
  213. package/dist/university-content/quizzes/Q-para-301-protocols.yaml +56 -0
  214. package/dist/university-content/quizzes/Q-para-301-ripple-analysis.yaml +56 -0
  215. package/dist/university-content/quizzes/Q-para-301-sentinel-observability.yaml +46 -0
  216. package/dist/university-content/quizzes/Q-para-301-sync-and-maintenance.yaml +46 -0
  217. package/dist/university-content/quizzes/Q-para-301-wisdom-system.yaml +56 -0
  218. package/dist/university-content/quizzes/Q-para-401-agent-identity.yaml +66 -0
  219. package/dist/university-content/quizzes/Q-para-401-agent-interop.yaml +46 -0
  220. package/dist/university-content/quizzes/Q-para-401-agent-roles.yaml +56 -0
  221. package/dist/university-content/quizzes/Q-para-401-commit-conventions.yaml +56 -0
  222. package/dist/university-content/quizzes/Q-para-401-mastery-review.yaml +66 -0
  223. package/dist/university-content/quizzes/Q-para-401-mcp-tools-overview.yaml +66 -0
  224. package/dist/university-content/quizzes/Q-para-401-multi-agent-coordination.yaml +76 -0
  225. package/dist/university-content/quizzes/Q-para-401-notebooks-permissions.yaml +61 -0
  226. package/dist/university-content/quizzes/Q-para-401-orchestration-workflow.yaml +66 -0
  227. package/dist/university-content/quizzes/Q-para-401-pm-governance.yaml +66 -0
  228. package/dist/university-content/quizzes/Q-para-401-provider-cascade.yaml +56 -0
  229. package/dist/university-content/quizzes/Q-para-401-quick-check.yaml +46 -0
  230. package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
  231. package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
  232. package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
  233. package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
  234. package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
  235. package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
  236. package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
  237. package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
  238. package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
  239. package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
  240. package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
  241. package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
  242. package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
  243. package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
  244. package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
  245. package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
  246. package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
  247. package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
  248. package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
  249. package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
  250. package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
  251. package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
  252. package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
  253. package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
  254. package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
  255. package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
  256. package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
  257. package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
  258. package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
  259. package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
  260. package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
  261. package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
  262. package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
  263. package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
  264. package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
  265. package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
  266. package/dist/university-content/reference.json +2 -2
  267. package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
  268. package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
  269. package/dist/university-ui/index.html +1 -1
  270. package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
  271. package/dist/validate-XUQZTF3H.js +9 -0
  272. package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
  273. package/lore-ui/dist/assets/{index-Bk-K0qgN.js → index-DKhNxgtW.js} +10 -10
  274. package/lore-ui/dist/index.html +1 -1
  275. package/package.json +2 -2
  276. package/platform-ui/dist/assets/{AmbientSection-BYjt75R1.js → AmbientSection-CwatqcBD.js} +1 -1
  277. package/platform-ui/dist/assets/{CanvasSection-rKvA_vZj.js → CanvasSection-dFAthehN.js} +1 -1
  278. package/platform-ui/dist/assets/{DocsSection-CI9K73M-.js → DocsSection-BZ2SFJBZ.js} +1 -1
  279. package/platform-ui/dist/assets/{GitSection-DSGj_c6S.js → GitSection-MNNYU1tO.js} +1 -1
  280. package/platform-ui/dist/assets/{GraphSection-CawN7pC5.js → GraphSection-COYjb4Pt.js} +1 -1
  281. package/platform-ui/dist/assets/LoreSection-B0hUbfsJ.js +1 -0
  282. package/platform-ui/dist/assets/{SentinelSection-DNgoYMH0.js → SentinelSection-BCxW1DCp.js} +1 -1
  283. package/platform-ui/dist/assets/{SymphonySection-C0zfcqv3.js → SymphonySection-BsucZRqy.js} +1 -1
  284. package/platform-ui/dist/assets/{TeamSection-Bzd3Dt9Q.js → TeamSection-C0QNTudW.js} +1 -1
  285. package/platform-ui/dist/assets/{UniversitySection-tBr62R0S.js → UniversitySection-DN1-g9pw.js} +1 -1
  286. package/platform-ui/dist/assets/{index-BaOmyn11.js → index-DwUT8pju.js} +2 -2
  287. package/platform-ui/dist/index.html +1 -1
  288. package/dist/add-P76GEMGF.js +0 -8
  289. package/dist/chunk-JQKKVAAN.js +0 -2
  290. package/dist/chunk-NQ47TA6C.js +0 -111
  291. package/dist/chunk-ODVKPZZ4.js +0 -2
  292. package/dist/chunk-Q2J542ST.js +0 -2
  293. package/dist/chunk-RBLK34IA.js +0 -11
  294. package/dist/chunk-RN4VE6P3.js +0 -521
  295. package/dist/chunk-WS2N27RX.js +0 -3
  296. package/dist/config-schema-GUQY2QN7.js +0 -2
  297. package/dist/decision-loader-2XPZE4EZ.js +0 -2
  298. package/dist/doctor-WMVULMQD.js +0 -2
  299. package/dist/list-5IUGP3ZB.js +0 -7
  300. package/dist/lore-loader-RVQI5GXL.js +0 -2
  301. package/dist/lore-loader-XY5MZRR2.js +0 -2
  302. package/dist/migrate-assessments-GEI5WMI2.js +0 -4
  303. package/dist/portal-compliance-6YR27IQU.js +0 -2
  304. package/dist/quiz-FE5UGAY2.js +0 -10
  305. package/dist/reindex-I6LPAKCC.js +0 -2
  306. package/dist/serve-OY6XYL7F.js +0 -12
  307. package/dist/server-2MNROHF6.js +0 -7
  308. package/dist/session-tracker-MWJAJA6Z.js +0 -2
  309. package/dist/show-BOAVWZPZ.js +0 -7
  310. package/dist/status-A37ECYNJ.js +0 -6
  311. package/dist/sync-DLUBV5HQ.js +0 -2
  312. package/dist/tools-5ITPEPSV.js +0 -2
  313. package/dist/university-content/courses/.purpose +0 -492
  314. package/dist/university-content/courses/para-001.json +0 -166
  315. package/dist/university-content/courses/para-101.json +0 -615
  316. package/dist/university-content/courses/para-201.json +0 -794
  317. package/dist/university-content/courses/para-301.json +0 -830
  318. package/dist/university-content/courses/para-401.json +0 -868
  319. package/dist/university-content/courses/para-501.json +0 -1166
  320. package/dist/university-content/courses/para-601.json +0 -719
  321. package/dist/university-content/courses/para-701.json +0 -807
  322. package/dist/university-content/plsat/.purpose +0 -162
  323. package/dist/university-content/plsat/v2.0.json +0 -760
  324. package/dist/university-content/plsat/v3.0.json +0 -3453
  325. package/dist/validate-C6SMKGYD.js +0 -9
  326. package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
  327. /package/dist/{chunk-BV5PRPLB.js → chunk-IZSBGW6E.js} +0 -0
  328. /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
@@ -0,0 +1,143 @@
1
+ ---
2
+ id: N-para-101-project-structure
3
+ title: Project Structure
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-101
11
+ - paradigm-holds-project-wide
12
+ - configyaml-defines-discipline
13
+ - navigatoryaml-is-generated
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 3
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-101.json
21
+ ---
22
+
23
+ ## The .paradigm/ Directory
24
+
25
+ Every Paradigm project has a `.paradigm/` directory at its root. This is the central nervous system of the framework — it holds project-wide configuration, specifications, documentation, and metadata that apply across the entire codebase. While `.purpose` files describe individual directories, the `.paradigm/` directory describes the project as a whole.
26
+
27
+ ## Core Files
28
+
29
+ ### config.yaml — Project Configuration
30
+
31
+ The most important file. It defines the project's discipline (web, backend, fullstack, etc.), naming conventions, and agent preferences:
32
+
33
+ ```yaml
34
+ name: my-project
35
+ discipline: fullstack
36
+ version: "2.0"
37
+
38
+ conventions:
39
+ naming: kebab-case
40
+ components: PascalCase
41
+ files: kebab-case
42
+
43
+ agent-provider: claude-code
44
+ ```
45
+
46
+ The `discipline` field tells Paradigm how to map directory patterns to symbol types. A `web` discipline treats `routes/` as components; a `backend` discipline treats `services/` as components. This affects the navigator, logger suggestions, and gate recommendations.
47
+
48
+ ### tags.yaml — Tag Bank
49
+
50
+ Defines all valid tags in three sections: `core` (universal), `project` (team-specific), and `suggested` (AI-proposed). Covered in detail in the Tags lesson.
51
+
52
+ ### agents.yaml — Agent Roles
53
+
54
+ Configures the AI agents that work on your project — their roles, model assignments, context includes/excludes, and token budgets:
55
+
56
+ ```yaml
57
+ agents:
58
+ architect:
59
+ defaultModel: opus
60
+ context:
61
+ include: [".paradigm/**", "portal.yaml", "**/.purpose"]
62
+ builder:
63
+ defaultModel: haiku
64
+ context:
65
+ include: ["src/**", "**/.purpose"]
66
+ exclude: ["**/*.test.*"]
67
+ security:
68
+ defaultModel: opus
69
+ context:
70
+ include: ["portal.yaml", "**/auth/**", "**/middleware/**"]
71
+ ```
72
+
73
+ ### navigator.yaml — Generated Codebase Map
74
+
75
+ A machine-generated file that maps symbols to file paths, directories to categories, and provides a structural overview of the codebase. AI agents read this to quickly locate code without directory traversal. Generated by `paradigm scan`.
76
+
77
+ ## Subdirectories
78
+
79
+ ### specs/ — Detailed Specifications
80
+
81
+ Long-form documents that describe system behaviors, protocols, and standards. These are too detailed for `.purpose` files but essential for AI agents implementing features:
82
+
83
+ ```
84
+ .paradigm/specs/
85
+ logger.md ← Full logger specification
86
+ disciplines.md ← Symbol mapping by domain
87
+ portal-protocol.md ← Authorization workflow
88
+ ```
89
+
90
+ ### docs/ — Commands and Patterns
91
+
92
+ Quick-reference documentation for CLI commands, coding patterns, and troubleshooting:
93
+
94
+ ```
95
+ .paradigm/docs/
96
+ commands.md ← CLI command reference
97
+ patterns.md ← Coding patterns and conventions
98
+ ai-maintenance-protocol.md ← When/how to update Paradigm files
99
+ ```
100
+
101
+ ### wisdom/ — Team Knowledge
102
+
103
+ Captures the team's learned preferences, architectural decisions, and antipatterns:
104
+
105
+ ```
106
+ .paradigm/wisdom/
107
+ preferences.yaml ← Coding style preferences
108
+ decisions.yaml ← Architectural Decision Records (ADRs)
109
+ antipatterns.yaml ← What NOT to do, and why
110
+ ```
111
+
112
+ AI agents check wisdom before implementing changes by calling `paradigm_wisdom_context`.
113
+
114
+ ### history/ — Implementation Timeline
115
+
116
+ Tracks what was implemented, when, and by whom. Used for fragility analysis and rollback tracking.
117
+
118
+ ## The Big Picture
119
+
120
+ Here is the complete project layout showing both `.paradigm/` and `.purpose` files:
121
+
122
+ ```
123
+ my-project/
124
+ .paradigm/
125
+ config.yaml ← Project-wide settings
126
+ tags.yaml ← Tag definitions
127
+ agents.yaml ← Agent configurations
128
+ navigator.yaml ← Generated codebase map
129
+ specs/ ← Detailed specifications
130
+ docs/ ← Commands and patterns
131
+ wisdom/ ← Team knowledge
132
+ history/ ← Implementation timeline
133
+ portal.yaml ← Security gates and routes (project root)
134
+ src/
135
+ payments/
136
+ .purpose ← Directory-level documentation
137
+ payment-service.ts
138
+ auth/
139
+ .purpose
140
+ middleware.ts
141
+ ```
142
+
143
+ Notice that `portal.yaml` lives at the project root, not inside `.paradigm/`. This is intentional — it is a security-critical file that should be visible and easy to audit.
@@ -0,0 +1,121 @@
1
+ ---
2
+ id: N-para-101-purpose-files
3
+ title: Purpose Files
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-101
11
+ - purpose-files-are
12
+ - they-declare-components
13
+ - ai-agents-read
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 3
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-101.json
21
+ ---
22
+
23
+ ## The Map AI Agents Read First
24
+
25
+ A `.purpose` file is a YAML document that lives in a directory alongside your source code. It declares what that directory contains — its components, flows, gates, signals, and aspects. When an AI agent enters a directory, the first thing it should do is read the `.purpose` file. This single file gives the agent enough context to understand the directory without scanning every source file.
26
+
27
+ Think of `.purpose` files as the table of contents for a chapter in a book. You would not read every page to find out what topics are covered — you check the table of contents. Similarly, AI agents should not `grep` through every `.ts` or `.py` file to figure out what a directory does.
28
+
29
+ ## Structure of a Purpose File
30
+
31
+ A `.purpose` file has a top-level metadata section and then named sections for each symbol type:
32
+
33
+ ```yaml
34
+ name: Payment Module
35
+ description: Handles all payment processing and billing logic
36
+ version: "1.0.0"
37
+ context:
38
+ - Uses Stripe as the payment provider
39
+ - All amounts are in cents (integer)
40
+ - Webhooks are verified with Stripe signatures
41
+
42
+ components:
43
+ #payment-service:
44
+ description: Core payment processing logic
45
+ file: payment-service.ts
46
+ tags: [integration, stripe, critical]
47
+ signals: ["!payment-completed", "!payment-failed"]
48
+ gates: ["^authenticated"]
49
+
50
+ #billing-calculator:
51
+ description: Computes totals, taxes, and discounts
52
+ file: billing.ts
53
+ tags: [feature]
54
+
55
+ flows:
56
+ $checkout-flow:
57
+ description: End-to-end purchase sequence
58
+ steps:
59
+ - component: "#cart-service"
60
+ action: validate-items
61
+ - component: "#billing-calculator"
62
+ action: compute-total
63
+ - component: "#payment-service"
64
+ action: charge
65
+
66
+ signals:
67
+ !payment-completed:
68
+ description: Emitted after successful charge
69
+ emitters: ["#payment-service"]
70
+ category: business
71
+
72
+ gates:
73
+ ^payment-authorized:
74
+ description: User has a valid payment method on file
75
+ check: user.paymentMethods.length > 0
76
+ ```
77
+
78
+ ## Key Rules for Purpose Files
79
+
80
+ **One per directory.** Each directory that contains meaningful code should have at most one `.purpose` file. Not every directory needs one — only directories that contain components worth documenting.
81
+
82
+ **Symbols must use the correct prefix.** Components use `#`, flows use `$`, gates use `^`, signals use `!`, aspects use `~`. The prefix is part of the identifier.
83
+
84
+ **Descriptions are required.** Every component, flow, gate, signal, and aspect must have a `description` field. Without it, the symbol is opaque to AI agents.
85
+
86
+ **References link symbols together.** A component can reference the gates it requires (`gates: ["^authenticated"]`), the signals it emits (`signals: ["!payment-completed"]`), and the flows it participates in (`flows: ["$checkout-flow"]`). These cross-references let tools like `paradigm_ripple` calculate impact.
87
+
88
+ **The `context` field is for AI.** The top-level `context` array contains free-text notes aimed at AI agents: conventions, gotchas, assumptions. This is where you write "all amounts are in cents" or "this module is deprecated, use v2 instead."
89
+
90
+ ## Where Purpose Files Live
91
+
92
+ Purpose files are placed in source directories — wherever your code lives:
93
+
94
+ ```
95
+ src/
96
+ payments/
97
+ .purpose ← describes the payments module
98
+ payment-service.ts
99
+ billing.ts
100
+ auth/
101
+ .purpose ← describes the auth module
102
+ login.ts
103
+ middleware.ts
104
+ ```
105
+
106
+ They are NOT placed in the `.paradigm/` directory. The `.paradigm/` directory holds project-wide configuration; `.purpose` files hold directory-level documentation.
107
+
108
+ ## Creating Purpose Files with MCP Tools
109
+
110
+ You can create and update purpose files using the Paradigm MCP tools:
111
+
112
+ ```
113
+ paradigm_purpose_init → Create/update file-level metadata
114
+ paradigm_purpose_add_component → Add a #component
115
+ paradigm_purpose_add_flow → Add a $flow
116
+ paradigm_purpose_add_gate → Add a ^gate
117
+ paradigm_purpose_add_signal → Add a !signal
118
+ paradigm_purpose_add_aspect → Add a ~aspect (with required anchors)
119
+ ```
120
+
121
+ These tools handle YAML formatting and symbol quoting automatically. For example, YAML treats `!` as a tag indicator, so signal IDs need special quoting — the tools handle this for you.
@@ -0,0 +1,93 @@
1
+ ---
2
+ id: N-para-101-tags-and-classification
3
+ title: Tags & Classification
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-101
11
+ - tags-classify-components
12
+ - tags-are-defined
13
+ - three-sections-core
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 3
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-101.json
21
+ ---
22
+
23
+ ## Beyond Symbols: The Tag Bank
24
+
25
+ Paradigm's five symbols classify code by *role* — component, flow, gate, signal, aspect. But within each role, you often need finer distinctions. Is this component a user-facing feature or a third-party integration? Is it critical infrastructure or an experimental idea? Paradigm handles this with a unified **tag system**.
26
+
27
+ Tags are plain strings in brackets that you attach to any symbol. They live in the `tags` array on a symbol definition:
28
+
29
+ ```yaml
30
+ components:
31
+ #checkout:
32
+ description: Shopping cart checkout experience
33
+ tags: [feature, critical, payments]
34
+
35
+ #stripe-service:
36
+ description: Stripe API client wrapper
37
+ tags: [integration, stripe, payments]
38
+
39
+ #cart-store:
40
+ description: In-memory shopping cart state
41
+ tags: [state, ephemeral]
42
+ ```
43
+
44
+ ## The Tag Bank File
45
+
46
+ Tags are not arbitrary strings — they are defined in `.paradigm/tags.yaml`, which serves as the project's tag bank. The tag bank has three sections:
47
+
48
+ ```yaml
49
+ core: # Universal tags, defined by Paradigm itself
50
+ feature: { description: "User-facing functionality" }
51
+ integration: { description: "Third-party service connection" }
52
+ state: { description: "Data store or state container" }
53
+ critical: { description: "Failure causes major user impact" }
54
+ deprecated: { description: "Scheduled for removal" }
55
+ idea: { description: "Experimental, not yet approved" }
56
+
57
+ project: # Team-defined tags specific to this project
58
+ payments: { description: "Related to payment processing" }
59
+ onboarding: { description: "Part of the new-user experience" }
60
+
61
+ suggested: # AI-proposed tags awaiting human approval
62
+ webhook-handler: { description: "Processes incoming webhooks" }
63
+ ```
64
+
65
+ The **core** section contains tags that apply to any project. The **project** section contains tags your team has defined for this specific codebase. The **suggested** section is where AI agents can propose new tags using the `paradigm_tags_suggest` tool — a human reviews and promotes them to the project section.
66
+
67
+ ## How Tags Work in Practice
68
+
69
+ Here is how tags differentiate components that serve different roles:
70
+
71
+ | Role | How to Tag |
72
+ |-----------|---------------|
73
+ | User-facing feature | `#checkout` with `tags: [feature]` |
74
+ | Third-party service | `#stripe-service` with `tags: [integration, stripe]` |
75
+ | Data store | `#cart-store` with `tags: [state]` |
76
+ | Experimental prototype | `#new-widget` with `tags: [idea]` |
77
+ | Scheduled for removal | `#legacy-handler` with `tags: [deprecated]` |
78
+
79
+ This means fewer concepts to remember and no ambiguity. A Stripe payment service is `#stripe-service` with `tags: [integration, stripe]` — clear, searchable, and consistent.
80
+
81
+ ## Using Tags Effectively
82
+
83
+ Tags are most powerful when they are **consistent and searchable**. Follow these guidelines:
84
+
85
+ - **Use existing tags before inventing new ones.** Check `paradigm_tags({ action: "list" })` to see what is available.
86
+ - **Keep tags lowercase and kebab-case.** `webhook-handler`, not `WebhookHandler` or `WEBHOOK_HANDLER`.
87
+ - **Use 2-4 tags per symbol.** One tag is too vague; ten tags is noise.
88
+ - **Tag for discoverability.** Ask: "What would I search for to find this component?" Those search terms are your tags.
89
+ - **Let AI propose tags.** If you notice a pattern (e.g., five components all handle webhooks), use `paradigm_tags_suggest` to propose a `webhook-handler` tag.
90
+
91
+ ## Querying by Tags
92
+
93
+ The Paradigm MCP tools support tag-based discovery. When you call `paradigm_search` with a tag name, it returns all symbols bearing that tag. This makes it easy to ask questions like "show me everything tagged `critical`" or "find all `integration` components."
@@ -0,0 +1,51 @@
1
+ ---
2
+ id: N-para-101-welcome
3
+ title: Welcome to Paradigm
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-101
11
+ - meta-framework-for-ai-assisted
12
+ - structured-context-over
13
+ - five-operational-symbols
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 3
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-101.json
21
+ ---
22
+
23
+ ## What Is Paradigm?
24
+
25
+ Paradigm is a **meta-framework for structured AI-assisted development**. It is not a code framework like React or Express — it does not ship components, generate boilerplate, or impose a runtime. Instead, Paradigm organizes *how AI agents understand your code*. It provides a shared vocabulary of symbols, a directory-level documentation format, and a set of specifications that let any AI assistant — whether Claude, Cursor, or another tool — navigate even large codebases with precision and minimal token waste.
26
+
27
+ The core insight behind Paradigm is simple: AI agents are powerful, but they struggle when dropped into an undocumented codebase. They spend thousands of tokens exploring directories, guessing at relationships, and re-reading files they have already seen. Paradigm solves this by giving the codebase *structured context* — lightweight metadata files that describe what lives where, how pieces relate, and what rules apply.
28
+
29
+ ## The Three Pillars
30
+
31
+ Paradigm rests on three pillars:
32
+
33
+ 1. **Symbols** — A set of five prefixed identifiers (`#`, `$`, `^`, `!`, `~`) that classify every meaningful unit in your project. A payment service is `#PaymentService`. An authorization check is `^authenticated`. A business event is `!order-placed`. Symbols are the vocabulary AI agents use to talk about your code.
34
+
35
+ 2. **Purpose Files** — YAML files named `.purpose` that live in directories alongside your source code. They declare which components, flows, gates, signals, and aspects exist in that directory. They are the map AI agents read before they touch any code.
36
+
37
+ 3. **Specifications** — Files in the `.paradigm/` directory that define project-wide configuration, tag taxonomies, agent roles, navigation maps, and team wisdom. They are the rulebook that keeps every agent aligned with your team's conventions.
38
+
39
+ ## Why It Matters
40
+
41
+ Without structured context, an AI agent working on a checkout feature might:
42
+ - Spend 2,000+ tokens reading irrelevant files looking for the payment service
43
+ - Miss an authorization gate that protects the endpoint
44
+ - Accidentally duplicate a signal that another component already emits
45
+ - Use `console.log` instead of the team's structured logger
46
+
47
+ With Paradigm, that same agent calls `paradigm_navigate` to find `#PaymentService` in ~100 tokens, checks `paradigm_ripple` to see what depends on it, reads the `.purpose` file to understand the directory, and follows the team's logging convention. The result is faster, safer, and more consistent code changes.
48
+
49
+ ## What You Will Learn
50
+
51
+ In this course you will learn the five symbols and when to use each one, how to write and read `.purpose` files, how to classify symbols with tags, how to use the Paradigm logger, how the `.paradigm/` directory is organized, how `portal.yaml` secures your routes, and how to set up a new project from scratch.
@@ -0,0 +1,175 @@
1
+ ---
2
+ id: N-para-201-architecture-review
3
+ title: Putting It All Together
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-201
11
+ - feature-building-follows
12
+ - implementation-comes-last
13
+ - check-existing-aspects
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 4
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-201.json
21
+ ---
22
+
23
+ ## Building a Complete Feature
24
+
25
+ You have learned flows, gates, aspects, disciplines, naming conventions, component patterns, signal patterns, and cross-cutting concerns. Now let us walk through building a complete feature from scratch, using every tool in the Paradigm toolkit. The feature: **a team invitation system** where team admins can invite new members via email.
26
+
27
+ ## Step 1: Identify Components
28
+
29
+ Start by listing the code units you will need:
30
+
31
+ ```yaml
32
+ #invitation-service:
33
+ description: Creates and manages team invitations
34
+ tags: [feature, teams]
35
+
36
+ #invitation-email:
37
+ description: Sends invitation emails via SendGrid
38
+ tags: [integration, sendgrid, email]
39
+
40
+ #invitation-token:
41
+ description: Generates and validates secure invitation tokens
42
+ tags: [infrastructure, security]
43
+
44
+ #invitation-store:
45
+ description: Persists invitations with status tracking
46
+ tags: [state, teams]
47
+ ```
48
+
49
+ Four components — one feature, one integration, one infrastructure, one state. Each has a clear responsibility and appropriate tags.
50
+
51
+ ## Step 2: Define the Flow
52
+
53
+ The invitation process spans all four components in sequence:
54
+
55
+ ```yaml
56
+ $team-invitation-flow:
57
+ description: Admin invites a user, email is sent, user accepts and joins team
58
+ steps:
59
+ - component: "#invitation-service"
60
+ action: create-invitation
61
+ description: Validates admin permissions and creates invitation record
62
+ - component: "#invitation-token"
63
+ action: generate-token
64
+ description: Creates a cryptographically secure token with 7-day expiry
65
+ - component: "#invitation-store"
66
+ action: persist-invitation
67
+ description: Saves invitation with pending status
68
+ - component: "#invitation-email"
69
+ action: send-invite
70
+ description: Sends email with accept link containing the token
71
+ signals: ["!invitation-sent", "!invitation-accepted"]
72
+ gates: ["^authenticated", "^team-admin"]
73
+ ```
74
+
75
+ ## Step 3: Add Gates
76
+
77
+ Two gates are needed. First, check `portal.yaml` for existing gates. `^authenticated` likely exists. `^team-admin` may need to be created:
78
+
79
+ ```yaml
80
+ # In portal.yaml
81
+ gates:
82
+ ^team-admin:
83
+ description: User must be an admin of the specified team
84
+ check: team.admins.includes(req.user.id)
85
+ type: role
86
+ requires: [^authenticated]
87
+ effects: []
88
+
89
+ routes:
90
+ "POST /api/teams/:id/invitations": [^authenticated, ^team-admin]
91
+ "POST /api/invitations/:token/accept": [^authenticated]
92
+ "GET /api/teams/:id/invitations": [^authenticated, ^team-admin]
93
+ "DELETE /api/invitations/:id": [^authenticated, ^team-admin]
94
+ ```
95
+
96
+ Notice that accepting an invitation only requires `^authenticated` — any logged-in user with a valid token can accept. But creating, listing, and deleting invitations requires `^team-admin`.
97
+
98
+ ## Step 4: Define Signals
99
+
100
+ ```yaml
101
+ !invitation-sent:
102
+ description: An invitation email was successfully sent to a prospective team member
103
+ emitters: ["#invitation-service"]
104
+ category: business
105
+ data:
106
+ invitationId: string
107
+ teamId: string
108
+ email: string
109
+
110
+ !invitation-accepted:
111
+ description: A user accepted a team invitation and joined the team
112
+ emitters: ["#invitation-service"]
113
+ category: business
114
+ data:
115
+ invitationId: string
116
+ teamId: string
117
+ userId: string
118
+ ```
119
+
120
+ These business signals enable decoupled side effects — an analytics tracker can listen for `!invitation-accepted` to track conversion rates, and a notification service can alert existing team members.
121
+
122
+ ## Step 5: Apply Aspects
123
+
124
+ Check which aspects apply to the new components:
125
+
126
+ - `~audit-required` applies to `#*Service` → `#invitation-service` is covered. Ensure the audit middleware is applied.
127
+ - `~rate-limited` applies to `#*-handler` → Not directly applicable here (no handler component), but the API route should go through the rate limiter.
128
+ - `~validated` applies to `#*-handler` → The invitation endpoint should validate input (email format, team existence).
129
+
130
+ ## Step 6: Write the .purpose File
131
+
132
+ Assemble everything into `src/invitations/.purpose`:
133
+
134
+ ```yaml
135
+ name: Team Invitations
136
+ description: Team admin invitation system with email delivery and token-based acceptance
137
+ context:
138
+ - Invitation tokens expire after 7 days
139
+ - Maximum 50 pending invitations per team
140
+ - Uses SendGrid for email delivery
141
+
142
+ components:
143
+ #invitation-service:
144
+ description: Creates and manages team invitations
145
+ file: invitation-service.ts
146
+ tags: [feature, teams]
147
+ flows: ["$team-invitation-flow"]
148
+ signals: ["!invitation-sent", "!invitation-accepted"]
149
+ gates: ["^authenticated", "^team-admin"]
150
+ aspects: ["~audit-required"]
151
+ # ... (remaining components)
152
+
153
+ flows:
154
+ $team-invitation-flow:
155
+ # ... (as defined above)
156
+
157
+ signals:
158
+ !invitation-sent:
159
+ # ... (as defined above)
160
+ !invitation-accepted:
161
+ # ... (as defined above)
162
+ ```
163
+
164
+ ## Step 7: Validate
165
+
166
+ Before writing any implementation code, validate the Paradigm definitions:
167
+
168
+ 1. `paradigm_purpose_validate` — Checks the .purpose file for schema errors.
169
+ 2. `paradigm_flow_check` — Verifies the flow references valid components.
170
+ 3. `paradigm_aspect_check` — Confirms aspect anchors are valid for applied aspects.
171
+ 4. `paradigm_ripple` — Shows what existing code is affected by the new components.
172
+
173
+ ## The Pattern
174
+
175
+ Every feature follows this pattern: **identify components** → **define flows** → **add gates** → **define signals** → **apply aspects** → **write .purpose** → **validate** → **implement**. The implementation comes last — after the architecture is documented and validated. This front-loaded documentation pays dividends: AI agents can navigate the new feature immediately, security is defined before code, and the team has a clear map of what will be built.
@@ -0,0 +1,79 @@
1
+ ---
2
+ id: N-para-201-aspect-graph
3
+ title: The Aspect Graph
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-201
11
+ - aspect-graph-connects
12
+ - five-aspect-categories
13
+ - five-edge-relations
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 3
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-201.json
21
+ ---
22
+
23
+ ## What Is the Aspect Graph?
24
+
25
+ In earlier lessons you learned that aspects (`~`) represent cross-cutting rules, constraints, and configuration values anchored to specific lines of code. The **aspect graph** connects those aspects to each other and to the rest of your symbol system — components, gates, flows, and signals — creating a queryable relationship map.
26
+
27
+ Think of it this way: a single aspect like `~token-expiry-24h` is useful on its own. But when you can see that it is *enforced by* `^authenticated`, *related to* `~refresh-token-7d`, and linked to a lore entry explaining why the team chose 24 hours — that is the graph at work.
28
+
29
+ ## v3.5 Aspect Fields
30
+
31
+ Paradigm v3.5 extended aspects with structured fields that make them graph-ready:
32
+
33
+ ```yaml
34
+ aspects:
35
+ ~rate-limit-100:
36
+ description: API rate limited to 100 requests per minute
37
+ value: 100/min
38
+ category: constraint
39
+ severity: high
40
+ anchors:
41
+ - src/middleware/rate-limiter.ts:12-18
42
+ applies-to: [#api-gateway]
43
+ edges:
44
+ - symbol: ^authenticated
45
+ relation: enforced-by
46
+ tags: [security, performance]
47
+ ```
48
+
49
+ Key fields:
50
+ - **value** — The concrete value (a number, duration, threshold) making aspects searchable by content
51
+ - **category** — One of five types: `rule` (behavioral), `decision` (architectural choice), `constraint` (hard limit), `configuration` (environment-specific), `invariant` (always-true condition)
52
+ - **severity** — Impact of violation: `low`, `medium`, `high`, `critical`
53
+ - **edges** — Explicit relationships to other symbols with typed relations: `enforced-by`, `depends-on`, `contradicts`, `supersedes`, `related-to`
54
+ - **lore** — References to lore entries providing historical context
55
+
56
+ ## Working with the Graph
57
+
58
+ Seven MCP tools let you interact with the aspect graph:
59
+
60
+ | Tool | Purpose |
61
+ |------|---------|
62
+ | `paradigm_aspect_search` | Find aspects by keyword — uses a three-tier search (learned mappings, full-text, fuzzy) |
63
+ | `paradigm_aspect_get` | Deep-dive: full definition, code snippets at anchors, edges, linked lore |
64
+ | `paradigm_aspect_graph` | Explore the neighborhood around a symbol (N hops out) |
65
+ | `paradigm_aspect_heatmap` | See which aspects are accessed most (search, ripple, navigate, direct) |
66
+ | `paradigm_aspect_suggest_scan` | Scan a source file for undocumented aspects (magic numbers, hardcoded strings, rate limits, etc.) |
67
+ | `paradigm_aspect_drift` | Check if code at anchored lines changed since last scan (SHA-256 hash comparison) |
68
+ | `paradigm_aspect_confirm` | Confirm a search result to improve future search accuracy (learning loop) |
69
+
70
+ The graph is stored as a SQLite database at `.paradigm/aspect-graph.db` — a derived artifact rebuilt by `paradigm_reindex`. The YAML `.purpose` files remain the source of truth.
71
+
72
+ ## When to Use the Aspect Graph
73
+
74
+ - **Before modifying enforcement code** — call `paradigm_aspect_drift` to check for stale anchors
75
+ - **Exploring unfamiliar rules** — call `paradigm_aspect_search` then `paradigm_aspect_get` for full context
76
+ - **Understanding impact** — call `paradigm_aspect_graph` to see what a change affects
77
+ - **Finding undocumented rules** — call `paradigm_aspect_suggest_scan` on source files
78
+
79
+ > **Deep dive:** PARA 501 covers the SQLite schema, three-tier search internals, the learning loop, edge origins (explicit vs inferred vs learned), and the materialization pipeline in detail.