@a-company/paradigm 5.37.11 → 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-SBZVK3H4.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/{aggregate-W66DM3GA.js → aggregate-A5S5MTCC.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/{beacon-5QVYV5DF.js → beacon-QVUD3MGP.js} +1 -1
- package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
- package/dist/{chunk-SI6SV76D.js → chunk-3DZK54RU.js} +72 -19
- package/dist/{chunk-CHVQNRRT.js → chunk-4PSD5R7N.js} +2 -2
- package/dist/chunk-6SKSV5B2.js +24 -0
- package/dist/{chunk-KFNHCQ4R.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-LPBCQM5Y.js +6 -0
- package/dist/{chunk-T6IDXUUA.js → chunk-LWAIVOSF.js} +1 -1
- 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-SUU6M4JH.js → chunk-TOYQ2QCB.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-LBQBWIEX.js → chunk-Y4P4SGZV.js} +1 -1
- package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
- package/dist/chunk-Z5QW6USC.js +2 -0
- package/dist/chunk-ZJQY5PPP.js +7 -0
- package/dist/{commands-LMUD5L6R.js → commands-ANRJNG2W.js} +1 -1
- package/dist/compliance-BNFWQPKM.js +6 -0
- package/dist/config-schema-FLHRVZMI.js +2 -0
- package/dist/{constellation-CG7C4WFE.js → constellation-NWLXYATA.js} +1 -1
- package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
- package/dist/{cost-IDNVMAEV.js → cost-24UZSS2P.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-JVEYCXUC.js → diff-MF55KQZH.js} +1 -1
- package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
- package/dist/dist-JZZJLVMR.js +2 -0
- package/dist/{dist-3ZCH25SG.js → dist-OG6MM4VY.js} +1 -1
- package/dist/dist-SE67SOXB.js +2 -0
- 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-POQP27WA.js → flow-BGXOVE2V.js} +1 -1
- package/dist/{hooks-IG2GOAHP.js → hooks-TFMMMB2H.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/init-M44SO65G.js +2 -0
- package/dist/init-V4KSEKPK.js +2 -0
- package/dist/{integrity-UYDOOJDP.js → integrity-ROO3G43N.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 +19 -11
- package/dist/metrics-UESGUHTA.js +2 -0
- package/dist/{migrate-IBDE7VK4.js → migrate-Z5UQN57G.js} +1 -1
- 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-RCAMBOIB.js → orchestrate-RID7HHHH.js} +1 -1
- package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
- package/dist/portal-check-DV2VSJ5E.js +8 -0
- package/dist/{portal-compliance-4MG5F2GI.js → portal-compliance-JONQ4SOP.js} +1 -1
- package/dist/{probe-B22G2JKF.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/{review-6UAH6V3R.js → review-VMSX2PKI.js} +1 -1
- package/dist/{ripple-ZGDITCGB.js → ripple-FNZI47SH.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/sentinel.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-3F5IK7MO.js → setup-ZSEC72BS.js} +2 -2
- package/dist/{shift-FDADESC4.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/{snapshot-L2G56RPL.js → snapshot-3IYB67D4.js} +1 -1
- package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
- package/dist/{status-77M3SDIF.js → status-DB3KNLW3.js} +1 -1
- package/dist/status-S7Z5FVIE.js +6 -0
- package/dist/{summary-LXLHFRN7.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-MGT66HZQ.js +2 -0
- package/dist/{test-BQJMS4Y2.js → test-WLEPZQFC.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-VZXTJHGO.js → validate-BB6LRWIY.js} +1 -1
- package/dist/validate-XUQZTF3H.js +9 -0
- package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
- package/dist/workspace-VMSPYIBV.js +2 -0
- 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 +3 -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/templates/paradigm/specs/symbols.md +4 -2
- package/dist/add-P76GEMGF.js +0 -8
- package/dist/chunk-3TR6LLXP.js +0 -111
- package/dist/chunk-G7XFK2GI.js +0 -11
- package/dist/chunk-J6KWGCHN.js +0 -24
- package/dist/chunk-JQKKVAAN.js +0 -2
- package/dist/chunk-ODVKPZZ4.js +0 -2
- package/dist/chunk-Q2J542ST.js +0 -2
- package/dist/chunk-QT2LKB3P.js +0 -7
- package/dist/chunk-SHD27BQX.js +0 -6
- package/dist/chunk-WS2N27RX.js +0 -3
- package/dist/chunk-YT52WLBF.js +0 -521
- package/dist/compliance-WJINB5DM.js +0 -6
- package/dist/config-schema-GUQY2QN7.js +0 -2
- package/dist/decision-loader-2XPZE4EZ.js +0 -2
- package/dist/dist-R3RWD35F.js +0 -2
- package/dist/dist-VXCZWVVJ.js +0 -2
- package/dist/doctor-QJ47XAUP.js +0 -2
- package/dist/init-HIBRSVUB.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-check-Z3OCQEQR.js +0 -8
- package/dist/quiz-FE5UGAY2.js +0 -10
- package/dist/reindex-FO5VMZVQ.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/team-NSP6PMPS.js +0 -2
- package/dist/tools-CERDNVCG.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/dist/workspace-MKSQN7B2.js +0 -2
- 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,86 @@
|
|
|
1
|
+
id: Q-para-501-sentinel-deep-dive
|
|
2
|
+
title: 'PARA 501: Advanced Systems — Sentinel Deep Dive'
|
|
3
|
+
description: 'Quiz for lesson: Sentinel Deep Dive'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-501
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-501.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: An incident record shows `flowPosition.actual` has 3 entries and `flowPosition.expected` has 5. The `failedAt` field points to the third step. What does this tell you?
|
|
19
|
+
choices:
|
|
20
|
+
A: Three out of five flow steps completed successfully before the failure
|
|
21
|
+
B: The flow is missing 2 step definitions and needs to be updated
|
|
22
|
+
C: The third step failed, preventing the last 2 steps (including their signals) from executing
|
|
23
|
+
D: Only the last 2 steps need to be investigated
|
|
24
|
+
E: The flow validation is broken and should be re-run
|
|
25
|
+
correct: C
|
|
26
|
+
explanation: The `actual` array shows what actually executed, `expected` shows what should have. Three steps executed, meaning the first two succeeded and the third (`failedAt`) is where the failure occurred. The remaining 2 expected steps (in `missing`) never ran because execution stopped at the failure point.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: 'A failure pattern has confidence scores: timesMatched=20, timesResolved=15, timesRecurred=5. What does a recurrence rate of 25% suggest?'
|
|
29
|
+
choices:
|
|
30
|
+
A: The pattern is highly effective and should be trusted
|
|
31
|
+
B: The resolution strategy may not fully address the root cause — the fix works sometimes but the issue returns
|
|
32
|
+
C: The pattern's matching criteria are too broad and catching unrelated incidents
|
|
33
|
+
D: 25% is normal and healthy for any pattern
|
|
34
|
+
E: The pattern should be deleted and replaced
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: timesRecurred (5) out of timesResolved (15) gives a 33% recurrence rate after resolution. This suggests the resolution strategy addresses symptoms but not the root cause. The pattern still has value (it resolves 67% permanently), but the resolution description should be updated with a more thorough fix, or a second pattern created for the recurring variant.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: You receive a 2 AM production alert. What is the correct Sentinel-powered response sequence?
|
|
39
|
+
choices:
|
|
40
|
+
A: '`paradigm_sentinel_triage` → `paradigm_sentinel_record` → fix → `paradigm_sentinel_resolve`'
|
|
41
|
+
B: '`paradigm_sentinel_record` → `paradigm_sentinel_patterns` → `paradigm_wisdom_context` → fix → `paradigm_sentinel_resolve`'
|
|
42
|
+
C: '`paradigm_status` → read all files → find bug → `paradigm_sentinel_record`'
|
|
43
|
+
D: '`paradigm_sentinel_stats` → identify hotspot → fix → `paradigm_sentinel_resolve`'
|
|
44
|
+
E: '`paradigm_sentinel_record` → `paradigm_orchestrate_inline` → deploy agents → wait'
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: First, record the incident with `paradigm_sentinel_record` to start the clock and capture the error. Then check `paradigm_sentinel_patterns` for known fixes — this could save hours if the failure matches an existing pattern. Then check `paradigm_wisdom_context` for antipatterns on the failing component. Fix with full context, then resolve. Recording first is critical — you can't triage what you haven't recorded.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: Sentinel ships with 26 seed patterns. Which pattern source would a team-created pattern from a post-mortem use?
|
|
49
|
+
choices:
|
|
50
|
+
A: '`community`'
|
|
51
|
+
B: '`imported`'
|
|
52
|
+
C: '`manual`'
|
|
53
|
+
D: '`suggested`'
|
|
54
|
+
E: '`seed`'
|
|
55
|
+
correct: C
|
|
56
|
+
explanation: 'Patterns have four sources: `manual` (team-created), `suggested` (auto-generated by Sentinel from incident groups), `imported` (from another project), and `community` (shared open-source patterns). A pattern created by the team during a post-mortem is `manual`. The seed patterns that ship with Paradigm use `manual` source as well.'
|
|
57
|
+
- id: q5
|
|
58
|
+
question: Two incidents share the same component (#auth-service) and error type (TypeError) but different flows. Sentinel's similarity threshold is 0.6. Will they be grouped?
|
|
59
|
+
choices:
|
|
60
|
+
A: Yes — sharing a component and error type exceeds the 0.6 threshold
|
|
61
|
+
B: No — different flows always prevent grouping
|
|
62
|
+
C: It depends on what other symbolic context they share — 0.6 means 60% overlap required
|
|
63
|
+
D: Only if they occurred within the same hour
|
|
64
|
+
E: Only if a human manually groups them
|
|
65
|
+
correct: C
|
|
66
|
+
explanation: The 0.6 similarity threshold means 60% of symbolic context must overlap. Sharing a component and error type provides some overlap, but different flows reduce it. Whether they cross 0.6 depends on other shared context — same gate, same environment, similar error message. Grouping is automatic but similarity-driven, not based on any single field.
|
|
67
|
+
- id: q6
|
|
68
|
+
question: How do you connect the Paradigm logger to Sentinel's observability pipeline?
|
|
69
|
+
choices:
|
|
70
|
+
A: Replace all `log.component()` calls with `sentinel.log()` calls throughout your codebase
|
|
71
|
+
B: 'Call `enableSentinel({ endpoint: ''...'' })` once — it registers a SentinelTransport via addTransport with zero changes to existing logging code'
|
|
72
|
+
C: Configure a `sentinel` key in `.paradigm/config.yaml` and restart the application
|
|
73
|
+
D: Import SentinelTransport in every file that uses the logger
|
|
74
|
+
E: Set the `SENTINEL_ENDPOINT` environment variable — the logger auto-detects it
|
|
75
|
+
correct: B
|
|
76
|
+
explanation: The SentinelTransport bridge is designed for zero-code-change adoption. Calling `enableSentinel()` once creates a SentinelTransport and registers it with the logger via `addTransport`. From that point, all existing `log.component()`, `log.gate()`, and `log.signal()` calls are automatically forwarded to Sentinel. No changes to individual logging calls are needed.
|
|
77
|
+
- id: q7
|
|
78
|
+
question: You want to track API response latency in Sentinel. Which metric type should you use?
|
|
79
|
+
choices:
|
|
80
|
+
A: '`counter` — increment it by the latency value on each request'
|
|
81
|
+
B: '`gauge` — set it to the current response time'
|
|
82
|
+
C: '`histogram` — record each response time to build a distribution over time'
|
|
83
|
+
D: '`timer` — Sentinel has a dedicated timer metric type for latency'
|
|
84
|
+
E: '`counter` with a `latency` label containing the value'
|
|
85
|
+
correct: C
|
|
86
|
+
explanation: Histogram is the correct metric type for distributions like response latency. A histogram records individual values and lets you compute percentiles (p50, p95, p99), averages, and distributions over time. A counter only tracks cumulative totals, a gauge only captures point-in-time snapshots, and there is no dedicated timer type — histograms serve that purpose.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-501-session-intelligence
|
|
2
|
+
title: 'PARA 501: Advanced Systems — Session Intelligence'
|
|
3
|
+
description: 'Quiz for lesson: Session Intelligence'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-501
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-501.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: You have finished implementing a feature and are about to write tests. Which checkpoint phase should you save?
|
|
19
|
+
choices:
|
|
20
|
+
A: '`implementing` — you just finished implementing'
|
|
21
|
+
B: '`validating` — you are transitioning from implementation to validation'
|
|
22
|
+
C: '`complete` — the feature code is done'
|
|
23
|
+
D: '`testing` — you are about to test'
|
|
24
|
+
E: '`planning` — you need to plan the tests first'
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: Checkpoint at the phase you are entering, not the one you are leaving. The `validating` phase captures the state after implementation is complete but before tests/review. If the session crashes now, recovery knows implementation is done and testing is the next step. `complete` is only for when everything (including tests) is finished.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: What is the maximum number of breadcrumbs stored, and what happens when the limit is reached?
|
|
29
|
+
choices:
|
|
30
|
+
A: 100 breadcrumbs, then the file is archived and a new one starts
|
|
31
|
+
B: 50 breadcrumbs, then the oldest are dropped as new ones are added
|
|
32
|
+
C: Unlimited — breadcrumbs grow until the session ends
|
|
33
|
+
D: 50 breadcrumbs, then tracking stops until the next session
|
|
34
|
+
E: 25 breadcrumbs per phase, resetting at each checkpoint
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: Breadcrumbs have a hard cap of 50 entries with auto-rotation — when the 51st breadcrumb is recorded, the oldest one is dropped. This keeps the file small and focused on recent activity while still providing enough trail for meaningful recovery.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: A team discovers that 'always validate JWT expiry before refresh' prevents bugs across 4 different projects. What should they do?
|
|
39
|
+
choices:
|
|
40
|
+
A: Add the wisdom to each project's `.paradigm/wisdom/` individually
|
|
41
|
+
B: Use `paradigm_wisdom_promote` to move it to `~/.paradigm/wisdom/` for global scope
|
|
42
|
+
C: Create a new seed habit for JWT validation
|
|
43
|
+
D: Add it to the CLAUDE.md file in each project
|
|
44
|
+
E: Record it as a lore entry in the most recent project
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: When wisdom proves valuable across multiple projects, `paradigm_wisdom_promote` copies it from project scope (`.paradigm/wisdom/`) to global scope (`~/.paradigm/wisdom/`). This makes it available automatically in every future session across all projects. Adding it individually (A) or to CLAUDE.md (D) works but doesn't leverage the Global Brain.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: Your session is at 82% context usage. What should you do?
|
|
49
|
+
choices:
|
|
50
|
+
A: Continue working — 82% is still plenty of room
|
|
51
|
+
B: Immediately stop and call `paradigm_handoff_prepare` with summary and next steps
|
|
52
|
+
C: Call `paradigm_session_health` to confirm, then proactively prepare a handoff while finishing current work
|
|
53
|
+
D: Delete old messages to free up context space
|
|
54
|
+
E: Save a checkpoint and keep working until 95%
|
|
55
|
+
correct: C
|
|
56
|
+
explanation: At 80-85%, the recommendation is proactive handoff preparation. Call `paradigm_session_health` to confirm the recommendation, then prepare the handoff with `paradigm_handoff_prepare` while completing your current task. Waiting until 95% (E) risks running out of context mid-task. The sweet spot is preparing the handoff while you still have room to finish current work cleanly.
|
|
57
|
+
- id: q5
|
|
58
|
+
question: A new session starts and the agent calls `paradigm_status`. What happens with session recovery?
|
|
59
|
+
choices:
|
|
60
|
+
A: The agent must explicitly call `paradigm_session_recover` — recovery is never automatic
|
|
61
|
+
B: Recovery data is automatically surfaced on the first Paradigm tool call
|
|
62
|
+
C: Recovery only works if the previous session saved a checkpoint
|
|
63
|
+
D: The agent must read `.paradigm/session-checkpoint.json` manually
|
|
64
|
+
E: Recovery data is shown only if the previous session crashed
|
|
65
|
+
correct: B
|
|
66
|
+
explanation: Auto-recovery is triggered on the first Paradigm MCP tool call in a new session — whether that is `paradigm_status`, `paradigm_navigate`, or any other tool. The system surfaces the last checkpoint and recent breadcrumbs without the agent needing to explicitly request recovery. This ensures continuity even if the agent doesn't know to ask.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-501-symphony-a-mail
|
|
2
|
+
title: 'PARA 501: Advanced Systems — Symphony: Multi-Agent Messaging with The Score'
|
|
3
|
+
description: 'Quiz for lesson: Symphony: Multi-Agent Messaging with The Score'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-501
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-501.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: 'You have three Claude Code sessions open on your machine: one working on the core library, one on the backend API, and one on the frontend. You want them to communicate. What is the correct setup sequence?'
|
|
19
|
+
choices:
|
|
20
|
+
A: Start a Sentinel hub, then connect each session to the WebSocket endpoint
|
|
21
|
+
B: Install Conductor, which automatically links all sessions on the machine
|
|
22
|
+
C: Run `paradigm symphony join` to discover and connect the sessions, then run `/loop 10s paradigm_symphony_poll` in each session
|
|
23
|
+
D: Create a `.paradigm-workspace` file listing all three projects — workspace linking enables messaging
|
|
24
|
+
E: Run `paradigm team orchestrate` which automatically sets up inter-agent communication
|
|
25
|
+
correct: C
|
|
26
|
+
explanation: The Score is the CLI-only foundation that requires no Conductor, no Sentinel, and no workspace setup. `paradigm symphony join` discovers Claude Code sessions on the machine and creates mailboxes. Then each session needs `/loop 10s paradigm_symphony_poll` to poll for incoming messages. Conductor (B) auto-links sessions but is not required — The Score works standalone.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: 'An agent sends a message with `intent: ''decision''` and the text ''Use Redis for session storage instead of in-memory.'' What happens beyond normal message delivery?'
|
|
29
|
+
choices:
|
|
30
|
+
A: The message is blocked — only humans can make decisions
|
|
31
|
+
B: Symphony automatically records a lore entry of type `decision` with the message text, linking it to the conversation thread and referenced symbols
|
|
32
|
+
C: The message is flagged for human review before delivery
|
|
33
|
+
D: Nothing special — intent is informational only and has no side effects
|
|
34
|
+
E: The decision is written to `.paradigm/config.yaml` as a project setting
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: 'Messages with `intent: decision` trigger automatic Lore integration. Symphony records a lore entry with the decision text, links it to the conversation thread, and tags it with referenced symbols. This bridges ephemeral conversation to permanent project memory without manual recording.'
|
|
37
|
+
- id: q3
|
|
38
|
+
question: Agent A (on your machine) requests `src/types.ts` from Agent B (on a teammate's machine). What must happen before Agent A receives the file?
|
|
39
|
+
choices:
|
|
40
|
+
A: Agent B must call `paradigm_symphony_approve_file` — agents can approve their own file requests
|
|
41
|
+
B: The file is sent automatically since both agents are linked in the same Symphony network
|
|
42
|
+
C: The teammate (human) must explicitly approve the file transfer — every cross-agent file transfer requires human approval from the file owner's side
|
|
43
|
+
D: Agent A must have the `^file-access` gate declared in portal.yaml
|
|
44
|
+
E: The file is sent if it matches the auto-approve glob patterns, but there is no human gate
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: The file pipeline's core security constraint is that every file transfer requires explicit human approval from the owner's side. When Agent A requests a file, the teammate sees a prompt (via Conductor or `paradigm symphony requests`) and must approve, deny, or approve with redaction. Even if auto-approve patterns exist in trust.yaml, the initial setup still requires human-configured trust levels.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: An agent's `paradigm_symphony_poll` returns 3 new messages in a thread about a failing test. The agent reads them, investigates the code, and finds the bug. How should the agent communicate its findings?
|
|
49
|
+
choices:
|
|
50
|
+
A: Call `paradigm_lore_record` with the findings — lore is the communication channel
|
|
51
|
+
B: 'Call `paradigm_symphony_send` with `intent: ''context''` providing the investigation results, then `intent: ''proposal''` with the fix, writing to `outbox.jsonl` for delivery to the thread'
|
|
52
|
+
C: Write directly to the other agents' `inbox.jsonl` files for immediate delivery
|
|
53
|
+
D: Call `paradigm_sentinel_record` to log the bug as an incident
|
|
54
|
+
E: Call `paradigm symphony send` from the CLI — agents cannot use MCP tools to reply
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: Agents communicate via `paradigm_symphony_send`, which writes structured messages to `outbox.jsonl`. Using multiple messages with appropriate intents (context for the investigation, proposal for the fix) gives other agents structured context. Writing directly to inbox files (C) bypasses the routing protocol. Lore (A) and Sentinel (D) are recording systems, not communication channels.
|
|
57
|
+
- id: q5
|
|
58
|
+
question: A thread about a serialization bug has been active for 20 minutes across 4 agents. The team agrees on a fix. What should happen next?
|
|
59
|
+
choices:
|
|
60
|
+
A: Delete the thread files from `~/.paradigm/score/threads/` to clean up
|
|
61
|
+
B: Let the thread expire naturally — threads auto-resolve after 1 hour of inactivity
|
|
62
|
+
C: Run `paradigm symphony resolve <thread-id>` which marks the thread as resolved and automatically creates a lore entry capturing the full conversation, decisions, and actions
|
|
63
|
+
D: Each agent independently records a lore entry about their contribution
|
|
64
|
+
E: Run `paradigm_reindex` to incorporate the thread into the project index
|
|
65
|
+
correct: C
|
|
66
|
+
explanation: Thread resolution via `paradigm symphony resolve` is the bridge between ephemeral conversation and permanent project memory. It marks the thread as resolved and automatically creates a comprehensive lore entry with the topic, participants, decisions, actions, and referenced symbols. This single action preserves the entire collaborative context for future reference.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-501-symphony-networking
|
|
2
|
+
title: 'PARA 501: Advanced Systems — Symphony Networking: Cross-Machine Relay'
|
|
3
|
+
description: 'Quiz for lesson: Symphony Networking: Cross-Machine Relay'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-501
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-501.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: net-q1
|
|
18
|
+
question: Developer A runs `paradigm symphony serve` and sees pairing code 472831. Developer B runs `paradigm symphony join --remote 192.168.1.42:3939`. What happens next?
|
|
19
|
+
choices:
|
|
20
|
+
A: Developer B's agents automatically appear in A's inbox
|
|
21
|
+
B: Developer B is prompted to enter the 6-digit pairing code from A's terminal
|
|
22
|
+
C: The connection fails because Developer B didn't specify the --public flag
|
|
23
|
+
D: Developer B must also run `paradigm symphony serve` to create a peer-to-peer link
|
|
24
|
+
E: Developer B receives A's full agent list immediately without authentication
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: 'When connecting via --remote without an embedded code (no # in the address), the user is prompted to enter the 6-digit pairing code displayed on the hub. The code is used to compute an HMAC proof for authentication. Only after successful verification does the agent list exchange occur.'
|
|
27
|
+
- id: net-q2
|
|
28
|
+
question: A spoke machine loses its network connection to the hub. What happens?
|
|
29
|
+
choices:
|
|
30
|
+
A: All local messages are deleted and the agent must re-pair from scratch
|
|
31
|
+
B: The spoke immediately attempts to reconnect using a fixed 5-second interval
|
|
32
|
+
C: The spoke schedules reconnect with exponential backoff (1s → 2s → 4s → ... → 30s max)
|
|
33
|
+
D: The spoke shuts down and the user must manually restart `paradigm symphony join`
|
|
34
|
+
E: The hub removes the spoke's peer record from peers.json
|
|
35
|
+
correct: C
|
|
36
|
+
explanation: 'The client-mode relay uses exponential backoff for auto-reconnect: starting at 1 second and doubling each attempt up to a maximum of 30 seconds. On successful reconnect, the delay resets to 1 second. Local messages are unaffected — they remain in the JSONL files.'
|
|
37
|
+
- id: net-q3
|
|
38
|
+
question: An attacker tries to brute-force the pairing code. After entering 3 wrong codes from IP 10.0.0.5, what happens on the next attempt?
|
|
39
|
+
choices:
|
|
40
|
+
A: The pairing code is rotated and a new code must be obtained from the hub
|
|
41
|
+
B: The hub blocks all incoming connections permanently until restarted
|
|
42
|
+
C: The connection is accepted but messages are quarantined for review
|
|
43
|
+
D: The hub sends `auth_fail` with 'Too many failed attempts' and enforces a 60-second cooldown for that IP
|
|
44
|
+
E: The hub disconnects but allows immediate retry with the correct code
|
|
45
|
+
correct: D
|
|
46
|
+
explanation: After 3 failed auth attempts from the same IP address, the relay enforces a 60-second cooldown. During this period, any connection from that IP receives an immediate auth_fail with the message 'Too many failed attempts — try again later' and is disconnected.
|
|
47
|
+
- id: net-q4
|
|
48
|
+
question: How does the relay prevent duplicate message delivery when two peers forward the same message?
|
|
49
|
+
choices:
|
|
50
|
+
A: Messages include a TTL counter that decrements on each hop
|
|
51
|
+
B: A bounded Set of seen message IDs (max 10,000) skips already-processed messages
|
|
52
|
+
C: Each peer maintains a sequence number and only accepts higher-numbered messages
|
|
53
|
+
D: The hub assigns unique relay IDs to prevent duplicates
|
|
54
|
+
E: Messages are only forwarded once per minute, allowing time for dedup
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: The relay maintains a bounded Set<string> of message IDs it has already processed. When a message arrives, if its ID is in the set, the relay sends an ack but skips delivery. When the set exceeds 10,000 entries, the oldest half is evicted. This prevents both echo (receiving your own message back) and multi-path duplicates.
|
|
57
|
+
- id: net-q5
|
|
58
|
+
question: Developer B wants to connect to Developer A's machine over the internet. Developer A runs `paradigm symphony serve --public`. What is the correct command for Developer B?
|
|
59
|
+
choices:
|
|
60
|
+
A: '`paradigm symphony join --remote devA.example.com` and enter the code when prompted'
|
|
61
|
+
B: '`paradigm symphony join --remote 73.162.44.103:3939#847291` with the embedded code'
|
|
62
|
+
C: '`paradigm symphony serve --connect 73.162.44.103:3939`'
|
|
63
|
+
D: '`paradigm symphony peers add 73.162.44.103:3939 --code 847291`'
|
|
64
|
+
E: '`paradigm symphony join --public 73.162.44.103`'
|
|
65
|
+
correct: B
|
|
66
|
+
explanation: 'Internet direct connect uses the connection string format: address:port#code. The --public flag on the hub displays this connection string. The spoke parses the embedded code from after the # character and uses it automatically — no interactive prompt needed. Port 3939 must be reachable from the internet (port forward, VPN, or SSH tunnel).'
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
id: Q-para-501-task-management
|
|
2
|
+
title: 'PARA 501: Advanced Systems — Task Management'
|
|
3
|
+
description: 'Quiz for lesson: Task Management'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-501
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-501.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: You are midway through adding authentication when you notice the payment service has a null-check bug. You cannot fix it now. What is the correct action?
|
|
19
|
+
choices:
|
|
20
|
+
A: Record a lore entry describing the bug for future reference
|
|
21
|
+
B: Call `paradigm_task_create` with a blurb describing the null-check bug, priority high, and tags [bug, payments]
|
|
22
|
+
C: Add a TODO comment in the payment service code and move on
|
|
23
|
+
D: Call `paradigm_sentinel_record` to log it as an incident
|
|
24
|
+
E: Mention it in the session's handoff summary and hope the next session picks it up
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: This is exactly what tasks are for — capturing work you cannot complete in the current session. A task with priority `high` ensures it surfaces at the top of the next session's recovery data. A lore entry (A) records what happened, not what needs to happen. A TODO comment (C) is invisible to Paradigm. Sentinel (D) is for production incidents. A handoff mention (E) is fragile — tasks are persistent.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: A new session starts. The agent calls `paradigm_status`. Among the recovery data, it sees 3 high-priority tasks and 12 medium-priority tasks. How were these surfaced?
|
|
29
|
+
choices:
|
|
30
|
+
A: The agent must explicitly call `paradigm_task_list` to see tasks — they are not in recovery data
|
|
31
|
+
B: All 15 tasks appear in the recovery data automatically
|
|
32
|
+
C: The top 5 open tasks (sorted by priority then date) are automatically included in recovery data on the first Paradigm tool call
|
|
33
|
+
D: Only high-priority tasks are surfaced during recovery
|
|
34
|
+
E: Tasks are only surfaced if the previous session created a handoff
|
|
35
|
+
correct: C
|
|
36
|
+
explanation: Session recovery automatically includes the top 5 open tasks, sorted by priority (high first) then by date (newest first). So the agent would see the 3 high-priority tasks plus 2 of the most recent medium-priority tasks. The remaining 10 medium-priority tasks are available via `paradigm_task_list` but are not in the initial recovery data.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: Your task list has grown to 35 open items. What should you do?
|
|
39
|
+
choices:
|
|
40
|
+
A: Delete the oldest tasks to keep the list manageable
|
|
41
|
+
B: Increase the session recovery limit from 5 to 35 so all tasks are visible
|
|
42
|
+
C: 'Triage: shelve low-priority items with `paradigm_task_shelve` and focus on what matters — tasks should not accumulate into a large backlog'
|
|
43
|
+
D: Convert all tasks to lore entries since the list is too long for task management
|
|
44
|
+
E: Tasks have no practical limit — 35 is fine, just filter by priority when working
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: Tasks are meant to be a lightweight scratch pad, not a project management backlog. When the list grows beyond 20-30 items, it is time to triage. Use `paradigm_task_shelve` to park items that are not immediately relevant. Shelved tasks are not deleted — they remain searchable and can be reopened. This keeps the active list focused and the session recovery data meaningful.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-601-agent-renaissance
|
|
2
|
+
title: 'PARA 601: Paradigm Ambient — Agent Manifest Renaissance'
|
|
3
|
+
description: 'Quiz for lesson: Agent Manifest Renaissance'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-601
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-601.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: An agent installed from a marketplace does not define an `intrinsic` learning section but has `platform` learning configured. Is this valid?
|
|
19
|
+
choices:
|
|
20
|
+
A: No — all agents must have intrinsic learning configured
|
|
21
|
+
B: Yes — intrinsic learning is optional (the agent's choice), but platform learning is mandated for marketplace agents
|
|
22
|
+
C: No — platform learning requires intrinsic learning as a prerequisite
|
|
23
|
+
D: Yes, but the agent will not be able to participate in ambient coordination
|
|
24
|
+
E: It depends on whether the agent has attention patterns configured
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: 'Intrinsic learning is optional — it represents the agent''s own drive to improve and is a design choice by the agent creator. A marketplace agent might deliberately not implement intrinsic learning if it relies on periodic updates from its creator instead. Platform learning (`feedback_required: true`) is mandated for all marketplace agents to ensure quality signals flow back to creators. The two layers are independent.'
|
|
27
|
+
- id: q2
|
|
28
|
+
question: 'A builder agent is in a multi-agent session with an architect. The builder has `collaboration.with.architect.can_contradict: false`. The builder notices the architect''s approach will cause a performance regression. What should happen?'
|
|
29
|
+
choices:
|
|
30
|
+
A: The builder stays silent — it cannot contradict the architect
|
|
31
|
+
B: The builder can still nominate an observation or warning — `can_contradict` affects debate dynamics, not whether the agent can surface concerns
|
|
32
|
+
C: The builder overrides its collaboration stance because performance is critical
|
|
33
|
+
D: The builder files a nomination but it is automatically suppressed
|
|
34
|
+
E: The builder must wait for the reviewer to raise the concern
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: 'The `can_contradict` field in collaboration affects debate dynamics — whether the agent will actively argue against the other agent''s position. It does not prevent the agent from surfacing observations or warnings via the nomination system. The builder can still create a nomination with `type: ''warning''` or `type: ''observation''` about the performance regression. The nomination is surfaced to the human, who decides how to proceed. Collaboration stance governs interaction style, not whether an agent can report concerns.'
|
|
37
|
+
- id: q3
|
|
38
|
+
question: 'An agent''s context contributions include a section with `priority: ''low''` and `content_ref: ''paradigm://guidance/portal''`. When is this content loaded?'
|
|
39
|
+
choices:
|
|
40
|
+
A: Always — all contributions are loaded regardless of priority
|
|
41
|
+
B: Never — low priority contributions are ignored
|
|
42
|
+
C: On demand — low priority contributions are loaded only when the agent or human explicitly requests them, not automatically included in composed context
|
|
43
|
+
D: Only during the first session — subsequent sessions cache it
|
|
44
|
+
E: Only when the agent's attention score exceeds 0.8
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: Context contributions have three priority levels that control inclusion in composed context. High-priority contributions are always included. Medium-priority contributions are included if the token budget allows. Low-priority contributions are loaded only on demand — when the agent requests the resource or the human explicitly asks for it. The `content_ref` URI (`paradigm://guidance/portal`) means the content is fetched from the MCP resource system rather than stored inline, reducing the base context size.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: What does `buildProfileEnrichment` produce, and when is it used?
|
|
49
|
+
choices:
|
|
50
|
+
A: It produces a YAML file that replaces the agent's `.agent` identity
|
|
51
|
+
B: It produces structured markdown combining all agent dimensions — identity, expertise, transferable patterns, attention, collaboration, nominations, and ambient context — injected into the agent's prompt during orchestration
|
|
52
|
+
C: It produces a JSON summary for the Conductor UI dashboard
|
|
53
|
+
D: It produces a diff between the current agent profile and its defaults
|
|
54
|
+
E: It produces a compliance report checking all six dimensions
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: '`buildProfileEnrichment` takes the agent profile, relevant symbols, optional notebook entries, and optional ambient context (recent decisions, journal insights, pending nominations). It composes a structured markdown string with sections for Agent Identity, Expertise, Transferable Patterns, Notebook Entries, Attention patterns, Collaboration stance, Nomination preferences, and ambient context. This markdown is injected into the agent''s system prompt during orchestration, giving it full self-awareness and situational context.'
|
|
57
|
+
- id: q5
|
|
58
|
+
question: 'An agent has `learning.intrinsic.calibration.overconfidence_alert: 0.15` and its estimated confidence for `#auth-middleware` is 0.90 while its actual accuracy (from assessment verdicts) is 0.70. What happens?'
|
|
59
|
+
choices:
|
|
60
|
+
A: Nothing — the system does not track actual accuracy
|
|
61
|
+
B: The confidence is automatically reduced to 0.70
|
|
62
|
+
C: An overconfidence alert is triggered because the delta (0.90 - 0.70 = 0.20) exceeds the 0.15 threshold
|
|
63
|
+
D: The agent is prevented from working on `#auth-middleware`
|
|
64
|
+
E: The EMA alpha is increased to make confidence converge faster
|
|
65
|
+
correct: C
|
|
66
|
+
explanation: The `overconfidence_alert` threshold triggers when the gap between estimated confidence and actual accuracy exceeds the configured value. Here, the delta is 0.20 (0.90 - 0.70), which exceeds the 0.15 threshold. This alert signals that the agent is more confident than its track record warrants for this symbol. The agent's confidence will naturally adjust over time via the EMA formula as more assessment verdicts come in, but the alert provides an immediate signal that the agent should be more cautious on `#auth-middleware`.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: Q-para-601-attention-scoring
|
|
2
|
+
title: 'PARA 601: Paradigm Ambient — Attention & Scoring'
|
|
3
|
+
description: 'Quiz for lesson: Attention & Scoring'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-601
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-601.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: 'A security agent (threshold 0.4) evaluates an event where a new route was created (`type: ''route-created''`). The agent''s attention includes `signals: [{ type: ''route-created'' }]` but the event has no matching symbols, paths, or concepts. What is the overall score and does the agent nominate?'
|
|
19
|
+
choices:
|
|
20
|
+
A: Score 0.25 (average of 0, 0, 0, 1) — does not nominate (below 0.4)
|
|
21
|
+
B: Score 1.0 (max of 0, 0, 0, 1) — nominates (1.0 >= 0.4)
|
|
22
|
+
C: Score 0.0 — signal matching requires at least one other dimension to also match
|
|
23
|
+
D: Score 0.4 — signals are weighted at 0.4 for security agents
|
|
24
|
+
E: Score 1.0 but does not nominate — signal matches are informational only
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: The score is `Math.max(0, 0, 0, 1.0) = 1.0`. Signal match is binary — the event type `'route-created'` matches the agent's signal pattern, so `signalMatch = 1.0`. The overall score uses max, not average, so a single dimension scoring 1.0 gives an overall score of 1.0. Since 1.0 >= 0.4 (the security agent's threshold), the agent self-nominates.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: 'A reviewer agent watches 4 concepts: `[''code quality'', ''bug'', ''smell'', ''convention'']`. An event has `keywords: [''code'', ''quality'']` and `context: ''Fixed a bug in the validation logic''`. What is the conceptMatch score?'
|
|
29
|
+
choices:
|
|
30
|
+
A: 0.25 — only 'bug' matches (1 out of 4)
|
|
31
|
+
B: 0.50 — 'code quality' and 'bug' both match (2 out of 4)
|
|
32
|
+
C: 0.75 — 'code quality', 'bug', and partial 'convention' match
|
|
33
|
+
D: 1.0 — all keywords are present in the combined text
|
|
34
|
+
E: 0.0 — concepts must be exact matches against the keywords array only
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: 'The event''s `context`, `keywords`, and `type` are joined into a lowercased text: `''code quality fixed a bug in the validation logic''` (keywords `[''code'', ''quality'']` become part of the joined text). The concept `''code quality''` appears in this text (substring match). The concept `''bug''` appears. The concepts `''smell''` and `''convention''` do not. So `matched = 2`, `total = 4`, `conceptMatch = 2/4 = 0.5`.'
|
|
37
|
+
- id: q3
|
|
38
|
+
question: Why does scoring use `Math.max` rather than an average of the four dimensions?
|
|
39
|
+
choices:
|
|
40
|
+
A: Max is faster to compute than average
|
|
41
|
+
B: Average would require all four dimensions to have non-zero values, which is too restrictive
|
|
42
|
+
C: Max ensures a single strong match in any domain-specific dimension is sufficient — averaging would dilute a perfect 1.0 match to 0.25
|
|
43
|
+
D: Max produces higher scores, making agents more talkative which is always desirable
|
|
44
|
+
E: The four dimensions are redundant so only the best one matters
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: Max-based scoring respects domain-specific expertise. A security agent that matches a gate symbol perfectly (`symbolMatch = 1.0`) should absolutely speak up, even if the file path, concepts, and signals do not match. Averaging would reduce that 1.0 to 0.25, likely below the agent's threshold. Max scoring means that expertise in any single dimension is sufficient to trigger attention.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: The security agent's default threshold is 0.4 while the builder's is 0.7. What is the practical effect of this difference?
|
|
49
|
+
choices:
|
|
50
|
+
A: The security agent's nominations are ranked higher in the UI
|
|
51
|
+
B: The security agent self-nominates on weaker matches because the cost of missing a security issue outweighs false alarms — the builder stays quiet unless directly relevant
|
|
52
|
+
C: The builder processes events faster because it rejects more of them
|
|
53
|
+
D: The security agent receives more events from the stream
|
|
54
|
+
E: There is no practical difference — thresholds only affect logging verbosity
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: 'A lower threshold means the agent speaks up more often — even on partial matches. For security, this is the right tradeoff: a false alarm about a potential security issue costs little, but missing a real vulnerability can be catastrophic. For the builder, a higher threshold (0.7) means it only self-nominates when the event is strongly relevant to implementation work, avoiding noise from events that are merely tangentially related.'
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-601-context-composition
|
|
2
|
+
title: 'PARA 601: Paradigm Ambient — Context Composition'
|
|
3
|
+
description: 'Quiz for lesson: Context Composition'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-601
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-601.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: An agent is working on test coverage and calls `paradigm_context_compose`. Which guidance resources are most likely loaded into the composed context?
|
|
19
|
+
choices:
|
|
20
|
+
A: All 12 guidance resources — the compose tool always includes everything
|
|
21
|
+
B: None — guidance resources are never included in composed context
|
|
22
|
+
C: Only the guidance resources relevant to the task — likely testing-related topics, not portal or orchestration guidance
|
|
23
|
+
D: Only `paradigm://guidance/troubleshooting` — it is always included
|
|
24
|
+
E: Whichever resources the agent loaded in the previous session
|
|
25
|
+
correct: C
|
|
26
|
+
explanation: '`paradigm_context_compose` selects guidance resources based on the current task and focus area. An agent working on test coverage would benefit from testing-related guidance but not portal conventions or multi-agent orchestration details. The on-demand model means only relevant guidance consumes context window tokens. The agent can always request additional guidance mid-session via the MCP resource URIs if needed.'
|
|
27
|
+
- id: q2
|
|
28
|
+
question: 'A security agent has a high-priority context contribution with inline content and a medium-priority contribution with `content_ref: ''paradigm://guidance/portal''`. Token budget is tight. What gets included?'
|
|
29
|
+
choices:
|
|
30
|
+
A: Both are included — priority does not affect inclusion
|
|
31
|
+
B: Only the high-priority contribution is included — the medium-priority contribution is omitted due to token budget constraints
|
|
32
|
+
C: Only the medium-priority contribution is included because it references official guidance
|
|
33
|
+
D: Neither is included — contributions are disabled when budget is tight
|
|
34
|
+
E: Both are included but the medium-priority content is truncated
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: High-priority contributions are always included in composed context regardless of token budget. Medium-priority contributions are included only if the token budget allows. When budget is tight, medium and low priority contributions are omitted. The `content_ref` URI remains available — the agent can fetch `paradigm://guidance/portal` later if it discovers it needs portal guidance. This tiered inclusion ensures the most important context always fits.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: 'In Session A, a builder records a journal entry with `transferable: true` and a `LearningPattern`. In Session B (different project), the same builder starts working on related code. How does the Session A insight reach Session B''s context?'
|
|
39
|
+
choices:
|
|
40
|
+
A: The human manually copies the journal entry to the new project
|
|
41
|
+
B: The journal entry is stored at `~/.paradigm/agents/builder/journal/` (user-scoped), and `buildProfileEnrichment` includes transferable insights in the composed context when the builder's profile is loaded
|
|
42
|
+
C: The insight is stored in `.paradigm/lore/` and shared via Symphony networking
|
|
43
|
+
D: The pattern is automatically added to CLAUDE.md in the new project
|
|
44
|
+
E: Cross-project transfer is not supported — insights stay in the originating project
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: The journal entry is stored at `~/.paradigm/agents/builder/journal/` — a user-scoped location (trust ring 2) that persists across projects. When `paradigm_context_compose` runs in Session B, it loads the builder's profile and calls `buildProfileEnrichment`. This function includes transferable journal insights and patterns in the "Transferable Insights" section of the composed context. The builder in Session B sees the insight before writing any code. No manual copying or network sharing is needed — the user-scoped storage location is the mechanism.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: What does `emitAndProcess` do differently from calling `emitEvent` and `scoreEventForAgent` separately?
|
|
49
|
+
choices:
|
|
50
|
+
A: It is faster because it batches file I/O
|
|
51
|
+
B: It unifies event emission with nomination processing in a single call, ensuring no event is emitted without being evaluated — preventing the race condition where scoring happens too late
|
|
52
|
+
C: It automatically records work log entries for every event
|
|
53
|
+
D: It skips the memory buffer and writes directly to disk
|
|
54
|
+
E: There is no functional difference — it is a convenience wrapper
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: '`emitAndProcess` ensures atomicity between event emission and nomination processing. If you call `emitEvent` and `scoreEventForAgent` separately, there is a window where an event exists in the stream but has not been evaluated for nominations. Another process might read the event and miss the nominations. `emitAndProcess` emits the event, immediately scores it against all active agents'' attention patterns, and generates nominations for any agent exceeding its threshold — all in one call. It returns both the event and any generated nominations.'
|
|
57
|
+
- id: q5
|
|
58
|
+
question: Before v5.0, CLAUDE.md was ~856 lines. After v5.0, it is ~150 lines plus 12 guidance resources. What is the primary benefit?
|
|
59
|
+
choices:
|
|
60
|
+
A: The file is easier to edit because it is shorter
|
|
61
|
+
B: Agents load faster because there is less to parse
|
|
62
|
+
C: Context window tokens are spent on task-relevant content rather than a static wall of instructions — agents pay the token cost only for guidance they actually use
|
|
63
|
+
D: The guidance resources are more accurate because they are generated dynamically
|
|
64
|
+
E: The slim CLAUDE.md can be committed to version control while the old one could not
|
|
65
|
+
correct: C
|
|
66
|
+
explanation: The primary benefit is context window efficiency. A 856-line CLAUDE.md consumes thousands of tokens every session, most of which are irrelevant to the current task. The slim CLAUDE.md (~150 lines) provides universal orientation at minimal token cost, and guidance resources are loaded on demand only when needed. An agent working on test coverage does not pay the token cost for portal conventions, logging rules, or orchestration patterns. This leaves more of the context window available for actual code, tool results, and conversation.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: Q-para-601-data-sovereignty
|
|
2
|
+
title: 'PARA 601: Paradigm Ambient — Data Sovereignty'
|
|
3
|
+
description: 'Quiz for lesson: Data Sovereignty'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-601
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: beginner
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-601.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: An agent's learning journal entry about JWT refresh token rotation in project A should be available when the same agent works on project B. Which trust ring enables this?
|
|
19
|
+
choices:
|
|
20
|
+
A: 'Ring 1: project-locked — journal entries stay in the project'
|
|
21
|
+
B: 'Ring 2: user-scoped — the journal travels with the agent across the user''s projects'
|
|
22
|
+
C: 'Ring 3: creator-upstream — the agent creator''s infrastructure bridges projects'
|
|
23
|
+
D: 'Ring 4: network-public — cross-project sharing requires public access'
|
|
24
|
+
E: No ring — cross-project sharing is not supported
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: Learning journal entries are stored at `~/.paradigm/agents/{id}/journal/` (user-scoped, ring 2). This location is in the user's home directory, not the project directory, so it persists across projects. The same agent identity (`id`) is used across projects, giving the agent access to its own journal entries regardless of which project it is currently working in. Ring 2 is the minimum trust level needed for cross-project travel within the same user's scope.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: 'A user creates a `data-policy.yaml` with `observation.deny: [''**/logs/**'']` but does NOT include `.env*` in their deny list. Can agents observe `.env` files?'
|
|
29
|
+
choices:
|
|
30
|
+
A: Yes — the user's policy replaces the default, and `.env*` is not in the user's deny list
|
|
31
|
+
B: No — deny lists are additive on merge. The default `.env*` deny is always present, and the user's `**/logs/**` is added to it
|
|
32
|
+
C: It depends on whether the agent has an override in `agent_overrides`
|
|
33
|
+
D: Yes, but the content will be redacted before storage
|
|
34
|
+
E: No — `.env` files are hardcoded as blocked regardless of policy
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: The merge rule states that deny lists are additive, never replacing. The default policy denies `.env*`, `**/*.key`, `**/*.pem`, and `**/secrets/**`. The user's policy adds `**/logs/**` to this list. The merged deny list contains all five patterns. This design prevents users from accidentally exposing secret files by omitting them from their custom policy.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: 'A work log entry is recorded with `summary: ''Fixed the API_SECRET_KEY rotation logic in auth.ts''`. The work log stream has `deny_content: [code_snippets]` but allows `file_paths` and `symbol_names`. What happens to the summary?'
|
|
39
|
+
choices:
|
|
40
|
+
A: The summary is stored as-is — `API_SECRET_KEY` is a symbol name, not a code snippet
|
|
41
|
+
B: The entire summary is blocked — it contains a reference to a secret
|
|
42
|
+
C: The summary is stored as-is because content category filtering only applies to structured fields, not free-text summaries
|
|
43
|
+
D: If the learning journal's redaction patterns are applied to the work log, `API_SECRET_KEY` would match `\b[A-Z_]{2,}_KEY\b` and be replaced with `[REDACTED]`
|
|
44
|
+
E: The summary is rejected and the work log entry fails to record
|
|
45
|
+
correct: D
|
|
46
|
+
explanation: Redaction patterns are regex-based and applied to content before storage. The pattern `\b[A-Z_]{2,}_KEY\b` matches `API_SECRET_KEY`. If this pattern is configured on the work log stream (or if the filtering function applies cross-stream redaction), the summary would become `'Fixed the [REDACTED] rotation logic in auth.ts'`. In the default policy, this specific redaction is configured on `learning_journal`, not `work_log` — but the `filterContent` function applies whatever redaction patterns are configured for the target stream.
|
|
47
|
+
- id: q4
|
|
48
|
+
question: What upstream data is allowed by default in the DEFAULT_DATA_POLICY?
|
|
49
|
+
choices:
|
|
50
|
+
A: Everything is allowed upstream — creators need full data for improvement
|
|
51
|
+
B: Only `task_type`, `outcome`, `helpfulness`, `duration_bucket`, and `error_category` — code, file paths, symbol names, conversation content, and user identity are explicitly denied
|
|
52
|
+
C: Nothing is allowed — upstream sharing is disabled by default
|
|
53
|
+
D: File paths and symbol names are allowed, but code content is denied
|
|
54
|
+
E: Only aggregated statistics, no individual session data
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: 'The default upstream rules allow five high-level fields: `task_type` (what kind of work), `outcome` (success/failure), `helpfulness` (user rating), `duration_bucket` (how long it took, bucketed), and `error_category` (what went wrong, categorized). Five categories are explicitly denied: `code_of_any_kind`, `file_paths`, `symbol_names`, `conversation_content`, and `user_identity`. This ensures agent creators get enough signal to improve their agents without receiving any sensitive project data.'
|