@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,112 @@
1
+ ---
2
+ id: N-para-201-aspects-and-anchors
3
+ title: Aspects & Code Anchors
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-201
11
+ - aspects-are-the
12
+ - anchor-formats-single
13
+ - applies-to-uses-glob
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
+ ## Why Aspects Require Anchors
24
+
25
+ Aspects (`~`) are unique among Paradigm's five symbols because they are the only ones that **require code anchors**. An anchor is a pointer to the exact lines of code where the aspect is enforced. This requirement exists for a practical reason: an aspect without an anchor is just a wish.
26
+
27
+ Consider `~audit-required`. If you define it without anchors, you are saying "financial operations should be audited" — but there is no proof that they actually are. With anchors pointing to `src/middleware/audit.ts:15-35`, you are saying "financial operations are audited, and here is the enforcement code." AI agents can verify the anchor, developers can review it, and `paradigm_aspect_check` can validate that the code still exists.
28
+
29
+ ## Anchor Format
30
+
31
+ Anchors support three formats:
32
+
33
+ ```yaml
34
+ ~rate-limited:
35
+ description: API endpoints are rate-limited to prevent abuse
36
+ anchors:
37
+ - src/middleware/rate-limiter.ts:42 # Single line
38
+ - src/middleware/rate-limiter.ts:42-78 # Line range
39
+ - src/decorators/throttle.ts:10,15,22 # Multiple specific lines
40
+ applies-to: ["#*-handler"]
41
+ ```
42
+
43
+ - **Single line** (`file:42`) — Points to one specific line. Use when the enforcement is a single check or decorator.
44
+ - **Range** (`file:42-78`) — Points to a block of code. Use when the enforcement spans multiple lines (a middleware function, a class method).
45
+ - **Multiple lines** (`file:10,15,22`) — Points to several non-contiguous lines. Use when the enforcement is scattered across a file (multiple decorators, multiple conditional checks).
46
+
47
+ Anchors must point to *real files with real code*. If the file does not exist or the lines are outside the file's range, `paradigm_aspect_check` will report an error.
48
+
49
+ ## The applies-to Pattern
50
+
51
+ The `applies-to` field uses glob patterns to declare which symbols the aspect covers:
52
+
53
+ ```yaml
54
+ ~audit-required:
55
+ applies-to: ["#*Service"] # All components ending in 'Service'
56
+
57
+ ~rate-limited:
58
+ applies-to: ["#*-handler", "#*-endpoint"] # All handlers and endpoints
59
+
60
+ ~cached:
61
+ applies-to: ["#*-query"] # All query components
62
+ ```
63
+
64
+ This is declarative — it says "this aspect should apply to these components." AI agents use this to check whether a new component matching the pattern has the aspect applied. If you create `#billing-service` and `~audit-required` applies to `#*Service`, the agent knows to apply the audit aspect.
65
+
66
+ ## Defining Aspects in .purpose Files
67
+
68
+ ```yaml
69
+ aspects:
70
+ ~audit-required:
71
+ description: All financial operations must log to the audit trail
72
+ anchors:
73
+ - src/middleware/audit.ts:15-35
74
+ - src/decorators/auditable.ts:1-20
75
+ applies-to: ["#*Service"]
76
+ enforcement: middleware
77
+ tags: [compliance, security]
78
+
79
+ ~rate-limited:
80
+ description: API endpoints enforce per-user rate limits
81
+ anchors:
82
+ - src/middleware/rate-limiter.ts:42-78
83
+ applies-to: ["#*-handler"]
84
+ enforcement: middleware
85
+ tags: [security, performance]
86
+ ```
87
+
88
+ The `enforcement` field is optional metadata that describes *how* the aspect is enforced — via middleware, decorator, wrapper function, etc. It helps AI agents understand the enforcement mechanism when they need to apply the aspect to new components.
89
+
90
+ ## Validating Aspects
91
+
92
+ Use `paradigm_aspect_check` to verify that an aspect's anchors are valid:
93
+
94
+ ```
95
+ paradigm_aspect_check({ aspect: "~audit-required" })
96
+ ```
97
+
98
+ This tool checks:
99
+ 1. **Anchor existence** — Do the referenced files exist?
100
+ 2. **Line validity** — Are the line numbers within the file's range?
101
+ 3. **Coverage** — Are all components matching `applies-to` actually covered?
102
+
103
+ Run this after refactoring. If you move or rename files, the anchors break — and a broken anchor means the enforcement code is lost or relocated. The aspect check catches this drift.
104
+
105
+ ## Aspects vs Gates
106
+
107
+ A common confusion: when should you use an aspect (`~`) versus a gate (`^`)? The distinction is clear:
108
+
109
+ - **Gates** check a *specific condition at a specific time*. "Can this user access this project?" or "Is this feature flag enabled?" is a gate.
110
+ - **Aspects** enforce rules *across many components as a pattern*. "All financial services must log to the audit trail" is an aspect.
111
+
112
+ Gates are reactive (triggered per request or operation). Aspects are structural (enforced by code patterns). A gate checks one condition at one point; an aspect applies to all components matching a pattern.
@@ -0,0 +1,138 @@
1
+ ---
2
+ id: N-para-201-component-patterns
3
+ title: Component Patterns
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-components-user-facing
12
+ - integration-components-third-party
13
+ - state-components-data
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
+ ## The Many Faces of `#`
24
+
25
+ The `#` component is Paradigm's most used symbol — and intentionally the broadest. It covers everything from a React button to a database service to a CLI command parser. This breadth is a feature, not a bug: it means you never struggle to classify code. But it also means you need **tags** to create meaningful subcategories.
26
+
27
+ This lesson covers the major component patterns and when to use each one.
28
+
29
+ ## Feature Components
30
+
31
+ Feature components represent **user-facing functionality**. They are the things your users interact with — checkout, search, profile editing, notification preferences.
32
+
33
+ ```yaml
34
+ #checkout:
35
+ description: Shopping cart checkout with payment processing
36
+ file: checkout.ts
37
+ tags: [feature, critical, payments]
38
+ flows: ["$checkout-flow"]
39
+ signals: ["!order-placed"]
40
+ gates: ["^authenticated"]
41
+
42
+ #search:
43
+ description: Full-text search across products and content
44
+ file: search.ts
45
+ tags: [feature, search]
46
+ ```
47
+
48
+ Feature components often have the richest cross-references: they participate in flows, emit signals, and require gates. They are the entry points into your system's behavior.
49
+
50
+ ## Integration Components
51
+
52
+ Integration components wrap **third-party services**. They isolate external API calls behind a stable internal interface:
53
+
54
+ ```yaml
55
+ #stripe-service:
56
+ description: Stripe API client for payment processing
57
+ file: stripe-service.ts
58
+ tags: [integration, stripe, payments]
59
+ signals: ["!payment-completed", "!payment-failed"]
60
+
61
+ #sendgrid-client:
62
+ description: SendGrid email delivery wrapper
63
+ file: sendgrid.ts
64
+ tags: [integration, sendgrid, email]
65
+ ```
66
+
67
+ The convention is to tag integrations with both `[integration]` and the service name (`[stripe]`, `[sendgrid]`). This lets you search for all integrations OR for all Stripe-related code specifically.
68
+
69
+ ## State Components
70
+
71
+ State components manage **data storage and state containers** — databases, caches, in-memory stores, Redux slices:
72
+
73
+ ```yaml
74
+ #user-store:
75
+ description: User data persistence and caching layer
76
+ file: user-store.ts
77
+ tags: [state, users, cache]
78
+
79
+ #session-cache:
80
+ description: Redis-backed session storage with 24h TTL
81
+ file: session-cache.ts
82
+ tags: [state, session, redis]
83
+ ```
84
+
85
+ State components are often referenced by many other components. Use `paradigm_ripple` before modifying them — a change to `#user-store` might impact every feature that reads user data.
86
+
87
+ ## Infrastructure Components
88
+
89
+ Infrastructure components provide **foundational services** that other components depend on but users never directly interact with:
90
+
91
+ ```yaml
92
+ #logger:
93
+ description: Structured logging with symbol tagging
94
+ file: logger.ts
95
+ tags: [infrastructure, observability]
96
+
97
+ #config-loader:
98
+ description: Environment-aware configuration loading
99
+ file: config.ts
100
+ tags: [infrastructure, config]
101
+
102
+ #database-pool:
103
+ description: PostgreSQL connection pool with health checks
104
+ file: db.ts
105
+ tags: [infrastructure, database, postgres]
106
+ ```
107
+
108
+ Infrastructure components rarely have flows or gates, but they are often the most fragile — many other components depend on them. Check `paradigm_history_fragility` before making changes.
109
+
110
+ ## When to Split vs Combine
111
+
112
+ A common question: should a large module be one component or several?
113
+
114
+ **Split when:**
115
+ - The module has distinct responsibilities that could change independently
116
+ - Different parts require different gates or emit different signals
117
+ - The file exceeds ~300 lines and contains clearly separable logic
118
+
119
+ **Combine when:**
120
+ - The parts are tightly coupled and always change together
121
+ - Splitting would create components with trivial descriptions ("calls the other half")
122
+ - The module is a cohesive unit with a single responsibility
123
+
124
+ ```yaml
125
+ # Good split — distinct responsibilities
126
+ #payment-processor:
127
+ description: Charges cards via Stripe
128
+ #payment-validator:
129
+ description: Validates payment amounts and currencies
130
+
131
+ # Bad split — artificial separation
132
+ #payment-step-1:
133
+ description: First half of payment processing
134
+ #payment-step-2:
135
+ description: Second half of payment processing
136
+ ```
137
+
138
+ If you cannot describe the component without referencing the other half, they should be one component.
@@ -0,0 +1,145 @@
1
+ ---
2
+ id: N-para-201-cross-cutting-concerns
3
+ title: Cross-Cutting Concerns
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-201
11
+ - cross-cutting-concerns-apply
12
+ - common-aspects-audit
13
+ - applies-to-uses-glob
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
+ ## Rules That Span the System
24
+
25
+ Some requirements do not belong to any single component. "All financial operations must be audited." "All API endpoints must be rate-limited." "All sensitive data must be encrypted at rest." These are **cross-cutting concerns** — rules that apply across multiple components as a structural pattern rather than a per-request check.
26
+
27
+ Paradigm models cross-cutting concerns as **aspects** (`~`). Unlike gates (which check access per request) or signals (which fire per event), aspects describe ongoing constraints that are enforced by code patterns, middleware, decorators, or architectural choices.
28
+
29
+ ## Common Aspect Patterns
30
+
31
+ ### Audit Trails
32
+
33
+ ```yaml
34
+ ~audit-required:
35
+ description: All financial operations must log to the audit trail with user, action, and timestamp
36
+ anchors:
37
+ - src/middleware/audit.ts:15-35
38
+ - src/decorators/auditable.ts:1-20
39
+ applies-to: ["#*Service"]
40
+ enforcement: middleware
41
+ tags: [compliance, security]
42
+ ```
43
+
44
+ Audit aspects ensure that certain operations leave a trail. The anchors point to the middleware or decorator that performs the logging. Any service matching `#*Service` is expected to use this middleware.
45
+
46
+ ### Rate Limiting
47
+
48
+ ```yaml
49
+ ~rate-limited:
50
+ description: API endpoints enforce per-user rate limits (100 req/min default)
51
+ anchors:
52
+ - src/middleware/rate-limiter.ts:10-45
53
+ applies-to: ["#*-handler", "#*-endpoint"]
54
+ enforcement: middleware
55
+ tags: [security, performance]
56
+ ```
57
+
58
+ Rate limiting protects against abuse. The aspect documents the default limit (100 req/min) and points to the middleware that enforces it.
59
+
60
+ ### Caching
61
+
62
+ ```yaml
63
+ ~cached:
64
+ description: Read-heavy queries use a 5-minute TTL cache
65
+ anchors:
66
+ - src/lib/cache-wrapper.ts:20-55
67
+ applies-to: ["#*-query"]
68
+ enforcement: wrapper-function
69
+ tags: [performance]
70
+ ```
71
+
72
+ ### Input Validation
73
+
74
+ ```yaml
75
+ ~validated:
76
+ description: All API inputs are validated against defined schemas before processing
77
+ anchors:
78
+ - src/middleware/validate.ts:1-30
79
+ - src/schemas/index.ts:1-50
80
+ applies-to: ["#*-handler"]
81
+ enforcement: middleware
82
+ tags: [security, data-integrity]
83
+ ```
84
+
85
+ ### Idempotency
86
+
87
+ ```yaml
88
+ ~idempotent:
89
+ description: Mutation endpoints use idempotency keys to prevent duplicate processing
90
+ anchors:
91
+ - src/middleware/idempotency.ts:15-60
92
+ applies-to: ["#*-handler"]
93
+ enforcement: middleware
94
+ tags: [reliability, payments]
95
+ ```
96
+
97
+ ### Encryption at Rest
98
+
99
+ ```yaml
100
+ ~encrypted-at-rest:
101
+ description: Sensitive fields are encrypted before storage using AES-256-GCM
102
+ anchors:
103
+ - src/lib/encryption.ts:10-45
104
+ - src/models/base-model.ts:30-50
105
+ applies-to: ["#*-store"]
106
+ enforcement: model-hook
107
+ tags: [security, compliance]
108
+ ```
109
+
110
+ ## The applies-to Glob Pattern
111
+
112
+ The `applies-to` field uses glob patterns to declare which symbols the aspect covers:
113
+
114
+ | Pattern | Matches |
115
+ |---------|---------|
116
+ | `#*Service` | `#payment-service`, `#email-service`, `#auth-service` |
117
+ | `#*-handler` | `#login-handler`, `#webhook-handler` |
118
+ | `#*-store` | `#user-store`, `#session-store` |
119
+ | `#*` | All components (use sparingly) |
120
+
121
+ When an AI agent creates a new component matching a pattern, it should check whether any aspects apply. If `~rate-limited` applies to `#*-handler` and the agent creates `#upload-handler`, the agent should ensure rate limiting middleware is applied.
122
+
123
+ ## Aspects vs Other Symbols
124
+
125
+ Understanding when to use each symbol avoids misclassification:
126
+
127
+ | If the rule... | Use |
128
+ |----------------|-----|
129
+ | Checks a specific condition per request or operation | `^` Gate |
130
+ | Fires an event that triggers side effects | `!` Signal |
131
+ | Applies the same pattern across many components | `~` Aspect |
132
+ | Describes a multi-step process | `$` Flow |
133
+
134
+ A rate limiter is an aspect (it applies the same pattern to all handlers), not a gate (it does not check authorization). An audit log is an aspect (it applies to all financial services), not a signal (it is a structural requirement, not a one-time event).
135
+
136
+ ## Maintaining Aspects During Refactors
137
+
138
+ Aspects are the most maintenance-sensitive symbol because their anchors contain file paths and line numbers. When you refactor:
139
+
140
+ 1. Run `paradigm_aspect_check` before the refactor to know the current state.
141
+ 2. Make your code changes.
142
+ 3. Run `paradigm_aspect_check` again to find broken anchors.
143
+ 4. Update the anchors in the `.purpose` file to point to the new locations.
144
+
145
+ This is a conscious trade-off: anchors create maintenance burden, but they prevent the much worse problem of unverified rules that silently stop being enforced.
@@ -0,0 +1,187 @@
1
+ ---
2
+ id: N-para-201-disciplines
3
+ title: Disciplines
4
+ type: note
5
+ author: paradigm
6
+ created: '2026-04-22'
7
+ updated: '2026-04-22'
8
+ tags:
9
+ - course
10
+ - para-201
11
+ - disciplines-define-how
12
+ - 14-disciplines-web
13
+ - auto-detection-at-init
14
+ symbols: []
15
+ difficulty: beginner
16
+ estimatedMinutes: 7
17
+ prerequisites: []
18
+ category: paradigm-core
19
+ origin: imported
20
+ source: courses/para-201.json
21
+ ---
22
+
23
+ ## How Symbols Map Across Domains
24
+
25
+ A Paradigm `discipline` defines how directory patterns and code structures map to symbol types in a specific development domain. A web frontend project organizes code differently from a backend API, which differs from a CLI tool. Disciplines capture these differences so that tooling — the navigator, the logging conventions, gate recommendations, and auto-scan — works correctly regardless of your tech stack.
26
+
27
+ ## Auto-Detection
28
+
29
+ When you run `paradigm shift` or `paradigm init`, Paradigm automatically detects the discipline from your project structure. It examines `package.json`, `Cargo.toml`, `go.mod`, `pyproject.toml`, and other project markers to infer the best match. The detected discipline is written to `.paradigm/config.yaml`:
30
+
31
+ ```yaml
32
+ discipline: fullstack # auto-detected from Next.js in package.json
33
+ ```
34
+
35
+ Detection heuristics include: monorepo markers (workspaces), framework deps (Next.js → fullstack, React alone → web, Express alone → api), Python ML deps (PyTorch → ml), Rust crate deps (clap → cli, axum → api, bevy → game), and more. You can always override the detected value.
36
+
37
+ ## The 14 Disciplines
38
+
39
+ Paradigm supports 14 disciplines, each with tailored symbol mappings, purpose-required paths, and scan patterns:
40
+
41
+ | Discipline | When to Use | Key Directories |
42
+ |------------|-------------|------------------|
43
+ | `web` | Frontend-only (React, Vue, Svelte) | `components/`, `pages/`, `hooks/`, `stores/` |
44
+ | `backend` | General backend (fallback) | `services/`, `routes/`, `models/` |
45
+ | `fullstack` | SSR or combined frontend+backend (Next.js, Django) | `components/`, `pages/`, `api/`, `services/` |
46
+ | `api` | API-only (Express, FastAPI, Gin) | `routes/`, `endpoints/`, `controllers/` |
47
+ | `cli` | CLI tools (Node bin, Click, clap) | `commands/`, `cmd/` |
48
+ | `ml` | Machine learning (PyTorch, TF, scikit-learn) | `models/`, `experiments/`, `pipelines/` |
49
+ | `mobile` | Mobile apps (React Native, Flutter) | `screens/`, `widgets/`, `navigation/` |
50
+ | `game` | Game dev (Bevy, Godot, Unity) | `gameplay/`, `entities/`, `systems/` |
51
+ | `embedded` | Embedded/IoT (embedded-hal, PlatformIO) | `drivers/`, `hal/`, `protocols/` |
52
+ | `devops` | Infrastructure (Terraform, Ansible) | `modules/`, `pipelines/`, `scripts/` |
53
+ | `data` | Data engineering (dbt, Airflow, Spark) | `models/`, `dags/`, `transforms/` |
54
+ | `library` | Reusable packages (npm, PyPI, crates) | `src/`, `lib/` |
55
+ | `monorepo` | Multi-package repos (workspaces, Nx) | `packages/`, `apps/`, `libs/` |
56
+ | `custom` | User-defined mappings | Whatever you configure |
57
+
58
+ ## Web Discipline
59
+
60
+ In a web project, the primary units are routes, components, and pages:
61
+
62
+ | Directory | Symbol | Rationale |
63
+ |-----------|--------|-----------|
64
+ | `routes/`, `pages/`, `views/` | `#` component | User-facing entry points |
65
+ | `components/` | `#` component | Reusable UI elements |
66
+ | `hooks/` | `#` component | Shared logic (hooks are code units, not signals) |
67
+ | `stores/`, `state/` | `#` component (tag: `[state]`) | Client-side state |
68
+ | `middleware/` | `^` gate | Route guards and auth checks |
69
+ | `api/` | `#` component | API client wrappers |
70
+
71
+ An important distinction: **hooks are components, not signals**. A frontend hook like `useAuth` encapsulates logic — it is `#useAuth`, a component. The `!` signal prefix is reserved for events that trigger decoupled side effects.
72
+
73
+ ## Backend / API Discipline
74
+
75
+ In a backend or API project, the primary units are services, controllers, and models:
76
+
77
+ | Directory | Symbol | Rationale |
78
+ |-----------|--------|-----------|
79
+ | `services/` | `#` component | Business logic |
80
+ | `controllers/`, `handlers/` | `#` component | Request handlers |
81
+ | `models/`, `entities/` | `#` component (tag: `[state]`) | Data models |
82
+ | `middleware/`, `guards/` | `^` gate | Auth and validation |
83
+ | `events/`, `listeners/` | `!` signal | Event emitters and handlers |
84
+ | `jobs/`, `workers/` | `#` component | Background processing |
85
+ | `integrations/`, `clients/` | `#` component (tag: `[integration]`) | External service wrappers |
86
+
87
+ The `api` discipline is like `backend` but focused on HTTP endpoints (adds `endpoints/`, `controllers/`, `webhooks/`).
88
+
89
+ ## Fullstack Discipline
90
+
91
+ The fullstack discipline combines both mappings. Paradigm determines which mapping to use based on the directory path:
92
+
93
+ ```
94
+ src/
95
+ client/ → Web discipline mappings apply
96
+ server/ → Backend discipline mappings apply
97
+ shared/ → Common mappings (# for all code units)
98
+ ```
99
+
100
+ Auto-detected for SSR frameworks like Next.js, Nuxt, SvelteKit, or when both React and Express are present.
101
+
102
+ ## Domain-Specific Disciplines
103
+
104
+ **ML**: Scans `models/`, `experiments/`, `notebooks/`. Pipelines map to `$` flows. Training events map to `!` signals.
105
+
106
+ **Data**: Scans `dbt/`, `dags/`, `transforms/`. ETL pipelines are `$` flows. Data quality checks are `!` signals.
107
+
108
+ **Game**: Scans `gameplay/`, `entities/`, `systems/`. Game loops are `$` flows. Game events are `!` signals.
109
+
110
+ **Embedded**: Scans `drivers/`, `hal/`, `protocols/`. State machines are `$` flows. Interrupts are `!` signals.
111
+
112
+ ## Why Disciplines Matter
113
+
114
+ Disciplines affect four things:
115
+
116
+ 1. **Symbol mappings** — Each discipline populates the `logging.symbol-mapping` section in config.yaml with directory-to-symbol mappings appropriate for your domain.
117
+ 2. **Navigator generation** — `paradigm scan` uses the discipline to categorize directories and suggest symbol types for undocumented code.
118
+ 3. **Gate recommendations** — `paradigm_gates_for_route` uses the discipline to understand which routes exist and what patterns apply.
119
+ 4. **Auto-scan patterns** — `paradigm scan --auto` adds discipline-specific file patterns (e.g., ML scans `.ipynb` notebooks, game scans `.gd` scripts).
120
+
121
+ With auto-detection, most projects get the right discipline without any manual configuration.
122
+
123
+ ## Custom Mappings
124
+
125
+ If your project does not fit a standard discipline, you can override mappings in `config.yaml`:
126
+
127
+ ```yaml
128
+ discipline: backend
129
+ custom-mappings:
130
+ "workers/": "#" # Override default if needed
131
+ "policies/": "^" # Treat policies as gates
132
+ "sagas/": "$" # Treat sagas as flows
133
+ ```
134
+
135
+ Custom mappings extend (not replace) the discipline defaults. Or set `discipline: custom` and define everything yourself.
136
+
137
+ ## Stack Presets
138
+
139
+ Disciplines tell Paradigm *what kind* of project you have (web, backend, mobile). Stack presets go one level deeper — they tell Paradigm *which framework* you are using. A stack preset layers framework-specific configuration on top of the discipline.
140
+
141
+ Paradigm ships 16 stack presets:
142
+
143
+ | Preset | Discipline | What It Adds |
144
+ |--------|------------|-------------|
145
+ | `nextjs` | fullstack | `app/` routes, server actions, RSC patterns |
146
+ | `remix` | fullstack | loader/action patterns, nested routes |
147
+ | `sveltekit` | fullstack | `+page.svelte`, `+server.ts` patterns |
148
+ | `nuxt` | fullstack | `composables/`, auto-imports |
149
+ | `react-spa` | web | CRA/Vite SPA patterns, `hooks/`, `contexts/` |
150
+ | `vue-spa` | web | Composition API, Pinia stores |
151
+ | `express` | api | `app.get/post`, middleware chains |
152
+ | `fastapi` | api | `@app.get`, Pydantic models, dependency injection |
153
+ | `django` | fullstack | `views.py`, `models.py`, `urls.py` |
154
+ | `flask` | api | `@app.route`, blueprints |
155
+ | `gin-go` | api | `r.GET`, handler groups |
156
+ | `axum-rs` | api | Axum extractors, tower middleware |
157
+ | `swift-ios` | mobile | SwiftUI views, `@Observable`, navigation |
158
+ | `kotlin-android` | mobile | Jetpack Compose, ViewModels, Hilt |
159
+ | `react-native` | mobile | Expo/bare RN, navigation, native modules |
160
+ | `flutter` | mobile | Widgets, BLoC/Riverpod, platform channels |
161
+
162
+ Stack presets are auto-detected during `paradigm init` from your dependencies and project files. You can also specify one explicitly:
163
+
164
+ ```bash
165
+ paradigm init --stack nextjs
166
+ ```
167
+
168
+ The detected stack is written to config.yaml:
169
+
170
+ ```yaml
171
+ discipline: fullstack
172
+ stack: nextjs
173
+ ```
174
+
175
+ Stack presets add three things on top of the discipline:
176
+ 1. **Refined symbol mappings** — Framework-specific directories (e.g., `app/api/` for Next.js route handlers)
177
+ 2. **Purpose-required paths** — Directories that should have `.purpose` files for the framework to work well with Paradigm
178
+ 3. **Scan hints** — Framework-specific patterns for component detection, route patterns, auth patterns, and state management
179
+
180
+ To see all available presets:
181
+
182
+ ```bash
183
+ paradigm presets
184
+ paradigm presets --discipline mobile # Filter by discipline
185
+ ```
186
+
187
+ Stack presets solve the cold-start problem: when you run `paradigm init` on an existing Next.js project, the preset knows to look for `app/` routes, server components, and API handlers — producing meaningful `.purpose` scaffolding instead of generic stubs.