@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,56 @@
1
+ id: Q-para-101-welcome
2
+ title: 'PARA 101: Foundations — Welcome to Paradigm'
3
+ description: 'Quiz for lesson: Welcome to Paradigm'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-101
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-101.json
16
+ questions:
17
+ - id: q1
18
+ question: What is Paradigm best described as?
19
+ choices:
20
+ A: A JavaScript component library for building UIs
21
+ B: A code generation tool that scaffolds project boilerplate
22
+ C: A meta-framework that organizes how AI agents understand your codebase
23
+ D: A testing framework with built-in assertion helpers
24
+ E: A deployment pipeline tool for CI/CD
25
+ correct: C
26
+ explanation: Paradigm is a meta-framework — it does not ship runtime code or components. Its purpose is to give AI agents structured context (symbols, purpose files, specifications) so they can navigate and modify codebases efficiently.
27
+ - id: q2
28
+ question: Which of the following is NOT one of Paradigm's three pillars?
29
+ choices:
30
+ A: Symbols
31
+ B: Purpose Files
32
+ C: Specifications
33
+ D: Runtime Middleware
34
+ E: All of the above are pillars
35
+ correct: D
36
+ explanation: Paradigm's three pillars are Symbols (the vocabulary), Purpose Files (the directory maps), and Specifications (the project rulebook). Runtime Middleware is not a Paradigm concept — Paradigm is metadata, not runtime code.
37
+ - id: q3
38
+ question: What problem does Paradigm primarily solve for AI agents?
39
+ choices:
40
+ A: Slow compilation times in large TypeScript projects
41
+ B: Excessive token usage and missed context when navigating undocumented codebases
42
+ C: Lack of type safety in JavaScript applications
43
+ D: Difficulty deploying applications to cloud providers
44
+ E: Missing test coverage in legacy codebases
45
+ correct: B
46
+ explanation: AI agents waste tokens exploring directories, guessing relationships, and re-reading files when a codebase has no structured context. Paradigm provides that structure so agents can find what they need in ~100 tokens instead of 2,000+.
47
+ - id: q4
48
+ question: 'You open a .purpose file and see symbols prefixed with #, $, ^, !, and ~. A new team member asks what the ~ symbol means. What do you tell them?'
49
+ choices:
50
+ A: ~ marks a component — a documented code unit
51
+ B: ~ marks a flow — a multi-step process
52
+ C: ~ marks a gate — a security checkpoint
53
+ D: ~ marks a signal — an event notification
54
+ E: ~ marks an aspect — a cross-cutting rule, constraint, or configuration anchored to specific code
55
+ correct: E
56
+ explanation: 'The five symbols are: # (Component), $ (Flow), ^ (Gate), ! (Signal), and ~ (Aspect). Aspects represent cross-cutting concerns — rules, constraints, and configuration values that are anchored to specific lines of code. They are the only symbol type that requires code anchors.'
@@ -0,0 +1,66 @@
1
+ id: Q-para-201-architecture-review
2
+ title: 'PARA 201: Architecture — Putting It All Together'
3
+ description: 'Quiz for lesson: Putting It All Together'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: A team invitation feature uses a token to accept invitations. The token was created by an admin. Should the accept action require the ^team-admin gate?
19
+ choices:
20
+ A: Yes — only admins should be able to modify team membership
21
+ B: No — the invitation token itself serves as proof of authorization, so any authenticated user with a valid token should be able to accept
22
+ C: Yes — ^team-admin is always required for team-related operations
23
+ D: No — acceptance actions should be completely public with no gates at all
24
+ E: It depends on whether the token has expired
25
+ correct: B
26
+ explanation: The invitation token itself is the authorization. The admin already approved the invitation by creating it. Any authenticated user who possesses the valid token (received via email) should be able to accept. Requiring ^team-admin would make the feature useless — the invitee is not yet a team member, let alone an admin. The token acts as a delegated authorization from the admin.
27
+ - id: q2
28
+ question: The walkthrough creates four components. Put them in the correct order of the $team-invitation-flow steps.
29
+ choices:
30
+ A: '#invitation-email → #invitation-token → #invitation-store → #invitation-service'
31
+ B: '#invitation-service → #invitation-token → #invitation-store → #invitation-email'
32
+ C: '#invitation-store → #invitation-service → #invitation-email → #invitation-token'
33
+ D: '#invitation-token → #invitation-email → #invitation-service → #invitation-store'
34
+ E: '#invitation-service → #invitation-email → #invitation-token → #invitation-store'
35
+ correct: B
36
+ explanation: 'The flow is: (1) #invitation-service validates and creates, (2) #invitation-token generates the secure token, (3) #invitation-store persists the invitation, (4) #invitation-email sends the email. The service orchestrates, the token is needed before storage, and the email is sent last.'
37
+ - id: q3
38
+ question: The feature building pattern ends with 'validate → implement'. Why does implementation come last?
39
+ choices:
40
+ A: Because Paradigm generates the implementation code automatically
41
+ B: Because implementation is the least important step
42
+ C: Because documenting architecture first ensures security is defined before code, AI agents can navigate immediately, and the team has a clear map
43
+ D: Because .purpose files must be committed before any source files
44
+ E: Because the validator rejects implementations that do not match definitions
45
+ correct: C
46
+ explanation: 'Front-loading documentation has three benefits: (1) security gates are defined in portal.yaml before handler code exists, preventing auth as an afterthought, (2) AI agents can navigate the feature structure immediately, and (3) the team has a validated architectural map before writing any implementation.'
47
+ - id: q4
48
+ question: 'After defining all components for the invitation feature, you run paradigm_ripple on #invitation-service. What is this checking?'
49
+ choices:
50
+ A: Whether the invitation service's code compiles
51
+ B: Whether the service name follows naming conventions
52
+ C: 'What existing code and symbols would be affected by changes to #invitation-service'
53
+ D: Whether the service has enough test coverage
54
+ E: Whether the service's dependencies are installed
55
+ correct: C
56
+ explanation: 'paradigm_ripple analyzes the dependency graph to show what would be impacted if #invitation-service changes. This reveals connections to flows, signals, gates, and other components — helping you understand the blast radius before implementation.'
57
+ - id: q5
58
+ question: 'You notice that ~audit-required applies-to ["#*Service"] and your new #invitation-service matches this pattern. What should you do?'
59
+ choices:
60
+ A: 'Rename #invitation-service to #invitation-handler to avoid the aspect'
61
+ B: Delete the ~audit-required aspect since it is too broad
62
+ C: 'Ensure the audit middleware is applied to #invitation-service and add aspects: ["~audit-required"] to its definition'
63
+ D: Nothing — aspects are enforced automatically by Paradigm
64
+ E: Create a new aspect ~invitation-audit specific to this service
65
+ correct: C
66
+ explanation: 'When a new component matches an existing aspect''s applies-to pattern, you should apply that aspect. This means ensuring the enforcement code (audit middleware) is used by the new service and documenting the relationship by adding aspects: ["~audit-required"] to the component''s .purpose definition.'
@@ -0,0 +1,46 @@
1
+ id: Q-para-201-aspect-graph
2
+ title: 'PARA 201: Architecture — The Aspect Graph'
3
+ description: 'Quiz for lesson: The Aspect Graph'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: Your team's rate limiter was recently changed from 100 req/min to 500 req/min, but no one updated the aspect definition. Which tool would catch this?
19
+ choices:
20
+ A: paradigm_aspect_search — it would find the stale value in search results
21
+ B: paradigm_aspect_drift — it compares code hashes at anchor line ranges and detects the change
22
+ C: paradigm_aspect_heatmap — it shows the aspect is no longer being accessed
23
+ D: paradigm_aspect_graph — it reveals the broken edge to the rate limiter component
24
+ E: paradigm_reindex — it automatically updates the aspect value during reindexing
25
+ correct: B
26
+ explanation: paradigm_aspect_drift compares SHA-256 hashes of code at anchored line ranges against the hashes from the last scan. When the rate limiter code changed, the hash changed, flagging the anchor as drifted. The other tools don't detect code changes — reindex rebuilds the graph from YAML, which still has the old value.
27
+ - id: q2
28
+ question: Which aspect category best fits "JWT access tokens expire after 24 hours"?
29
+ choices:
30
+ A: rule — it defines a behavioral pattern that code must follow
31
+ B: decision — it captures an architectural choice
32
+ C: constraint — it is a hard limit that cannot be violated
33
+ D: configuration — it is a value that may differ across environments
34
+ E: invariant — it is a condition that must always hold true
35
+ correct: D
36
+ explanation: A JWT expiry duration is a configuration value — it could reasonably differ between environments (shorter in dev, longer in production). A constraint is a hard limitation (like "maximum 100 items per page"). A rule is a behavioral pattern. Configuration captures what specific value was set and where.
37
+ - id: q3
38
+ question: 'An aspect has edges: [{symbol: "^authenticated", relation: "enforced-by"}]. What does this tell you?'
39
+ choices:
40
+ A: The aspect enforces the ^authenticated gate
41
+ B: The ^authenticated gate depends on the aspect existing
42
+ C: The ^authenticated gate is the mechanism that ensures the aspect holds true
43
+ D: The aspect and the gate are in conflict
44
+ E: The aspect will be removed if the gate is deleted
45
+ correct: C
46
+ explanation: The enforced-by relation means the target symbol is what ensures the aspect's rule holds. Here, the ^authenticated gate is the checkpoint that enforces whatever the aspect defines. Aspects declare what must be true; gates enforce those truths. The edge makes this relationship explicit and queryable.
@@ -0,0 +1,56 @@
1
+ id: Q-para-201-aspects-and-anchors
2
+ title: 'PARA 201: Architecture — Aspects & Code Anchors'
3
+ description: 'Quiz for lesson: Aspects & Code Anchors'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: Why do aspects require anchors while other symbols do not?
19
+ choices:
20
+ A: Because aspects are more important than other symbols
21
+ B: Because without anchors, an aspect is an unenforced rule — a wish, not a constraint
22
+ C: Because YAML requires at least one nested field under aspects
23
+ D: Because AI agents cannot understand aspects without seeing the code
24
+ E: Because aspects are always defined in middleware files
25
+ correct: B
26
+ explanation: An aspect without anchors is just a statement of intent with no proof of enforcement. Anchors point to the actual code that enforces the rule, making the aspect verifiable by tools, reviewable by developers, and auditable by compliance.
27
+ - id: q2
28
+ question: The anchor `src/middleware/auth.ts:42-78` points to what?
29
+ choices:
30
+ A: Lines 42 and 78 only (two specific lines)
31
+ B: The 42nd through 78th characters on line 1
32
+ C: A range of lines from line 42 to line 78 inclusive
33
+ D: Column 42 through column 78 on every line in the file
34
+ E: The 42nd and 78th functions defined in the file
35
+ correct: C
36
+ explanation: The range format (file:start-end) points to a block of consecutive lines. src/middleware/auth.ts:42-78 covers lines 42 through 78 inclusive — typically a complete function or middleware definition.
37
+ - id: q3
38
+ question: 'You define `~cached` with `applies-to: ["#*-query"]`. You then create `#user-query` without applying the cache aspect. What should happen?'
39
+ choices:
40
+ A: Nothing — applies-to is just a suggestion
41
+ B: 'paradigm_aspect_check reports a coverage gap: #user-query matches the pattern but is not covered'
42
+ C: The build fails because the aspect is not applied
43
+ D: The component is automatically cached by Paradigm
44
+ E: '#user-query is renamed to #user-query-cached'
45
+ correct: B
46
+ explanation: 'The applies-to field is declarative — it says ''this aspect should cover all components matching this pattern.'' When paradigm_aspect_check runs, it identifies #user-query as matching #*-query but not having the caching aspect applied, reporting a coverage gap.'
47
+ - id: q4
48
+ question: After a major refactor, several source files were renamed and moved. What is the risk to aspects?
49
+ choices:
50
+ A: No risk — aspects are tied to symbol names, not file paths
51
+ B: Anchor references break because they point to file paths and line numbers that may no longer exist
52
+ C: The aspect definitions are automatically updated by git
53
+ D: Aspects are deleted when their files move
54
+ E: The refactor cannot proceed if aspects exist
55
+ correct: B
56
+ explanation: Anchors contain file paths and line numbers (e.g., src/middleware/audit.ts:15-35). When files are renamed, moved, or heavily edited, these references break. Running paradigm_aspect_check after refactoring catches this drift.
@@ -0,0 +1,56 @@
1
+ id: Q-para-201-component-patterns
2
+ title: 'PARA 201: Architecture — Component Patterns'
3
+ description: 'Quiz for lesson: Component Patterns'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: A Redis caching layer is used by the user service, the product service, and the search service. How should it be tagged?
19
+ choices:
20
+ A: 'tags: [feature, redis] — because users interact with cached data'
21
+ B: 'tags: [integration, redis] — because Redis is a third-party service'
22
+ C: 'tags: [state, cache, redis] — because it manages data storage'
23
+ D: 'tags: [infrastructure, redis] — because it is a foundational service'
24
+ E: Both C and D are acceptable, depending on whether caching is the primary purpose or a supporting capability
25
+ correct: E
26
+ explanation: 'If the component''s primary purpose is data caching (storing and retrieving cached data), tags: [state, cache, redis] is appropriate. If it is more of a foundational service that provides caching as infrastructure, tags: [infrastructure, cache, redis] fits. Both are valid interpretations.'
27
+ - id: q2
28
+ question: You have a 500-line module that handles payment processing AND sends email receipts. What should you do?
29
+ choices:
30
+ A: Keep it as one component — splitting would be premature optimization
31
+ B: 'Split into #payment-processor and #receipt-emailer — they have distinct responsibilities'
32
+ C: Create a $payment-receipt-flow instead of splitting
33
+ D: Add more tags to cover both responsibilities in one component
34
+ E: Move the email logic into the logger
35
+ correct: B
36
+ explanation: Payment processing and email sending are distinct responsibilities that could change independently (e.g., switching email providers without touching payment logic). The module is also large (500 lines). Splitting into two focused components follows the 'split when responsibilities are distinct' guideline.
37
+ - id: q3
38
+ question: Why should you check paradigm_history_fragility before modifying infrastructure components?
39
+ choices:
40
+ A: Because infrastructure components have more lines of code
41
+ B: Because many other components depend on them, making changes high-risk
42
+ C: Because infrastructure components are never tested
43
+ D: Because the fragility check automatically creates a backup
44
+ E: Because infrastructure tags prevent direct modification
45
+ correct: B
46
+ explanation: 'Infrastructure components (logger, config-loader, database-pool) are foundational — many other components depend on them. A breaking change to #database-pool could cascade across the entire application. Fragility analysis warns you about this risk before you make changes.'
47
+ - id: q4
48
+ question: What is wrong with splitting a payment module into `#payment-step-1` and `#payment-step-2`?
49
+ choices:
50
+ A: Components cannot have numbers in their names
51
+ B: There should be three components minimum
52
+ C: The names are non-descriptive and the split is artificial — neither component has an independent responsibility
53
+ D: Steps should be defined as a flow, not as components
54
+ E: The hyphen before the number violates kebab-case
55
+ correct: C
56
+ explanation: 'If you cannot describe a component without referencing ''the other half,'' the split is artificial. #payment-step-1 and #payment-step-2 are not independent responsibilities — they are an arbitrary division of a single unit. Keep them as one component with a clear description.'
@@ -0,0 +1,56 @@
1
+ id: Q-para-201-cross-cutting-concerns
2
+ title: 'PARA 201: Architecture — Cross-Cutting Concerns'
3
+ description: 'Quiz for lesson: Cross-Cutting Concerns'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: All API handlers must validate input against a defined schema. Should this be modeled as a gate, signal, or aspect?
19
+ choices:
20
+ A: ^ gate — it checks a condition before processing
21
+ B: '! signal — it fires when validation fails'
22
+ C: ~ aspect — it is a structural pattern applied across all handlers
23
+ D: $ flow — it is a step in the request processing flow
24
+ E: '# component — it is a validation utility'
25
+ correct: C
26
+ explanation: Input validation across all handlers is a cross-cutting concern — the same pattern (validate against a schema) applies to every handler. This is an aspect (~validated), not a gate (gates check conditions like authorization, not input format) or a signal (validation is a structural requirement, not an event).
27
+ - id: q2
28
+ question: 'An aspect `~cached` has `applies-to: ["#*-query"]`. You create `#user-query` without applying caching. What is the recommended action?'
29
+ choices:
30
+ A: Nothing — aspects are just documentation
31
+ B: Delete the ~cached aspect since it does not apply universally
32
+ C: 'Apply the caching pattern to #user-query, since it matches the applies-to pattern'
33
+ D: 'Rename #user-query to #user-fetch to avoid matching the pattern'
34
+ E: 'Add an exception for #user-query in the aspect definition'
35
+ correct: C
36
+ explanation: 'When a new component matches an aspect''s applies-to pattern, the aspect should be applied. If ~cached applies to all #*-query components, then #user-query should use the caching pattern. If there is a genuine reason to exempt it, document that exception rather than working around the naming.'
37
+ - id: q3
38
+ question: Why is a rate limiter classified as an aspect (~rate-limited) rather than a gate (^rate-limited)?
39
+ choices:
40
+ A: Because rate limiters are implemented in middleware
41
+ B: Because rate limiters do not return 403 status codes
42
+ C: Because rate limiting is a structural pattern applied across many endpoints, not a per-resource authorization check
43
+ D: Because rate limiters do not require authentication
44
+ E: Because the ~ prefix is alphabetically closer to 'rate'
45
+ correct: C
46
+ explanation: Gates check specific conditions per request — 'is this user allowed to access this resource?' or 'is this feature enabled?' Rate limiting is a different concern — it applies the same pattern (request counting and throttling) across many endpoints as a structural rule. This cross-cutting nature makes it an aspect.
47
+ - id: q4
48
+ question: After a large refactor that moved files, what is the correct procedure for maintaining aspects?
49
+ choices:
50
+ A: Delete all aspects and recreate them from scratch
51
+ B: Run paradigm_aspect_check to find broken anchors, then update the anchor paths in .purpose files
52
+ C: Aspects automatically update their anchors when files move
53
+ D: Ignore broken anchors — they will fix themselves on the next paradigm scan
54
+ E: Convert all aspects to gates since gates do not have anchors
55
+ correct: B
56
+ explanation: After refactoring, run paradigm_aspect_check to identify which anchors now point to moved or renamed files. Then update the anchors in the .purpose files to reflect the new file paths and line numbers. This maintenance is the trade-off for having verifiable enforcement code.
@@ -0,0 +1,66 @@
1
+ id: Q-para-201-disciplines
2
+ title: 'PARA 201: Architecture — Disciplines'
3
+ description: 'Quiz for lesson: Disciplines'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: In a web discipline project, what symbol type should a frontend hook like `useAuth` be classified as?
19
+ choices:
20
+ A: '! signal — hooks fire events'
21
+ B: ^ gate — hooks check conditions
22
+ C: '# component — hooks are code units that encapsulate logic'
23
+ D: $ flow — hooks define sequences
24
+ E: ~ aspect — hooks are cross-cutting concerns
25
+ correct: C
26
+ explanation: 'Hooks are code units, not events. A frontend hook like useAuth encapsulates authentication logic — it is #useAuth, a component. The ! signal prefix is reserved for events that trigger decoupled side effects, which is not what hooks do.'
27
+ - id: q2
28
+ question: A project has `src/client/` for frontend and `src/server/` for backend code. Which discipline should be used?
29
+ choices:
30
+ A: web — because the client directory is listed first
31
+ B: backend — because server code is more important
32
+ C: fullstack — it combines both web and backend mappings based on directory path
33
+ D: library — because the code is shared between client and server
34
+ E: cli — because the server might have CLI commands
35
+ correct: C
36
+ explanation: 'The fullstack discipline combines web and backend mappings. It uses the directory path to determine which mapping applies: src/client/ uses web discipline rules, src/server/ uses backend rules.'
37
+ - id: q3
38
+ question: What three things does the discipline setting affect in Paradigm tooling?
39
+ choices:
40
+ A: Build output, test runner, deployment target
41
+ B: Navigator generation, logging conventions, gate recommendations
42
+ C: File naming, import paths, type definitions
43
+ D: Package manager, bundler, linter configuration
44
+ E: Database schema, API schema, UI schema
45
+ correct: B
46
+ explanation: 'The discipline affects: (1) navigator generation — how paradigm scan categorizes directories, (2) logging conventions — which log methods are conventional for each directory, and (3) gate recommendations — what paradigm_gates_for_route suggests.'
47
+ - id: q4
48
+ question: Your backend project has a `policies/` directory for authorization policies. You want Paradigm to treat them as gates. How do you configure this?
49
+ choices:
50
+ A: Rename the directory to middleware/
51
+ B: Change the discipline to 'web' since it handles auth differently
52
+ C: 'Add a custom-mappings entry in config.yaml: "policies/": "^"'
53
+ D: Create a .purpose file with only gate definitions
54
+ E: It is not possible — gates can only live in middleware/
55
+ correct: C
56
+ explanation: 'Custom mappings in config.yaml extend the discipline defaults. Adding "policies/": "^" tells Paradigm to treat files in the policies/ directory as gates, without changing the overall discipline or renaming directories.'
57
+ - id: q5
58
+ question: 'A Next.js project runs `paradigm init`. The output shows `discipline: fullstack` and `stack: nextjs`. What does the stack preset add that the discipline alone does not provide?'
59
+ choices:
60
+ A: A completely different set of symbol mappings that replaces the discipline
61
+ B: Framework-specific scan hints, refined symbol mappings for Next.js patterns like app/ routes, and purpose-required paths
62
+ C: Automatic code generation for Next.js boilerplate
63
+ D: A Next.js-specific version of portal.yaml with pre-defined gates
64
+ E: Nothing — stack presets and disciplines are the same thing
65
+ correct: B
66
+ explanation: Stack presets layer framework-specific configuration on top of disciplines. For Next.js, the preset adds knowledge about app/ directory routing, server components, API route handlers, and other Next.js-specific patterns. It refines the generic fullstack discipline with framework-aware scan hints and purpose-required paths. Presets extend disciplines — they do not replace them.
@@ -0,0 +1,66 @@
1
+ id: Q-para-201-flows-deep-dive
2
+ title: 'PARA 201: Architecture — Flows in Depth'
3
+ description: 'Quiz for lesson: Flows in Depth'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: A controller calls a service, which queries a database and returns a result. Should this be a $flow?
19
+ choices:
20
+ A: Yes — any multi-step process should be a flow
21
+ B: Yes — database queries always require flow documentation
22
+ C: No — this is a two-component interaction with no sequence ambiguity
23
+ D: No — flows can only be used for user-facing features
24
+ E: It depends on whether the service emits a signal
25
+ correct: C
26
+ explanation: A flow is warranted when logic spans three or more components in a specific order. A controller calling a service (with its database query) is a straightforward two-component interaction that can be documented on the component itself.
27
+ - id: q2
28
+ question: Where should a $checkout-flow be defined if the checkout process starts in the cart module?
29
+ choices:
30
+ A: In .paradigm/flows/checkout.yaml
31
+ B: In portal.yaml under a flows section
32
+ C: In src/cart/.purpose, since the cart module initiates the flow
33
+ D: In every .purpose file of every component involved in the flow
34
+ E: In a standalone checkout-flow.purpose file at the project root
35
+ correct: C
36
+ explanation: Flows are defined in the .purpose file of the initiating component's directory. Since the checkout flow starts in the cart module, it belongs in src/cart/.purpose. The flow will reference components from other directories.
37
+ - id: q3
38
+ question: 'What does `paradigm_flow_check` with `checkImplementation: true` verify?'
39
+ choices:
40
+ A: That the flow executes correctly at runtime
41
+ B: That referenced components exist in .purpose files, actions are implemented, and signals are emitted
42
+ C: That the flow has fewer than 10 steps
43
+ D: That all flows use the same naming convention
44
+ E: That the flow is referenced in portal.yaml
45
+ correct: B
46
+ explanation: 'With checkImplementation: true, the validator performs deep checks: it verifies that referenced #components exist in .purpose files, that the named actions are implemented in the actual codebase, and that listed signals are actually emitted. This catches documentation-code drift.'
47
+ - id: q4
48
+ question: What is the fundamental nature of a Paradigm flow?
49
+ choices:
50
+ A: A workflow engine that orchestrates service calls at runtime
51
+ B: A saga implementation with rollback support
52
+ C: Documentation metadata describing what happens in a sequence, not how to execute it
53
+ D: A state machine that transitions between components
54
+ E: An event bus configuration defining message routing
55
+ correct: C
56
+ explanation: Flows are documentation, not orchestration. They describe the sequence of operations for humans and AI agents to understand. Your code still handles the actual service calls, error handling, and state management however you choose to implement it.
57
+ - id: q5
58
+ question: '`$checkout-flow` lists `relatedFlows: [$payment-flow]` and `$payment-flow` lists `relatedFlows: [$checkout-flow]`. What does `paradigm_flow_check` report?'
59
+ choices:
60
+ A: No issues — bidirectional references are valid
61
+ B: 'A circular dependency: $checkout-flow → $payment-flow → $checkout-flow'
62
+ C: A missing step error — related flows must appear as steps
63
+ D: A naming violation — flows cannot reference each other
64
+ E: A warning about duplicate flow definitions
65
+ correct: B
66
+ explanation: When flows reference each other in a cycle via relatedFlows, Paradigm detects it as a circular dependency using depth-first search. The resolution is to extract shared logic into a third flow, remove one direction of the dependency, or replace direct flow references with signal-based communication.
@@ -0,0 +1,66 @@
1
+ id: Q-para-201-gates-deep-dive
2
+ title: 'PARA 201: Architecture — Gates in Depth'
3
+ description: 'Quiz for lesson: Gates in Depth'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: A gate checks whether a user's subscription is active before allowing access to premium content. What type should this gate be?
19
+ choices:
20
+ A: auth — it verifies the user's identity
21
+ B: role — it checks the user's permission level
22
+ C: ownership — it verifies resource ownership
23
+ D: state-precondition — it verifies the system is in the right condition
24
+ E: integration — it checks a third-party service
25
+ correct: D
26
+ explanation: This gate verifies system state — whether the subscription is active — rather than identity (auth), permission level (role), or resource ownership. State-precondition gates check conditions about the current state of data.
27
+ - id: q2
28
+ question: 'What is wrong with this gate check expression: `check: user is admin`?'
29
+ choices:
30
+ A: Nothing — it is clear and concise
31
+ B: It should use JavaScript syntax, not English
32
+ C: It is too vague — a developer cannot implement it without more information
33
+ D: It is missing the req. prefix
34
+ E: Gate checks must be written in YAML, not pseudo-code
35
+ correct: C
36
+ explanation: 'Check expressions should be precise enough to implement from reading the expression. ''user is admin'' does not specify how admin status is determined — is it a boolean field? A role in an array? A separate table? A better expression: project.admins.includes(req.user.id).'
37
+ - id: q3
38
+ question: 'A route requires `[^authenticated, ^org-admin, ^billing-enabled]`. The `^org-admin` gate has `requires: [^authenticated]`. What happens at runtime?'
39
+ choices:
40
+ A: ^authenticated runs twice — once from the route, once from ^org-admin's requires
41
+ B: ^authenticated runs once, ^org-admin runs once, ^billing-enabled runs once — in that order
42
+ C: An error is thrown because ^authenticated is listed both in the route and in requires
43
+ D: All three gates run in parallel for performance
44
+ E: Only ^billing-enabled runs because the other two are implicit from requires
45
+ correct: B
46
+ explanation: 'Gate chains prevent redundant checks. ^authenticated is required by ^org-admin, but since the route lists ^authenticated first, it runs once and subsequent gates know it already passed. The three gates execute in order: authenticated, org-admin, billing-enabled.'
47
+ - id: q4
48
+ question: When should the `effects` field be an empty array `[]`?
49
+ choices:
50
+ A: Never — every gate must have at least one prize
51
+ B: When the gate has no side effects to trigger on pass
52
+ C: When the gate is of type 'auth'
53
+ D: When the gate is used on GET routes only
54
+ E: When the gate has been deprecated
55
+ correct: B
56
+ explanation: 'Use effects: [] when the gate has no side effects. Most gates simply allow or deny access without triggering additional actions. Effects are for special cases like gamification badges, onboarding rewards, or analytics events.'
57
+ - id: q5
58
+ question: 'portal.yaml says `"DELETE /api/posts/:id": [^authenticated, ^post-author]`, but the route handler only checks authentication, not authorship. What is the consequence?'
59
+ choices:
60
+ A: No consequence — portal.yaml is just documentation
61
+ B: The route will return 403 automatically based on portal.yaml
62
+ C: Any authenticated user can delete any post — a security vulnerability caused by the implementation not matching the specification
63
+ D: The paradigm scan command will fix the discrepancy automatically
64
+ E: The delete will fail silently
65
+ correct: C
66
+ explanation: portal.yaml defines what SHOULD happen, but your code must implement it. If the middleware only checks authentication without verifying post authorship, any logged-in user can delete any post. This is a security vulnerability caused by specification-implementation drift.
@@ -0,0 +1,56 @@
1
+ id: Q-para-201-portal-protocol
2
+ title: 'PARA 201: Architecture — The Portal Protocol'
3
+ description: 'Quiz for lesson: The Portal Protocol'
4
+ author: paradigm
5
+ created: '2026-04-22'
6
+ updated: '2026-04-22'
7
+ tags:
8
+ - course
9
+ - para-201
10
+ symbols: []
11
+ difficulty: beginner
12
+ passThreshold: 0.7
13
+ category: paradigm-core
14
+ origin: imported
15
+ source: courses/para-201.json
16
+ questions:
17
+ - id: q1
18
+ question: You need to add `DELETE /api/teams/:id`. What is the FIRST step in the Portal Protocol?
19
+ choices:
20
+ A: Write the delete handler and add authentication middleware
21
+ B: Add the route to portal.yaml with [^authenticated]
22
+ C: Call paradigm_gates_for_route to get gate suggestions
23
+ D: Write a test for the 403 response
24
+ E: Create a ^team-admin gate in middleware
25
+ correct: C
26
+ explanation: The Portal Protocol starts with asking Paradigm. Call paradigm_gates_for_route with the route and method to get suggestions based on existing patterns. This ensures you consider all necessary gates before implementation.
27
+ - id: q2
28
+ question: 'Your portal.yaml specifies `"PUT /api/posts/:id": [^authenticated, ^post-author]`. Your middleware only checks ^authenticated. What is the security impact?'
29
+ choices:
30
+ A: None — portal.yaml automatically enforces all listed gates
31
+ B: Any authenticated user can edit any post, because the ^post-author check is missing from the implementation
32
+ C: The route will return 500 because of the missing gate
33
+ D: Paradigm will block the request at the framework level
34
+ E: The post-author gate runs automatically via the requires field
35
+ correct: B
36
+ explanation: portal.yaml is a specification, not enforcement. If the middleware does not implement the ^post-author check, any authenticated user can edit any post. This is a security vulnerability caused by the implementation not matching the specification.
37
+ - id: q3
38
+ question: In a web API, which HTTP status code should a failed authentication gate return, versus a failed authorization gate?
39
+ choices:
40
+ A: Both return 403 Forbidden
41
+ B: Authentication returns 401 Unauthorized; authorization returns 403 Forbidden
42
+ C: Authentication returns 403 Forbidden; authorization returns 401 Unauthorized
43
+ D: Both return 401 Unauthorized
44
+ E: Authentication returns 400 Bad Request; authorization returns 403 Forbidden
45
+ correct: B
46
+ explanation: In the HTTP discipline, the standard distinguishes between authentication (who are you?) and authorization (are you allowed?). A failed auth gate (^authenticated) returns 401 Unauthorized. A failed role/ownership gate (^project-admin) returns 403 Forbidden. Note that this is the web API implementation — other disciplines express gate failure differently (a mobile app might show a login screen or disable a button; a CLI might exit with an error code).
47
+ - id: q4
48
+ question: Why does the Portal Protocol require defining gates BEFORE writing handler code?
49
+ choices:
50
+ A: Because Paradigm cannot parse handler code that already exists
51
+ B: Because it creates an auditable specification separate from implementation, preventing conditions as an afterthought
52
+ C: Because TypeScript requires gate types to be defined before use
53
+ D: Because AI agents refuse to write code without portal.yaml
54
+ E: Because gate middleware must be loaded before route handlers in the server stack
55
+ correct: B
56
+ explanation: The Portal Protocol's core principle is specification before implementation. By specifying gates in portal.yaml first, you create an auditable specification that is separate from (and checkable against) the implementation. This prevents the common pattern of building features first and bolting on checks later.