@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.
- package/dist/{accept-orchestration-OATWIRHP.js → accept-orchestration-QQISPINV.js} +1 -1
- package/dist/add-UOR4INIV.js +8 -0
- package/dist/{agent-loader-RIVI6QPP.js → agent-loader-2WJHD46U.js} +1 -1
- package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-YKS2PQWO.js} +1 -1
- package/dist/{ambient-76YMUA5Q.js → ambient-BE3SQXNN.js} +1 -1
- package/dist/{ambient-WTLYUAQM.js → ambient-NVKQCW2A.js} +12 -12
- package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
- package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
- package/dist/{chunk-5QOCKWK5.js → chunk-4PSD5R7N.js} +2 -2
- package/dist/{chunk-HOBHJPTL.js → chunk-6SKSV5B2.js} +1 -1
- package/dist/{chunk-4L7665QV.js → chunk-FEYOQMZ5.js} +1 -1
- package/dist/{chunk-NEJ4ZLCY.js → chunk-GAFKOFAV.js} +1 -1
- package/dist/chunk-GRZQIKST.js +2 -0
- package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
- package/dist/{chunk-4VKSEOXZ.js → chunk-LPBCQM5Y.js} +3 -3
- package/dist/{chunk-74SGKSRQ.js → chunk-M2HKWR25.js} +1 -1
- package/dist/{chunk-BOYQAMGC.js → chunk-M3PPXJU4.js} +1 -1
- package/dist/chunk-PHEX6LU4.js +111 -0
- package/dist/chunk-Q527BPUF.js +2 -0
- package/dist/chunk-R5ECMBIV.js +11 -0
- package/dist/{chunk-X3U3IGYT.js → chunk-TBWWFRL5.js} +1 -1
- package/dist/{chunk-MQIG6SMF.js → chunk-TNVWGPCE.js} +1 -1
- package/dist/chunk-TZDYIPVU.js +521 -0
- package/dist/{chunk-3XGNXXCT.js → chunk-UZ5H7K6Q.js} +1 -1
- package/dist/chunk-VIG5LSGZ.js +2 -0
- package/dist/chunk-VNIX5KBT.js +3 -0
- package/dist/{chunk-AGFPVSX5.js → chunk-VXIIVMTM.js} +1 -1
- package/dist/{chunk-ORDKEGII.js → chunk-WESTEMIM.js} +1 -1
- package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
- package/dist/chunk-Z5QW6USC.js +2 -0
- package/dist/{compliance-D7GD6ZYC.js → compliance-BNFWQPKM.js} +1 -1
- package/dist/config-schema-FLHRVZMI.js +2 -0
- package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
- package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
- package/dist/decision-loader-HELL2AMX.js +2 -0
- package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
- package/dist/{diff-YGHBIJY5.js → diff-MF55KQZH.js} +1 -1
- package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
- package/dist/{docs-USDAF26F.js → docs-O37YLLRN.js} +1 -1
- package/dist/doctor-IG5XM4C4.js +2 -0
- package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
- package/dist/{flow-FVZR3YJ4.js → flow-BGXOVE2V.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/init-M44SO65G.js +2 -0
- package/dist/{init-XYB62Q3X.js → init-V4KSEKPK.js} +1 -1
- package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
- package/dist/list-CFHINXIS.js +12 -0
- package/dist/lore-loader-D2ISOASW.js +2 -0
- package/dist/lore-loader-PXFKMKAN.js +2 -0
- package/dist/mcp.js +4 -4
- package/dist/metrics-UESGUHTA.js +2 -0
- package/dist/migrate-assessments-YSITX7KM.js +4 -0
- package/dist/migrate-decisions-NPLQOEEH.js +6 -0
- package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
- package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-QPZJH6XO.js} +1 -1
- package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
- package/dist/{orchestrate-M5PBZBJQ.js → orchestrate-RID7HHHH.js} +1 -1
- package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
- package/dist/{portal-check-ZMLVBIGW.js → portal-check-DV2VSJ5E.js} +1 -1
- package/dist/portal-compliance-JONQ4SOP.js +2 -0
- package/dist/{probe-3FTG6LYO.js → probe-5HAXULAD.js} +1 -1
- package/dist/{providers-AWA7WLLM.js → providers-4PXMWA7V.js} +1 -1
- package/dist/quiz-WYIZJG5K.js +10 -0
- package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
- package/dist/reindex-FWPD2VGM.js +2 -0
- package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
- package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
- package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
- package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
- package/dist/{serve-U47GULB6.js → serve-MO35XIZE.js} +1 -1
- package/dist/serve-OQYUO7CR.js +12 -0
- package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
- package/dist/server-FGUL2FWQ.js +7 -0
- package/dist/session-tracker-KGORN6B5.js +2 -0
- package/dist/{session-work-log-PAKXOFGL.js → session-work-log-4IEVE4KK.js} +1 -1
- package/dist/{session-work-log-ZP45TREI.js → session-work-log-EE4UIZ33.js} +1 -1
- package/dist/{setup-FEWSYS3Y.js → setup-ZSEC72BS.js} +1 -1
- package/dist/{shift-PC6C7NUX.js → shift-TVNY2CQF.js} +6 -6
- package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
- package/dist/show-WVHAL4VU.js +7 -0
- package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
- package/dist/status-S7Z5FVIE.js +6 -0
- package/dist/{summary-PYTEIJ4U.js → summary-WLI3NF4G.js} +2 -2
- package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
- package/dist/sync-55U6QPIA.js +2 -0
- package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
- package/dist/{team-PDK64JXI.js → team-MGT66HZQ.js} +1 -1
- package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
- package/dist/tools-QJHAVYI6.js +2 -0
- package/dist/university-content/notes/N-para-001-build-something.md +126 -0
- package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
- package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
- package/dist/university-content/notes/N-para-101-component-types.md +99 -0
- package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
- package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
- package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
- package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
- package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
- package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
- package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
- package/dist/university-content/notes/N-para-101-welcome.md +51 -0
- package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
- package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
- package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
- package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
- package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
- package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
- package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
- package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
- package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
- package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
- package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
- package/dist/university-content/notes/N-para-301-context-management.md +53 -0
- package/dist/university-content/notes/N-para-301-decisions.md +99 -0
- package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
- package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
- package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
- package/dist/university-content/notes/N-para-301-history-system.md +42 -0
- package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
- package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
- package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
- package/dist/university-content/notes/N-para-301-protocols.md +113 -0
- package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
- package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
- package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
- package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
- package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
- package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
- package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
- package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
- package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
- package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
- package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
- package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
- package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
- package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
- package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
- package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
- package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
- package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
- package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
- package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
- package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
- package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
- package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
- package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
- package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
- package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
- package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
- package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
- package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
- package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
- package/dist/university-content/notes/N-para-501-task-management.md +100 -0
- package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
- package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
- package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
- package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
- package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
- package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
- package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
- package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
- package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
- package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
- package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
- package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
- package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
- package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
- package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
- package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
- package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
- package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
- package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
- package/dist/university-content/paths/LP-para-001.yaml +29 -0
- package/dist/university-content/paths/LP-para-101.yaml +59 -0
- package/dist/university-content/paths/LP-para-201.yaml +69 -0
- package/dist/university-content/paths/LP-para-301.yaml +84 -0
- package/dist/university-content/paths/LP-para-401.yaml +74 -0
- package/dist/university-content/paths/LP-para-501.yaml +89 -0
- package/dist/university-content/paths/LP-para-601.yaml +59 -0
- package/dist/university-content/paths/LP-para-701.yaml +64 -0
- package/dist/university-content/quizzes/Q-para-001-build-something.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-001-meet-the-team.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-001-shift-setup.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-101-component-types.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-101-first-steps.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-five-symbols.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-101-paradigm-logger.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-portal-yaml.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-project-structure.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-101-purpose-files.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-tags-and-classification.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-welcome.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-architecture-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-aspect-graph.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-201-aspects-and-anchors.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-component-patterns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-cross-cutting-concerns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-disciplines.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-flows-deep-dive.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-gates-deep-dive.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-portal-protocol.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-signal-patterns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-symbol-naming.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-context-management.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-decisions.yaml +76 -0
- package/dist/university-content/quizzes/Q-para-301-doctor-and-validation.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-enforcement-levels.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-fragility-tracking.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-history-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-navigation-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-operations-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-paradigm-shift.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-protocols.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-ripple-analysis.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-sentinel-observability.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-sync-and-maintenance.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-wisdom-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-agent-identity.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-agent-interop.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-401-agent-roles.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-commit-conventions.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-mastery-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-mcp-tools-overview.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-multi-agent-coordination.yaml +76 -0
- package/dist/university-content/quizzes/Q-para-401-notebooks-permissions.yaml +61 -0
- package/dist/university-content/quizzes/Q-para-401-orchestration-workflow.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-pm-governance.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-provider-cascade.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-quick-check.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
- package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
- package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
- package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
- package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
- package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
- package/dist/university-content/reference.json +2 -2
- package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
- package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
- package/dist/university-ui/index.html +1 -1
- package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
- package/dist/validate-XUQZTF3H.js +9 -0
- package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
- package/lore-ui/dist/assets/{index-Bk-K0qgN.js → index-DKhNxgtW.js} +10 -10
- package/lore-ui/dist/index.html +1 -1
- package/package.json +2 -2
- package/platform-ui/dist/assets/{AmbientSection-BYjt75R1.js → AmbientSection-CwatqcBD.js} +1 -1
- package/platform-ui/dist/assets/{CanvasSection-rKvA_vZj.js → CanvasSection-dFAthehN.js} +1 -1
- package/platform-ui/dist/assets/{DocsSection-CI9K73M-.js → DocsSection-BZ2SFJBZ.js} +1 -1
- package/platform-ui/dist/assets/{GitSection-DSGj_c6S.js → GitSection-MNNYU1tO.js} +1 -1
- package/platform-ui/dist/assets/{GraphSection-CawN7pC5.js → GraphSection-COYjb4Pt.js} +1 -1
- package/platform-ui/dist/assets/LoreSection-B0hUbfsJ.js +1 -0
- package/platform-ui/dist/assets/{SentinelSection-DNgoYMH0.js → SentinelSection-BCxW1DCp.js} +1 -1
- package/platform-ui/dist/assets/{SymphonySection-C0zfcqv3.js → SymphonySection-BsucZRqy.js} +1 -1
- package/platform-ui/dist/assets/{TeamSection-Bzd3Dt9Q.js → TeamSection-C0QNTudW.js} +1 -1
- package/platform-ui/dist/assets/{UniversitySection-tBr62R0S.js → UniversitySection-DN1-g9pw.js} +1 -1
- package/platform-ui/dist/assets/{index-BaOmyn11.js → index-DwUT8pju.js} +2 -2
- package/platform-ui/dist/index.html +1 -1
- package/dist/add-P76GEMGF.js +0 -8
- package/dist/chunk-JQKKVAAN.js +0 -2
- package/dist/chunk-NQ47TA6C.js +0 -111
- package/dist/chunk-ODVKPZZ4.js +0 -2
- package/dist/chunk-Q2J542ST.js +0 -2
- package/dist/chunk-RBLK34IA.js +0 -11
- package/dist/chunk-RN4VE6P3.js +0 -521
- package/dist/chunk-WS2N27RX.js +0 -3
- package/dist/config-schema-GUQY2QN7.js +0 -2
- package/dist/decision-loader-2XPZE4EZ.js +0 -2
- package/dist/doctor-WMVULMQD.js +0 -2
- package/dist/list-5IUGP3ZB.js +0 -7
- package/dist/lore-loader-RVQI5GXL.js +0 -2
- package/dist/lore-loader-XY5MZRR2.js +0 -2
- package/dist/migrate-assessments-GEI5WMI2.js +0 -4
- package/dist/portal-compliance-6YR27IQU.js +0 -2
- package/dist/quiz-FE5UGAY2.js +0 -10
- package/dist/reindex-I6LPAKCC.js +0 -2
- package/dist/serve-OY6XYL7F.js +0 -12
- package/dist/server-2MNROHF6.js +0 -7
- package/dist/session-tracker-MWJAJA6Z.js +0 -2
- package/dist/show-BOAVWZPZ.js +0 -7
- package/dist/status-A37ECYNJ.js +0 -6
- package/dist/sync-DLUBV5HQ.js +0 -2
- package/dist/tools-5ITPEPSV.js +0 -2
- package/dist/university-content/courses/.purpose +0 -492
- package/dist/university-content/courses/para-001.json +0 -166
- package/dist/university-content/courses/para-101.json +0 -615
- package/dist/university-content/courses/para-201.json +0 -794
- package/dist/university-content/courses/para-301.json +0 -830
- package/dist/university-content/courses/para-401.json +0 -868
- package/dist/university-content/courses/para-501.json +0 -1166
- package/dist/university-content/courses/para-601.json +0 -719
- package/dist/university-content/courses/para-701.json +0 -807
- package/dist/university-content/plsat/.purpose +0 -162
- package/dist/university-content/plsat/v2.0.json +0 -760
- package/dist/university-content/plsat/v3.0.json +0 -3453
- package/dist/validate-C6SMKGYD.js +0 -9
- package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
- /package/dist/{chunk-BV5PRPLB.js → chunk-IZSBGW6E.js} +0 -0
- /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
id: Q-para-001-build-something
|
|
2
|
+
title: 'PARA 001: Quick Start — Build With the Team'
|
|
3
|
+
description: 'Quiz for lesson: Build With the Team'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-001
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-001.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: You built a new API endpoint without running quick-check or orchestration. The code works fine. On minimal enforcement, what happens when you commit?
|
|
19
|
+
choices:
|
|
20
|
+
A: The commit is blocked — orchestration is always required
|
|
21
|
+
B: The commit succeeds but the stop hook warns that no orchestration record exists for the changed files
|
|
22
|
+
C: Nothing — minimal enforcement has no checks
|
|
23
|
+
D: The commit is reverted automatically
|
|
24
|
+
E: Git rejects the commit because the pre-commit hook fails
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: On minimal enforcement, orchestration-required is set to off, so the stop hook does not block. However, the purpose-coverage check (which is set to warn on minimal) may warn if you did not create a .purpose file for the new endpoint. The commit succeeds either way — minimal enforcement never blocks. But you have no orchestration record, no Rune compliance report, and no structured review.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: 'During the build step, Rune creates a symbol plan with #health-check as a component. After the builder writes the code, Rune''s compliance report says "1 component, 0 aspects — blocking." Why is this a problem?'
|
|
29
|
+
choices:
|
|
30
|
+
A: Aspects are required for documentation completeness but have no real purpose
|
|
31
|
+
B: Every component needs at least one aspect (rule, constraint, or configuration) — the 1:1 ratio means you must define what rules govern the health endpoint
|
|
32
|
+
C: Rune made an error — health endpoints do not need aspects
|
|
33
|
+
D: The builder should have created the aspect automatically
|
|
34
|
+
E: This only matters on strict enforcement
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: 'Rune enforces a 1:1 component-to-aspect ratio. Even a health endpoint has rules: response format, which checks it runs, timeout behavior, whether it includes dependency status. Defining an aspect like ~health-check-format forces you to document what the endpoint actually guarantees. This is not busywork — it is how Paradigm ensures every component has a documented contract.'
|
|
37
|
+
- id: q3
|
|
38
|
+
question: 'The commit message for your feature reads: feat(#health-check): add GET /health endpoint. The Symbols: trailer says Symbols: #health-check. What does the post-commit hook do with this information?'
|
|
39
|
+
choices:
|
|
40
|
+
A: Nothing — the Symbols trailer is just for human readability
|
|
41
|
+
B: 'It parses the Symbols trailer and records the commit in Paradigm''s history system, linking the change to #health-check for traceability'
|
|
42
|
+
C: 'It validates that #health-check exists in a .purpose file'
|
|
43
|
+
D: It sends a notification to the agent team
|
|
44
|
+
E: It automatically creates a changelog entry
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: 'The post-commit hook parses the Symbols: trailer and records the commit in Paradigm''s history system. This creates a traceable link: commit → symbols affected. Later, when someone asks "what changed about #health-check?" or runs paradigm_history_context, the answer includes this commit. The pre-commit hook handles index rebuilding; the post-commit hook handles history capture.'
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
id: Q-para-001-meet-the-team
|
|
2
|
+
title: 'PARA 001: Quick Start — Meet Your Agent Team'
|
|
3
|
+
description: 'Quiz for lesson: Meet Your Agent Team'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-001
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-001.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: Your project is a React frontend with no backend. Which of these agents would paradigm shift likely NOT include in your roster?
|
|
19
|
+
choices:
|
|
20
|
+
A: Builder — every project needs code implementation
|
|
21
|
+
B: A database specialist — there is no database in a frontend-only project
|
|
22
|
+
C: Reviewer — code review is universal
|
|
23
|
+
D: compliance — symbol coverage applies to all projects
|
|
24
|
+
E: security — even frontend apps have security concerns (XSS, CSRF)
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: Specialized agents like a database specialist are only rostered when the project type matches. A React frontend with no backend has no database layer, so database agents would not be selected. The core team (including the security role — frontend security matters too) appears in every roster. Specialized and ecosystem agents are added based on detection.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: 'The Architect uses opus (tier-1) while the Builder uses haiku (tier-3). A junior developer asks: "Does that mean the builder writes worse code?" How do you explain?'
|
|
29
|
+
choices:
|
|
30
|
+
A: Yes — tier-3 is lower quality, but it is faster and cheaper
|
|
31
|
+
B: No — tiers match complexity, not quality. Architecture requires open-ended reasoning (opus). Building is well-defined implementation work where speed matters more (haiku).
|
|
32
|
+
C: The tiers are just labels with no real difference
|
|
33
|
+
D: The builder should be upgraded to opus for important features
|
|
34
|
+
E: All agents should use the same model for consistency
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: Model tier assignment is about matching the nature of the work, not ranking quality. Architectural design is open-ended — "how should we structure this?" benefits from deeper reasoning. Implementation is well-defined — "write this function that does X" benefits from speed. A fast model writing clearly specified code often produces better results than an overthinking model.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: You want to add a DevOps specialist agent to your web project's roster. What command would you use?
|
|
39
|
+
choices:
|
|
40
|
+
A: Edit roster.yaml by hand and add the agent definition
|
|
41
|
+
B: paradigm agent activate devops — it adds the agent to your project roster
|
|
42
|
+
C: paradigm shift --add-agent devops
|
|
43
|
+
D: Re-run paradigm shift and hope it detects the need
|
|
44
|
+
E: DevOps agents cannot be added to web projects
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: paradigm agent activate <id> adds an agent to your project roster. This is the proper way to customize your team — the CLI updates roster.yaml, agents.yaml, and any related configuration atomically. While you could edit roster.yaml by hand, using the CLI ensures all related files stay in sync.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
id: Q-para-001-shift-setup
|
|
2
|
+
title: 'PARA 001: Quick Start — Your First paradigm shift'
|
|
3
|
+
description: 'Quiz for lesson: Your First paradigm shift'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-001
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-001.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: You just ran paradigm shift in a Node.js project. Which of the following was NOT created or configured automatically?
|
|
19
|
+
choices:
|
|
20
|
+
A: .paradigm/config.yaml with discipline auto-detected from package.json
|
|
21
|
+
B: CLAUDE.md with AI instructions derived from your configuration
|
|
22
|
+
C: A comprehensive test suite for your existing code
|
|
23
|
+
D: Git hooks for automated compliance checking
|
|
24
|
+
E: .paradigm/roster.yaml with agents suited for a Node.js project
|
|
25
|
+
correct: C
|
|
26
|
+
explanation: paradigm shift sets up Paradigm metadata and tooling — it does not generate tests, modify your source code, or create application logic. It creates configuration, instruction files, hooks, and an agent roster. Testing is handled by the tester agent during orchestration, not during initialization.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: After running paradigm shift, you edit .paradigm/config.yaml to change your enforcement level. Now CLAUDE.md is out of date. How do you update it?
|
|
29
|
+
choices:
|
|
30
|
+
A: Edit CLAUDE.md manually to match your changes
|
|
31
|
+
B: Run paradigm shift again — it regenerates CLAUDE.md from your updated config
|
|
32
|
+
C: Delete CLAUDE.md and it will regenerate on the next commit
|
|
33
|
+
D: Run paradigm sync to rebuild only the instruction files
|
|
34
|
+
E: Both B and D would work — shift re-runs all steps including sync, while sync targets just the instruction files
|
|
35
|
+
correct: E
|
|
36
|
+
explanation: CLAUDE.md is a derived file — always generated from config, never hand-edited. Both paradigm shift (full re-run) and paradigm sync (targeted) will regenerate it. Use sync when you only changed config; use shift when you want the full pipeline (migrate, scan, hooks, etc.).
|
|
37
|
+
- id: q3
|
|
38
|
+
question: A teammate says "I ran paradigm shift but it broke my project — hooks are blocking my commits." This should not happen with default settings. What likely went wrong?
|
|
39
|
+
choices:
|
|
40
|
+
A: paradigm shift always uses strict enforcement
|
|
41
|
+
B: The project already had a config.yaml with enforcement level set to strict or balanced from a previous setup
|
|
42
|
+
C: Hooks always block on the first run to teach discipline
|
|
43
|
+
D: The teammate's Git version is incompatible with Paradigm hooks
|
|
44
|
+
E: paradigm shift requires admin privileges to install hooks
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: New projects default to minimal enforcement, which warns but never blocks. But paradigm shift is idempotent — if the project already had a .paradigm/config.yaml with a higher enforcement level, shift preserves that setting. The teammate's project was likely previously configured with balanced or strict enforcement. Check config.yaml and adjust enforcement.level if needed.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
id: Q-para-101-component-types
|
|
2
|
+
title: 'PARA 101: Foundations — Component Types & Hierarchy'
|
|
3
|
+
description: 'Quiz for lesson: Component Types & Hierarchy'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-101.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: What does the `type` field on a component describe?
|
|
19
|
+
choices:
|
|
20
|
+
A: The programming language the component is written in
|
|
21
|
+
B: The structural role of the component (e.g., service, view, router)
|
|
22
|
+
C: The business domain the component belongs to
|
|
23
|
+
D: The test coverage level of the component
|
|
24
|
+
E: The deployment environment for the component
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: The `type` field describes a component's structural role — what the code IS architecturally (service, view, router, filter, etc.). Business domain classification uses tags instead.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: Where should the `parent` relationship be declared?
|
|
29
|
+
choices:
|
|
30
|
+
A: On the parent component, listing all children
|
|
31
|
+
B: In a separate relationships.yaml file
|
|
32
|
+
C: 'On the child component, referencing the parent with a # symbol'
|
|
33
|
+
D: In portal.yaml alongside gate definitions
|
|
34
|
+
E: In the config.yaml component_types glossary
|
|
35
|
+
correct: C
|
|
36
|
+
explanation: 'Parent is declared on the child component using a `parent: "#parent-name"` field. This keeps .purpose files decentralized — you don''t need to maintain rosters on parent components.'
|
|
37
|
+
- id: q3
|
|
38
|
+
question: A `PaymentService` handles payment processing and integrates with Stripe. How should it be documented?
|
|
39
|
+
choices:
|
|
40
|
+
A: '`type: integration` with no tags'
|
|
41
|
+
B: '`type: service` with `tags: [integration, feature]`'
|
|
42
|
+
C: '`tags: [service, integration]` with no type'
|
|
43
|
+
D: '`type: feature` with `tags: [service]`'
|
|
44
|
+
E: '`type: service-integration` combining both concepts'
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: 'Type describes what the code IS (a service), while tags describe behavior and domain (it''s an integration and a feature). The correct approach is `type: service` with `tags: [integration, feature]`.'
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: Q-para-101-first-steps
|
|
2
|
+
title: 'PARA 101: Foundations — Your First Steps'
|
|
3
|
+
description: 'Quiz for lesson: Your First Steps'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-101.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: What is the correct order for the AI agent orientation protocol?
|
|
19
|
+
choices:
|
|
20
|
+
A: Read source code, write tests, check coverage, deploy
|
|
21
|
+
B: Call paradigm_status, read config.yaml, check portal.yaml, use paradigm_navigate
|
|
22
|
+
C: Run paradigm scan, edit navigator.yaml, read .purpose files, commit changes
|
|
23
|
+
D: Read package.json, install dependencies, run build, check logs
|
|
24
|
+
E: Create .purpose files, define gates, emit signals, validate flows
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: 'The orientation protocol is: (1) paradigm_status for project overview, (2) read config.yaml for conventions, (3) check portal.yaml for security gates, (4) paradigm_navigate to find the relevant code area. This takes ~500 tokens and gives the agent full context.'
|
|
27
|
+
- id: q2
|
|
28
|
+
question: After creating new .purpose files, what command should you run?
|
|
29
|
+
choices:
|
|
30
|
+
A: paradigm shift
|
|
31
|
+
B: paradigm validate
|
|
32
|
+
C: paradigm scan
|
|
33
|
+
D: paradigm deploy
|
|
34
|
+
E: paradigm build
|
|
35
|
+
correct: C
|
|
36
|
+
explanation: paradigm scan reads all .purpose files and portal.yaml, builds the symbol index, and regenerates navigator.yaml. Without rescanning, AI agents will not find the newly defined symbols through navigation tools.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: In portal.yaml, what does an empty gate array on a route mean?
|
|
39
|
+
choices:
|
|
40
|
+
A: The route is disabled and will return 404
|
|
41
|
+
B: The route requires all gates to pass
|
|
42
|
+
C: The route is intentionally unprotected — documented as public
|
|
43
|
+
D: The route has not been configured yet and will return 500
|
|
44
|
+
E: The route inherits gates from its parent path
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: An empty gate array [] means the route is intentionally public. Listing it in portal.yaml with no gates documents the decision that this route should be accessible without authentication — it is not an oversight.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: Which of these is a common pitfall when starting with Paradigm?
|
|
49
|
+
choices:
|
|
50
|
+
A: Creating too many .purpose files on day one instead of starting small
|
|
51
|
+
B: Using the Paradigm logger instead of console.log
|
|
52
|
+
C: Running paradigm scan after adding new purpose files
|
|
53
|
+
D: Putting portal.yaml at the project root
|
|
54
|
+
E: Using tags to classify components
|
|
55
|
+
correct: A
|
|
56
|
+
explanation: A common pitfall is trying to document everything on day one. The recommended approach is to start with the most critical module, create one .purpose file, and expand incrementally as the project grows.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-101-five-symbols
|
|
2
|
+
title: 'PARA 101: Foundations — The Five Symbols'
|
|
3
|
+
description: 'Quiz for lesson: The Five Symbols'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-101.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: A middleware function that checks whether the current user has admin privileges should be classified as which symbol?
|
|
19
|
+
choices:
|
|
20
|
+
A: '# Component'
|
|
21
|
+
B: $ Flow
|
|
22
|
+
C: ^ Gate
|
|
23
|
+
D: '! Signal'
|
|
24
|
+
E: ~ Aspect
|
|
25
|
+
correct: C
|
|
26
|
+
explanation: A middleware function that checks a condition and either allows or blocks access is a gate (^). Gates verify that a required condition is met before proceeding — in this case, admin privileges.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: After a refactor, you run paradigm doctor and it reports "3 broken anchors detected." Which symbol type was affected?
|
|
29
|
+
choices:
|
|
30
|
+
A: '# Component — components have code anchors that broke during refactoring'
|
|
31
|
+
B: $ Flow — flow steps reference line numbers that shifted
|
|
32
|
+
C: ^ Gate — gate definitions include file paths that changed
|
|
33
|
+
D: '! Signal — signal emitters moved to different files'
|
|
34
|
+
E: ~ Aspect — aspects are the only symbol with code anchors, and the refactor moved the anchored lines
|
|
35
|
+
correct: E
|
|
36
|
+
explanation: Aspects (~) are the only symbol type that requires code anchors — specific file:line references pointing to where the rule is enforced. When code is refactored and lines move, those anchors break. paradigm doctor detects this via SHA-256 hash comparison, and paradigm_aspect_drift can show exactly which anchors drifted.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: A payment processing module contains a Stripe API wrapper, a billing calculator, and an in-memory cart. How should these be classified?
|
|
39
|
+
choices:
|
|
40
|
+
A: 'Each gets a different symbol type: $ for Stripe, # for calculator, ! for cart'
|
|
41
|
+
B: 'They are all # components, differentiated by tags like [integration, stripe], [feature], and [state]'
|
|
42
|
+
C: 'They should all be a single # component since they are in the same module'
|
|
43
|
+
D: The Stripe wrapper is a ~ aspect since it is a cross-cutting concern
|
|
44
|
+
E: They should be modeled as steps in a $ flow
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: 'All three are documented code units, so they are all # components. The differences are captured by tags: #stripe-service with tags: [integration, stripe], #billing-calculator with tags: [feature], #cart-store with tags: [state]. Tags add nuance without requiring different symbol types.'
|
|
47
|
+
- id: q4
|
|
48
|
+
question: When should you create a $flow?
|
|
49
|
+
choices:
|
|
50
|
+
A: For every function that takes more than 10 lines of code
|
|
51
|
+
B: Only for authentication sequences
|
|
52
|
+
C: When logic spans three or more components in a specific order
|
|
53
|
+
D: Whenever you emit a signal
|
|
54
|
+
E: For all API endpoints regardless of complexity
|
|
55
|
+
correct: C
|
|
56
|
+
explanation: Flows document multi-step processes that involve three or more components in a defined sequence. A single-component operation or a two-component call does not warrant a flow — it adds documentation overhead without providing navigational value.
|
|
57
|
+
- id: q5
|
|
58
|
+
question: Your payment module emits !payment-completed after charging a card. Later, the marketing team adds a "send receipt email" listener, and the analytics team adds a "record conversion" listener. Neither team modified the payment module. How is this possible?
|
|
59
|
+
choices:
|
|
60
|
+
A: The payment module was refactored to call both services directly
|
|
61
|
+
B: Signals promote loose coupling — the emitter fires the event without knowing who listens, so new listeners can be added independently
|
|
62
|
+
C: The listeners were added to the payment module's .purpose file
|
|
63
|
+
D: Both teams used the same $flow as the payment module
|
|
64
|
+
E: The ^payment gate routes events to registered handlers
|
|
65
|
+
correct: B
|
|
66
|
+
explanation: 'This is the core value of signals: loose coupling. The payment module emits !payment-completed and has zero knowledge of who listens. The marketing team and analytics team independently subscribe to the signal. No code in the payment module was modified. This is why Paradigm separates signals (!) from flows ($) — flows define explicit steps, while signals enable independent, decoupled reactions.'
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: Q-para-101-paradigm-logger
|
|
2
|
+
title: 'PARA 101: Foundations — The Paradigm Logger'
|
|
3
|
+
description: 'Quiz for lesson: The Paradigm Logger'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-101.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: What is the correct way to log a successful payment in `#payment-service`?
|
|
19
|
+
choices:
|
|
20
|
+
A: 'console.log(''Payment processed'', { amount: 4999 })'
|
|
21
|
+
B: log.info('#payment-service', 'Payment processed')
|
|
22
|
+
C: 'log.component(''#payment-service'').info(''Payment processed'', { amount: 4999 })'
|
|
23
|
+
D: log.signal('!payment-completed').info('Payment processed')
|
|
24
|
+
E: log.gate('#payment-service').info('Payment processed')
|
|
25
|
+
correct: C
|
|
26
|
+
explanation: 'Paradigm''s logging philosophy is that every log entry should be tagged with the symbol it relates to. For a component like #payment-service, the log should identify it as a component-level entry at the info level.'
|
|
27
|
+
- id: q2
|
|
28
|
+
question: Code in the `middleware/` directory should typically use which logger method?
|
|
29
|
+
choices:
|
|
30
|
+
A: log.component()
|
|
31
|
+
B: log.flow()
|
|
32
|
+
C: log.signal()
|
|
33
|
+
D: log.gate()
|
|
34
|
+
E: log.aspect()
|
|
35
|
+
correct: D
|
|
36
|
+
explanation: By Paradigm's directory-to-symbol convention, middleware/ maps to gates (^). Code in middleware directories typically performs condition checks, which are gate operations — so logs from these files should be tagged as gate-related.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: An authentication gate denies access to an unauthenticated user. What log level should be used?
|
|
39
|
+
choices:
|
|
40
|
+
A: debug — it is a routine check
|
|
41
|
+
B: info — the gate worked correctly
|
|
42
|
+
C: warn — access was denied, which is unexpected but not a failure
|
|
43
|
+
D: error — someone tried to access a protected resource
|
|
44
|
+
E: No logging — gate denials should be silent
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: A gate denial is unexpected from the user's perspective (they tried to access something they should not) but it is recoverable and the system handled it correctly. This makes it a warn — not an error (the system did not fail) and not info (something unusual happened).
|
|
47
|
+
- id: q4
|
|
48
|
+
question: Which of these is a valid reason to use the Paradigm logger instead of console.log?
|
|
49
|
+
choices:
|
|
50
|
+
A: console.log is slower in production environments
|
|
51
|
+
B: The Paradigm logger automatically fixes bugs in the logged code
|
|
52
|
+
C: Structured symbol-tagged logs enable filtering, tracing, and incident correlation
|
|
53
|
+
D: console.log does not work in TypeScript projects
|
|
54
|
+
E: The Paradigm logger compresses log output to save disk space
|
|
55
|
+
correct: C
|
|
56
|
+
explanation: The primary advantage of the Paradigm logger is structure. Every log line is tagged with a symbol type and name, enabling you to filter by component, trace entries back to .purpose definitions, and correlate incidents with specific symbols.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: Q-para-101-portal-yaml
|
|
2
|
+
title: 'PARA 101: Foundations — Portal.yaml'
|
|
3
|
+
description: 'Quiz for lesson: Portal.yaml'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-101.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: You are adding a new action that requires preconditions — only authenticated team admins should be able to invite users. What is the correct gate workflow?
|
|
19
|
+
choices:
|
|
20
|
+
A: Write the handler code first, then add authorization if there is time
|
|
21
|
+
B: Identify the required gates, add them to portal.yaml, implement the checks, test that failing a gate blocks the action
|
|
22
|
+
C: Add a console.log that prints the user's role for manual verification
|
|
23
|
+
D: Create a new .purpose file with a ^gate definition — portal.yaml is optional
|
|
24
|
+
E: Add the route to navigator.yaml so AI agents know about it
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: 'The Paradigm gate-first workflow is: (1) identify the required gates (paradigm_gates_for_route can suggest them for web routes), (2) define the gates in portal.yaml, (3) implement the gate checks in code, (4) test that failing a gate blocks the action. Conditions are defined before implementation.'
|
|
27
|
+
- id: q2
|
|
28
|
+
question: What does the `requires` field on a gate definition do?
|
|
29
|
+
choices:
|
|
30
|
+
A: Lists npm packages the gate depends on
|
|
31
|
+
B: Specifies other gates that must pass before this gate is checked
|
|
32
|
+
C: Defines the HTTP status code returned on failure
|
|
33
|
+
D: Lists the source files that implement the gate
|
|
34
|
+
E: Specifies environment variables needed for the check
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: The requires field creates a gate chain. For example, ^project-admin requires [^authenticated] — the authentication check must pass before the admin role check is evaluated.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: When is portal.yaml NOT needed?
|
|
39
|
+
choices:
|
|
40
|
+
A: When the project has condition checks that must pass before actions proceed
|
|
41
|
+
B: When the project has role-based access control
|
|
42
|
+
C: When the application has no gates — no conditions need to be checked before any action
|
|
43
|
+
D: When the project only has GET endpoints
|
|
44
|
+
E: When the project uses a third-party auth service
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: portal.yaml is needed whenever your application has gates — conditions that must be checked before actions proceed. If no action in the system requires a precondition check (authentication, feature flags, data readiness, etc.), then portal.yaml is not needed.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: What is the `effects` field on a gate definition?
|
|
49
|
+
choices:
|
|
50
|
+
A: The HTTP response body returned when the gate passes
|
|
51
|
+
B: Side effects triggered when the gate is successfully passed
|
|
52
|
+
C: The list of routes protected by this gate
|
|
53
|
+
D: The reward given to the developer who implemented the gate
|
|
54
|
+
E: A list of test cases for the gate
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: 'Effects are side effects that trigger when a gate passes. For example, passing ^first-login might award an onboarding badge. If there are no side effects, use an empty array: effects: [].'
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-101-project-structure
|
|
2
|
+
title: 'PARA 101: Foundations — Project Structure'
|
|
3
|
+
description: 'Quiz for lesson: Project Structure'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-101.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: Where does portal.yaml live in a Paradigm project?
|
|
19
|
+
choices:
|
|
20
|
+
A: Inside .paradigm/specs/
|
|
21
|
+
B: Inside .paradigm/ at the top level
|
|
22
|
+
C: At the project root, alongside .paradigm/
|
|
23
|
+
D: Inside each source directory that has protected routes
|
|
24
|
+
E: It does not exist as a file — it is generated at runtime
|
|
25
|
+
correct: C
|
|
26
|
+
explanation: portal.yaml lives at the project root, not inside .paradigm/. This is intentional — as a security-critical file defining gates and protected routes, it should be visible and easy to audit.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: What is navigator.yaml and how is it created?
|
|
29
|
+
choices:
|
|
30
|
+
A: A manually written guide to project conventions
|
|
31
|
+
B: A machine-generated codebase map created by 'paradigm scan'
|
|
32
|
+
C: A configuration file for IDE navigation shortcuts
|
|
33
|
+
D: A list of all npm dependencies and their versions
|
|
34
|
+
E: An auto-generated test coverage report
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: navigator.yaml is generated by running 'paradigm scan'. It maps symbols to file paths and directories to categories, giving AI agents a fast way to locate code without traversing the file system.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: An AI agent wants to check if there are known antipatterns before modifying the payment module. Where should it look?
|
|
39
|
+
choices:
|
|
40
|
+
A: src/payments/.purpose
|
|
41
|
+
B: .paradigm/wisdom/ (via paradigm_wisdom_context)
|
|
42
|
+
C: .paradigm/specs/payments.md
|
|
43
|
+
D: portal.yaml
|
|
44
|
+
E: package.json
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: Team knowledge — including antipatterns, decisions, and preferences — lives in .paradigm/wisdom/. AI agents access it by calling paradigm_wisdom_context with the symbols they plan to modify.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: What does the 'discipline' field in config.yaml control?
|
|
49
|
+
choices:
|
|
50
|
+
A: Which programming language the project uses
|
|
51
|
+
B: How directory patterns map to symbol types (web vs backend vs fullstack)
|
|
52
|
+
C: The maximum number of components allowed per directory
|
|
53
|
+
D: Whether the project uses TypeScript or JavaScript
|
|
54
|
+
E: The deployment target (cloud, on-premise, serverless)
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: The discipline field tells Paradigm how to interpret directory patterns. A 'web' discipline maps routes/ to components, while a 'backend' discipline maps services/ to components. This affects the navigator, logger suggestions, and gate recommendations.
|
|
57
|
+
- id: q5
|
|
58
|
+
question: Which of these files should be written by hand, NOT generated by a tool?
|
|
59
|
+
choices:
|
|
60
|
+
A: navigator.yaml
|
|
61
|
+
B: config.yaml
|
|
62
|
+
C: history/ entries
|
|
63
|
+
D: All of the above are generated
|
|
64
|
+
E: None of the above — all are written by hand
|
|
65
|
+
correct: B
|
|
66
|
+
explanation: config.yaml is a project configuration file written by the team (or initialized by 'paradigm shift' and then customized). navigator.yaml is generated by 'paradigm scan', and history entries are recorded by tools and post-commit hooks.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: Q-para-101-purpose-files
|
|
2
|
+
title: 'PARA 101: Foundations — Purpose Files'
|
|
3
|
+
description: 'Quiz for lesson: Purpose Files'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-101.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: Where should a .purpose file be placed?
|
|
19
|
+
choices:
|
|
20
|
+
A: In the .paradigm/ directory at the project root
|
|
21
|
+
B: In the source directory it describes, alongside the code files
|
|
22
|
+
C: In a dedicated /docs directory
|
|
23
|
+
D: In the project root, one file for the entire project
|
|
24
|
+
E: In the node_modules directory for package documentation
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: Purpose files live in the source directory they describe — right next to the code. The .paradigm/ directory holds project-wide configuration, not directory-level documentation.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: What is the `context` field in a .purpose file used for?
|
|
29
|
+
choices:
|
|
30
|
+
A: Defining application context providers
|
|
31
|
+
B: Specifying environment variables required by the module
|
|
32
|
+
C: Free-text notes aimed at AI agents — conventions, gotchas, assumptions
|
|
33
|
+
D: Listing the test files associated with the directory
|
|
34
|
+
E: Declaring the programming language used in the directory
|
|
35
|
+
correct: C
|
|
36
|
+
explanation: The context field is an array of free-text strings written specifically for AI agents. It conveys things like 'all amounts are in cents', 'this module is deprecated', or 'uses Stripe signatures for webhook verification'.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: How many .purpose files should a single directory contain?
|
|
39
|
+
choices:
|
|
40
|
+
A: Exactly one for every file in the directory
|
|
41
|
+
B: At most one per directory
|
|
42
|
+
C: One per component defined in the directory
|
|
43
|
+
D: At least three — one for components, one for flows, one for gates
|
|
44
|
+
E: None — purpose files are generated automatically
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: Each directory should have at most one .purpose file. All symbols in that directory (components, flows, gates, signals, aspects) are defined within that single file.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: Which field is REQUIRED on every symbol defined in a .purpose file?
|
|
49
|
+
choices:
|
|
50
|
+
A: file
|
|
51
|
+
B: tags
|
|
52
|
+
C: description
|
|
53
|
+
D: version
|
|
54
|
+
E: anchors
|
|
55
|
+
correct: C
|
|
56
|
+
explanation: Every symbol must have a description. Without it, AI agents cannot understand what the symbol represents. The file, tags, and version fields are useful but optional. Anchors are required only for aspects (~).
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: Q-para-101-tags-and-classification
|
|
2
|
+
title: 'PARA 101: Foundations — Tags & Classification'
|
|
3
|
+
description: 'Quiz for lesson: Tags & Classification'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-101.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: How should a Stripe API wrapper be documented in Paradigm?
|
|
19
|
+
choices:
|
|
20
|
+
A: $stripe-service as a flow with Stripe steps
|
|
21
|
+
B: '#stripe-service with tags: [integration, stripe]'
|
|
22
|
+
C: ^stripe-service as a gate that checks Stripe credentials
|
|
23
|
+
D: '!stripe-service as a signal emitted on payment'
|
|
24
|
+
E: ~stripe-service as an aspect that applies Stripe logic across components
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: 'A Stripe API wrapper is a documented code unit, so it is a # component. The integration role is captured by tags: #stripe-service with tags: [integration, stripe]. Tags provide searchable classification without requiring different symbol types.'
|
|
27
|
+
- id: q2
|
|
28
|
+
question: Where are project-specific tags defined?
|
|
29
|
+
choices:
|
|
30
|
+
A: In each .purpose file's tags section
|
|
31
|
+
B: In portal.yaml alongside gate definitions
|
|
32
|
+
C: In .paradigm/tags.yaml under the 'project' section
|
|
33
|
+
D: In package.json under the 'paradigm' key
|
|
34
|
+
E: They are not defined anywhere — any string can be a tag
|
|
35
|
+
correct: C
|
|
36
|
+
explanation: 'Tags are defined in .paradigm/tags.yaml. The file has three sections: core (universal), project (team-specific), and suggested (AI-proposed). Project-specific tags go in the ''project'' section.'
|
|
37
|
+
- id: q3
|
|
38
|
+
question: An AI agent notices that seven components in the codebase handle webhook processing. What should it do?
|
|
39
|
+
choices:
|
|
40
|
+
A: Create a new ~webhook aspect with anchors
|
|
41
|
+
B: Rename all seven components to start with 'webhook-'
|
|
42
|
+
C: Use paradigm_tags_suggest to propose a 'webhook-handler' tag for human review
|
|
43
|
+
D: Add a $webhook-flow connecting all seven components
|
|
44
|
+
E: Ignore the pattern — tags should only be created by humans
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: AI agents can propose new tags using paradigm_tags_suggest. The proposed tag goes into the 'suggested' section of tags.yaml, where a human reviews it and decides whether to promote it to the 'project' section.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: How many tags should a typical symbol have?
|
|
49
|
+
choices:
|
|
50
|
+
A: Exactly one
|
|
51
|
+
B: Two to four
|
|
52
|
+
C: At least five for maximum discoverability
|
|
53
|
+
D: None — tags are optional and rarely used
|
|
54
|
+
E: As many as possible to cover all search terms
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: The guideline is 2-4 tags per symbol. One tag is often too vague to be useful, while five or more creates noise and dilutes searchability. Tags should be chosen for discoverability — the terms you would search for to find the component.
|