@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
@@ -1,830 +0,0 @@
1
- {
2
- "id": "para-301",
3
- "title": "PARA 301: Operations",
4
- "description": "Master the operational tools and workflows that keep a Paradigm project healthy. From history tracking and fragility analysis to sentinel observability and context management, this course covers the day-to-day operations that separate well-maintained projects from chaotic ones.",
5
- "lessons": [
6
- {
7
- "id": "history-system",
8
- "title": "The History System",
9
- "content": "## The History System\n\nParadigm maintains an append-only log of every implementation change in your project. This is not a replacement for git history -- it is a higher-level, symbol-aware record that tracks *what changed at the Paradigm level*, not just which lines of code were modified. Every time you implement a feature, fix a bug, or refactor a component, Paradigm can record that event against the symbols it affected.\n\nThe primary tool for recording history is `paradigm_history_record`. When you call it, you specify three required fields: the **type** of change (`implement`, `refactor`, or `rollback`), the **symbols** affected (e.g., `[\"#payment-service\", \"$checkout-flow\"]`), and a **description** of what was done. You can also specify an **intent** to further classify the change: `feature` for new capabilities, `fix` for bug repairs, `refactor` for structural improvements, `experimental` for exploratory changes, and `confirmed` for validated implementations.\n\n```\nparadigm_history_record({\n type: \"implement\",\n symbols: [\"#payment-service\", \"!payment-completed\"],\n description: \"Add Stripe webhook handler for payment confirmation\",\n intent: \"feature\",\n commit: \"a1b2c3d\",\n files: [\"src/services/payment.ts\", \"src/handlers/webhook.ts\"]\n})\n```\n\nTo retrieve history for symbols before making changes, use `paradigm_history_context`. Pass in an array of symbols and you get back the recent implementation events, who worked on them, and how stable they have been. This is critical context -- before modifying `#payment-service`, you want to know if it was just refactored last week, if it has been the target of multiple rollbacks, or if it has been stable for months.\n\nThe history log is append-only by design. Nothing is ever deleted or overwritten. This means you always have a complete timeline of how a symbol evolved. Rollback events do not erase the original implementation -- they add a new entry that says \"this was rolled back and why.\" This immutability is what makes the history system trustworthy for fragility analysis and team wisdom.",
10
- "keyConcepts": [
11
- "Append-only implementation log",
12
- "paradigm_history_record",
13
- "paradigm_history_context",
14
- "Change types: implement, refactor, rollback",
15
- "Intent classification: feature, fix, refactor, experimental, confirmed"
16
- ],
17
- "quiz": [
18
- {
19
- "id": "q1",
20
- "question": "Which tool do you use to log an implementation change in Paradigm's history system?",
21
- "choices": {
22
- "A": "paradigm_history_context",
23
- "B": "paradigm_history_record",
24
- "C": "paradigm_wisdom_record",
25
- "D": "paradigm_history_fragility",
26
- "E": "paradigm_history_validate"
27
- },
28
- "correct": "B",
29
- "explanation": "paradigm_history_record is the tool for logging implementation events. paradigm_history_context retrieves existing history, paradigm_wisdom_record captures team learnings, and paradigm_history_fragility checks stability scores."
30
- },
31
- {
32
- "id": "q2",
33
- "question": "In one session you fixed a race condition in #checkout-flow, updated the $payment-flow to add retry logic, and added a new #refund-handler component. How would you record these three changes in the history system?",
34
- "choices": {
35
- "A": "One history_record call with all three changes combined",
36
- "B": "Three separate history_record calls — a \"fix\" for the race condition, a \"change\" for the flow update, and an \"add\" for the new component",
37
- "C": "Only record the new component — fixes and changes are tracked by git",
38
- "D": "Use paradigm_lore_record instead — history is deprecated",
39
- "E": "Record only the fix — it is the most important change"
40
- },
41
- "correct": "B",
42
- "explanation": "The history system supports three change types: \"add\" (new symbols), \"change\" (modifications), and \"fix\" (bug fixes). Each change should be recorded separately so that future history queries can filter by type. Using the right type matters — when someone asks \"what broke recently?\" they want fixes, not additions."
43
- },
44
- {
45
- "id": "q3",
46
- "question": "Why is the history log append-only?",
47
- "choices": {
48
- "A": "To save disk space by avoiding updates",
49
- "B": "To make the log faster to write",
50
- "C": "To maintain a complete, trustworthy timeline that supports fragility analysis",
51
- "D": "Because the file format does not support editing",
52
- "E": "To prevent unauthorized modifications"
53
- },
54
- "correct": "C",
55
- "explanation": "The append-only design ensures a complete timeline of every change. Nothing is deleted or overwritten, which makes the log trustworthy for computing fragility scores and understanding how symbols evolved over time."
56
- },
57
- {
58
- "id": "q4",
59
- "question": "Before modifying #user-service, which tool should you call to understand its recent changes?",
60
- "choices": {
61
- "A": "paradigm_history_record",
62
- "B": "paradigm_search",
63
- "C": "paradigm_history_context",
64
- "D": "paradigm_navigate",
65
- "E": "paradigm_ripple"
66
- },
67
- "correct": "C",
68
- "explanation": "paradigm_history_context retrieves the implementation history for specified symbols. It tells you what changed recently, who worked on it, and how stable the symbol has been -- essential context before making modifications."
69
- }
70
- ]
71
- },
72
- {
73
- "id": "fragility-tracking",
74
- "title": "Fragility & Stability",
75
- "content": "## Fragility & Stability\n\nNot all parts of a codebase are equally stable. Some symbols have been rock-solid for months, while others seem to break every time someone touches them. Paradigm's fragility tracking system quantifies this by analyzing the history log to produce **stability scores** for each symbol.\n\nThe tool `paradigm_history_fragility` accepts an array of symbols and returns a stability assessment for each one. The score considers several factors: how frequently the symbol has been changed, how many rollbacks it has experienced, the ratio of fixes to features, and the recency of changes. A symbol that was implemented once six months ago and never touched again has high stability. A symbol that has been refactored three times in two weeks with one rollback is flagged as fragile.\n\n```\nparadigm_history_fragility({\n symbols: [\"#checkout-form\", \"#payment-service\", \"$onboarding\"]\n})\n\n// Returns stability scores and warnings:\n// #checkout-form: stable (score: 0.92)\n// #payment-service: fragile (score: 0.34) -- 3 rollbacks in 30 days\n// $onboarding: moderate (score: 0.61) -- frequent refactors\n```\n\nFragility information changes how you approach a task. When you are about to modify a fragile symbol, you should:\n\n1. **Read the full history** with `paradigm_history_context` to understand *why* it has been unstable\n2. **Check team wisdom** with `paradigm_wisdom_context` to see if there are known antipatterns or decisions about that area\n3. **Write more comprehensive tests** before making changes\n4. **Make smaller, incremental changes** rather than large refactors\n5. **Validate thoroughly** with `paradigm_history_validate` after implementation\n\nRefactor-heavy areas deserve special attention. If a symbol has a high count of `refactor` type events, it may indicate unclear requirements, poor initial design, or a component that is trying to do too much. The fragility system surfaces these patterns so you can address the root cause rather than adding another band-aid refactor.\n\nStability scores are also useful for planning. When estimating effort for a feature that touches multiple symbols, fragile symbols should be weighted higher in your estimate. They are more likely to require debugging, testing, and potentially rolling back. The fragility check is a form of risk assessment that should happen before every non-trivial change.",
76
- "keyConcepts": [
77
- "paradigm_history_fragility",
78
- "Stability scores",
79
- "Fragile symbol indicators",
80
- "Risk-based modification strategy",
81
- "Refactor frequency analysis"
82
- ],
83
- "quiz": [
84
- {
85
- "id": "q1",
86
- "question": "Which factors does Paradigm's fragility analysis consider when computing stability scores?",
87
- "choices": {
88
- "A": "Only the number of lines of code",
89
- "B": "Change frequency, rollback count, fix-to-feature ratio, and recency of changes",
90
- "C": "Only how many rollbacks have occurred",
91
- "D": "The number of developers who have modified the symbol",
92
- "E": "Test coverage percentage"
93
- },
94
- "correct": "B",
95
- "explanation": "Fragility analysis considers multiple factors: how frequently the symbol changes, how many rollbacks occurred, the ratio of fixes to features (high fix ratio suggests instability), and how recently changes were made."
96
- },
97
- {
98
- "id": "q2",
99
- "question": "You are about to modify #billing-engine, which paradigm_history_fragility reports as fragile. What should you do FIRST?",
100
- "choices": {
101
- "A": "Skip the change entirely",
102
- "B": "Refactor the symbol to improve stability",
103
- "C": "Read its full history and check team wisdom to understand why it is unstable",
104
- "D": "Delete the symbol and start fresh",
105
- "E": "Increase the stability score manually"
106
- },
107
- "correct": "C",
108
- "explanation": "Before modifying a fragile symbol, you should first understand why it is fragile by reading its history (paradigm_history_context) and checking team wisdom (paradigm_wisdom_context). This context helps you avoid repeating past mistakes."
109
- },
110
- {
111
- "id": "q3",
112
- "question": "A symbol has a high count of 'refactor' type events in its history. What might this indicate?",
113
- "choices": {
114
- "A": "The symbol is well-maintained and actively improved",
115
- "B": "The symbol has excellent test coverage",
116
- "C": "Unclear requirements, poor initial design, or a component doing too much",
117
- "D": "The symbol is ready for production",
118
- "E": "The development team is very productive"
119
- },
120
- "correct": "C",
121
- "explanation": "Frequent refactors often indicate underlying issues -- unclear requirements that keep changing, a poor initial design that needs constant adjustment, or a component that has grown beyond its original scope. The fragility system surfaces these patterns for root cause analysis."
122
- }
123
- ]
124
- },
125
- {
126
- "id": "wisdom-system",
127
- "title": "Team Wisdom",
128
- "content": "## Team Wisdom\n\nEvery development team accumulates knowledge over time: patterns that work, mistakes that keep recurring, architectural decisions and why they were made. Paradigm's wisdom system captures this institutional knowledge in a structured, queryable format so it is available to both human developers and AI agents.\n\nThere are three types of wisdom in Paradigm:\n\n**Preferences** define \"how we do things.\" These are team conventions, coding standards, and stylistic choices that go beyond what a linter can enforce. For example: \"We always use optimistic UI updates for payment flows\" or \"Error messages must include the operation that failed, not just the error code.\"\n\n**Antipatterns** record \"what NOT to do\" along with \"what to do instead.\" Each antipattern has an ID, a description of the bad practice, a reason explaining why it is problematic, and an alternative showing the correct approach. For example: \"Do not call the payment API directly from React components -- use the #payment-service abstraction layer instead.\"\n\n```yaml\n# Example antipattern\napi-001:\n description: Calling external APIs directly from UI components\n reason: Tight coupling, no error handling, no retry logic\n alternative: Route all API calls through service components (#*-service)\n symbols: [\"#checkout-form\", \"#payment-service\"]\n```\n\n**Decisions** capture architectural choices with full rationale. Each decision has a title, status (proposed, accepted, deprecated, superseded), the factors that influenced the decision, a conclusion, and the expected consequences (positive, negative, and mitigations). This is Paradigm's built-in Architecture Decision Record (ADR) system.\n\nTo retrieve wisdom before making changes, call `paradigm_wisdom_context` with the symbols you plan to modify. This returns all relevant preferences, antipatterns, and decisions for those symbols. To capture new wisdom, use `paradigm_wisdom_record` to add antipatterns or decisions. The expertise tracking system also identifies who on the team knows the most about specific symbols, accessible via `paradigm_wisdom_expert`.\n\n```\n// Before modifying checkout:\nparadigm_wisdom_context({ symbols: [\"#checkout-form\", \"$checkout-flow\"] })\n\n// After discovering a recurring mistake:\nparadigm_wisdom_record({\n type: \"antipattern\",\n id: \"checkout-003\",\n symbols: [\"#checkout-form\"],\n description: \"Using setTimeout for payment polling\",\n reason: \"Unreliable, races with redirects, misses webhook events\",\n alternative: \"Use the !payment-completed signal with a listener\"\n})\n```\n\nThe wisdom system is most valuable when it becomes a habit. After every debugging session, ask: \"Is there an antipattern here we should record?\" After every architectural discussion, ask: \"Should this be a decision record?\" The cost of capturing wisdom is minutes; the cost of not capturing it is repeating the same mistakes across sessions and team members.",
129
- "keyConcepts": [
130
- "Three wisdom types: preferences, antipatterns, decisions",
131
- "paradigm_wisdom_context",
132
- "paradigm_wisdom_record",
133
- "paradigm_wisdom_expert",
134
- "Antipattern structure: description, reason, alternative"
135
- ],
136
- "quiz": [
137
- {
138
- "id": "q1",
139
- "question": "What are the three types of team wisdom in Paradigm?",
140
- "choices": {
141
- "A": "Patterns, templates, examples",
142
- "B": "Preferences, antipatterns, decisions",
143
- "C": "Rules, guidelines, standards",
144
- "D": "Documentation, comments, readmes",
145
- "E": "Tests, benchmarks, audits"
146
- },
147
- "correct": "B",
148
- "explanation": "Paradigm's wisdom system has three types: preferences (how we do things), antipatterns (what not to do and what to do instead), and decisions (architectural choices with rationale)."
149
- },
150
- {
151
- "id": "q2",
152
- "question": "You just spent an hour debugging an issue caused by calling the Stripe API directly from a component. What should you do?",
153
- "choices": {
154
- "A": "Fix the bug and move on",
155
- "B": "Record a wisdom antipattern with paradigm_wisdom_record documenting the mistake and the correct approach",
156
- "C": "Add a comment in the code",
157
- "D": "Send an email to the team",
158
- "E": "Record a preference using paradigm_history_record"
159
- },
160
- "correct": "B",
161
- "explanation": "When you discover a recurring mistake pattern, you should record it as an antipattern using paradigm_wisdom_record. This captures the description of what went wrong, why it is problematic, and the correct alternative -- making it available to all future sessions and team members."
162
- },
163
- {
164
- "id": "q3",
165
- "question": "Which tool tells you who on the team is the expert for a specific symbol?",
166
- "choices": {
167
- "A": "paradigm_wisdom_context",
168
- "B": "paradigm_history_context",
169
- "C": "paradigm_wisdom_expert",
170
- "D": "paradigm_search",
171
- "E": "paradigm_navigate"
172
- },
173
- "correct": "C",
174
- "explanation": "paradigm_wisdom_expert finds the human experts who have the most knowledge about specific symbols or areas. It uses contribution history and ownership data to identify who to consult."
175
- },
176
- {
177
- "id": "q4",
178
- "question": "What is the correct timing for calling paradigm_wisdom_context?",
179
- "choices": {
180
- "A": "After deploying to production",
181
- "B": "Only when you encounter a bug",
182
- "C": "Before making changes to symbols, to learn existing conventions and avoid known pitfalls",
183
- "D": "Only during code review",
184
- "E": "Once per week during sprint planning"
185
- },
186
- "correct": "C",
187
- "explanation": "paradigm_wisdom_context should be called before making changes to symbols. It retrieves preferences, antipatterns, and decisions relevant to the symbols you are about to modify, helping you avoid known mistakes and follow established patterns."
188
- }
189
- ]
190
- },
191
- {
192
- "id": "ripple-analysis",
193
- "title": "Ripple Analysis",
194
- "content": "## Ripple Analysis\n\nWhen you change a symbol, the effects can ripple outward through the codebase like a stone dropped in water. A modification to `#payment-service` might affect `$checkout-flow`, which depends on it. That flow might be used by `#checkout-form`, which is consumed by `#order-page`. Ripple analysis maps these dependency chains before you make changes, so you can understand the full blast radius of your modification.\n\nThe tool `paradigm_ripple` takes a symbol and an optional depth parameter (1-5, default 2) and returns everything that depends on it, both directly and indirectly. This is not just a list of imports -- it is a semantic dependency graph built from Paradigm's symbol relationships: which components reference this symbol, which flows include it as a step, which gates protect endpoints that use it, and which signals it emits that other components listen to.\n\n```\nparadigm_ripple({\n symbol: \"#payment-service\",\n depth: 3\n})\n\n// Returns:\n// Direct dependents (depth 1):\n// $checkout-flow - uses #payment-service in step 3\n// #refund-handler - calls #payment-service.refund()\n// !payment-completed - emitted by #payment-service\n//\n// Indirect dependents (depth 2):\n// #checkout-form - triggers $checkout-flow\n// #order-history - listens to !payment-completed\n//\n// Indirect dependents (depth 3):\n// #account-dashboard - renders #order-history\n```\n\nRipple analysis is **essential before any refactor**. The most common cause of unintended breakage is not understanding the full dependency tree. A developer renames a method on `#payment-service` thinking only `$checkout-flow` uses it, not realizing that `#refund-handler` also calls that method. Ripple analysis catches this.\n\nThe depth parameter controls how far out to look. Depth 1 shows only direct dependents. Depth 2 (the default) shows dependents of dependents. For large refactors, depth 3 or higher may be warranted. Keep in mind that higher depth values return more results and cost more tokens, so start at the default and increase only if needed.\n\nA good practice is to run ripple analysis, review the affected symbols, then check the fragility of any flagged dependents before proceeding. If your modification would ripple into a fragile area, you may want to add extra safeguards or break the change into smaller increments. The combination of ripple analysis and fragility checking forms the core of Paradigm's change safety net.",
195
- "keyConcepts": [
196
- "paradigm_ripple",
197
- "Direct and indirect dependencies",
198
- "Depth parameter (1-5)",
199
- "Blast radius assessment",
200
- "Combining ripple with fragility checks"
201
- ],
202
- "quiz": [
203
- {
204
- "id": "q1",
205
- "question": "What is the default depth for paradigm_ripple analysis?",
206
- "choices": {
207
- "A": "1 level",
208
- "B": "2 levels",
209
- "C": "3 levels",
210
- "D": "5 levels",
211
- "E": "Unlimited"
212
- },
213
- "correct": "B",
214
- "explanation": "The default depth is 2, which shows direct dependents and their dependents. You can increase to 3-5 for large refactors, but higher depths return more results and cost more tokens."
215
- },
216
- {
217
- "id": "q2",
218
- "question": "You are planning to refactor #auth-middleware. What should you call FIRST?",
219
- "choices": {
220
- "A": "paradigm_history_record to log the planned change",
221
- "B": "paradigm_ripple to see what depends on #auth-middleware",
222
- "C": "paradigm_wisdom_record to capture the decision",
223
- "D": "paradigm_purpose_validate to check file integrity",
224
- "E": "paradigm_search to find the symbol"
225
- },
226
- "correct": "B",
227
- "explanation": "Before modifying any symbol, the first step is paradigm_ripple to understand the full dependency tree. This tells you everything that depends on #auth-middleware, so you know the blast radius of your refactor."
228
- },
229
- {
230
- "id": "q3",
231
- "question": "Ripple analysis reveals that your change to #user-service affects a fragile symbol #notification-handler (depth 2). What is the recommended approach?",
232
- "choices": {
233
- "A": "Ignore the fragility since it is an indirect dependency",
234
- "B": "Cancel the change entirely",
235
- "C": "Add extra safeguards, consider breaking the change into smaller increments, and test thoroughly",
236
- "D": "Only modify #user-service at depth 1 and skip depth 2",
237
- "E": "Increase the ripple depth to 5 to find more dependencies"
238
- },
239
- "correct": "C",
240
- "explanation": "When ripple analysis reveals that your change affects fragile symbols, the recommended approach is to add safeguards, break the change into smaller pieces, and test thoroughly. Fragile indirect dependencies deserve extra caution, not ignoring or canceling."
241
- },
242
- {
243
- "id": "q4",
244
- "question": "What types of relationships does paradigm_ripple track?",
245
- "choices": {
246
- "A": "Only JavaScript import statements",
247
- "B": "Only component references",
248
- "C": "Component references, flow steps, gate protections, and signal listeners",
249
- "D": "Only file-level dependencies",
250
- "E": "Only git blame information"
251
- },
252
- "correct": "C",
253
- "explanation": "Ripple analysis tracks semantic dependencies across all symbol types: which components reference the symbol, which flows include it as a step, which gates protect endpoints that use it, and which signals it emits that other components listen to."
254
- }
255
- ]
256
- },
257
- {
258
- "id": "doctor-and-validation",
259
- "title": "Doctor & Validation",
260
- "content": "## Doctor & Validation\n\nAs a Paradigm project evolves, its metadata can drift out of sync with the actual code. A component gets renamed but its `.purpose` file still references the old name. A gate is added to `portal.yaml` but never implemented. An aspect loses its code anchor when someone refactors the file it pointed to. Paradigm's validation tools catch these inconsistencies before they cause confusion.\n\nThe `paradigm doctor` CLI command runs a comprehensive health check across your entire project. It validates several categories of issues:\n\n- **Purpose file integrity**: Are all `.purpose` files valid YAML? Do all symbol references use correct prefixes?\n- **Portal.yaml consistency**: Do routes reference gates that are actually defined? Are there gates defined but never used?\n- **Aspect anchor verification**: Do all `~aspect` symbols have anchors? Do those anchors point to files and lines that still exist?\n- **Orphaned symbol detection**: Are there symbols defined in `.purpose` files that are never referenced anywhere else?\n- **Cross-reference validation**: When `#checkout-form` says it uses `$checkout-flow`, does that flow actually exist?\n\n```bash\n$ paradigm doctor\n\nChecking .purpose files...\n src/features/checkout/.purpose - OK\n src/features/auth/.purpose - WARNING: #legacy-login referenced but not defined\n src/services/.purpose - OK\n\nChecking portal.yaml...\n ^authenticated - OK (used in 12 routes)\n ^project-admin - WARNING: defined but used in 0 routes\n\nChecking aspects...\n ~audit-required - ERROR: anchor src/middleware/audit.ts:15-35 not found\n ~rate-limited - OK\n\nResults: 2 warnings, 1 error\n```\n\nFor more targeted validation, the MCP tool `paradigm_purpose_validate` lets you check a specific `.purpose` file or validate all files. You can also include portal.yaml validation with the `includePortal` parameter. This is useful after making changes to a specific area -- run validation on just the files you touched rather than the entire project.\n\nThe `paradigm_flow_check` tool specifically validates flow definitions. It checks that gates referenced in flow steps exist in `portal.yaml`, that actions described in steps have corresponding implementations in the codebase (when `checkImplementation` is true), and that signals emitted during the flow are properly defined.\n\nA good rhythm is to run `paradigm doctor` after major changes (adding features, refactoring, renaming symbols) and before committing. Many teams integrate it into their pre-commit hooks or CI pipelines. Think of it as a linter for your Paradigm metadata -- catching problems early is always cheaper than debugging them later.\n\n### Clarification Markers\n\nWhen a requirement is ambiguous or incomplete in a `.purpose` file, use the `[NEEDS CLARIFICATION: ...]` marker format instead of guessing. For example:\n\n```yaml\ncomponents:\n payment-processor:\n description: \"Processes payments via Stripe [NEEDS CLARIFICATION: should this support PayPal fallback?]\"\n```\n\nClarification markers are reported as **warnings** (not errors) by both `paradigm doctor` and `paradigm_purpose_validate`. They do not block validation or break builds, but they surface during health checks to remind the team that a design question remains open. The exact format `[NEEDS CLARIFICATION: <question>]` is required -- the tooling scans for this specific prefix in all description fields across `.purpose` files. Resolve all markers before shipping by replacing them with the clarified text.",
261
- "keyConcepts": [
262
- "paradigm doctor CLI command",
263
- "paradigm_purpose_validate MCP tool",
264
- "paradigm_flow_check",
265
- "Aspect anchor verification",
266
- "Orphaned symbol detection"
267
- ],
268
- "quiz": [
269
- {
270
- "id": "q1",
271
- "question": "Which of the following is NOT checked by paradigm doctor?",
272
- "choices": {
273
- "A": "Purpose file YAML validity",
274
- "B": "Aspect anchor existence",
275
- "C": "Portal.yaml gate usage",
276
- "D": "JavaScript syntax errors in source code",
277
- "E": "Orphaned symbol detection"
278
- },
279
- "correct": "D",
280
- "explanation": "paradigm doctor validates Paradigm metadata: .purpose files, portal.yaml, aspect anchors, and cross-references. It does not check source code syntax -- that is the job of your language's compiler or linter."
281
- },
282
- {
283
- "id": "q2",
284
- "question": "An aspect ~rate-limited has an anchor pointing to src/middleware/rate-limit.ts:10-25, but that file was recently renamed. What will paradigm doctor report?",
285
- "choices": {
286
- "A": "Nothing -- it only checks YAML syntax",
287
- "B": "A warning about unused gates",
288
- "C": "An error because the anchor points to a file that no longer exists",
289
- "D": "It will automatically update the anchor",
290
- "E": "A suggestion to create the file"
291
- },
292
- "correct": "C",
293
- "explanation": "Paradigm doctor verifies that aspect anchors point to files and line ranges that actually exist. If the file was renamed, the anchor is broken and doctor will report an error, prompting you to update the anchor."
294
- },
295
- {
296
- "id": "q3",
297
- "question": "When is the best time to run paradigm doctor?",
298
- "choices": {
299
- "A": "Only during initial project setup",
300
- "B": "After major changes and before committing",
301
- "C": "Only when errors occur in production",
302
- "D": "Once per quarter",
303
- "E": "Only when adding new .purpose files"
304
- },
305
- "correct": "B",
306
- "explanation": "paradigm doctor should be run after major changes (adding features, refactoring, renaming symbols) and before committing. Many teams also integrate it into pre-commit hooks or CI pipelines to catch metadata drift early."
307
- },
308
- {
309
- "id": "q4",
310
- "question": "What does paradigm_flow_check check when checkImplementation is set to true?",
311
- "choices": {
312
- "A": "Only YAML syntax of the flow definition",
313
- "B": "That flow steps reference existing gates, actions are implemented in code, and signals are defined",
314
- "C": "Only that the flow has at least three steps",
315
- "D": "That the flow has been tested in production",
316
- "E": "Only that gate names match portal.yaml"
317
- },
318
- "correct": "B",
319
- "explanation": "With checkImplementation enabled, paradigm_flow_check performs a deep check: verifying that gates exist in portal.yaml, that actions described in flow steps have corresponding implementations in the codebase, and that emitted signals are properly defined."
320
- },
321
- {
322
- "id": "q5",
323
- "question": "A .purpose file contains: `description: \"Handles order processing [NEEDS CLARIFICATION: should cancelled orders trigger refunds?]\"`. How do `paradigm doctor` and `paradigm_purpose_validate` treat this marker?",
324
- "choices": {
325
- "A": "As an error that blocks validation and must be fixed immediately",
326
- "B": "As a warning that surfaces during checks but does not block validation",
327
- "C": "They ignore it completely -- it is just text in a description field",
328
- "D": "As an info message that only appears in verbose mode",
329
- "E": "As a fatal error that prevents the .purpose file from being parsed"
330
- },
331
- "correct": "B",
332
- "explanation": "Clarification markers (`[NEEDS CLARIFICATION: ...]`) are treated as warnings, not errors. Both `paradigm doctor` and `paradigm_purpose_validate` scan description fields for this exact pattern and report matches as warnings. They surface during health checks to remind the team of unresolved design questions, but they do not block validation or break builds. Resolve them before shipping."
333
- }
334
- ]
335
- },
336
- {
337
- "id": "enforcement-levels",
338
- "title": "Enforcement Levels",
339
- "content": "## The Three Enforcement Levels\n\nParadigm enforcement is configurable. Not every project needs the same rigor — a weekend prototype has different needs than a healthcare platform. Enforcement levels control which compliance checks **block** (stop you), **warn** (notify but continue), or are **off** (silent).\n\n### Minimal — For Learning and Prototyping\n\nMinimal enforcement is the default for new projects created by `paradigm shift`. Only two checks are active, both as warnings:\n\n- `purpose-coverage` — warns if source directories lack `.purpose` files\n- `habits-blocking` — warns if defined habits are being violated\n\nEverything else is off. This means hooks never block you, so you can learn Paradigm without friction. You can always run checks manually with `paradigm doctor`.\n\n### Balanced — For Active Development\n\nWhen your team is comfortable with Paradigm, upgrade to balanced. This is where most teams operate:\n\n- **Blocks on:** `purpose-coverage` (must have purpose files), `habits-blocking` (must follow habits)\n- **Warns on:** `purpose-exists`, `portal-gates`, `aspect-anchors`, `purpose-freshness`, `lore-required`, `purpose-required-patterns`, `drift-detection`, `portal-compliance`, `orchestration-required`\n- **Off:** `aspect-advisory`, `graduation-tracking`\n\nBalanced catches problems early without being oppressive. The stop hook blocks on missing purpose files but lets you work freely otherwise.\n\n### Strict — For Regulated Domains\n\nHealthcare, finance, legal — domains where compliance is not optional. Strict blocks on nearly everything:\n\n- **Blocks on:** `purpose-coverage`, `purpose-exists`, `portal-gates`, `aspect-anchors`, `lore-required`, `habits-blocking`, `purpose-required-patterns`, `drift-detection`, `portal-compliance`, `orchestration-required`\n- **Warns on:** `purpose-freshness`, `aspect-advisory`, `graduation-tracking`\n\nWith strict enforcement, you cannot commit without purpose files, portal gates, lore records, and passing drift checks. This ensures every change is documented and traceable.\n\n## Configuration\n\nSet the level in `.paradigm/config.yaml`:\n\n```yaml\nenforcement:\n level: balanced # minimal | balanced | strict\n```\n\nOverride individual checks when a preset does not quite fit:\n\n```yaml\nenforcement:\n level: balanced\n checks:\n orchestration-required: block # Upgrade from warn to block\n lore-required: off # Downgrade — we don't need lore yet\n```\n\nPer-check overrides take precedence over the preset. This lets you start with a base level and tune specific checks to match your team's workflow.\n\n## The 13 Checks\n\n| Check | What It Validates |\n|-------|------------------|\n| `purpose-coverage` | Source directories have .purpose files |\n| `purpose-exists` | Referenced purpose files actually exist on disk |\n| `portal-gates` | Routes in portal.yaml have required gates defined |\n| `aspect-anchors` | Aspect anchors point to valid code locations |\n| `purpose-freshness` | Purpose files are not stale (content matches code) |\n| `aspect-advisory` | Components have at least one aspect (1:1 ratio) |\n| `lore-required` | Sessions modifying 3+ files record lore |\n| `habits-blocking` | Defined habits are being followed |\n| `purpose-required-patterns` | Required patterns (flows, gates) are present |\n| `drift-detection` | Aspect anchor code has not drifted |\n| `portal-compliance` | Portal.yaml matches actual route definitions |\n| `graduation-tracking` | Habits are graduating through automation tiers |\n| `orchestration-required` | Complex tasks use multi-agent orchestration |\n\n## Progression Strategy\n\nMost teams follow this path:\n\n1. **Start minimal** — learn Paradigm, build habits, no blocking\n2. **Move to balanced** after 1-2 weeks — catch issues early, still flexible\n3. **Upgrade to strict** for production-critical or regulated codebases\n\nYou can change levels at any time. The switch is immediate — no migration needed.",
340
- "keyConcepts": [
341
- "Three enforcement levels: minimal (learn), balanced (work), strict (regulated)",
342
- "Minimal is the default for new projects — hooks warn but never block",
343
- "13 checks control purpose, portal, aspect, lore, habits, drift, and orchestration compliance",
344
- "Per-check overrides let you tune individual checks beyond the preset",
345
- "Progression: minimal → balanced → strict as team comfort grows"
346
- ],
347
- "quiz": [
348
- {
349
- "id": "q1",
350
- "question": "Your team is building a healthcare claims processing system that requires audit trails. A new developer joins and asks which enforcement level to use. What do you recommend?",
351
- "choices": {
352
- "A": "Minimal — let the new developer learn without friction first",
353
- "B": "Balanced — it catches most issues without being too strict",
354
- "C": "Strict — healthcare is a regulated domain where every change must be documented and traceable",
355
- "D": "Minimal with lore-required overridden to block — just the audit trail matters",
356
- "E": "No enforcement — the team should self-police"
357
- },
358
- "correct": "C",
359
- "explanation": "Healthcare is a regulated domain where compliance is not optional. Strict enforcement ensures every change has purpose files, portal gates, lore records, and passing drift checks — exactly the traceability an audit requires. The new developer should work within these constraints from day one rather than building habits that strict mode would later break."
360
- },
361
- {
362
- "id": "q2",
363
- "question": "Your project uses balanced enforcement but your team never records lore entries, causing constant warnings. What is the best fix?",
364
- "choices": {
365
- "A": "Switch to minimal enforcement to silence all warnings",
366
- "B": "Override lore-required to off in config.yaml — your team does not need lore yet",
367
- "C": "Override lore-required to block — force the team to comply",
368
- "D": "Delete the enforcement section from config.yaml entirely",
369
- "E": "Ignore the warnings — they are just advisory"
370
- },
371
- "correct": "B",
372
- "explanation": "Per-check overrides exist for exactly this situation. If your team is not ready for lore tracking, override lore-required to off rather than downgrading the entire enforcement level. This keeps all other balanced checks active while silencing the one that does not match your current workflow. You can re-enable it later when the team is ready."
373
- },
374
- {
375
- "id": "q3",
376
- "question": "A stop hook blocks your commit with \"missing .purpose file for src/payments/\". You are on balanced enforcement. What happened?",
377
- "choices": {
378
- "A": "purpose-exists check failed — the .purpose file has a syntax error",
379
- "B": "purpose-coverage check blocked — you modified files in src/payments/ but that directory has no .purpose file",
380
- "C": "portal-gates check failed — src/payments/ has unprotected routes",
381
- "D": "purpose-freshness check failed — the .purpose file exists but is stale",
382
- "E": "aspect-anchors check failed — aspects in src/payments/ have broken anchors"
383
- },
384
- "correct": "B",
385
- "explanation": "On balanced enforcement, purpose-coverage is the only check set to block (besides habits-blocking). The error message says \"missing .purpose file\" which means the directory lacks one entirely — that is purpose-coverage, not purpose-exists (which checks that referenced files exist) or purpose-freshness (which checks staleness). Fix: create a .purpose file in src/payments/ describing its components."
386
- }
387
- ]
388
- },
389
- {
390
- "id": "paradigm-shift",
391
- "title": "The paradigm shift Command",
392
- "content": "## One Command, Full Setup\n\n`paradigm shift` is the universal onboarding command. It transforms any project directory into a Paradigm-aware workspace in a single run. Whether you are starting a new project or adopting Paradigm in an existing codebase, this is where you begin.\n\n```bash\nparadigm shift\n```\n\n## What It Does (6 Steps)\n\nThe command runs six steps in sequence:\n\n### Step 1: Initialize\nCreates the `.paradigm/` directory with `config.yaml`, `tags.yaml`, and starter files. If the directory already exists, it updates configuration without overwriting your customizations.\n\n### Step 2: Auto-Migrate\nDetects if your project uses an older Paradigm version and applies breaking-change migrations automatically. This keeps projects up to date without manual migration effort.\n\n### Step 3: Scan & Index\nDiscovers all symbols in your codebase by reading `.purpose` files and `portal.yaml`. Builds the navigator index for fast symbol lookup. Skip this step with `--quick` for faster initialization.\n\n### Step 4: Sync IDEs\nGenerates instruction files for your AI tools:\n- `CLAUDE.md` — Claude Code instructions\n- `AGENTS.md` — Universal agent instructions\n- `.cursor/rules/` — Cursor IDE rules\n\nThese files are regenerated from your Paradigm configuration every time you run shift or sync.\n\n### Step 5: Install Hooks\nSets up Git hooks (pre-commit, post-commit) and Claude Code/Cursor hooks for automated enforcement. The hooks run compliance checks based on your enforcement level.\n\n### Step 6: Roster & Model Tiers\nSuggests an agent roster based on your detected project type (web, backend, mobile, etc.) and configures model tiers (tier-1/tier-2/tier-3) based on your environment.\n\n## Key Flags\n\n| Flag | Effect |\n|------|--------|\n| `--quick` | Skip symbol scanning (fast init) |\n| `--verify` | Run `paradigm doctor` health checks at the end |\n| `--workspace <name>` | Create or join a multi-project workspace |\n| `--force` | Reinitialize (overwrite existing config) |\n\n## When to Re-Run\n\nRun `paradigm shift` again when:\n- You upgrade Paradigm to a new version (auto-migrates)\n- You want to refresh IDE instruction files after config changes\n- You add the project to a workspace\n- After major restructuring that changes project type\n\nThe command is idempotent — running it multiple times is safe. It updates what changed and leaves the rest alone.\n\n## What Comes Out\n\nAfter `paradigm shift`, your project has:\n\n```\n.paradigm/\n config.yaml # Project configuration\n tags.yaml # Tag taxonomy\n roster.yaml # Agent team roster\n agents.yaml # Agent tier assignments\nCLAUDE.md # Claude Code instructions\nAGENTS.md # Universal agent instructions\n.purpose # Root purpose file (if new project)\nportal.yaml # Auth topology (if gates detected)\n```\n\nPlus Git hooks and IDE-specific instruction files, all derived from your Paradigm configuration.",
393
- "keyConcepts": [
394
- "paradigm shift is the universal onboarding command — one command, full setup",
395
- "Six steps: init, migrate, scan, sync IDEs, install hooks, roster + model tiers",
396
- "Non-interactive by default — auto-detects discipline, stack, and model tiers",
397
- "Idempotent — safe to re-run after upgrades or config changes",
398
- "--quick skips scanning, --verify adds health checks, --workspace enables multi-project"
399
- ],
400
- "quiz": [
401
- {
402
- "id": "q1",
403
- "question": "You just cloned a teammate's Paradigm project and want to start working. The project already has .paradigm/ and .purpose files. What command should you run?",
404
- "choices": {
405
- "A": "paradigm init — to create a fresh .paradigm/ directory",
406
- "B": "paradigm shift — it detects the existing setup, migrates if needed, and installs hooks for your environment",
407
- "C": "paradigm scan — to rebuild the symbol index",
408
- "D": "paradigm sync — to generate your IDE files",
409
- "E": "No command needed — the project is already set up"
410
- },
411
- "correct": "B",
412
- "explanation": "paradigm shift is the right choice even for existing projects. It detects that .paradigm/ exists, auto-migrates if the project uses an older version, installs Git and IDE hooks for YOUR environment, generates YOUR IDE instruction files, and suggests an agent roster. Just scan or sync alone would miss hooks and migration."
413
- },
414
- {
415
- "id": "q2",
416
- "question": "Your CI pipeline needs to initialize Paradigm quickly without scanning thousands of files. Which flag do you use?",
417
- "choices": {
418
- "A": "paradigm shift --force — it runs faster by overwriting existing config",
419
- "B": "paradigm shift --quick — it skips symbol scanning for faster initialization",
420
- "C": "paradigm shift --verify — it verifies instead of scanning",
421
- "D": "paradigm init --minimal — it only creates the config file",
422
- "E": "paradigm shift --no-hooks — it skips the slowest step"
423
- },
424
- "correct": "B",
425
- "explanation": "The --quick flag skips Step 3 (scan & index), which is the most time-consuming step because it reads every .purpose file in the codebase. In CI, you typically just need config, hooks, and IDE files — the full index can be built separately if needed."
426
- },
427
- {
428
- "id": "q3",
429
- "question": "After upgrading Paradigm from v4.x to v5.x, your project's .purpose files use the old @feature syntax instead of #component. What should you do?",
430
- "choices": {
431
- "A": "Manually find-and-replace all @feature with #component across the codebase",
432
- "B": "Run paradigm shift — Step 2 (auto-migrate) detects the version gap and applies breaking-change migrations",
433
- "C": "Delete .paradigm/ and start over with paradigm init",
434
- "D": "Run paradigm doctor to identify the issues, then fix them one by one",
435
- "E": "Ignore it — old syntax still works in v5.x"
436
- },
437
- "correct": "B",
438
- "explanation": "paradigm shift's Step 2 (auto-migrate) exists for exactly this scenario. It detects that your project uses older conventions and applies the necessary migrations automatically. Manual find-and-replace risks missing files or misformatting YAML. Deleting .paradigm/ loses custom configuration. The old syntax does NOT work in v5.x — the symbol system changed."
439
- }
440
- ]
441
- },
442
- {
443
- "id": "navigation-system",
444
- "title": "Codebase Navigation",
445
- "content": "## Codebase Navigation\n\nLarge codebases are expensive to explore token-by-token. Reading files costs roughly 500-2000 tokens each, and broad exploration can quickly eat through an AI agent's context window. Paradigm's navigation system solves this by providing efficient, symbol-aware lookup that costs only 100-200 tokens per query.\n\nThe primary tool is `paradigm_navigate`, which supports three intents:\n\n**\"find\"** performs a direct symbol lookup. Give it a symbol like `#checkout-form` or a file path, and it returns the exact location in the codebase. This is the fastest way to go from a symbol name to its source file.\n\n```\nparadigm_navigate({ intent: \"find\", target: \"#payment-service\" })\n// Returns: src/services/payment.ts (defined in src/services/.purpose)\n```\n\n**\"explore\"** lets you browse a functional area of the codebase. Instead of looking for a specific symbol, you describe an area like \"authentication\" or \"payments\" and get back all the symbols, files, and structure in that domain.\n\n```\nparadigm_navigate({ intent: \"explore\", target: \"authentication\" })\n// Returns: gates, components, flows related to auth\n```\n\n**\"context\"** is task-based discovery. Describe what you want to accomplish, and the navigator returns the relevant files, symbols, and patterns you will need. This is the most powerful intent -- it answers \"what do I need to know to complete this task?\"\n\n```\nparadigm_navigate({ intent: \"context\", task: \"add Apple Pay to checkout\" })\n// Returns: #payment-service, $checkout-flow, #checkout-form,\n// existing payment method patterns, relevant gates\n```\n\nBehind the scenes, navigation is powered by `navigator.yaml`, a generated structure map of your entire project. This file is created and updated by `paradigm scan` and contains the directory tree, symbol locations, and file classifications. You do not edit `navigator.yaml` directly -- it is regenerated from `.purpose` files.\n\nFor fuzzy text search across symbol names, descriptions, and tags, use `paradigm_search`. This supports typo-tolerant matching, so searching for \"paymnt\" will still find `#payment-service`. You can filter by symbol type (component, flow, gate, signal, aspect) and control result limits.\n\nThe general rule is: **MCP queries for discovery, file reads for implementation.** Use navigate and search to find what you need (~100-200 tokens), then read only the specific files required (~500-2000 tokens). Never broadly explore a codebase by reading directories when navigation tools are available.",
446
- "keyConcepts": [
447
- "paradigm_navigate with three intents: find, explore, context",
448
- "navigator.yaml structure map",
449
- "paradigm_search with fuzzy matching",
450
- "Token efficiency: ~100-200 tokens vs ~2000 for file reads",
451
- "MCP for discovery, file reads for implementation"
452
- ],
453
- "quiz": [
454
- {
455
- "id": "q1",
456
- "question": "You need to understand all the components involved in the payment system. Which paradigm_navigate intent should you use?",
457
- "choices": {
458
- "A": "find",
459
- "B": "explore",
460
- "C": "context",
461
- "D": "search",
462
- "E": "browse"
463
- },
464
- "correct": "B",
465
- "explanation": "The \"explore\" intent browses a functional area. Passing \"payments\" as the target returns all symbols, files, and structure in the payment domain. \"find\" is for specific symbol lookup, and \"context\" is for task-based discovery."
466
- },
467
- {
468
- "id": "q2",
469
- "question": "Approximately how many tokens does a paradigm_navigate query cost compared to reading a file?",
470
- "choices": {
471
- "A": "About the same -- both are ~2000 tokens",
472
- "B": "Navigate costs more -- ~5000 tokens vs ~500 for file reads",
473
- "C": "Navigate costs ~100-200 tokens vs ~500-2000 for file reads",
474
- "D": "Navigate is free and does not count against token limits",
475
- "E": "Navigate costs ~1000 tokens vs ~100 for file reads"
476
- },
477
- "correct": "C",
478
- "explanation": "MCP navigation queries cost approximately 100-200 tokens, while reading files costs 500-2000+ tokens depending on file size. This 10x efficiency is why the rule is 'MCP for discovery, file reads for implementation.'"
479
- },
480
- {
481
- "id": "q3",
482
- "question": "How is navigator.yaml generated?",
483
- "choices": {
484
- "A": "You write it manually when setting up the project",
485
- "B": "It is generated by paradigm scan from .purpose files",
486
- "C": "It is downloaded from the Paradigm registry",
487
- "D": "It is created by paradigm doctor as a health check artifact",
488
- "E": "It is copied from a template during paradigm shift"
489
- },
490
- "correct": "B",
491
- "explanation": "navigator.yaml is generated by running paradigm scan, which reads all .purpose files, analyzes the directory structure, and produces a comprehensive structure map. You do not edit it manually -- it is always regenerated from the source .purpose files."
492
- },
493
- {
494
- "id": "q4",
495
- "question": "You want to add a search feature to the dashboard and need to know which files to modify. Which navigate intent is most appropriate?",
496
- "choices": {
497
- "A": "find -- to locate #dashboard",
498
- "B": "explore -- to browse the dashboard area",
499
- "C": "context -- with the task description to get all relevant files and patterns",
500
- "D": "Any intent will return the same results",
501
- "E": "None -- you should read files directly"
502
- },
503
- "correct": "C",
504
- "explanation": "The \"context\" intent is designed for task-based discovery. Describing your task ('add search feature to dashboard') returns all the relevant files, symbols, and patterns you need. This is more comprehensive than find (specific symbol) or explore (area browsing)."
505
- }
506
- ]
507
- },
508
- {
509
- "id": "sentinel-observability",
510
- "title": "Sentinel & Observability",
511
- "content": "## Sentinel & Observability\n\nParadigm Sentinel is the error tracking and observability system that maps runtime errors back to Paradigm symbols. When something breaks in production, Sentinel does not just show you a stack trace -- it tells you which `#component` failed, which `$flow` was interrupted, which `^gate` was involved, and whether there is a known failure pattern that matches.\n\nIncidents are the core unit of Sentinel. Each incident records the error message, stack trace, environment, affected symbols, and the flow position (where in a multi-step flow the failure occurred). Incidents can be created automatically by instrumented code or manually via `paradigm_sentinel_record`.\n\n```\nparadigm_sentinel_record({\n error: {\n message: \"Stripe API returned 429: rate limited\",\n type: \"RateLimitError\",\n code: \"STRIPE_429\"\n },\n symbols: {\n component: \"#payment-service\",\n flow: \"$checkout-flow\",\n gate: \"^authenticated\"\n },\n environment: \"production\",\n service: \"api-server\"\n})\n```\n\n**Pattern matching** is what makes Sentinel more than a log aggregator. You define failure patterns that describe known error signatures -- which error messages to look for, which symbols are typically involved, and what the resolution strategy is. When an incident is recorded, Sentinel matches it against known patterns and suggests resolutions.\n\n```\nparadigm_sentinel_add_pattern({\n id: \"stripe-rate-limit\",\n name: \"Stripe Rate Limit\",\n pattern: {\n errorContains: [\"429\", \"rate limit\"],\n symbols: { component: \"#payment-service\" }\n },\n resolution: {\n description: \"Implement exponential backoff retry\",\n strategy: \"retry\",\n priority: \"high\"\n }\n})\n```\n\nThe triage workflow uses `paradigm_sentinel_triage` to filter and view incidents. You can filter by status (open, investigating, resolved), by symbol, by environment, or by search text in error messages. Once an incident is understood and fixed, mark it resolved with `paradigm_sentinel_resolve`, optionally linking the fix commit and matched pattern.\n\nSentinel also provides health metrics via `paradigm_sentinel_stats`. You can see incident counts over time periods (1d, 7d, 30d, 90d) and get health scores for specific symbols. A symbol with many recent incidents and low resolution rates has poor health -- another signal that pairs with fragility tracking to identify problem areas. The web UI, launched with `paradigm sentinel`, provides a visual dashboard for all of this.\n\n## Incident Grouping\n\nWhen incidents pile up, grouping helps identify systemic issues. Sentinel's incident grouper clusters similar incidents using three signals: **symbol context similarity** (which components, flows, and gates are involved), **error message similarity** (Levenshtein distance between messages), and **stack trace fingerprinting** (normalizing stack frames by stripping line numbers and paths to capture structural similarity). A time-decay factor ensures recent incidents weigh more heavily in similarity calculations -- incidents from two weeks ago contribute half as much as fresh ones. The grouper's similarity threshold is configurable to tune sensitivity for your project.\n\n## Resolution Strategy Inference\n\nWhen Sentinel suggests a failure pattern from grouped incidents, it infers the most likely resolution strategy from error message keywords:\n\n| Strategy | Triggered By | Action |\n|---|---|---|\n| `retry` | timeout, network, ECONNREFUSED | Retry with backoff |\n| `fallback` | unavailable, service down, 503 | Use alternative path |\n| `fix-data` | validation, invalid, required, 404 | Correct the data |\n| `fix-code` | General code errors | Change the code |\n| `rollback` | regression, revert, broke after deploy | Roll back deployment |\n| `config-change` | config, environment variable, missing key | Update configuration |\n| `scale-up` | out of memory, OOM, capacity | Add resources |\n| `investigate` | Mixed error types, unclear pattern | Needs human triage |\n| `ignore` | Known non-issues | Suppress notifications |\n| `escalate` | permission, 403, unauthorized | Needs authorization change |",
512
- "keyConcepts": [
513
- "Incidents map errors to symbols",
514
- "Failure pattern matching",
515
- "paradigm_sentinel_triage for filtering",
516
- "paradigm_sentinel_resolve for closing incidents",
517
- "paradigm_sentinel_stats for health metrics",
518
- "Incident grouping clusters similar incidents by symbol context, error similarity, and stack fingerprints",
519
- "10 resolution strategies: retry, fallback, fix-data, fix-code, rollback, config-change, scale-up, investigate, ignore, escalate"
520
- ],
521
- "quiz": [
522
- {
523
- "id": "q1",
524
- "question": "What distinguishes Paradigm Sentinel from a generic error logging system?",
525
- "choices": {
526
- "A": "It only logs errors from the Paradigm CLI",
527
- "B": "It maps runtime errors to Paradigm symbols and matches them against known failure patterns",
528
- "C": "It replaces console.error entirely",
529
- "D": "It only works in development environments",
530
- "E": "It sends all errors to Anthropic for analysis"
531
- },
532
- "correct": "B",
533
- "explanation": "Sentinel's key differentiator is symbol-aware error tracking. It maps errors back to #components, $flows, ^gates, and !signals, and matches incidents against defined failure patterns to suggest resolutions."
534
- },
535
- {
536
- "id": "q2",
537
- "question": "Which of the following is NOT a valid Sentinel resolution strategy?",
538
- "choices": {
539
- "A": "rollback",
540
- "B": "config-change",
541
- "C": "auto-deploy",
542
- "D": "investigate",
543
- "E": "scale-up"
544
- },
545
- "correct": "C",
546
- "explanation": "Sentinel supports 10 resolution strategies: retry, fallback, fix-data, fix-code, rollback, config-change, scale-up, investigate, ignore, and escalate. 'auto-deploy' is not a strategy — Sentinel suggests actions for humans to take, not automated deployments."
547
- },
548
- {
549
- "id": "q3",
550
- "question": "You want to see all open incidents affecting #payment-service in production. Which tool and parameters do you use?",
551
- "choices": {
552
- "A": "paradigm_sentinel_show with incidentId",
553
- "B": "paradigm_sentinel_triage with symbol=#payment-service, status=open, environment=production",
554
- "C": "paradigm_sentinel_stats with symbol=#payment-service",
555
- "D": "paradigm_sentinel_patterns with symbol=#payment-service",
556
- "E": "paradigm_search with query='payment errors'"
557
- },
558
- "correct": "B",
559
- "explanation": "paradigm_sentinel_triage is the filtering tool for viewing incidents. You can combine symbol, status, and environment filters to get exactly the incidents you need -- in this case, open incidents for #payment-service in production."
560
- }
561
- ]
562
- },
563
- {
564
- "id": "sync-and-maintenance",
565
- "title": "Sync & Maintenance",
566
- "content": "## Sync & Maintenance\n\nParadigm metadata needs to stay synchronized with the actual code. As developers add features, rename files, and refactor modules, the `.purpose` files, `portal.yaml`, and `navigator.yaml` can drift out of date. Paradigm provides two key maintenance commands to keep everything aligned.\n\n**`paradigm sync`** synchronizes metadata with the codebase. It detects when source files have moved, when new files appear that should be registered, and when existing registrations point to files that no longer exist. Think of it as a reconciliation between what Paradigm knows about and what actually exists on disk.\n\n**`paradigm scan`** performs a full rebuild of the index and regenerates `navigator.yaml`. This is a heavier operation that re-reads every `.purpose` file, rebuilds the symbol graph, and produces a fresh structure map. Run scan when the index feels stale, when navigator.yaml is missing, or after bulk operations like branch merges that may have changed many files at once.\n\n```bash\n# Light sync -- detect drift and reconcile\n$ paradigm sync\n\n# Full rebuild -- regenerate everything from .purpose files\n$ paradigm scan\n```\n\nBeyond these commands, the **AI Maintenance Protocol** defines when and how to update Paradigm files during development:\n\n| Change Type | Required Paradigm Update |\n|---|---|\n| Add a feature | Create or update the nearest `.purpose` file with `#component` |\n| Add a protected route | Update `portal.yaml` with the new route and its `^gates` |\n| Add an event or signal | Add `!signal` to the emitting component's `.purpose` file |\n| Add a multi-step process | Document as `$flow` with ordered steps |\n| Rename or delete a symbol | Update all `.purpose` files that reference it |\n| Discover a pattern or antipattern | Capture with `paradigm_wisdom_record` |\n| Add a cross-cutting rule | Create `~aspect` with required code anchors |\n\nThe maintenance protocol is not optional -- it is how the metadata stays valuable. Stale metadata is worse than no metadata because it actively misleads. When `.purpose` files accurately reflect the code, AI agents can navigate efficiently, ripple analysis produces correct results, and the doctor finds real issues instead of false positives.\n\nA practical rhythm for maintenance:\n1. **Before work**: `paradigm_wisdom_context` and `paradigm_ripple` on symbols you will touch\n2. **During work**: Update `.purpose` files as you go, not after\n3. **After work**: Run `paradigm doctor` to catch any drift, record wisdom if applicable\n4. **Periodically**: Run `paradigm scan` to rebuild the full index",
567
- "keyConcepts": [
568
- "paradigm sync for metadata reconciliation",
569
- "paradigm scan for full index rebuild",
570
- "AI Maintenance Protocol",
571
- "Maintaining .purpose files alongside code changes",
572
- "Practical maintenance rhythm",
573
- "paradigm lint --auto-populate discovers undocumented source directories and drafts .purpose files"
574
- ],
575
- "quiz": [
576
- {
577
- "id": "q1",
578
- "question": "What is the difference between paradigm sync and paradigm scan?",
579
- "choices": {
580
- "A": "They are the same command with different aliases",
581
- "B": "sync is a light reconciliation; scan is a full rebuild of the index and navigator.yaml",
582
- "C": "sync works on portal.yaml; scan works on .purpose files",
583
- "D": "sync runs locally; scan runs in the cloud",
584
- "E": "sync is for JavaScript projects; scan is for Rust projects"
585
- },
586
- "correct": "B",
587
- "explanation": "paradigm sync is a lightweight operation that detects drift between metadata and code. paradigm scan is a heavier full rebuild that re-reads every .purpose file, rebuilds the symbol graph, and regenerates navigator.yaml."
588
- },
589
- {
590
- "id": "q2",
591
- "question": "You just added a new POST /api/invoices endpoint that requires authentication. What Paradigm files need updating?",
592
- "choices": {
593
- "A": "Only the .purpose file for the invoices module",
594
- "B": "Only portal.yaml with the route and gates",
595
- "C": "Both the .purpose file (component registration) and portal.yaml (route with ^gates)",
596
- "D": "Only navigator.yaml",
597
- "E": "No Paradigm files need updating for API endpoints"
598
- },
599
- "correct": "C",
600
- "explanation": "Adding a protected endpoint requires two updates: registering the component in the nearest .purpose file, and adding the route with its required gates to portal.yaml. The AI Maintenance Protocol requires both."
601
- },
602
- {
603
- "id": "q3",
604
- "question": "Why is stale Paradigm metadata considered worse than no metadata?",
605
- "choices": {
606
- "A": "It takes up more disk space",
607
- "B": "It causes compilation errors",
608
- "C": "It actively misleads AI agents, produces incorrect ripple analysis, and generates false positives in doctor",
609
- "D": "It slows down the Paradigm CLI",
610
- "E": "It prevents git commits"
611
- },
612
- "correct": "C",
613
- "explanation": "Stale metadata is actively harmful because AI agents trust it for navigation, ripple analysis uses it for dependency graphs, and doctor validates against it. If the metadata does not match reality, all of these tools produce wrong results, which is worse than having no metadata at all."
614
- }
615
- ]
616
- },
617
- {
618
- "id": "context-management",
619
- "title": "Context Management",
620
- "content": "## Context Management\n\nAI agents operate within a finite context window. Every file read, every tool call response, and every message in the conversation consumes tokens from that budget. When the context fills up, the agent loses the ability to recall earlier information, make coherent plans, or maintain awareness of all the changes it has made. Paradigm provides tools to monitor, manage, and gracefully handle context limits.\n\n**`paradigm_session_health`** monitors current context usage. Call it periodically during long sessions (every 10-15 tool calls is a good cadence) to get a recommendation. The response tells you whether to \"continue\" (plenty of room), \"be-cautious\" (usage is climbing), or \"handoff-soon\" (>85% consumed). You can optionally pass your estimated total tokens and context window size for more accurate assessment.\n\n```\nparadigm_session_health({\n contextWindowSize: 200000,\n estimatedTotalTokens: 150000\n})\n// Recommendation: \"handoff-soon\" -- context at ~75%, prepare handoff\n```\n\nWhen a handoff is needed, **`paradigm_handoff_prepare`** creates a structured summary of the current session. It captures what was done, which symbols were touched, which files were modified, what still needs to happen, and any open questions. This summary becomes the starting point for the next session.\n\n```\nparadigm_handoff_prepare({\n summary: \"Implemented Apple Pay in checkout flow\",\n symbolsTouched: [\"#payment-service\", \"$checkout-flow\", \"#apple-pay-button\"],\n modifiedFiles: [\"src/services/payment.ts\", \"src/components/checkout/ApplePayButton.tsx\"],\n nextSteps: [\"Add unit tests for Apple Pay handler\", \"Update portal.yaml with new gates\"],\n openQuestions: [\"Should we support Apple Pay in the mobile app too?\"]\n})\n```\n\nOn the receiving end, **`paradigm_session_recover`** loads breadcrumbs from the previous session. A new agent session calls this at startup to understand what was done before, pick up where the last session left off, and avoid redoing work.\n\nFor cost awareness, **`paradigm_session_stats`** shows the current session's MCP interactions, estimated token usage, and cost breakdown. This is useful for understanding which operations are expensive and optimizing your workflow.\n\nThe context management workflow forms a cycle: **monitor** usage with context_check, **prepare** handoff when limits approach, **recover** in new sessions with session_recover, and **track** costs with session_stats. Mastering this cycle means you can handle tasks that are larger than any single context window by splitting them across multiple sessions without losing progress.",
621
- "keyConcepts": [
622
- "paradigm_session_health for monitoring",
623
- "paradigm_handoff_prepare for session transfer",
624
- "paradigm_session_recover for continuity",
625
- "paradigm_session_stats for cost tracking",
626
- "Handoff triggers: >85% context usage"
627
- ],
628
- "quiz": [
629
- {
630
- "id": "q1",
631
- "question": "How often should you call paradigm_session_health during a long session?",
632
- "choices": {
633
- "A": "Only at the start of the session",
634
- "B": "Every 10-15 tool calls",
635
- "C": "Only when the AI starts forgetting things",
636
- "D": "Once per hour",
637
- "E": "Only before handoff"
638
- },
639
- "correct": "B",
640
- "explanation": "The recommended cadence for context checks is every 10-15 tool calls. This proactive monitoring lets you prepare for handoff before context is exhausted, rather than discovering the limit when it is too late."
641
- },
642
- {
643
- "id": "q2",
644
- "question": "paradigm_session_health returns 'handoff-soon'. What should you do?",
645
- "choices": {
646
- "A": "Ignore it and keep working",
647
- "B": "Immediately stop all work",
648
- "C": "Finish the current task, then call paradigm_handoff_prepare with summary and next steps",
649
- "D": "Delete old messages to free up context",
650
- "E": "Switch to a model with a larger context window"
651
- },
652
- "correct": "C",
653
- "explanation": "When handoff is recommended, prioritize completing the current task (if close to done), then prepare a handoff summary. paradigm_handoff_prepare captures what was done, files modified, next steps, and open questions so the next session can continue seamlessly."
654
- },
655
- {
656
- "id": "q3",
657
- "question": "What is the first thing a new AI agent session should do to continue work from a previous session?",
658
- "choices": {
659
- "A": "Read every file that was modified",
660
- "B": "Call paradigm_session_recover to load breadcrumbs from the previous session",
661
- "C": "Start the task from scratch",
662
- "D": "Call paradigm_doctor to validate the project",
663
- "E": "Run paradigm scan to rebuild the index"
664
- },
665
- "correct": "B",
666
- "explanation": "paradigm_session_recover loads the breadcrumbs and handoff summary from the previous session. This tells the new agent what was done, what files were modified, what remains, and any open questions -- enabling seamless continuity."
667
- },
668
- {
669
- "id": "q4",
670
- "question": "At what context usage threshold does Paradigm recommend preparing a handoff?",
671
- "choices": {
672
- "A": "50%",
673
- "B": "65%",
674
- "C": "75%",
675
- "D": "85%",
676
- "E": "95%"
677
- },
678
- "correct": "D",
679
- "explanation": "When context usage exceeds 85%, Paradigm recommends preparing a handoff. This leaves enough room to complete the current task and create a proper handoff summary without running out of context."
680
- }
681
- ]
682
- },
683
- {
684
- "id": "protocols",
685
- "title": "Protocols — Repeatable Patterns",
686
- "content": "## Protocols — Repeatable Patterns\n\nAI agents routinely spend tens of thousands of tokens exploring codebases to reverse-engineer implementation patterns before they can start working. In a well-structured project, the answer to \"how do I add a new view?\" is the same every time: create a component file, create a store, register a route, add CSS. But this knowledge lives nowhere explicit, so every agent re-discovers it from scratch.\n\nProtocols solve this problem. They are procedural, step-by-step instructions with exact file references, learned from actual completed work. When an agent receives a task like \"add a Settings page,\" it first calls `paradigm_protocol_search` with the task description. If a matching protocol exists, the agent gets back ordered steps, an exemplar file to study, and freshness information -- all within a few hundred tokens instead of exploring for thousands.\n\n### Storage and Format\n\nProtocols are stored as `.protocol` files (YAML syntax, semantic extension) in `.paradigm/protocols/`. Each protocol has an ID, a name, a description, trigger phrases for fuzzy matching, tags for classification, an exemplar file (the canonical example to follow), and an ordered list of steps.\n\n```\n.paradigm/protocols/\n index.yaml # Auto-generated by reindex\n add-view.protocol # One file per protocol\n add-api-route.protocol\n```\n\n### Step Types\n\nProtocol steps use four action types:\n\n- **create** -- Create a new file. Specifies `target` (the file to create, with placeholders) and `template_from` (an existing file to follow as a model).\n- **modify** -- Edit an existing file. Specifies `target`, `reference` (where in the file to make changes), and `notes` explaining what to add.\n- **run** -- Execute a command. Specifies `command` and `notes`.\n- **verify** -- Confirm something works. Specifies `notes` with what to check.\n\nSteps support placeholders: `{Name}` for PascalCase and `{name}` for kebab-case. When following the protocol, the agent substitutes the actual name.\n\n### Searching for Protocols\n\nThe primary entry point is `paradigm_protocol_search`. Pass a natural language task description and it returns matching protocols ranked by relevance.\n\n```\nparadigm_protocol_search({ task: \"add a new settings page\" })\n```\n\nThe search uses weighted fuzzy matching: trigger phrases (weight 3), tags (weight 2), name and description (weight 1), and step notes (weight 0.5). The protocol set per project is small (5-30 entries), so a full scan is efficient.\n\nTo get full details for a specific protocol, use `paradigm_protocol_get`:\n\n```\nparadigm_protocol_get({ id: \"P-add-view\" })\n```\n\n### Recording Protocols\n\nProtocols are captured *after* completing work, not before. Two paths lead to a new protocol:\n\n1. **Agent-initiated** -- After implementing a repeatable task, the agent calls `paradigm_protocol_record` with the steps it followed:\n\n```\nparadigm_protocol_record({\n name: \"Add a new view\",\n description: \"Create a new page with store, route, and CSS\",\n trigger: [\"add view\", \"new page\", \"create view\"],\n tags: [\"ui\", \"frontend\"],\n exemplar: \"ui/src/views/LogsView.tsx\",\n steps: [\n { action: \"create\", target: \"ui/src/views/{Name}View.tsx\", template_from: \"ui/src/views/LogsView.tsx\" },\n { action: \"modify\", target: \"ui/src/App.tsx\", reference: \"Route elements\", notes: \"Add Route\" },\n { action: \"verify\", notes: \"Run build, check route loads\" }\n ],\n recorded_from: \"L-2026-03-01-001\"\n})\n```\n\n2. **Lore-prompted** -- When `paradigm_lore_record` is called, the response includes a `protocol_suggestion` if the session created new files following existing patterns. This nudges agents to capture repeatable work without manual intervention.\n\n### Freshness and Maintenance\n\nProtocols go stale as code evolves. Three mechanisms keep them fresh:\n\n- **Reindex validation** -- During `paradigm_reindex`, all protocol references are checked. Missing files mark the protocol as `broken`. An exemplar modified since `last_verified` marks it `stale`. All references valid means `current`.\n- **On-use refresh** -- After successfully following a protocol, the agent calls `paradigm_protocol_update` with `refresh: true` to bump `last_verified` and fix outdated references.\n- **Status visibility** -- `paradigm_status` includes protocol health (X current, Y stale, Z broken). Stale protocols surface naturally during normal workflow.\n\nYou can also explicitly validate protocols:\n\n```\nparadigm_protocol_validate({ id: \"P-add-view\" })\n```\n\n### The Workflow\n\nThe protocol workflow integrates into the Paradigm operational loop:\n\n1. **Before implementing**: Call `paradigm_protocol_search` with your task description. If a match exists, follow the steps -- skip codebase exploration.\n2. **During implementation**: Use the protocol's exemplar as a reference. Follow each step in order.\n3. **After completion**: If no protocol existed and the work was repeatable, record one. If a protocol existed and you followed it successfully, call `paradigm_protocol_update` to refresh its timestamp.\n\nThis creates a virtuous cycle: each agent session that follows a protocol validates it, and each session that does repeatable work without a protocol can create one for future agents.",
687
- "keyConcepts": [
688
- "Protocols as repeatable implementation patterns with exact file references",
689
- "paradigm_protocol_search — find protocols by task description",
690
- "paradigm_protocol_record — capture patterns after completing work",
691
- "Step types: create, modify, run, verify",
692
- "Freshness tracking: current, stale, broken",
693
- "Lore integration: protocol_suggestion on repeatable work"
694
- ],
695
- "quiz": [
696
- {
697
- "id": "q1",
698
- "question": "What is the PRIMARY purpose of Paradigm protocols?",
699
- "choices": {
700
- "A": "To enforce coding standards through automated linting",
701
- "B": "To provide step-by-step implementation patterns that save agents from re-exploring codebases",
702
- "C": "To track all changes made to the codebase in a history log",
703
- "D": "To generate code automatically from templates",
704
- "E": "To replace .purpose files with more detailed documentation"
705
- },
706
- "correct": "B",
707
- "explanation": "Protocols are repeatable implementation patterns with exact file references. Their primary value is saving AI agents from spending thousands of tokens exploring a codebase to reverse-engineer patterns that are the same every time. They do not enforce linting (A), track history (C), generate code (D), or replace .purpose files (E)."
708
- },
709
- {
710
- "id": "q2",
711
- "question": "When should an agent call paradigm_protocol_search?",
712
- "choices": {
713
- "A": "After completing a task to verify the work matches a known pattern",
714
- "B": "Before implementing a task, to check if a repeatable pattern already exists",
715
- "C": "Only when the user explicitly asks for protocol guidance",
716
- "D": "During reindex to validate protocol references",
717
- "E": "When recording lore to check for protocol suggestions"
718
- },
719
- "correct": "B",
720
- "explanation": "paradigm_protocol_search is the agent's first stop before exploring the codebase. When receiving a task like 'add a Settings page,' the agent searches for a matching protocol BEFORE spending tokens on exploration. If a match exists, the steps and exemplar provide everything needed. After completion (A) is when you record or refresh, not search."
721
- },
722
- {
723
- "id": "q3",
724
- "question": "When are protocols recorded?",
725
- "choices": {
726
- "A": "Before starting work, to plan the implementation steps",
727
- "B": "During implementation, as each step is completed",
728
- "C": "After completing work, capturing the steps that were actually followed",
729
- "D": "During reindex, by analyzing git history",
730
- "E": "Only by project maintainers, never by AI agents"
731
- },
732
- "correct": "C",
733
- "explanation": "Protocols are captured AFTER completing work, not before. This ensures the steps reflect what actually works, not what was planned. Two paths lead to recording: agent-initiated (calling paradigm_protocol_record with the steps followed) and lore-prompted (the lore_record response includes a protocol_suggestion hint when it detects repeatable patterns)."
734
- },
735
- {
736
- "id": "q4",
737
- "question": "A protocol's status is 'stale'. What does this mean?",
738
- "choices": {
739
- "A": "The protocol has a syntax error in its YAML",
740
- "B": "The protocol's exemplar file has been modified since the protocol was last verified",
741
- "C": "The protocol has never been used by any agent",
742
- "D": "The protocol references files that no longer exist",
743
- "E": "The protocol was recorded more than 30 days ago"
744
- },
745
- "correct": "B",
746
- "explanation": "A 'stale' status means the protocol's exemplar or referenced files have been modified since last_verified — the protocol's steps might no longer match the actual code patterns. 'Broken' (D) means referenced files are missing entirely. Stale protocols still work but should be reviewed and refreshed after successful use."
747
- }
748
- ]
749
- },
750
- {
751
- "id": "operations-review",
752
- "title": "Operational Excellence",
753
- "content": "## Operational Excellence\n\nThis lesson brings together everything from PARA 301 into a cohesive daily workflow. Operational excellence in Paradigm is not about memorizing individual tools -- it is about building habits that keep your project healthy, your metadata accurate, and your development sessions productive.\n\n### The Operational Loop\n\nEvery development session follows a predictable pattern:\n\n**1. Orient** -- Start by calling `paradigm_status` to see the project overview: how many symbols are defined, recent changes, any outstanding issues. If this is a continuation session, call `paradigm_session_recover` to load context from the previous session.\n\n**2. Discover** -- Before touching code, check for existing protocols: call `paradigm_protocol_search` with your task description. If a match exists, follow its steps and skip exploration. Otherwise, call `paradigm_wisdom_context` with the symbols you plan to modify to learn team conventions and avoid known pitfalls. Use `paradigm_navigate` with the \"context\" intent to find all relevant files for your task.\n\n**3. Assess Risk** -- Run `paradigm_ripple` on every symbol you plan to modify to understand the blast radius. Check `paradigm_history_fragility` on anything flagged as a dependency. If the task is complex (3+ files, security + implementation), call `paradigm_orchestrate_inline` with mode=\"plan\" to get the right agent team.\n\n**4. Implement** -- Write code, updating `.purpose` files as you go. If you add routes, update `portal.yaml`. If you add signals, register them. Do not defer metadata updates to \"later\" -- later never comes.\n\n**5. Validate** -- Run `paradigm doctor` or `paradigm_purpose_validate` to catch any drift. Use `paradigm_flow_check` if you modified flows. Record the implementation with `paradigm_history_record`.\n\n**6. Capture Knowledge** -- Did you discover an antipattern? Record it with `paradigm_wisdom_record`. Did you make an architectural decision? Record that too. Did the implementation follow a repeatable pattern? Record a protocol with `paradigm_protocol_record`. Did the implementation reveal a fragile area? Note it for the team.\n\n**7. Monitor Context** -- Check `paradigm_session_health` periodically. If approaching limits, prepare a handoff.\n\n### Common Pitfalls\n\n- **Skipping wisdom checks**: Leads to repeating mistakes the team already knows about\n- **Skipping ripple analysis**: Leads to breaking downstream dependencies\n- **Deferring metadata updates**: Leads to stale `.purpose` files and misleading navigation\n- **Ignoring fragility warnings**: Leads to cascading failures in unstable areas\n- **Not recording history**: Loses the trail that fragility analysis depends on\n\n### The Measure of Excellence\n\nA well-operated Paradigm project has: accurate `.purpose` files that match the code, a `portal.yaml` that reflects all protected routes, wisdom entries that prevent repeated mistakes, history records that enable fragility analysis, and context handoffs that allow seamless multi-session work. When all of these are in place, every AI agent session starts with full context and every change is informed by the project's complete institutional knowledge.",
754
- "keyConcepts": [
755
- "The operational loop: orient, discover, assess, implement, validate, capture, monitor",
756
- "Combining tools for comprehensive safety",
757
- "Metadata maintenance as a continuous habit",
758
- "Common operational pitfalls",
759
- "Signs of a well-operated project"
760
- ],
761
- "quiz": [
762
- {
763
- "id": "q1",
764
- "question": "What is the correct order for the Paradigm operational loop?",
765
- "choices": {
766
- "A": "Implement, validate, discover, orient",
767
- "B": "Orient, discover, assess risk, implement, validate, capture knowledge, monitor context",
768
- "C": "Discover, implement, commit, deploy",
769
- "D": "Assess risk, implement, test, deploy",
770
- "E": "Orient, implement, validate"
771
- },
772
- "correct": "B",
773
- "explanation": "The full operational loop is: Orient (paradigm_status/session_recover), Discover (wisdom_context/navigate), Assess Risk (ripple/fragility), Implement (code + metadata), Validate (doctor/validate), Capture Knowledge (wisdom_record/history_record), Monitor Context (context_check)."
774
- },
775
- {
776
- "id": "q2",
777
- "question": "You are starting a new session to add a payment retry feature. #payment-service and $checkout-flow are involved. List the tools you should call in order BEFORE writing any code.",
778
- "choices": {
779
- "A": "paradigm_status, then paradigm_history_record",
780
- "B": "paradigm_status, paradigm_wisdom_context for both symbols, paradigm_ripple for both symbols, paradigm_history_fragility for flagged dependents",
781
- "C": "paradigm_search for 'payment', then start coding",
782
- "D": "paradigm_doctor, then start coding",
783
- "E": "paradigm_navigate with find intent, then start coding"
784
- },
785
- "correct": "B",
786
- "explanation": "Before writing code, you should: (1) orient with paradigm_status, (2) check wisdom for the symbols you will modify, (3) run ripple analysis to see the blast radius, and (4) check fragility of any flagged dependents. This is the orient-discover-assess sequence of the operational loop."
787
- },
788
- {
789
- "id": "q3",
790
- "question": "Which of these is a common operational pitfall in Paradigm projects?",
791
- "choices": {
792
- "A": "Running paradigm doctor too frequently",
793
- "B": "Recording too much history",
794
- "C": "Deferring .purpose file updates to 'later', causing metadata to go stale",
795
- "D": "Using paradigm_navigate instead of reading files",
796
- "E": "Calling paradigm_session_health every 10 tool calls"
797
- },
798
- "correct": "C",
799
- "explanation": "Deferring metadata updates is one of the most common pitfalls. When .purpose files go stale, navigation becomes misleading, ripple analysis produces incorrect results, and doctor generates false positives. The rule is: update metadata as you code, not after."
800
- },
801
- {
802
- "id": "q4",
803
- "question": "What are the signs of a well-operated Paradigm project?",
804
- "choices": {
805
- "A": "Minimal use of Paradigm tools to keep things simple",
806
- "B": "Accurate .purpose files, portal.yaml reflecting all protected routes, wisdom entries, history records, and context handoffs",
807
- "C": "A large number of .purpose files regardless of accuracy",
808
- "D": "No wisdom entries because the team never makes mistakes",
809
- "E": "Running paradigm scan before every commit"
810
- },
811
- "correct": "B",
812
- "explanation": "A well-operated project has accurate (not just numerous) .purpose files, a portal.yaml that reflects reality, wisdom entries that prevent repeated mistakes, history records that enable fragility analysis, and context handoffs that allow seamless multi-session work."
813
- },
814
- {
815
- "id": "q5",
816
- "question": "You finished implementing a feature and discovered that directly modifying shared state outside of the intended pattern causes subtle bugs. What should you do before moving to your next task?",
817
- "choices": {
818
- "A": "Just fix the bug and move on",
819
- "B": "Record an antipattern with paradigm_wisdom_record, record the implementation with paradigm_history_record, and run paradigm doctor",
820
- "C": "Only run paradigm doctor",
821
- "D": "Only call paradigm_history_record",
822
- "E": "Add a comment in the code and move on"
823
- },
824
- "correct": "B",
825
- "explanation": "The capture phase of the operational loop involves recording both the antipattern (so future sessions avoid the same mistake) and the implementation history (so fragility tracking stays current), followed by validation to ensure metadata is consistent."
826
- }
827
- ]
828
- }
829
- ]
830
- }